36

I have two images that are taken from different positions. The 2nd camera is located to the right, up and backward with respect to 1st camera.

So I think there is a perspective transformation between the two views and not just an affine transform since cameras are at relatively different depths. Am I right?

I have a few corresponding points between the two images. I think of using these corresponding points to determine the transformation of each pixel from the 1st to the 2nd image.

I am confused by the functions findFundamentalMat and findHomography. Both return a 3x3 matrix. What is the difference between the two?

Is there any condition required/prerequisite to use them (when to use them)?

Which one to use to transform points from 1st image to 2nd image? In the 3x3 matrices, which the functions return, do they include the rotation and translation between the two image frames?

From Wikipedia, I read that the fundamental matrix is a relation between corresponding image points. In an SO answer here, it is said the essential matrix E is required to get corresponding points. But I do not have the internal camera matrix to calculate E. I just have the two images.

How should I proceed to determine the corresponding point?

4

3 回答 3

16

如果没有对世界场景几何的任何额外假设,您无法确定两个视图之间存在射影变换。仅当场景是平面时才适用。关于该主题的一个很好的参考是Hartley 和 Zisserman 所著的《计算机视觉中的多视图几何》一书。

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

我假设您使用“透视变换”一词来表示“投影变换”。据我所知,透视变换是世界到图像的映射,而不是图像到图像的映射。

于 2013-05-28T13:14:20.417 回答
11

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

于 2013-06-21T20:29:00.523 回答
10

基本矩阵的关系 是 x'Fu = 0 ,其中一个图像中的 x 和另一个图像中的 u 如果 x 和 u 是同一 3d 点的投影。l = Fu还 定义了一条线 ( lx' = 0 ),其中 u 的对应点必须在其中,因此它可用于限制对应关系的搜索空间。

Homography 将平面的一个投影上的点映射到平面的另一个投影。 x = 胡

于 2013-06-06T07:10:11.660 回答