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 = 255 où x_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ê_ 1e5s,/l8é-:ynbxR]6I0guiokt(2ch[d7èa3mP4jfvp;wS)=rq050J0f0D0M0A0k0h0d0G0k0M0h0h0Z010D0A0U010406050h0z0O0O0M0!0p040X0B0k0z0_0B0q0d020M0O0U0V0d0t0f130!0#0z0f0h050j101214160~0U041u1B051E0j1E1G1B0~0J0A0T0.0:0=0@0H0A0y0H0k1U0H0D0|050)0r0k0f1P0;0?011T1V1X1V0D1%1)1#0D0r0B0J161$0!1C0D0H0.190h0U0M0q0@0F011+1R010S0+0f0q1h0f1#26282d1-2g1)2j0O2l040a0d0P0!0B0U0B0h0A1c1e0%240!0!0f0G2G1u2n0q1C0j222S0D201 210J2p0@1X0q2i2D1#1M1O0/1,2$0A2(0q1|1N1#0U2L1C2Q2S2}0 271e2.2e2?0!130k0|0e2P310}302o331-35370|0F3b283d2Q2#013i0M38040N3m2R0~3p3g0@3s3u0Q3x3o313q3D0|0g3G3z3I3B3r0B363t0|0v3N3e321Q3h3S3j040K3X3A3!3C3$3U040l3G1D2{1u2,2V0J2Z3q0G1|2v0$1N1C2`0f2|3c3=3~0%463f3,010C0|0%0S3=3+2/010W0|0d4j3P4d0q0S0|2(0y0M0_4i1v474k2e0{040E4q4c4l0q0|0A130y0f4I3Z4l4F0Y0o3N0d4Y4p4D1-0G0e0|030d1d0.0!0m0m0d0z2(0d4N0M4P0d2I0x0d0M0z0s0d0O0b2u0-1M2u0q2E1d0-1q1*1)0d270!1h0L2W1*4^4P4X4Z3Y3J0|0H4 0D0f0z0!0c4N0y4R3q4F0i3G4!4r4K0|0:0!4P5y5A0O5C4B3n5I4J2e0B0|0Z5H5r3Q4L045u1b5x0!5D3Q4F4H5T2R5$4s4M4O4Q5=4b4S4E0|0Y5G5|5V5~3h5L145O5-5|5@4T0|5;2 4#3C5_4_5{6g5J5 040Y5p4Y6c344v0B0z0T0f0k1)5Q6k5#6h015Y045!636t1-4F0I0I5.4d0O0A0|0x6E6n1-4f040S3S6W5W66040R6%650@0B4n042;6,3J0r0|5i0q5o6b6F5:6Q5K045M695Q5S6m6(0@4U0u6?3Q6Z6#6a2}645s6;7c4d6/4M0q7l4K6^046`6|776-016 6}6X6i5)5v5,75706o0Y7b5|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%848K8E047K7h8D6H6J8W6F6S3k0g3M8a3Q6H0n7S6)8A8S6N8S5(0A8;8M8O8i7j858P4d4F8V3c7M5q6F6Z2L0D5y7Z8!7#8v6w6y6A0f6C8e3n0~0j49453?9p0j3_1u0D3{9u2X2T1{1}2V0M1(9r3_1A5}3q2L0O0c0S0M0C9i0H0N0|1m1o5d0-7_2 1H3d1B0w0k0d1s0D5g2D2E9E4{1*3~592W0z0A2L0d0:9{0A0h5w5g14241i4.0H2i5a1e7_1K412-4d1/1W1Y1!9I3Q2r2i2k0|2x0X0G0!0`9+0P0p221d3=445}2~479oaj4d6Z4h8S6:4p8H3J4u044w4y0A4A8 6d4G8?6j9k5?6~8q7`957#970(9a8.8L046O8S8$040F8(a-6G0|8-8*5^6;5`8_a/aX7UaU6o8Nb38~8|5/8Ma_7 7g3c7Oa~b95U8X6:899c820q7%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ê9_ 1e5s,/l8é:ynbxR]60guiàokt(2ch[d7èa3mP4.jEfvp;wS)A=rq050J0g0D0M0z0l0i0e0G0l0M0i0i0$010D0z0W010406050i0y0O0O0M0%0p040Z0B0l0y0|0B0q0e020M0O0W0X0e0t0g160%0(0y0g0i050k13151719110W041x1E051H0k1H1J1E110J0z0V0;0?0^0`0H0z0x0H0l1X0H0D0 050,0r0l0g1S0@0_011W1Y1!1Y0D1*1,1(0D0r0B0J191)0%1F0D0H0;1c0i0W0M0q0`0F011.1U010U0.0g0q1k0g1(292b2g1:2j1,2m0O2o040a0e0P0%0B0W0B0i0z1f1h0*270%0%0g0G2J1x2q0q1F0k252V0D2322240J2s0`1!0q2l2G1(1P1R0=1/2)0z2+0q1 1Q1(0W2O1F2T2V30122a1h2;2h2_0%160l0 0e0f2S3410332r361:383a3c0F3f2b3h2T2(013m0M3b040e0N3q2U113t3k0`3w3y0e0Q3C3s343u3I3c0h3M3E3O3G3v0B393x3c0v3T3i351T3l3Y3n3z0K3%3F3*3H3,3!3z0m3:3V3=3X3Z3J0c3{3j3}3Q040f0w423)2=3~3-0f3e1y3g1G2~1x2/2Y0J2$3u0G1 2y0)1Q1F2}0g2 4h4g3r054q0*4y434b0C0 0*0U3M3(3u0Y3c4M3;4b0q0U0 0r2@0-2O4R3|4b0~040E4#4G370 0z160x0g4+4a2h4(0j3M0e4N3W0q0 0i0g0y0.4?3u4(0!0o3T0e5b4|4S2h0G0f0 030e1g0;0%0n1-0y2+0e4/0M4;0e2L0w0e0M0y0s0e0O0b2x0:1P2x0q2H1g0:1t1-1,0e2a0%1k0L2Z1-5t4;5a5c4}440 0H5A0D520%0d4/0x553W4_4{5$4T0 0?0%4;0y5-5/5@5e1:0B0 0$614$4-045)1e5,5;3}4(4*4A2U5^695Y4=6i4F4@1:574`6o5d683l5`175}0%6e4%0 6h32623H4.4:6n6G6w0`575!5b6k6x042_0y0V0g0l1,5.6K674,63656%6q6O0 0I0I6C2h0O0z0 486u6S0`4I040U3Y6+3P0 0S713W0B4P042@75440r0 5T0q5Z6o6{016g6;6T5{6A6#5:7i6H7k0 0!0u7b4H0 6 6B6`7t4 797y2h774.0q7H3l7d047f7h6M6(6-4)7m6I6a5*5,7q7W7u047w6Q6v7T016}7B7M7X0z7:017J797L7D6N3v7O7Q6L4h7t7l7s7|7F6b5+5~7#847,57596o065c8h7+6,7-7A707{7,7F748o8k7^7a8s3P7~2b7R817|837S8k7F7o7!608b8k8d7*8i5#7t6}0z4L8w4~6J5u804B826.7$7F7=8K560 0u6:8)8V048r8E8*047x8U3}6404020l0D0X7?7F51530l7?4(8e308g8O9b6R7E0 6V6X6Z0g6#8X7$4(8-8=8/8(9p6f8+9o8B8p739m8+7?8{668_4b6?6^4{0e9a9c9d7|6}6Y519z04983g9K9L8h7j7F9g6Y6!6m9R9v8Z854.9R8,8$9y8.9t8@9B6*9E6=6@467*7j6}2O0D5~7`308j726U0B6W9#9j9%8f1x4D4x4iag0k4l1x0D4nal2!2W1~202Y0M1+ai4l1D6p3u2O0O0d0U0M0C9j0H0N0 1p1r5O0:9T4B1K3h1E0T1h0W1d5H5P0M275K2Z0y2Q0z5l5S271l5n0H2l5L0q0j5kaV520D0e1e0.0z510%a|1h2E0n5T88b15+0%2m0z2O5Ra8b15q1-6X0%a=a|8~5Ta-2a2Q0ga@16a 0e0q0n2b0O0B2@0:4qa.0na:5K0zav0e8e1N4t2:3}1=1Z1#1%az3W2u2l2n0 2A0Z0G0%0}a{0P0p251g4M4w6p314hafbV3}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:4k4uay0#1_2l2J0e0Da85+6 a a@0J2b0:1,0:1~0q2+0:2}0M0|aN5w1-2}0B0x5T1A2Ja@0.0e1va{2ObE160q0J0nd 0e1!6?b90e0A0e0v5sa$0%a(2Jd`17ej1X2+0R0e0#0yd 0l0Aa@5Qaf5R0g0%2%2ley2H4X1!0D0n0R1G3haj0+0-0/04.

Dessin original

Un dessin va s'afficher...

Dessin binaire

Un dessin va s'afficher...