• Aucun résultat trouvé

Stage: Implémentation de l'algorithme de l'itération orthogonale Application à la réalité augmentée sur un système de stéréovision

N/A
N/A
Protected

Academic year: 2022

Partager "Stage: Implémentation de l'algorithme de l'itération orthogonale Application à la réalité augmentée sur un système de stéréovision"

Copied!
31
0
0

Texte intégral

(1)

Stage: Implémentation de l'algorithme de l'itération orthogonale

Application à la réalité augmentée sur un système de stéréovision

Lanquetuit

Cyril

7 septembre 2005

(2)

Résumé

Ce stage s'inscrit dans un programme de recherche dans le domaine de la réalité augmentée. La réalité virtuelle consiste à recréer un environnement articiel proche de la réalité grâce notamment à l'infor- matique (images de synthèses, sons, ...), la réalité augmentée elle se contente d'ajouter des information dans un environnement réel. Ici il est question d'ajouter des informations visuelles dans une vidéo, on va chercher à superposer un objet virtuel sur une cible réelle et faire en sorte que cet objet se déplace dans l'image lorsque la caméra est en mouvement comme s'il y existait en réalité, posé sur la cible.

La réalité augmentée est un secteur en développement, les recherches en sont encore principalement au stade expérimental mais de nombreuses applications sont possibles en médecine dans la GMCAO (Gestes Médicaux-Chirurgicaux Assisté par Ordinateur), dans le domaine de la téléopération, de la manipulation en milieu hostile ou en micromécanique. Les principaux avantages apportés par l'ajout d'informations virtuelles sont un gain en précision, la possibilité de simulation et de formation sur le site réel.

Une partie importante du stage sera consacrée au problème de la calibration de caméra. Ce problème primordial en vision par ordinateur est bien plus ancien que la réalité augmentée et se retrouve dans d'autres domaines, il a par exemples des applications à la vidéo surveillance ou à la robotique.

Le travail que j'ai eectué au cours de ce stage se décompose en deux parties, la première a consisté à réaliser la calibration des deux caméras composant la paire de lunettes video-see-through et la seconde à ajouter un objet virtuel dans le ux video capturant la scène réelle. Les lunettes video-see-through sont composée de deux petites caméras permettant l'acquisition d'images et de deux écran LCD qui se positionnent en face de chaque oeil et permettent d'acher les séquences vidéos acquise par les caméras après les avoir éventuellement traitée et enrichie.

La calibration de camera est un problème courant dans le domaine de la vision par ordinateur, cela correspond à la détermination de deux jeux de paramètres, les paramètres intrinsèques propres à la caméra :

αu=kuf oukuun coecient d'agrandissement horizontal en pixel/m etf la focale de la caméra αv=kvf oukv un coecient d'agrandissement vertical en pixel/m etf la focale de la caméra u0 l'abscisse du centre optique

v0l'ordonnée du centre optique

et les paramètres extrinsèques correspondant à la position et à l'orientation de la caméra dans le repère monde.

R la matrice de rotation du repère caméra par rapport au repère monde T le vecteur de translation du repère caméra par rapport au repère monde

La calibration s'eectue grâce à la mise en correspondance de points 3D dont les coordonnées sont connues dans le repère monde avec les points images 2D. On utilise des cibles dont les caractéristiques géométriques sont connues, on obtient ainsi les coordonnées 3D de certains point des cibles, on va ensuite rechercher les coordonnées des images de ces points grace à divers traitements de l'image. On utilisera notamment des méthodes de seuillage, d'extraction de contours ou d'extraction de coins d'OpenCV, une librairie C dédiée au traitement d'image. Une fois l'appariement des points 3D et de leur images 2D réalisé, on peut calculer les deux jeux de paramètres recherchés.

Disposant des paramètres intrinsèques et extrinsèques de la caméra, on peut alors calculer les projec- tions d'un objet 3D virtuel dans les plans images successifs constituant le ux video. Dans la pratique on se contentera de superposer une cible virtuelle (une gure géométrique liée à un repère orthonormé) sur la cible réelle et on eectuera le tracking : lorsque la caméra est en mouvement la cible virtuelle reste en permanence superposée à la cible réelle.

(3)

Table des matières

1 Présentation 2

1.1 Le Laboratoire . . . 2

1.2 Les hommes . . . 2

1.3 Le marériel . . . 3

2 La théorie 4 2.1 Le modèle de sténopé . . . 4

2.2 La méthode de calibration de Faugeras Toscani . . . 6

2.3 L'algorithme d'itération orthogonale . . . 7

2.4 L'agorithme Didier . . . 9

2.5 Les divers systèmes de cibles . . . 11

3 La pratique 13 3.1 Le système de librairie d'objets . . . 13

3.2 Acquisition d'images . . . 14

3.3 Traitement d'image . . . 14

3.3.1 Conversion de format . . . 14

3.3.2 Filtrage . . . 15

3.3.3 Détection des coins . . . 15

3.3.4 Recherche des paramètres intrinsèques . . . 16

3.3.5 Calcul des paramètres extrinsèques . . . 16

3.3.6 Calcul de la transformation pour obtenir la stéréo-vision . . . 17

3.4 Achage et ajout d'un objet virtuel à la scene réelle . . . 17

4 Tests et Résultats 18 4.1 Procédé expérimental . . . 18

4.2 Résultats . . . 19

4.3 Conclusion . . . 22

5 Conclusion 23 Références . . . 24

(4)

Chapitre 1

Présentation

Ce stage de trois mois a été eectué entre Juin et Septembre 2005, au Laboratoire des Systèmes Complexes situé au 40 rue du Pelvoux à Evry, le laboratoire et l'Institut Universitaire Proessionnel d'Evry partagent les mêmes locaux. Ce chapitre présente brievement le lieu du stages, les personnes qui y ont joué un rôle et le matériel utilisé.

1.1 Le Laboratoire

Les activités du Laboratoire Systèmes Complexes sont centrées essentiellement sur la problématique de la Machine Intelligente. Il s'agit de réaliser des machines ou systèmes physiques qui sont en mesure de percevoir et d'agir dans un environnement variable (connu ou inconnu), capables de raisonner de façon rationnelle sur une diversité de tâches ou de données et sur les moyens nécessaires pour les accomplir de façon autonome ou en coopération avec un opérateur humain. Cet objectif nécessite une démarche scientique et technique menant en parallèle et étroitement les développements de la théorie et de l'ex- périmentation. Ainsi les chercheurs du laboratoire investissent leurs eorts dans l'approfondissement des principaux thèmes de la machine intelligente au niveau des concepts et méthodes, et de la mise en oeuvre des résultats théoriques sur des processus réels.

Les activités du LSC s'articulent autour de trois thèmes : Traitement et analyse des données et images, Réalité virtuelle et vision articielle, Modélisation et contrôle des systèmes complexes.

Le premier thème développe des outils mathématiques de traitement des données, des statistiques classiques aux réseaux de neurones en passant par la logique oue avec une implication particulière en image.

