对极几何约束、基本矩阵求解、求极线
Email:[email protected]
在看一篇论文里,提到使用对极几何约束来寻找运动区域,于是来回看了几遍对极几何约束的知识,具体的步骤没有详细推导过,只是了解了基本原理。
对极几何中的重要概念(参考下图):
极点:极点 el el:右相机坐标原点在左像平面上的像;极点 er er:左相机坐标原点在右像平面上的像
极平面:由两个相机坐标原点 Ol Ol、 Or Or和物点P组成的平面
级线:极平面与两个像平面的交线,即 plel plel和 prer prer
级线约束:两极线上点的对应关系
1. 找到物点P在左像平面上的像点 pl ;
2. 画出极线 plel ;
3. 找到极平面 Olplel 与右像平面的交线,即得极线 prer ;
4. 像点 pl 的对应点一定在极线 prer 上。
知道这一点就行了。这些对应点之间的存在的对应关系:基础矩阵。
参考http://www.cnblogs.com/gemstone/archive/2011/12/20/2294805.html
求解基础矩阵的方法,有8点算法、LMed算法、RANSAC算法。
findFundamentalMat();//这个函数可以百度百科
3.2求极线
void cvComputeCorrespondEpilines( const CvMat* points, int which_image, const CvMat* fundamental_matrix, CvMat* correspondent_lines);
points输入点,是2xN 或者 3xN 数组 (N为点的个数)
which_image包含点的图像指数(1 or 2)
fundamental_matrix基本矩阵correspondent_lines计算对极点, 3xN数组
函数 ComputeCorrespondEpilines 根据外级线几何的基本方程计算每个输入点的对应外级线。
如果点位于第一幅图像(which_image=1),对应的对极线可以如下计算 :
其中F是基本矩阵,p1是第一幅图像中的点,l2- 是与第二幅对应的对极线。
如果点位于第二副图像中 which_image=2),计算如下:
其中p2是第二幅图像中的点,l1是对应于第一幅图像的对极线,每条对极线都可以用三个系数表示 a, b, c:
归一化后的对极线系数存储在correspondent_lines 中。
例如:(图中还绘制了几个点)