1-2  借助MATLAB标定工具箱标定相机

上篇文章讲述了相机成像和标定原理,这篇文章我们讲述如何利用MATLAB中的标定工具箱标定单目相机和双目相机的参数。

MATLAB标定工具箱下载和标定准备工作

MATLAB安装中没有相机标定工具箱,大家可以从下面给出的链接直接进入下载Toolbox_calib.zip,下载完之后解压到Toolbox_calib文件夹,接着打开matlab,在“预设路径”(英文版本为“set path”)中加入Toolbox_calib文件夹的绝对路径,然后就可以利用该工具箱标定相机了。

标定工具箱下载地址:http://www.vision.caltech.edu/bouguetj/calib_doc/download/index.html

相机标定需要借助平面标定板,标定板有棋盘格标定板和圆形标定板,分别如图1和图2所示,普遍使用的是棋盘格标定板。

图1

图2

要想对相机进行标定,我们首先要用相机从不同位置以不同角度采集总共10组以上图片(单目相机是10幅图,双目相机是10组左右图)。这里我们以双目相机为例介绍单个相机参数标定和两个相机之间的立体标定。图3所示是我们使用的一款嵌入式双目相机,基线为60mm。

图3

我们将左相机采集到的第一幅图片命名为left_0.bmp,右相机采集到的第一幅图片命名为right_0.bmp,第二幅图片命名为left_1.bmp和right_1.bmp。其中,left_和right_分别为左、右图的basename(基名),bmp为图片格式。

标定工具箱功能介绍

打开MATLAB,首先更改当前工作目录为要标定相机图片文件夹的地址,比如我想标定左相机,将当前工作目录改为左相机图片存储文件夹left1的地址。然后在命令窗口中输入“calib_gui”,弹出如图4所示的窗口。

图4

选择第一个“Standard”进入如图5所示的标定主界面。

图5

这里我们先介绍这些按键的功能,然后详细讲述如何相机的标定过程。

1.Image name和Read images都是用来从磁盘中读取图片到MATLAB工作空间中。二者功能一样,但是偶尔使用Read images读取图片会报错,建议使用Image name读取图片。

2.Extract grid corners用来从标定板图片中提取角点(即标定要用到的特征点)。

3.Calibration的功能是标定相机的内参数和外参数。其中相机内参数包括焦距、中心点在像素坐标系中的坐标和畸变系数。外参数为从相机坐标系到标定板坐标系的位姿变换关系,外参数为旋转向量omc和平移向量Tc。

4.Show Extrinsic可以将提取过角点的标定板和对应相机的相对位置关系展示出来。

5.Reprojec on images将标定过程中提取到的角点重投影到原图像中,并且统计重投影点与真实点之间的偏差大小(单位为pixel)和方向。

6.Analyse error分析重投影过程中的误差。

7.Add/Suppress images可以在标定后重新添加一些或者去除原来的某些图片重新进行标定。

8.Save可以将标定的结果Calib_Results.m存储到当前工作目录中。

9.Load可以将磁盘中的文件中数据导入到工作空间中。

10.Exit实现退出标定过程的功能。注意:标定到一半想退出标定过程是,一定得点击“Exit”,否则会出现一些回调函数报错的问题而导致不能正常使用。

11.Comp.Extrinsic可以重新提取图像交点并且在命令窗口输出该图像对应位置相机坐标系和标定板坐标系之间变换的齐次变换矩阵。

12.Undistort image可以将某幅或者所有图像对应的无畸变的图像存储到当前工作目录中。

13.Export calib data可以将标定过程中的中间数据导出存储到当前工作目录中,该文件可以可以用Notepad++打开查看。

14.Show calib results可以将标定的内参结果输出到命令行窗口中。

好了,每个按键的功能讲完后,接下来我们将如何标定单目相机以及实现双目相机之间的立体标定。

单目相机标定

每个相机做好之后,其内参数值都是确定的,是可以通过标定得到的。当然这儿提到的相机是固定焦距的相机;变焦距的相机改变到某个焦距后,也可以通过标定得到当前焦距下相机的内参数和外参数。

我们标定相机前,我们首先要从不同位置不同角度采集至少10幅标定板图片,这里我以双目相机拍摄到的左相机图片为例讲解。我们拍摄了10幅左相机图像,存储在left1文件夹中。

接着我们打开matlab,将标定工具箱的路径加入到“set path”中,然后将工作目更改为left1文件夹的路径,如图6所示,图6正上方红框为当前工作目录,改为left1文件件路径,左边红框中为该文件夹中的左相机采集到的图像。

图6

上述是一些准备工作,接下来我们介绍标定的具体流程。

1.读入图片:在命令行窗口中输入calib_gui,然后按回车,在弹出如图4所示窗口中点击Standard进入图5所示的标定主窗口,然后点击Image names,在图7所示命令窗口中先输出第一句,我们输入标定图片的基名left_,然后按回车键;在弹出的第二句命令后我们输入图片格式bmp,然后按回车键 。当看到图7中Figure 2中展示的是读入的图片的时候,读入图片完成。

图7

2.角点提取:在任务栏中打开标定主窗口,点击Extract corners,在8所示标1的地方按回车键(回车键都代表采用括号中的默认值,这儿就是“所有图片”),在标2的地方输入你要选择的图像x方向的窗口数目8然后按回车键(直接按回车键表示输入默认值6),接着在标3的地方输入你要选择的图像y方向的窗口数目8然后按回车键,在标4的地方直接按回车键,然后依次地提取每一幅图像中的角点。第一幅图中角点提取分为选择区域和输入参数,其余图像都只需要选择区域(参数默认使用第一幅图像提取交点时录入的参数)即可。

图8

1)提取区域:在第一幅图像中选择8x8格子区域的四个顶点,左上角点为第一个点,然后按顺时针方向选择剩下三个顶点,如图9所示。

图9

2)输入参数:在图10中标1的地方输入一个棋盘格子在x方向(图像列方向)尺寸然后按下回车,在标2的地方输入一个棋盘格子在x方向(图像行方向)尺寸然后按下回车,在标3的地方直接按下回车完成第一幅图像的角点提取,提取完后的角点图如图11所示。

图10

图11

依次提取完所有图像的参与标定的角点(不同图像间都选择同样的角点),所有图像的角点都提取完后,命令行窗口会提示“done”。

3.参数标定:在任务栏中单开隐藏的标定主窗口,点击Calibration,进行相机标定,命令行中显示如图12所示。

图12

我们看到内参数有两个,初始化后的内参和优化后的参数,优化后的参数矫正畸变之后得到的,是我们要用的结果,外参数在命令行看不到。

4.存储标定结果:经过前三步,我们已经完成了相机内、外参数的标定,我们需要将结果存储出来,点击标定主界面中的Save按键将标定结果Calib_Results.m和Calib_Results.mat。其中,从Calib_Results.m中可以直接查看内外参数,Calib_Results.mat用于进行双目相机之间的立体标定。

5.点击Show Extrinsic显示相机和标定板坐标系之间的相对关系,如图13所示。图13右下角标号为1的按键可以在该图中移除相机或者加入相机,标号为2的按键可以切换成相机不动或者标定板不动的模式。

图13

6.点击Reproject on images将选择的角点重投影到某一幅图像中,如图14所示。图14左图显示了重投影点与原先提取角点之间偏差的方向,右图统计了所有点对应的重投影偏差。

图14

7.点击Undistort images将无畸变的理想图像存储到当前工作目录中,如图15左下角红色框所示。

图15

8.Export calib data可以将标定过程中的数据导出到当前工作目录下。

9.Show calib results可以将标定内参结果打印输出到命令行窗口中。

前四个步骤就已经完成了相机内外参数的标定,5-9只是一些附加的功能,平时可能用不到的。

双目相机的立体标定

在单目标定中我们介绍了单目相机标定的步骤,并且得到了双目相机中左相机的内外参数,在进行双目立体标定之前,我们用单目标定的方法标定右相机内外参数,将左相机标定得到的Calib_Results.mat重命名为Calib_Results_left.mat,将右相机标定得到的Calib_Results.mat重命名为Calib_Results_right.mat。下面讲述如何对双目相机之间的关系进行标定。

1.打开matlab,将Calib_Results_left.mat文件和Calib_Results_right.mat拷贝到当前工作目录中。

2.在命令行中输入stereo_gui,弹出如图16所示的窗口,点击“Load left and right calibretion files”,在图17所示命令行窗口标号1的地方输入左相机标定完的mat文件名,然后按回车键(如果按步骤1之前将文件名称按我说的改过,则直接按回车键);在标号2的地方输入右相机标定完的mat文件名,然后按回车键,会看到控制窗口中显示左右相机的内参数。

图16

图17

3. 点击Run stereo calibration进行双目相机立体标定,结果如图18所示。

图18

4.点击Show Extrinsics of stereo rig可以打印双目相机和标定板之间坐标系之间的相对位置关系,如图18所示。

图19

如何实现双目相机的立体标定我们就介绍这么多,如果有感兴趣的可以去探索其他按键所对应的功能。

借助MATLAB标定工具箱标定相机相关推荐

  1. matlab相机标定工具箱进行相机标定,相机标定的理解及采用opencv和matlab工具箱的标定方法...

    一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标系和像平面 ...

  2. matlab标定工具箱标定投影仪常见问题

    在使用matlab标定工具箱标定投影仪和相机时,遇到了很多问题.折腾了很久,希望以后可以减少大家遇到的问题. 1.关于标定流程,网上有很多博客,b站也有相关教学视频.这里就不一一赘述了. 问题1:关于 ...

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

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

  4. matlab图像校正工具箱_相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)...

    一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标系和像平面 ...

  5. matlab相机标定工具箱下载,matlab相机标定工具箱

    matlab相机标定工具箱是一款适合matlab软件使用的相机标定工具箱,通过该工具箱,可以帮助用户解决使用过程中遇到的各种问题,非常实用的一款工具箱,需要的朋友赶紧来本站下载吧! matlab相机标 ...

  6. Matlab相机标定工具箱和标定结果评价

    用来做相机标定的工具很多,不过MATLAB中的相机标定工具箱使用起来相当舒服,概括起来:简单准确高效,下面我说一下单个相机和双目相机标定的流程和标定结果怎么判断好坏: 1. 单个相机标定 第一步:打开 ...

  7. matlab相机标定畸变参数,相机标定的原理与意义及OpenCVMatlab实现差异小结.doc

    2011-01-30 相机标定的原理与意义及OpenCV.Matlab实现差异小结 分类:?OpenCV点滴2011-01-30 20:35?2292人阅读?评论(3)?收藏?举报 ??? 本文是一篇 ...

  8. matlab相机标定_综述 | 相机标定方法

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相 ...

  9. MATLAB标定工具箱的使用_camera calibration for matlab

    标定工具箱下载地址:http://www.vision.caltech.edu/bouguetj/calib_doc/download/index.html 下载完成后解压到mtlab\toolbox ...

最新文章

  1. Scrapy框架的概念、作用和工作流程
  2. 美团开源Logan Web:前端日志在Web端的实现
  3. 如何使用Docker暴露多个端口?
  4. 我在亦庄见了说中文的爱因斯坦,会比心的熊猫,还有一场意念打字大赛
  5. 数据结构与算法 / UUID 和 GUID 区别和联系
  6. mysql InnoDB 聚集索引,二级索引
  7. 阿里云ECS——[您的云服务器(xxx.xxx.xxx.xxx)由于被检测到对外攻击,已阻断该服务器对其它服务器端口(TCP:6379)的访问]解决方案
  8. Android控件随手指的移动而移动
  9. TAR命令参数详解[转]
  10. Mac入门--安装PHP扩展redis,swoole
  11. mysql 修改编码不成功解决办法
  12. 调整心态,正确应对所学技术的失宠?(至F#,SL的学习者们)
  13. java url拦截器框架_使用Spring Interceptor实现URL访问校验
  14. 滑动到底部或顶部响应的ScrollView实现
  15. 商品分类无限层级递归
  16. ffmpeg将常见视频格式转换为mp4
  17. 在线商城和商城后台管理系统
  18. SQL中的随机函数-笔记
  19. TIdTCPClient的几种方法
  20. Hive存储格式之RCFile详解,RCFile的过去现在和未来

热门文章

  1. 怎样取消开机硬盘自检?
  2. 图像处理之计算任意点与轮廓点集中距离最近的点坐标
  3. erp软件的主要功能
  4. 库房出入货物程序设计
  5. android mapview 自定义地图标注,关于Android集成高德地图的那些事儿...地图标注Marker 、Poi 搜索...
  6. iOS软件开发实现类似微信上传图片选择
  7. i2c-test使用说明
  8. linux麒麟v10专有机关闭防火墙或开放端口的解决办法
  9. PYTHON 类的三大特性
  10. 使用RXTX实现简单串口通信调试工具