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

环境MATLAB R2014a+windows7 64位


1.单目摄像机标定

(1)首先把解压的TOOLBOX_calib文件夹的路径设置到MATLAB里,在主页->环境->设置路径->选择工具箱路径,如图:

然后保存,关闭

(2)此时,将你采集到的图片放到工具箱以外的文件夹中,在MATLAB中打开,如图:

注意上面的路径,必须选择图像所在的文件夹,不然下一步会出现错误“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,出现如下窗口,如图所示:

 


(4)点击Image name,出现


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

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

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


(5)点击Extract grid corners,提取每幅图的角点,点击完成后出现如下界面 

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


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

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


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


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

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

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

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



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

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

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

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

 

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

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

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

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





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


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

退出误差分析工具,在图像上的任何位置右击。

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

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


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

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




  • 47
    点赞
  • 361
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
### 回答1: toolbox_calib-master是一个用于摄像机标定MATLAB工具箱,它包含了多个函数和脚本,可以用于摄像机内参和外参的标定,以及图像畸变校正等操作。该工具箱使用标定方法为张正友标定法,该方法有效地解决了摄像机成像时的畸变问题,能够提高摄像机的精度和稳定性,对于计算机视觉和机器人领域的应用具有重要意义。 通过toolbox_calib-master,用户可以通过输入一组已知的世界坐标和对应的图像坐标,标定出摄像机的内参和外参,包括相机的焦距、主点、畸变系数、旋转矩阵、平移向量等参数。同时,该工具箱还提供了一些辅助函数,可以用于验证标定结果的准确性,如重投影误差的计算和误差分析等。 除了标定操作,toolbox_calib-master还支持图像畸变校正和图像去畸变等操作,可以使摄像机成像更加真实,提高图像质量。此外,该工具箱使用也十分方便,用户只需要准备好标定所需的图像和参数设置文件,然后运行相应的脚本即可完成标定过程。 总之,toolbox_calib-master是一款实用性强,功能全面的MATLAB工具箱,它在计算机视觉和机器人领域的应用中具有重要作用。 ### 回答2: toolbox_calib-master是一个用于相机标定工具箱相机标定是指确定相机的内部参数矩阵和外部参数矩阵,以便在图像处理中进行矫正和重建等操作。 toolbox_calib-master包含了很多的函数和工具来进行相机标定。其中最核心的函数是calib函数,用于执行标定过程。calib函数需要使用标定板图像序列,通过检测标定板上的角点并计算标定板在世界坐标系下的坐标,从而得到相机的内参和外参。 除此之外,toolbox_calib-master还包括了许多辅助函数,如findcorner.m用于检测标定板上的角点,extrinsic.m用于计算外参矩阵,skew.m用于计算相机的非对称畸变等。这些函数的使用可以大大简化相机标定的过程。 总之,toolbox_calib-master是一个非常实用的相机标定工具箱,可用于计算相机的内部和外部参数,为后续的图像处理提供准确的基础。 ### 回答3: toolbox_calib-master是一款开源的相机标定工具箱,可以帮助用户进行相机内外参数的标定。该工具箱的功能非常强大,可以准确地计算出相机的畸变参数、内参矩阵、外参参数和相机坐标系与世界坐标系的映射关系,从而实现对相机的几何校正,可以应用于机器视觉、机器人控制、3D重建等领域。 toolbox_calib-master采用了基于Matlab的GUI界面,便于用户进行参数的调整和可视化。用户只需要提供标定板的特征点图像序列和标定板的物理尺寸,再进行标定图像的选择和标记,即可得到相机的内外参数。该工具箱还支持不同标定板特征点的提取方法,并可以根据用户需求输出相应的标定结果。 同时,toolbox_calib-master还提供了丰富的功能扩展,如计算标定误差、处理非线性畸变等,可以满足用户在不同应用场景下的需求。该工具箱的源代码开放,支持用户进行二次开发和优化,具有广阔的应用前景。
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值