6

我正在尝试使用 OpenCV 估计相对相机姿势。就我而言,相机已经过校准(我知道相机的内在参数)。

鉴于在两个位置捕获的图像,我需要找出两个相机之间的相对旋转和平移。典型的平移约为 5 到 15 米,摄像机之间的偏航角旋转范围在 0 到 20 度之间。

为此,采用以下步骤。

  • 一个。使用 SIFT/SURF 找到对应的点
  • 湾。基本矩阵识别
  • C。E = K'FK通过奇异性约束和修改 E估计基本矩阵
  • d。分解基本矩阵得到旋转,R = UWVt或者R = UW'Vt(U和Vt得到E的SVD)
  • e. 从旋转矩阵中获取真实的旋转角度

实验一:真实数据

对于真实数据实验,我通过将相机安装在三脚架上来拍摄图像。在位置 1 捕获的图像,然后移动到另一个对齐的位置并以 5 度的步长改变偏航角,并为位置 2 捕获图像。

问题/问题:

  1. 估计偏航角的符号与地面实况偏航角不匹配。有时 5 度估计为 5 度,但 10 度为 -10 度,15 度为 15 度。
  2. 在实验中,仅改变了偏航角,但估计的 Roll 和 Pitch 角具有接近 180/-180 度的非零值。
  3. 在某些情况下,精度非常差,估计和地面真实角度的误差约为 2-5 度。
  4. 如何找出比例因子以获取实际测量单位的转换?

模拟数据的行为也相同。

有没有人和我遇到过类似的问题?对如何解决它们有任何线索。任何人的任何帮助将不胜感激。

(我知道已经有很多类似问题的帖子了,所有这些都没有救我。因此再发一次。)

4

2 回答 2

2

在 Hartley 和 Zisserman 的第 9.6 章中,他们指出,对于一个特定的基本矩阵,如果一个摄像机保持在规范位置/方向,则第二个摄像机矩阵有四种可能的解决方案:[UWV' | u3],[UWV' | -u3], [UW'V' | u3] 和 [UW'V' | -u3]。

第一个和第三个(以及第二个和第四个)解决方案之间的区别在于,方向围绕连接两个相机的线旋转了 180 度,称为“双绞线”,这听起来就像你所描述的那样。

书中说,为了从四个选项中选择正确的平移和方向组合,您需要在场景中测试一个点,并确保该点位于两个摄像机的前面。

于 2014-04-07T19:38:22.137 回答
0

对于问题 1 和 2,请在 wikipedia 或任何好的数学网站(如 Wolfram Mathworld)中查找“欧拉角”。你会发现欧拉角的不同可能性。我相信您可以根据文献阅读弄清楚为什么您的结果会出现符号变化。

对于问题 3,它应该主要与我们个人相机校准的准确性有关。

对于问题 4,不确定。怎么样,使用胶带测量相机的一个点并将其与平移规范进行比较以获得比例因子。

精度差的可能原因:

1)在相机校准中获得合理和精确的准确性之间存在差异。看到这个线程。2) 移动三脚架的精度。您如何确保在位置变化期间三脚架不会围绕垂直于表面的轴旋转。

我没有得到你的模拟概念。但是,我建议进行以下测试。

在不移动相机或物体的情况下拍摄图像。现在如果你计算相对相机位姿,旋转应该是单位矩阵,平移应该是空向量。由于数值不准确和噪音,您可能会看到以弧分为单位的旋转偏差。

于 2012-11-14T11:12:08.740 回答