32 0 281KB
Introduction : Le calibrage géométrique d'une caméra consiste à déterminer la relation mathématique existant entre les coordonnées des points 3D de la scène observée et les coordonnées 2D de leur projection dans l'image (points-image). Cette étape de calibrage constitue le point initial pour plusieurs applications de la vision artificielle, comme par exemple la reconnaissance et la localisation d'objets, le contrôle dimensionnel de pièces, la reconstruction de l'environnement pour la navigation d'un robot mobile, etc. Calibrer une caméra, c'est choisir un modèle de caméra a priori et déterminer ensuite les paramètres de ce modèle. Nous allons décrire les principaux modèles de caméra utilisés ainsi que les principales méthodes proposées pour déterminer les paramètres du modèle choisi. Pour obtenir des informations tridimensionnelles, il est nécessaire d'associer deux caméras pour constituer un capteur de vision stéréoscopique. Le calibrage d'un tel capteur est un problème spécifique qui est décrit également.
Calibrer une caméra consiste à trouver sa fonction de transfert
Le modèle de caméra : Il y’a plusieurs modèles de caméra ; le modèle sténopé et les différents modèles permettant de prendre en compte les distorsions. Commençons par le modèle sténopé. Le modèle sténopé ( pinhole en anglais) modélise une caméra par une projection perspective. Ce modèle transforme un point 3D de l'espace en un point-image et peut se décomposer en trois transformations élémentaires successives : 1. la transformation entre le repère du monde et celui de la caméra 2. la transformation entre le repère caméra et le repère (plan rétinien) 3. la transformation entre le repère capteur et le repère image.
Utilisation des coordonnées homogènes : Les coordonnées homogènes en 2D : Coordonnées euclidiennes :
coordonnées homogènes :
Les coordonnées homogènes en 3D : Coordonnées euclidiennes :
coordonnées homogènes :
=[ ]
=[ ]
̀ =[ ] 1
=[ ] 1
1. Transformation entre le repère du monde et le repère caméra : Cette transformation rigide peut se décomposer en une rotation [R] et une translation [t]. Les paramètres de cette transformation sont appelés paramètres extrinsèques de la caméra.
Avec :
T est une matrice de 4 x 4. 2. Transformation entre le repère caméra et le repère capteur (plan rétinien) : C'est une projection perspective (matrice 3×4, notée [P]) qui transforme un point 3D (Xc, Yc, Zc) en un point-image (X, Y) (en unité métrique).
Où f désigne la focale de l’objectif utilisé :
On peut écrire : =
=
3. Transformation entre le repère capteur et le repère image : C’est l'opération de conversion des coordonnées images (X,Y) (en unité métrique) en coordonnées images discrètes (u,v) (en pixels).
avec : -
Cx et Cy (en pixels) désignent les coordonnées de l'intersection de l'axe optique avec le plan image (théoriquement au centre de l'image) Kx et Ky désignent le nombre de pixels par unité de longueur suivant les directions X et Y du capteur respectivement (Kx = Ky ) (dans le cas de pixels carrés) Θ traduit la non orthogonalité éventuelle des lignes et colonnes de l'image. En pratique, Θ est très proche de Π/2. Ce paramètre est désigné par (skew factor) en anglais.
On considère souvent que le (skew factor) est négligeable Θ = Π/2 et l'équation se simplifie alors de la façon suivante :
Calibrage de la caméra : Calibrer une caméra, c'est essentiellement pour déterminer ses paramètres intrinsèques qui, comme leur nom l'indique, sont intrinsèques à la caméra et ne changent pas si l'on déplace la caméra. Des méthodes spécifiques (dites de localisation) ont été développées pour déterminer la position d'une caméra par rapport à un repère de travail lorsqu'on connaît déjà ses paramètres intrinsèques. Pourquoi le calibrage ?
pour la reconstruction métrique 3D d’images localisation des objets et de la caméra trouver la relation entre les coordonnées 3D (monde réel) et les coordonnées 2D (l’image de la caméra).
Il consiste à déterminer les paramètres de la transformation entre les coordonnées du monde et les coordonnées image (et vice-versa). Paramètres de calibrage : Le modèle de la caméra décrit la transformation du système de coordonnées de la scène vers celui de l'image :
Deux types de paramètres à prendre en compte : Paramètres intrinsèques (ou internes) : - propriétés optiques et géométriques internes de la caméra - Caractéristiques de la caméra elle-même - Ne changent par si on déplace la caméra Paramètres extrinsèques (ou externes) : - relation référentiel environnement et référentiel caméra - position et orientation de la caméra par rapport à la scène Systèmes de coordonnées : Trois systèmes de coordonnées distincts : L’environnement (ou le monde ou la scène) : Système de référence connu. Tout (caméra, objet, etc...) est défini par rapport à ce système de coordonnées. La caméra : Système dans lequel s’effectue la projection des points 3D vers 2D. L'image : Système établissant la référence aux pixels.
Un point peut être exprimé avec plusieurs systèmes de coordonnées : Les coordonnées du monde 3D : Xw = (Xw, Yw, Zw)T Les coordonnées de la caméra 3D : Xc = (Xc, Yc, Zc)T Les coordonnées image 2D : x = (x, y)T La matrice de projection : La matrice de projection est une matrice 3 x 4 qui décrit la relation entre Xw et x x = PXw X P P P P x Y y = P P P P " Z P P P P 1 1 Paramètres intrinsèques et extrinsèques : La matrice de projection peut être décomposé en deux parties ; paramètres intrinsèques et extrinsèques comme : x = PXw = A [R|t] Xw X α$ s x& r r r t x Y r r t y = 0 α( y& r " Z r r r t 1 0 0 1 1 Avec : A : 3 x 3 ; matrice de calibration (paramètres intrinsèques) R : 3 x 3 ; matrice de rotation et t : 3 x 1 ; vecteur de translation Paramètres extrinsèques : Cette matrice décrit la transformation entre Xw et Xc comme : Xc = [R|t] Xw X+ r Y+ " = r Z+ r 1
r r r
r r r
t t t
X Y " Z 1
Paramètres intrinsèques : Décrit la projection du point 3D Xc dans le plan image comme : x = A [R|t]Xw = A Xc α$ s x& X+ x y = 0 α( y& Y+ " Z+ 1 0 0 1 1 Avec : α$ et α( Sont les distances focales en unité pixel x& et y& Sont le centre de l’image en unité pixel s est le skew facteur. Les étapes de projection d’un point 3D en un point image 2D : 1. Du point 3D dans les coordonnées du monde à un point 3D dans les coordonnées caméra : Changer le système de coordonnées du monde au système de coordonnées de la caméra c Xw = [cRw|cTw]wXw
X+ X r r r t Y+ Y r r t " = r " Z+ Z r r r t 1 1 2. Du point 3D de la caméra à un point 2D dans la caméra : c
Xu = [cRw|cTw]wXw
XY- = 1
f 0 0 f 0 0
0 0 0 0 1 0
X Y " Z 1
f f X Y- = Y Z Z Avec : f est la distance focale dans le système métrique. 3. Du point 2D de la caméra au point image 2D : Du point 2D dans le système métrique à un point 2D exprimé par des pixels. −k 0 u& XX/ Y/ = 0 −k 3 v& Y1 1 0 0 1 X/ = −k - X- + u& Y/ = −k 3 Y- + v& Avec : Les paramètres (ku, kv) fait la transformation entre les mesures métriques et les mesures pixels. (u0, v0) est la projection du point focal dans le plan. X- =
II. la vision stéréoscopique : La Vision Stéréoscopique vise à reconstruire la structure 3D d’une scène. Afin de réaliser cette reconstruction il est nécessaire de connaitre les coordonnées 3D de tous les points d’une scène. La scène est représentée par un couple d’images stéréoscopique. Ces images sont deux représentations de la scène prises sous des angles différents. Chaque point de la scène est projeté dans les images de la paire stéréoscopique à des positions différentes. En vision stéréoscopique pour disposer des coordonnées 3D d’un point il faut disposer des coordonnées de ses deux projections, respectivement dans les images gauches et droites. L’obtention des coordonnées de ces deux projections d’un même point 3D est réalisée grâce à une phase d’appariement qui vise à trouver, pour un point donné dans une image, son point correspondant dans l’autre image. Ces deux points sont les projections respectives du même point 3D dans les images droite et gauche. Les algorithmes d’appariement utilisent diverses techniques qui sont soit locales et basées sur la comparaison de fenêtre, dites « area-based methods », soit globales. Dans ce cas elles reposent sur la minimisation d’une fonction de coût globale. Ces dernières permettent d’obtenir des appariements denses et de bonne qualité mais ont un coup de calcul élevé et ne sont donc pas adaptées à une application en temps réel. A l’inverse les méthodes locales sont relativement rapides et permettent d’obtenir une bonne fiabilité dans l’appariement. Par ailleurs il faut remarquer qu’il existe un certain nombre de points de l’image qui n’ont pas de correspondants. Ceci est dû au phénomène d’occultation : un point peut être situé hors du champ de vision d’une des deux caméras ou être masqué par un objet dans une image et non dans l’autre. Le principe de la vision stéréoscopique est résumé dans le schéma synoptique de la figure suivante. Il est à noter qu’en amont des étapes de la figure il est nécessaire de réaliser la calibration du système stéréoscopique de façon à disposer des paramètres intrinsèques et extrinsèques du
système. Ces paramètres seront essentiels dans les phases de rectification et de calcul des positions 3D des points.
Reconstruction 3D à partir de deux images
Système stéréoscopique existants Il existe un certain nombre de systèmes utilisant la vision stéréoscopique sont actuellement commercialisés. On peut par exemple citer les sociétés TYZX ou Point Grey qui commercialisent toutes deux des modules de vision 3D stéréoscopique comprenant un module de vision (2 caméras fixées et pré-calibrées) ainsi qu’une interface avec un PC. Ces modules sont pilotés grâce à des API propriétaires. Il existe par ailleurs un certain nombre d’applications utilisant ces modules. Ces applications réalisent des fonctions telles que la détection et le suivi de personnes, l’évaluation de distance ou la navigation virtuelle dans l’environnement 3D. Calibrage stéréoscopique : Modèle géométrique du capteur stéréoscopique : Le modèle géométrique du capteur stéréo peut être représenté de la façon suivante :
Modèle géométrique du capteur stéréoscopique D’après ce schéma on considère le couple de caméra stéréoscopique et on peut introduire la notion de géométrie épipolaire. En effet, on peut démontrer que pour chaque point de l’image gauche (respectivement droite) si ce point possède un correspondant dans l’image de droite (respectivement gauche) celui-ci ce trouve sur une droite appelée droite épipolaire. Toutes les droites épipolaires sont concourantes en un point appelé épipôle. Il existe donc un épipôle droit et un épipôle gauche. Grâce à la calibration stéréoscopique on pourra disposer de tous les paramètres nécessaires au calcul des équations des droites épipolaires. Ces équations pourront être déterminées à partir de la matrice fondamentale que l’on pourra elle-même calculer ou estimer. La matrice fondamentale décrit la géométrie du capteur stéréoscopique, géométrie que l’on appelle géométrie épipolaire. Calibration : Le but de la calibration stéréo est de déterminer la matrice de passage du repère image gauche au repère image droite. La matrice de passage du repère caméra gauche au repère caméra droite est la matrice stéréo As.
67 =
r r r r r r 0 0
r r r 0
b$ b( " b9 1
(bx,by,bz) correspond au vecteur de translation [FF’], et la matrice (r1,r2,r3) la matrice de rotation entre le repère caméra de gauche et le repère caméra de droite.
Principe de rectification épipolaire : La rectification épipolaire se base sur une modification de la géométrie épipolaire présentée au paragraphe précédent. Le but recherché est la parallélisation des lignes épipolaires de façon à simplifier la recherche de correspondants entre deux images. En effet, après rectification chaque point d’une image trouve son correspondant sur la même ligne que lui dans l’image correspondante Il est nettement plus simple de mettre en œuvre cette recherche ligne par ligne plutôt que d’utiliser les équations de ligne épipolaire. La rectification devient donc un préalable à l’appariement de deux images.
Rectification épipolaire
On constate bien que les droites épipolaires sont parallèles après rectification : la recherche de correspondants peut se faire ligne par ligne. On peut par ailleurs noter que les épipôles sont rejetés à l’infini. Les algorithmes d’appariement : Les algorithmes d’appariement sont au cœur du processus de vision 3D. Ils consistent simplement en une association des points correspondant entre deux images. Ces points représentent les projections gauches et droites d’un même point 3D. Le résultat de cette phase est une image de disparité relative entre les images gauche et droite. La disparité correspond à la distance sur la ligne entre les coordonnées en abscisse de chacune des projections, elle est inversement proportionnelle à la distance réelle. Cette étape correspond, en vision humaine à l’association par le cerveau des images perçues par l’œil gauche et l’œil droit. Les algorithmes existants sont nombreux et varient selon divers paramètres : mesure de similitude entre les pixels utilisée, différentes contraintes implémentées, transformations et filtrages préalables appliqués. Mesures de similitude : La mesure de similitude constitue le cœur de l’algorithme d’appariement. Ce sont ces mesures qui vont permettre de déterminer les paires de points. Ce sont des mesures algébriques qui permettent de calculer la ressemblance entre deux pixels. En pratique cette mesure de ressemblance est réalisée sur une fenêtre et non pas sur un seul et unique pixel. On parle donc de fenêtre de corrélation. Pour être appariés, deux points devront être similaires et avoir un voisinage similaire. Les contraintes pour l’appariement : Afin de réaliser un appariement global correct on doit appliquer un certain nombre de contraintes à l’algorithme de façon à pouvoir sélectionner le vrai correspondant d’un point et non pas un autre point lui étant semblable. On va exposer ici les contraintes les plus courantes. Certaines de ces contraintes vont par ailleurs permettre de diminuer le coût de l’algorithme en diminuant l’espace de recherche de correspondants.
Contrainte épipolaire : La contrainte épipolaire est une contrainte forte due à la géométrie des caméras. Cette géométrie est considérée comme connue après la calibration. L’expression brute de la contrainte est la suivante: tout point de l’image de gauche trouve son correspondant sur une ligne de l’image de droite appelée ligne épipolaire et réciproquement. Après la phase de rectification épipolaire les lignes épipolaires sont parallèles : un point trouve son correspondant dans l’autre image sur la ligne de même ordonnée. La contrainte épipolaire est la seule contrainte forte dont l’on dispose. Elle dépend de la géométrie du système et permet de réduire le problème de l’appariement à la recherche sur une ligne. La rectification permet de simplifier grandement cette recherche d’un point de vue algorithmique. Il est à noter qu’il existe d’autres contraintes que la contrainte épipolaire comme la contrainte d’unicité, la contrainte d’ordre, la contrainte de continuité …etc. Principe de la reconstruction 3D des points d’une scène : À partir d’une carte de disparité on peut calculer et récupérer l’ensemble des coordonnées 3D des points de la scène. Ce calcul est une primitive à la reconstruction 3D d’une scène et est réalisé grâce à la triangulation.
Système stéréoscopique et triangulation
On note d la disparité. A partir des distances connues sur le schéma de la figure on veut déterminer les coordonnées 3D du point S (X, Y, Z). Pour cela on va tout d’abord exprimer les valeurs de θ’ et de θ. tan < =
=> , ?
tan < A =
De la même façon on a : tan C − B ?
tan( −< A ) =
tan C − B= > tan < A = ?
=
T ?
on a donc :
(2)
On a donc déterminé l’expression de la coordonnée Z de S. Il reste à déterminer X et Y. On utilise un raisonnement similaire à celui réalisé ci-dessus et on démontre que : X =
R∗> ?
VW Y =
R∗X ?
(3)
Alors par le calcule des coordonnées (X, Y, Z) de chaque point d’une scène grâce à la carte de disparité et on stocke les résultats dans un fichier texte : on pourra ultérieurement réaliser une reconstruction dense de la scène tridimensionnelle grâce à ces coordonnées.