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

.128013s3o_;8èbcdufvgI/0lyq n7aêpSr1-meh,(P2=4:jtwki][5Rx)é6050k0G0Q0y0T0s0b0v0j0s0y0b0b0M010Q0T0A010406050b0l0F0F0y0C0t040B0d0s0l0_0d0w0v020y0F0A0f0v0X0G130C0u0l0G0b050q101214160~0A041u1B051E0q1E1G1B0~0k0T0n0.0:0=0@0H0T0o0H0s1U0H0Q0|050)0i0s0G1P0;0?011T1V1X1V0Q1%1)1#0Q0i0d0k161$0C1C0Q0H0.190b0A0y0w0@0L011+1R010m0+0G0w1h0G1#26282d1-2g1)2j0F2l040a0v0K0C0d0A0d0b0T1c1e0%240C0C0G0j2G1u2n0w1C0q222S0Q201 210k2p0@1X0w2i2D1#1M1O0/1,2$0T2(0w1|1N1#0A2L1C2Q2S2}0 271e2.2e2?0C130s0|0D2P310}302o331-35370|0L3b283d2Q2#013i0y38040c3m2R0~3p3g0@3s3u0N3x3o313q3D0|0W3G3z3I3B3r0d363t0|0#3N3e321Q3h3S3j040x3X3A3!3C3$3U040g3G1D2{1u2,2V0k2Z3q0j1|2v0$1N1C2`0G2|3c3=3~0%463f3,010S0|0%0m3=3+2/010R0|0v4j3P4d0w0m0|2(0o0y0_4i1v474k2e0{040J4q4c4l0w0|0T130o0G4I3Z4l4F0Z0O3N0v4Y4p4D1-0j0D0|030v1d0.0C0!0!0v0l2(0v4N0y4P0v2I0r0v0y0l0Y0v0F0z2u0-1M2u0w2E1d0-1q1*1)0v270C1h0h2W1*4^4P4X4Z3Y3J0|0H4 0Q0G0l0C0e4N0o4R3q4F0I3G4!4r4K0|0:0C4P5y5A0F5C4B3n5I4J2e0d0|0M5H5r3Q4L045u1b5x0C5D3Q4F4H5T2R5$4s4M4O4Q5=4b4S4E0|0Z5G5|5V5~3h5L145O5-5|5@4T0|5;2 4#3C5_4_5{6g5J5 040Z5p4Y6c344v0d0l0n0G0s1)5Q6k5#6h015Y045!636t1-4F0V0V5.4d0F0T0|0r6E6n1-4f040m3S6W5W66040P6%650@0d4n042;6,3J0i0|5i0w5o6b6F5:6Q5K045M695Q5S6m6(0@4U0U6?3Q6Z6#6a2}645s6;7c4d6/4M0w7l4K6^046`6|776-016 6}6X6i5)5v5,75706o0Z7b5|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|0U8G7-5%848K8E047K7h8D6H6J8W6F6S3k0W3M8a3Q6H0E7S6)8A8S6N8S5(0T8;8M8O8i7j858P4d4F8V3c7M5q6F6Z2L0Q5y7Z8!7#8v6w6y6A0G6C8e3n0~0q49453?9p0q3_1u0Q3{9u2X2T1{1}2V0y1(9r3_1A5}3q2L0F0e0m0y0S9i0H0c0|1m1o5d0-7_2 1H3d1B0p0s0v1s0Q5g2D2E9E4{1*3~592W0l0T2L0v0:9{0T0b5w5g14241i4.0H2i5a1e7_1K412-4d1/1W1Y1!9I3Q2r2i2k0|2x0B0j0C0`9+0K0t221d3=445}2~479oaj4d6Z4h8S6:4p8H3J4u044w4y0T4A8 6d4G8?6j9k5?6~8q7`957#970(9a8.8L046O8S8$040L8(a-6G0|8-8*5^6;5`8_a/aX7UaU6o8Nb38~8|5/8Ma_7 7g3c7Oa~b95U8X6:899c820w7%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

