Matlab双目相机标定

1.左右相机拍摄标定板图片
2.matlab进行双目标定
(1)打开matlab,并在app中找到Stereo Camera Calibrator

(2)点击Add Images,添加图片路径


Size of checkerboard square为棋盘中每一个方格的长度,单位为毫米。

(3)设置Radial Distortion Compute
1.Radial Distortion 径向畸变

其中:
2 Coefficients选项的官方含义:
Use fourth degree polynomial to estimate the radial distortion of a lens.
使用四次多项式来估计透镜的径向畸变。
3 Coefficients选项的官方含义:
This setting is recommended only for wide field of view camera.
Use sixth degree polynomial to estimate the radial distortion of a lens.
此设置仅适用于大视场相机。
使用六次多项式来估计透镜的径向畸变。
如果选择2Coefficients的话,结果的径向畸变只有k1,k2,主要用于普通相机;如果选择3Coefficients的话,结果的径向畸变会有三项,主要用于鱼眼摄像机。

2. Compute

关于Skew
Assume that X-axis and Y-axis are not perpendicular. This means that the image pixels are not rectangular. Most modern cameras do not exhibit this issue.
假设X轴和Y轴不垂直。这意味着图像像素不是矩形的。大多数现代相机都没有这个问题。
所以,Skew选项一般不需要选择。
关于Tangential Distortion
Tangential distortion occurs when the lens’ principal axis is not perpendicular to the camera sensor.
当镜头的主轴与相机传感器不垂直时,会发生切向失真。
一般而言,Radial Distortion Compute选择3 Coefficients和Tangential Distortion,然后点击Calibrate进行校准。

(4)保存结果

1.标定好后将标定数据导入到工作空间,点击Export Parameters to Workspaces即可

2.导出标定数据

 rowName = cell(1,10);
rowName{1,1} = '平移矩阵';
rowName{1,2} = '旋转矩阵';
rowName{1,3} = '相机1内参矩阵';
rowName{1,4} = '相机1径向畸变';
rowName{1,5} = '相机1切向畸变';
rowName{1,6} = '相机2内参矩阵';
rowName{1,7} = '相机2径向畸变';
rowName{1,8} = '相机2切向畸变';
rowName{1,9} = '相机1畸变向量';
rowName{1,10} = '相机2畸变向量';
xlswrite('out.xlsx',rowName(1,1),1,'A1');
xlswrite('out.xlsx',rowName(1,2),1,'A2');
xlswrite('out.xlsx',rowName(1,3),1,'A5');
xlswrite('out.xlsx',rowName(1,4),1,'A8');
xlswrite('out.xlsx',rowName(1,5),1,'A9');
xlswrite('out.xlsx',rowName(1,6),1,'A10');
xlswrite('out.xlsx',rowName(1,7),1,'A13');
xlswrite('out.xlsx',rowName(1,8),1,'A14');
xlswrite('out.xlsx',rowName(1,9),1,'A15');
xlswrite('out.xlsx',rowName(1,10),1,'A16');
xlswrite('out.xlsx',stereoParams.TranslationOfCamera2,1,'B1');  % 平移矩阵
xlswrite('out.xlsx',stereoParams.RotationOfCamera2.',1,'B2');  % 旋转矩阵
xlswrite('out.xlsx',stereoParams.CameraParameters1.IntrinsicMatrix.',1,'B5');  % 相机1内参矩阵
xlswrite('out.xlsx',stereoParams.CameraParameters1.RadialDistortion,1,'B8');  % 相机1径向畸变(1,2,5)
xlswrite('out.xlsx',stereoParams.CameraParameters1.TangentialDistortion,1,'B9');  % 相机1切向畸变(3,4)
xlswrite('out.xlsx',stereoParams.CameraParameters2.IntrinsicMatrix.',1,'B10');  % 相机2内参矩阵
xlswrite('out.xlsx',stereoParams.CameraParameters2.RadialDistortion,1,'B13');  % 相机2径向畸变(1,2,5)
xlswrite('out.xlsx',stereoParams.CameraParameters2.TangentialDistortion,1,'B14');  % 相机2切向畸变(3,4)
xlswrite('out.xlsx',[stereoParams.CameraParameters1.RadialDistortion(1:2), stereoParams.CameraParameters1.TangentialDistortion,...
    stereoParams.CameraParameters1.RadialDistortion(3)],1,'B15');  % 相机1畸变向量
xlswrite('out.xlsx',[stereoParams.CameraParameters2.RadialDistortion(1:2), stereoParams.CameraParameters2.TangentialDistortion,...
    stereoParams.CameraParameters2.RadialDistortion(3)],1,'B16');  % 相机2畸变向量

这篇文章借鉴了好多文章,谢谢大家!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值