Traitement d’images (partie 1: L’image numérique)

Dans cet article nous allons voir et surtout comprendre comment sont stockées les images sur ordinateur afin de mieux les manipuler par la suite. Cet article est le premier d’une série qui nous permettra d’aborder le traitement des images de manière générale mais aussi par la suite la place de l’Intelligence artificielle et tout particulièrement du Deep Learning dans cette discipline qui fait partie d’un ensemble que l’on nomme la vision par ordinateur.

Alors commençons notre série sur la manipulation des images par le début, à savoir comment sont elles stockées.

Qu’est-ce qu’une image ?

Et si je vous dit qu’une image est une matrice … partirez-vous en courant ? J’espère que non, en attendant c’est partiellement vrai dans la mesure où si une image n’est pas une matrice dans l’absolu c’est en tout cas comme cela qu’on la représente et qu’on la manipule dans notre ère digitale. Ne vous inquiétez pas je ne vais pas vous faire un cours d’algèbre – en tout cas ce n’est pas encore nécessaire – mais sachez que finalement on représente une image comme un tableau (ou matrice) de pixels.

Mais alors, qu’est-ce qu’un pixel ?

Et bien un pixel est tout simplement un point … Une image est donc un ensemble de point disposés sur deux dimensions (matrice de dimension 2). Plutôt logique jusque là non ? D’ailleurs regardez de plus près, ou plutôt zoomez en grand l’une de vos photos numériques et vous verrez qu’à un moment donné la qualité de l’image va se dégrader pour vous dévoiler un ensemble de petits carrés colorés … ce sont nos pixels !

Noir et blanc, Niveaux de gris et couleur

Une image n’est pas souvent aussi simple qu’une simple table (ou matrice à deux dimensions) car si chaque pixel trouve sa place logique dans une matrice de dimension 2 (tout comme des coordonnées dans une carte en fin de compte), comment va-t-on stocker la couleur et l’intensité des pixels ? Nous allons donc devoir distinguer 3 possibilités selon les images:

  • Noir et blanc
  • Niveau de gris
  • Couleurs

Le Noir et Blanc

C’est le format le plus simple pour comprendre comment sont stockées nos images. En effet qui dit noir ou blanc dit binaire … donc 0 ou 1 ! et bien dans le cas d’une image noir et blanche la valeur des pixels est une valeur binaire (0 ou 1).

  • Une valeur de 0 représentera un carré (pixel) noir
  • Une valeur de 1 (ou > 0) représentera un carré (pixel) blanc

Une image noir et blanc n’est donc ni plus ni moins qu’un « échiquier » non régulier et sa matrice et une matrice de dimension 2 n’ayant que des valeurs 0 et 1 :

Les images en niveaux de gris

Le images en niveaux de gris vont bien sur amener de la nuance dans le rendu. Cette nuance va être amenée par la valeur des pixels qui ne sera plus binaire mais qui évoluera dans une fourchette (par exemple de 0 a 255). Plus la valeur de pixel sera proche de zéro plus le pixel sera sombre, et inversement plus cette valeur sera proche de 255 plus il sera clair.

La matrice qui représente ce type d’image est donc toujours une matrice de dimension 2 mais avec des valeurs oscillantes (par exemple entre 0 et 255).

Les images en couleur

Gérer des couleurs demande bien sur plus d’informations que gérer des niveaux de gris. Une couleur, se définit par ses 3 couleurs primaires. Avec ces trois couleurs de base il est possible de définir quasiment toutes les couleurs. En traitement de l’image on ne parle pas de couleurs primaires mais plutot on décrit une couleur par la superposition de 3 canaux (en général Rouge, Vert et Bleu).

Un pixel est donc définit par une combinaison de rouge, vert et bleu (RVB ou RGB en anglais). Celà signifie que pour chaque pixel il faudra un tuple RGB:

Voici quelques exemples de couleurs :

  • Bleu (0, 0, 255)
  • Rouge (255, 0, 0)
  • Vert (0, 255, 0)
  • Jaune (255, 255, 0)
  • Blanc (255, 255, 255)
  • Noir (0, 0, 0)

Bien souvent dans les logiciels de retouches d’images ou autre (comme le web/html) on retrouve plutôt la représentation hexadécimale de ces canaux : par exemple le bleu (0,0,255) devient #0000FF.

Celà étant dit il faut maintenant placer chaque pixel dans la matrice image (qui correspond comme nous l’avons vu à une matrice de dimension 2). C’est en fait comme si on ajoutait une nouvelle dimension :

Une image en couleur se réprésente donc sous la forme d’une matrice à 3 dimensions

  • Abscisse (Coordonnée x)
  • Ordonnée (Coordonnéey)
  • Canal couleur (de 0 à 2 car 3 canaux R, V, B)

Note: Pour ce qui est de la troisième dimension il y a des variantes. J’ai pris le modèle RGB qui est le plus fréquent mais on peut trouver aussi d’autres modes de superposition des canaux (BGR dans OpenCV par exemple, HSV/TSV, etc.). Il est aussi possible de jouer sur la résolution des pixel, etc.

Voilà pour les bases concernant le stockage d’images numériques. Dans l’article suivant nous verrons comment les histogrammes nous aiderons à mieux analyser ces images ce qui nous permettra de d’aborder les premières techniques de retouche.

Partager cet article

9 Replies to “Traitement d’images (partie 1: L’image numérique)”

  1. Merci.pour cette explication. Pouvez vous m’expliquer l’estimation des masses de fonctions pour la classification par la théorie de Dempster sehafer ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.