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

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

Python Console Session
>>> 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"
(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 : 5/5

.128013g[ r;)/(loU4,6Ib=ax5ujtP7e-h0mnCkiê:Séq.èy1cd32à8_wvLpf9R]Gs050T0A0x0s0I0j0,0d0S0j0s0,0,0r010x0I0$010406050,0v0E0E0s0e0Q040L0k0j0v100k0F0d020s0E0$0f0d0)0A1a0e0N0v0A0,050h17191b1d150$04051I1B1L0h1I150T0I0!0^0`0|0~0`0F0b0v0s0b0A0B0$0Q0x0C1k0d0C0I0b0C0j1;0C0x13050:0q0j0A1U0{0}011:1=1@1=0x1}1 1{0x0e1J1,0^1g0,0$0s0F0~0V01211W010%0=0A0F1o0A1{2j2l2q232t1 2w0E2y040a0d0y0e0k0$0k0,0I1j1l0.2h0e0e0A0S2T1B2A0F1J0h1,2)2d2f2e1|0T2C1X0I0F2v2Q1{1R1T0_222?2^0F0k2|1{0$2Y1J2%2)39162k1l2~2r320e1a0j1{0s1/2Y0%0~030Y0Y0S330A1@310k0B0V0B0R130d0R1B0s3a3d143c2B3f233h3j3l3n0A3p013r3t3v3x2_3A3A3E0V3H3J2l3L2%2=013Q0s3k1J3m0C3o3q3s3u0.3!323$0U3E0U3*2$3K153.3O0~3;3?053^3`3W3|3Z2@3#3B0m3E0m451C473M3e1V3P0k3i3=3S3_3U3{3Y3~4k403B0u3E0u4q39483d3/4c4A4g3X3}3w4G3z3B0o3E0o4M4s494v4b4x3R3@3T3V4U4j3y3$0z3E0z4%3,4O3N4*3:4,4z4.4B4:4i4F4?3B0X3E0X4{2(4}4u2 504y4d4f4C4h4E4W580B0(3E0(5d3-4P4a5i4-4e4/4D4V3 4Y3C0D130R0D5v5f4Q515k5C5n5E4X3$0R3D045W5M4t5O5j4S5m4;574l3C2o5Y3)0h3I464|5#5y4R534T565p5,0R425Y445;3+5e5^4 5`5B545D4=5 4n5Y4p645?664)5h695l555o5F5V4J5Y4L6i4r5@6l3g5P5(6p5T5q0R4!5Y4$6w4N676m6B5{5)5}6r3B0R4^5Y4`6K4(5x686O6a5|6q5U6T5a5Y5c6Y6y6!6N5%6P6D6d4H3C5s5Y5u6/6k6;6A6?6%6Q6)5q0V5I04785!6z4w736o6c5+6`0V5X7k7c717e5A7g5S6_5G0V5.7v7n4~6=7q5R5*5~7j610V635=6x707z727B6b7s7i7u6f0V6h7J6L7d4+7f7C6R6*3A6t0V6v7W6Z7M7p52746^7R3$0V6H7^7y5g7N7:7r7D6S3A6V0V6X7,6:7.7Z7O6(6E5,0V6,8e7{5$8a758c7j6|0V6~867L7|7/5Q7P807%0U798y5v1M371B2|2,0T2f2;5y4V2{1S1J360A383K6j1J4V8R2B0I0T0~3s2%5V3S8Y8!765 2p2G0A8*8l5G5X457Y010H130.0%8T0d6M3g0%130C0s1i0A0v0e8T902312040i9a8^0F130I1a1%9g7o0~9d0g0K8T157K8W1l8)018#3d7@8(8Z9z8+7j8-2x8:7t9C2)5=8^0Z3E0d9S9n88010,0T1302030U0(0f9!9$9(9#9%2Y0F0!0k0I201 0d320E0q2Y0d2V272^0@2V9k1$0A9)9%a69+9*9t9U9x9E9A2l419D9K7?3B429^9J9F8;ah9N049S9T8^8`042Y0x980F8~9b4b0q132Fac3/9d9f9vaE3:9j9l0AaJ5y9qabaN3.9yaf0F3$6f5BaZ9G5G4nan2Haj7Ea+1{649u3baYae0Y8$4Iaiap9La}a-8/a ak0B6t8@9o8_8{3UaD9h92040`0e1%98aT4 aLbl6maQa4bo2r9q9s9va@8Sa_8*a|0B6Ha(a`aq4Z9Ia.b4a:3$bD6i9P9R9TaXb99X9Z9,a9a7bW9.9:9=0d0`b%1bbj0e9}9?a8a31%a8b=bWaWa^4Pa)bB6VbEa/814^b2b 7%b}64au8 aw13azaBbdb90FaGbg2vbs9c13aMb_9V9i04b:aSbS9V9d0ccj0~0E0I135Lct8s9p130*0gb^byb`a`bB6,b~bK815ac2cQ7%cOa?aJb{9B3B6|cP7$5q5scTc(5,c$bOb9ax8|cdcobf2^0b0s108}cDaKclcxaPcqaRd1bucJ3,5#cZag6T79c%a*5V5Ic+dfdca=9Ob99Qataud1bU04b?9*a8b!9;9?200F0Mc`c|b-b%b/aR0d0,0k0v0@b(0%4,200Ta80v2^b%0I0,0xdR9?dXdZ0,dubYaabwcYcMc!3C8?3ma)bGd:bIb3c,6`5Wdldpavb90S5X030d1.0S0e0M0M0ddU20crdF0D0d950t0d0E0J2Ha19k2v2R1k0@1xdz0d2k0e1o0P2dedd4d,c~daa#6T5.ded@0R2odieLeJc6dq9h9395dZ980Y9k0bd5130nc?cEd2bhb+eY0Ee!9vc8b90k130re(4QeU96bkc~aUd0e~68bq9mf15h9qe%e:aOcpe+9799f5btf0cne)cpcre#04cIeEfi0deG5V61eKb03Cam8.c36FfueRe0co13320v0!3w1 e-brf98^e?04e^fOb9cvcwff23czcBe_5yaxdPfe39e;fF040wf#4 0kdo2@f/6mcgey1Zcsfqe 9ed1fbb*fde-e/f}bm130g0*f@2rf%4xgb3P9jgf0~f;9jaCfTcof_2lf4g6f6fhcKf,94e|0eg4fmg9d72(d9d.db3Ca%d=bFfw0Ra,fzcU6Fa%fDf+e)gdf)3KgUe`cqgi01gkcqgmf*fagpf{fmcmgvfje{eWgzeZgBbv6LeFgGeH3Cb7gKfA5 4JeOgMb7gTc7aOgWg$cpf.gne)g(f?hg4Qg-grg;c f fX4baHg2eXg_hr01d6fphofs6TbDh2gQ5 4!h6b56Gd~c7hNeScefGdLfJ0jfLflhxcvg0ghhXcGfWgs3g13hfh(ck04gahk5yfQfSg+8^fZ7a0u6vh@e=130Bhdf3f|hof~h%i4f2g#h#h.i6d8eTf-fmh/g|fqhC3Cb}hFd{8=c1gPio5Vc53Ihac9ay0/cch:i8fHhThVeDiihBg~5VcOindj3CcSiriN0RcW3IbxidcLbAd/0Rc$iMeLc*iQi%d~hbbbc}h}c@130q2@0;2Yg/hZd3fNh,cF04f8i/g=040,970=g`gD9wfriJ3B78a~isjcdhi)fwjdasaOdohahxdsd)bX0fdxb$ecfrdIi=2w0edX0Md!dGbWeedKdMb)0df(2Hj8gFiYgH7kjeiNjShJbLjc8?c/9Vdsc7dSbWjw1@dYjEj+d%2h0FdZ2wj;b-0@eg2RjK0!3=fdjObz9FbB7vjTd@k4jW81k4jl8^j$au0T0vew0I0t3w0d1z0xdJ2d0I2!1u2vkn2@0%0MjBfd2095dJj50jk0iXk2d/7Hk5jjfyaojf3AfCdmj#9Yd klkn0RdJ2@1kjra8kF8Xjb3AgJjah37jgOkNjUgSivhP9Ve213e4e6e820jwee2Vegeiekem1z9}ep0Ferl90deub%20exezeBjxi|4sg}jQg 7*kKb5lpk87%lpasiwhQ04gxg@gAiaj0gYfahtbig3hwj13/h=i1lzeVj iag:iWf,hWi}hyg8lE3,gZ5_lHb+i_hxfkiGi7gtfnk%adln7@hEk,hG7jhIjilrbNk?fEj2iDfK0AfMhnl#aOlNiBl/0cicgEh^cA04cClLf$13f(lOh+lFfPf=g*mqcehmi3lUe)bnl+l(lJe.gBihmu9Vhcmbh)i9mkf:mshdmwl*lXcplAmDg5l.fgfnmG5@lmkHjRiml_kO84d_k-7uiukUi,04mnmKggmMmHhhmPm_aFcagqmxmffUgumyg!mVhvmEia9rl;m+a{kIiLnfk6iPk:nkhMhOl$4 mJmNbpifm g%m~nt3gmRlSi`fcnamXn7f~ndhAn7ik8olqjX3Ai(nmjjc.m0npm1g!m3hUm5lWmYh-mej9l%m{nHg7ibi`mpn-l/m#2(nq5hmanzfYmhmjm|3/ax0Ii.o0n+n$n=mZn)lGn,n4cuh$n:igg$fQ020j0x0flOj40vj6nwax3wj4g$h_3GnKodl=m(g 8ynO81oElt5qoElwk@gVcaiz0emtm8ienZiFlkm$3b0h8V8C8Q8E8N1B0x8Ho)2/2*0s1~o$0h8F1Hn*4 2Y0E0Y0%0s0Hm50C611t1veu0@g{8S1O3L2|3/0s0T0E1k2S0I1.kvfQ1Hpcpepg2T0B100x2b040+jBn!dF9_9{1z1M3L1I0ldV0bpx9@2VpA9|kmehdMj{0s0$0$3wjDc82d1k0b041akp0Sf|pY1Z040O0d0G94ld0M0j0M2Hj@2Vp(2920p$jBp(kC0dpYfI200WebdVp(0e0:4kdW0b2^0nkV0dq6jwq9qbq81g1k2^0OpDo@0p0jkldY1/o/2S1yqv0T00pSpU1 b,058V0I1B8Vle9^18kx0kdFb(9 0Aqg0/8 8VhfqN9@0FqQ2NqT3m3u0jqp0Aqrp99uo?0-1Spnpf0Fphpj0FdP13pm5ypdq{q}a#pspu0#d$l62v2h1pe80Ceqpigm1P1K04raj,kl3e0krf0Mrhl9rjewdLb,0.0@fJ0ela0@0voleyre2kkr0,qg1adX9^0M2lpf2@0@3urtrv2Ro:p6qsq^2}4 1Y1!a41)1+1-1l251?1^1`o^5h2E2v2x130yr/1k9a8P9w658U3vj9fs0U3CoF5Usa3DoI3#se2p8vissikbc:i-hdc^0AdDo3mSn%hsi{m7oAhpnJiHnLiJsaeJi$9LsGm.l`3zsK7#dfsKoLnXmliyaAoQg$fVd1h_7*h|o5f:h lOo7sAi5i`qLia0*oaien;s-n.n@atm?m^n|sxs^s|mrglmQn1g.nCmBbghugXo8h-lTs_nus,r_mZ0ggCosmmgenwfkoinys(f^t6sztjtei`n9tctgmZtftysxtiaO9qtmsDsAs90BfusI7?sakMbJsltPsj8bsJtXasiVtNsF0Bk+d?t!k/tVsQt*tY8kt-i+ixc=tqbfjzi@n3tGlYhqmTi2fml!n^oboporlXhztMs8t)h1njt!h5l}bLsah5skt:h8nVm?cbsXnwsZhxh_n oSsocqo4uAlVl-tdi~s?lys:uboft9t1tJcGoi9Zolontq13u9kEtn04out n_2roxg$nstumLt1u(23hioRu79hnBuMu2swe*tbsvuHd2tI8^tKs{u:0~u,uEj2uLu-u;ttv9hltwt uQu{v0mUlQe}u`tFobv2n5fntLlloYo!1O8Do=8Nq?vC8E0/0;0?04.