Comme le nom du sujet l’indique , il s’agit de
remplacer un motif par un autre dans une séquence d’images. Donc le programme
doit être capable de suivre ce motif le long de la séquence pour le remplacer
ensuite.
Ainsi on
doit disposer au
début d’une séquence
d’images et d’un motif à appliquer. Les images utilisées sont toutes sous
format PGM , mais on peut rendre facilement le programme utilisable avec le
format PPM.
L’algorithme utilisé pour traiter ce sujet se
compose de trois partie :
1.
La
détection des coins
2.
La
corrélation
3.
L’homographie
La détection des coins :
Cette partie consiste à extraire d’une
image des points qui présente la particularité d’être des « coins ». Ceci se traduit par le
fait que ces points sont des extremums locaux dans l’image construite à partir
de l’image initiale par la formule suivante :
R(x , y) = det ( C) – k
trace ²(C)
Où C est la matrice
suivante : C = |
I ²x Ix Iy
|
| Ix Iy I ²y |
Ix est la dérivé
de l’image I(x , y) suivant la direction x.
La corrélation :
La corrélation sert à identifier un point sur une image donné avec un
autre point d’une image issue de la première lors d’un petit mouvement. La
sélection des points se fait suivant un score définit par la formule suivante :
Score(
m1 , m2) = åå [I1(u1+i , v1+j) – I1(u1,v1)].[I2(u2+i , v2+j)
– I2(u2,v2)]
(15 * 15 ) s( I1)s(I2)
où m1=(u1
, v1) , et I1(u1
, v1) = åå I1(u1+i
, v1+j) / (15 * 15 ) ,
et s(I1)
= recine_carré (åå (I1(u1+i
, v1+j)² / (15 * 15 )) – I1(u1
, v1) ²).
L’homographie :
Cette
partie sert à calculer l’homographie qui applique le motif choisi pour être à
la place d’un autre. Pour rendre le calcul linéaire , on ajoute une troisième
coordonnée aux points. Elle est égale à 1 dans le calcul.
L’homographie
est déterminée à partir de quatre
points choisis sur le motif à appliquer et de leur emplacement sur
l’image. Elle vérifie les équations suivantes :
H (x , y , 1 ) = ( x’ , y’ ,
1)
Où (x ,y) est un point sur
l’image et (x’ , y’) est un point du motif à appliquer .
En posant H = (h1 ,h2 ,h3 ,h4 ,h5 ,h6
,h7 ,h8 ,h9 ) on aura :
(h7.x + h8.y + h9) x’ =
(h1.x +h2.y + h3)
(h7.x + h8.y + h9) y’ =
(h4.x +h5.y + h6)
avec huit équations on arrive à résoudre H en fonction de h9 mais ceci
détermine entièrement l’homographie
puisque x’ s’obtient comme
le rapport de deux termes qui sont des fonctions linéaires de h9
J’ai appliqué cet algorithme sur la séquence d’image
suivante :
avec le motif qui suit :
les résultats sont assez satisfaisants . On obtient la séquence d’image suivante :
L’algorithme utilisé présente quelques inconvénients :
1.
On
ne peut suivre que des coins qui restent tout le temps visible sur la séquence
traitée : c’est à dire qu’une fois le motif passe derrière un obstacle ,
on le perd complètement .
2.
l’ensemble
des « coins » obtenus avec le
détecteur des coins n’est pas assez grand ce qui limite le choix des coins à
suivre le long de la séquence .Alors pour augmenter le nombre de « coins »
, j’ai fait recours aux cartes de contours. Et à partir de ces cartes je
détecte les « coins » . L’algorithme se poursuit avec ces points .
Les contours sont construits à partir des
discontinuités rencontrées en parcourant l’image.
la carte des contours issue
de l’image de droite.
J’ai appliqué l’algorithme avec un
nouveau motif et une séquence semblable à la première .
La
séquence obtenue est assez satisfaisante :
( PS : C.S.S , le Club Sportif Sfaxien, est mon équipe préférée c’est pourquoi je lui fait la publicité )