(一)手把手教双目相机标定(超详细,附代码)[通俗易懂]

(一)手把手教双目相机标定(超详细,附代码)[通俗易懂]使用软件:matlab2018标定过程分三步走:1.图像采集2.图像分割3.matlab工具箱标定

大家好,又见面了,我是你们的朋友全栈君。

内容提要:
双目相机标定目的:求出左、右相机的内、外参数矩阵以及畸变参数
使用软件:matlab 2018
标定过程分三步走:

  1. 图像采集
  2. 图像分割
  3. matlab工具箱标定

第一步 图像采集
本实例采用的双目相机如下图所示:
标定使用的双目相机
采集程序见双目相机拍摄demo程序(vs2017)
用vs2017打开采集程序,界面如下:
在这里插入图片描述
点击Start Preview按钮,双目相机打开。
在这里插入图片描述
点击Capture,即可抓拍。为了保证标定效果,笔者建议将标定棋盘放在不同位置,抓拍十张以上照片。
在这里插入图片描述
第二步 图像切割
双目相机直接采集到的图像中包含左右相机的分图像,标注时要求将直接采集到的图像进行切割。本人采用matlab程序编写的切割代码。

clear;
A=imread(‘16.jpg’); //读取原图
[m ,n,~]=size(A); //读取原图尺寸,原图为三通道
n1=n/2;

picture_1=zeros(m,n1,3);
picture_2=zeros(m,n1,3);
picture_1=A(:,1:n1,:);
picture_2=A(:,n1+1:n,:);

cd(‘C:\Users\hongyi\Desktop\3_27_2\left’); //将切割好的左右图像保存到指定文件夹
imwrite(picture_1,‘16_l.jpg’);
cd(‘C:\Users\hongyi\Desktop\3_27_2\right’);
imwrite(picture_2,‘16_r.jpg’);

切割效果
在这里插入图片描述
在这里插入图片描述
第三步 使用matlab标定
打开matlab,在命令行窗口输入stereoCameraCalibrator,运行。
在这里插入图片描述
点击界面左上角的Add Images,输入左相机图片和右相机图片所在的文件夹,以及标定板的网格尺寸。(本人使用的标定板尺寸为30mm)
在这里插入图片描述
点击确定,标定板上的点就会被自动识别。在这里插入图片描述
点击界面上方的Calibrate键,启动标定过程。在界面下方可以看到误差统计和可视化展示。
在这里插入图片描述
点击界面上方按钮Export Camera Parameters,即可导出标定结果。在matlab主界面可查看。
在这里插入图片描述
左右相机的内参数矩阵、畸变参数以及旋转矩、平移矩阵都可以得出。
下一节将会将利用标定结果,利用双目相机拍摄的原图上的任何一个平面点求取其空间坐标。有兴趣的小伙伴可以持续关注哦!!!!!!!!!!!!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140468.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 分类模型评估方法_政策评估的模型与方法

    分类模型评估方法_政策评估的模型与方法上图矩阵中1是正例,0是只负例对于二分类问题,可以将真实类别和分类器预测类别组合为:真正例(truepositiveTP):真实类别为正例,预测类别为正例;假正例(falsepositiveFP):真实类别为负例,预测类别为正例;假负例(falsenegativeFN):真实类别为正例,预测类别为负例;真负例(truenegativeTN):真实类别为负例,预测类别为负例;分类模…

    2022年9月27日
  • Pycharm 开发环境设置-汇总「建议收藏」

    Pycharm 开发环境设置-汇总「建议收藏」声明:大部分设置来此网络资源,部分来自个人总结。部分资源来自连接如下:1. https://www.cnblogs.com/zhongyuping/p/6417071.html Pycharm验证来此:2018版本,Unbunt16.04环境一 创建文件时自动添加头文件1.1python创建设置找到该路径并添加以下信息File->settings->Ed…

    2022年8月27日
  • Java中重载与重写的特点和区别[通俗易懂]

    Java中重载与重写的特点和区别[通俗易懂]一、重载(overload)重载:发生在Java的同一个类里面,通过定义相同的方法,定义不同的参数列表来区分开这些相同的方法,参数列表的不同可以是参数的类型、参数的个数和参数的顺序。当我们调用这些方法的时候通过传入参数的不同,在运行时Java虚拟机会自行调用不同的方法来进行处理。由于Java的修饰符都可以访问同一个类里面的方法,所以方法的重载与方法的修饰符无关;Java的返回值不能区别这些方法,因为返回值是在运行后才体现出来的,而两个参数列表相同仅仅是返回值相同的方法在Java编译时就会报错,虚拟机在运行

    2022年7月8日
  • ASP.NET中水晶报表的使用

    ASP.NET中水晶报表的使用作者:caoli                             在我们对VS.Net中的水晶报表(CrystalReports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍。  这篇文章教你如何在.NetWe…

    2022年5月20日
  • GPS数据包格式+数据解析[通俗易懂]

    GPS数据包格式+数据解析[通俗易懂]全球时区的划分:  每个时区跨15°经度。以0°经线为界向东向西各划出7.5°经度,作为0时区。即0时区的经度范围是7.5°W——7.5°E。从7.5°E与7.5°W分别向东、向西每15°经度划分为一个时区,直到东11区和西11区。东11区最东部的经度是172.5°E,由172.5°E——180°之间就是东12区。西11区最西部的经度是172.5°W,由172.5°W——180°之间就是西12区。东

    2022年6月29日
  • 卡尔曼滤波系列——(一)标准卡尔曼滤波[通俗易懂]

    卡尔曼滤波系列——(一)标准卡尔曼滤波[通俗易懂]卡尔曼滤波(KalmanFilter)是一种利用线性系统状态方程,利用对系统的观测数据,对系统状态进行最优估计的算法。由于观测数据受到系统中的噪声和干扰的影响,所以系统状态的估计过程也可看作是滤波过程。应用场景之一有利用传感器跟踪感兴趣目标的位置,传感器获取的目标距离、速度、方位角等观测值往往含有噪声。卡尔曼滤波利用目标的动态信息与观测结果相结合,抑制噪声的影响,从而获得一个关于目标位置更准确的估计,这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(

    2022年6月17日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号