Manipulation de pixels

On considère une image en 256 niveaux de gris que l'on représente par une grille de nombres, c'est-à-dire une liste composée de sous-listes toutes de longueurs identiques.

La largeur de l'image est donc la longueur d'une sous-liste et la hauteur de l'image est le nombre de sous-listes. On donne d'ailleurs les deux fonctions largeur et hauteur définies ci-dessous :

largeur et hauteur

🐍 Script Python
def largeur(image):
    return len(image[0])

def hauteur(image):
    return len(image)

Chaque sous-liste représente une ligne de l'image et chaque élément des sous-listes est un entier compris entre 0 et 255, représentant l'intensité lumineuse du pixel.

On s'intéresse à deux opérations :

  • Le négatif d'une image est l'image constituée des pixels x_n tels que x_n + x_i = 255x_i est le pixel correspondant de l'image initiale.
  • La binarisation d'une image qui consiste à remplacer tous les pixels par des \(0\) ou des \(1\) en fonction de la position de la valeur initiale par rapport à un seuil donné. (en cas d'égalité avec le seuil, le pixel prendra la valeur \(1\))
Exemples
>>> image_1 = [[20, 34, 254, 145, 6],
...            [23, 124, 217, 225, 69],
...            [197, 174, 207, 25, 87],
...            [255, 0, 24, 197, 189]]
>>> hauteur(image_1)
4
>>> largeur(image_1)
5
>>> negatif(image_1)
[[235, 221, 1, 110, 249], [232, 131, 38, 30, 186], [58, 81, 48, 230, 168], [0, 255, 231, 58, 66]]
>>> binaire(image_1, 124)
[[0, 0, 1, 1, 0], [0, 1, 1, 1, 0], [1, 1, 1, 0, 0], [1, 0, 0, 1, 1]]
Question 1 : fonction negatif:

Compléter la fonction negatif qui prend en paramètre image une liste de listes d'entiers représentant une image, et renvoie une liste de listes d'entiers représentant le négatif de l'image.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013]uRéa;/q(lbwp8)g[èdo I7ekhmf:v,P1Ssinêy0_t5x4r-32cj6=050t0y0Q0f0K0k0J0v0Y0k0f0J0J0#010Q0K0n010406050J0c0B0B0f0U0N040I0u0k0c0_0u0L0v020f0B0n0g0v0d0y130U0i0c0y0J050h101214160~0n041u1B051E0h1E1G1B0~0t0K0E0.0:0=0@0A0K0q0A0k1U0A0Q0|050)0l0k0y1P0;0?011T1V1X1V0Q1%1)1#0Q0l0u0t161$0U1C0Q0A0.190J0n0f0L0@0X011+1R010C0+0y0L1h0y1#26282d1-2g1)2j0B2l040a0v0G0U0u0n0u0J0K1c1e0%240U0U0y0Y2G1u2n0L1C0h222S0Q201 210t2p0@1X0L2i2D1#1M1O0/1,2$0K2(0L1|1N1#0n2L1C2Q2S2}0 271e2.2e2?0U130k0|0H2P310}302o331-35370|0X3b283d2Q2#013i0f38040W3m2R0~3p3g0@3s3u0T3x3o313q3D0|0R3G3z3I3B3r0u363t0|0!3N3e321Q3h3S3j040x3X3A3!3C3$3U040o3G1D2{1u2,2V0t2Z3q0Y1|2v0$1N1C2`0y2|3c3=3~0%463f3,010z0|0%0C3=3+2/010m0|0v4j3P4d0L0C0|2(0q0f0_4i1v474k2e0{040j4q4c4l0L0|0K130q0y4I3Z4l4F0p0D3N0v4Y4p4D1-0Y0H0|030v1d0.0U0e0e0v0c2(0v4N0f4P0v2I0O0v0f0c0S0v0B0M2u0-1M2u0L2E1d0-1q1*1)0v270U1h0s2W1*4^4P4X4Z3Y3J0|0A4 0Q0y0c0U0P4N0q4R3q4F0F3G4!4r4K0|0:0U4P5y5A0B5C4B3n5I4J2e0u0|0#5H5r3Q4L045u1b5x0U5D3Q4F4H5T2R5$4s4M4O4Q5=4b4S4E0|0p5G5|5V5~3h5L145O5-5|5@4T0|5;2 4#3C5_4_5{6g5J5 040p5p4Y6c344v0u0c0E0y0k1)5Q6k5#6h015Y045!636t1-4F0r0r5.4d0B0K0|0O6E6n1-4f040C3S6W5W66040Z6%650@0u4n042;6,3J0l0|5i0L5o6b6F5:6Q5K045M695Q5S6m6(0@4U0b6?3Q6Z6#6a2}645s6;7c4d6/4M0L7l4K6^046`6|776-016 6}6X6i5)5v5,75706o0p7b5|064Z7i7d0|7f7q6u7k6K6F7n6;7p7V7B3r7s7u6l4C7#7z7w7j5*5w5P5B7H6M604W7L7N7N6L0@7e6$7!783r0|6+817x7X6=866@6_287v7*827,8f7x5(737F7=7A8g7^6r7{7|6F5(2?6x6z6B5n7)3n7}7y0|6P8o8j4M7?790|0b8G7-5%848K8E047K7h8D6H6J8W6F6S3k0R3M8a3Q6H0V7S6)8A8S6N8S5(0K8;8M8O8i7j858P4d4F8V3c7M5q6F6Z2L0Q5y7Z8!7#8v6w6y6A0y6C8e3n0~0h49453?9p0h3_1u0Q3{9u2X2T1{1}2V0f1(9r3_1A5}3q2L0B0P0C0f0z9i0A0W0|1m1o5d0-7_2 1H3d1B0w0k0v1s0Q5g2D2E9E4{1*3~592W0c0K2L0v0:9{0K0J5w5g14241i4.0A2i5a1e7_1K412-4d1/1W1Y1!9I3Q2r2i2k0|2x0I0Y0U0`9+0G0N221d3=445}2~479oaj4d6Z4h8S6:4p8H3J4u044w4y0K4A8 6d4G8?6j9k5?6~8q7`957#970(9a8.8L046O8S8$040X8(a-6G0|8-8*5^6;5`8_a/aX7UaU6o8Nb38~8|5/8Ma_7 7g3c7Oa~b95U8X6:899c820L7%8d8Ba!7+6eb38l5yb16fbaa~8:aMbb6p7Jbd7Q80bo8Ib4bgbl7oa_bq8c6{btaFaVbB8C8u5t7EbzbF90bwb)71bEb57@bH929l1uaE9q2S9G3^0(0*0,04.

