融合绝对误差和与Census变换的双目立体图像匹配算法

2020-11-24 07:45孙延坤李彩林王佳文苏本娅崔志婷
科学技术与工程 2020年29期
关键词:立体匹配视差代价

孙延坤, 李彩林, 王佳文, 苏本娅, 崔志婷

(山东理工大学建筑工程学院, 淄博 255000)

计算机技术经过数十年的不断发展,双目立体视觉作为一种非接触性的测量技术,被广泛运用于航天航空、三维重建、机器人导航、安防监控等领域[1-2]。双目立体视觉关键技术之一即为立体匹配,由于影像中通常存在光照和纹理结构变化的问题,利用传统的立体匹配算法极易出现大量的误匹配等问题,制约着后续应用的范围及精度。因此,对弱纹理区域和视差不连续区域匹配精度的研究受到广大学者的青睐。双目立体视觉获取空间物体三维信息的流程主要包括图像获取、摄像机标定、图像矫正、立体校正、立体匹配、生成深度图像[3],如图1所示。

图1 双目立体视觉流程Fig.1 Binocular stereo vision process

Zahih等[4]为了提高算法精度,提出基于非参数变换的方法,同时克服了光照不同与几何变化对灰度值的影响。Birchfield等[5]采用灰度绝对差(absolute difference,AD)作为匹配代价,可以较好地反映像素点之间的灰度变化,不足之处在于该算法对光照变化产生的噪点十分敏感,鲁棒性较差。李志等[6]提出一种彩色Census变换匹配算法,提高对不同光照变化的鲁棒性,但是存在视差边缘匹配不准确的缺陷。Hirschmüller[7]提出一种介于局部算法与全局算法之间的半全局立体匹配(semi-global matching,SGM)算法。双目立体像对采用基于互信息的匹配成本计算策略来提升匹配效率,通过优化最小能量函数并且进行多个方向代价聚合来提高计算精度,但复杂度较高。

综合考虑上述算法的优缺点,针对弱纹理区域和视差不连续区域较难处理以及受噪声和光照变化等复杂干扰因素的影响下极易产生误匹配等问题,提出了利用局部匹配绝对误差和(sum of absolute differences, SAD)算法在灰度信息及纹理丰富区域匹配速度快、计算效率高和Census变换对图像辐射差异具有鲁棒性的优势,将SAD和Census算法融合替代单一匹配代价来改进传统的立体匹配算法,同时采用简单十字交叉方法进行代价聚合,通过后处理优化初始视差图,进而得到最终效果良好的视差图。

1 图像预处理

以获得的二维数字图像为出发点,获取空间物体三维几何信息的过程之中,相机标定是十分重要的环节。采用简单灵活得到广泛使用的张正友平面摄像机标定方法[8-9]。相机与标准的标定板都允许在任意方向移动,利用不少于3个不同的视角图像就可以获取相机的内外参数,便于实现又可以得到相对较好的定标精度。由于相机移动以及外界环境的影响,相机无法避免获取带有畸变的影像,而对畸变的纠正主要是针对径向畸变。双目立体匹配利用Bouguet立体校正[10],在左右视图中通过极线约束将寻找匹配点的搜索范围从二维平面缩小到一维直线搜索,并且获得严格水平行对准的左右视图。立体像对利用一定的相似性测度算法,一旦确定了匹配点,即可获得三角测量原理中的视差值,从而恢复真实客观世界中该点的深度信息。现采用Scharstein等[11]的算法思想,如图2所示,将立体校正后的立体像对通过匹配代价计算、代价聚合、视差选择和视差优化4个阶段,即可以获取匹配效果良好、错误匹配少的高精度视差图。

图2 立体匹配流程Fig.2 Stereo matching process

2 算法原理

2.1 SAD算法原理

SAD算法具有计算速度快和实时性能好的优点,其核心思想是把左右图像中匹配点每个像素对应数值之差的绝对值求和,并评估左右图像块之间的相似度。SAD算法计算公式为

