Tp 2 : traitements de bases sur les images -Traitement d'ima
Télécharger PDFTraitement d'Images Numériques : TP 2 - Traitements de Base
Ce document explore les traitements de base sur les images numériques, un sujet essentiel pour les étudiants en Master (Sciences de l'Image et Données Interactives - SIDI) et (Électronique, Systèmes et Énergie - ESE). Les exercices décrits ci-dessous sont conçus pour être implémentés via des scripts, permettant une compréhension pratique des concepts fondamentaux du traitement d'images.
Transformation du Format d'Image
Exercice : Conversion au format Double
L'une des premières étapes dans le traitement d'images est souvent la conversion de leur format pour une manipulation optimisée.
- Lisez l'image « Isabel.pmp » et transformez-la au format double par la commande « double ».
Explication : Le format "double" est un format à virgule flottante qui offre une meilleure précision pour les valeurs de pixels. Cette précision est cruciale pour des calculs complexes et pour minimiser les erreurs d'arrondi lors des traitements algorithmiques.
Transformations Ponctuelles
Les transformations ponctuelles modifient l'intensité de chaque pixel indépendamment de ses voisins, souvent à l'aide d'une fonction mathématique ou d'une table de correspondance (LUT).
Inversion d'Image
L'inversion d'image permet de créer une image négative où les couleurs sont inversées.
- Écrivez un script qui inverse l'image « Isabel.pmp » et l'affiche en utilisant une table de correspondance (LOOK UP TABLE - LUT).
Explication : Une LUT associe chaque valeur d'intensité originale à une nouvelle valeur d'intensité. Pour une inversion, par exemple, un pixel de valeur 0 (noir) deviendra 255 (blanc) et inversement pour une image sur 8 bits.
Seuillage (Binarisation)
Le seuillage est une technique fondamentale pour convertir une image en niveaux de gris en une image binaire, simplifiant ainsi l'analyse en séparant un objet de son fond.
- Écrivez un script qui permet de binariser l'image « Isabel.pmp » et de l'afficher, en utilisant comme seuil de binarisation S. Affichez l'histogramme de l'image (fonction
imhist) afin de choisir le seuil S de manière pertinente. - Testez la fonction « im2bw » sur l'image « Isabel.pmp ». Observez et analysez les différences entre les résultats de votre script manuel et cette fonction prédéfinie.
- Utilisez le seuillage global et le seuillage local pour obtenir une image binaire. Comparez les résultats et identifiez les scénarios où l'un est plus avantageux que l'autre.
Explication : L'histogramme est un outil visuel essentiel pour déterminer un seuil adéquat en montrant la distribution des intensités de pixels. Le seuillage global applique un seuil unique à toute l'image, tandis que le seuillage local adapte le seuil en fonction des caractéristiques des régions de l'image, ce qui est particulièrement utile pour les images avec un éclairage non uniforme.
Recadrage d'Image
Le recadrage (ou cropping) est une opération qui consiste à sélectionner une zone d'intérêt spécifique d'une image en supprimant les parties indésirables ou superflues.
- Écrivez un script qui permet le recadrage de l'image « Clown.pmp » et l'affiche en utilisant la formule vue en cours et une table de correspondance (LOOK UP TABLE - LUT).
Explication : Le recadrage permet de modifier la composition de l'image, de réduire sa taille en pixels et de se concentrer sur des éléments spécifiques. La LUT, bien que non directement liée au recadrage lui-même, peut être utilisée pour ajuster la visualisation des niveaux de gris de l'image recadrée.
Égalisation de l'Histogramme
L'égalisation d'histogramme est une technique avancée pour améliorer le contraste global d'une image, en redistribuant les intensités de pixels de manière plus uniforme sur toute la plage dynamique disponible.
Utilisation de la fonction prédéfinie
- Écrivez un script qui permet d’égaliser l’histogramme de l'image « linasousexposee.jpg » en utilisant la fonction prédéfinie
histeq(im, nbNiveauxGris). Cette fonction prend en paramètres l'image à égaliser et le nombre de niveaux de gris souhaités, et renvoie l'image égalisée. - Affichez l'image et son histogramme avant et après l'égalisation pour observer l'amélioration du contraste.
Reprogrammation de l'égalisation
Pour une compréhension plus approfondie du mécanisme, reprogrammez le processus d'égalisation de l'histogramme manuellement en suivant les étapes suivantes :
- Calculez et affichez l'histogramme de l'image « linaSousExposee.jpg ».
- Normalisez l'histogramme précédent pour obtenir une distribution de probabilité.
- Calculez l'histogramme cumulé (cumulative distribution function - CDF).
- Transformez les niveaux de gris de l'image en appliquant la formule d'égalisation d'histogramme que vous avez étudiée en cours, basée sur la CDF normalisée.
- Affichez l'image et son histogramme avant et après l'égalisation réalisée par votre script.
- Que constatez-vous sur l'image et la distribution de ses pixels après l'égalisation manuelle ?
Explication : L'égalisation d'histogramme vise à étirer la plage dynamique des intensités en rendant l'histogramme le plus plat possible. La reprogrammation manuelle permet de comprendre que le processus implique de mapper les anciennes intensités aux nouvelles en utilisant la fonction de répartition cumulative normalisée.
Correction Photométrique (Correction Gamma)
La correction photométrique, souvent appelée correction gamma, est un moyen efficace d'ajuster la luminosité et le contraste d'une image en modifiant la relation entre les valeurs de pixel d'entrée et de sortie par une fonction de puissance.
- Écrivez un script qui permet de :
- Lire et d’afficher l'image « linaSousExposee.jpg ».
- Corriger l'image « linaSousExposee.jpg » en appliquant différentes valeurs de gamma, par exemple : 0.4, 0.6, 0.8, 1.0, 1.2, 1.4.
- Afficher l'image originale et toutes les images corrigées (selon chaque valeur de gamma) dans la même figure pour faciliter la comparaison.
- Que constatez-vous sur la luminosité et le contraste de l'image en fonction des différentes valeurs de gamma appliquées ?
Explication : La correction gamma utilise une fonction de puissance (valeur_sortie = valeur_entrée ^ gamma). Une valeur de gamma inférieure à 1.0 éclaircit les tons moyens et les ombres, tandis qu'une valeur supérieure à 1.0 les assombrit, permettant ainsi d'affiner la perception des détails dans les zones claires ou sombres.
Opérations Arithmétiques et Logiques
Les opérations arithmétiques et logiques sur les images sont des outils fondamentaux pour le traitement d'images, permettant des manipulations complexes et la combinaison de différentes images ou masques.
Opérations Arithmétiques
- Préparez des images pertinentes pour réaliser toutes les opérations arithmétiques de base.
- Écrivez un script qui permet de réaliser l'addition, la soustraction, la multiplication (par un ratio/scalaire et par une autre image) et la division sur ces images.
- Ensuite, expliquez l'effet de chaque opération arithmétique sur les images de test que vous avez utilisées.
Explication :
- Addition : Utilisée pour fusionner des images, superposer des objets, ou ajouter du bruit pour des simulations.
- Soustraction : Permet de détecter les différences entre deux images (par exemple, détection de mouvement ou d'objets modifiés) ou de supprimer un fond statique.
- Multiplication (par scalaire) : Ajuste la luminosité globale de l'image.
- Multiplication (par image) : Peut servir à appliquer des masques complexes ou à moduler l'intensité de certaines régions.
- Division : Moins courante, mais peut être utilisée pour la correction d'illumination non uniforme ou pour des ratios d'images.
Opérations Logiques
- De la même manière, préparez des images pertinentes pour illustrer les opérations logiques (ET, OU, et NON).
- Écrivez un script réalisant ces opérations.
- Expliquez l'effet de chaque opération logique sur les images de test.
Explication : Les opérations logiques sont généralement appliquées sur des images binaires (masques) pour combiner ou modifier des régions d'intérêt.
- ET (AND) : Conserve les pixels qui sont "vrais" (généralement blancs ou 1) dans les deux images à la fois (intersection des régions). Utile pour isoler des régions communes.
- OU (OR) : Conserve les pixels qui sont "vrais" dans au moins une des deux images (union des régions). Utile pour combiner plusieurs masques.
- NON (NOT) : Inverse les valeurs de pixel d'une image (le blanc devient noir, et vice-versa). Utilisé pour créer un complément de masque ou inverser une sélection.
Foire Aux Questions (FAQ) sur le Traitement d'Images
- Qu'est-ce qu'une table de correspondance (LUT) en traitement d'images ?
- Une LUT est un tableau qui associe chaque valeur d'intensité de pixel d'entrée à une valeur d'intensité de pixel de sortie. Elle est utilisée pour appliquer rapidement des transformations ponctuelles (comme l'inversion ou la correction de contraste) sans avoir à recalculer chaque pixel individuellement, offrant ainsi une grande efficacité.
- Pourquoi est-il important d'égaliser l'histogramme d'une image ?
- L'égalisation de l'histogramme est cruciale pour améliorer le contraste des images, surtout celles qui sont sous-exposées, sur-exposées ou qui manquent de dynamique. Elle redistribue les intensités de pixels de manière à utiliser toute la plage dynamique disponible, rendant les détails plus visibles et améliorant la qualité visuelle globale de l'image.
- Quelle est la différence entre le seuillage global et local ?
- Le seuillage global applique un seul et même seuil à l'ensemble de l'image pour la binariser, ce qui est simple mais peut être inefficace pour des images avec un éclairage variable. En revanche, le seuillage local utilise des seuils différents calculés pour des régions spécifiques de l'image, ce qui est plus efficace pour les images dont l'éclairage est non uniforme ou qui présentent des variations locales importantes, permettant une meilleure adaptation aux conditions locales.