(二)Matlab工具箱标定双目相机(超详细)

(二)Matlab工具箱标定双目相机(超详细)

  • 0 前言
  • 1 准备
    • 1.1 采集图片
    • 1.2 分割图片
  • 2 标定(Calibration)
    • 2.1 方法1
    • 2.2 方法2
    • 2.3 结果对比
  • 3 小结

0 前言

  上一个章节,我们介绍了一下怎样用matlab的工具箱标定单目相机(摄像头):(一)Matlab工具箱标定单目相机(超详细) 。这一节我们介绍一下如何标定双目相机。

1 准备

  跟前面一样,在标定之前需要先完成图片采集。双目相机的图像采集跟单目相机一样,我们实验室用的双目相机是西颜娴,一个小众的牌子。如果是学生党可以考虑一下小觅双目相机,便宜的那个型号800左右就能入手。

(二)Matlab工具箱标定双目相机(超详细)_第1张图片

1.1 采集图片

  下面是采集的一些图片,在标定之前需要将图片分割成左相机和右相机图片。

(二)Matlab工具箱标定双目相机(超详细)_第2张图片

1.2 分割图片

  图片分割的方式有很多,可以用opencv写一段分割的程序,也可以用matlab写一段分割的程序。网上很多demo,在这就不贴程序了,有需要的可以给我留言。
  下面是分割后的亚子,左侧的9宫格是左侧相机,右侧的9宫格是右侧相机。

2 标定(Calibration)

  下面就可以开始标定了,在这里我们采用两种不同的方法标定。

2.1 方法1

  第一种:在窗口命令行中输入stereoCameraCalibrator,运行之后会弹出一个窗口。如图:

(二)Matlab工具箱标定双目相机(超详细)_第3张图片

  点击界面左上角的Add Images,输入左相机图片和右相机图片所在的文件夹,以及标定板的网格尺寸。(我的是10mm的)

(二)Matlab工具箱标定双目相机(超详细)_第4张图片

  点击确定,标定板上的点就会被自动标注,如图:

(二)Matlab工具箱标定双目相机(超详细)_第5张图片

  点击界面上方的Calibrate键,启动标定,结果如图所示:

(二)Matlab工具箱标定双目相机(超详细)_第6张图片
(二)Matlab工具箱标定双目相机(超详细)_第7张图片

  第一幅图是误差分析,可以看到**总体平均误差(Overall Mean Error)**为0.14个像素,最大的误差是第四张,约为0.24个像素。第二幅图是以3D图的形式显示两个相机和校准平面的空间配置。

  点击界面上方按钮Export Camera Parameters,即可导出标定结果。

(二)Matlab工具箱标定双目相机(超详细)_第8张图片

  在.mat文件中我们可以看到相机的内外参数,比如焦距、主点等。

2.2 方法2

  方法2在校正双目之前需要分别校准两个单目相机,分别生成Calib_Results_left.matCalib_Results_right.mat两个文件,参考上一节的方法。
  在命令窗口输入 stereo_gui,弹出如图窗口:

(二)Matlab工具箱标定双目相机(超详细)_第9张图片

  选择Load left and right calibration files,如果是按照上面两个文件命名的,敲两次回车(Enter)即可。

(二)Matlab工具箱标定双目相机(超详细)_第10张图片

  此时显示的标定结果是我们单个标定的结果,再点击立体标定界面的Run stereo calibration,将显示标定结果:

(二)Matlab工具箱标定双目相机(超详细)_第11张图片

  我们注意到此时的结果跟单个标定的结果已经不一样了。
  点击Show Extrinsics of stereo rig显示照片与摄像头的关系图,如图所示两个摄像头前向平行并在一条直线上,两个摄像头之间的距离为60mm与实际情况相符。

(二)Matlab工具箱标定双目相机(超详细)_第12张图片

2.3 结果对比

  左侧相机:

(二)Matlab工具箱标定双目相机(超详细)_第13张图片

  右侧相机

(二)Matlab工具箱标定双目相机(超详细)_第14张图片

  我们注意到两种方法测定的最终结果还是有些许差别的。

3 小结

  相机标定完之后,后面就要利用参数做一些小应用了,持续更新中。。。

你可能感兴趣的:(计算机视觉与ROS入门)