Tp 3 : filtrage du bruit -Traitement d'image - Télécharger p
Télécharger PDFIntroduction au Filtrage du Bruit en Traitement d'Images Numériques
Ce document détaille les étapes d'un travail pratique (TP) portant sur le filtrage du bruit dans les images numériques, un sujet essentiel pour les étudiants en Master (SIDI et ESE). L'objectif principal est de développer des scripts Matlab pour implémenter diverses techniques de filtrage et d'évaluer leur efficacité. Il est demandé de créer un script Matlab pour chaque traitement et de vérifier son bon fonctionnement en le testant sur des images fixes sélectionnées de manière appropriée. Tous les traitements seront effectués sur des images en niveaux de gris. Si des images couleur sont fournies, elles devront être converties en niveaux de gris à l'aide de la fonction rgb2gray de Matlab.
Ajout de Différents Types de Bruits aux Images
Avant de filtrer le bruit, il est crucial de comprendre comment simuler différents types de dégradations. Matlab offre une fonction polyvalente, imnoise, permettant d'ajouter artificiellement plusieurs catégories de bruits à une image. Cette étape consiste à étudier et à utiliser cette fonction pour préparer les images à filtrer.
Types de Bruits Courants
- Bruit blanc gaussien : Caractérisé par une distribution normale des valeurs de bruit. Il est souvent présent dans les capteurs électroniques et conduit à un flou généralisé.
- Bruit "sel et poivre" (ou impulsionnel) : Se manifeste par des pixels blancs ou noirs isolés, souvent causé par des erreurs de transmission ou des défaillances de capteurs.
- Bruit de Poisson : Également appelé bruit de grenaille, il est typique des images à faible luminosité où la variation du signal suit une distribution de Poisson, affectant davantage les zones claires.
Après avoir ajouté ces différents types de bruits sur diverses images de votre choix, comparez visuellement leurs effets pour bien saisir leurs spécificités et leurs impacts sur la qualité de l'image.
Filtres de Bruit : Techniques et Implémentations
Le filtrage du bruit est une étape fondamentale pour améliorer la qualité visuelle des images et préparer d'autres traitements. Cette section explore les filtres linéaires et non-linéaires.
Filtres Linéaires
Les filtres linéaires effectuent une moyenne pondérée des pixels dans une fenêtre donnée. Ils sont efficaces pour certains types de bruits mais peuvent flouter les bords et les détails fins.
Filtre Moyenneur (Fenêtre 3x3)
Écrivez un script Matlab pour implémenter un filtre moyenneur avec une fenêtre de taille 3x3. Utilisez les fonctions Matlab imfilter ou conv2 pour réaliser le produit de convolution en 2D. Testez ce script sur les images bruitées obtenues à l'étape précédente ou sur celles fournies dans le répertoire "bruit". Expérimentez en faisant varier la taille du filtre ou en l'appliquant plusieurs fois sur la même image. Observez et analysez les changements sur l'image filtrée, notamment l'effet de lissage et le flou induit.
Filtre Gaussien (Fenêtre 3x3, Écart type = 2)
De manière similaire, implémentez un filtre gaussien de taille 3x3 avec un écart type (sigma) de 2. Pour préparer le noyau du filtre gaussien, vous pouvez utiliser la fonction fspecial de Matlab. Comparez son efficacité par rapport au filtre moyenneur et notez ses particularités, notamment sa capacité à réduire le bruit gaussien tout en préservant mieux les bords.
Implémentation Manuelle des Filtres Linéaires
Afin de comprendre en profondeur le fonctionnement de ces filtres, développez un script capable de filtrer les images bruitées sans recourir aux fonctions prédéfinies de Matlab (imfilter, conv2 ou fspecial). Cette implémentation manuelle vous permettra de maîtriser les principes de la convolution. Comparez les résultats obtenus avec votre script à ceux des questions précédentes.
Comparaison de l'Efficacité des Filtres Linéaires
Évaluez et comparez l'efficacité des filtres moyenneur et gaussien sur les différents types de bruits (gaussien, sel et poivre, Poisson) énoncés précédemment. Discutez de leurs forces et faiblesses pour chaque type de bruit et identifiez dans quels scénarios chacun est le plus approprié.
Filtres Non-Linéaires
Contrairement aux filtres linéaires, les filtres non-linéaires ne se basent pas sur des opérations de convolution simples. Ils sont souvent plus efficaces pour préserver les bords et traiter le bruit impulsionnel.
Filtre Médian (Fenêtre 3x3)
Créez un script Matlab pour réaliser le filtrage médian d'une image en niveaux de gris en utilisant une fenêtre de 3x3. Pour cela, vous pouvez exploiter les fonctions reshape(fenetre, 1, 9) pour linéariser les pixels de la fenêtre et sort pour trouver la valeur médiane. Testez votre fonction sur les images bruitées de l'étape précédente ou celles du répertoire "bruit". De même, variez la taille du filtre ou appliquez-le plusieurs fois sur la même image et analysez les observations, en particulier son efficacité contre le bruit "sel et poivre".
Filtre Min-Max (Fenêtre 3x3)
Implémentez un filtre Min-Max de taille 3x3. Ce type de filtre peut être utilisé pour diverses applications, notamment pour détecter les bords (filtre Max) ou supprimer les valeurs extrêmes (filtre Min). Comparez son comportement avec les autres filtres étudiés et identifiez ses applications potentielles.
Implémentation Manuelle des Filtres Non-Linéaires
Rédigez un script pour filtrer les images bruitées sans utiliser les fonctions Matlab prédéfinies pour les filtres non-linéaires (par exemple, sans medfilt2). Comparez les résultats obtenus avec votre implémentation manuelle à ceux des questions précédentes pour valider votre approche.
Comparaison de l'Efficacité des Filtres Non-Linéaires
Comparez l'efficacité des filtres médian et Min-Max sur les différents types de bruits mentionnés précédemment. Discutez de leur performance relative et des scénarios où chacun excelle, notamment en termes de préservation des bords et de suppression du bruit impulsionnel.
Filtre de Nagao
Le filtre de Nagao est un filtre non-linéaire adaptatif conçu pour lisser les régions homogènes tout en préservant les détails et les bords. Son principe est le suivant :
- Centrer une fenêtre 5x5 sur chaque pixel à traiter.
- À l'intérieur de cette fenêtre 5x5, définir 9 domaines de voisinage différents (par exemple, des régions en forme de L ou des carrés décalés qui couvrent une partie de la fenêtre).
- Pour chacun de ces 9 domaines (que nous appellerons domaine i), calculer la moyenne des niveaux de gris (μi) et la variance (σi²).
- La moyenne μi est calculée comme la somme des niveaux de gris des pixels dans le domaine i, divisée par le nombre de pixels Ni dans ce domaine.
- La variance σi² est calculée comme la somme des carrés des différences entre chaque niveau de gris d'un pixel dans le domaine i et la moyenne μi de ce domaine, le tout divisé par Ni.
- Attribuer au pixel central la moyenne (μi) du domaine qui présente la plus faible variance (σi²). Cette approche permet de choisir la région la plus homogène autour du pixel, minimisant ainsi le flou sur les bords et préservant les détails.
Évaluation de l'Efficacité des Filtres : Le Rapport Signal sur Bruit de Crête (PSNR)
Pour évaluer quantitativement la performance des différents filtres de bruit, une métrique couramment utilisée est le Rapport Signal sur Bruit de Crête (PSNR).
Calcul du PSNR
Écrivez un script Matlab permettant de calculer le PSNR entre deux images : l'image originale non bruitée (ou de référence) et l'image filtrée. Le PSNR est exprimé en décibels (dB) et mesure la qualité de reconstruction d'une image après un traitement (comme le filtrage du bruit) par rapport à l'image originale. Un PSNR plus élevé indique une meilleure fidélité de l'image filtrée par rapport à l'originale.
Application et Conclusion
Utilisez le script de calcul du PSNR pour évaluer l'efficacité de tous les filtres de bruits étudiés précédemment (linéaires et non-linéaires) sur les images bruitées. Comparez les valeurs de PSNR obtenues pour chaque filtre et chaque type de bruit. En conclusion, déterminez quels filtres sont les plus performants pour chaque type de bruit, discutez des facteurs influençant ces résultats et identifiez les compromis entre la suppression du bruit et la préservation des détails de l'image.
Foire Aux Questions (FAQ)
Qu'est-ce que le bruit en traitement d'image et pourquoi le filtre-t-on ?
Le bruit en traitement d'image représente des informations indésirables qui dégradent la qualité visuelle et l'interprétation d'une image. Il peut provenir de diverses sources, comme les capteurs, la numérisation ou la transmission. Le filtrage vise à réduire ces perturbations pour améliorer la netteté, la clarté et la fidélité de l'image par rapport à son original, facilitant ainsi les analyses et les traitements ultérieurs, tels que la détection de caractéristiques ou la segmentation.
Quelle est la différence fondamentale entre les filtres linéaires et non-linéaires ?
Les filtres linéaires, comme le moyenneur ou le gaussien, effectuent une moyenne pondérée des pixels voisins. Ils tendent à lisser l'image mais peuvent aussi flouter les bords et les détails. Les filtres non-linéaires, tels que le filtre médian ou le Nagao, utilisent des opérations non basées sur la convolution (par exemple, le tri ou la sélection de valeurs) leur permettant de mieux préserver les bords et de traiter plus efficacement certains types de bruit impulsionnel, comme le bruit "sel et poivre".
Comment le PSNR aide-t-il à évaluer l'efficacité d'un filtre de bruit ?
Le PSNR (Peak Signal-to-Noise Ratio) est une mesure objective qui quantifie la différence entre une image originale (sans bruit, de référence) et une image traitée (bruitée puis filtrée). Il est exprimé en décibels (dB). Un PSNR élevé indique que l'image filtrée est très similaire à l'image originale, ce qui signifie que le filtre a été efficace pour supprimer le bruit tout en minimisant la perte d'informations essentielles de l'image. C'est un indicateur clé pour comparer les performances de différents algorithmes de filtrage de manière quantifiable.