ORBSLAM3中的三角化
主要函数
在三角化中,ORBSLAM3直接使用前面已经完成了特征提取和特征匹配的结果,直接获取到特征点的像素坐标,由此,可以进行反投影从像素坐标得到相机坐标,再对相匹配的两个相机坐标进行三角化,所以这其中涉及到了两个主要函数,反投影函数unproject与三角化函数Triangulate。
注:该函数定义在KannalaBrandt8相机模型文件中。
反投影函数unproject
参数
该函数中参数只有一个待反投影的像素坐标点,const cv::Point2f引用类型。
内容
根据图像物理坐标的转换公式倒推即可得到反投影的方法:
{ u = α X ′ + c x v = β Y ′ + c y (1) \left\{\begin{matrix} u=\alpha X{}' +c_{x}\\ v=\beta Y{}'+c_{y} \end{matrix}\right.\tag{1} {
u=αX′+cxv=βY′+cy(1)
其中 ( u v ) \begin{pmatrix} u \\ v \end{pmatrix} (uv)是像素坐标, ( X ′ Y ′ ) \begin{pmatrix} X_{}' \\ Y_{}' \end{pmatrix} (X′Y′)
是图像物理坐标。
另外,图像物理坐标与相机坐标的对应关系:
{ X ′ = f X Z Y ′ = f Y Z (2) \left\{\begin{matrix} {} X{}'=f\frac{X}{Z}\\ Y{}'=f\frac{Y}{Z} \end{matrix}\right.\tag{2} {
X′=fZXY′=fZY(2)
注:由于在对特征点进行提取匹配时进行了归一化处理,所以得到的相机坐标开始,都是进行了归一化处理后的值,即对归一化坐标左乘内参即可得到像素坐标
由(1)(2)可以推得反投影公式:
{ X Z = u − c x f x Y Z = v − c y f y (3) \left\{\begin{matrix} {} \frac{X}{Z}=\frac{u-c_{x}}{f_{x}}\\ \frac{Y}{Z}=\frac{v-c_{y}}{f_{y}} \end{matrix}\right.\tag{3} {
ZX=fxu−cxZY=fyv−cy