相机

Posted by     "HUO" on Thursday, December 26, 2024

相机模型

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 Coefficients3 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 后的数值)

matlab标定结果

误差尽量越小越好,理论上0.1 pixels以内算是比较好的结果可以使用,筛去之后若还是有较大误差,可以选择重新拍摄标定图,或者自行调整标定文件。

像素重投影误差并非相机标定精度评定的唯一评价标准,重投影误差小并不一定代表镜头的标定精度就高,它仅能代表该组样本的棋盘方格的拟合程度,对于未拍摄到棋盘方格约束的镜头区域,其像素畸变程度仍不确定,特别是边缘区域。

3. 标定结果输出

点击 Export Camera Parameters输出最终单目相机标定结果,输出结果为

  • K 相机内参矩阵
  • RadialDistortion 相机径向畸变参数 k1,k2,k3,若选择2 Coefficients,只有两个参数
  • TangentialDistortion 相机切向畸变参数 p1,p2

参考

MATLAB 单目相机标定

Camera Calibration

fisheye-calibration-basics

https://ww2.mathworks.cn/help/vision/ug/camera-calibration.html