(1)

式(1)中:IL(x,y)、IR(x,y)表示左右视图中像点(x,y)位置的像素灰度值;d为视差值。用i、j遍历匹配窗口中的每个像素,每进行一次运算d的数值会发生变化。匹配窗口的构建如图3所示,其中,PL为左目参考图像,PR为右目待匹配图像,并且左右视图Y轴相等,在X轴存在水平位移。左视图像PL和右视图像PR分别以中心像素点(x0,y0)、(x0+d,y0)构建尺寸大小为M×N的匹配窗口WL和待匹配窗口WR。然后,统计两匹配窗口内像素灰度,并求取WL与WR中所有像素差的绝对值。根据相似性度量函数在预先设置的视差范围内,从若干可能选取的匹配窗口中寻找最佳的匹配窗口。若两个子窗口计算所得SAD最小时,即为最佳匹配窗口,则对应的点为最佳匹配点,此时当前的d即为视差值[12]。

图3 SAD匹配原理Fig.3 SAD matching principle

2.2 SAD与Census融合原理

Census变换的核心思想是使用像素邻域内的局部灰度差异,用比特串来表示编码后像素灰度变换信息。由于Census变换能够更好地检测出图像中的纹理空间分布信息,因而具有更好的鲁棒性和适用性。Census变换公式为

(2)

(3)

式中:C(p)为窗口中心像素p为基准经过变换后的一个比特串;I(p)、I(q)为像素p、q的灰度值;W(p)为窗口中心像素p为基准的像素邻域,若窗口中的某个像素q的灰度大于中心像素p,则将比特串的相应位置标记为1,否则将其设置为0[13];⊗为比特位的逐位连接运算。对视差搜索范围内的每一个像素(x,y)的视差值,需要根据下式来计算相似性测度值。

(4)

式(4)中:CL(x,y)、CR(x,y-d)为经过Census变换后得到的比特串;d为当前搜索视差值,Hamming[CL(x,y),CR(x,y-d)]为两比特串的汉明距离,汉明距越小,两点之间相似度越高;n×n为匹配窗口大小。

设计了SAD和Census的融合策略,SAD与Census变换产生的初始匹配代价存在差异,为避免初始代价不一致导致视差图准确度不够的问题的产生,所以须经过处理后将两者的初始代价进行归一化以生成视差空间。因此,定义式(6)的归一化公式将两者的数据统一归一化到[0,1]区间上,然后,将归一化后的数据进行求和来生成新的匹配代价[14]。

C(p,d)=ρ[CCen(p,d),λCen]+

ρ[CSad(p,d),λSad]

(5)

(6)

式中:CCen(p,d)为经过Census变换后的得到匹配代价值;CSad(p,d)为经过SAD算法计算得到的匹配代价值;λCen、λSad分别为Census变换、SAD算法的影响参数;ρ(c,λ)通过预先设置λCen和λSad可以将两种类型的代价值控制在[0,1],因此代价不会由于某一项而引起较大的突变。与单一基于SAD或Census变换的算法相比,融合算法生成的视差图更为准确,因为Census变换利用邻域像素与中心像素对比的信息来代替原有的灰度,对于光照等因素引起的亮度偏差有较好的鲁棒性,并且SAD算法针对窗口内像素灰度值的匹配更加精确。结合两者优势,融合匹配算法比单独使用两者时正确率得到提高,产生的误匹配率更小,具有更好的鲁棒性和抗噪性。

2.3 代价聚合

采用简单的十字交叉区域[15]获得中心像素的方法进行代价聚合,十字交叉区域的结果不仅考虑中心像素与周围像素的距离关系,而且可以用于视差图像的后处理并且能够提高代价聚合的效率。

算法将中心像素延伸到图像边缘的距离称为臂长。如图4所示,对中心像素进行4个臂拓展延伸的下一点p1应该满足:

