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 = 255x_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é. (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 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 : 10/10

.128013fe)6i1p3m_:Svk-(q5rtgxê=swcd;,èPo/]haR2n bl0éj[948uy7I050C0c0u0L0f0R0z0P0B0R0L0z0z0y010u0f0h010406050z0Z0j0j0L0t0!040m0H0R0Z0`0H0O0P020L0j0h0D0P0M0c140t0r0Z0c0z050I111315170 0h04051C1v1F0I1C0 0C0f0n0/0;0?0^0K0f0v0K0R1T0K0u0}050*0Q0R0c1O0=0@011S1U1W1U0u1$1(1!0u0t1D0u0K0/1a0z0h0L0O0^0N011*1Q010b0,0c0O1i0c1!2022271,2a1(2d0j2f040a0P0G0t0H0h0H0z0f1d1f0(1~0t0t0c0B2A1v2h0O1D0I1|2M1_1{1`1#0C2j0^1W0O2c2x1!1L1N0:1+2W0f2Y0O0H2$1!0h2F1D2K2M2@10211f2(282-0t140R0}0g2J2{0~2`2i2}1,2 310}0N3522372K2V013c0L32040i3g2L0 3j3a0^3m3o0X3r3i2{3k3x0}0s3A3t3C3v3l0H303n0}0e3H382|1P3b3M3d040#3R3u3U3w3W3O040Y3!3J3$3L3N3o0W3A1G2=1v2$2P0C1{2U3K0B2.2p0%1M1D2;0c2?363?400(48393.0o0}0(0b3?3#2)010A0}0P4k3-4m0O0b0}2Y0v0L0`4j1w494l280|040q4r4e4t0}0f140v0c4J3T4m4G0d0l3,4K284o040P4$4q4C3h3S3k0z0C0}02030i0W0D4:4=4@4;4?2F0O0n0H0f1)1(0P0O0T4y4A0P2C0R4^4?4N0L4P0P0z0H0Z0.0;0P0b3W1)0C5c0D0Z2Y0P1W0z0u5q520f5y1t5s5F4{0D3H4%4q4E1,0B0g0}030P1e0/0t0T0T0P5u1)5e5g2C0S0P0L0Z0w0P0j0x2o0.1L2o0O2y1e0.1r521)210t1i0F1_5!4O4Q4)3s5K4+3K0O0}0K5*5z0Z0t0k4N0v4R3k4G0E3A5L4s2~0}0;0t4P6g6i0j6k664#693.0H0}0y6p6D4L046d1c0c6g6l3K4G4I6B6J6s045#652_5M0^4U6o6B6q4Y3b6t156w0t6Q3.6S6;6K6Y6@4F0}0d5J4%6V6,042-0Z0n0c0R1(6y5f6Z366*4S286F046H6)706$0}0V0V6`1,0j0f0}0S6I6#014g045o6:7j7w6b040U7v6r1,0H4!2+7H6+3w0Q0}5 0O4P7p7l4H7V3l6-6v6O6h6j7Y4U0J7N7e1,7y7A7,3D4M7;3K7K4M0O7@3.0O7Q047S7U6U7w6?837I3w6c6e7$6y6A6!87017*6~4$7k7x0}7:7C8f7E0f7|4m7_6X7{8o7O3l7 817b4*840}6T8e8y7E6M6f7%6z7)6|4W6B065K687w7/3M8s6W7G8x7-0^8u7M8#3D8A22828H8$8g8F7Y7E6u6/8c8O044V8i8T8U8p4w5j75770c798.4D8f4G7o868I7?9d8:4G0J9c8/7=7F8{7+8*7^6G8Y7q7s040N0s3G9q6E0}0p9t886X648{9k999e6X9o9J8D919n9g6m0}9p2@8S6 8V7R0)6g8w2@7d9m7394786_8R1v4b473@9=0I3`1v0u3|9`2S2N0L1%9@3`1B4d8:2F0j0k0b0L0o960K0i0}1n1p5{0.8Q2_1I371C0$0R0P1t0u0P2w0?0fa1591)405@1_0Z0f2F5w0L5w5C5zav151~1j5V0K2c5^1f8Q1J432%3.1.1V1X1Za53k2l2c2e0}2r0m0B0t0{au0G0!1|1e3?46a52^499;a)3K7y4i7Y4!4(9l6a4v720c570f4Bb96=8=9S6a4M9Hbkbi8|al369X8j9Z809#0t9%7c8k9b9O2L8k7r3e9y9E017g9D9A6^bnbh4T7m8?9fbQ6{049jbT9RbV1,9ibJ8W7B9(8k7E8!b+7w8(bz3h9)6a8,7T8CbE8E7Xbo6K8^7$8{8G9K8:8qbPc59T8|0d9VbAbv8nb/9Q8rbN7f7Lb=2Lb@7}b_989P8y85b#9F8Kc2b bWc4ctc6bm7a8{0dcc3R0Ib19?2Ma33_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 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 : 10/10

.128013fe)à6i1p3m_:Svk(q5rtgx.ê=swcd;,èPo/]haR2nAE bl0éj[948uy7050D0c0u0M0g0U0A0S0C0U0M0A0A0z010u0g0i010406050A0$0k0k0M0t0%040n0I0U0$0|0I0P0S020M0k0i0E0S0N0c160t0r0$0c0A050J13151719110i04051E1x1H0J1E110D0g0o0;0?0^0`0L0g0v0L0U1V0L0u0 050,0T0U0c1Q0@0_011U1W1Y1W0u1(1*1$0u0t1F0u0L0;1c0A0i0M0P0`0O011,1S010b0.0c0P1k0c1$2224291.2c1*2f0k2h040a0S0H0t0I0i0I0A0g1f1h0*200t0t0c0C2C1x2j0P1F0J1~2O1{1}1|1%0D2l0`1Y0P2e2z1$1N1P0=1-2Y0g2!0P0I2(1$0i2H1F2M2O2_12231h2*2a2/0t160U0 0S0h2L2}102|2k2 1.3133350O38243a2M2X013f0M34040S0j3j2N113m3d0`3p3r0S0!3v3l2}3n3B350s3F3x3H3z3o0I323q350f3M3b2~1R3e3R3g3s0(3W3y3Z3A3#3T3s0#3)3O3+3Q3S3C0Z3;3c3?3J040h0V3{3Y2+3@3$0h371y393N3|443~0h3i493k4b43303-3r0h3u4h3w3X3I4m0 0h3E4q3G4c4l3^4v3L4y1I2@1x2(2R0D1}2W3P0C2:2r0)1O1F2?0c2^393F054P0*4X4A1.0p0 0*0b4Z3*440B354.3=4d0b0 0T2-0-2H4?4(0`0~040q4 4k3e0 0g160v0c553n520F3F0S4s3P0P0 0A0c0$0.5d3P520d0m423n4;3s0S5A5r3?0A0D0 02030j0Z0E5H5J5L5I5K2H0P0o0I0g1+0$2!0S590M5b0S4{2f0t0g0A0W1+2E0U5M5K5!5$0A0I0$0:0?0S0b3#5c4y4j3n5E355A0S0D5;0E5X1+1Y0A0u5.6c5+6f0:4P0P6f2f6m671v0S0V0S2A0S5|0o3q5o0t5w3P645z5A0D0$0S0i0g0w0c0U0S1v0u6u1{0g2J1q2e6R2-0b0W5*6A1+0M6I5n5p0U6C5D5F6F6P6R0h6u2-1g696{5P0E3M665i4/2a0C0h0 030S1g0;0t5-0S6b5Z5a6g6s0S6)0w0S0k0y2q0:1N2q0P2A1g0:1t6c1+230t1k0G1{1+5?602_06705j3}0 0L6)6f0$0t0l590v5C445f5h7L4d0 0?0t5b7R7T0k7V4y714@2a0I0 0z7Z7257047O1e6A7W2a52544F7_3A587g7 1.5t5g7.7!307$177)6B837:890 822{843o865#7H4Y8p5t6 668d7`2/0$0o6N1*7+8s7^8k0`7=047@8c8v0 0Y0Y880`0k0g0 418O8J014*045~8i2_7/508q040X8I8,0I5y2-8:563A0T0 7B0P5b8T0181905l047%8h7+7-8o8!5t0K8^3n8$8(9e5k589i3?8=580P9l4d8{048}8 8j8,929w8_8-7|7Q7S7U909c8x5B8p9g3R9q8e040g9N1.9n9P9p8Z8,0P9s9u8t3k8z518m937N7P6A989G0 5u9I708+9A9L8)399@3I0 8/9W9A9T8@a03I9Z249v9a9x9)9z9}958g9-9Fac5s9:5v619?an9|3P8$0g4-a49j9P87ai3?528Say7#9P9/040KaBa99A949 aJ5e0 9dau9m5G0U0u6~aRaD6+5qaX800 al7Iaoa*ap7M048B8D0U8F7GaFaI8u8!949QaCa$aGa^9$8paLaFaQ8*9%018L8Nb68p8V8X5h0S7Ja+9J8!8$6N5naFa(4abianb794a/8E0c8Ga8a_aa04b02Nbt9ka}8la 9*8.b49R8K7?bN01bd3 9=b78$2H0u7R9Vbba`0 bva;bxa?611x4#4W4Gb/0J4J1x0u4Lb@2U2P0M1)b;4J1D4%9A2H0k0l0b0M0pbx0L0j0 1p1r7x0:bp9$1K3a1E0R1h0i1d7q6c0M207t1{0$2J0g797A201l7b0L2e7u0P0F78co5o6R1e0.5+0c0t7d1h2x6#0M9D0S6f0t2f0g2H6J5_cS7e8D0tcH7daU7BcC236V0AcJ165+0S0P0W240k5U7tc?cEcG0gb~ch1I3a2(3n1:1X1Z1#c23n2n2e2g0 2t0n0C5*0i6R0H0%1~1g4Z4Vc22`4Yb.diaq4+0cataN3P5y5ibH3A4_045(4}9#bE8P53bKb+dJaz0 8bb#9X5m5oa!dZ7XakbU9K8|0+bZbQaAbDdE3?bS8Yd%9^58dI9{bFaw8HdN918QdXb4d_e3aMbA9A52b5e28p8L02aUaWd~adaZ6-a#4)0 bmdT3sb7bS48eodF8%9Mes85bLeFb88?b!eia`a68~ewb79yd,9O967~e6eSeeaddYeZaj040d0deh3ka,449_bQa{bQa2eLe,bteObzb19babeT7`9CeWe 9(dWe6a{axf3e7e(e*3W0JdDb:2Oc01G040Q1@6Xcz1h0u5_6f5~5+cJ0D245{6r0T1g2!0:2?cX0gcg6q6J2w0v7B1A2CcJ0.6P6e0S2H4P1A0P0D0WfI1Y8Vc!0S0e0S0f5Zcv0tcx2CfD176w1V2!0x0S0Q6I0*0U0ecJ1*202E0icR2W2ef?2A4{1Y0u0W0xda11b=0+0-0/04.

Dessin original

Un dessin va s'afficher...

Dessin binaire

Un dessin va s'afficher...