双目视觉 标定 (基于MATLAB)

准备双目摄像头:

准备标定板

标定的开始阶段最需要用到的标定板,可以直接从opencv官网上能下载到: 
http://docs.opencv.org/2.4/_downloads/pattern.png

具体如下:

然后,建议固定到盒子上,方便等下拍照。

采集图片

建议左右摄像头,同时拍照,分别保存起来,可以参考  opencv 双目摄像头拍照

保存大约20到30张图片,MATLAB2016的这个工具十分挑剔,如果角度不好的话,将使用不了,因此在采集图像时,最好多的采集一些,拍的时候要拍到全部;注意事项:是测量好屏幕上每个方格的大小,这个标定的时候会用到,比如20mm。

一、 标定步骤

1.  调出标定工具箱

在命令行输入stereoCameraCalibrator,出现如下界面:

2.      勾选相应的选项

然后将上面的“Skew”、“Tangential Distortion”以及“2 Coefficients”等选项选上,将“3 Coefficients”选项去掉,如下:

3.      载入图像

然后点击 Add images(添加图像),出现如下界面:

Camera 1 代表左摄像头,Camera 2 代表右摄像头,分别选择存放着左右图像的文件夹,需要特别注意的是棋盘格的边长应该根据打印的实际大小填写 (例如20mm),单位可以选择

然后点击OK,程序会自动检测采集的图像到底有多少可以使用,可以说MATLAB2016的这个工具十分挑剔,如果角度不好的话,将使用不了,因此在采集图像时,最好多的采集一些。(此处只是为了说明标定步骤,所以使用的图像较少)。

                                    

4.      标定

点击技术分享按钮,开始标定:

 

5.      校准

从下图可以看到,平均的标定误差以及 标定过程中误差较大的的图像对。

点击选择不想接受的误差直方图,可以直接在左边的图像对中找到对应的图像,右键选择“Remove and Recalibrate”:

       可以重复上述步骤,直到认为误差满足标定需求为止。

6.      导出参数

点击技术分享选择Export camera parameters, 并点击“OK”。

技术分享

二、      参数读取

标定结束后,会得到如下标定参数:

CameraParameters1与CameraParameters2为左右摄像头的内部参数,RotationOfCamera2与TranslationOfCamera2为两个摄像头的旋转、平移参数。

1.    两个摄像头的平移和旋转参数

平移参数可直接使用;但旋转参数需进行转置才能使用。

2.   摄像机内参矩阵

双击框框这里:

CameraParameters1与CameraParameters2中包含如下文件: 

IntrinsicMatrix存放的是摄像头的内参,只与摄像机的内部结构有关,需要先转置再使用。

例如:左相机的参数,点击CameraParameters1

IntrinsicMatrix 存放的是摄像头的内参

RadialDistortion TangentialDistortion 中存放的是畸变参数

先看一下 IntrinsicMatrix 参数,双击一下 IntrinsicMatrix 

这个和OpenCV中是转置的关系,注意不要搞错。 

对应 

即:

 420.758142829981      -0.457820850080972     344.440839504749
     0                               423.157176819330          242.870587685168    
     0                                    0                                              1  

3.      畸变参数

RadialDistortionTangentialDistortion 中存放的是畸变参数,

RadialDistortion 为 径向畸变,摄像头由于光学透镜的特性使得成像存在着径向畸变,可由K1,K2,K3确定。

TangentialDistortion 切向畸变,由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数P1,P2确定。

不过在使用时,需要注意参数的排放顺序,即K1K2P1P2K3。切记不可弄错,否则后续的立体匹配会出现很大的偏差。

例如, 左相机为例:

                                    

RadialDistortion :0.016004928431323 , 0.041062484186359  对应 K1,K2  ; K3默认为0

 TangentialDistortion :0.005480700176874 , 0.003979285309815   对应  P1P2

所以在opencv中使用时,K1K2P1P2K3顺序 :

0.016004928431323 , 0.041062484186359 , 0.005480700176874 , 0.003979285309815  ,0

希望对你有帮助。

  • 49
    点赞
  • 281
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 33
    评论
Matlab双目相机标定是一种自动标定方式,用于对双目相机进行标定标定的目的是确定相机的内参和外参参数,以便后续的视觉测量和三维重建等任务。 标定过程可以使用Matlab工具箱提供的标定工具进行。首先,需要拍摄一组已知的标定板图像,这些图像需要包含不同的角度和位置。然后,使用Matlab工具箱中的标定工具,对这些图像进行处理。 具体的标定细节可以参考相关的博客或文档。一篇推荐的博客是"matlab双目标定(详细过程)",其中详细介绍了基于Matlab工具箱的自动标定方式和相关细节。 在进行标定之前,需要确保使用的Matlab版本是可用的,建议使用Matlab2020a版本,因为Matlab2020b版本在测试中无法正常使用标定工具箱。 对于一些出厂时已经完成标定的双目相机,例如Intel Realsense系列,用户可以直接使用,无需进行额外的标定。但对于一些出厂时未完成标定的相机,需要用户自己来进行标定标定完成后,可以将标定结果导出,并将相机参数应用于双目相机的配置文件中。 总结起来,Matlab双目相机标定是一种自动标定方式,通过拍摄已知的标定板图像并使用Matlab工具箱进行处理,确定相机的内参和外参参数。标定的细节可以参考相关的博客或文档,并将标定结果应用于双目相机的配置文件中。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一颗小树x

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

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

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

打赏作者

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

抵扣说明:

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

余额充值