1. 针孔相机
1.1 原理
V-INS中这一部分的标定是基于张正友在A Flexible New Technique for Camera Calibration中提出的方法进行的。
1.2 代码解读
VINS中针孔相机的标定文件包括以下核心函数:
1 | PinholeCamera(const std::string& cameraName, |
函数cv::findHomography的作用为找到并返回源平面和目标平面之间的转换矩阵H,以便于反向投影错误率达到最小即:

反向投影错误率计算方式如下:

如果方法参数的值为默认值0,则该函数使用所有点对来计算具有简单最小二乘的初始单应性估计。
2. 鱼眼相机
2.1 理论
2.2 代码解读
V-INS中鱼眼相机的标定目标参数为k1,k2,p1,p2,fx,fy,cx,cy,标定程序位于camera_model/src/camera_models/PinholeCamera.cc,由以下几个核心函数组成:
1 | void CataCamera::estimateIntrinsics(const cv::Size& boardSize, |
内参估计源码框架:
1 | def estimateIntrinsics(boardSize: Point2d, objectPoints: List[List[Point3f]], imagePoints: List[List[Point2f]]) -> void: # CataCamera.cc |
1 | def liftProjective(p: Point2f, P: Point3f): |
1 | def distortion(p_u: Point2f, d_u: Point2f: |
1 | def estimateExtrinsics(objectPoints, imagePoints): # asset(len(objectPoints) == len(imagePoints) == 42) |
1 | def reprojectionError(objectPoints: List[List[Point3f]], imagePoints: List[List[Point2f]], rvecs: List[cv2.Mat], tvecs: List[cv2.Mat]): |
1 | def projectPoints(objectPoints: List[Point3f], rvecs: cv2.Mat, tvecs: cv2.Mat): |