Vous êtes sur la page 1sur 21

Chapitre V:

La vision tridimensionnelle

Tr 1
V.1 Les différents modèles géométriques de la caméra

Modèles géométriques de la caméra

Les modèles utilisant la Les modèles utilisant


géométrie projective la géométrie affine

Modèle de la caméra affine


sans notion de plans

Modèle des deux plans


(déjà vue)

Tr 2
V.2 Le modèle « Pin-hole » linéaire

Tr 3
V.3 Formulation mathématique du modèle « Pin-hole » linéaire

V.3.1 Passage du repère objet (Ro) au repère caméra (Rc)


Désignons par (Xo,Yo,Zo) les coordonnées du point objet « J » dans le repère objet (Ro) et (Xc,Yc,Zc)
les coordonnées de ce même point dans le repère caméra (Rc).

Le passage du repère (Rc) au repère (Ro) se fait par :

- une translation (tx,ty,tz) du centre 'C' de la caméra à l’origine 'O’ du repère (Ro)

- trois rotations d’Euler:


 une rotation R d’un angle  autour de l'axe OZc (lacet - yaw)
 une rotation R d’un angle  autour de l'axe OY'c (tangage - tilt)
 une rotation R d’un angle  autour de l'axe OX''c (roulis - pan)
Cela s’exprime par la matrice homogène [Tco] suivante:

 Xc   r11 r12 r13 tx   Xo 


     
 Yc   r21 r22 r23 ty   Yo 
 Zc  =  r r r tz  *  Zo  (équation 5.1)
   31 32 33   
1 0 0 0 1  1 
     
Tco 
Tr 4
Où: r11 = C . C r12 = S . C r13 = - S
r21 = C . S . S - S . C r22 = S . S . S + C . C r23 = C . S
r31 = C . S . C + S . S r32 = S . S . C - C . S r33 = C . C

avec: C: Cosinus et S: Sinus


et (tx,ty,tz) sont les coordonnées de l'origine 'O' dans le repère caméra (Rc).

La matrice [Tco] s'appelle « le modèle externe de la caméra » ou « La pose de la caméra ».


Les 6 paramètres à identifier sont : tx, ty, tz, , , et s’appellent:
« paramètres externes de la caméra ».

V.3.2 Passage du repère caméra (Rc) au repère image (Ri)


Cette transformation réalise la projection centrale du point objet « J » de coordonnées (Xc,Yc,Zc)
dans le repère ( Rc) sur le plan d'équation: Zc = f (f étant la focale de l'objectif utilisé).

Les équations peuvent être obtenues par utilisation des triangles semblables:
Xc Yc
Xi  f. et Yi  f.
Zc Zc
Afin d’écrire ces deux équations sous forme matricielle, nous prenons Zc comme paramètre
de proportionnalité. En plus, il n’est jamais nul physiquement: Zc = s
Tr 5
Cela donnera l’écriture matricielle suivante:
 Xc 
 s.Xi   f 0 0 0   
     Yc  (équation 5.2)
 s.Yi 
  0 f 0 0 * 
 s   0 0 1 0   Zc 
    1
 
Le paramètre à identifier ici est: la focale de l’objectif « f » (en mètres)
Le paramètre « s » dans l’équation matricielle justifie que la projection d’un rayon visuel
(droite (C,J)) donnera une image unique (point I) sur la rétine.
C’est la définition même de la projection centrale de centre « C ».

V.3.3 Passage du repère image [rétine] (Ri) au repère d’affichage (Ra)


Cette transformation consiste en une dilatation (zoom) suivant les deux axes (Xi) et (Yi),
suivie d’une translation d'origine. Cela se traduit par les relations suivantes:

u = eu . Xi + gu

v = ev . Yi + gv
où:
- eu, ev sont les facteurs d'échelle suivant les deux axes (u) et (v) en pixels/mètres.
- gu, gv sont les coordonnées du point i (centre optique de la caméra) dans le repère
d'affichage (Ra), appelées aussi coordonnées du point principal – en pixels.

Tr 6
Ces quatre paramètres physiques sont liés aux caractéristiques de la caméra CCD et de la carte
d'acquisition de l'image. Sous forme matricielle, la relation précédente s'écrit:
 u   eu 0 gu   Xi 
      (équation 5.3)
 v    0 ev gv  *  Yi 
1  0 0 1   1 
     
Les 4 paramètres à identifier sont eu, ev, gu, gv.
Nous remarquons que l’expression reliant les coordonnées 3D de l’objet « J » dans le repère (Rc) aux
coordonnées « p » de son image dans le repère (Ra) sont fonction des paramètres physiques de la
caméra.
Ceci découle des équations (5.2) et (5.3) comme suit:
 Xc   Xc 
 s.u   Fu 0 gu 0     
     Yc   Yc  (équation 5.4)
