使用MATLAB工具箱TOOLBOX_calib标定摄像头过程(双目标定)

前言:本文章主要讲解使用matlab对双目摄像头进行标定,转载请标明作者和来源,谢谢。

一、工具:

1、MATLAB2015b

2、工具箱下载地址:http://www.vision.caltech.edu/bouguetj/calib_doc/

二、标定过程:

(一)单目标定(单个摄像机分别标定)

1、将标定工具箱解压并放至MATLAB目录下,目录如下:H:\matlab\matlab\toolbox

2、打开MATLAB后点击File->Set Path->Add with Subfloders…之后选择工具箱路径为:H:\matlab\matlab\toolbox\calib,然后保存并关闭。

 70

 3、将当前文件夹文件夹路径修改为放有标定图片的文件夹,我这里放在H:\matlab\matlab\toolbox\calib\双目标定(终)中,此时如下图所示:

70

这里一定要注意放置图片的路径要正确!

4、在MATLAB命令行窗口输入calib_gui,弹出工具框

 70

 5、选择第一个选项"Standard"后弹出如下界面Camera Calibration Toolbox(以下简称标定界面),之后选择Image names

 70

 6、扫描该文件夹下存在的所有照片并显示

70

 7、按照提示要求先进行左边摄像头的标定,即输入left->bmp,然后系统会自动扫描文件名有left的照片并显示出来:

70

 70

 8、开始标定:点击“Extract grid corners”,然后根据提示输入“回车”,这里空着不填:

70

然后让你填入窗口大小,这里有教程说可以不填,我没有填,直接enter,之后会弹出第一幅图片让你用鼠标选定四个原点,然后按顺时针或逆时针旋转棋盘格最外面的四个角点

70

选好角点后命令界面会提示要你输入棋盘方格的实际边长,下图为角点标记后的图示:

70

 70

 继续命令行窗口回车键下去,弹出第二张棋盘图(同时也会弹出Figure3图片有着蓝色边框包围的角点图,这里不作显示),选择四个外围角点,如此反复下去检测完14张棋盘图。

 9、点击工具箱上Calibration,然后会出现内参数结果。

 70

 10、标定结束后可以通过标定界面按钮进行可视化的观察 点击show extrinsic显示照片与摄像头的关系图

 70

 11、点击analyse error,可以观察到误差适中

 70

12、点击Undistort image保存矫正后的图片

13、左摄像头标定结果出来后,点击Save,这时结果文件默认保存在之前放置标定图片的新建文件夹下面,默认文件名为Calib_Results.m,将其改为Calib_Results_left.mat(双目标定用到)。至此左摄像头标定结束,

14、右摄像头标定过程与左一样,只是将Basename改为right,格式仍为bpm,然后回车回车,最后保存为Calib_Results_right.mat。

 70

 

(二)双目标定

1、命令行输入stereo_gui,弹出立体标定界面,选择第一个Load

 70

 2、如果之前左右摄像头结果你是按照之前的文件名保存的,那么直接在命令行以下两行后面两次回车,否则就在后面输入你保存的文件名,注意下这里加载文件时如果出错了,那么直接重新点击Load就行了。

 70

 3、此时已经出现一个双目标定结果,不用管,再点击立体标定界面的Run,最后标定结果如下,?为正负号

 70

 4、点击show extrinsic显示照片与摄像头的关系图,如图所示两个摄像头基本是前向平行并在一条直线上,想像头之间的距离为220mm,计算存在很大的误差!!!

 70

 

(三)至此双目标定结束,下面就是讲结果写成xml文件供Opencv调用了。xml文件生成方法:先建一个txt文档,将下面语句复制进去

Intrinsics_Camera_Left.xml:

<?xml version="1.0"?>   

<opencv_storage>   

<Intrinsics_Camera_Left type_id="opencv-matrix">   

  <rows>3</rows>   

  <cols>3</cols>   

  <dt>d</dt>   

  <data>   

  242.07090   0.          158.63886    

  0.          241.93907   122.51327

  0.          0.          1.   

</data>   

</Intrinsics_Camera_Left>   

</opencv_storage>   

 

Distortion_Camera_Left.xml:

<?xml version="1.0"?>   

<opencv_storage>   

<Distortion type_id="opencv-matrix">   

  <rows>5</rows>   

  <cols>1</cols>   

  <dt>d</dt>   

  <data>   

    -0.45689   0.21384   -0.00109   0.00213  0.00000   

</data>   

</Distortion>   

</opencv_storage>

 

Intrinsics_Camera_Right.xml:

<?xml version="1.0"?>   

<opencv_storage>   

<Intrinsics_Camera_Right type_id="opencv-matrix">   

  <rows>3</rows>   

  <cols>3</cols>   

  <dt>d</dt>   

  <data>   

  239.56142   0.          154.13100     

  0.          238.59489   125.91739   

  0.          0.          1.   

  </data>   

