2D-2D:对极几何
A.对极约束
@输入:参考帧和当前帧的2D点坐标对(一般8对),内参
@输出:运动恢复R t
参考帧和当前帧的二维像素点通过特征点法拿到了匹配关系,那么从各自光心出发的两条射线交点即3D点,P和两个光心构成了极平面, e 1 e1 e1 \ e 2 e2 e2为极点, l 1 l1 l1 \ l 2 l2 l2是极线(Epipolar line)。
对极几何必须要有正确的匹配关系,否则当前帧无法找到参考帧 p 1 p1 p1对应的点在 p 2 p2 p2,那样的话就要用极线搜索了。
对极几何求R t的步骤是:
1.根据匹配的像素点对和内参求出基础矩阵F或者本质矩阵E。E=t^ R,只和运动有关,所以是我们求的本质,平移和旋转各3自由度,单目尺度歧义性自由度-1,所以E有5个自由度,一般用八点法,8对点求;F还包括内参 F = K − T ∗ E ∗ K − 1 F=K^{-T}*E*K^{-1} F=K−T∗E∗K−1.
2.根据E或者R恢复R t。这里一般用SVD分解恢复出4个解,然后取点在相机前方的那个解。
B.单应矩阵
@输入:参考帧和当前帧的2D点坐标对(一般4对),内参
@输出:运动恢复R t
Homography描述两个平面之间的映射关系,自由度为8。可以通过4对不共线的点得出。一般配合RANSAC。
退化(degenerate):特征点共面or纯旋转,基础矩阵的自由度下降(比如平移那块没了),就出现了退化。
ORB中H 和F都算,取好的。
没有特征匹配下的2D-2D:极线搜索
深度滤波器:用多次三角测量让深度估计收敛
直接法时候没有特征点匹配,所以需要用极限搜索,如DSO中ImmaturePoint::traceOn()。DSO论文中没有过多提及,深度滤波器部分可以看SVO比较详细。
@输入