[pl-slam] 几个重要的参数属性
1.class PinholeStereoCamera
创建PL-SLAM工程时,参数是一个相机模型;运行StVO时,函数参数也是一个相机模型;在plslam_dataset.cpp中,在读取完图像数据后,很重要的一个是读取相机参数,设定一个针孔相机模型。
因此,先具体看下相机模型的相关类: class PinholeStereoCamera
(1)定义了相机的内参:
private: const int width, height; //ccd的宽度和高度 double fx, fy; //相机的焦距fx,fy double cx, cy; //光心偏移量 const double b; //baseline基线长度 Matrix3d K; //相机内参 bool dist; Matrix<double,5,1> d; //相机的畸变参数 Mat Kl, Kr, Dl, Dr, Rl, Rr, Pl, Pr, R, t, Q; Mat undistmap1l, undistmap2l, undistmap1r, undistmap2r;
(2)img畸变修正函数:
// Image rectification // 图像修正 void rectifyImage( const Mat& img_src, Mat& img_rec); void rectifyImagesLR( const Mat& img_src_l, Mat& img_rec_l, const Mat& img_src_r, Mat& img_rec_r ); //修正图像畸变
(3)投影和反投影函数:
// Proyection and Back-projection Vector3d backProjection_unit(const double &u, const double &v, const double &disp, double &depth); Vector3d backProjection(const double &u, const double &v, const double &disp); //从像素坐标系(u,v)得到相机坐标下的3D坐标 Vector2d projection(Vector3d P); //将相机坐标系下的3D坐标投影到像素平面上,归一化后的 Vector3d projectionNH(Vector3d P); //将相机坐标系下的3D坐标投影到像素平面上,非归一化 Vector2d nonHomogeneous( Vector3d x); //归一化坐标
主要就是包括从相机坐标系到像素坐标系的互相转换。
2.点特征 class PointFeature
主要就是包括特征点的一些固有属性参数:
int idx; //特征点索引 Vector2d pl, pl_obs; //特征点的像素坐标系和观测到的像素坐标系 double disp; //特征点的像素视差 Vector3d P; //特征点的3D坐标 bool inlier; //特征点是否为内点 int level; //还不清楚这个level是指啥 double sigma2 = 1.0;
3.线特征 class LineFeature
和点特征类似,不同的是线特征存储的是线段的两个端点,所以参数相比较会多一倍:
int idx; Vector2d spl,epl, spl_obs, epl_obs; double sdisp, edisp, angle, sdisp_obs, edisp_obs; Vector3d sP,eP; Vector3d le, le_obs; bool inlier; int level; double sigma2 = 1.0;
注意:点特征和线特征这两个类都在StVO命名空间中。