Dessin original

Un dessin va s'afficher...

Dessin négatif

Un dessin va s'afficher...

Question 2 : fonction binaire:

Compléter la fonction binaire qui prend en paramètres image une liste de listes d'entiers représentant une image et seuil un entier représentant le seuil de binarisation. La fonction renvoie une liste de listes d'entiers représentant l'image après binarisation.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013]uRéa;/q(lbàwp8)g[èdo 7ekhmf:v,PA1Ssinê9.y0_t5x4r32Ecj6=050u0y0T0f0L0k0K0w0#0k0f0K0K0(010T0L0o010406050K0c0B0B0f0X0Q040J0v0k0c0|0v0M0w020f0B0o0g0w0d0y160X0i0c0y0K050h13151719110o041x1E051H0h1H1J1E110u0L0E0;0?0^0`0A0L0r0A0k1X0A0T0 050,0l0k0y1S0@0_011W1Y1!1Y0T1*1,1(0T0l0v0u191)0X1F0T0A0;1c0K0o0f0M0`0Z011.1U010C0.0y0M1k0y1(292b2g1:2j1,2m0B2o040a0w0G0X0v0o0v0K0L1f1h0*270X0X0y0#2J1x2q0M1F0h252V0T2322240u2s0`1!0M2l2G1(1P1R0=1/2)0L2+0M1 1Q1(0o2O1F2T2V30122a1h2;2h2_0X160k0 0w0I2S3410332r361:383a3c0Z3f2b3h2T2(013m0f3b040w0Y3q2U113t3k0`3w3y0w0W3C3s343u3I3c0U3M3E3O3G3v0v393x3c0%3T3i351T3l3Y3n3z0x3%3F3*3H3,3!3z0p3:3V3=3X3Z3J0O3{3j3}3Q040I0R423)2=3~3-0I3e1y3g1G2~1x2/2Y0u2$3u0#1 2y0)1Q1F2}0y2 4h4g3r054q0*4y434b0z0 0*0C3M3(3u0n3c4M3;4b0M0C0 0l2@0-2O4R3|4b0~040j4#4G370 0L160r0y4+4a2h4(0F3M0w4N3W0M0 0K0y0c0.4?3u4(0q0D3T0w5b4|4S2h0#0I0 030w1g0;0X0e1-0c2+0w4/0f4;0w2L0R0w0f0c0V0w0B0N2x0:1P2x0M2H1g0:1t1-1,0w2a0X1k0t2Z1-5t4;5a5c4}440 0A5A0T520X0S4/0r553W4_4{5$4T0 0?0X4;0c5-5/5@5e1:0v0 0(614$4-045)1e5,5;3}4(4*4A2U5^695Y4=6i4F4@1:574`6o5d683l5`175}0X6e4%0 6h32623H4.4:6n6G6w0`575!5b6k6x042_0c0E0y0k1,5.6K674,63656%6q6O0 0s0s6C2h0B0L0 486u6S0`4I040C3Y6+3P0 0$713W0v4P042@75440l0 5T0M5Z6o6{016g6;6T5{6A6#5:7i6H7k0 0q0b7b4H0 6 6B6`7t4 797y2h774.0M7H3l7d047f7h6M6(6-4)7m6I6a5*5,7q7W7u047w6Q6v7T016}7B7M7X0L7:017J797L7D6N3v7O7Q6L4h7t7l7s7|7F6b5+5~7#847,57596o065c8h7+6,7-7A707{7,7F748o8k7^7a8s3P7~2b7R817|837S8k7F7o7!608b8k8d7*8i5#7t6}0L4L8w4~6J5u804B826.7$7F7=8K560 0b6:8)8V048r8E8*047x8U3}6404020k0T0g7?7F51530k7?4(8e308g8O9b6R7E0 6V6X6Z0y6#8X7$4(8-8=8/8(9p6f8+9o8B8p739m8+7?8{668_4b6?6^4{0w9a9c9d7|6}6Y519z04983g9K9L8h7j7F9g6Y6!6m9R9v8Z854.9R8,8$9y8.9t8@9B6*9E6=6@467*7j6}2O0T5~7`308j726U0v6W9#9j9%8f1x4D4x4iag0h4l1x0T4nal2!2W1~202Y0f1+ai4l1D6p3u2O0B0S0C0f0z9j0A0Y0 1p1r5O0:9T4B1K3h1E0!1h0o1d5H5P0f275K2Z0c2Q0L5l5S271l5n0A2l5L0M0F5kaV520T0w1e0.0L510Xa|1h2E0e5T88b15+0X2m0L2O5Ra8b15q1-6X0Xa=a|8~5Ta-2a2Q0ya@16a 0w0M0e2b0B0v2@0:4qa.0ea:5K0Lav0w8e1N4t2:3}1=1Z1#1%az3W2u2l2n0 2A0J0#0X0}a{0G0Q251g4M4w6p314hafbV3}6}4K7$784|9;4T4V044Xbb4!b 4^6E9/796$c66r0 6ta49Y505254cc7U589}8Q7e0+a2966.9)6j7t9G046_cgcp798TcB9+ca9lcl7%cvb^5_7GcJ4(9.cJ8q9-9@8|8~909_6T93ckcF7,9O0/8Y2Ua53Wcy4fc%8k7.8nc;a68;3gc-8`788vc^4~8y7gc+cMc77VcS6y5|6dcPc8d8cH8A9*8c7v7)cZ6|8m7Cd05%cOdp4b8ua3c{9Yd2dgcw8Cdd9scN87dbdDd66F9w8F8Wdzd5cd7(dk99ae4r2Vb:4k4uay0H1_2l2J0w0Ta85+6 a a@0u2b0:1,0:1~0M2+0:2}0f0|aN5w1-2}0v0r5T1A2Ja@0.0w1va{2ObE160M0u0ed 0w1!6?b90w0m0w0%5sa$0Xa(2Jd`17ej1X2+0P0w0H0cd 0k0ma@5Qaf5R0y0X2%2ley2H4X1!0T0e0P1G3haj0+0-0/04.

Dessin original

Un dessin va s'afficher...

Dessin binaire

Un dessin va s'afficher...