Le second thème, celui dans lequel s'inscrit ce stage, s'intéresse à la réalité virtuelle et la réalité aug- mentée, l'un des axes prioritaires du laboratoire. La mise en oeuvre d'un système de réalité virtuelle (ou réalité augmentée) nécessite la modélisation de l'environnement. Elle est réalisée par la vision articielle (capteur intelligent, vision 2D/3D).

Le dernier thème, complémentaire et transversal aux deux autres, est transdisciplinaire. Il favorise les échanges au sein du laboratoire. Il se divise en trois principaux sous-thèmes : contrôle de véhicule, coopération entre les entités intelligentes et mécatronique.

1.2 Les hommes

Fakhr-eddine Ababsa, enseignant chercheur

C'est mon maître de stage, il m'a donné les objectifs à réaliser, fourni les documents pour comprendre les enjeux du stage, le matériel (software et hardware) nécessaire à la réalisation du stage ainsi que de précieux conseils concernant le traitement d'image et les personnes à contacter en cas de diculté.

Jean-Yves Didier, doctorant

Il est à l'origine du métaruntime, un système de librairies d'objets chargés dynamiquement au cours de la lecture de chiers XML (Extensible Markup Language). C'est grâce à ce système que j'ai pu développer une application de l'algorithme d'itération orthogonale à la réalité augmentée. Il m'a considérablement aidé par ses conseils judicieux mais également par ses interventions salvatrices concernant notamment

(5)

l'installation du driver des lunettes sous linux, les recompilations de noyau ou encore pour obtenir le mode twin-view nécessaire pour pouvoir utiliser les deux sorties videos.

Madjid Maidi, doctorant

Il m'a aidé à comprendre le fonctionnement ambigu de certaines fonctions d'OpenCV et à vérier le fonctionnement de l'algorithme d'itération orthogonale grâce à un programme Matlab.

Malik Mallem, enseignant chercheur

Il dirige supervise le groupe Réalité augmentée, c'est grâce à lui que j'ai eu l'opportunité de faire ce stage.

1.3 Le marériel

Une station de travail

-Pentium Xéon 2,8 GHz -1000 Mo de RAM

-Carte graphique Nvidia Quadro 64 Mo avec 2 sorties video

Une Paire de lunette ARVision-3D, constituée de deux caméras et de deux petits écrans lcd (un pour chaque oeil). La transmission des images des caméras au PC se fait par l'intermédiaire d'un cable USB puis les images, après avoir été éventuellement modiées sont retransmises aux écrans LCD via deux cables vidéos. La machine utilisée doit donc impérativement être munie de deux sorties vidéos sinon on ne pourra voir que d'un oeil.

Fig. 1.1 Lunettes video-see-through ARVision3D et cible

Des cibles imprimées sur des feuilles A4. Les cibles utilisées sont constituées d'une bordure dont la

largeur représente 25% de la largeur totale et d'un motif placé au centre. Le motif est un code binaire

sur 16 bits, chaque bit étant associé à un petit carré noir (pour 0) ou blanc (pour 1). Le détail du codage

(6)
(7)

Chapitre 2

La théorie

L'objectif des traitements d'images que l'on va eectuer par la suite est d'obtenir une connaissance de la scène ou du moins de certains objets de la scène tridimensionnelle observée (position et orientation relativement à la caméra) à partir des images planes acquises par les caméras pour éventuellement y ajouter des informations supplémentaires comme du texte ou comme ce sera le cas au cours de ce stage, d'un motif 3D venant se superposer sur une cible en noir et blanc.

Pour calculer la position et l'orientation de ces objets, qui seront pour nous des cibles noir et blanche, il est nécessaire de formaliser le problème et de modéliser mathématiquement une caméra, c'est à dire établir les formules qui lient les coordonnées des points de la scène à celle de leurs images dans des repères bien précis.

Nous allons voir dans la première partie le modèle de sténopé [9], c'est à dire la modélisation mathéma- tique d'une caméra permettant de formaliser les relations entre les coordonnées 3D d'un point de l'espace avec ses coordonnées bidimensionnelles sur l'image acquise par la caméra. Ces relations dépendent de deux jeux de paramètres : les paramètres intrinsèques propres à la caméra etles paramètres extrinsèques caractérisant sa position et son orientation dans l'espace. La deuxième partie est consacré à la descrip- tion de la méthode de Faugeras-Toscani qui permet de calculer ces paramètres à partir d'un appariement entre points réels dont les coordonnées 3D sont connues et leur images dont ont obtiendra les coordonnées 2D. L'algorithme d'itération orthogonal et l'algorithme Didier exposés dans les partie 3 et 4 servent à estimer la pose de la caméra, il permettent de déterminer les paramètres extrinsèques de la caméra mais nécessitent une connaissance préalable des paramètres intrinsèques.

2.1 Le modèle de sténopé

La modélisation

On considère le repère monde (O,I,J,K) et un point M du monde de coordonnées (X,Y,Z). Dans le repère associé à la caméra (C,I',J',K'), ce même point M a pour coordonnées (X',Y',Z') (voir gure (2.1)).

 X0 Y0 Z0

=

r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz

 X Y Z 1

La matriceA=

r11 r12 r13 tx

r21 r22 r23 ty

r31 r32 r33 tz

correspond à la transformation rigide permettant de passer du repère monde au repère caméra, c'est à dire une rotation suivit d'une translation.

L'image m du point M dans le plan image a pour coordonnées (x,y,z) dans le repère lié à la caméra.

Le plan image est situé à une distance f (la focale de la caméra) du centre du repère associé à la caméra, on lui associe un repère 2D (I,U,V) tel que les axes U et V soient respectivement parallèle à I' et J' et que le centre I du repère ait pour coordonnées (u0,v0,f) dans (O',I',J',K'). Le point image m a pour coordonnées (u,v) dans (I,U,V).

(8)

Fig. 2.1 modèle de la caméra On a ainsi les relations suivantes :

x=f X0 Z0 y= f Y0

Z0 z=f

u=kux+u0 v=kvx+v0 Ce qui sous forme matricielle nous donne :

 su sv s

=

kuf 0 u0 0 kvf v0

0 0 1

 X0 Y0 Z0

