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:pbv(40i2edmx3;ès7= 1jo5w_lSIênatf-)h]R6qcrg,[éyPku8/050l0k0H0G0i0B0r0u0Q0B0G0r0r0t010H0i0c010406050r0Z0m0m0G0R0W040C0x0B0Z0_0x0F0u020G0m0c0p0u0N0k130R0P0Z0k0r050#101214160~0c041u1B051E0#1E1G1B0~0l0i0e0.0:0=0@0L0i0S0L0B1U0L0H0|050)0d0B0k1P0;0?011T1V1X1V0H1%1)1#0H0d0x0l161$0R1C0H0L0.190r0c0G0F0@0j011+1R010I0+0k0F1h0k1#26282d1-2g1)2j0m2l040a0u0X0R0x0c0x0r0i1c1e0%240R0R0k0Q2G1u2n0F1C0#222S0H201 210l2p0@1X0F2i2D1#1M1O0/1,2$0i2(0F1|1N1#0c2L1C2Q2S2}0 271e2.2e2?0R130B0|0v2P310}302o331-35370|0j3b283d2Q2#013i0G38040o3m2R0~3p3g0@3s3u0g3x3o313q3D0|0y3G3z3I3B3r0x363t0|0O3N3e321Q3h3S3j040s3X3A3!3C3$3U040!3G1D2{1u2,2V0l2Z3q0Q1|2v0$1N1C2`0k2|3c3=3~0%463f3,010Y0|0%0I3=3+2/010z0|0u4j3P4d0F0I0|2(0S0G0_4i1v474k2e0{040f4q4c4l0F0|0i130S0k4I3Z4l4F0K0b3N0u4Y4p4D1-0Q0v0|030u1d0.0R0V0V0u0Z2(0u4N0G4P0u2I0h0u0G0Z0n0u0m0E2u0-1M2u0F2E1d0-1q1*1)0u270R1h0q2W1*4^4P4X4Z3Y3J0|0L4 0H0k0Z0R0A4N0S4R3q4F0T3G4!4r4K0|0:0R4P5y5A0m5C4B3n5I4J2e0x0|0t5H5r3Q4L045u1b5x0R5D3Q4F4H5T2R5$4s4M4O4Q5=4b4S4E0|0K5G5|5V5~3h5L145O5-5|5@4T0|5;2 4#3C5_4_5{6g5J5 040K5p4Y6c344v0x0Z0e0k0B1)5Q6k5#6h015Y045!636t1-4F0U0U5.4d0m0i0|0h6E6n1-4f040I3S6W5W66040w6%650@0x4n042;6,3J0d0|5i0F5o6b6F5:6Q5K045M695Q5S6m6(0@4U0M6?3Q6Z6#6a2}645s6;7c4d6/4M0F7l4K6^046`6|776-016 6}6X6i5)5v5,75706o0K7b5|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|0M8G7-5%848K8E047K7h8D6H6J8W6F6S3k0y3M8a3Q6H0J7S6)8A8S6N8S5(0i8;8M8O8i7j858P4d4F8V3c7M5q6F6Z2L0H5y7Z8!7#8v6w6y6A0k6C8e3n0~0#49453?9p0#3_1u0H3{9u2X2T1{1}2V0G1(9r3_1A5}3q2L0m0A0I0G0Y9i0L0o0|1m1o5d0-7_2 1H3d1B0D0B0u1s0H5g2D2E9E4{1*3~592W0Z0i2L0u0:9{0i0r5w5g14241i4.0L2i5a1e7_1K412-4d1/1W1Y1!9I3Q2r2i2k0|2x0C0Q0R0`9+0X0W221d3=445}2~479oaj4d6Z4h8S6:4p8H3J4u044w4y0i4A8 6d4G8?6j9k5?6~8q7`957#970(9a8.8L046O8S8$040j8(a-6G0|8-8*5^6;5`8_a/aX7UaU6o8Nb38~8|5/8Ma_7 7g3c7Oa~b95U8X6:899c820F7%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:pbvà(40i2edmx3;ès7= 1jEo5w_lSêAnatf)9h]R6qcrg,.[éyPku8/050m0l0J0I0j0D0s0v0S0D0I0s0s0u010J0j0c010406050s0$0n0n0I0T0Z040E0z0D0$0|0z0H0v020I0n0c0q0v0P0l160T0R0$0l0s050(13151719110c041x1E051H0(1H1J1E110m0j0e0;0?0^0`0N0j0U0N0D1X0N0J0 050,0d0D0l1S0@0_011W1Y1!1Y0J1*1,1(0J0d0z0m191)0T1F0J0N0;1c0s0c0I0H0`0k011.1U010K0.0l0H1k0l1(292b2g1:2j1,2m0n2o040a0v0!0T0z0c0z0s0j1f1h0*270T0T0l0S2J1x2q0H1F0(252V0J2322240m2s0`1!0H2l2G1(1P1R0=1/2)0j2+0H1 1Q1(0c2O1F2T2V30122a1h2;2h2_0T160D0 0v0w2S3410332r361:383a3c0k3f2b3h2T2(013m0I3b040v0p3q2U113t3k0`3w3y0v0h3C3s343u3I3c0A3M3E3O3G3v0z393x3c0Q3T3i351T3l3Y3n3z0t3%3F3*3H3,3!3z0%3:3V3=3X3Z3J0M3{3j3}3Q040w0i423)2=3~3-0w3e1y3g1G2~1x2/2Y0m2$3u0S1 2y0)1Q1F2}0l2 4h4g3r054q0*4y434b0#0 0*0K3M3(3u0B3c4M3;4b0H0K0 0d2@0-2O4R3|4b0~040g4#4G370 0j160U0l4+4a2h4(0V3M0v4N3W0H0 0s0l0$0.4?3u4(0L0b3T0v5b4|4S2h0S0w0 030v1g0;0T0Y1-0$2+0v4/0I4;0v2L0i0v0I0$0o0v0n0F2x0:1P2x0H2H1g0:1t1-1,0v2a0T1k0r2Z1-5t4;5a5c4}440 0N5A0J520T0C4/0U553W4_4{5$4T0 0?0T4;0$5-5/5@5e1:0z0 0u614$4-045)1e5,5;3}4(4*4A2U5^695Y4=6i4F4@1:574`6o5d683l5`175}0T6e4%0 6h32623H4.4:6n6G6w0`575!5b6k6x042_0$0e0l0D1,5.6K674,63656%6q6O0 0X0X6C2h0n0j0 486u6S0`4I040K3Y6+3P0 0x713W0z4P042@75440d0 5T0H5Z6o6{016g6;6T5{6A6#5:7i6H7k0 0L0O7b4H0 6 6B6`7t4 797y2h774.0H7H3l7d047f7h6M6(6-4)7m6I6a5*5,7q7W7u047w6Q6v7T016}7B7M7X0j7:017J797L7D6N3v7O7Q6L4h7t7l7s7|7F6b5+5~7#847,57596o065c8h7+6,7-7A707{7,7F748o8k7^7a8s3P7~2b7R817|837S8k7F7o7!608b8k8d7*8i5#7t6}0j4L8w4~6J5u804B826.7$7F7=8K560 0O6:8)8V048r8E8*047x8U3}6404020D0J0q7?7F51530D7?4(8e308g8O9b6R7E0 6V6X6Z0l6#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}2O0J5~7`308j726U0z6W9#9j9%8f1x4D4x4iag0(4l1x0J4nal2!2W1~202Y0I1+ai4l1D6p3u2O0n0C0K0I0#9j0N0p0 1p1r5O0:9T4B1K3h1E0y1h0c1d5H5P0I275K2Z0$2Q0j5l5S271l5n0N2l5L0H0V5kaV520J0v1e0.0j510Ta|1h2E0Y5T88b15+0T2m0j2O5Ra8b15q1-6X0Ta=a|8~5Ta-2a2Q0la@16a 0v0H0Y2b0n0z2@0:4qa.0Ya:5K0jav0v8e1N4t2:3}1=1Z1#1%az3W2u2l2n0 2A0E0S0T0}a{0!0Z251g4M4w6p314hafbV3}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:4k4uay0G1_2l2J0v0Ja85+6 a a@0m2b0:1,0:1~0H2+0:2}0I0|aN5w1-2}0z0U5T1A2Ja@0.0v1va{2ObE160H0m0Yd 0v1!6?b90v0f0v0Q5sa$0Ta(2Jd`17ej1X2+0W0v0G0$d 0D0fa@5Qaf5R0l0T2%2ley2H4X1!0J0Y0W1G3haj0+0-0/04.

Dessin original

Un dessin va s'afficher...

Dessin binaire

Un dessin va s'afficher...