UE3 – Analyse des Images Transformations locales

Transcription

UE3 – Analyse des Images Transformations locales
UE3 – Analyse des Images
Transformations locales
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
1
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Plan du cours
1 – Introduction
Principe des transformations locales
Définitions dans l'espace discret : distances, voisinage
2 – Filtrage linéaire : principe
Principe du filtrage linéaire : convolutions 1D et 2D
Calcul pratique du résultat
Caractéristiques du masque de convolution
3 – Filtres de lissage
Deux principaux types de filtres spatiaux
Bruits dans une image
Filtres de lissage linéaires
Filtres de lissage non-linéaires
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
2
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Principe des transformations locales (1/2)
Principe
Pour calculer la valeur du pixel de coordonnées (x,y) dans l'image résultat
I', on utilise, dans l'image initiale, non seulement la valeur du pixel I(x,y)
mais aussi celles des pixels situés dans un voisinage de ce dernier I(V (x,y)).
t
I  x , y   I ' x , y =t  I  V  x , y   
x
y
t
x
y
V  x , y
I'
I' a même taille que I, mais des propriétésI plus intéressantes.
En chaque pixel (x,y) considéré, le voisinage V est défini de manière
identique (« forme » identique) mais relativement à lui (V (x,y)).
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
3
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Principe des transformations locales (2/2)
Principe (détail)
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
4
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Distances dans l'espace discret
Coordonnées relatives
Soit Px, y un pixel d'une image I.
Soit Qx+i , y+j un autre pixel de I,
localisé dans le voisinage de P.
i et j sont les coordonnées relatives de Q
par rapport à celles de P ;
i et j peuvent être positives ou négatives.
Plusieurs distances dans l'espace discret
Euclidienne (ou L2)
∥PQ∥2 =  i 2  j 2
« Manhattan » (ou « City Block », ou L1)
∥PQ∥1 =∣i∣∣ j∣
« Chessboard » (ou Chebyshev, ou L∞)
∥PQ∥∞ =max ∣i∣,∣ j∣
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
5
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Notion de voisinage (1/2) : définition
Voisinage V d'un pixel P
Hypothèses
V est centré en P ;
les pixels sont disposés selon une maille carrée.
Définition : V (P) est l'ensemble des pixels Q situés à moins d'une certaine
distance de P.
La forme du voisinage (et le nombre de voisins) de P dépendent de la
distance considérée (cf. exemples diapo suivante).
Voisinages les plus usités en traitement d'images :
4-voisinage
8-voisinage ou « voisinage 3x3 »
« voisinage 5x5 »
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
6
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Notion de voisinage (2/2) : exemples
i=x Q− x P
j = y Q− y P
∥PQ∥2 =  i 2  j 2
∥PQ∥1 =∣i∣∣ j∣
∥PQ∥∞ =max ∣i∣,∣ j∣
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
7
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Convolution discrète 1D : définition (1/2)
Définition
Soient f et h deux fonctions monovariables discrètes définies sur ℤ.
Le produit de convolution de f par h est défini comme :
∞
 f ∗h x=
∑
k=−∞
∞
f  x−k . hk =
∑
f k . hx−k 
k=−∞
f est la fonction d'origine
h est la fonction de convolution (modifiant f )
f *h est la fonction convoluée (résultat de la convolution)
Exemple
Un petit exercice pour bien comprendre comment cela fonctionne ...
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
8
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Convolution discrète 1D : définition (2/2)
f n
hn
f n−k  (mobile) et h k  (fixe)
f n−k . h k 
∞
 f ∗hn=
