Академический Документы
Профессиональный Документы
Культура Документы
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
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