Visualisation

Explorer et visualiser des images

Bien que la plupart des images s'affichent correctement avec le premier logiciel venu, il peut arriver que le résultat ne soit pas celui attendu. De plus, pour certaines images particulières (images 3D, vidéos, images multispectrales...), ou bien si on veut examiner de très près les images (connaître la valeur en niveau de gris moyenne dans une région), les applications classiques de visualisation ne suffisent plus. Cette section a donc pour but de donner quelques clés pour éviter les mauvaises surprises.

3.1 Visualisation des niveaux de gris

3.1.1 Images en niveaux de gris

À l'échelle 1, les images en niveau de gris sont affichées en faisant correspondre chaque pixel de l'image à un pixel de l'écran. La convention générale est de représenter une faible valeur d'intensité par un pixel sombre, et une valeur élevée par un pixel clair (Figure 3.1).

Visualisation d'une image en niveaux de gris, ainsi que ses niveaux d'intensité
Visualisation d'une image en niveaux de gris, ainsi que ses niveaux d'intensité

Figure 3.1: Visualisation d'une image en niveaux de gris, ainsi que des valeurs d'intensité correspondantes, sous Matlab. 

3.1.2 Normalisation des intensités

Les images en niveaux de gris sont la plupart du temps stockées sur 256 niveaux de gris, allant de 0 (représenté par du noir) à 255(représenté par du blanc). Certains logiciels, permettent d'inspecter directement la valeurs d'intensité des niveaux de gris, comme c'est le cas sur la figure [fig:Visualisation-Valeur-Intensité].

Dans le cas d'images en niveaux de gris codées sur plus de niveaux, les niveaux sont ramenés entre 0 et 255 pour l'affichage. Si l'affichage n'est pas celui attendu, il se peut que le problème vienne de cette normalisation. Une solution est de convertir soi-même les niveaux de gris à l'aide d'opérations arithmétiques élémentaires (figure 3.2). Quelques méthodes de normalisation sont décrites dans la section [sec:Modification-Histogramme].

image de tissu végétal codée sur 16 bits
image de tissu végétal codée sur 16 bits
image de tissu végétal codée sur 16 bits après ajustement du contraste
image de tissu végétal après ajustement du contraste

Figure 3.2: Une image codée sur 2^12=4096 niveaux de gris, et sa représentation sous Matlab avant et après normalisation des valeurs entre 0 et 255.

3.1.3 Blanc sur noir ou noir sur blanc ?

Pour les images d'intensité codées en nombres à virgule flottante, le comportement par défaut des logiciels est de calculer les valeurs minimum et maximum, et de normaliser les valeurs par rapport à ces extrêmes. Parfois (par exemple sous Matlab), la normalisation se fait par défaut entre 0 et 1, ce qui peut ne pas correspondre au résultat attendu.

Pour les images binaires, on suit en général la même convention que pour les images en niveau de gris : la valeur 0 est représenté par du noir, et la valeur 1 par du blanc. Ce n'est pas toujours le cas : le logiciel ImageJ, par exemple, utilise par défaut la convention inverse.

Pour les documents imprimés, ou pour la présentation des résultats, on préfère souvent inverser la convention. Cela a plusieurs avantages : les structures fines sont plus visibles quand elles sont affichées en noir sur fond blanc, le résultat est (souvent) plus esthétique, et enfin cela évite de vider la cartouche d'encre de l'imprimante... Il convient donc d'être particulièrement attentif à la convention utilisée lorsque l'on travaille sur des images binaires ou d'intensité.

3.1.4 Agrandissement de l'affichage

Quand on agrandit l'affichage de l'image, on doit voir apparaître les pixels individuels. Ce n'est pas le cas de tous les logiciels de visualisation. Par exemple, en utilisant la fonction d'aperçu fournie avec Windows, un lissage est appliqué automatiquement, ce qui peut tromper l'utilisateur sur la résolution effective de l'image (voir la figure 3.3).

zoom sur une image avec Windows paint
zoom sur une image avec Windows paint
zoom sur une image avec IrfanView
zoom sur une image avec IrfanView

Figure 3.3: La même portion d'image agrandie avec l'aperçu des photos de Windows (à gauche), et IrfanView (à droite). Malgré l'aspect lisse de l'image de gauche, elle n'est pas de meilleure qualité que l'image de droite.

3.1.5 Palettes de couleurs (tables de correspondance)

Les palettes de couleurs, ou tables de correspondance (en anglais : Look-Up Table, abrégé en LUT) consistent à représenter chaque valeur de l'image non pas avec la valeur de gris correspondante, mais avec une couleur spécifique stockée dans une table. L'avantage est que certaines structures peuvent être mieux mises en évidence, du fait du nombre plus important de couleurs utilisé (Figure 3.3).

