B - Fonctionnement avec Python

Lorsque l’image est stockée, elle peut encore être traitée à l’aide d’algorithmes. Nous allons utiliser le langage de programmation Python afin de directement travailler sur les pixels d'une image.

Repérage des pixels dans une image

Pour travailler sur une image numérique, on agit sur ses pixels. Chaque pixel est repéré par ses coordonnées (i ; j), où :

  • i correspond à la colonne (axe horizontal),

  • j correspond à la ligne (axe vertical).

Par convention, le pixel (0 ; 0) se situe dans le coin supérieur gauche de l’image. Cette disposition simplifie le traitement informatique, car les images sont lues séquentiellement, ligne par ligne, depuis le haut.

Repérage des pixelsInformations[1]

Exemple :

  • Dans une image de 800 × 600 pixels, le pixel en haut à droite aura pour coordonnées (799 ; 0).

  • Le pixel en bas à gauche sera (0 ; 599).

Parcours de tous les pixels d’une image

Pour analyser ou modifier une image de manière systématique, il est souvent nécessaire de parcourir tous ses pixels un par un. En programmation, cela se fait à l’aide de boucles imbriquées. L'exemple ci-dessous est un exemple en Python :

1
# on parcourt les pixels sur la largeur de l’image
2
for i in range(largeur):
3
    # on parcourt les pixels sur la hauteur de l’image
4
    for j in range(hauteur):
5
        # on travaille sur le pixel de coordonnées (i,j)
6
        fonction(i,j)

Modification des pixels d’une image

En Python, le package PIL (Python Imaging Library), aussi connu sous le nom de Pillow, offre un ensemble complet de fonctions pour manipuler des images. Cette bibliothèque permet :

  • d'ouvrir et enregistrer des images dans différents formats (JPEG, PNG, GIF, etc.),

  • d'appliquer des transformations (redimensionnement, rotation, filtres),

  • de créer des images entièrement nouvelles.

1
from PIL import Image
2
3
# Créer une image de 9 pixels en blanc
4
im = Image.new("RGB", (3, 3) ,"RGB(255, 255, 255)")
5
6
# Obtenir la valeur RGB du pixel (0, 0)
7
(rouge, vert, bleu) = im.getpixel ((0, 0))
8
9
# Afficher la valeur RGB obtenue du pixel (0, 0)
10
print(rouge, vert, bleu)
11
12
# Attribuer une nouvelle valeur RGB (rouge) au pixel (0, 0)
13
rouge, vert, bleu = 255, 0, 0
14
im.putpixel((0, 0), (rouge, vert, bleu))
15
16
# Attribuer la couleur noire au pixel (2, 0)
17
im.putpixel((2, 0), (0, 0, 0))
18
19
# Sauvegarder puis afficher l’image
20
im.save("monimage9px.png")
21
im.show()
22
23
# Obtenir et afficher la liste de tous les pixels (ici 9)
24
print(list(im.getdata()))