Les images et le traitement d'images
Avant de pouvoir explorer le traitement d’images et d’autres fonctionnalités de vision par ordinateur, il est utile de prendre en compte ce qu’une image est dans le contexte des données d’un programme informatique.
Images sous forme de tableaux de pixels
Sur un ordinateur, une image est un tableau de valeurs numériques pixels. Par exemple, considérez le tableau suivant :
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Le tableau se compose de sept lignes et de sept colonnes, représentant les valeurs de pixels d’une image de 7 x 7 pixels (appelée résolution de l’image). Chaque pixel a une valeur comprise entre 0 (noir) et 255 (blanc) ; avec des valeurs entre ces limites représentant des nuances de gris. L’image représentée par ce tableau ressemble à l’image suivante (agrandie) :
Le tableau de valeurs de pixels pour cette image est à deux dimensions (représentant des lignes et des colonnes, ou x et coordonnées y) et définit un rectangle unique de valeurs de pixels. Une seule couche de valeurs de pixels comme celle-ci représente une image de nuances de gris. En réalité, la plupart des images numériques sont multidimensionnelles et se composent de trois couches (appelées canaux) qui représentent des teintes de couleurs rouges, vertes et bleues (RVB). Par exemple, nous pouvons représenter une image de couleur en définissant trois canaux de valeurs de pixels qui créent la même forme carrée que l’exemple précédent de nuances de gris :
Red:
150 150 150 150 150 150 150
150 150 150 150 150 150 150
150 150 255 255 255 150 150
150 150 255 255 255 150 150
150 150 255 255 255 150 150
150 150 150 150 150 150 150
150 150 150 150 150 150 150
Green:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Blue:
255 255 255 255 255 255 255
255 255 255 255 255 255 255
255 255 0 0 0 255 255
255 255 0 0 0 255 255
255 255 0 0 0 255 255
255 255 255 255 255 255 255
255 255 255 255 255 255 255
Voici l’image obtenue :
Les carrés violets sont représentés par la combinaison :
Red: 150
Green: 0
Blue: 255
Les carrés jaunes au centre sont représentés par la combinaison :
Red: 255
Green: 255
Blue: 0
Utilisation de filtres pour traiter des images
Une façon courante d’effectuer des tâches de traitement d’images consiste à appliquer filtres qui modifient les valeurs de pixel de l’image pour créer un effet visuel. Un filtre est défini par un ou plusieurs tableaux de valeurs de pixels, appelés noyaux de filtre. Par exemple, vous pouvez définir un filtre avec un noyau 3x3, comme illustré dans cet exemple :
-1 -1 -1
-1 8 -1
-1 -1 -1
Le noyau est ensuite convolué à travers l’image, en calculant une somme pondérée pour chaque patch de pixels de 3x3 et en affectant le résultat à une nouvelle image. Il est plus facile de comprendre le fonctionnement du filtrage en explorant un exemple pas à pas.
Commençons par l’image de nuances de gris que nous avons explorée précédemment :
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Tout d’abord, nous appliquons le noyau de filtre au patch supérieur gauche de l’image, en multipliant chaque valeur de pixel par la valeur de poids correspondante dans le noyau et en ajoutant les résultats :
(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255
Le résultat (-255) devient la première valeur d’un nouveau tableau. Ensuite, nous allons déplacer le noyau de filtre le long d’un pixel vers la droite et répéter l’opération :
(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510
Là encore, le résultat est ajouté au nouveau tableau, qui contient maintenant deux valeurs :
-255 -510
Le processus est répété jusqu’à ce que le filtre ait été impliqué dans l’ensemble de l’image, comme illustré dans cette animation :
Le filtre est impliqué dans l’image, en calculant un nouveau tableau de valeurs. Certaines des valeurs peuvent être en dehors de la plage de valeurs de 0 à 255 pixels, de sorte que les valeurs sont ajustées pour s’adapter à cette plage. En raison de la forme du filtre, le bord extérieur des pixels n’est pas calculé. Par conséquent, une valeur de remplissage (généralement 0) est appliquée. Le tableau résultant représente une nouvelle image dans laquelle le filtre a transformé l’image d’origine. Dans ce cas, le filtre a eu l’effet de mettre en surbrillance les bords des formes dans l’image.
Pour voir plus clairement l’effet du filtre, voici un exemple de même filtre appliqué à une image réelle :
Image d’origine | Image filtrée |
---|---|
![]() |
![]() |
Étant donné que le filtre est impliqué dans l’image, ce type de manipulation d’image est souvent appelé filtrage convolutionnel. Le filtre utilisé dans cet exemple est un type particulier de filtre (appelé filtre laplace) qui met en surbrillance les bords des objets d’une image. Il existe de nombreux autres types de filtres que vous pouvez utiliser pour créer un flou, une netteté, une inversion de couleur et d’autres effets.