où s est un facteur d'échelle (s=Z0)qui correspond à l'éloignement du plan P parallèle à (O,I',J') passant par M. Comme un pointM1/S de coordonnées (X'/s,Y'/s,Z'/s) aura pour image le même point m que le point M de coordonnées (X,Y,Z) on peut choisir s= 1ce qui permet d'obtenir directement u et v.

(9)

Les coordonnées pixélliques du point image m sont donc données par la formule générale suivante :

 su sv s

=

kuf 0 u0 0 kvf v0

0 0 1

r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz

 X Y Z 1

La résolution

On cherche à connaître les relations entre les coordonnées 3D (X, Y, Z) d'un point de la scène avec celles 2D(u, v)de son image. Autrement dit, on doit déterminer les paramètres intrinsèques de la caméra

I=

kuf 0 u0

0 kvf v0

0 0 1

ainsi que les paramètres extrinsèques

E=

r11 r12 r13 tx

r21 r22 r23 ty r31 r32 r33 tz

=

 r1 tx

r2 ty r3 tz

à partir de l'équation

 su sv s

=

m11 m12 m13 m14 m21 m22 m23 m24 m31 m32 m33 m34

 X Y Z 1

en notantmi= (mi1mi2mi3)pouri= 1,2,3, en identiantM =

m1 m14

m2 m24

m3 m34

avecIEet en tenant compte des propriétés d'orthogonalité de la rotation, on obtient un ensemble d'équations permettant de calculer les paramètres intrinsèques et extrinsèques de la caméra à partir des coecients deM :

r3=m3 u0=m1·m3 v0=m2·m3 αu=km1×m3k αv =km2×m3k r1= 1

αu(m1−u0m3) r2= 1

αv(m2−v0m3) tx= 1

αu(m14−u0m34) ty = 1

αu(m24−v0m34) tz=m34 ouαu=kuf etαv=kvf

Les méthodes de calibration s'appuyant sur le modèle de sténopé ont donc pour objectif d'estimer les coecients de la matrice de projection M à partir des coordonnées 2D (dans l'image) et 3D (dans le repère monde) connues pour un certains nombre de points.

(10)

2.2 La méthode de calibration de Faugeras Toscani

Reprenons la relation fourni par le modèle de sténopé :

 su sv s

=

m11 m12 m13 m14

m21 m22 m23 m24

m31 m32 m33 m34

 X Y Z 1

La méthode de Faugéras-Toscani [6] consiste à estimer les coecients de la matriceM en utilisant le fait quekm3k=kr3k= 1. En récrivant la relation précédente on obtient :

m11X+m12Y +m13Z+m14−m34−m31Xu−m32Y u−m33Zu= 0 m21X+m22Y +m23Z+m24−m34−m31Xu−m32Y u−m33Zu= 0

Si on dispose de n points de coordonnées pixelliques (ui, vi) sur l'image et de coordonnées mètriques (Xi, Yi, Zi)dans le repère monde, on a alors la relation matricielle

...

Xi Yi Zi 1 0 0 0 0 −ui

0 0 0 0 Xi Yi Zi 1 −vi

...

 m11 m12

m13

m14

m21

m22

m23

m24

m34

 +

...

−uiXi −uiYi −uiZi

−viXi −viYi −viZi

...

 m31

m32

m33

= 0

soit

BX9+CX3= 0 (2.1)

avec

B=

...

Xi Yi Zi 1 0 0 0 0 −ui 0 0 0 0 Xi Yi Zi 1 −vi

...

 ,C=

...

−uiXi −uiYi −uiZi

−viXi −viYi −viZi

...

 ,

X9=

 m11 m12 m13

m14

m21

m22

m23

m24

m34

et X3=

 m31

m32

m33

On cherche donc à minimiserQ=BX9+CX3 ce qui avec la contraintekX3k= 1, le critère à minimisé peut donc s'écrire

BX9+CX3+λ(1−X3tX3) En dérivant par rapport à X9 et par rapport àX3 on a alors

BtBX9+BtCX3= 0CtBX9+CtCX3+λX3= 0 soit

X9=−(BtB)−1BtCX3DX3=λX3

(11)

avec

D=CtC−CtB(BtB)−1BtC Ce qui en remplaçant dans(2.1)donne

Q=X3tDX3=λX3tX3

Détant une matrice 3 * 3 réelle symétrique et positive elle, admet donc 3 valeurs propres réelles positives.

X3 étant un vecteur propre de D, pour minimiser le critèreQ=λ, il sut de calculer le vecteur propre associé à la plus petite valeur propre et de le normaliser, on obtient ainsi X3 au signe près on peut alors calculer X9. On transformera éventuellement X3 en −X3 et X9 en −X9 de manière à obtenir m34=tz>0ce qui correspond à une image située devant la caméra (et non derrière !).

2.3 L'algorithme d'itération orthogonale

L'algorithme d'irération orthogonal [1] permet de calculer la pose d'une caméra dont on connait les paramètres intrinsèques, il repose sur l'idée très simple suivante : entre deux images successives d'une séquence vidéo, la caméra bouge très peu, les paramètres extrinsèques (rotation et translation du repère caméra par rapport au repère monde) varient donc très peu, les paramètres extrinsèques correspondant à l'image t sont donc une approximation des paramètres extrinsèque correspondant à l'image t+1. Considérons un ensemble de points de coordonnées pi dans le repère monde, qi dans le repère caméra ayant pour image dans le plan image normalisévi de coordonnées(ui,vi,1)dans le repère caméra. En notant

R= rt1 rt2 r3t ett= tx ty tz les paramètres extrinsèques de la caméra, on a alors les relations suivantes :

ui= r1pi+tx

r3pi+tz vi= r2pi+ty r3pi+tz

et

qi=Rpi+t

Si on parvient à déterminer lesqià partir des points images, on obtiendraRetten résolvant le problème des moindres carrés suivant :

minR,t

X

i

kRpi+t−qik2, avecRtR=I (2.2) Un tel problème de minimisation sous contrainte peut être résolu en utilisant les quaternions ou la Décomposition en Valeurs Singulières (SVD). La méthode SVD procède ainsi : On considèrep¯= 1nP

ipi etq¯=n1P

iqi les barycentres respectifs depi etqi puis on déni p0i=pi−p, q¯ i0 =qi−q¯ et

M =X

i

qi0p0ti

1

nM représente la matrice de covariance entrepi etqi. On montre alors que la solution du problème (2.2) est donnée par

R=arg maxR(RtM) (2.3)

t= ¯q−Rp¯ (2.4)

Soit(U, σ, V)une SVD de M, c'est à direUtM V =σLa solution de(2.3) est alors R=V Ut

(12)

Fig. 2.2 projection sur le rayon optique passant parvi et C

L'algorithme porte le nom d'itération orthogonal car il utise le fait que la projection orthogonale de qi =Rpi+t sur le rayon optique passant parvi et C le centre optique de la caméra n'est autre queqi

puisquevi est l'image deqi. La matrice de projection sur ce rayon optique étant Vi= vivit

vtivi

on a alors

Rpi+t=Vi(Rpi+t)

l'erreur sur la matrice de projection se traduit donc par une erreur ei = (I−Vi)(Rpi+t)dans l'espace objet. On va chercherR ettqui minimise la somme des carrés de ces erreurs :

E=X

i

keik2=X

i

k(I−Vi)(Rpi+t)k2 (2.5)

Les informations données par lesvi sont entièrement contenues dans les Vi. Pour R donné, on montre que l'on a

t(R) = 1 n(I−1

n X

i

Vi)−1X

i

(Vi−I)Rpi (2.6)

On peut montrer que(I−1nP

iVi)est dénie positive, et donc(2.6)a bien un sens. On déni alors qi(R) =Vi(Rpi+t(R))etq(R) =¯ 1

n X

i

qi(R)

L'équation (2.5) peut alors être réécrite sous la forme E(R) =X

i

kRpi+t(R)−qi(R)k2

(13)

On remarque alors que cette équation ressemble fortement à (2.1) mais on ne peut pas résoudre directe- mentRen utilisant

M(R) =X

i

q0i(R)p0ti oùp0i =pi−p¯etq0i(R) =qi(R)−q(R)¯

carM dépend ici de R. En revenche on peut alors calculer Ritérativement de la façon suivante : Si on connaitR(k), on peut alors calculert(k)=t(R(k))et q(k)i =R(k)pi+t(k) et

R(k+1)=arg minRX

i

kRpi+t−Viqi(k)k (2.7)

R(k+1)=arg maxR(RtM(R(k))) (2.8)

LesViq(k)i sont alors traité comme lesqi dans (2.1). On obtient ainsiR(k+1)grace à la SVD deM(R(k)), puis on poserat(k+1)=t(R(k+1))

Une solutionR au problème de l'estimation de la pose en utilisant l'algorithme d'itération orthogonal est donc un point xe de la suite dénie par (2.7) et vérie

R=arg minR

X

i

kRpi+t−Vi(Rpi+t(R))k

Il est important de noter que s'il a été prouvé que l'algorithme d'itération orthogonal convergeait, rien n'assure que la pose vers laquelle il converge soit celle correspondante à la pose réelle. C'est pourquoi il est très important d'initialiser l'algorithme avec une matriceR(0) proche de la bonne solution.

Dans la pratique, pour calculer la pose correspondante à l'imaget+ 1d'une séquence vidéo on choisira pourR(0)la matrice de rotation de la pose calculée à l'imagetet on xera un paramètrepour obtenir un critère d'arrêt de l'algorithme sur l'erreur dans lespace objet : on eectuera les itérations jusqu'a obtenirE(R)< .

Pour la première image, étant donné qu'on ne dispose pas de la pose de l'image précédente, il faudra initialiser R(0) avec un autre algorithme de calcul de pose, par exemple l'algorithme Didier présenté ci-dessous.

2.4 L'agorithme Didier

Cet algorithme [3] peut être utilisé pour calculer les paramètres extrinsèques de la caméra en connais- sant au préalable ses paramètres intrinsèques. Il a l'avantage de calculer la pose à partir des coordonnées pixelliques sur l'image de seulement quatre points coplanaires formant un rectangle. C'est typiquement la situation dans laquelle on se retrouve lorsque l'on cherche à calculer la pose d'une caméra à partir de l'acquisition d'une image dans laquelle gure une cible carrée.

Considérons les quatre coins d'un rectangleABCDde coordonnées respectives(XA, YA, ZA),(XB, YB, ZB),

(XC, YC, ZC),(XD, YD, ZD)dans le repère caméra et de coordonnées pixelliques(xA, yA),(xB, yB),(xC, yC),(XD, yD) sur l'image. Comme

kABk~ =kDC~ k

XB−XA

YB−YA ZB−ZA

=

XC−XD

YC−YD ZC−ZD

mais on a pour les pointsA, B, CetD les relations x= kuf X

Z +u0

y= kvf Y Z +v0

l'égalité de la longueur des côtés devient donc

xB−u0

kuf ZBxAk−u0

uf ZA yB−v0

kvf ZByAk−v0

vf ZA

ZB−ZA

=

xC−u0

kuf ZCxDk−u0

uf ZD yC−v0

kvf ZCyDk−v0

vf ZD

ZC−ZD

(14)

en multipliant la première ligne parf on a

xBZB−xAZA−u0(ZB−ZA) =xCZC−XDZD−u0(ZC−ZD)

on peut simplier en utilisant ZB−ZA = ZC−ZD, et en faisant de même avec la seconde ligne, on

obtient 

xBZB−xAZA yBZB−yAZA

ZB−ZA

=

xCZC−xDZD yCZC−yDZD

ZC−ZD

Quitte à diviser toutes les dimensions du rectangle par ZA, on peut considérer que ZA0 = 1, ZB0 =

ZB

ZA, ZC0 =ZZC

A, ZD0 =ZZD

A, on a alors le système linéaire suivant

xB −xC xD

yB −yC yD

1 −1 1

=

 xA

yA

1

Ce qui, après résolution du système de Cramer donne ZB0 = 1

detM[xA(yD−yC) +yA(xC−xD) + (xDyC−xCyD)]

ZC0 = 1

detM[xA(yD−yB) +yA(xB−xD) +xDyB−xByD] ZD0 = 1

detM[xA(yC−yB) +yA(xB−xC) +xCyB−xByC] detM = (xDyC−xCyD) + (xByD−xDyB) + (xCyB−xByC)

Pour connaîtreZA il sut de connaître la mesure d'un coté du rectangle par exemplekABk~ , on a alors ZA= kABk~

kA~0B0k les coordonnées deA~0B0 sont connues à partir des équations

XA0 =ZA0

kuf(xA−u0) YA0 =ZA0

kvf(yA−v0) XB0 = ZB0

kuf(xB−u0) YB0 =ZB0

kvf(yB−v0)

(15)

On obtient alors ZB, ZC et ZD Comme on connait les autres coordonnées des pointsA, B, C etD par les relation suivantes

XA= ZA

kuf(xA−u0) YA= ZA

kvf(yA−v0) XB = ZB

kuf(xB−u0) YB = ZB

kvf(yB−v0) XC= ZC

kuf(xC−u0) YC= ZC

kvf(yC−v0) XD= ZD

kuf(xD−u0) YD= ZD

kvf(yD−v0)

On peut alors calculer kABABk~~ , kADADk~~ et kAB×AB×~~ ADADk~~ qui forme un repère orthonormé associé à la cible. En écrivant les coordonnées de ces vecteur dans une matrice, on obtient alors la matrice de rotation permet- tant de passer du repère associé à la cible au repère caméra.

R= AB~

kABk~ , AD~

kADk~ et AB~ ×AD~ kAB~ ×ADk~

Si on choisit pour origine du repère associé à la cible son centre la translation entre les deux repères est alors

T =

Xa+XB+XC+XD

YA+YB+Y4 C+YD ZA+ZB+Z4 C+ZD

4

Pour simplier les calculs, on choisira souvent pour repère monde le repère associé à la cible, les para- mètres extrinsèques de la caméra sont alors

E= R T

Si repère monde et repère associé à la cible sont distincts, il faut en plus à partir des coordonnées des coins des cibles calculer la matrice de rotation et le vecteur de translation permettant de passer du repère monde au repère associé à la cible et ensuite composer les transformations, c'est à dire multiplier les matrices de rotation et additionner les vecteurs de translation.

2.5 Les divers systèmes de cibles

Les cibles, ce sont les objets réels dont ont connait les coordonnées 3D de certains points dans le repère monde, c'est à partir de l'appariemment entre ces points et leur images qui possèdent des coordonnées 2D que l'on va pouvoir calibrer la caméra. Pour cela les cibles utilisées

doivent permettre de déterminer sans ambiguité leur position et leur orientation relativement à une caméra calibrée.

ne doivent pas favoriser une orientation.

doivent faire partie d'un ensemble d'images clairement discernable.

doivent être facile à localiser

doivent pouvoir être localisées sur une large échelle de capture

(16)

C'est pourquoi il est nécessaire de faire certains choix concernant la nature, la forme et la couleur des cibles. Pour ce qui est de la nature des cibles nous avons le choix entre des diodes éléctroluminescentes (certaines cibles émettent des infrarouges), des bandes rééchissantes ou des motifs colorés ou mono- chromes imprimés sur de simples feuilles de papier. Pour leur facilité de réalisation, leur aspect pratique et leur simplicité d'utilisation nous opterons pour la troisième solution. La forme de la cible est liée aux positions des points particuliers dont on connaîtra les coordonnées 3D avant de les apparier avec leur image. Pour simplier les calculs il est préférable que ces points forment des gures géométriques régulières, aussi les cibles seront elles rondes, triangulaires, carrées...

Les algorithmes permettant de détecter la position d'une caméra relativement aux cibles comme ceux présentés précédement nécessitent d'obtenir les coordonnées 2D et 3D d'au moins 4 points, en prendre plus améliore généralement la précision. Pour facilité la détections de ses points sur l'image il est préfé- rable qu'il corresondent aux coins d'une gure, il est donc commode de choisir une cible carrée. Certains dispositifs de réalité augmentée utilisent malgré tout des cibles circulaires dont le motif intérieur est un

"code bar circulaire" [2].

Quant à la couleur, les cibles que nous utiliserons seront monochromes pour au moins trois raisons.

La résolution des couleurs change en fonction des caméras.

Les algorithmes de localisation sont plus ecaces sur des images monochromes

L'oeil humain est plus sensible à la diérence de luminosité qu'aux nuances de couleurs et les systèmes d'imageries qui ont été construits à partir de celui-ci le sont également.

Les cibles utilisées seront donc des matrices carrées noires et blanches, elles représenteront un motif constitué de petits carrés noirs entourés d'une bordure carrée noire dont la largeur sera 14 de la taille totale de la cible. Le motif intérieur doit permettre l'identication de la cible de manière unique et per- mettre de déterminer l'orientation de celle ci.

L'ARToolKit est une librairie de référence en matière de réalité augmentée, elle permet la recherche de la position et de l'orientation d'une caméra, dispose d'un comparateur de motif, code pour la calibration video et des applications optical see through et ses performances sont susantes pour réaliser des appli- cation de réalité augmentée en temps réel. Les cibles que nous utilisons sont du même type que celle de l'ARToolKit bien que les motifs utilisés ici soient plus rudimentaires, ce sont des matrices constituées de carrés noirs sur fond blanc.

Le système de cible que nous avons adopté utilise un codage sur 16 bits, c'est à dire une matrice 4*4 où les bits sont ordonnés de gauche à droite et de bas en haut. Sur la cible (2.3) le carré blanc en heut à gauche correspond au code pour20= 1, le carré blanc en haut à droite pour23 = 8et le carré blanc en bas à droite pour 215 = 32768en additionnant toutes les puissances de 2 correspondant aux carrés blancs on obtient le code correspondant au motif : 45485. Les codes correspondant à des motifs invariants par une rotation de 90, 180 ou 270 degré ne sont pas utilisables car ils ne permettent pas de déterminer l'orientation exacte de la cible.

Fig. 2.3 motif correspondand au code 45485

(17)

Chapitre 3

La pratique

Ce chapitre présente dans un premier temps l'environnement dans lequel ont été réalisées les ap- plications permettant l'acquisition, le traitement et l'achage des images puis le détail de chacune de ces trois phases. Les applications sont des suites d'objets écrit en C++ et communiquant entre eux par l'intermédiaire de signaux et de slots, ces divers objets sont assemblés pour former un ensemble cohérent et fonctionnel grâce à un système de librairie d'objets.

3.1 Le système de librairie d'objets

L'équipe qui travail dans la salle EVRA (Environnement Virtuel pour la Réalité Augmentée) et particulièrement Jean-Yves Didier et Vincent Leligeour ont développé un outil pour le prototypage rapide d'applications. Ce système permet la création d'application à partir de la lecture d'une feuille XML décrivant les relations entre des objets contenus dans des librairies chargeables dynamiquement [4]. Ce système repose sur trois concepts fondamentaux :

Le principe des "plug-ins" permet d'étendre dynamiquement les capacités d'une application à l'exécution. Un tel mécanisme peut fonctionner grâce à des scripts mais la solution adoptée ici est basée sur des librairies pré-compilées chargeables dynamiquement et qui doivent respecter une certaine interface. Le langage dans lequel doivent être écrites les librairies est libre, seule l'interface est imposée.

Le mécanisme signal/slot est très répandu dans le domaine de la conception d'applications gra- phiques. Chaque objet possède des signaux et des slots, lorsqu'un objet souhaite communiquer avec un autre, il enverra le contenu de sa communication par l'intermédiaire d'un signal (qui correspond donc à une sortie d'un objet). Ce contenu sera reçu par l'objet destinataire via un slot (qui corres- pond à une entrée). Ce mécanisme permet la connexion et la déconnexion à la demande des objets.

A un slot peuvent être connectés plusieurs signaux et vice-versa. La librairie QT possède, entre autres, ce mécanisme signal/slot, c'est elle qui sera utilisée pour implémenter les objets.

Le principe d'introspection permet à un objet d'exporter lui même sa propre interface, les méthodes et les membres qui la composent, pendant l'exécution du programme. En combinant ce principe aux précédent, on peut créer des librairies d'objets précompilés à même de communiquer entre eux sans que les uns connaissent les interfaces des autres.

Avant de réaliser une application, il faut implémenter un certain nombre d'objets QT qui sont des classes C++ héritant de la classe qobject. Cet objet contiendra des méthodes dont les signaux et les slots ainsi que des attributs. Pour qu'un objet puisse communiquer avec un autre, il est nécessaire que le contenu du signal du premier soit du même type que le slot du second.

La création d'une application correspond à l'écriture d'un chier XML qui doit respecter un certain format, il doit contenir les cinq blocs suivants :

denes qui contient la liste des constantes pré-dénies

librairies qui contient la liste des librairies à charger au démarrage objects qui donne la liste des objets utilisés dans l'application sheets qui décrit les diérentes feuilles composant l'application statemachine qui donne l'automate associé à l'application

(18)

L'application peut être vue comme un automate dont les états sont les diérentes feuilles. Chaque feuille regroupe un ensemble d'objets qui communiquent entre eux et est composée de :

un tokensender objet particulier qui émettra un signal correspondant à la transition d'une feuille à une autre

des prétconnexion initialisation de certains objets avant que les signaux soient connectés aux slots adéquats

des connexion qui permettent de relier un signal provenant d'un objet au slot d'un autre à condition que les contenus du signal et du slot soient de même type

des postconnexion initialisation de certains objets après que les connexions signal/slot aient été eectuées

Un exemple de chier XML se trouve en annexe, son examen permet de mieux se rendre compte du système de balise utilisé pour la description d'une application.

Le metaruntime est l'application qui lit le chier XML et charge dynamiquement les objets à partir de celui ci puis coordonne leurs interactions. Je ne connais pas le fonctionnement interne du métaruntime, je me suis contenté de l'utiliser.

Le metagraph est un autre outil qui fait partie de ce système. Il permet, à partir d'un chier XML, de générer un graph représentant les divers objets et leur interactions, en d'autres termes, il ore la possibilité d'avoir une représentation graphique de l'application correspondante au chier XML. C'est très pratique lorsqu'on veut vérier rapidement la structure d'une application, surtout si celle ci comporte un nombre important d'objets et de connexions.

Le metaeditor est un logiciel réalisé au cours d'un stage de 6 mois par Yoann Petit, il permet de créer une application de manière graphique. L'édition du chier XML est remplacée par l'édition graphique d'un automate et de ses diverse feuilles contenant les objets, leurs initialisations et leurs connexions. Ce logiciel est également très pratique si l'on ne souhaite pas passer des heures à créer des applications.

3.2 Acquisition d'images

L'acquisition des images composant la séquence vidéo sera faite par l'intermédiaire des deux caméras des lunettes ARVision-3D. Le driver de ces caméras a été installé sous linux par Jean-Yves Didier qui m'a également aidé à réaliser un objet permettant l'acquisition des images, le code de cet objet gure en annexe, c'est le chier cameravrm.cpp. Grâce à la modularité du système du métaruntime, ce périphérique d'acquisition peut être remplacé par un autre objet dont les signaux et les slots sont identiques. Ainsi une même application peut fonctionner indiérement en utilisant une caméra de l'ARVision-3D, une web cam, une autre camera, une video enregistrée,...

3.3 Traitement d'image

Nous allons maintenant détailler la chaine de traitement des images le plus clairement possible, la gure (3.1) schématise globalement le système cependant pour se faire une idée plus précise, il est vivement conseillé de se référer au schéma vrmstéréo4.xml.ps fourni en annexe.

3.3.1 Conversion de format

La première étape de traitement à réaliser après l'acquisition d'une image est sa conversion au format OpenCV. Cette conversion est réalisée par un objet appelé rawcvconvertor et qui reçoit via un slot l'image fournie par l'objet cameravrm chargé de l'acquisition. Le rawcvconvertor récupère le buer de données correspondant à l'image, crée à partir de celui-ci une CVimage et l'émet via un signal pour qu'un objet suivant puisse continuer le traitement.

3.3.2 Filtrage

Dès les premiers tests d'achage d'une image acquise par l'intermédiaire des lunettes ARVision-3D, il est apparu que le capteur CMOS ne captait pas la lumière de manière homogène, certains pixels étaient plus lumineux que d'autres, il en résultait sur l'image un bruit statique, il a donc fallu réaliser un ltre

(19)

Fig. 3.1 Chaine de traitement

pour l'éliminer. Concrètement cela se résume à faire l'acquisition d'une image dans le noir total (du fait du bruit statique l'achage de cette image n'est pas complètement noire, certains pixels restent gris), mémoriser la valeur du buer de données RGB correspondant à cette image puis soustraire ces valeurs à chacune des images acquises par la suite pour supprimer ce bruit statique. Cette méthode, bien que simpliste s'est avérée concluante en prenant pour image noire de référence (celle qui doit correspondre à un tableau remplit de zéro) la moyenne d'une dizaine d'images prises dans le noir total.

3.3.3 Détection des coins

Après le ltrage du bruit statique, on doit extraire les coordonnées des coins des cibles éventuellement présentes sur l'image, cela se fera sur une image binarisée et cette binarisation n'est possible que sur une image n'ayant qu'un seul canal comme par exemple des nuance de gris codé sur huit bit. Un nouvel objet va donc extraire de la composante rouge (choisie arbitrairement) qui peut être considéré comme une image noir et blanc avec des niveau de gris sur 8 bits. Celle-ci sera binarisée à un seuil donné pour donner une image ne contenant que du blanc et du noir, c'est à dire que tous les pixels dont le niveau de gris est supérieur au seuil sont changés en noir et les autres en blanc. Un autre objet, le threshold- sampler, recevra via un slot la nouvelle image monochrome pour eectuer le calcul du seuil moyen pour la binarisation de l'image.

La détéction des cibles va ensuite être eectuée grâce à la collaboration de trois objets : le pattern- tracker, le patterndetector et le patternfusion. Un quatrième objet, le patterndataloader, vient initialiser cette chaine de trois objets en émettant un signal contenant le nombre de cibles à détecter, leur codes et leurs coordonnées 3D dans le repère monde (celle de leur centre, ainsi que leur orientation).

Le patterntracker :

A chaque cible transmise par le patterndataloader correspond une structure de données contenant entre autre le code du motif de la cible, les coordonnées 3D dans le repère monde de ses coins et leur coordonnées 2D dans l'image (le dernier champ est initialement vide). Une fois qu'une cible a été détectée ses coordonnées 2D sont stockées pour pouvoir être utilisées pour accélérer la recherche des coins dans l'image suivante. En eet, entre deux images successives, les coordonnées des points images correspon- dant aux angles des cibles varient peu en général aussi pour une image donnée, si une cible a été détéctée lors du traitement de l'image précédente (un booléen contenu dans la structure qui lui est associé a reçu la valeur vrai) au lieu de rechercher les coins de cette cible dans toute l'image, le patterntracker eectue la recherche des coins dans le voisinage des points correspondants aux coins de la cible de l'image précédente. Le patterntracker transmet au patternfusion les structures des cibles ainsi détectées et transmet au patternfusion les structures correspondant aux cibles qui ne peuvent pas être détectées de cette manière car elles n'ont pas été reconnues lors du traitement de l'image précédente.

Le patterndetector :

Il réalise l'extraction des contours pour obtenir les 4 coins d'une cible, il ordonnance ensuite les 4 coins obtenus pour les faire correspondre avec les points dont on connait les coordonnées 3D. C'est la qu'in- tervient le motif intérieur à la cible, en eet, pour pouvoir associer les coordonnées 2D du point image

(20)

au point 3D correspondant, il est nécessaire de connaître l'orientation de la cible. A partir des quatres coins, il va construire une grille pour chercher quels sont les carré noirs à l'intérieur de la cible et ainsi déterminer si le motif correspond bien à celui rechercher et quelle est son orientation. Points 2D et points 3D sont ensuite appariés dans le sens horraire. L'appariement des points eectué, le patterndetector remplit les structures de données correspondantes aux cibles avec les coordonnées 2D des points images.

Les structures de données associées à ces cibles sont ensuite émises via un signal connecté à un slot du patternfusion.

Le patternfusion :

Il se contente de rassembler les structures de données correspondantes aux cibles détectées par les deux méthodes : tracking et recherche dans la totalité de l'image, puis transmet les structures des cibles dé- tectées à un objet qui sera chargé du calcul de la pose. Selon l'application que l'on souhaite réaliser, si l'on souhaite par exemple calculer la pose avec un algorithme nécessitant plus de 4 points et qu'on ne dispose que d'une seule cible il convient d'eectuerla recherche de points supplémentaires intérieurs à la cible grâce à un objet comme le patterncorner. Connaissant les 4 points extérieurs et la géométrie du motif de la cible grâce à son code on peut rechercher les coordonnées théoriques des autres points correspondants aux angles formés par le motif intérieur de la cible. On utilise ensuite le même principe que celui du patterntracker pour rechercher les coins dans l'image du motif au voisinage des points théoriques obtenus précédemment. A ce stade de la chaîne de traitement on dispose d'un ensemble de

points dont on connait les coordonnées 3D dans le repère monde et les coordonnées 2D dans l'image. A partir de ses données on vas calculer les paramètres intrinsèque et extrinsèques de la caméra grâce aux algorithmes présentés dans le chapitre consacré à la théorie.

3.3.4 Recherche des paramètres intrinsèques

Dans un premier temps, les paramètres intrinsèques de la caméra sont inconnus, il faut donc inclure dans la chaine de traitement un objet permettant de les estimer. Cet objet implémente un algorithme du même type que celui de Faugeras-Toscani. On utilisera un ZhangCalibrator qui repose sur la méthode de Zhang [10] pour obtenir les paramètres intrinsèques. On peut à chaque début de traitement d'une séquence vidéo recalculer les paramètres intrinsèques de la caméra mais comme on utilise à chaque fois la même caméra, ceux-ci restent xes, on peut donc eectuer la recherche des paramètres une fois pour toute puis les stocker en mémoire dans un chier et il sura de charger ces paramètres au début de chaque traitement d'une séquance vidéo. La recherche des paramètres intrinsèques peut se faire à partir d'une succession d'images de cibles composant une séquence vidéo en réalisant l'appariement de points 3D avec leur images 2D : à chaque image on cherche à extraire les points de l'image correspondant aux points de la cible dont on connait les coordonnées 3D, au bout d'un certain nombres d'images on a obtenu susamment de points pour utiliser l'algorithme de Zhang. Pour réaliser cette auto-calibration, il sut que la caméra lme la cible et soit en mouvement mais en procédant ainsi les images obtenues sont quasi parallèles et dans ce cas de gure la méthode de Zhang est peu précise. Pour réaliser une bonne calibration il convient donc de déclencher manuellement l'acquisition de plusieurs images de cibles sous des orientations diérentes. Ceci revient à prendre les cibles en photo sous des angles diérents. Trois images sont susantes pour appliquer la méthode de Zhang mais plus le nombre de points par image est important plus la calibration est précise. Aussi pour réaliser une bonne calibration on utilisera plutôt un échiquier que les cibles, chaque intersection de case correspond à un point donc pour un échiquier de 9 cases sur 12 on obtient 88 points intérieurs. Les paramètres intrinsèques ainsi obtenus sont en moyenne αu=kuf = 1074 ouku un coecient d'agrandissement horizontal en pixel/m etf la focale de la

caméra

αv = kvf = 1074ou kv un coecient d'agrandissement vertical en pixel/m et f la focale de la caméra

u0= 320l'abscisse du centre optique v0= 240 l'ordonnée du centre optique

Ces paramètres correspondent à une acquisition d'images dont la résolution est 640*480.

(21)

3.3.5 Calcul des paramètres extrinsèques

Une fois les paramètres intrinsèques connus, on peut utiliser un algorithme comme l'algorithme Didier ou celui de l'itération orthogonale présentés plus haut ou encore un algorithme des moindres carrés (non explicité ici) pour calculer la pose de la caméra. Si les paramètres intrinsèques ont été obtenu à partir d'une autocalibration utilisant la méthode de Zhang ceux ci étant peu précis, les valeurs des paramètres extrinsèques sont souvent mauvaises, c'est pourquoi on réalise une fois pour toute le calcul des paramètres intrinsèques à partir de photos de l'échiquier.

3.3.6 Calcul de la transformation pour obtenir la stéréo-vision

Comme les lunettes video see-through ARVision-3D sont composées de deux caméras chacune four- nissant une image pour un écran, si l'on veux pouvoir reprojeter un objet virtuel se superposant à une cible sur l'image de chacun des écrans on doit calibrer les deux caméras. Les paramètres intrinsèques sont les mêmes car les caméras sont identiques mais les paramètres extrinsèques sont diérent néanmoins la structure des lunettes étant rigide, il existe une transformation (rotation suivie d'une translation) permettant de passer d'un repère caméra à l'autre et cette transformation reste la même pour tous les couples d'images d'une séquence vidéo acquise par les lunettes. Plutot que de calculer la matrice des paramètres extrinsèques des deux caméra en utilisant un des algorithmes de pose à chaque image, on va appliquer l'algorithme de pose à la première image acquise par chacune des caméras, calculer la trans- formation permettant de passer de l'une à l'autre puis pour les autres images de la séquence vidéo on se contentera d'utiliser l'algorithme de pose sur l'image d'une caméra (celle ed gauche par exemple) et on calculera l'autre grâce à la matrice de passage. Si on note respectivement Egi et Edi les matrices contenant les paramètres intrinsèques de la ième image acquise par la caméra de gauche et par la caméra de droite, on a

∀i,Edi=P Egi avec

P=Ed0Eg−10

Dans la pratique pour obtenir P on calculera les matrices de passages des dix premières images et on réalisera la moyenne sur chacun des coecients. Ceci convient parfaitement pour les coecients correspondant à la translation mais la matrice obtenue en faisant la moyenne des coecients des matrices de rotation n'est pas exactement une matrice de rotation, cependant, compte tenu du fait que les matrices de rotation sont très proches les unes des autres (chaque coecient varie très peu d'une image à l'autre) l'approximation utilisée fournit des résultats acceptables.

3.4 Achage et ajout d'un objet virtuel à la scene réelle

Les deux caméras étant calibrées il sut maintenant de construire un objet virtuel et de le reprojeter dans chacune des images de manière à le superposer à la cible réelle. La construction et la reprojection sont réalisées grâce à la librairie OpenGL. Cette librairie graphique multiplateforme permet notemment en utilisant des primitives géométriques (points, segments, polygones) de générer des images 3D. On utilisera en particulier les contextes OpenGL qui servent à préciser la position dans l'espace et l'orien- tation dans laquelle on dessine les objets. L'objet construit est un carré jaune avec une croix formée par ses diagonales sur lequel on a ajouté un repère (O,I,J,K) dont les axes sont bleu, vert et rouge et qui représente le repère monde associé à la cible.

L'achage de chacune des deux images se fait sur l'écran LCD des lunettes qui lui est associé.

Cependant, porter les lunettes plusieurs minutes est fatiguant pour les yeux aussi la majeur partie des test sera faite en achant les deux images sur le moniteur du PC, chacune sur une moitié d'écran.

(22)
(23)

Chapitre 4

Tests et Résultats

Ce chapitre expose les conditions dans lesquelles ont été réalisés les diérents tests, puis donne certains résultats sous forme de tableaux et de courbe et présente enn les conclusions que l'on peut tirer de ces expérimentations.

4.1 Procédé expérimental

On considère que l'on à déjà obtenu les paramètres intrinsèques d'une caméra et on veut tester la précision et la rapidité de diérents algorithmes de calcul de pose :

L'algorithme Didier est le plus simple il n'a besoin que de quatre points et de leur image pour réaliser leur appariement et calculer les paramètres extrinsèques de la caméra.

L'algorithme de l'itération orthogonale fonctionne lui avec au moins quatre points mais nécessite une initialisation : pour la première image, la matrice de rotation doit être calculée avec un autre algorithme (par exemple l'algorithme Didier ou bien en utilisant une perspective faible voir méthode 2 dans le chier ioposeestimator.cpp). L'algorithme des moindres carrés utilise lui aussi quatre points ou plus, pour obtenir une meilleur précision on utilisera les points à l'intérieur de la cible formés par les coins des carrés noirs. Pour tester les algorithmes de pose on n'a pas besoin des images gauche et droite, il sura donc d'utiliser une seule caméra. On va utiliser une feuille de papier sur laquelle sont imprimées 4 cibles, une seule sera utilisée pour le calcul de la pose, les trois autres serviront à calculer l'erreur de reprojection caractéristique de la précision de l'algorithme. Les points 3D pi ont pour image les points 2Dwi à partir de l'appariement entre ces points on obtient la matriceEdes paramètres extrinsèques.I étant la matrice des paramètres intrinsèques, on peut calculer lesw0i qui sont les images théoriquee des points 3Dpi si on considère que E ainsi trouvée est exacte.

w0i=IE pi

1

L'erreur de reprojection est obtenue en faisant la moyenne des carrés des distances entre leswiet leswi0 : e= 1

n

n

X

i=1

kwi−w0ik2

Pour calculer l'erreur de reprojection on utilise les 4 points extérieurs de chaque cible mais également les points intérieurs. Pour calculer les temps d'exécution de chaque algorithme on utilise un timer qui est déclenché au début de chaque algorithme et arrèté à la n. On crée une chaine de traitement permettant l'acquisition d'une séquence vidéo par une caméra, le traitement nécessaire pour extraire les points 2D de la cible utilisée pour le calcul de la pose, ces points sont ensuite fournis à chacun des algorithmes de pose dont on calcule le temps d'execution et l'erreur de reprojection.

(24)

4.2 Résultats

Pour chacun des algorithmes on récupère un chier qui contient autant de lignes que le nombre d'images où il a été possible de détecter les quatres cibles et 2 valeurs par ligne, la première correspondant au temps d'exécution et la seconde à l'erreur de reprojection obtenue. Pour chacun des algorithme ont calcul ensuite la moyenne et l'écart type du temps d'exécution et de l'erreur de reprojection. Voici les résultats obtenus lors des diérents tests :

dpe = algorithme Didier

io = algorithme d'itération orthogonale cpe = algorithme des moindres carrés

epsilon est un paramètre d'arrêt caractéristique de la précision de l'algorithme d'itération orthogonale.

Concrètement plus epsilon est petit plus le nombre d'itérations est important. Le mouvement de la caméra sera qualié de lent si d'une image sur l'autre l'objet virtuel reste superposé sur la cible et de rapide si le tracking n'est pas réalisé, c'est à dire que l'objet virtuel ne bouge pas de manière continue mais par accoups. La moyenne calculée est celle de l'erreur pixellique de reprojection élevée au carré et le temps moyen d'exécution est exprimé en microsecondes.

Tab. 4.1 Série 1 : io initialisé seulement à la première image avec un dpe

(a) mouvement lent, epsilon =10−8, Nombre de valeurs :352

moyenne ecart type temps moyen ecart type temps

dpe 628.325 406.936 7.4517 1.13215

io 414.238 150.725 668.702 636.076

cpe 214.884 90.9749 4617.22 917.024

(b) mouvement rapide, epsilon =10−8, Nombre de valeurs :232

moyenne ecart type temps moyen ecart type temps

dpe 939.151 1087.16 7.33621 0.593702

io 1916.89 1948.37 546.164 594.164

cpe 317.066 846.038 4269.99 1048.03

(c) mouvement lent, epsilon =10−5, Nombre de valeurs :181

moyenne ecart type temps moyen ecart type temps

dpe 502.611 530.916 7.39227 0.571657

io 285.257 141.591 66.4144 64.2013

cpe 168.715 72.0089 4723.99 861.484

(d) mouvement rapide, epsilon =10−5, Nombre de valeurs :258

moyenne ecart type temps moyen ecart type temps

dpe 373.062 1018.7 7.80233 4.46211

io 2102.36 2082.18 122.992 113.896

cpe 254.476 836.652 4041.64 1006.79

Références

Documents relatifs

Modèle de plante multi-échelle pour les vignes taillées Dans cette étude, nous souhaitons modéliser les plantes pour pouvoir dégager de nos modèles des propriétés bio-

« non scolaire ». Autre atout, leur caractère fondamentalement transversal qui les rend exploitable dans tous les niveaux de classe, de la maternelle à la terminale, et dans

Nous avons vu dans le cas de la projection orthographique que l’ensemble des points au bord de la projection de la surface canal est compris dans l’intersection entre le

Après avoir vérifié l'exactitude et l'efficacité de la solution actuelle, des études paramètres sont effectuées afin d'examiner les effets des variations de

Nous avons comparé de la même façon qu’avec les sphères en calcu- lant l’erreur relative entre l’estimation numérique et le modèle de Mori-Tanaka pour les différents

Presenting a greater problem, however, is the role confusion related to the participants’ fear regarding their potential involvement in law enforcement activities – that

Modèle de plante multi-échelle pour les vignes taillées Dans cette étude, nous souhaitons modéliser les plantes pour pouvoir dégager de nos modèles des propriétés bio-

Dans la première étape nous procédons à une séparation des sources lumineuses de l’image d’entrée pour obtenir deux images — une image représente la scène éclairée