REMPLACEMENT DE MOTIFS

 

 

 

Projet réalisé par HACHICHA HATEM

 

 

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.

Dans le calcul k est égale à 0.04

 

 

 

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é )