图像间投影关系
成像过程:
薄镜公式:1/f=1/do=1/di;do:物体到镜子距离
di:成像面到镜子距离
针孔照相机模型
对极线
十五天掌握OpenCV——对极几何(Epipolar Geometry)_尹江 _ Cecil-CSDN博客
计算基础矩阵的函数:
int cvFindFundamentalMat( const CvMat* points1, const CvMat* points2, CvMat* fundamental_matrix, int method=CV_FM_RANSAC, double param1=1., double param2=0.99, CvMat* status=NULL);
points1
-
第一幅图像点的数组,大小为2xN/Nx2 或 3xN/Nx3 (N 点的个数),多通道的1xN或Nx1也可以。点坐标应该是浮点数(双精度或单精度)。:
-
points2
-
第二副图像的点的数组,格式、大小与第一幅图像相同。
-
fundamental_matrix
-
输出的基本矩阵。大小是 3x3 或者 9x3 ,(7-点法最多可返回三个矩阵).
-
method
-
计算基本矩阵的方法
-
CV_FM_7POINT – 7-点算法,点数目= 7(选择方法一,返回9*3矩阵,因为方程不定)
-
CV_FM_8POINT – 8-点算法,点数目 >= 8
-
CV_FM_RANSAC – RANSAC 算法,点数目 >= 8
-
CV_FM_LMEDS - LMedS 算法,点数目 >= 8
-
param1
-
这个参数只用于方法RANSAC。它是点到对极线的最大距离,超过这个值的点将被舍弃,不用于后面的计算。通常这个值的设定是0.5 or 1.0 。
-
param2
-
这个参数只用于方法RANSAC 或 LMedS 。 它表示矩阵正确的可信度。例如可以被设为0.99 。
-
status
-
具有N个元素的输出数组,在计算过程中没有被舍弃的点,元素被被置为1;否则置为0。这个数组只可以在方法RANSAC and LMedS 情况下使用;在其它方法的情况下,status一律被置为1。这个参数是可选参数。
函数 FindFundamentalMat 利用上面列出的四种方法之一计算基本矩阵,并返回基本矩阵的值:没有找到矩阵,返回0,找到一个矩阵返回1,多个矩阵返回3。 计算出的基本矩阵可以传递给函数cvComputeCorrespondEpilines来计算指定点的对极线。
cv.computeCorrespondEpilines(points, whichImage, F, lines)
oints:输入点。类型为CV_32FC2N×1或1×N矩阵。
whichImage:包含点的图像(1或2)的索引。
F:基本矩阵,可使用findFundamentalMat或stereoRectify 进行估计。
lines:对应于另一幅图像中点的极线的输出向量(a,b,c)表示直线ax+by+c=0。