相机标定是计算机视觉中最基础的模块,要问我为什么要搞这个东西。我只能说这是作!业!
不说了,说多了都是泪
用Matlab做相机标定,使用的是matlab提供的标定工具箱,需要下载,如果英文好可以看这篇文章,里面还提供了例子图片。
1. 启动标定的工具箱
打开matlab,在进入工具箱目录,运行calib.m,有一个standard还有Memory efficient。当图像非常多时,需要选择第二种。
我选择了Standard。
2. 选择图像载入
我是将图片都放到了工具箱目录里面,在接着点击Image names按钮,之后就出现下面这样的情况了
输入Image(<-因为这东西是文件的前缀),因为我们图片类型是.tif,因此再输入t
如果这里出现了OUT OF MEMORY,RAM太小了。你可以选择memory efficient mode试试。。。
标定后面的步骤就剩下grid corner extraction 以及 calibration
3. 提取角点
点击xtract grid corners进行脚点的提取。
接着你就要选择你要处理的图像,如果直接点击回车,他会选择所有的图像,如果你输入2 5 8 10 12,它会选出这几幅图像让你去处理。这里我的选择是直接回车,处理所有的图像。
再接着,它会让你选择窗口的大小,这里默认使用了默认窗口的大小,即再次回车。具体发生的情况如下图:
经过这些操作之后,我们要开始选择区域了
在这样选择好区域,matlab程序会询问你中间的角点是否与实际图像中的有变形,如果有进行调整。
这边输入dx,dy=30 ......我也不知道为什么,文档里面就是这样,应该是实际的长度吧。输入后,图像里面会出现红色的十字点。这个是角点。看一下是否与实际图像中的角点一致,如果不对,输出除了[](就是Enter),如果不一致,就输入其他的,我输入了1....为了方便。 之后输入kc值来进行修改(first order lens distortion coefficient kc)
在取完所有角点之后,calib_data.mat文件会自动生成,还有什么文件会自动产生。具体的我不说了
再接着我们要进行最主要的标定过程,该步骤主要分为两个部分:first initialization以及接下来要做的nonlinear optimization
处理了几张以后以后应该可以按clibration按钮了吧,这个主要是在处理first initialization的步骤
再接着按reproject on image 会出现以下几个图
在这些操作都做完以后,可以直接点击alibration进行标定
未完待续……