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

.128013_4:L2-.Sw3/]7bpPiqGIoê1tl(9 ;=vm6ju8RsèCfrgàeU[hcé05a,nkydx)050*0T0y0#0r0z0M0C0X0z0#0M0M0E010y0r0p010406050M0J0G0G0#0Q0)040i0v0z0J100v0%0C020#0G0p0D0C0L0T1a0Q0s0J0T0M050l17191b1d150p04051I1B1L0l1I150*0r0F0^0`0|0~0`0%0R0J0#0R0T0g0p0)0y0W1k0C0W0r0R0W0z1;0W0y13050:0o0z0T1U0{0}011:1=1@1=0y1}1 1{0y0Q1J1,0^1g0M0p0#0%0~0f01211W010P0=0T0%1o0T1{2j2l2q232t1 2w0G2y040a0C0q0Q0v0p0v0M0r1j1l0.2h0Q0Q0T0X2T1B2A0%1J0l1,2)2d2f2e1|0*2C1X0r0%2v2Q1{1R1T0_222?2^0%0v2|1{0p2Y1J2%2)39162k1l2~2r320Q1a0z1{0#1/2Y0P0~030b0b0X330T1@310v0g0f0g0x130C0x1B0#3a3d143c2B3f233h3j3l3n0T3p013r3t3v3x2_3A3A3E0f3H3J2l3L2%2=013Q0#3k1J3m0W3o3q3s3u0.3!323$0k3E0k3*2$3K153.3O0~3;3?053^3`3W3|3Z2@3#3B0c3E0c451C473M3e1V3P0v3i3=3S3_3U3{3Y3~4k403B0!3E0!4q39483d3/4c4A4g3X3}3w4G3z3B0H3E0H4M4s494v4b4x3R3@3T3V4U4j3y3$0n3E0n4%3,4O3N4*3:4,4z4.4B4:4i4F4?3B0K3E0K4{2(4}4u2 504y4d4f4C4h4E4W580g0B3E0B5d3-4P4a5i4-4e4/4D4V3 4Y3C0Z130x0Z5v5f4Q515k5C5n5E4X3$0x3D045W5M4t5O5j4S5m4;574l3C2o5Y3)0l3I464|5#5y4R534T565p5,0x425Y445;3+5e5^4 5`5B545D4=5 4n5Y4p645?664)5h695l555o5F5V4J5Y4L6i4r5@6l3g5P5(6p5T5q0x4!5Y4$6w4N676m6B5{5)5}6r3B0x4^5Y4`6K4(5x686O6a5|6q5U6T5a5Y5c6Y6y6!6N5%6P6D6d4H3C5s5Y5u6/6k6;6A6?6%6Q6)5q0f5I04785!6z4w736o6c5+6`0f5X7k7c717e5A7g5S6_5G0f5.7v7n4~6=7q5R5*5~7j610f635=6x707z727B6b7s7i7u6f0f6h7J6L7d4+7f7C6R6*3A6t0f6v7W6Z7M7p52746^7R3$0f6H7^7y5g7N7:7r7D6S3A6V0f6X7,6:7.7Z7O6(6E5,0f6,8e7{5$8a758c7j6|0f6~867L7|7/5Q7P807%0k798y5v1M371B2|2,0*2f2;5y4V2{1S1J360T383K6j1J4V8R2B0r0*0~3s2%5V3S8Y8!765 2p2G0T8*8l5G5X457Y010(130.0P8T6M2r0j3E8~8^0%0P130W0#1i0T0J0Q937o0~12040A9e883:130r1a1%9k8s9g130,0d8T157K8W1l8)018#3d7@8(8Z9D8+7j8-2x8:7t9G2)5=8^91040C9W0C9r3/0M0*1302030k0B0D9(9*9,9)9+2Y0%0F0v0r201 0C320G0o2Y0C2V272^0@2V9o1$0T9-9+aa9/9.9x9Z9C9E2l419H9O7?3B429|9N9J8;ak9R9V9X8 238`042Y0y9c0%8T9Y940o132F9Z5y9h9j9zay4b9n9p0TaM4 9h0,afaQ3.ah0b8$4malas9Pa*aq2Ham7E5G6f3*9y3ba$9Iai0%3$6t5Ba%at4I9Ma:a,an0gb06i8^aA8|aW5h9U9Ya#9f3:96040`0Q1%9cbf2raObs3PaTa8bv9t049va!a`4Pa%a)0g6Hb1a|9K5G4!a/8/b7a=3$bJbbbkbhaxbj9l9#9%9:adabb%9=9@9_0C0`b.1bbq0Qa19`aca71%acb|b%bD8Sa{8*bH6VbKa;814^bPc67%c4649XaHbkaAaCaEaGaR3:aJbn2vbz01bubZ9s9m04b`aVct3/9h0Vcq0G0r135LczaN130maZ9za_c0bFbLbH6,c5bR815ac9cV7%cT64cO3,5#bG9F3B6|cU7$5q5scYc/5,c-bV9lbd3Ucqbhcq95132^0R0#108}cIaX13aPbE9l0%bx9qd75haY9wcNagcRc+5Ha+c?6`5Kb5bQdq8=798@bW3EbYdbcub#04b}9.acb+9^9`200%0Yd3d5b@b.b_aU0C0M0v0J0@b/0P4,200*ac0J2^b.0r0M0yd%9`d-d/0MdGb)aedkczc*aj6T8?3mb2a-3C3Dc=bM5V8?cdax8^0X5X030C1.0X0Q0Y0Y0Cd*20cxdR0Z0C990+0C0G0w2Ha59o2v2R1k0@1xdL0C2k0Q1o0N2deoaUb c(c19JbH0x5.c.e76T2oe6b35-1{ea9Wcldd04989a9c0b9o0Rcq9h0$ck94aKb;9b0Qe:0Ge=9zcf9l0v130Ee_bke+e-d/brdgbtd9c decydCcA9ue^f2e*e{bpe}e?fgfebwcweOfvbAcM6Ld|dmd~3C61eWe#60dtca6FfHe(f3cue+320J0F3w1 e byfo8^f504f7f!bkcBcCfz01cEcGf8c`13d#9df)dc130If;cu0v9U2@f}4QcneJ1ZfjcP9lcsfk5_fqb=e f1gbd8bB0mg25yaAf@gl689ngp5hf 9naFf_fRg42ldfghdhfugC3g9799fce~e;ftgjeP2(c)fEa~6Ta@e1bLfJ4ne!e30xa@fPclgn4xgsgGcwg+23gucwgw39fQg313g5gBg8cugag|4QgHe.gKf0gMbCd{fkd}gS3Cb0gVfM5 4JgZb80xba3Iceceg(f?g*gxh004f|hr5yg:g1hv68gzg6gMdag gcbne|e/gLf-digO9A0Ch95VbJhdcZ6FbO8.hedrbUhlhmh$fp04fTfV0zfXcxgMf,gFfw0rgM0mh:hFgqhth@g.0~f$f(g?clf/7a0!6vi2f#130gh~cvh.hL13h_eQf9grif04h^fhh|ilgkh7g hQ6Tc4hTdv5Vc8hXhU5 cch#e)bcg_0/cjhz6md1dXh+h-fyfCh8gR5VcTixeX3CcXiBiy6+e%3Ic%gPeRa}5Vc-iXfJc;i#iY0xc^9Scg8{c|f-c~f-d0040o2@0;2YhDioieh;bAfni8ij040M9b0=h5djiSitiU3B78dpiYjphhbSjodxc_cubXe)f-dEd^b(0DdJb-enhPdUj32w0Qd-0Yd:dSb%epdWdYb:0Cf@2HhNgQc2dn7kjqe#j(jt81j(avcldEced(b%jI1@d.jQj_d?2h0%d/2wj b@0@er2RjW0F3=fsisii8Xjn3AeVi:e37vfLiC7jeVjx9!9$aw9W0*0JeH0r0+3w0C1z0ydV2d0r2!1u2vkB2@0P0YjNe}2099dVjh0zj!i,a(j%fHkhb87Hkki$3AfOi`b!kqce0/3FdV2@1kjDackTcQj$fF7Uj)kigYi?j*g$iFg@8Keeeg3eej20jIep2Veretevex1za1eA0%eClk0CeFb.20eIeKeMjJfZjlkc9Bke7*k|kZhgk kihkkrl3h{fbe}gfgMjc3KlIiMhHfrhJh4iL2ri0icfagIkajacrgEh`lRj9l*ffbBlO3,lQg,bob=j7j0fih5k@kdk_ha7^lBju3AhWark$m1avhne`h)iOfW0TfYg{l;cllYlW23f+cDcF04cHjdf=04gomlaSipmsf~g0g=lPe*hBmhi+f*l)lxhsl@lLhKl%aYirmz3/g)f^mShGh?mw01hxmCmiaIg_gAg7mKcJ9iiolKlUggl-mm9umR4sfDl 7@iwhPgWkiiAm6jriElHhomuhqmWh{mYnagtmBlZmFm+mHg9mJnjfRh1gJlMilh6lwnmm m|joiWnvkl7ui!n3j*c#l2mai{n8mVmDmbhundlXnfmZ0%nhl_l%e+mMm;jjl}lynw3Ai/nzm7i=nDkii_lHh$iGjeh*memgnihOm-ihnumXh@n|n`h{nNm?bAm_m%bkmknO23i4mrnLnI0rd6oamxl,m,gio0h(nco4l(imonnMh}mZf$020z0y0DlZ13jg0JjimZaA3wjgici43Gkbnuiu0g8ym281oSj,8xjwl2n7ci0Qm$2(l=fwn?h,mfok66aQ0l8V8C8Q8E8N1B0y8Ho`2/2*0#1~o@0l8F1Ho15h2Y0G0b0P0#0(mf0W611t1veF0@jk8S1O3L2|3/0#0*0G1k2S0r1.kJf$1Hpqpspu2T0g100y2b040tjNo,dR9}9 1z1M3L1I0Ud+0RpL9{2VpOa0kAesdYk60#0p0p3wjPaH2d1k0R041akD0Xfjp:1Z040h0C0O98lo0Y0z0Y2Hk22Vp_2920p@jNp_kQ0Cp:fU200Semd+p_0Q0:4kd,0R2^0$kzkBqkjIqnqpqm1g1k2^0hpRp50u0zkzd.1/p02S1yqJ0*00p*p,1 b?058VmY8Vlp9|18kL0vdRb/a30Tquk-qX3vipq!9{0%q%2Nq*3m3u0zqD0TqFpn9yp40-1SpBpt0%pvpx95pz1Kr7pDpwa~pGpI0ed=lh2v2h1pej0WeBrhqG1K04rlj`kz3e0vrq0YrslkrheHdXb?0.0@fV0Qll0@0JozeJrp2kkF0Mqu1ad-9|0Y2lpt2@0@3urDrF2Rp1pkrvpp5y1Y1!a81)1+1-1l251?1^1`p62r2E2v2x130qr{1k8~8P9A658Uq;j#eS9F0k3CoT5Uske5lE7?so2p8viyssj/iH04bei~92j0bmd2d4ognUoqe+o.s2m@bBpl5@m{siajskkgn)e7sUk#sX3%7#s!knoZsyo#o%9Vclmnf-i47*i7oef4iaoCfxlvoqcBj8n ioo3olgDimicmUs`t2o(mjnQoicmm)hCilhEt3l?hInKtjsNtin}nbiRs}9u0,o6tasymvtdsKicm#ngtfmGsMbAtptHcvm:tmtqt4tJootstnfAtvn!sW8$skkXsWattZsZt$oRst8b9Pt%avi*hOhQskgUt#t-0gk~n,srt`t+8kt_l1tKc{ohoqi nVbmjLj5n_s.nltKsKtStOl.l:txjeoEoGmP9usPo/iTm|skhct^t}lDt|bSuvt 7=uBb9i(n6s*iJo$ics/l%oct69nu5o7f`s{tGud04otjeoptTorinl`myttt5ow9%ozoBnRoDkRuQ04oJn_o)0~oMu@tzs@nnu*uTmAgvtEaBm*sIu$nWtlv9uih=uhtKaYtVoHhptNs-mbu#ulf4tcv0g^v7tgupm.u)tMvdufl{nrvjnt2)o=1O8Dp38Nr3vM8E0/0;0?04.