我使用两个投影矩阵P1和P2(例如,我使用dinosaur dataset),并且我需要计算基本矩阵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^TFX1 = 0...所以我用SURF从两个旋转图像(5度)中找到了两个对应的点,但是X2^TFX1在这两个函数下永远不等于零。
相反,如果我使用这个函数从匹配点计算F:
- Peter Kovesi的ransac拟合基本矩阵:ransacfitfundmatrix.m
我有X2^TFX1 = 0......显然F不同于我用另外两个函数得到的两个F......
2条答案
按热度按时间nafvub8i1#
首先,这些点很可能不是彼此完美旋转的版本。SURF使用了很多近似、双线性插值和一系列打破真正旋转不变性的东西。因此,可能不存在这样一个基本矩阵(如果两组点之间没有线性关系)。是的,即使在你进行点匹配之后,这也是正确的。
也就是说,如果匹配非常好,
X2^T*F*X1
可能应该很小,但如果它对任何真实图像都是零,我会感到惊讶。2hh7jdfx2#
基本矩阵仅在尺度上是唯一的。
因此,即使您有不同的基本矩阵,这两个矩阵对您的图像都是正确的。