前言:本文章主要讲解使用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,然后保存并关闭。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(二)双目标定

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

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

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

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

(三)至此双目标定结束,下面就是讲结果写成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:平移

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

  1. 使用Matlab工具箱(procamcalib)进行投影仪标定---超详细过程

    使用Matlab工具箱(procamcalib)进行投影仪标定-超详细过程 一 .procamcalib工具箱应用场景 同于相机标定的方法和步骤,投影仪的原理通常被看作是相机成像的逆过程,网上关于相机 ...

  2. opencv与两个摄像头实现双目标定与测距

    http://download.csdn.net/detail/hysteric314/9514831 实现效果:http://v.youku.com/v_show/id_XMTU2Mzk0NjU3N ...

  3. opencv读取MATLAB双目标定的结果进行双目校正

    概述: opencv内部也有双目标定的函数,但是结果有时候会飘,所以想先用MATLAB标定工具箱试试看.使用MATLAB先队两个相机进行单目标定,然后进行双目标定,将结果保存在xml文件中.xml文件 ...

  4. 相机标定——单目标定和双目标定

    相机标定--单目标定和双目标定 1.标定目的 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相 ...

  5. 双目测距--3 双目标定

    目录 -1 流程说明: 0 几个重要 函数 1.calibrateCamera()函数 2.stereoCalibrate() 3.findChessboardCorners() 棋盘格角点检测 4. ...

  6. Ubuntu18.04 realsenseD435i深度摄像头外参标定的问题

    Ubuntu18.04 realsenseD435i深度摄像头外参标定的问题 鱼香ROS介绍: 鱼香ROS是由机器人爱好者共同组成的社区,欢迎一起参与机器人技术交流. 进群加V:fishros2048 ...

  7. OpenCV3+VS2017+单目标定+双目标定+双目测距

    理论知识请参考<学习OpenCV中文版>(公式,函数描述方面可能有错误注意一下,还有不要看<学习OpenCV3中文版>,可以看<Learning OpenCV3>英 ...

  8. 双目摄像头标定完整过程 借助Matlab软件工具箱

    运用matlab2017 进行摄像头获取标定参数: 本人试过两种方法,好坏各有. ①运用matlab自带标定工具箱进行标定,非常省事,说下大概步骤,(嫌麻烦不上图了) 1.在命令行输入stereoCa ...

  9. MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib

    环境MATLAB R2014a+windows7 64位 1.单目摄像机标定 (1)首先把解压的TOOLBOX_calib文件夹的路径设置到MATLAB里,在主页->环境->设置路径-&g ...

  10. 基于Matlab工具箱进行单目摄像头标定

    实验环境:matlab2016 准备材料:单目摄像头.定标板.摄像头拍下定标板的图片 本博客带大家实际动手,再讲单目摄像头标定原理. 准备标定板 标定的开始阶段最需要用到的标定板,可以直接从openc ...

最新文章

  1. 算法------Pow(x, n)
  2. redis缓存java对象_Redis缓存系统-Java-Jedis操作Redis,基本操作以及 实现对象保存...
  3. 如何从io.Reader 中读数据
  4. 使用TensorFlow.js的AI聊天机器人一:检测文本中的情绪
  5. ndarray python 映射_191123 使用 Pybind11 和 OpenCV 创建 Python 库
  6. mysql索引如何分裂节点_从MySQL Bug#67718浅谈B+树索引的分裂优化(转)
  7. vbs 解析 json jsonp 方法
  8. 一图掌握项目立项流程操作实例及立项评审步骤
  9. ubuntu更改ip地址 网官 dns,使ubuntu的ip地址每次启动都是固定
  10. CardView学习和使用
  11. im服务器开源项目,Oschat IM 开源即时通讯项目介绍
  12. Worthington核糖核酸酶B历史和化学性质说明
  13. 构造常数函数解决抽象函数导数小题
  14. 牛客练习赛53 (E 老瞎眼 pk 小鲜肉) 线段树+离线
  15. MFC工具条与状态条设计
  16. 【Rust日报】2022-09-13 Stabilize GAT
  17. mysql ndb存储引擎_Cluster的NDB存储引擎
  18. 【技术美术图形部分】纹理基础1.0-纹理管线
  19. 零基础开始网页制作-前端开发
  20. 程序猿福音——sonarqube,代码质量检测一条龙服务,本文带你一探究竟

热门文章

  1. code405是什么意思_HTTP返回reponse code 405
  2. 记一次 “HTTP 405 Method Not Allowed”的解决方法
  3. 【AutoSec 汽车安全直播课】:整车网络安全威胁分析与风险评估(TARA)方法与实践
  4. mysql 查询多个号段_SQL查询连续号码段的巧妙解法
  5. 为语音社交平台加一个防护罩,即构上线实时语音安全方案
  6. 私网ip和公网ip_详解
  7. 用react-custom-scrollbars插件美化 Ant Design Table 滚动条
  8. js 微信小程序根据身份证号计算年龄
  9. 学会jQuery 不用买书
  10. 一文解决scrapy带案例爬取当当图书