相机模型
Model | Maximum FOV |
---|---|
Pinhole Model(针孔相机模型) | Up to 95°For greater accuracy as you get close to 95° , increase the number of distortion coefficients.Can be used in all CVT camera calibration workflows. |
Kannala-Brandt Model (OpenCV fisheye model) | Up to 115°Import fisheye parameters from OpenCV using the cameraIntrinsicsFromOpenCV function. |
Scaramuzza Model | Up to 195° |
内参标定
matlab标定结果精度和稳定性更高,同时重复性更好。根据MATLAB与OpenCv进行相机标定,谁的标定精度高?中评估,matlab中定位角点的精度高和一致性较opencv好,相同角点数据下,标定结果一致,matlab支持相机模型较少,可以通过matlab获取角点后使用其他程序如opencv计算内参。
标定操作流程
1. 数据导入
APP中找到Camera Calibrator
点击 Add Images
添加图片并选择标定板,matlab支持三种标定板
- Checkerboard 棋盘格
- Asymmetric Circle Grid 不对称圆棋盘格
- Symmetric Circle Grid 对称圆棋盘格
等待完成筛选有效标定图
Total ... processed
为总计标定图数量Added ...
为有效标定图数量Rejected ...
为无效标定图数量
有效标定图数量至少需要20张以上,若不足需重新拍摄。
2. 标定
设置标定参数
camera model
-
Standrad 标准
-
Radial Distortion: $k_1$, $k_2$, $k_3$
可选项:
2 Coefficients
,3 Coefficients
(一般相机非广角/鱼眼选择2 Coefficients
即可) -
compute:
Skew
,Tangential Distortion
Skew
: coefficient, which is non-zero if the image axes are not perpendicular. 当图像传感器图像存在歪斜时启用。(一般不用)Tangential Distortion
: 切向畸变,$p_1$, $p_2$(一般启用)
-
-
Fisheye 鱼眼
使用Scaramuzza’s Taylor model
数据调整
点击 Calibrate
,筛去误差大的标定图,鼠标点击选择或者拖拽红线选择,使得重投影误差小于等于 0.2 pixels
(在左下角图例中 Overall Mean Error
后的数值)
误差尽量越小越好,理论上0.1 pixels以内算是比较好的结果可以使用,筛去之后若还是有较大误差,可以选择重新拍摄标定图,或者自行调整标定文件。
像素重投影误差并非相机标定精度评定的唯一评价标准,重投影误差小并不一定代表镜头的标定精度就高,它仅能代表该组样本的棋盘方格的拟合程度,对于未拍摄到棋盘方格约束的镜头区域,其像素畸变程度仍不确定,特别是边缘区域。
3. 标定结果输出
点击 Export Camera Parameters
输出最终单目相机标定结果,输出结果为
K
相机内参矩阵RadialDistortion
相机径向畸变参数k1,k2,k3
,若选择2 Coefficients
,只有两个参数TangentialDistortion
相机切向畸变参数p1,p2
参考
https://ww2.mathworks.cn/help/vision/ug/camera-calibration.html