∑
f n−k . h k 
k =−∞
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
9
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Convolution discrète 2D : du 1D au 2D
Principe
L'image I est une fonction de 2 variables discrètes (x et y).
Le filtre de convolution H appliqué sur I est lui aussi à 2D (matrice).
H est appelé filtre, masque, noyau ou fenêtre de convolution.
L'application du filtre à l'image initiale I consiste à déplacer le masque
sur chacun des pixels, et à remplacer la valeur de ce pixel d'analyse par
une combinaison des valeurs de ses voisins.
Image initiale I
Filtre H
Filtrage de I par H
Image résultat I'
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
10
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Convolution discrète 2D : calcul (1/3)
Formule
L'image I' résultat de la convolution de I par H est donnée par :
I ' x , y= I∗H x , y =∑ ∑ I  x−i , y− j . H i , j 
∀i ∀ j
C'est un filtrage linéaire (somme de multiplications entre les niveaux de
gris de l'image initiale I et les coefficients du masque H ).
Calcul pratique
Tourner le masque de 180° autour de son centre (0,0) ;
Superposer le masque obtenu à l'image I de sorte qu'il soit centré en (x,y) ;
Multiplier chaque coefficient du masque par le niveau du pixel sous-jacent ;
Additionner chacun de ces produits pour obtenir I'(x,y).
Ex.
H
Hθ=180°
Hθ=180° et I
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
11
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Convolution discrète 2D : calcul (2/3)
Calcul pratique (suite)
I ' x , y=
I x−1, y−1 . h1,1  I x−1, y . h1,0 I x−1, y1 . h1,−1
I x , y−1 . h 0,1 I x , y . h 0,0 I x , y1 . h 0,−1
I x1, y −1 . h−1,1  I x1, y . h−1,0  I x1, y1 . h−1,−1
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
12
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Convolution discrète 2D : calcul (3/3)
Effets de bords
Problème : comment traiter les
pixels situés aux bords de l'image ?
Stratégies possibles :
?
laisser inchangés
convolution partielle sur la partie
du masque superposée à l'image
hypothèse : pixels extérieurs = 0
miroir (virtuel) de l'image : pour i, j > 0,
I(-i,y)=I(i,y) sur le bord gauche
I(Nx-1+i,y)=I(Nx-1-i,y) sur le bord droit
I(x,-j)=I(x,j) sur le bord supérieur
I(x,Ny-1+j)=I(x,Ny-1+j) sur le bord inférieur
image « enroulée »
...
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
13
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Convolution discrète 2D : masque de convolution
Caractéristiques du masque de convolution H
Souvent carré et de taille impaire (3x3, 5x5, ...), pour être centré sans
ambigüité sur le pixel d'analyse.
Souvent à valeurs symétriques par rapport à l'élément central :
h-1,-1= h+1,+1 , h0,-1= h0,+1 , h+1,-1= h-1,+1 , ...
Normalisation
Soit S la somme des coefficients du masque.
diviseur : normalisation à 1.
Si l'on veut conserver la luminance de l'image, on doit avoir S = 1.
On doit donc diviser les coefficients par | S |.
Obtention de valeurs dans [0, 255]
décalage des niveaux résultats.
Les coefficients peuvent être négatifs, et le résultat de la convolution également.
Un décalage est donc parfois nécessaire (après calcul du résultat) pour obtenir des
valeurs entre 0 et 255 : décalage = 0 si S > 0 , 255 si S < 0 , 128 si S = 0.
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
14
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Convolution discrète 2D : corrélation
Convolution et corrélation
Ces 2 opérations sont très fortement liées :
opération aussi définie par un masque ;
dans un calcul de corrélation, le masque est appliqué sur les pixels de l'image sans
rotation préalable ;
opérations équivalentes si le masque est carré et à symétrie centrale.
Utilisation
détection d'un motif dans une image
exemple :
I
H
I'= corr(I,H)
I' seuillée
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
15
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Deux types de filtres spatiaux
Introduction
Il existe différents types de filtres, avec différents effets.
Un filtre est caractérisé par
sa taille (nombre de pixels voisins considérés)
son contenu (opération réalisée sur les pixels voisins considérés)
Un filtre peut être linéaire (i.e. réalisable par convolution) ou non.
Il est linéaire si (α1.I1 + α2.I2)' (x,y) = α1.I'1(x,y) + α2.I'2(x,y) pour tout pixel (x, y).
Types de filtres
Filtres passe-bas, ou de lissage
Effet : lissage de l'image (élimine petites fluctuations)
Avantage : atténuation du bruit
Inconvénient : atténuation des détails, flou
Filtres passe-haut, ou de contours
Effet : accentuation des détails de l'image
Avantage : mise en évidence des contours/détails
Inconvénient : accentuation du bruit
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
16
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Bruits dans une image (1/3)
Principe
Des défauts liés à l'environnement (ex. poussières), au capteur (ex. dérive)
ou à l'échantillonnage, produisent des aberrations locales dans l'image.
La restauration d'image
consiste à réduire, voire éliminer le bruit de l'image réellement délivrée I ;
tente de trouver l'image idéale (non bruitée) I qui aurait été obtenue si le système
d'acquisition était parfait ;
utilise notamment des filtres de lissage.
Modélisation
Le bruit b(x,y) est souvent considéré comme aléatoire.
Si le bruit est additif, il s'ajoute à l'image idéale I :
I(x,y) = I(x,y) + b(x,y)
Si le bruit est multiplicatif, l'image réelle est :
I(x,y) = I(x,y) . b(x,y)
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
17
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Bruits dans une image (2/3)
Types de bruits
Bruit Gaussien additif (d'amplification)
Source : bruit thermique (dérive des composantes électroniques).
Caractéristique : niveaux additionnés d'une valeur aléatoire à loi normale.
Modélisation : ajout à chaque pixel d'une valeur aléatoire suivant une loi normale.
Bruit « Poivre et sel » (impulsionnel)
Source : pixels défectueux, erreurs de CAN ou de transmission de bits, ...
Caractéristique : pixels isolés avec un niveau de gris très différent de celui des
pixels environnants.
Modélisation : remplacement aléatoire de n pixels par 0 et de n pixels par 255.
Bruit de quantification
Source : quantification des valeurs des pixels en niveaux discrets.
Modélisation : variable aléatoire à distribution uniforme.
Autres bruits
Bruit de scintillement (« speckle ») : bruit multiplicatif granulaire (échos ponctuels)
Bruits photonique, de courant d'obscurité, ...
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
18
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Bruits dans une image (3/3)
Exemples
Bruit additif
Bruit multiplicatif
Bruit « Poivre et sel »
Gaussien (σ = 25)
Gaussien (σ = 25)
(20% de pixels affectés)
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
19
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Filtres de lissage
Principe
Utilité : restauration de l'image (élimination du bruit) par lissage.
Inconvénient : suppression des hautes fréquences (filtres passe-bas), d'où
dégradation des contours et effet de flou.
Variétés
Plusieurs types de filtres possédant chacun des avantages propres.
Plusieurs tailles possibles, selon l'étendue du voisinage à considérer : 3x3,
5x5, ... L'effet de flou est d'autant plus marqué que la taille est grande.
Principaux filtres de lissage
Linéaires
Caractérisés par un masque (réalisables par convolution).
Exemples : filtres moyenneurs, Gaussiens, ...
Non-linéaires :
Caractérisés par un opérateur non-linéaire (non réalisables par convolution).
Exemples : filtres médian, min/max, ...
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
20
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Filtres de lissage linéaires : filtres moyenneurs
Filtres moyenneurs
Configuration : dépend de l'importance à donner au pixel d'analyse et à
ses voisins :
1 1 1
1 1 1
0 1 0
1
1
1
1 1 1 ou
1 2 1 ou
1 1 1
9
10
5
1 1 1
1 1 1
0 1 0
[ ]
[ ]
[ ]
Remarque : | S |=1, donc préservation du fond (luminance conservée).
Inconvénients :
forte atténuation des contours (limite la performance des traitements ultérieurs) ;
forte influence des pixels aberrants isolés.
Alternative : filtrage conditionnel
On remplace la valeur initiale I(x,y) par la moyenne des
8 pixels voisins I'(x,y) seulement si elle en diffère
sensiblement : | I'(x,y) – I(x,y) | ≥ Seuil.
Ce filtrage n'est plus linéaire.
[ ]
1 1 1
1
1 0 1
8
1 1 1
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
21
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Filtres de lissage linéaires : filtres Gaussiens (1/2)
Distribution Gaussienne (ou normale)
Paramètres : moyenne µ, écart-type σ.
Distribution 1D

2
1
− x− 
G  x =
exp
2 2
2  
µ = 0, σ = 1

Distribution 2D


 x−2  y−2 
1
G  x , y =
exp −
2
2 
2 2

µ = 0, σ = 1
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
22
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Filtres de lissage linéaires : filtres Gaussiens (2/2)
Filtres Gaussiens
Avantage : limite l'effet de flou (contours mieux conservés)
Configurations : approximations discrètes de la distribution Gaussienne
de moyenne µ=0 dans un filtre fini. Exemples pour σ = 0,8 :
[ ]
1 2 1
1
H G1=
2 4 2
16
1 2 1
L'écart-type σ
ou
[
1 10 22 10
1
10 106 231 106 10
1
H G2=
22 231 504 231 22
2025
10 106 231 106 10
1 10 22 10
1
]
détermine le degré de lissage ;
impose la taille du masque (idéalement égale à 6 σ +1 x 6σ +1).
Remarques :
| S |=1, donc préservation du fond (luminance conservée).
Filtre séparable : possibilité d'obtenir le même résultat en filtrant les lignes puis
les colonnes avec un même masque 1D, par exemple 1/4.[1 2 1] pour HG1.
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
23
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Filtres de lissage linéaires : autres filtres
Autres filtres de lissage linéaires
Filtre binômial :
Sert souvent d'approximation au
filtre Gaussien
Coefficients : proches de ceux
du binôme de Newton
(cf. triangle de Pascal).
Filtre pyramidal
[
1
2
1
3
86
2
1
2
4
6
4
2
3
6
9
6
3
[
1 4
6 4 1
4 16 24 16 4
1
6 24 36 24 6
256
4 16 24 16 4
1 4
6 4 1
]
Filtre conique
2
4
6
4
2
1
2
3
2
1
]
[ ]
0
0
1
1
25
0
0
0
2
2
2
0
1
2
5
2
1
0
2
2
2
0
0
0
1
0
0
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
24
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Filtres de lissage non-linéaires : filtre médian (1/2)
Principe
Le niveau de gris résultat est le niveau de gris médian des pixels voisins.
Filtre non-linéaire, donc non réalisable par masque de convolution.
Calcul
Choisir un voisinage contenant un nombre impair de pixels.
Trier les niveaux par ordre croissant.
Donner au pixel d'analyse le niveau situé au milieu des niveaux triés.
Exemple
18
20
25
14
27 211
22
27
25
I(V (x,y))
14 ≤ 18 ≤ 20 ≤ 22 ≤ 25 ≤ 25 ≤ 27 ≤ 27 ≤ 211
25
|← 4 valeurs →| médiane |← 4 valeurs →|
Valeurs de I(V (x,y)) triées par ordre croissant
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
I'(x,y)
25
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Filtres de lissage non-linéaires : filtre médian (2/2)
Propriétés
Avantages par rapport aux filtres moyenneur et Gaussien
Filtre mieux le bruit impulsionnel (type « poivre et sel »).
Illustration : quelle est la moyenne dans l'exemple précédent ?
Ne crée pas de nouveau niveau ; préserve mieux les contours sans altérer le fond.
I
moy3x3
gauss5x5
méd3x3
Limites et inconvénients
Un filtre médian de taille totale 2n+1 ne peut éliminer que les agrégats d'au plus n
pixels bruités.
Supprime les détails fins qui ne sont pas du bruit.
Détruit les coins. Ex. : résultat obtenu sur l'image ci-contre ?
Coûteux en temps de calcul (tri).
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
26
Introduction
Filtrage linéaire (convolution)
Filtres de lissage
Filtres de lissage non-linéaires : autres filtres
Filtre de rang (ou filtre d'ordre)
Généralisation du filtre médian.
Principe : au lieu du niveau médian, on choisit le niveau d'un rang donné.
Cas particuliers : on choisit le niveau local minimum (imin) ou maximum
(imax) → filtres morphologiques.
Filtrage min-max (« Conservative smoothing »)
Principe : garantit que la valeur de tout pixel appartient à l'intervalle des
valeurs de ses voisins → débruitage efficace.
Préserve encore mieux les contours que le filtre médian.
Calcul :
Exemple :
{
I  x , y  si i min  I  x , y i max
I '  x , y= i min
si I  x , yi min
i max
si I  x , yi max
}
124 126 127
120 150 125
115 119 123
imin=115, imax=127
moyenne = 125
moyenne8 = 123
médiane = 124
(min-)max = 127
LPro GPI Vision Industrielle – UE3 : Analyse des Images – O. Losson & F. Cabestaing
27