繁体   English   中英

提取我从基本矩阵中得到的平移向量的尺度

[英]Extracting the scale of translation vector that I got from the essential matrix

我想获得两台相机在同一视图下的外在参数。 为此,我遵循了几本教科书、讲座等中规定的程序。

  1. 使用 SIFT 计算两个图像中的匹配。
  2. 使用 OpenCV cv2.findEssentialMat 计算基本矩阵。
  3. 使用 cv2.recoverPose() 从四个解中恢复正确的 R 和 t。

根据我的理解,翻译是有尺度的。 我该怎么做才能获得绝对翻译。 我在场景中没有任何已知物体,也许场景中会有车道线,有没有办法使用车道线信息来获得绝对平移?

我在 dsp stackexchange 上发现了这篇文章,它部分解决了您的问题。 如您所见,无法从基本矩阵中推断出翻译的规模,您需要更多信息。 这是有道理的,因为如果您的唯一信息是点对应,那么大小和形状就会模糊不清。

如何推断规模
如果您需要知道相机平移比例,则需要了解一些场景几何体。 也就是说,您可以将其用作确定平移范围的参考,例如场景中校准对象的坐标。 然后,您可以使用像Perspective-n-Point (PnP)这样的姿势估计方法。 我发现 Willem Hof 关于 PnP 的这个讲座,其中包括非常清晰和简洁的代码截图。

请注意,在执行 PnP 时,您有多个未知数。 你的第一台相机被假定为[I|0]所以它的姿势是完全未知的。 一旦第一台摄像机已知,第二台摄像机的姿态将是P1·rel P1 ,第二台摄像机只剩下一个未知参数,即它的平移比例。

为什么你不能推断翻译的规模
例如,如果您有两个球的图像和许多点对应关系,这些图像是用未知位置和姿势的校准相机拍摄的:那么它是一个普通的足球还是一座山大小的球雕塑? 好吧,我们可以使用基本矩阵来获得两个相机的相对姿势,并对球的 3D 重建进行三角测量。 但我们会知道规模吗? 当然我们现在知道球的形状,但是三角点之间的距离是多少? 该信息不存在。 可以推断出相机的相对旋转; 一个在球的前面(将此相机表示为[I | 0] ),另一个在球的一侧。 您还知道相机行进的方向(平移),但不知道多远。 对于大型对象,翻译将具有更大的规模。 同样,您确实从基本矩阵分解中知道了两个相机的相对平移方向和相对旋转,这是一个有价值的约束。

暂无
暂无

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

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