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

.1280135[tf4)2IrjR3,sa-o iug0xè8m1]P6pnl7he=céy:vê(wq;S/b_dk050!0K0d0p0t0H0o0s0M0H0p0o0o0L010d0t0F010406050o0u0A0A0p0j0O040W0r0H0u0_0r0G0s020p0A0F0V0s0l0K130j0U0u0K0o050X101214160~0F041u1B051E0X1E1G1B0~0!0t0Q0.0:0=0@0J0t0v0J0H1U0J0d0|050)0Y0H0K1P0;0?011T1V1X1V0d1%1)1#0d0Y0r0!161$0j1C0d0J0.190o0F0p0G0@0h011+1R010e0+0K0G1h0K1#26282d1-2g1)2j0A2l040a0s0D0j0r0F0r0o0t1c1e0%240j0j0K0M2G1u2n0G1C0X222S0d201 210!2p0@1X0G2i2D1#1M1O0/1,2$0t2(0G1|1N1#0F2L1C2Q2S2}0 271e2.2e2?0j130H0|0B2P310}302o331-35370|0h3b283d2Q2#013i0p38040m3m2R0~3p3g0@3s3u0f3x3o313q3D0|0b3G3z3I3B3r0r363t0|0E3N3e321Q3h3S3j040I3X3A3!3C3$3U040z3G1D2{1u2,2V0!2Z3q0M1|2v0$1N1C2`0K2|3c3=3~0%463f3,010#0|0%0e3=3+2/010T0|0s4j3P4d0G0e0|2(0v0p0_4i1v474k2e0{040S4q4c4l0G0|0t130v0K4I3Z4l4F0g0P3N0s4Y4p4D1-0M0B0|030s1d0.0j0N0N0s0u2(0s4N0p4P0s2I0w0s0p0u0x0s0A0R2u0-1M2u0G2E1d0-1q1*1)0s270j1h0y2W1*4^4P4X4Z3Y3J0|0J4 0d0K0u0j0Z4N0v4R3q4F0n3G4!4r4K0|0:0j4P5y5A0A5C4B3n5I4J2e0r0|0L5H5r3Q4L045u1b5x0j5D3Q4F4H5T2R5$4s4M4O4Q5=4b4S4E0|0g5G5|5V5~3h5L145O5-5|5@4T0|5;2 4#3C5_4_5{6g5J5 040g5p4Y6c344v0r0u0Q0K0H1)5Q6k5#6h015Y045!636t1-4F0c0c5.4d0A0t0|0w6E6n1-4f040e3S6W5W66040k6%650@0r4n042;6,3J0Y0|5i0G5o6b6F5:6Q5K045M695Q5S6m6(0@4U0C6?3Q6Z6#6a2}645s6;7c4d6/4M0G7l4K6^046`6|776-016 6}6X6i5)5v5,75706o0g7b5|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|0C8G7-5%848K8E047K7h8D6H6J8W6F6S3k0b3M8a3Q6H0q7S6)8A8S6N8S5(0t8;8M8O8i7j858P4d4F8V3c7M5q6F6Z2L0d5y7Z8!7#8v6w6y6A0K6C8e3n0~0X49453?9p0X3_1u0d3{9u2X2T1{1}2V0p1(9r3_1A5}3q2L0A0Z0e0p0#9i0J0m0|1m1o5d0-7_2 1H3d1B0i0H0s1s0d5g2D2E9E4{1*3~592W0u0t2L0s0:9{0t0o5w5g14241i4.0J2i5a1e7_1K412-4d1/1W1Y1!9I3Q2r2i2k0|2x0W0M0j0`9+0D0O221d3=445}2~479oaj4d6Z4h8S6:4p8H3J4u044w4y0t4A8 6d4G8?6j9k5?6~8q7`957#970(9a8.8L046O8S8$040h8(a-6G0|8-8*5^6;5`8_a/aX7UaU6o8Nb38~8|5/8Ma_7 7g3c7Oa~b95U8X6:899c820G7%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