.128013s3o_;8èbcdufvg/0lyàq n7AaêpS.r1meh,(P2=4:jtwki9][5REx)é6050k0H0R0z0U0r0b0v0j0r0z0b0b0N010R0U0B010406050b0l0G0G0z0E0s040C0d0r0l0|0d0w0v020z0G0B0f0v0Z0H160E0u0l0H0b050p13151719110B041x1E051H0p1H1J1E110k0U0n0;0?0^0`0I0U0o0I0r1X0I0R0 050,0i0r0H1S0@0_011W1Y1!1Y0R1*1,1(0R0i0d0k191)0E1F0R0I0;1c0b0B0z0w0`0M011.1U010m0.0H0w1k0H1(292b2g1:2j1,2m0G2o040a0v0L0E0d0B0d0b0U1f1h0*270E0E0H0j2J1x2q0w1F0p252V0R2322240k2s0`1!0w2l2G1(1P1R0=1/2)0U2+0w1 1Q1(0B2O1F2T2V30122a1h2;2h2_0E160r0 0v0F2S3410332r361:383a3c0M3f2b3h2T2(013m0z3b040v0c3q2U113t3k0`3w3y0v0O3C3s343u3I3c0Y3M3E3O3G3v0d393x3c0(3T3i351T3l3Y3n3z0x3%3F3*3H3,3!3z0g3:3V3=3X3Z3J0V3{3j3}3Q040F0q423)2=3~3-0F3e1y3g1G2~1x2/2Y0k2$3u0j1 2y0)1Q1F2}0H2 4h4g3r054q0*4y434b0T0 0*0m3M3(3u0S3c4M3;4b0w0m0 0i2@0-2O4R3|4b0~040K4#4G370 0U160o0H4+4a2h4(0J3M0v4N3W0w0 0b0H0l0.4?3u4(0$0P3T0v5b4|4S2h0j0F0 030v1g0;0E0%1-0l2+0v4/0z4;0v2L0q0v0z0l0#0v0G0A2x0:1P2x0w2H1g0:1t1-1,0v2a0E1k0h2Z1-5t4;5a5c4}440 0I5A0R520E0e4/0o553W4_4{5$4T0 0?0E4;0l5-5/5@5e1:0d0 0N614$4-045)1e5,5;3}4(4*4A2U5^695Y4=6i4F4@1:574`6o5d683l5`175}0E6e4%0 6h32623H4.4:6n6G6w0`575!5b6k6x042_0l0n0H0r1,5.6K674,63656%6q6O0 0X0X6C2h0G0U0 486u6S0`4I040m3Y6+3P0 0Q713W0d4P042@75440i0 5T0w5Z6o6{016g6;6T5{6A6#5:7i6H7k0 0$0W7b4H0 6 6B6`7t4 797y2h774.0w7H3l7d047f7h6M6(6-4)7m6I6a5*5,7q7W7u047w6Q6v7T016}7B7M7X0U7:017J797L7D6N3v7O7Q6L4h7t7l7s7|7F6b5+5~7#847,57596o065c8h7+6,7-7A707{7,7F748o8k7^7a8s3P7~2b7R817|837S8k7F7o7!608b8k8d7*8i5#7t6}0U4L8w4~6J5u804B826.7$7F7=8K560 0W6:8)8V048r8E8*047x8U3}6404020r0R0f7?7F51530r7?4(8e308g8O9b6R7E0 6V6X6Z0H6#8X7$4(8-8=8/8(9p6f8+9o8B8p739m8+7?8{668_4b6?6^4{0v9a9c9d7|6}6Y519z04983g9K9L8h7j7F9g6Y6!6m9R9v8Z854.9R8,8$9y8.9t8@9B6*9E6=6@467*7j6}2O0R5~7`308j726U0d6W9#9j9%8f1x4D4x4iag0p4l1x0R4nal2!2W1~202Y0z1+ai4l1D6p3u2O0G0e0m0z0T9j0I0c0 1p1r5O0:9T4B1K3h1E0!1h0B1d5H5P0z275K2Z0l2Q0U5l5S271l5n0I2l5L0w0J5kaV520R0v1e0.0U510Ea|1h2E0%5T88b15+0E2m0U2O5Ra8b15q1-6X0Ea=a|8~5Ta-2a2Q0Ha@16a 0v0w0%2b0G0d2@0:4qa.0%a:5K0Uav0v8e1N4t2:3}1=1Z1#1%az3W2u2l2n0 2A0C0j0E0}a{0L0s251g4M4w6p314hafbV3}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:4k4uay0y1_2l2J0v0Ra85+6 a a@0k2b0:1,0:1~0w2+0:2}0z0|aN5w1-2}0d0o5T1A2Ja@0.0v1va{2ObE160w0k0%d 0v1!6?b90v0t0v0(5sa$0Ea(2Jd`17ej1X2+0D0v0y0ld 0r0ta@5Qaf5R0H0E2%2ley2H4X1!0R0%0D1G3haj0+0-0/04.

Dessin original

Un dessin va s'afficher...

Dessin binaire

Un dessin va s'afficher...