您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 双目视觉的图像立体匹配系统 说明文档
双目视觉的图像立体匹配系统文档1引言计算机视觉技术的发展将光与影的艺术和计算机的逻辑性紧密结合起来,而双目立体视觉技术更将这种结合从平面二次元上升到立体的角度,为我们的生产生活提供了新的技术和工具,例如已经被普遍运用的3D电影技术,研发中的虚拟现实、谷歌视觉眼镜、汽车自动驾驶技术,即将上市的淘宝虚拟实景购物等,不断改变着我们的生活,另外双目立体视觉在军事、医学、工业等领域都有其重要的作用,是机器感知物体几何层级的基础,因此对双目视觉的理论研究成为推动立体视觉乃至计算机视觉技术在各个领域创造更高价值的重要因素。在双目视觉的研究和运用中,最重要的一个阶段无疑为将平面图像转化为可计算机可识别的立体模型,这里将用到立体匹配技术,目前双目视觉研究领域用到的立体匹配算法及其衍生算法有很多种,算法的效率和匹配精度将直接影响到算法运用的响应时间和准确度[1],当今各种视觉智能设备的发展需要将立体匹配过程直接嵌入到单片机中,这种场景下,算法的效率和匹配精度将直接决定不同运算性能的嵌入式设备的选择和产品推广后的用户体验度,也将直接决定设备成本,因此研究出更加速度快、精度高的立体匹配算法在各领域都具有划时代的重要意义。2系统方案设计2.1双目视觉的图像立体匹配系统说起立体视觉系统,要从人的双眼说起,人眼是一个典型的双目视觉系统,每只眼睛是一个摄像机,两只平行的眼睛是两台平行的摄像机,因为两只眼睛的位置不同,看到的图像是有差异的,这个差异就是立体视觉的基础,视觉信号传入大脑,大脑利用其强大的匹配能力,就可以基本确定图像中的物体的立体信息,或者叫做图像的深度信息。随着人们知识和生产生活的发展,需要通过仿真立体视觉的原理,让计算机获取到图像从2D向3D发展,即获取图像的深度信息,以实现一些和空间视觉有关的需求,这就出现了机器立体视觉技术。图2.1立体视觉原理示意图如图2.1是一张立体视觉原理示意图,O1和O2为两台摄像机,物体上的点p12分别对应左右图像上点p1和p2,通过算法找到图像左右图像上对应的点p1、p2,这个过程则是立体匹配。求解p1、p2、p12构成的三角形,我们就能得到点p12的坐标,也就能得到p12的深度[6],如图2.2所示。图2.2标准双目视觉系统投影成像示意图其中,点lO和点rO分别是左右两个摄像头的光学中心位置,即两个摄像头成像坐标系的光学原点,f为左右两个摄像头的焦距,在这里,点A(X,Y,Z)以lO为坐标中心,左摄像头成像坐标系为坐标系,由相似三角形的性质,有:YvZfXxXZfZbbuulllr,(2-1)则rlrllrlluubfZuubvYuubuX,,(2-2)因此找到点A在左右图像上对应的la和ra则是重中之重,一个好的立体匹配算法对双目视觉系统起到了决定性作用,我们将在本文接下来的章节对最有代表性的算法做具体介绍。双目立体视觉之间模拟了人眼视觉构造,因此双目视觉在各个领域都具有广泛的运用,比如机器人导航领域,双目视觉可以被运用在汽车自动驾驶,机器人自动导航;在虚拟现实领域,通过对双目视觉的研究,人们可以虚拟出立体视觉,极大丰富了人类生活;在航空航天领域,双目视觉已经运用在飞行器自动导航和飞行器避障;在工业上,双目视觉被运用在机械自动化制造,工业监测等方面。一个完整的双目立体视觉系统通常包括图像获取、摄像机标定、图像矫正、立体匹配和深度恢复五个方面:(1)图像获取通过模拟双目的方式,利用平行的两台摄像机对左右眼图像进行获取。(2)立体标定通过图像特征点获取,建立摄像机的几何成像模型(3)图像矫正把实际中非共面行对准的两幅图像,校正成共面行对准,因为当两个图像平面是完全共面行对准时,计算立体视差是最简单的[7](4)立体匹配通过算法对图像进行立体匹配,建立图像的立体模型。深度恢复通过匹配结果,恢复图像的立体感。2.2双目视觉的图像立体匹配系统框图在进行图像的立体匹配之前,需要得到可匹配的图像,既使得左右双眼图片在平面上完全行对准,这时计算立体视觉差是最简单的,而这种行对准图像是可以通过图像校正完成的,但由于每对摄像机的参数(位置、畸变等)不同,在校正时需要拿到摄像头的标正值,因此在校正前需要对摄像头进行标定。总的流程图如图3.1所示:左摄像头右摄像头图像标定标定参数MATLAB图像矫正图像校正立体匹配校正后图像Opencv图3.1系统设计框图通过采集左右摄像头的图像和标定图像进行反复对比标定,得到图像的标定参数,进而进行图像校正,校正后的图像即可通过立体匹配算法进行深度匹配。3设备选型及硬件系统详细设计3.1设备选型本系统选用不同型号的两个摄像头作为双目视觉采集摄像机。3.2硬件系统设计系统所用硬件系统配置如下:PC:四核i5处理器、4Gb内存、显示卡2GRAM4软件设计及测试4.1开发环境编译器:VS2015、MATLAB2015B视觉库:OpenCV3.04.2概要设计4.2.1流程图4.2.2主要函数及实现功能4.3详细设计4.3.1图像采集本论文采用MATLAB对双目图像进行采集,摄像机用到是视觉平行的两台摄像头,如图4.1所示:图4.1图像采集用的双目摄像头说明:将摄像头使用USB连接线与电脑相连接,使用matlab在同一时间对图像进行采集,为了摄像头标定参数无变化,整个实验过程中需要保持摄像头位置不变,否则实验会不准确。4.3.2立体标定在实际拍摄中,有的摄像头会产生畸变,且采集到的图像极线相交,为了降低后续图像匹配的难度,我们需要得到两个摄像头的焦距、主点坐标、倾斜系数、畸变系数以及它们之间的旋转矢量,现多采用张定友棋盘格标定法对摄像头进行标定,他利用了摄像头拍摄的图像与实物间存在线性关系,表达式如下:101321YXtrrrKvus(4.2)其中,K代表摄像机的内参数矩阵,[uv1]表示实物投影到图像平面上的齐次坐标,[r1r2r3]和t是摄像机的外参数,分别代表以摄像机为中心的坐标系相对世界坐标系的旋转矩阵和平移向量。采用棋盘格能够得到多个角点的位置,解方程组得到摄像机的内外参数[15]。Opencv3.0和MATLAB的标定都采用了张定友定标法,因为MATLAB标定工具箱较OpenCV3.0标定结果更为准确,因此,本文采用MATLAB对摄像机进行进行标定,本文用14*14,以20mm为边长的黑白棋盘格进行标定,如图4.3所示:图4.314*14,20mm为边长的棋盘格标定图像标定具体步骤如下:(1)使用左右摄像头采集同一时间下同一标定板图像,采集过程中,应让标定图像处于摄像头视野的中间位置(2)分别读取摄像头图像对两个摄像头进行单独标定,本文采集了15张标定图完成标定,每个摄像头的标定结果单独储存。(3)将左右摄像头mat文件读入MATLAB的标定工具箱,进行立体标定。标定图像如下图4.4和4.5图4.4左摄像头标定图像集图4.5右摄像头标定图像集单摄像头标定结果表4.1左摄像头标定结果参数结果焦距主点倾斜系数畸变像素误差[937.38917.06]±[10.688.93][409.05279.03]±[11.6314.39][0.00]±[0.00][-0.186431.695050.011210.022100.00000]±[0.065980.595570.005550.004470.00000][0.155280.19454]表4.2右摄像头标定结果参数结果焦距主点倾斜系数畸变像素误差[927.22907.05]±[11.028.93][337.29280.35]±[13.0615.06][0.00]±[0.00][-0.01803-0.433910.009650.014150.00000]±[0.059570.367020.005970.004840.00000][0.426020.53865]如图4.6和4.7分布表示标定时棋盘标定板和两个摄像机的位置关系:图4.6棋盘标定板与左摄像机位置关系图4.7棋盘标定板与右摄像机位置关系立体标定结果读取左右摄像机的标定参数,进行立体标定后,其结果如表4.3所示:表4.3立体摄像头标定结果摄像头参数结果左摄像头焦距主点倾斜系数畸变[919.29901.54]±[6.886.35][402.30258.05]±[11.2410.12][0.00]±[0.00][-0.01803-0.433910.009650.014150.00000]±[0.059570.367020.005970.004840.00000]右摄像头焦距主点倾斜系数畸变[919.29901.54]±[6.886.35][402.30258.05]±[11.2410.12][0.00]±[0.00][-0.231972.36790-0.002650.017690.00000]±[0.066210.793310.003990.003760.00000]双目摄像头旋转矢量转化矢量[0.048870.018640.01890]±[0.014960.016100.00116][101.424.24-11.01]±[0.650.775.33]双摄像机与棋盘标定板的位置关系如图4.8所示:图4.8双摄像机与棋盘标定板的位置关系4.3.3校正为了在立体匹配时,左右摄像机图像的平面是行对准的,需要对图像进行校正,而图像校正,使用OpenCV3.0图像库里的bouguet算法比较适合,采用bouguet算法比利用摄像机标定参数,对图像进行校正[16],其过程如图4.9所示:图4.9图像校正过程实现过程如下:分别读取立体标正后的标定参数,之后使用OpenCV3.0自带的库进行消除畸变和图像校正矫正的结果分别对比4.10和4.11可知,如图4.10和4.11分别为左摄像机和右摄像机校正前后的图像对比:图4.10左右摄像机校正前图4.11左右摄像机校正后4.3.4立体匹配经过校正后的图像左右平面为行对准的,之后即可使用不同的立体匹配算法对左右图像进行立体匹配,为了之后做算法的效率和匹配精度的性能分析,本文在算法运行的同时,通过打印时间戳的方法获取其运行时长。并通过操作系统监控其对内存、cpu的占用情况。基于图像分割的置信传播立体匹配算法匹配校正过的图像对求初始视差图一致性约束视差校验图像模块拟合置信传播优化视差图输出视差图Meanshift分割图像窗口匹配代价计算WTA算法匹配图4.12算法流程图㈠局部匹配求初始视差图由于优化方式不同,立体匹配通常可以分为局部匹配和全局匹配算法[17]。本文首先采用局部匹配算法求得初始视差图。要判断两个像素点的相似度,仅凭单个像素显然是不够的。当两个像素块反映同一个场景时,这两个像素块的像素值就会比较相似。最常见的图像块是边长为奇数的正方形,关键点位置就是正方形的中心,可通过比较两个块内像素的匹配代价函数,来衡量两个正方形图像块的相似度。经典的局部匹配代价函数有绝对误差和算法SAD、误差平方和算法SSD和归一化积相关算法NCC。22,,,,)(),(11)(),(11))(,()(),(11),(TEtsTtNSMSEtsStNsMTEtsTSEtsStNsMjiRjijijiji(3.2)其中,)(,jiSE、)(TE分别表示(i,j)处子图、模板的平均灰度值。算法SAD和SSD实现较简单,运行时间短,但容易受到光线等影响,影响匹配精度,因此本文采用NCC算法求初始视差图。得到初始视差值后,为剔除匹配不正确的点,本文采用一致性校验法校验视差图,即先以左摄像头采集图片作为目标图片,右摄像头采集图片作为待匹配图,在右图求得与左图像素点匹配的点后,再以右摄像头图片作为目标图片,在左图求得与右图像素点匹配的点,若两次匹配后找到的点一致,则视为正确的匹配点,若不一致,则一定至少有一次匹配是错误的,则剔除该点得到的视差值。(二)利用meanshift分割图片的分割结果拟合各像素块经过meanshift分割图片后视各图片模块在同一平面,根据各区域内校
本文标题:双目视觉的图像立体匹配系统 说明文档
链接地址:https://www.777doc.com/doc-2565039 .html