s.v
    0 Fv gv 0 *
    M *  
  Zc  Zc
int
 s  0 0 1 0  
      1  1
M
 
in t

Où: Fu = f . eu = focale effective selon l’axe u (en pixels)


Fv = f . ev = focale effective selon l’axe v (en pixels)
La matrice [Mint] s’appelle « modèle interne de la caméra » ou « matrice de la caméra ».
Les 4 paramètres à identifier sont: Fu, Fv, gu et gv et s’appellent:
« paramètres internes de la caméra ».
Tr 7
V.3.4 Le modèle linéaire global de la caméra
A partir des deux équations (5.1) et (5.4), nous pouvons exprimer les coordonnées 3D de l’objet « J »
dans le repère (Ro) en fonction des coordonnées 2D de son image numérisée « P » dans le repère
d’affichage (Ra), comme suit:
 r11 r12 r13 tx   Xo 
s.u
   Fu 0 gu 0     
     r21 r22 r23 ty   Yo 
 s.v    0 Fv gv 0  *   *  Zo 
(équation 5.5)
 s   0 0 1 0   31 32 33 r r r tz
     
   0 0 0 1   1 
M int  
Tco 
Qui après multiplication matricielle donne:
 Xo 
 s.u   c11 c12 c13 c14   
     Yo 

   21 22 23 24  *  
s.v c c c c (équation 5.6)
 s  c c c c   Zo 
  31  32
 33
34  1 
c11  r11 .Fu  r31 .gu; c21  r21 .Fv  r31 .gv; c31  r31 ;
[C ]

c12  r12.Fu  r32.gu; c22  r22.Fv  r32.gv; c32  r32 ;


c13  r13.Fu  r33.gu; c23  r23.Fv  r33.gv; c33  r33 ;
c14  tx.Fu  tz.gu; c24  ty.Fv  tz.gv; c34  tz ;

La matrice [C] s’appelle « modèle global de la caméra » et nécessite la connaissance des 12


paramètres cij dont seulement 11 sont linéairement indépendants.
Tr 8
V.4 Le modèle « Pin-Hole » non linéaire
Une caméra réelle est loin d’être parfaite. Le modèle linéaire vu précédemment ne pourra être utilisé
que pour des capteurs de qualité professionnelle (prix d’achat élevé) ou bien pour des capteurs usuels
mais pour des utilisations qui n’exigent pas de bonnes précisions.
Dans le cas réel, l’image produite par une caméra est toujours distordue. Cela est du à plusieurs
imperfections, dont les plus signifiantes sont données ci-dessous:

V.4.1 La non-perpendicularité des axes (Xi,Yi) du plan image – rétine ( the skew error)
Xid et Yid sont les nouvelles coordonnées dans le repère (Ri)
avec la prise en compte de la distorsion de non perpendicularité
des axes rétiniens ( angle  très petit).
 Xid  Xi  Yid. s in 

 Yid Yi (non modifié)
Ce qui donne après numérisation:
u  eu .(X id )  eu .(Yid ).sin (α )  gu u  eu .(X id )  γ.Yid  gu
  
 v  ev .Yid  gv  v  ev .Yid  gv
Avec : γ  eu .sin α 
 u   eu  gu  Xid
     
L’équation (5.3) du modèle linéaire devient:  v    0 ev gv  *  Yid (équation 5.7)
1  0 0 1   1 
     
Le nouveau paramètre interne à estimer est  Tr 9
V.4.2 Les distorsions radiales

Distorsion en tonneau

Image non distordue d’une grille

Ce type de distorsion déplace l’image du point (Xi,Yi)


Distorsion en coussinet
vers le point (Xid,Yid).

rd2  Xid 2  Yid 2 et r 2  Xi 2  Yi 2 (équation 5.8)

Tsai en 1987 montra que l’amplitude de cette déformation


Augmente en fonction de l’éloignement de l’image par rapport
Au centre optique (centre de la rétine), c.à.d :

rd  r.(1  k1 .r 2  k 2 .r 4  k 3 .r 6  ...) (équation 5.9)

Les nouveaux paramètres interne à estimer sont: k1, k2, k3, …


Tr 10
Pour conclure, la procédure de formation d’une image en adoptant le modèle non linéaire de la
caméra se résume à:

 Xc   r11 r12 r13 tx   Xo   Xc 


     
 Yc   21 22 23
r r r ty   Yo   s .Xi  f 0 0 0  
     Yc 
 Zc   r r r *
tz   Zo   s .Yi   0 f 0 0* 
   31 32 33
    s  0 Zc
1
 
0 0 0 1  1 
       0 1 0   
1
La projection centrale
La pose de la caméra

 u   eu  gu   Xid  Yi Yid  Yi 
        Yid Xid.  
