图像间投影关系

成像过程:

 

 

薄镜公式: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。

posted @ 2021-05-10 13:03  KAVEI  阅读(356)  评论(0编辑  收藏  举报