文章目录
简介
三角测量是根据对应图像位置的集合和已知点的摄像机位置确定一个点的3D位置的问题。当给定相机内外参矩阵时,图像上每个特征点实际上对应三维中的一条射线,理想情况下,利用两条射线相交便可以得到三维点的坐标。但是在实际中由于计算或者检测误差,无法保证两条射线的相交性,因此需要建立新的数学模型(如最小二乘)进行求解。当存在多个视角时,解决这一问题的最简单的方式之一是寻找离所有3D射线都最近的那个3D点。
求解方法
直接线性变换法
考虑两个视角的情况,假设空间中的三维点P的齐次坐标X=[x,y,z,1]T,对应地,在两个视角的投影点分别是p1和p2,它们的图像坐标为
两幅图像对应的相机投影矩阵为P1,P2(维度时3×4),理想情况下
考虑第一个等式,在其两边叉乘x1,可以得到
将P1表示成[P11X,P21X,P31X],其中P11,P21,P31分别是投影矩阵P1的第1~3行,我们可以得到
其中第三个方程可以由前两个通过线性变换得到,因此我们只考虑前两个方程。每一个视角可以提供两个约束,联合第二个视角的约束,我们可以得到AX=0。其中
当视角个数多于2个的时候,可以采用最小二乘的方式进行求解,理论上,在不存在外点的情况下,视角越多估计的三维坐标越准确。
RANSAC鲁棒估计
当存在外点(错误的匹配点)时,则通常采用RANSAC的鲁棒估计方法进行求解。基于RANSAC的三角化算法流程为:
- 计算RANSAC采样次数,设置内点阈值(重投影误差)
- 随机采样一对视角,计算三维点坐标
- 计算每个视角中的重投影误差,统计内点个数
- 重复2,3步直到满足采样次数,选择内点数最多的视角
- 利用所有内点重新计算三维点坐标