我进行了一项与OpenCV相机姿态估计相关的简单测试。 我使用一张照片和相同的放大(缩放)后的照片来检测特征,计算本质矩阵并恢复相机姿态。
Mat inliers;
Mat E = findEssentialMat(queryPoints, trainPoints, cameraMatrix1, cameraMatrix2,
FM_RANSAC, 0.9, MAX_PIXEL_OFFSET, inliers);
size_t inliersCount =
recoverPose(E, queryGoodPoints, trainGoodPoints, cameraMatrix1, cameraMatrix2, R, T, inliers);
当我将原始图像指定为第一个图像,放大后的图像作为第二个图像时,得到的平移矩阵T接近于[0; 0; -1]。但是第二个相机(放大后的)实际上比第一个相机更靠近物体。因此,如果Z轴从图像平面进入场景,则第二个相机应该沿着Z轴有正偏移量。而对于我的结果,Z轴从图像平面朝向相机,并与其他轴(X轴向右,Y轴向下)形成了左手坐标系。这是真的吗?为什么这个结果与这里所示的坐标系不同?
t
和R
,我应该:1)反转齐次矩阵E
,然后2)使用recoverPose()函数? - dexter2406