图4 十字交叉原理Fig.4 Principle of cross

DC(p1,p)<τ1,DC[p1,p1+(1,0)]<τ1

(7)

DS(p1,p)

(8)

DC(p1,p)<τ2, 如果L2

(9)

式中:DC(p1,p)为p1和p像素点间的颜色差异,DS(p1,p)为p1和p像素点间的几何距离。式(7)表明p1点与中心像素点p的颜色差异应该小于给定阈值,且p1与p的下一个点之间的颜色差异也要小于阈值τ1,这确保了自适应区域包含的点不会跨越图像的边缘。式(8)表明臂长要小于最大臂长,使其在给定的阈值范围L1内扩张。式(9)则选择较小的阈值τ2进行限制,当距中心像素的距离大于L2时,可确保在无纹理和弱纹理区域中有足够的信息,并且不会在强纹理区域中引入不同的颜色的其他像素。当p1点违反上述任一条件时,相应的臂的扩张结束。在中心像素的4个臂扩展完成之后,每个像素q的水平臂在其垂直臂上形成一个自适应区域。

2.4 视差计算与后处理

计算初始匹配代价后,通过胜者为王策略[16](winner-takes-all,WTA)寻找最优视差,从所有可能选择的匹配代价中确定最小匹配代价的位置后而对应的视差值即为最优视差。由于立体匹配的左右视图从不同的视角进行拍摄,因而存在遮挡区域,即在一个图像中存在而在另一图像中不存在的区域。通过左右一致性检测[17]后,对遮挡点进行视差填充。由于图片本身存在噪声以及填充后的视差仍然存在很多独立的噪声,为了提高结果的准确性,进行中值滤波[18]滤除噪声。经过3种细化方法不但去除错误的孤立点减少错误匹配,同时还可以相对较好地保留图像的边缘信息。

3 实验结果与分析

设计了两个实验,利用标定实验得到的标定参数后,进行立体校正可以获取严格水平的左右视图。利用不同算法对左右视图进行立体匹配对比实验,同时也选取不同场景的数据集验证了所提算法的可行性和适用性。

3.1 相机标定实验

选取普通双目摄像头进行标定实验,左右摄像机间距约4.15 cm,图像最大分辨率是640×480。在同一场景下利用固定摄像机移动标定板的方法采集8组图像(图5)进行双目摄像机标定测试,相机标定结果保存在计算机中,具体结果如表1所示。

表1 相机标定结果Table 1 Camera calibration results

图5 相机标定图片Fig.5 The image of camera calibration

根据相机标定结果对拍摄的一个立体影像对进行校正,取得了良好的效果。如图6所示,图6(a)是校正前的左右实拍图,水杯的瓶盖存在上下偏移的现象。图6(b)是校正后的左右实拍图,水杯的瓶盖上下偏移现象消失,左右视图只存在水平偏移现象。实验结果表明,经过立体校正后,左右视图的所有极线都相互平行,并且方向与图像坐标系的X轴相同,同时对应点的纵坐标也相同。

图6 立体校正前后Fig.6 Before stereo correction

3.2 立体匹配实验

采用C++语言在Visual Studio 2013集成环境下编程实现SAD、Census、融合SAD和Census的立体匹配算法(简称SAD-CEN),采用操作系统为Win10 64位,处理器为AMD Ryzen 5 2600 Six-Core 3.4 GHz,运行内存8 GB的计算机进行实验。实验数据采用Middlebury[19]平台提供的4组测试图像Cones、Teddy、Tsukuba、Venus以及对应真实的视差图。分别采用SAD(匹配窗口大小为5×5)、Census以及本文提出的SAD-CEN算法(匹配窗口大小均为9×9)对4组测试图像进行实验。实验结果如图7所示。

