0

étalonnage:d'étalonnage de l'appareil photo pour obtenir un plan peripendicular

Je calibré la caméra à l'aide de cette boîte à outils de vision dans Matlab. J'ai utilisé des images en damier pour le faire. Après calibration, je reçois le texte suivant:

>> cameraParams 

cameraParams = 

    cameraParameters with properties: 

    Camera Intrinsics 
    IntrinsicMatrix: [3x3 double] 
     FocalLength: [1.0446e+03 1.0428e+03] 
    PrincipalPoint: [604.1474 359.7477] 
       Skew: 3.5436 

    Lens Distortion 
     RadialDistortion: [0.0397 0.0798 -0.2034] 
    TangentialDistortion: [-0.0063 -0.0165] 

    Camera Extrinsics 
     RotationMatrices: [3x3x18 double] 
    TranslationVectors: [18x3 double] 

    Accuracy of Estimation 
    MeanReprojectionError: 0.1269 
     ReprojectionErrors: [48x2x18 double] 
     ReprojectedPoints: [48x2x18 double] 

    Calibration Settings 
         NumPatterns: 18 
         WorldPoints: [48x2 double] 
         WorldUnits: 'mm' 
         EstimateSkew: 1 
    NumRadialDistortionCoefficients: 3 
     EstimateTangentialDistortion: 1 

Je sais la transformation de coordonnées de l'appareil photo à l'checkerboard coordonnées: R1, t1. Comment puis-je comprendre la transformation entre le damier et un plan perpendiculaire: R2, t2. Étant donné que ce plan est parallèle au sol et à une hauteur de 193,040 cm de celui-ci. Cette question est une sorte de sous-partie de Calibration of images to obtain a top-view for points that lie on a same plane Je l'ai posté, pour poser une question généralisée. enter image description here

Répondre

2

Ainsi, IIRC le point de vue du système de coordonnées dans la boîte à outils sont définis à l'origine dans le coin supérieur gauche du damier, axe x vers l'axe de droite et y vers le bas (et bien sûr l'axe z est le produit vectoriel de x et y) .Ceci est facile à vérifier, il suffit de retourner les points du projet [0; 0; 0], [10; 0; 0] et [0; dix; 0] sur l'une des images d'étalonnage et voir où elles tombent. Appelons cela le cadre "vue de calibrage". Appelons aussi "étage" le deuxième plan qui vous intéresse.

Maintenant supposons (grande hypothèse) que vous avez soigneusement placé le damier dans cette vue de manière à ce qu'il soit orthogonal au sol, et avec son bord horizontal parallèle à le plancher. Cela signifie que l'axe x de la vue de calibrage est parallèle au sol et que l'axe y est orthogonal au sol. Par conséquent, le sol est parallèle au plan (x, z) du cadre de la vue de calibrage. Par conséquent, le sol est parallèle au plan (x, z) du cadre de la vue de calibrage. Par conséquent, si

Rc = [x y z] 

est la rotation de la vue d'étalonnage wrt l'appareil, puis le sol a une rotation

Rf = [x z y] 

(en supposant que le vecteur normal du plancher passe en elle. Si vous préférez que va de là, alors ce serait Rf = [zx -y]).

De plus, appelons H la distance (hauteur) de l'origine de la vue d'étalonnage depuis le sol. En rappelant que l'axe y de cette image pointe vers le sol, on voit que le point F = [0; H; 0] (en vue des coordonnées du cadre) est sur le sol, et nous pouvons l'utiliser comme l'origine du cadre de plancher.

En coordonnées de caméra, vecteur F est représenté par:

Fc = Rc * F = Rc * [0; H; 0] 

et si Tc est la (calibrée) Traduction w.r.t. la caméra du cadre de vue d'étalonnage, puis ce même point sur le sol est, à huis clos Coordonnées:

F = Tc + Fc 

Ainsi, la 3x4 coordonnée matrice de transformation du sol à l'appareil photo est

Q = [Rf, F] 

Cela devrait vous donner une estimation décente, à condition que vos hypothèses tiennent.

Bien sûr, une bien meilleure façon de procéder serait de prendre une image de l'échiquier sur le sol ...

+0

'H' est en unités réelles droite? Si je prends comme 'cm' ou 'mm'. Comment cela affecte-t-il le résultat? –

+0

Je ne sais pas pourquoi vous voulez considérer les rotations sur les axes. Rc dans ma réponse est l'une des matrices de rotation produites par l'étalonnage. Ses colonnes sont les vecteurs unitaires de l'image de cette vue. –

+0

Je vous ai donné l'expression ci-dessus. De quoi d'autres avez-vous besoin? Echangez simplement les colonnes. –