</Intrinsics_Camera_Right>   

</opencv_storage>

 

Distortion_Camera_Right.xml:

<?xml version="1.0"?>   

<opencv_storage>   

<Distortion type_id="opencv-matrix">   

  <rows>5</rows>   

  <cols>1</cols>   

  <dt>d</dt>   

  <data>   

   -0.44959  0.24035  -0.00203  0.00198  0.00000   

</data>   

</Distortion>   

</opencv_storage>

 

RotRodrigues.xml:

<?xml version="1.0"?>   

<opencv_storage>   

<RotRodrigues type_id="opencv-matrix">   

  <rows>3</rows>   

  <cols>1</cols>   

  <dt>d</dt>   

  <data>   

   -0.00357  -0.01579  0.00387   

</data>   

</RotRodrigues>   

</opencv_storage>

 

Translation.xml:

<?xml version="1.0"?>   

<opencv_storage>   

<Translation type_id="opencv-matrix">   

  <rows>3</rows>   

  <cols>1</cols>   

  <dt>d</dt>   

  <data>   

   -65.12457  0.09307  -2.05958

</data>   

</Translation>   

</opencv_storage>

将上述语句复制到txt中,然后直接修改后缀为xml即可,以上数值都是MATLAB立体标定结果内容,自己复制后只需将数字对应改成自己的标定结果就行。

补充:

1、内部参数列表:

Focal length:焦距,焦距像素存储在2*1的向量fc。

Principal point:主要观点,主点坐标存储在2*1向量cc。

Skew coefficient:扭曲因子(倾斜系数),定义之间的角x和y像素存储在标量alpha_c轴。

Distrotion:畸变,图像的失真系数(径向和切向畸变)存储在5*1向量kc。

2、外在的参数:

Rotations:旋转

Translations:平移

 

  • 17
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
### 回答1: toolbox_calib-master是一个用于摄像机标定MATLAB工具箱,它包含了多个函数和脚本,可以用于摄像机内参和外参的标定,以及图像畸变校正等操作。该工具箱使用标定方法为张正友标定法,该方法有效地解决了摄像机成像时的畸变问题,能够提高摄像机的精度和稳定性,对于计算机视觉和机器人领域的应用具有重要意义。 通过toolbox_calib-master,用户可以通过输入一组已知的世界坐标和对应的图像坐标,标定出摄像机的内参和外参,包括相机的焦距、主点、畸变系数、旋转矩阵、平移向量等参数。同时,该工具箱还提供了一些辅助函数,可以用于验证标定结果的准确性,如重投影误差的计算和误差分析等。 除了标定操作,toolbox_calib-master还支持图像畸变校正和图像去畸变等操作,可以使摄像机成像更加真实,提高图像质量。此外,该工具箱使用也十分方便,用户只需要准备好标定所需的图像和参数设置文件,然后运行相应的脚本即可完成标定过程。 总之,toolbox_calib-master是一款实用性强,功能全面的MATLAB工具箱,它在计算机视觉和机器人领域的应用中具有重要作用。 ### 回答2: toolbox_calib-master是一个用于相机标定工具箱。相机标定是指确定相机的内部参数矩阵和外部参数矩阵,以便在图像处理中进行矫正和重建等操作。 toolbox_calib-master包含了很多的函数和工具来进行相机标定。其中最核心的函数是calib函数,用于执行标定过程calib函数需要使用标定板图像序列,通过检测标定板上的角点并计算标定板在世界坐标系下的坐标,从而得到相机的内参和外参。 除此之外,toolbox_calib-master还包括了许多辅助函数,如findcorner.m用于检测标定板上的角点,extrinsic.m用于计算外参矩阵,skew.m用于计算相机的非对称畸变等。这些函数的使用可以大大简化相机标定过程。 总之,toolbox_calib-master是一个非常实用的相机标定工具箱,可用于计算相机的内部和外部参数,为后续的图像处理提供准确的基础。 ### 回答3: toolbox_calib-master是一款开源的相机标定工具箱,可以帮助用户进行相机内外参数的标定。该工具箱的功能非常强大,可以准确地计算出相机的畸变参数、内参矩阵、外参参数和相机坐标系与世界坐标系的映射关系,从而实现对相机的几何校正,可以应用于机器视觉、机器人控制、3D重建等领域。 toolbox_calib-master采用了基于Matlab的GUI界面,便于用户进行参数的调整和可视化。用户只需要提供标定板的特征点图像序列和标定板的物理尺寸,再进行标定图像的选择和标记,即可得到相机的内外参数。该工具箱还支持不同标定板特征点的提取方法,并可以根据用户需求输出相应的标定结果。 同时,toolbox_calib-master还提供了丰富的功能扩展,如计算标定误差、处理非线性畸变等,可以满足用户在不同应用场景下的需求。该工具箱的源代码开放,支持用户进行二次开发和优化,具有广阔的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟学员nice

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值