由图7可以看出,与SAD和Census算法相比,采用SAD-CEN算法计算的视差图具有明显优势:①Cones视差图的圆锥影像更接近真实视差图,圆锥的边缘表达更清晰,并且面具模型的轮廓更加圆润;②Teddy视差图中间横放的木头更符合原来的形状,并且玩偶熊的右手上方和头部区域能够很好地分离,且相对于SAD算法,弱纹理区域更加平滑;③Tsukuba视差图灯罩形状以及灯杆与灯罩的连接处更符合真实视差图,不但灯杆两个长柄之间的缝隙清晰可见,而且桌子下面的匹配更准确;④Venus视差图的拐角边缘准确,并且独立噪声点比较少,更符合真实视差图。综上所述,融合SAD与Census的SAD-CEN考虑纹理空间分布信息,克服了SAD算法在大面积纹理缺乏区域的错误匹配多的问题,融合算法平滑性较好,物体边缘轮廓较清晰,匹配精度得到提高。

图7 实验结果Fig.7 Experimental results

为了更好地评估3种算法生成视差图的效果,将3种算法生成的效果图分别与Middlebury平台提供的真实视差图进行对比,两者的视差阈值设置为1,如果两者之间的差大于1,则认为该点是匹配错误点。通过不同的算法对4组图像进行测试,所有区域平均误匹配率数据如图8所示。

图8 视差图误匹配率折线图Fig.8 Line chart of disparity map mismatch rate

由图8可知,SAD算法误匹配率最高,Census算法次之,SAD-CEN算法误匹配率最低。在Teddy与Tsukuba视差图像中的表现尤为明显:Teddy视差图像中SAD-CEN算法的误匹配率比SAD算法降低约10%;而Tsukuba视差图像中SAD-CEN算法的误匹配率比Census算法降低约8%。表明SAD-CEN生成的视差图误匹配率比单独使用SAD和Census的生成视差图误匹配率有一定程度降低,匹配精度得到提高,匹配效果得到改善。

为了测试算法在复杂情况下生成视差图的效果以及适用性,另外选取两组影像数据进行实验。第1组数据为室外汽车行驶图片,图像分辨率为655×540,第2组数据为相机实际拍摄的影像,影像分辨率为290×230。采用SAD、Census和SAD-CEN算法进行测试,实验结果如图9所示。由图9中第1组数据的实验结果可知,相比Census和SAD算法,采用SAD-CEN算法进行立体匹配后的图片,汽车轮廓更符合现实,同时信号灯的末尾也可以在视差图上清晰反映。由图9中第2组数据的实验结果可知,SAD-CEN算法生成的视差图在饮料瓶的边缘及瓶子之间的间隔更加清晰。实验结果表明SAD-CEN算法生成的视差图错误匹配较少,验证了该算法在复杂情况下仍具有较好的适用性。

图9 不同场景的实验结果Fig.9 Experimental results of different scenes

4 结论

在求得摄像机内外参数,进行立体校正的基础上,针对立体匹配中弱纹理区域和深度不连续区域误匹配率较高的问题,提出一种融合SAD和Census计算匹配代价的算法,同时采用简单十字交叉的代价聚合方法不仅改善了视差图生成效果而且提高了算法的准确度。针对不同实验场景的测试仍可以生成效果较好的视差图,进一步验证了算法的适用性。立体匹配是计算机视觉中的关键技术,对立体匹配算法的准确性以及实时性改进是未来研究工作的重点。

猜你喜欢
立体匹配视差代价
基于自适应窗的立体相机视差图优化方法研究
视差边缘优化的SGM 密集深度估计算法∗
Kobe—one of the greatest basketball players
爱的代价
幸灾乐祸的代价
代价
双目立体视觉系统的旋转轴方位计算与特征点立体匹配
基于分割树的视差图修复算法研究
基于SIFT算法的图像匹配技术在测量系统中的应用
一种改进自适应权重稀疏区域立体匹配算法