Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 同一投影矩阵的不同基本矩阵_Matlab_Computer Vision_Projection Matrix_Perspectivecamera_Projective Geometry - Fatal编程技术网

Matlab 同一投影矩阵的不同基本矩阵

Matlab 同一投影矩阵的不同基本矩阵,matlab,computer-vision,projection-matrix,perspectivecamera,projective-geometry,Matlab,Computer Vision,Projection Matrix,Perspectivecamera,Projective Geometry,我使用两个投影矩阵P1和P2(例如我正在使用),我需要计算基本矩阵F。 因此,我使用两个Matlab函数: Peter Kovesi的职能:www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundfromcameras.m Zisserman:www.robots.ox.ac.uk/~vgg/hzbook/code/vgg_multiview/vgg_F_from_P.m 这些函数应该做同样的事情,但是我有一个不同的F值!这怎么可能

我使用两个投影矩阵P1和P2(例如我正在使用),我需要计算基本矩阵F。 因此,我使用两个Matlab函数:

  • Peter Kovesi的职能:www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundfromcameras.m
  • Zisserman: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:

  • Peter Kovesi的ransac拟合基本矩阵:

我有X2^T*F*X1=0。。。。很明显,F与我在其他两个函数中使用的两个F不同…

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


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

基本矩阵只有在一定范围内是唯一的


因此,即使你有不同的基本矩阵,这两种矩阵都可以适用于你的图像。

我确信彼得·科维西的函数是正确的,它的函数是正确的!