使用Matlab标定工具箱进行双目矫正
在双目立体匹配前,要对左右图像进行畸变矫正和对极线矫正等处理,opencv中有自带的函数可以进行处理,但网络上的说法大多认为opencv的处理效果不如matlab的准确,(根据我的经验:opencv人工干预较少,标定过程如行云流水般一气呵成,缺点是对图像的质量要求高;matlab人工干预较多<如,角点的选取>,过程相对复杂,但是对图像的质量要求就要低的多,两者大家可根据实际情况自行选择)。
今天主要对matlab的标定工具箱进行标定处理的过程做简要介绍。其中,步骤中“备注”部分主要是对工具箱界面的各按钮的功能做简要介绍,只想了解标定流程的可忽略。
(ps:博文图片很多,csdn上传图片实在是很麻烦,有的图像截图保存后质量下降,敬请谅解)
一、工具箱的安装配置
工具箱下载:http://www.vision.caltech.edu/bouguetj/calib_doc/download/index.html
说明文档:http://www.vision.caltech.edu/bouguetj/calib_doc/
安装:将下载的工具箱文件toolbox_calib.zip解压缩,将目录toolbox_calib拷贝到Matlab的目录下,也可以放在其他目录。
运行Matlab并添加文件夹TOOLBOX_calib的位置到matlab路径path中,具体操作为:File->SetPath->Add Folder To Path,然后找到刚刚存放的文件夹TOOLBOX_calib,save一下就OK了。
采集图像:采集的图像统一命名后,拷贝到toolbox_calib目录中。命名规则为基本名和编号,基本名在前,后面直接跟着数字编号。编号最多为3位十进制数字。
二、单目标定
0、准备工作
将双目摄像机拍摄的左右图像的文件夹作为matlab的当前文件夹:我的图像名称类似L1,L2……,R1,R2……(注:图像的命名格式:字母+数字,即字母在前,数字在后,说多了就是泪)
1、 matlab中命令窗口输入calib_gui,回车后弹出如下窗口:
2、选择第一个选项,弹出下面的主窗口:
备注:
(1) “Image names”键:指定图像的基本名(Basename)和图像格式,并将相应的图像读入内存。
(2) “Read names”键:将指定基本名和格式的图像读入内存。
(3) “Extract grid corners”键:提取网格角点。
(4) “Calibration”键:内参数标定。
(5) “Show Extrinsic”键:以图形方式显示摄像机与标定靶标之间的关系。
(6) “Project on images”键:按照摄像机的内参数以及摄像机的外参数(即靶标坐标系相对于摄像机坐标系的变换关系),根据网格点的笛卡尔空间坐标,将网格角点反投影到图像空间。
(7) “Analyse error”键:图像空间的误差分析
(8) “Recomp. corners”键:重新提取网格角点。
(9) “Add/Suppress images”键:增加/删除图像。
(10) “Save”键:保存标定结果。将内参数标定结果以及摄像机与靶标之间的外参数保存为m文件Calib_results.m,存放于toolbox_calib目录中。
(11) “Load”键:读入标定结