Вы находитесь на странице: 1из 3

D9-2 : traitement dimages

TP n1
30 septembre 2010
Implantation en C et C++
La base de code `a utiliser pour traiter ce TP est contenue dans larchive
telechargeable suivante :
http ://www.ensta.fr/~manzaner/Download/D9 2/d92 tp1 20100930.tgz.
Consignes exercices 1 `a 3
An de manipuler facilement des images et dimplanter ecacement des
algorithmes en langage C, une surcouche logicielle est necessaire, notament
pour tout ce qui est passage de double pointeur `a une fonction. La solution
retenue est lutilisation de la librairie nrutil de NRC (Numerical Recipes in C
- http ://www.nr.com. Cela permet dune part davoir une ecriture 2D pour
lacc`es `a un pixel et de gerer de mani`ere transparente les bords (i.e. lutilisa-
tion dindices negatifs pour indexer une image). Ainsi lacc`es `a la case (i, j)
de la matrice T qui secrit en Matlab T(i,j) deviendra via NRC, T[i][j].
Un ensemble dexemples ainsi quun makele sont fournis dans le repertoire
NRC code TP1. Merci `a Lionel Lacassagne qui a fourni la base de ce code.
Les images traitees doivent etre au format pgm raw. Vous pouvez recuperer
des exemples sur http ://www.ensta.fr/~manzaner/Images/GRIS.
Consignes exercice 4
Le deuxi`eme support logiciel fourni est une version specique du logiciel
Inti qui permet dexperimenter la detection de contours multi-echelles (pas de
programmation `a ce niveau). Il se trouve dans le repertoire Inti TP1.
Dans ce cas, les images traitees peuvent etre dans tous les formats reconnus par
TkImg.
1 Noyaux de convolution
Appliquez sur une image de votre choix les noyaux de convolution suivants,
o` u lorigine (i.e. le coecient attache au pixel courant) est le centre de la matrice
1
(en gras) :
A =
1
8

1
1 4 1
1

, B =

1 2 1
0 0 0
1 2 1

, C =

1
1 5 1
1

Quel eet observez-vous sur limage ?


A quelle grandeur theorique le noyau de convolution est-il apparente ?
Quelles precautions doivent etre prises pour le calcul numerique de la convolu-
tion? Et pour la representation du resultat ?
2 Detection de contours
Les contours dans une image sont censes representer les fronti`eres entre
dierents objets. Il sont calcules `a partir dune estimation des variations lo-
cales. Il nexiste pas de methode universelle pour les calculer, mais on distingue
habituellement les methodes dordre 1, qui denissent les contours comme les
maxima locaux de lamplitude du gradient, dans la direction du gradient, et les
methodes dordre 2, qui les denissent comme les lieux de passage par zero du
laplacien.
Programmez un detecteur de contours `a partir doperateurs de convolution
simples approximant des grandeurs dierentielles par dierences nies.

Evaluez
la complexite de votre detecteur et essayez devaluer de mani`ere critique ses
performances.
3 Filtrage recursif
Lapplication de ltre `a large reponse impulsionnelle dans le domaine spatial
peut etre tr`es co uteuse en temps de calcul si lon approxime le ltre par un noyau
de convolution simple comme dans les sections precedentes. Heureusement, cer-
tains noyaux de convolutions peuvent etre implementes de facon recursive.
Le ltre exponentiel 2D a pour reponse impulsionnelle :
H(x, y) =

2
4
e
(|x|+|y|)
.
Remarquez que H(x, y) = h(x).h(y), avec h(x) =

2
e
|x|
. La convolution
par H peut donc etre calculee par la composition de deux convolutions 1d, une
horizontale, une verticale.
Montrez (2 Methodes) que h(x) =

2
e
|x|
peut etre decompose en convolu-
tion de 2 ltres h
1
et h
2
, tels que :
2
h
1
(x) =

e
x
si x 0
0 si x < 0
h
2
(x) =

0 si x > 0
e
x
si x 0
Remarquez que h
1
est un ltre causal, tandis que h
2
est un ltre anticausal.
On souhaite implanter numeriquement le ltrage causal :
h
1
(x) = e
x
(x 0).
Le ltre discret d
1
(n) = e
n
est dierent dune constante multiplicative,
car

+
0
e
x
dx = 1, mais
+

n=0
e
n
> 1.
Quelle doit etre la valeur de dans le ltre discret ?
Soit I[n], 0 n W 1 une image 1d discr`ete.
Limage convoluee par le ltre discret 1d vaut :
J[n] = (I d
1
)[n] =
0

i=n
I[n +i]e
i
.
Trouver la relation de recurrence liant J[n + 1], J[n] et I[n + 1].
Quelle relation obtient-on pour la sequence anticausale discr`ete d
2
?
Deduire de tout ce qui prec`ede lalgorithme de ltrage exponentiel discret
2d recursif et programmez-le. Quelle est la complexite en fonction de ? Quelle
inuence sur le calcul numerique peut avoir la valeur de ? Comment peut-on
exploiter cet operateur dans le cadre de la detection de contour, et quel interet
cela presente-t-il ?
4 Detection de contours multi-echelles
Experimentez le calcul des derivees gaussiennes multi-echelles en lancant
linterface Inti `a partir du script :
> ./Contours.tcl mon image.pgm
Comparer les resultats obtenus pour les passages par zeros du laplacien avec
cette methode et ceux obtenus avec la methode du TP1. Conclusions ? Les
param`etres de seuil (haut et bas) correspondent `a un seuillage par hysteresis du
module du gradient applique aux passages par zero. Pour tester le seuil simple, il
sut de prendre les deux seuils egaux, pour tester labsence de seuillage, prendre
les deux seuils egaux `a zero.
3

Вам также может понравиться