OpenCV相机运动估计

时间:2013-12-27 19:52:07

标签: c++ opencv camera

我正在尝试按照此处提供的说明实施估算相机运动的算法:

http://www.morethantechnical.com/2012/02/07/structure-from-motion-and-3d-reconstruction-on-the-easy-in-opencv-2-3-w-code/

我的目的只是检索相机的动作,而不是重建场景。

因此拍摄了一张图像,然后我的相机稍微向右移动(没有旋转),并尝试检查结果的一致性。

我假设第一个相机矩阵是规范的,所以我计算并分解基本矩阵以提取第二个视图的相机矩阵。我使用OpenCV在线文档中提出的方法校准了我的相机,并且得到了大约3个像素的重投影误差(我感觉有点高)。

我得到以下结果:

R:
[-0.9849526307494116, 0.01908251779036621, -0.1717677871272531;
 0.05845683495175302, -0.8985189871723962, -0.4350246293465628;
 -0.1626379833471766, -0.4385196542978104, 0.8838831366008135]

t:
[-0.08455893449383088; -0.224114799153024; 0.9708873999583411]

R 似乎是有效的(行列式等于1,矢量形成一个标准正交基础)然而我认为它是不一致的,因为,正如我已经提到的我的相机,在两个视图之间没有旋转。我假设 R 应该接近3x3单位矩阵, t 向量应该只描述沿x轴的平移。

由于我是这个特定计算机视觉科目的初学者,我想问一下这是否可能归因于我的代码中的错误,或者我错误地假设原始相机框架(对应于规范相机)矩阵)的x,y轴与图像的x,y轴对齐,其z轴朝向场景。

非常感谢你的帮助!

0 个答案:

没有答案