v  0 ev gv * Yid Xi Xid  Xi 
     
1  0 0 1   1 
     
r  Xi2  Yi2
La non perpendicularité des axes de
r.(1  k1.r 2  k 2 .r 4  k3 .r 6  ...)
la rétine =  Xid 
2
 Yi 
Numérisation et stockage de 1  
l’image  Xi 
Les distorsions radiales k1, k2, …

Tr 11
V.5 Estimation des paramètres du modèle = Calibration de la caméra
On appelle calibration d’une caméra la procédure mathématique permettant d’identifier les
paramètres du modèle de la caméra:

Pour le modèle « pin-hole » linéaire, les paramètres à identifier sont:


 Les 4 paramètres internes : Fu, Fv, gu et gv.
 Les 6 paramètres externes : tx, ty, tz, , , 

Pour le modèle « pin-hole » non-linéaire, les paramètres à identifier sont:


 Les paramètres internes : Fu, Fv, gu, gv,  , k1, k2, k3, …
 Les 6 paramètres externes : tx, ty, tz, , , 

Le modèle linéaire de la caméra (équation 5.5) montre que la connaissance des coordonnées 3D
d’un objet J(Xo,Yo,Zo en mètres) et celles de son image p(u,v en pixels) nous permet d’avoir deux
équations à 11 inconnues.
La connaissance de 6 points étalons (coordonnées 3D de l’objet et coordonnées 2D de l’image)
nous permettent d’identifier les 11 inconnues du modèle.

Le modèle non linéaire de la caméra (14 paramètres et plus) nécessite plus de 7 points points
étalons (coordonnées 3D de l’objet et coordonnées 2D de l’image) nous permettant d’identifier
les paramètres du modèle.

Tr 12
V.5.1 Composition matérielle d’un banc de calibration

Pour calibrer une caméra, on doit disposer de:


Une mire de calibrage (damier ou objet étalon) qui est généralement constituée de points de
référence dont on connaît parfaitement les coordonnées 3D dans un repère qui lui est propre.

Un système d’acquisition d’images pour la numérisation et la mémorisation des images de la


mire.
Un algorithme de mise en correspondance des points 2D détectés dans les images avec leurs
homologues de la mire.
Un algorithme de calcul de la matrice de transformation permettant le passage des
coordonnées image (2D) aux coordonnées objet (3D) et vice versa.

Tr 13
V.5.2 Calibration d’une caméra (modèle linéaire)
Reprenons le modèle linéaire global de la caméra (équation 5.5):
 Xo 
   11 12 13 14   
s .u c c c c
     Yo 
s .v 
   21 22 23 24  *  
c c c c
 s  c  Zo
   31 c 32 c 33 c 34   1 

 
Il peut aussi s’écrire sous la forme vectorielle:
 c11 
 
 c12 
c 
 13 
 c14 
c 
 21 
 Xo Yo Zo 1 0 0 0 0  u. Xo  u.Yo  u.Zo  u   c22   0 
  *     
 0 0 0 0 Xo Yo Zo 1  v. Xo  v.Yo  v.Zo  v   c23   0 
 c24 
  (équation 5.10)
 c 31 
c 
 32 
 c 33 
c 
 34 
Tr 14
Le fait que nous ayant 12 inconnues à estimer, nous devons disposer d’au moins de N =6 points de
calibration. En pratique, pour augmenter la précision d’estimation, un grand nombre de points
(N > 50) est utilisé. Pour N points de calibration, l’équation matricielle 5.10 devient:

 X o0 Yo0 Z o0 1 0 0 0 0  u0 .X o0  u0 .Yo0  u0 .Z o0  u0   c11 


   
 0 0 0 0 X 0
o Yo
0
Z 0
o 1  v 0
.X 0
o  v 0 0
.Y o  v 0 0
.Z o  v 0
  c12   . 
 .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... ..................     
   c13   . 
 ................................................................................................................................   c14   0 
     
 X k
o Y o
k
Z k
o 1 0 0 0 0  u k
.X k
o  u k k
.Y o  u k k
.Z o  u k
  c21   0 
 0 0 0 0 Xko Yok Z ko 1  v k .Xko  v k .Yok  v k .Z ko  v k  c  0
  *  22    
 Xo k 1
Yo k 1 k 1
Zo 1 0 0 0 0  u .X o k 1 k 1 k 1 k 1
 u .Yo k 1 k 1
 u .Z o u k 1
  c23   0 
 k 1 k 1 k 1
 k  1 k 1
 k 1 k 1
 k 1 k 1
 k 1  
c  . 
 0 0 0 0 X o Y o Z o 1 v .X o v .Y o v .Z o v     
24

 ................................................................................................................................   c 31   . 
     
 .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... ..................   c 32   0 
 XN1 Y N1 Z N1 1  
