MATLAB 双目相机标定

MATLAB 双目相机标定

Write by Champrin on 2022-12-11
GUET Evolution Team Visual Group
Reference article:
双目相机标定——从MATLAB到OpenCV
相机标定——标定图片拍摄规范
相机标定—>标定图片拍摄规范(附棋盘图)
关于相机标定的问题!

本文使用 MATLAB R2022b 进行双目标定。

采用本文的一些标定选项以及结果数据处理,在 C++ OpenCV 4.5.3 及其双目视觉的相关方法,是能够得到预期的结果的。

若是对远距离进行测距,需要将两个相机的距离调整的更大,以获得更高的精度。

标定操作流程

1. 命令行窗口输入 stereoCameraCalibrator

2. 点击 Add Images

  • Folder for images from camera 1 选择左相机所拍摄的标定棋盘图
  • Folder for images from camera 2 选择右相机所拍摄的标定棋盘图
  • Size of checkerboard square 为每个棋盘格实际长度(mm)
  • 点击 确定

3. 等待完成筛选有效标定图

  • Total stereo pairs processed 为总计标定图数量
  • Added stereo pairs 为有效标定图数量
  • Rejected stereo pairs 为无效标定图数量
  • 点击 确定

4. 设置标定参数

  • OPTIONS 栏中
    • 选择 2 Coefficients (图片上忽略,截错图),3 Coefficients 一般用于鱼眼相机
    • 勾选 Tangential Distortion,计算切向畸变
    • 不勾选 Skew,若勾选,标定相机内参结果将出现参数 s ,即内参的第一行是 [fx, s, u0] ,这将会与我们使用的 OpenCV 进行测距的参数不同
  • INTRINSICS 栏中,选择 Compute Intrinsics
  • 点击 Calibrate

5. 查看校正效果,筛去误差大的标定图

  • 点击 Show Rectified 查看校正后的效果
  • 筛去误差大的标定图,鼠标点击选择或者拖拽红线选择,使得重投影误差小于等于 0.1 pixels(在左下角图例中 Overall Mean Error 后的数值)
    • 忽略图片上的,这是由于我自己手头上没有实物标定板,使用了iPad显示来代替,但由于过曝,黑白像素点会被“吃掉”,误差会很大

6. 导出标定结果

  • 点击 Export Camera Parameters
  • 设置结果变量名(默认即可)Stereo parameters variable
  • 点击 确定

7. 回到工作区查看标定结果

最终双目相机标定结果,后续使用OpenCV做双目测距所需参数:
假设结果变量名设置为 stereoParams

  • stereoParams.CameraParameters1

    • K 相机1(左相机)内参矩阵
    • RadialDistortion 相机1径向畸变参数 k1,k2,k3
    • TangentialDistortion 相机1切向畸变参数 p1,p2
  • stereoParams.CameraParameters2

    • K 相机2(右相机)内参矩阵
    • RadialDistortion 相机2径向畸变参数 k1,k2,k3
    • TangentialDistortion 相机2切向畸变参数 p1,p2
  • stereoParams.PoseCamera2

    • R 相机1到相机2的旋转矩阵,也即相机2相对于相机1的旋转矩阵
    • R2022b版本在OpenCV上使用无需转置
    • Translation 相机1到相机2的平移矩阵

OpenCV 相机内参矩阵:\(\begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}\)

OpenCV 相机畸变向量:\(\begin{pmatrix} k_1 & k_2 & p_1 & p_2 & k_3 \end{pmatrix}\)
由于第 4 步选择了 2 Coefficients,因此 k3 填为 0.0

附:标定棋盘图拍摄规范

  1. 在一次标定的整个过程中,不能调节相机的光圈、焦距,要保证在标定中摄像头进光量与焦距的一致,改变需要重新标定
  2. 把相机图像分成四个象限(如图1所示),应保证拍摄的标定板图像均匀分布在五个位置(四个象限以及正中心)中,且在每个位置进行不同方向的两次倾斜,参考图2;同时,可以固定住标定板,在不同角度拍摄。
  3. 标定板的成像应大致占摄像头视野的1/4左右
  4. 标定板成像不能过曝,过曝会导致特征轮廓的提取的偏移
  5. 拍摄过程中可以对标定板适当的进行补光,调节标定板到镜头的距离,以便于排出清晰的图片
  6. 标定图片数量通常在15~25张之间,数量太少,标定的参数会不准确
  7. 标定时用的标定板最好选择x方向与y方向棋盘格不同的,便于标定程序识别标定板方向
posted @ 2023-01-08 05:15  Champrin  阅读(2398)  评论(0编辑  收藏  举报