繁体   English   中英

如何计算两个摄像机之间的旋转和平移?

[英]How to compute the rotation and translation between 2 cameras?

我知道棋盘相机校准技术,并且已经实现了它。

如果我有2台摄像机观看同一场景,并且同时使用棋盘技术进行了校准,是否可以计算它们之间的旋转矩阵和平移矢量? 怎么样?

如果具有对应点的3D摄像机坐标,则可以通过“ 刚体变换”计算最佳旋转矩阵和平移矢量

如果您已经在使用OpenCV,那么为什么不使用cv::stereoCalibrate

它返回旋转和平移矩阵。 您唯一要做的就是确保两个摄像机都能看到校准棋盘。

准确的方法在OpenCV库提供的.cpp示例中显示(我有2.2版本,示例默认安装在/ usr / local / share / opencv / samples中)。

该代码示例称为stereo_calib.cpp。 尽管没有清楚解释他们在做什么(为此,您可能希望参考“学习OpenCV”),但这是您可以基于的。

如果我对您的理解正确,则您有两台经过校准的摄像机可以观察一个共同的场景,并且希望恢复其空间布置。 这是可能的(只要您找到足够的图像对应关系),但是最多取决于翻译比例的未知因素。 也就是说,我们可以恢复旋转(3个自由度,DOF),而只能恢复平移的方向 (2个DOF)。 这是因为我们无法判断投影的场景是大镜头还是相机很远,还是场景是小镜头而相机很近。 在文献中,将5自由度排列称为相对姿势相对方向 (Google是您的朋友)。 如果您的测量结果准确且处于大致位置,则6点对应可能足以恢复唯一的解决方案。 相对较新的算法正是这样做的。

Nister D.,“一种有效的解决五点相对姿势问题的方法”,《模式分析和机器智能》,IEEE期刊,第26卷,第6期,第756,770页,2004年6月,doi:10.1109 / TPAMI.2004.17

更新:

使用运动/捆绑调整包中的结构(例如Bundler)来同时求解场景的3D位置和相关的相机参数。

任何此类软件包都需要几个输入:

  1. 相机校准。
  2. 相机中兴趣点的2D像素位置(使用兴趣点检测,例如Harris,DoG(SIFT的第一部分))。
  3. 每个摄像机的兴趣点之间的对应关系(使用SIFT,SURF,SSD等描述符进行匹配)。

请注意,解决方案在一定程度上存在歧义。 因此,您需要提供摄像机之间或场景中一对对象之间的距离测量。

原始答案 (如注释所指出,主要适用于未校准的相机):

加州理工学院的此相机校准工具箱具有解析和可视化内在特性(镜头参数等)和外在特性(每张照片拍摄时相机如何定位)的能力。 后者是您感兴趣的。

Hartley和Zisserman蓝皮书也是很好的参考。 特别是,您可能需要查看有关对极线和基本矩阵的章节,该链接可在线免费获得。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM