MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]环境MATLABR2014a+windows764位1.单目摄像机标定(1)首先把解压的TOOLBOX_calib文件夹的路径设置到MATLAB里,在主页->环境->设置路径->选择工具箱路径,如图:然后保存,关闭(2)此时,将你采集到的图片放到工具箱以外的文件夹中,在MATLAB中打开,如图:注意上面的路径,必须选择图像所在的文件夹,不然下一步会出现错误“Noimage…

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

环境MATLAB R2014a+windows7 64位

1.单目摄像机标定

(1)首先把解压的TOOLBOX_calib文件夹的路径设置到MATLAB里,在主页->环境->设置路径->选择工具箱路径,如图:MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

然后保存,关闭

(2)此时,将你采集到的图片放到工具箱以外的文件夹中,在MATLAB中打开,如图:MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

注意上面的路径,必须选择图像所在的文件夹,不然下一步会出现错误“No image in this directory in either ras, bmp, tif, pgm, ppm or jpg format. Change directory and try again.”跟这有关。

(3)回到MATLAB界面,输入命令,calib_gui 

选择standard,出现如下窗口,如图所示:

 MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

(4)点击Image name,出现

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

此时提示你输入Basename,Basename就是你的所有图片的名字中相同的部分,例如我的图片Basename就是image2_

然后按照要求输入图片格式,例如我的图片是JPG格式就输入“j”

回车,图片就读入到了MATLAB里,出现所有图片的缩略图,如图

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

(5)点击Extract grid corners,提取每幅图的角点,点击完成后出现如下界面 MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

直接回车(没有参数)选择所有的图像,否则就需要输入图像索引如[2 5 8 10 12]来提取这些图像中的角点。然后通过直接输入“Enter”来选择默认的角点寻找窗口尺寸:wintx=winty=5。这就产生了一个11X11个像素有效的窗口尺寸,角点提取引擎有一个对网格中的方格个数进行计数的自动机制。这个工具尤其对于图像数量大的时候非常便利,因为用户不需要手工地输入X和Y方向方格的数量。所以也可以直接回车(没有参数),然后第一张标定图像就会显示出来,如图

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

(6)点击长方形棋盘格的四个边角点。选择的位置在下图中显示出来(注意:尽量精确地点击这四个角点,控制在实际角点的5个像素范围内,否则一些角点可能会被检测器丢失掉)。

点击的顺序规则:第一个点被用来作为棋盘格坐标系的原点。其他三个点可以以任何顺序点击。第一个点击的的点非常重要,尤其是对于多相机的情况(例如当计算几个相机在空间之间的相互关系的时候)。当处理多相机系统时对于不同的相机标定图像需要总是选择同一个棋盘格坐标系。

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

(7)经过上面的步骤之后,标定棋盘的边界就显示出来了:输入网格中每个方格在X和Y方向上的尺寸dX和dY(在这里,dX=dY=30mm=defaultvalues)(要根据自己的棋盘做调整),例如我的棋盘设置为28mm的正方形。程序会自动对各个方向的方格数进行计数,然后在显示出没有畸变的预估角点。如图

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

角点以大约0.1个像素的精度被提取出来。对第2、3、4…图像采用上述同样的步骤。

(8)在角点提取完之后,就可以单击标定工具箱面板上的“Calibration”来运行主要的相机标定程序。标定主要通过两个步骤来完成:初次初始化以及非线性优化。

初始化步骤中对标定参数进行闭环计算,这个过程不包括任何镜头畸变(程序名:init_calib_param.m

非线性优化过程中将对所有的标定参数最小化总体映射误差(从最小二乘的角度出发)(9个内参以及6X20=129个外参)。优化是对特定雅可比矩阵进行计算然后往梯度下降的方向进行的。下图为非线性优化的结果:

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

从上图中我们可以注意到:为了达到最小值,只用了15次梯度迭代。这就意味着只有15次对映射函数、雅可比计算

以及求逆的评估。快速收敛的一个原因就是初始化程序所要计算的参数的有一个好的初始预估值。

现在,忽略推荐的可以减少畸变的模型的系统。对一个模型的复杂性进行判断的映射误差仍然很大。这主要是因为

对于一些图像一些网格角点并没有被精确地提取。

 

(9)单击面板上的“Reproject on images”来将网格角点映射到原始图像中。这些映射是基于当前的内参和外参计算

出来的。输入一个空字符(直接按”Enter”)作为“Number(s) of image(s) to show([]=all images)”来

表示你想查看所有图像,下面的图像显示了最初的四张检测到的角点的图像(叉)以及映射的网格角点(圆)。

映射误差也以有颜色的叉叉显示在图中:

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

(10)在面板中单击“ShowExtrinsic”。外参(棋盘格相对于相机的相对位置)就以3D的形式显示出来了:

MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

(11)工具“Analyseerror”允许你去检查哪个点对应大的误差。单击“Analyse error”并且选择图像由上角的那个点。

退出误差分析工具,在图像上的任何位置右击。MATLAB 相机标定(单目)使用工具箱TOOLBOX_calib[通俗易懂]

单击选中之后,下面的信息就会出现在命令行窗口:这就意味着对应的点在第9张图像中,在标定板网格坐标的(3,4)的位置。

(12)单击“Save”保存标定结果(内参和外参)到matlab文件“Calib_Results.mat”

双目标定见MATLAB 相机标定(双目)使用工具箱TOOLBOX_calib – CSDN博客

https://blog.csdn.net/panpan_jiang1/article/details/80420735


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

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

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


相关推荐

  • pycharm2021.11.2激活码_在线激活「建议收藏」

    (pycharm2021.11.2激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9K2BT69C4S-eyJsaWNlbnNlSWQiOi…

    2022年3月28日
    56
  • 前端学习学习再学习

    译注:本文翻译自谷歌工程师PhilipWalton的一篇博客。看过之后非常有感触,很多观点都是自己长期非常坚持和认同的,所以翻译出来分享给更多的前端同学!最近我收到一封读者来信让我陷入了思考,信

    2021年12月22日
    52
  • 2. Pycharm的介绍与使用[通俗易懂]

    2. Pycharm的介绍与使用[通俗易懂]使用Python原生IDLEIDLE是Python软件包自带的一个集成开发环境,点击开始–>Python安装包–>IDLE。启动IDLE时,会显示>>>,可以在>>>后面输入代码。在PythonShell输入代码回车后会立即执行,并直接在下面显示执行的结果。如下图所示:在原生IDLE模式下编写的代码只停留于内存当中,当关闭原生IDL…

    2022年8月26日
    5
  • Macbook OBS 录制系统声音

    Macbook OBS 录制系统声音安装好OBS软件下载并安装soundflower软件,也可以在GitHub中下载打开midi音频设置构建多输出设备例如,我现在是带着外置耳机,并且录制系统声音,那么多输出设备就勾选这两个配置完成后,我们可以右键选择该设备用于声音输出最后在OBS软件中选择桌面音频即可,点击Soundflower…

    2022年5月27日
    53
  • eclipse 导入父子工程_eclipse 导入maven 父子项目

    eclipse 导入父子工程_eclipse 导入maven 父子项目你先要确认svn上是否是maven项目,否则要自己重新建一个maven项目然后直接引入目录了。如果确认是maven项目,那么有个两个方案。案一:先用任何client软件将svn下载。然后在eclipse选择import,然后当作existmavenproject导入。案二:在project中有checkoutmavenfromscm。scm就是指版本控制软件。不过不同版本控制的sc…

    2022年5月6日
    243
  • 传奇三架设教程_手游传奇服务端架设教程

    传奇三架设教程_手游传奇服务端架设教程传奇3私服架设技术教程准备工具:1:装有windows98/2000/xp/2003系统、内存至少256M的电脑一台2:传奇3服务器端一个3:SQL2000一个下面开始跟着我说的步骤架设传奇3服

    2022年9月27日
    0

发表回复

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

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