Je travaille sur le sujet de estimation de la pose caméra pour les applications de réalité augmentée et de suivi visuel depuis un certain temps et je pense que bien qu'il y ait beaucoup d'informations détaillées sur la tâche, il y a encore beaucoup de confusions et de malentendus.
Je pense que les questions suivantes méritent une réponse détaillée étape par étape.
- Que sont les intrinsèques de la caméra?
- Que sont les extrinsèques de caméra?
- Comment calculer l'homographie à partir d'un marqueur planaire?
- Si j'ai une homographie, comment puis-je faire poser la caméra?
Réponses:
Il est important de comprendre que le seul problème ici est d'obtenir les paramètres extrinsèques. Les caractéristiques intrinsèques des caméras peuvent être mesurées hors ligne et il existe de nombreuses applications à cet effet.
Que sont les intrinsèques de la caméra?
Paramètres intrinsèques de l' appareil photo est généralement appelé la matrice d'étalonnage de la caméra, . Nous pouvons écrireK
où
et α v sont le facteur d'échelle dans lesdirections des coordonnées u et v et sont proportionnels à la distance focale f de la caméra: α u = k u f et α v = k v f . k u et k v sont le nombre de pixels par unité de distance dans lesdirections u et v .αu αv u v f αu=kuf αv=kvf ku kv u v
est appelé le point principal, généralement les coordonnées du centre de l'image.c=[u0,v0]T
est le biais, seulement non nul si u et v ne sont pas perpendiculaires.s u v
Une caméra est calibrée lorsque les caractéristiques intrinsèques sont connues. Cela peut être fait facilement, de sorte qu'il ne s'agit pas d'un objectif en vision par ordinateur, mais d'une étape triviale hors ligne.
Quelques liens:
ftp://svr-ftp.eng.cam.ac.uk/pub/reports/mendonca_self-calibration.pdf
Que sont les extrinsèques de caméra?
Extrinsèque de la caméra ou paramètres externes est une matrice 3 × 4 qui correspond à la transformation euclidienne d'un système de coordonnées universelles au système de coordonnées de la caméra. R représente une matrice de rotation 3 × 3 et t[R|t] 3×4 R 3×3 t une translation.
Les applications de vision par ordinateur se concentrent sur l'estimation de cette matrice.
Comment calculer l'homographie à partir d'un marqueur planaire?
L'homographie est une matrice homogène qui relie un plan 3D et sa projection d'image. Si nous avons un plan Z = 0, l'homographie H qui mappe un point M = ( X , Y , 0 ) T sur ce plan et son point 2D correspondant m sous la projection P = K [ R | t ] est3×3 Z=0 H M=(X,Y,0)T m P=K[R|t]
Pour calculer l'homographie, nous avons besoin de paires de points caméra du monde. Si nous avons un marqueur planaire, nous pouvons en traiter une image pour extraire des entités, puis détecter ces entités dans la scène pour obtenir des correspondances.
Nous avons juste besoin de 4 paires pour calculer l'homographie en utilisant la transformation linéaire directe.
Si j'ai une homographie, comment puis-je faire poser la caméra?
la source
Tout en expliquant très bien le cas bidimensionnel, la réponse proposée par Jav_Rock ne fournit pas de solution valable pour les poses de caméras dans un espace tridimensionnel. Notez que pour ce problème, plusieurs solutions possibles existent.
Cet article fournit des formules fermées pour décomposer l'homographie, mais les formules sont quelque peu complexes.
OpenCV 3 implémente déjà exactement cette décomposition ( decomposeHomographyMat ). Étant donné une homographie et une matrice intrinsèque correctement mise à l'échelle, la fonction fournit un ensemble de quatre rotations et traductions possibles.
Dans ce cas, la matrice intrinsèque doit être donnée en unités de pixels, ce qui signifie que votre point principal est généralement
(imageWidth / 2, imageHeight / 2)
et votre distance focale est généralementfocalLengthInMM / sensorWidthInMM * imageHeight
.la source
focalLengthInMM / sensorWidthInMM * imageWidth
? Pourquoi choisissez-vous plutôt la hauteur?