基础矩阵、本质矩阵和单应矩阵有什么区别?

40

我有两张来自不同位置的图片。第二个摄像头位于第一个摄像头相对右侧、上方和后方。

因为相机在相对不同的深度,所以我认为两个视图之间存在透视变换而不仅仅是仿射变换。我是正确的吗?

我有一些两幅图像之间对应的点。我考虑使用这些对应的点来确定每个像素从第一张图像到第二张图像的转换。

我对findFundamentalMatfindHomography函数感到困惑。两者都返回一个3x3的矩阵。它们之间的区别是什么?

使用它们是否需要任何条件/先决条件(何时使用它们)?

应该使用哪一个将点从第一幅图像转换到第二幅图像?函数返回的3x3矩阵是否包含两个图像帧之间的旋转和平移?

维基百科了解到,基本矩阵是对应图像点之间的关系。在这里的一个SO答案中,它说需要本质矩阵E才能获取对应点。但我没有内部相机矩阵来计算E。我只有两张图片。

我应该如何确定对应的点呢?

3个回答

17

在不对世界场景几何形状做任何额外假设的情况下,你不能断言两个视图之间存在投影变换。只有当场景是平面的时候,这一点才是正确的。关于该主题的一个很好的参考资料是Hartley和Zisserman的书Multiple View Geometry in Computer Vision

如果世界场景不是平面的,则绝对不应该使用findHomography函数。你可以使用findFundamentalMat函数,该函数将为你提供基础矩阵F的估计值。该矩阵描述了两个视图之间的极线几何关系。你可以使用F来校正图像,以应用立体算法来确定密集的对应映射。

我假设你使用 "透视变换 " 这个表达式来表示 "投影变换"。据我所知,透视变换是一个从世界到图像的映射,而不是图像到图像的映射。


11

只有两种情况下,两个视图之间的变换是射影变换(即单应性变换):要么场景是平面的,要么这两个视图是由一个围绕其中心旋转的相机生成的。


11

基础矩阵满足以下关系: x'Fu = 0 其中x是一张图片中的点,u是另一张图片中的点,当且仅当x和u是同一3D点的投影时才成立。 此外, l = Fu 定义了一条直线(lx' = 0),其对应的u点必须位于该直线上,因此它可以用于限定对应点的搜索空间。

单应性将平面的一个投影上的点映射到平面的另一个投影上。 x = Hu


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接