.1280135[tf4)2rjR3,sao iug0xè8àm1]P6pnEl7h.e=céy:v9êA(wq;S/b_dk050%0L0d0o0r0H0n0q0N0H0o0n0n0M010d0r0E010406050n0s0z0z0o0i0P040Z0p0H0s0|0p0F0q020o0z0E0Y0q0k0L160i0X0s0L0n050!13151719110E041x1E051H0!1H1J1E110%0r0R0;0?0^0`0J0r0t0J0H1X0J0d0 050,0#0H0L1S0@0_011W1Y1!1Y0d1*1,1(0d0#0p0%191)0i1F0d0J0;1c0n0E0o0F0`0h011.1U010e0.0L0F1k0L1(292b2g1:2j1,2m0z2o040a0q0C0i0p0E0p0n0r1f1h0*270i0i0L0N2J1x2q0F1F0!252V0d2322240%2s0`1!0F2l2G1(1P1R0=1/2)0r2+0F1 1Q1(0E2O1F2T2V30122a1h2;2h2_0i160H0 0q0A2S3410332r361:383a3c0h3f2b3h2T2(013m0o3b040q0l3q2U113t3k0`3w3y0q0f3C3s343u3I3c0b3M3E3O3G3v0p393x3c0D3T3i351T3l3Y3n3z0I3%3F3*3H3,3!3z0x3:3V3=3X3Z3J0S3{3j3}3Q040A0u423)2=3~3-0A3e1y3g1G2~1x2/2Y0%2$3u0N1 2y0)1Q1F2}0L2 4h4g3r054q0*4y434b0(0 0*0e3M3(3u0W3c4M3;4b0F0e0 0#2@0-2O4R3|4b0~040V4#4G370 0r160t0L4+4a2h4(0m3M0q4N3W0F0 0n0L0s0.4?3u4(0g0Q3T0q5b4|4S2h0N0A0 030q1g0;0i0O1-0s2+0q4/0o4;0q2L0u0q0o0s0v0q0z0T2x0:1P2x0F2H1g0:1t1-1,0q2a0i1k0w2Z1-5t4;5a5c4}440 0J5A0d520i0$4/0t553W4_4{5$4T0 0?0i4;0s5-5/5@5e1:0p0 0M614$4-045)1e5,5;3}4(4*4A2U5^695Y4=6i4F4@1:574`6o5d683l5`175}0i6e4%0 6h32623H4.4:6n6G6w0`575!5b6k6x042_0s0R0L0H1,5.6K674,63656%6q6O0 0c0c6C2h0z0r0 486u6S0`4I040e3Y6+3P0 0j713W0p4P042@75440#0 5T0F5Z6o6{016g6;6T5{6A6#5:7i6H7k0 0g0B7b4H0 6 6B6`7t4 797y2h774.0F7H3l7d047f7h6M6(6-4)7m6I6a5*5,7q7W7u047w6Q6v7T016}7B7M7X0r7:017J797L7D6N3v7O7Q6L4h7t7l7s7|7F6b5+5~7#847,57596o065c8h7+6,7-7A707{7,7F748o8k7^7a8s3P7~2b7R817|837S8k7F7o7!608b8k8d7*8i5#7t6}0r4L8w4~6J5u804B826.7$7F7=8K560 0B6:8)8V048r8E8*047x8U3}6404020H0d0Y7?7F51530H7?4(8e308g8O9b6R7E0 6V6X6Z0L6#8X7$4(8-8=8/8(9p6f8+9o8B8p739m8+7?8{668_4b6?6^4{0q9a9c9d7|6}6Y519z04983g9K9L8h7j7F9g6Y6!6m9R9v8Z854.9R8,8$9y8.9t8@9B6*9E6=6@467*7j6}2O0d5~7`308j726U0p6W9#9j9%8f1x4D4x4iag0!4l1x0d4nal2!2W1~202Y0o1+ai4l1D6p3u2O0z0$0e0o0(9j0J0l0 1p1r5O0:9T4B1K3h1E0G1h0E1d5H5P0o275K2Z0s2Q0r5l5S271l5n0J2l5L0F0m5kaV520d0q1e0.0r510ia|1h2E0O5T88b15+0i2m0r2O5Ra8b15q1-6X0ia=a|8~5Ta-2a2Q0La@16a 0q0F0O2b0z0p2@0:4qa.0Oa:5K0rav0q8e1N4t2:3}1=1Z1#1%az3W2u2l2n0 2A0Z0N0i0}a{0C0P251g4M4w6p314hafbV3}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:4k4uay0U1_2l2J0q0da85+6 a a@0%2b0:1,0:1~0F2+0:2}0o0|aN5w1-2}0p0t5T1A2Ja@0.0q1va{2ObE160F0%0Od 0q1!6?b90q0y0q0D5sa$0ia(2Jd`17ej1X2+0K0q0U0sd 0H0ya@5Qaf5R0L0i2%2ley2H4X1!0d0O0K1G3haj0+0-0/04.

Dessin original

Un dessin va s'afficher...

Dessin binaire

Un dessin va s'afficher...