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 la position de la valeur initiale par rapport Ă  un seuil donnĂ©.

Exemples

🐍 Console Python
>>> 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, 120)
[[0, 0, 1, 1, 0], [0, 1, 1, 1, 0], [1, 1, 1, 0, 0], [1, 0, 0, 1, 1]]
Compléter le code ci-dessous :

###(DĂ©s-)Active le code aprĂšs la ligne # Tests (insensible Ă  la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Ctrl+Clic pour inverser les colonnes)
Entrer ou sortir du mode "plein Ă©cran"
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 : 5/5

.128013Cy1-ĂȘ]/wi_qPrG 79fI;gR2Ă h)(pn0ld,4LkjĂ©Uebmc:35a=o[.8t6sSĂšuxv050G0O0#0V0j0F0%0p0R0F0V0%0%0W010#0j0C010406050%0*0Q0Q0V0n0c040(0X0F0*100X0D0p020V0Q0C0u0p0w0O1a0n0l0*0O0%050h17191b1d150C04051I1B1L0h1I150G0j0,0^0`0|0~0z0j0v0z0F1Z0z0#13050:0P0F0O1U0{0}011Y1!1$1!0#1,1.1*0#0n1J0#0z0^1g0%0C0V0D0~0x011:1W010s0=0O0D1o0O1*26282d1=2g1.2j0Q2l040a0p0m0n0X0C0X0%0j1j1l0.240n0n0O0R2G1B2n0D1J0h222S1 21201+0G2p0~1$0D2i2D1*1R1T0_1;2$0j2(0D0X2,1*0C2L1J2Q2S2}16271l2.2e2?0n1a0F130p0d2P3114302o331=3537390x3c283e2Q2#013j0V38040p0T3n2R153q3h0~3t3v0p0I3z3p313r3F390U3J3B3L3D3s0X363u390$3Q3f321V3i3V3k3w0q3!3C3%3E3)3X3w0!3-3S3/3U3W3G0r3^3g3`3N040d0E3 3$2/3{3*0d3b1C3d3R4048420d3m4d3o4f47343;3v0d3y4l3A3#3M4q130d3I4u3K4g4p3|4z3P4C4n4x4G433Z4J4w3T4i3,4P3.4h4y433@4U3_4W4M0d3~4!4E3(4M0x454*4o4,3*0x4c2}4K4R4X0x4k4_4Q414|4t4 4V4F4?4B544#563=0x4I594+3:4-4O5f4;5h4?4T5k4L4?4Z5p4{4-4)5t514M0T4/2 1O2{1B2,2V0G212!3T0R2@2v0-1S1J2`0O2|3d3J055M0.5U5g010K130.0s3J0p504h0s130z0V1i0O0*0n5W551=12040B5`5a3i130j1a0v0O605#5}0A0S463r0i390p6h685l010%0G1302030T0r0u6p6r6t6q6s2L0D0,0X0j1/1.0p2?0Q0P2L0p2I1_2(0@2I640V666u6s6U6w6v3Q6h6i5{0~5%042L0#5^0D5+5-340P132s6j3r5}5 4C6/62046R666@3T6a3Q4`3`6(5)6.6$3s5/040`0n665^713`6_7i4h6365676{7a6a6c4:6e6g6i7q610~6m6o6x6X6V7D6z6B6D0p0`7K1b7g0n6L6E6W6 0O6W7V7D6Z6!6|6%136*6,797z3s6;7d2i7l2e7k7y5#0D7n6S7p2 7r130Y7/1=0Q0j135B5V7|040g0A747!5$5(0O5*4C5,7a0D7c2(0v0V108f7{7*7;8q7?7^707=6k7s6d3T6f3w7Z8x3r7B047W6v6W7H6C6E1/0D0M8m8o7Q7K7S7o0p0%0X0*0@7L0s3)1/0G6W0*2(7K0j0%0#8*6E8:8=0%8J7F6Y4J6!8h7*0R0d13030p1k0^0n0M0M0p8-1/7T8U0E0p5=0+0p0Q0f2u6P642i2E1k0@1x8O0p270n1o0)1 9e7o7Y6#7*7@045;5?5^0k640v7 0~5}0H7)8u7d7N5@0n9N0Q9P8g8b0X130W9U6k9I9K8=7h8F72136`8t9-8v7`858r130A9T9%8i6=9X9;9_6^9@9Q3s9{aa738~7Za3042?0*0,0O0F1.9!7_9,3r9)049+a29~040Y7~9=3`8183ar3T6(8(5_aw9V0LaF3`0X8C2;aN4h7,9z0D8wa79?5~aa9I7e7O9!9$aY7j9 0gaS2eaH3Va/6}0ja?0~aP636-aK9-aU28aX9}69a9aB7m9J5=9:9Z9Oada-9F905#a;aJ2}bg9`6~a_01a{6~a}bk8b0Db0aW9|3o8b8sb3bm9/9Ya)bd046bbf8 8bbibo9IaMa~asaQbs3dbl3Mbwb2bz869^bC3Ma47fbFbcb67:9 7t4_8 b=ag9H13ajalan0OapbZ2RbA7}a#63bH0gaAa+b7bQc8b.87boatavbt7aaD045d5ebV9(130ebOacb-5|c2ct3Ec4cw015}c6c304cab%aZa.af9Gbh7$0/7(bR4Rb_8!b{ao7T8a7a778ebO7c0P2;0;2LbHb$b!b^6~9Ecz9Scr040%5@0=bHbJ7u8B7w5,cz8H8{7E0u8M7J9d0p9fc$2j0n8:0M8?8V7D9f8Z8#7M0paI2u8A3`8H8 8+7Dd71$8;dfdw8_240D8=2jdC7Q0@9h2Edl0,3u9Ydp48dr6!0G0*9x0j0+am0p1z0#8Y1 0j2N1u2id!2;0s0Mdc9Y1/5=8Yc^0FdO2edQ6h0/3a8Y2;1kd26Wbf8b92949632991/d79f2I9h9j9l9n1z6L9q0D9sem0p9v7K1/9y9A9Cd8c/b;b@9VbE9Mb,cbcu04a1chc-a%b+9#ce9*c=eBbjcGa,a!cz9IcVc:9 eHcnaheKa6eS48bBc,9VeXeE9R9 e4ahb`amcUexe#7*cfbo5}azaacj843obWaG13aIc=cFf49(bTbObYbyc0b#cDe%bbeMeYbIcIeIcL04f8cP41cyfq6kbqaRfuaT7$b1fg5!8yb5e/abb89Lfla*e)cc0Afp4ebLcXf7a=fB34fwe{5#fzbUfb8iffc*cDeQbGfnc{eyb?bMfWeRf)c-fa2Rf5aOfdfY3if+fnc+fheJa5fNc`b:fTb?b=bucRake^b}e.fPeFc7glcxbnfncCeV13f|fGa8cdg1a`eOgz01f2bo6(0j8pf#bmgke,fHaycDa^grgngMb(cEc5eN8I0F0#0uc=c@0*c_gC6(amc@bocj4^gccK6k6(7%0nf(f}gfaicSgib~fF150h5Y5T1M5E0h5G1B0#5Iha2Y2T0V1-h5h85Q1Hgw3T2L0Q0k0s0V0Kb}0z0T131t1v9v0@gbbz1O3e2,3r0V0G0Q1k2F0j97d,at1HhHhJhL2G0e100#1}040odcb|8U6H6J1z1M3e1I0N8.0vh$6F2Ih)6KdZ9i8#dJ0V0C0Camde8h1 1k0v041ad$0R7`i4aW040Z0p0b5;eq0M0F0M2udF2Iia1{1/i8dciad?0pi4gh0p0y9c8.ia0n0:2;8@0v2(0HdYd!iBd7iEiGiD1g1k2(0Zh,hl0t0FdY8;0p5;c$6+dX0G00h~i01.7P5X5Ngqh43w6F0D18d.0X8U7L6N0OiLd}i=5ZbQi^er6Gi|2Ai 0V240FiU0OiWhEh25G1Q1ShShK0DhMhO8jhQ1KjphUhN0DhW2FhZ0J8^ej2i241p990z9rjziX1K04jEdxdY320XjJ0MjLemjz9x8!7P0.0@al0nen0@0*gZ9zjI27d(0%iL1a8:6G0M28hK2;0@5MjWjY2EhhhBjOhG3T1@1#1%1)hm3`2r2i2k132x0(0Rdc0Cd!0m0c221k5W5SfG2~5Vi^f@0478gC8jb_0O8SgHf,gtc.aqf:hC3AfU7*g@cNg_e~7}gSg65#cjclgXcqkDcsfJe gPc5kXkec9gWg*f^f9ceg0fxbXfDbxkJfJa$g8k~gofKgLkYgN0AfRgFk?k(gqk`3Tf%fek|b k/ccg5lk6}eQl2gTcQkLljc1bIl94J7548cYgIf`7?c#c%0jc)g4gPe`lreTe!lDbmg%g)k*b/e=kRcM6+kUgCe k.8bgEk=6~lCg{ahl5lne:gOkKgQlT87l$ahgvlvfSlPas6ogZg#lclRd^l)g,fFf~48g/lafsfXlefvgVgClgkDg3l@lmg|fklql6gUl.lvl8l}l,lWmdf_mxe-k^a|lh6)fEmql/fKlplJl=lLmraZmv3!h3i?h6hijm5Fhk5F0/0;0?04.