IV. Traitement d`une image en niveaux de gris
Transcription
IV. Traitement d`une image en niveaux de gris
IV. Traitement d'une image en niveaux de gris 1. Généralités Image acquise par un capteur : ensemble de valeurs dépendant - du capteur lui-même, - du contexte d’acquisition. ! très grande quantité d’informations riches et variées. Prétraitement : privilégier les informations plus spécifiquement recherchées - en augmentant la dynamique du signal dans les zones d’intérêt, - en sélectionnant à priori certaines classes d’événements. 2. Evaluation de la luminance d'un point réel Soit A de coordonnées (x, y) réelles L(P) la luminance d’un pixel P L(A) ? Extrapolation de L(A) suivant un modèle de surface : - triangulation de la surface, - extrapolation bilinéaire, - carreau de surface bicubique (carreau de Bézier), - … soient Pi,j, Pi+1,j, Pi,j+1, Pi+1,j+1 les quatre pixels qui encadrent A l2 l1 i+1 i x .A j j+1 lm = luminance moyenne des 4 pixels si A est dans le triangle sud dx = x-j dy = y-i l0 = L(Pi,j) l1 = L(Pi,j+1) - L(Pi,j) L( A) = l0 + l1 .dx + l2 . dy l2 = 2 lm – l0 – l1 i+1 i+dy A i j j+dx j+1 L( A) = l00+ l01 dx+ l10 dy + l11 dx dy avec dx = x-j et dy = y-i l00 = L(Pi,j) l10 = L(Pi+1,j) -L(Pi,j) l01 = L(Pi,j+1) -L(Pi,j) l11 = L(Pi,j) + L(Pi+1,j+1) - L(Pi+1,j) - L(Pi,j+1) 3. Histogramme 0 255 Histogramme d’une mosaïque utilisant 5 niveaux de gris différents 0 255 Histogramme 255 0 Histogramme cumulé 3.1 Modification d’histogramme But : optimiser la dynamique des événements à analyser. Modification de la dynamique des luminances par une fonction f croissante ! conservation des contrastes relatifs. Pour la suite, on supposera que f est défini de l’espace des luminances dans l’intervalle [0, 255]. 3.2 Expansion de dynamique f(x) = (x-xmin)*255/(xmax-xmin) f(x) = max(0, min(255, (x-xmin)*255/(xmax-xmin) ) ) 255 f 0 min max 3.3 Expansion adaptative Situation : sur ou sous exposition d'une partie de l'image. La fonction de transformation varie suivant la position du pixel dans l'image. Exemple : on effectue une expansion dynamique avec un min et un max qui varie suivant la position dans l'image. - on définit un maximum pour chacun des quatre coins de l'image. - on extrapole un maximum à partir de ces quatre maxima et de la position du pixel relative aux quatre coins (moyenne pondérée). - de même pour le minimum. 3.4 Egalisation d’histogramme ou rendre les niveaux de gris équiprobables 255 f f(d) f(c) f(b) f(a) a b c d 0 ab c d Histogramme d’une image et fonction f de transformation des luminances N Soit N le nbre de pixels ; cumulIdéal = N/256 ; évaluer l’histogramme cumulé : histoCumule[256] ; y = 0 ; pour x=0 à 255 faire f[x] = couleur; tant que histoCumule[x] > cumulIdéal alors y = y +1 ; cumul idéal = cumul idéal + N/256 ; fin tant que fin pour 3.5 Spécification d’histogramme Généralisation de l’égalisation d’histogramme : - Obtenir une distribution d’intensité de l’image voisine d’une distribution spécifiée à l’avance. - La distribution de référence peut-être soit fixée à priori, soit obtenue sur une image ou une portion d’image qui sert d’apprentissage. Construction de la fonction de transformation des luminances f(x) = y Soit N le nbre de pixels ; évaluer l’histogramme cumulé : histoCumule[256] ; soit l’histogramme de référence: histoCumuleRef[256] ; y = 0 ; pour x=0 à 255 faire f[x] = y; tant que histoCumule[x] > histoCumuleRef[y] alors y = y +1 ; fin tant que fin pour 4. Filtrage linéaire Remplacer la valeur d’un pixel P par une combinaison linéaire des luminances prises dans son voisinage. Une matrice de convolution définit les poids de chaque luminance en fonction de leurs positions relatives à P. Deux grandes catégories de filtres : - les filtres moyenneurs (les coefficients sont positifs) ou passe-bas - les filtres différentiels (coefficients de somme nulle) ou passe-haut. soit Ii l’image initiale ; soit Ir l’image filtrée ; soit A la matrice de convolution ; Soit V le voisinage défini par A ; pour tout pixel P dans Ii s <- 0 ; pour tout pixel Q dans V centré sur P s <- s + A[Q-P] Ii[Q] ; fin pour ; Ir[P] <- s ; fin pour ; Remarques : - un pixel résultat n’est pas nécessairement dans [0,255] (voir § Expansion dynamique), - définir une marge au bord de l’image (le voisinage doit être inclus dans l’image) . Exemple de structure de données pour un filtre linéaire : int Fmoyen3x3[11] = {1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1} ; /* rayon, dénominateur */ 4.1 Filtre linéaire passe-bas (ou élimination d'événements furtifs) Ils ont pour effet de lisser l’image en atténuant les variations locales ! régions plus homogènes Quelques exemples de matrices de convolution : 1/9 1/9 1/9 1 4 7 10 7 4 1 1/9 1/9 1/9 4 12 26 33 26 12 4 1/9 1/9 1/9 7 26 51 71 51 26 7 10 33 71 91 71 33 10 1/16 1/16 1/16 7 26 51 71 51 26 7 1/16 1/2 1/16 1/16 1/16 1/16 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 1/25 4 1 12 4 26 7 33 10 filtre gaussien en représentation entière 26 7 dont la somme des coefficients vaut 1115 12 4 4 1 4.2 Filtre linéaire passe-haut Ils ont pour effet de mettre en évidence les événements « furtifs » comme par exemple les frontières (transitions) entre régions homogènes. ! Gradient de l’image ! Laplacien de l’image Opérateurs de Sobel (variation des luminances dans les 2 directions X et Y) pour déterminer le vecteur gradient : -1 0 1 1 2 1 -2 0 2 0 0 0 -1 0 1 -1 -2 -1 dérivée suivant X Dérivée suivant Y Approximation du laplacien (somme des dérivées partielles secondes) : 0 0 -1 -1 -1 0 0 0 0 -1 0 0 0 -1 -3 -3 -3 -1 0 -1 -1 -1 0 -1 -2 -1 0 -1 -3 0 7 0 -3 -1 -1 8 -1 -1 -2 16 -2 -1 -1 -3 7 24 7 -3 -1 -1 -1 -1 0 -1 -2 -1 0 -1 -3 0 7 0 -3 -1 0 0 -1 0 0 0 -1 -3 -3 -3 -1 0 0 0 -1 -1 -1 0 0 Les frontières entre régions (contours) sont marquées par de fortes transitions de part et d’autre de zéro : on parle de « passage par zéro » 5. Passe-bas non linéaires 5.1 Filtre médian On considère que la valeur la plus représentative pour un pixel est la valeur médiane pour un voisinage fixé autour du point considéré. Algorithme : soit V un voisinage d’un pixel p ; soit n le nombre de pixels dans V ; soit T un tableau ; pour tout x dans V, mettre I[x] dans T ; ordonner T ; T[n/2] est la nouvelle luminance de p ; Propriétés d’un filtre médian : - élimine les événements de taille inférieure à la moitié de la taille de la fenêtre d’observation (élimination de bruits type impulsionnel), - les événements plus grands conservent leur dynamique, - les frontières restent aussi plus précises. Comparaison avec un filtre linéaire : fenêtre d’observation centrée en i 2 2 10 10 2 i 10 Valeur médiane 2 2 2 10 10 tri i+1 Filtre linéaire 2 i-2 i-1 i+2 2 Filtre médian Filtre médian Filtre linéaire 5.2 Filtre de Nagao Dans une fenêtre 5x5 centrée sur l'élément de coordonnée (i, j) dans l'image initiale, on considère les 9 zones ci-dessous et on calcule pour chacune d'elles la moyenne mk et la variance (Sl=1,9(mk -xl)2 ). On affecte Ir[i, j] avec la moyenne (ou la valeur médiane) de la zone ayant la plus faible variance. Propriétés : - complexité plus grande qu’un filtre linéaire, - conserve la dynamique des luminances le long des contours, - respecte mieux les angles des formes. 5.3 Filtrage morphologique appliqué aux images en niveaux de gris Soit I2 l’image initiale en niveau de gris et I3 l’image binaire 3D associée I3[x, y, z] = 0 si z > I2[x, y] I3[x, y, z] = 1 sinon - érosion : l’élément structurant se trouve-t-il dans la forme (i.e. sous la nappe des niveaux de gris) ? - dilatation : l’élément structurant se trouve-t-il dans le fond (i.e. au dessus de la nappe des niveaux de gris) ? Comme pour les images 2D binaires - ouverture : érosion suivie d’une dilatation - fermeture : dilatation suivie d’une érosion. On utilise souvent un l'élément structurant de type « disque horizontal » - l'érosion : min des luminances observées dans un voisinage - la dilatation : max des luminances observées dans un voisinage luminance élément structurant érosion ouverture