une coupe de tissu végétal affichée avec différentes palettes de couleurs
une coupe de tissu végétal affichée avec différentes palettes de couleurs

Figure 3.3 : Représentation d'une image en niveaux de  gris en utilisant différentes palettes de couleur. De gauche à droite et de haut en bas : niveaux de gris naturels, palettes 'jet', 'hsv' et 'hot' de Matlab.

Il faut cependant garder à l'esprit que l'image d'origine n'est pas modifiée : c'est uniquement sa représentation qui change.

Quelques palettes régulièrement utilisées :

  • hsv dégradé passant par le rouge, le vert, le bleu, puis de retour au rouge
  • jet dégradé allant du bleu foncé (couleur froide) au rouge foncé (couleur chaude), en passant par le vert (couleur neutre)
  • hot dégradé du noir au jaune
  • inversion dégradé de niveaux de gris allant du blanc au noir, ce qui permet de représenter l'image « en négatif »
  • bleu+gris+rouge dégradé de niveaux de gris, mais la valeur 0 est affichée en bleu, et la valeur 255 est affichée en rouge, afin de mettre en évidence les zones trop ou trop peu exposées

3.2 Profils d'intensité

Un outil interactif très intuitif pour visualiser les variations d'intensité dans une image est le profil des intensités. Il faut tout d'abord choisi un outil de sélection linéaire (segment, droite polygonale...), et tracer la région d'intérêt désirée. Le profil d'intensité permet de visualiser les variations d'intensité le long de la sélection (Figure 3.4).

Profils d'intensite et de couleur le long d'une droite
Profils d'intensité et de couleur le long d'une droite

Figure 3.4: Profils d'intensité sur une image en niveaux de gris, et sur une image couleur.

Une petite précaution est à prendre pour l'interprétation des valeurs : le profil est généralement calculé en interpolant les valeurs. On peut donc avoir des valeurs flottantes à partir d'images en niveaux de gris codés sur des entiers, ce qui peut être trompeur.

Pour des images couleurs, le comportement par défaut de certains logiciels est souvent d'afficher le profil d'intensité après conversion des couleurs. Pour ImageJ, le plugin « RGB Profile Plot » permet de pallier ce manque (Figure [fig:Profil-Intensite]).

3.3 Histogramme

L'histogramme d'une image est une application qui à chaque valeur de niveau de gris dans l'image associe le nombre de pixels ayant cette valeur. Pour une image en 256 niveaux de gris, le résultat de l'histogramme sera une liste de 256 valeurs.

une coupe de tissu végétal et histogramme des niveaux de gris
une coupe de tissu végétal et histogramme des niveaux de gris

Figure 3.6: Exemple d'image en niveau de gris représentant  des cellules végétales, et histogramme des niveaux de gris correspondant.

La figure 3.6 représente une image en niveaux de gris de coupe de tige de maïs (comprenant des cellules et des faisceaux de xylème et phloèmes), et l'histogramme qui lui correspond. Le pic le plus à gauche de l'histogramme correspond aux pixels du fond (de couleur noire). Les valeurs de pixels 200 à 250 correspondent aux structures claires, tandis que les valeurs centrales (autour de 50 à 100) représentent les parois des cellules.

L'histogramme est un outil rapide permettant de vérifier la qualité de l'image :

  • image globalement surexposée (trop claire) ou sous-exposée (trop sombre)
  • histogramme idéalement centré, et le plus étalé possible
  • présence ou absence de zones ayant un niveau de gris homogène

Quelques statistiques de base permettent de synthétiser les informations sur l'image : valeur moyenne de l'histogramme, position du mode (la valeur maximale), écart-type...

3.4 Histogramme d'une image couleur

Du fait de la nature multi-canale des images couleur, la représentation sous forme d'histogramme est plus compliquée. Une solution simple pour explorer la distribution des couleurs est de représenter l'histogramme des valeurs de chaque canal séparément (traitement marginal) (Fig. 3.7-B). L'inconvénient de ce type de représentation est que l'on perd l'information sur la corrélation des composantes.

coupe de tissu végétal coloré au FASGA, et histogrammes de chaque composante couleur
coupe de tissu végétal coloré au FASGA, et histogrammes de chaque composante couleur

Figure 3.7: Exemple d'image couleur représentant une coupe de tige de maïs colorée au FASGA, et histogramme des valeurs de chaque canal.

