如何根据两个连续帧的投影变换矩阵估计相机姿态?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据两个连续帧的投影变换矩阵估计相机姿态?相关的知识,希望对你有一定的参考价值。
我正在研究kitti视觉测距数据集。我使用投影变换来记录两个2D连续帧(see projective transformation example here)。我想知道这个3 * 3投影变换矩阵是如何与kitti数据集提供的地面真实姿势相关的。
该数据集给出了序列的基本真实姿态(轨迹),如下所述:
文件夹'姿势':
文件夹'pose'包含前11个序列的基本真实姿势(轨迹)。此信息可用于培训/调整您的方法。每个文件xx.txt包含一个N×12表,其中N是该序列的帧数。行i表示经由3×4变换矩阵的左相机坐标系的第i个姿势(即,z指向前方)。矩阵以行对齐的顺序存储(第一个条目对应于第一行),并在第i个坐标系中取一个点并将其投影到第一个(= 0)坐标系中。因此,平移部分(列4的3×1矢量)对应于第i帧中相对于第一(=第0)帧的左相机坐标系的姿势。您的提交结果必须使用相同的数据格式提供。
给定的实际情况的一些样本构成:
1.000000e + 00 9.043680e-12 2.326809e-11 5.551115e-17 9.043683e-12 1.000000e + 00 2.392370e-10 3.330669e-16 2.326810e-11 2.392370e-10 9.999999e-01 -4.440892e-16
P. 999978 e-01 5.272628e-04 -2.066935e-03 -4.690294e-02 -5.296506e-04 9.999992e-01 -1.154865e-03 -2.839928e-02 2.066324e-03 1.155958e-03 9.999971e-01 8.586941 J-01
P. 999910 e-01 1.048972e-03 -4.131348e-03 -9.37345e-02 -1.058514e-03 9.999968e-01 -2.308104e-03 -5.676064e-02 4.128913e-03 2.312456e-03 9.999887e-01 Y +
P. 999796 e-01 1.566466e-03 -6.198571e-03 -1.406429e-01 -1.587952e-03 9.999927e-01 -3.462706e-03 -8.515762e-02 6.193102e-03 3.472479e-03 9.999747e-01 2.574964 J +00
P. 999637 e-01 2.078471e-03 -8.263498e-03 -1.874858e-01 -2.116664e-03 9.999871e-01 -4.615826e-03 -1.135202e-01 8.253797e-03 4.633149e-03 9.999551e-01 3.432648 + 0000
(E)0199262e-03 -1.033094e-02 -2.343818e-01 -2.645881e-03 9.999798e-01 -5.770163e-03 -1.419150E-01 1.031581e-02 5.97170e-03 9.999299e-01 4.251335 J +00
P. 999184 e-01 3.088363e-03 -1.239599e-02 -2.812195e-01 -3.174350e-03 9.999710e-01 -6.922975e-03 -1.702743e-01 1.237425e-02 6.961759e-03 9.998991E-01 5.148987 J + 00
E-01883-E-01 3.586305e-03 -1.446384e-02 -3.281178e-01 -3.703403e-03 9.999605e-01 -8.077186e-03 -1.986703e-01 1.443430e-02 8.019853e-03 9.998627e-01 6.007777 J +00
P. 998551 e-01 4.078705e-03 -1.652913e-02 -3.749547e-01 -4.231669e-03 9.999484e-01 -9.229794e-03 -2.270290e-01 1.649063e-02 9.298401e-03 9.998207e-01 6.865477 Y +00
P. 998167 e-01 4.566671e-03 -1.859652e-02 -4.218367e-01 -4.760342e-03 9.999347e-01 -1.038342e-02 -2.554151e-01 1.854788e-02 1.047004e-02 9.997731e-01 7.724036 +00
E-0199371-02 -2.838096e-01 2.060470e-02 1.164399e-02 9.997198e-01 ----- 8.Country +00
9.997264e-01 5.527315e-03 -2.272922e-02 -5.155474e-01 -5.816781e-03 9.999025e-01 -1.268908e-02 -3.121547e-01 2.265686e-02 1.281782e-02 9.996611e-01 9.440275 E + 00
P .996745 e-01 6.000540e-03 -2.479692e-02 -5.624310e-01 -6.345160e-03 9.998840e-01 -1.384246e-02 -3.405416e-01 2.471098e-02 1.399530e-02 9.995966e-01 1.029896 + 01
P.996182 e-01 6.468772e-02 -2.686440e-02 -6.093087e-01 -6.873365e-03 9.998639e-01 -1.499561e-02 -3.689250e-01 2.676374e-02 1.517453e-02 9.995266e-01 1.015757 Y + 01
P .995562 e-01 7.058450e-03 -2.894213e-02 -6.562052e-01 -7.530449e-03 9.998399e-01 -1.623192e-02 -3.973964e-01 2.882292e-02 1.644266e-02 9.994492e-01 1.201541 Y + 01
P. 995095 e-01 5.595311e-03 -3.081450e-02 -7.018788e-01 -6.093682e-03 9.998517e-01 -1.610315e-02 -4.239119e-01 3.071983e-02 1.628303e-02 9.993953e-01 1.Color + 01
你的“投射变换”的通用名称是单应性。在校准设置中(即,如果您知道相机的视野或相当于其焦距),单应性可以分解为3D旋转和平移,后者仅按比例缩放。分解算法另外产生引导单应性的3D平面的法线。该算法最多有4个解决方案,当您应用其他约束时,其中只有一个是可行的,例如匹配的图像点在摄像机前面进行三角测量,并且平移的大致方向与已知的先验一致。
有关该方法的更多信息在着名的paper by Malis and Vargas中。在OpenCV中有一个名为decomposeHomographyMat的实现。
以上是关于如何根据两个连续帧的投影变换矩阵估计相机姿态?的主要内容,如果未能解决你的问题,请参考以下文章
视觉高级篇21 # 如何添加相机,用透视原理对物体进行投影?