TP Traitement d'images

Sujets abordés : produit de convolution (mise en ?uvre et réalisation),
convolution appliquée à la détection de contours, type de bruit et pré-traitement,
détecteurs de points d'intérêt. Introduction au filtrage linéaire. Un filtre linéaire est
caractérisé par un produit de convolution entre le signal d'entrée et de sortie du
filtre.

Part of the document


TP Traitement d'images filtrage lineaire Sujets abordés : produit de convolution (mise en ?uvre et réalisation),
convolution appliquée à la détection de contours, type de bruit et pré-
traitement, détecteurs de points d'intérêt 1. Introduction au filtrage linéaire Un filtre linéaire est caractérisé par un produit de convolution entre le
signal d'entrée et de sortie du filtre. Ce produit P est fonction d'un
masque de convolution composé d'un ensemble de coefficients Cij avec i=i0,
i1.. ik et j=j0, j1.. jk tel que : [pic] Dans le cas d'un masque 3*3 appliqué sur un bloc image, les opérations
effectuées sont les suivantes (ces masques sont appliqués à toute l'image
par balayage): a b c g1 g2 g3
Masque 3*3 : d e f Voisinage 3*3 d'un pixel : g4
g5 g6
g h i g7 g8 g9 Convolution obtenue : gs = a.g1+b.g2+c.g3+d.g4+e.g5+f.g6+g.g7+h.g8+i.g9 Remarque : Les convolutions peuvent être effectuées avec des masques
d'ordres différents, 3*3, 1*3, 3*1, ...... n*m. Mais il est possible de
definir tout les masque de dimensions inferieurs ou egales à n*m avec un
masque n*m, par exemple : Masque 1*3 : 1 0 1 Masque 3*3 correspondant : 0 0 0 Masque 5*5
correspondant : 0 0 0 0 0
1 0 1 0 0 0 0
0
0 0 0 0 1 0 1
0
0 0 0 0 0
0 0 0 0 0
Question :
Faites la mise en ?uvre d'un produit de convolution entre 2 matrices à
l'aide des images fournies, et des fonctions Matlab « conv2 » et
« filter2 ». On utilisera en première application un filtre moyenneur
3*3 :
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9 Remarque : la fonction « conv2 » ne supporte pas les coefficients négatifs
dans le masque de convolution. Il est nécessaire de prendre le négatif de
l'image résultat. De plus il faut la paramétrer en 'same' afin de conserver
l'égalité dimensionnelle entre la matrice de départ et la matrice résultat.
Question :
Réaliser votre propre algorithme de convolution, par masque 3*3, afin
de vérifier son fonctionnement comparer ses résultats avec les
résultats obtenus par les fonctions « filter2, conv2 ». 2. Filtrage linéaire appliqué à la détection de contour L'analyse des contours consiste à segmenter l'image par détection de
frontières. Cette détection s'apparente à une dérivation, aussi parle t-on de filtrage
dérivatif. Le but est d'obtenir l'image gradient de l'image initiale. Le
contour sur l'image gradient possède deux composantes :
[pic] Module du contour [pic] Direction du contour Un gradient nul correspond donc à une zone homogène alors qu'un gradient
non nul correspond à :
. Une ligne de contour si la bande est assez étroite
. Une région texturée ou dégradée si la région est étendue Dans le cas d'un gradient horizontal gauche droite : [pic] Soit le masque discret de convolution suivant :
|-1 |0 |1 | Dans le cas d'un gradient vertical haut bas : [pic] Soit le masque discret de convolution suivant :
|-1 |
|0 |
|1 | Question :
A l'aide de la fonction « filter2 », faites la mise en ?uvre des
masques 1*3 et 3*1 suivants, tester les sur l'image (couloir.bmp),
commenter l'influence de ces filtres en fonction de la direction des
contours sur l'image :
-1 0 1 1 0 -1
-1 1
0 0
1 -1
Question : Appliquer les masques suivants (vous pouvez egalement vous aider de la
fonction « fspecial »), commenter : -1 -2 -1 1 2 1
. Sobel en X : G1 = 0 0 0 G2 = 0 0 0
1 2 1 -1 -2 -1 -1 0 1 1 0 -1
. Sobel en Y : G1 = -2 0 2 G2 = 2 0 -2
-1 0 1 1 0 -1
0 0 1 0 0 -1
. Robert G1= 0 0 0 G2 = 0 0 0
-1 0 0 1 0 0 -1 0 1 1 1 1
. Prewitt G1= -1 0 1 G2 = 0 0 0
-1 0 1 -1 -1 -1 0 1 1 1 1 0
. Mavo Vassy G1= -1 0 1 G2= 1 0 -1
-1 -1 0 0 -1 -1
Question :
Vérifier la relation suivante avec des masques 3*1 et 1*3,
commenter : M1*(I*M2) = (M1x M2)*I I est l'image, M1 et M2 sont deux masques, (*) représente le
produit de convolution, (x) la multiplication entre deux
masques. Vérifier cette relation avec une partie des filtres
précédents. On rappelle que dans le cas où on a un masque M1 (3*1) et un masque M2
(1*3), M1x M2 donne un masque 3*3 et M2 x M1 donne un scalaire (masque
1*1).
3. Filtrage linéaire appliqué au pré-traitement d'image Une des applications du filtrage linéaire est le pré-traitement des images.
Question :
Visualiser les « gaussx.bmp » et « impulsx.bmp », rappeler les
définitions des bruits impulsionnel et gaussien. A l'aide des
fonctions « filter2, fspecial », tester et commenter l'action des
filtres 'average' et 'unsharp' sur ces images. Rappeler les
définitions de ces deux filtres.
4. Détecteur de points d'intérêt Les détecteurs de points d'intérêt ont pour but de localiser des zones
remarquables sur une image. Il en existe plusieurs types (Moravec, Baudet,
Harris-Stephen, Sojka, etc.). Nous vous proposons dans cette section
d'étudier en particulier le détecteur de points d'intérêt de Moravec.
L'idée du détecteur de Moravec est de considérer le voisinage d'un pixel
(la fenêtre 3*3) et de déterminer les changements moyens de l'intensité
dans le voisinage considéré lorsque la fenêtre se déplace dans diverses
directions. Considérons par exemple le cas d'une fenêtre et d'un changement
de direction (dx = 1, dy = 1) de cette fenêtre :
[pic]
Pour le pixel (p=6) de cette fenêtre, le détecteur de Moravec a pour but de
calculer la somme des carrés des différences (1-6), (2-7), (3-8), (5-10),
(6-11), (7-12), (9-14), (10-15), et (11-16). Plus précisément, on considère
la fonction (1) suivante :
(1) [pic] où :
. (2 x n)-1 spécifie la taille de la fenêtre considérée, et i, j les
variables de parcours
. I(x,y) est l'intensité au pixel (x,y)
. Edx,dy(x,y) représente la moyenne du changement d'intensité lorsque la
fenêtre est déplacée de (dx, dy) par rapport à (x,y). En appliquant cette fonction dans les trois situations principales de la
figure ci-dessous, on obtient :
1. L'intensité est approximativement constante dans la zone image
considérée : la fonction prendra alors de faibles valeurs dans toutes
les directions (dx,dy).
2. La zone image considérée contient un contour rectiligne : la fonction
prendra alors de faibles valeurs pour des déplacements (dx,dy) le
long du contour et de fortes valeurs pour des déplacements
perpendiculaires au contour.
3. La zone image considérée contient un coin ou un point isolé : la
fonction E prendra de fortes valeurs dans toutes les directions.
[pic] Les différentes situations considérées par le détecteur de Moravec
Question :
Implémenter une fonction Matlab pour la mise en ?uvre du détecteur de
Moravec. Cette fonction prendra en arguments l'image, et les paramètres
dx et dy. Elle implémentera la fonction (1) donnée précédemment. Elle
retournera deux vecteurs xi et yi contenant les coordonnées des points
d'intérêt de même valeur dans la matrice E. Vous pouvez utiliser les
fonctions max et find de Matlab pour trouver ces vecteurs de points
d'intérêt.
Question :
Tester votre fonction sur les deux images suivantes avec les arguments
(dx, dy) : (1; 0) et (1, 1). Afin de visualiser les résultats, servez
vous des instructions imshow, hold on, et plot de Matlab, sur votre
image et les vecteurs xi et yi des points d'intérêt. Commenter les
résultats.
[pic] [pic]
Question :
Mettre en ?uvre le détecteur de Moravec depuis un programme principal
ou vous calculerez l'ensemble des points d'intérêt en fonction des huit
orientations (dx; dy). Vous pourrez vous servir de l'instruction hold
on pour superposer les résultats de vos huit directions. Commenter les
regroupements de points d'intérêt sur les images grâce au calcul en
huit directions.
-----------------------
(
h b b+h Intensité Point de Contour 16 15 14
13 12 11 10 9 8