Afin de représenter les dépendances entre deux composantes colorimétriques, une solution est de passer par un histogramme conjoint, qui représente le nombre ou la fréquence des pixels pour chaque couple de valeurs dans deux composantes. La figure [fig:Histogramme-Image-Couleur-ND]A représente ainsi l'histogramme conjoint des canaux rouge et bleu pour l'image représentée sur la figure [fig:Histogramme-Image-Couleur]-A. On distingue plusieurs grappes de pixels de couleur proches, qui seraient plus difficiles à détecter sur un histogramme simple :

  • la partie centrale de l'histogramme (valeurs moyennes de rouge et de bleu) correspond aux pixels magenta sombre, situés principalement dans l'écorce,
  • le coin supérieur gauche de l'histogramme (valeurs élevées à la fois de bleu et de rouge) correspond aux pixels magenta clair, prépondérants dans le parenchyme,
  • la partie supérieure centrale de l'histogramme (valeurs élevées de bleu, moyennes de rouge) correspond aux pixels situés dans la zone bleue (en périphérie du parenchyme et autour des faisceaux).

Histogramme conjoint et histogramme 3D dans l'espace RGB d'une image couleur (coupe de tige de maïs colorée au FASGA)
Histogramme conjoint et histogramme 3D dans l'espace RGB d'une image couleur (coupe de tige de maïs colorée au FASGA)

Figure 3.8: Représentations multidimensionnelles de la distribution des couleurs dans l'image 3.7. A) histogramme conjoint des canaux rouge et bleu, B) représentation 3D de la distribution des couleurs dans l'espace RGB.

La démarche peut être poussée plus loin en calculant un histogramme 3D dans un espace colorimétrique donné, typiquement l'espace RGB (Figure 3.8). Avec une coloration appropriée, on retrouve intuitivement les colorations observables sur l'image d'origine. Par contre, l'exploitation de ce type de représentation nécessite d'utiliser des outils statistiques plus évolués (clustering, réduction de dimension...).

3.5 Calibration spatiale

À partir du moment où l'on veut mesurer des paramètres morphologiques (longueur, distance, surface...) dans des images, il est nécessaire de connaître la calibration spatiale de l'image. Heureusement, la plupart des logiciels de traitement permettent de calibrer les images en spécifiant leur résolution.

La méthode la plus simple est de fournir cette résolution manuellement, si elle est connue. L'autre solution est de choisir dans l'image un point de repère de longueur connue, de mesurer sa longueur en nombre de pixels, et d'effectuer la mise à l'échelle (figure [fig:Image-Calibree]).

Affichage d'une image après sa calibration spatiale sous ImageJ.
Affichage d'une image après sa calibration spatiale sous ImageJ. 

Figure 3.9 : Affichage d'une image après sa calibration sous ImageJ. La calibration s'est faite à l'aide de la barre d'échelle en bas à droite. La position du pixel est donnée en microns, et les valeurs de rouge, vert bleu correspondantes sont données dans la fenêtre principale.

3.6 Images 3D, 4D, 5D...

De plus en plus d'appareils d'acquisition produisent des images en 3 dimensions : IRM, tomographie, microscopie confocale... Les valeurs de l'image sont stockées dans des tableaux à 3 dimensions, et les éléments sont appelés des voxels (pour volume element).

Si les images sont acquises à des temps différents, on obtient des films, où le temps joue le rôle d'une troisième ou quatrième dimension. Pour les images hyperspectrales, on peut encore rajouter une dimension supplémentaire. On arrive donc à des images allant jusqu'à 5 dimensions, ce qui rend parfois leur exploration problématique.

3.6.1 Visualisation plan par plan

Le mode de visualisation le plus simple est de fixer les dimensions supérieures à la deuxième, et de représenter une « coupe 2D » de l'image. Le logiciel ImageJ permet ainsi de représenter une image 2D choisie dans une pile en faisant varier le canal ou la dimension en z (Figure 3.10).

Visualisation d'une image 3D par coupe, ou par isosurface
Visualisation d'une image 3D par coupe, ou par isosurface

Figure 3.10 : Représentation d'une image 3D en visualisant chaque coupe individuelle, ou en appliquant une reconstruction surfacique.

3.6.2 Représentation volumique

La reconstruction volumique montre l'image en perspective, en remplissant les voxels de l'image de manière plus ou moins dense en fonction de leur intensité. Il est ainsi possible de localiser les zones de l'image regroupant les voxels les plus lumineux.

3.6.3 Reconstruction surfacique

Pour des images bien contrastées et relativement peu bruitées, il est possible de fixer une valeur seuil, et de représenter la surface équivalente qui entoure tous les pixels d'intensité inférieure (ou extérieure) à ce niveau. On obtient une représentation sous forme de maillage surfacique, que l'on peut visualiser plus facilement en 3D, éventuellement en superposant un ensemble de coupes de l'image d'origine (Figure 3.10).

L'algorithme le plus souvent employé pour cette tâche est celui des « Marching Cubes », ou une de ses variantes.