Tp 1 : représentation des images, quantification et échantil
Télécharger PDFIntroduction au Traitement d'Images Numériques
Cette section a pour objectif de présenter les méthodes fondamentales du traitement d'images numériques. Nous explorerons la représentation des images, ainsi que les concepts clés de quantification et d'échantillonnage.
Dans le domaine du traitement d'images, des outils comme MATLAB sont couramment utilisés. MATLAB est un langage et un environnement de programmation qui excelle dans le calcul numérique, l'analyse de données et la visualisation. Sa structure matricielle native est particulièrement adaptée à la manipulation des images, qui sont elles-mêmes des matrices de pixels.
Interface de Commande et Affichage d'Images
Chargement et Affichage des Images avec MATLAB
MATLAB offre plusieurs fonctions pour afficher des images, chacune avec ses particularités :
imshow: Cette fonction est généralement préférée pour l'affichage d'images. Elle peut charger une image à partir d'un fichier (en appelant implicitementimread) ou afficher une matrice déjà présente dans l'espace de travail. L'avantage principal d'imshowest qu'elle gère automatiquement les types de données et les cartes de couleurs pour un affichage optimal.image: Affiche une matrice comme une image. Elle n'accepte pas directement un fichier image en paramètre. L'affichage repose sur les valeurs brutes de la matrice et sur la carte des couleurs (colormap) actuellement active dans MATLAB. Si la plage de valeurs de la matrice ne correspond pas à la carte des couleurs, l'image peut apparaître altérée.imagesc: Similaire àimage, cette fonction affiche également une matrice comme une image. La différence majeure est qu'imagesceffectue un redimensionnement automatique (scaling) des valeurs de la matrice avant l'affichage. Cela permet d'utiliser pleinement la plage dynamique de la carte des couleurs, souvent pour améliorer le contraste des images dont les valeurs sont concentrées dans une petite gamme.
Lecture et Manipulation d'Images
MATLAB est compatible avec une multitude de formats d'images, notamment JPEG, TIFF, BMP, PNG, HDF, PCX ou XWD. Pour traiter une image, il est impératif de la lire et de décoder son format afin de la transformer en une matrice de valeurs numériques, qui est la représentation interne de l'image dans MATLAB.
Une fois l'image lue, il est possible de récupérer et d'afficher des sous-parties de l'image, comme les premières lignes et colonnes, pour analyser des détails spécifiques. Les images peuvent également être exportées dans différents formats ou converties entre différents types de données (par exemple, de uint8 à double ou inversement) pour des opérations de traitement spécifiques. La commande whos permet d'inspecter les détails d'une variable image, comme sa taille, son type de données et sa consommation mémoire.
Pour l'affichage simultané de plusieurs images, la fonction subplot est très utile. Elle permet de créer une grille de sous-figures dans une même fenêtre, facilitant ainsi la comparaison visuelle de différentes images ou des étapes de traitement. Après usage, les figures peuvent être fermées individuellement ou collectivement avec la commande close.
Création de Scripts pour le Traitement d'Images
Automatisation avec les Fichiers Script
Pour organiser et automatiser une séquence d'instructions MATLAB, on utilise des fichiers script (fichiers .m). Un script est un ensemble de commandes enregistrées qui peuvent être exécutées dans l'ordre, reproduisant ainsi une suite d'opérations.
Les scripts sont essentiels pour les tâches répétitives ou pour documenter des flux de travail complexes. Par exemple, un script peut être utilisé pour charger plusieurs images (monochromes ou RVB), visualiser et comparer leurs histogrammes de couleurs (avec la fonction imhist), extraire les canaux de couleurs individuels d'une image RVB, et afficher les histogrammes de chaque canal dans une figure unique pour une analyse approfondie.
Il est même possible de recréer ou d'implémenter des fonctions existantes (comme imhist) dans un script pour mieux comprendre leur fonctionnement interne ou pour les personnaliser.
Échantillonnage et Quantification des Images
L'Échantillonnage Spatial
L'échantillonnage est le processus par lequel une image continue est transformée en une image discrète, représentée par un nombre fini de points, appelés pixels. Chaque pixel contient des informations sur la couleur ou l'intensité lumineuse à un emplacement spécifique.
La fréquence d'échantillonnage (Fe) est l'inverse de la période d'échantillonnage (Te), où Te représente la distance réelle entre deux pixels adjacents. Par exemple, si Te = 1 mm, cela signifie qu'un point est échantillonné tous les millimètres. Une fréquence d'échantillonnage élevée correspond à un plus grand nombre de pixels par unité de distance, ce qui résulte en une image plus détaillée.
- Isotropie : L'échantillonnage est dit isotrope si la fréquence est la même dans toutes les directions (horizontale et verticale).
- Anisotropie : L'échantillonnage est anisotrope si les fréquences d'échantillonnage diffèrent selon les directions.
Le sous-échantillonnage réduit le nombre de pixels dans une image, ce qui diminue sa résolution spatiale. Cela peut être réalisé en ne conservant qu'un pixel sur N dans l'image originale. Les effets du sous-échantillonnage incluent la perte de détails fins, l'apparition d'un effet de pixellisation (blocs visibles) et de crénelage (effets d'escalier sur les bords obliques), ainsi qu'une diminution générale de la clarté de l'image. Plus le facteur de sous-échantillonnage est élevé, plus ces effets sont prononcés.
La Quantification des Niveaux de Gris et de Couleurs
La quantification est le processus de discrétisation de la luminosité pour les images en niveaux de gris, ou de l'espace chromatique pour les images couleur. Elle consiste à attribuer à chaque pixel une valeur parmi un ensemble fini de niveaux.
Pour une image monochrome, la luminosité est généralement codée sur 8 bits, ce qui permet 28 = 256 niveaux de gris différents (de 0 à 255). Pour les images couleur RVB (Rouge, Vert, Bleu), chaque composante de couleur est souvent codée sur 8 bits. Cela signifie qu'une image couleur est codée sur 3 × 8 = 24 bits, permettant 224 = 16 777 216 couleurs distinctes, ce qui est généralement suffisant pour une perception réaliste.
La quantification à pas variable consiste à réduire le nombre de niveaux de gris ou de couleurs disponibles dans une image. Les effets d'une quantification trop agressive incluent l'apparition de "faux contours" ou de "bandes de couleur" (banding). Ce phénomène est particulièrement visible dans les dégradés doux où les transitions de couleurs ou de luminosité ne sont plus fluides mais apparaissent comme des paliers discrets.
Foire Aux Questions (FAQ)
Quelles sont les différences entre imshow, image et imagesc dans MATLAB ?
imshow est la fonction recommandée pour un affichage général, gérant automatiquement les types de données et les cartes de couleurs. image affiche la matrice avec la carte de couleurs courante, sans ajustement automatique, pouvant nécessiter une configuration manuelle pour un rendu correct. imagesc effectue un redimensionnement des valeurs de la matrice pour utiliser toute la plage de la carte de couleurs, souvent pour améliorer le contraste des images.
Qu'est-ce que l'échantillonnage et la quantification en traitement d'images ?
L'échantillonnage convertit une image continue en une grille discrète de pixels, définissant la résolution spatiale. La quantification discrétise les valeurs de luminosité ou de couleur de chaque pixel en un nombre fini de niveaux, définissant la profondeur de couleur ou de gris.
Quels sont les effets visuels d'un sous-échantillonnage ou d'une quantification trop faible ?
Un sous-échantillonnage excessif entraîne une perte de détails, une pixellisation visible et des effets de crénelage. Une quantification avec trop peu de niveaux de gris ou de couleurs provoque l'apparition de "faux contours" ou de "bandes de couleur" dans les zones de dégradés, car les transitions fluides sont remplacées par des paliers abrupts.