5

我使用两个投影矩阵 P1 和 P2(例如我使用恐龙数据集),我需要计算基本矩阵 F。所以我使用两个 Matlab 函数:

  • Peter Kovesi 的函数:www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundfromcameras.m
  • 齐瑟曼:www.robots.ox.ac.uk/~vgg/hzbook/code/vgg_multiview/vgg_F_from_P.m

这些函数应该做同样的事情,但我有不同的 F 值!怎么可能?哪个是正确的功能?

如果两个点 X1 和 X2 在两个不同的图像中“相同”,则 X2^T*F*X1 = 0 ... 所以我通过使用 SURF 从两个旋转图像(5 度)中找到了两个对应点,但是 X2^T *F*X1 在这两个函数中永远不会等于零。有任何想法吗?

相反,如果我使用这个从匹配点计算 F 的函数:

我有那个 X2^T*F*X1 = 0 .... 显然 F 与其他两个函数的两个 FI 不同...

4

2 回答 2

2

基本矩阵仅在一定范围内是唯一的。

因此,即使您有不同的基本矩阵,两者都可能对您的图像是正确的。

于 2012-07-11T08:04:49.603 回答
2

一方面,这些点极有可能不是彼此完美旋转的版本。SURF 使用了很多近似值、双线性插值和一大堆打破真正旋转不变性的东西。所以可能不存在这样的基本矩阵(如果两组点之间没有线性关系。)是的,即使在进行点匹配之后也是如此。

也就是说,X2^T*F*X1如果匹配真的很好,你可能应该很小,但如果任何真实图像都完全为零,我会感到惊讶。

于 2012-04-15T22:00:49.017 回答