0 0 0 0  uN1 .X No1  uN1 .YoN1  uN1 .Z No1  uN1   c 33   0 
 
N1   c 
o o o
 0 0 0 0 Xo N1
Yo N1
ZoN1
1  v .X o N1 N1 N1 N1
 v .Yo N1 N1
 v .Z o  v   34 

 
Qui est de la forme: [ A] * c  0 (équation 5.11)

Le vecteur d’état à estimer: c  c11 c12 c13 c14 c 21 c 22 c 23 c 24 c 31 c 32 c 33 c 34 t

[A] : la matrice des mesures de dimension (2N x 12)

Tr 15
La matrice [A], étant une matrice de mesure, est entachée d’erreurs. L’équation 5.11 n’est,
cependant, jamais vérifiée. Elle est sujet à un résidu.
 
[ A] * c  
Une solution approchée à ce problème est la solution des moindres carrés. [least squares method).
Une fois les éléments cij di vecteur d’état estimé, nous pouvons remonter aux paramètres internes
et externes de la caméra en utilisant l’équation 5.6.

La résolution par les moindres carrés donne des résultats approchés mais pas stables. Il est
préférable d’utiliser des techniques de résolution optimisées telles que le filtrage de Kalman ou la
méthode de déscente de Gradient (en particulier – Levenberg Marquardt).

Tr 16
V.5.3 Calibration d’une caméra (modèle non linéaire)
Le modèle non linéaire nécessite des techniques d’optimisation non linéaires. Un des outils
les plus utilisés est la technique de Zhang (2001). Elle a été intégrée à la boite à outils de
calibration de Matlab [GML Calibration ToolsBox].

Tr 17
Remarques importantes:

Lorsqu’une caméra est calibrée, les paramètres internes peuvent être supposés
invariants (fixes). Seuls les paramètres externes varient lorsque la caméra bouge.

Dans le cas où l’objectif de la caméra est démonté puis remonté, la caméra doit être
recalibrée.

La calibration des paramètres externes seuls, s’appelle « Estimation de pose ».

Tr 18
V.6 Estimation de pose de la caméra
On parle d’estimation de pose, la procédure permettant de calibrer les 6 paramètres externes
de la caméra. Les paramètres internes étant supposés connus.
Nous rappelons le modèle global linéaire de la caméra:

Inconnue
Connue
 r11 r12 r13 tx   Xo 
 s .u  Fu 0 gu 0     
     r21 r22 r23 ty   Yo 
 s .v   0 Fv gv 0  *   *  Zo 
Inconnue
 s   0 0 1 0   31 32 33r r r tz
       Xc   r11 r12 r13 tx   Xo 
   0 0 0 1   1       
M int       21 22 23
Yc r r r ty   Yo 
Tco 
Connue
 Xc   Xc 
   31 32 33?
 Zc  =  r r r
1 0 0 0 1  1 
   
tz  *  Zo 
  
  
  
s .u
  
Fu 0 gu 0   
  Yc 
 
 Yc 
Tco 
 s .v   0 Fv gv 0  *    M int *  Zc 
 s   0 0 1 0   Zc   
      1  1
M in t
 

Tr 19
La connaissance des coordonnées 3D de l’objet J (Xo,Yo,Zo) ainsi que les coordonnées de son image
2D p (u,v) nous donne deux équations à 12 inconnues (9 x rij et tx, ty et tz).
Les 9 paramètres rij sont les coordonnées des 3 vecteurs directeurs d’une rotation spatiale (, , );
Ils sont donc régis par des dépendances comme suit:
 Vecteurs unitaires > Module de chaque vecteur = 1
 Orthogonalité des vecteurs rotation > produits scalaires= 0
Il en résulte que seuls 6 paramètres suffisent pour estimer la pose de la caméra (Tco).

La connaissance de 3 points (3D) et de leurs homologues sur l’image (2D) nous donne un
ensemble de 06 équations linéairement indépendantes (det  0) ce qui permet d’estimer
Les 6 paramètres de la matrice Tco.
Afin d’augmenter la précision d’estimation des éléments de la matrice de pose de la caméra, il est
fortement conseillé de prendre un nombre de points étalons plus grand que 3 (N >> 3).

La résolution du système à 2 x N équations nécessite une technique d’optimisation (Filtre de Kalman,


méthode de Lagrange, …) car les données sont bruitées (tolérances des mesures 3D, 2D, erreurs sur les
paramètres internes de la caméra, …)

Tr 20
En réalité augmentée, l’estimation de pose de la caméra est réalisé à l’aide de marqueurs:

Marqueurs d’ARTool-Kit Marqueurs d’InterSence

Marqueur de notre Laboratoire


Marqueurs de Cybercode LARESI [2008]

Tr 21