CONCEPTION
D'UNE IMAGE NUMERIQUE

Mise en situation

L'image numérique affichée sur l'écran d'un ordinateur ou d'un téléphone portable se compose d’un ensemble de pixels. Chaque pixel est constitué de trois sous-pixels, de couleurs rouge, vert et bleu. Il est possible d’agir sur ces pixels au moyen de logiciels et donc de créer ou de modifier une image.

Hypothèses et données

Exemple de code

Pour créer une image numérique, nous utilisons le module Image de la bibliothèque PIL. Le code en Python ci-dessous génère une image de 8x8 pixels noirs, puis colorie les pixels de coordonnées (3;2), (4;5), (5;5) et (6;5) en blanc.

from PIL import Image
img=Image.new("RGB",(8,8))
rouge=255 ; vert=255 ; bleu=255
img.putpixel((3,2),(rouge,vert,bleu))
for x in range(4,7) :
  img.putpixel((x,5),(rouge,vert,bleu))
img.save("image.png")
img.show()

Compléments

Couleur d'un pixel

On peut s'assurer que les pixels générés sont noirs :

from PIL import Image
img=Image.new("RGB",(8,8))
p=img.getpixel((1,1))
print(p)

Affichage avec Matplotlib

Une image de dimensions minuscules peut être visualisée avec la bibliothèque Matplotlib, habituellement dédiée au tracé de courbes.

from PIL import Image
img=Image.new("RGB",(3,2))
img.putpixel((0,0),(255,0,0))
import matplotlib.pyplot as plt
plt.imshow(img)
plt.show()

Autres bibliothèques

Il existe plusieurs bibliothèques pour traiter les images en Python. Imageio, OpenCV et skimage en sont des exemples.

Travail demandé

Exercice n°1

Proposer un code en Python permettant de créer une image de 8x8 pixels avec un pixel rouge en (0;0), un pixel vert en (7;0), un pixel bleu en (0;7) et un pixel jaune en (7;7).

Exercice n°2

Proposer un code en Python permettant de créer une image de 8x8 pixels et représentant un T bleu.

Exercice n°3

Proposer un code en Python permettant de créer une image de 8x8 pixels avec tous les pixels jaunes.

Exercice n°4

Proposer un code en Python permettant de créer une image 8x8 pixels représentant un T bleu sur fond jaune, sauvegardée sous le nom "T.png" .

Exercice n°5

Proposer un code en Python qui ouvre une image et en double les dimensions. On prendra comme modèle l'image produite lors de l'exercice n°4.

from PIL import Image
img=Image.open("T.png")
...
for x in range(0,img.size[0]) :
  for y in range(0,img.size[1]) :
...