改进的SAD-Census立体匹配算法研究

2022-02-08 08:55马滨滨肖玲
电子测试 2022年22期
关键词:立体匹配视差鲁棒性

马滨滨,肖玲

(中车南京浦镇车辆有限公司,江苏南京,210031)

0 引言

作为双目立体视觉的关键步骤之一,立体匹配的主要任务是确定双目图像中对应像素点之间的视差,并由此获得空间点的深度信息[1]。尽管其已经经过四十多年发展,但由于噪声、图像亮度区别、遮挡、反光区域、透明物体等诸多因素的影响[2],至今研究者们也没有找到出一种兼顾匹配精度和算法实时性的有效解决方法,因而至今依然是学术界研究的难点和热点。2002年,Scharstcin和Szeliski等人发表了一篇具有里程碑意义的综述性文章[3]。在文中,通过对当时立体匹配算法的相关研究进行梳理与总结,认为立体匹配的一般程序主要包括匹配代价计算(matching cost computation)、代价聚合(cost aggregation)、视差计算 / 优化(disparity computation/optimization)、 视差改进(disparity refinement)。并根据采用最优化理论方法的不同将立体匹配分为基于局部对比优化的局部立体匹配算法和基于全局优化的全局立体匹配算法。除此之外,为了对立体匹配算法的性能有一个统一的评比标准,创建了Middleburry立体视觉网站[4]。近年来,随着立体匹配研究及学科交叉的深入发展,特别是新的数学方法的引入,涌现出很多新的立体匹配算法[5]。例如,基于深度学习的立体匹配方法突破了局部和全局的界线,极大地丰富了立体匹配算法的理论,显著提升了立体匹配的精度和速度[6]。

SAD匹配算法在灰度信息及纹理丰富的图像边缘区域匹配速度快、实时性强,但对光照强度的均匀性和噪声较敏感,鲁棒性较差[7];改进的Census匹配算法具有更高的鲁棒性和匹配精度,但在视差不连续区域容易出现误匹配,所以仅仅使用其中一种匹配算法很难在实际场景中得到具有较高精度的视差图[8]。因此,本文将SAD匹配算法和改进后的Census匹配算法进行融合计算匹配代价,充分利用两算法之间可以优势互补的特点,使匹配算法的具有更高的实时性、匹配精度和鲁棒性。

1 基于自适应权重的SAD-Census的立体匹配算法

采用文献[9]自适应权重的设置的方式将SAD匹配算法、改进Census匹配算法进行归一化融合,让算法在纹理丰富的图像边缘区域赋予SAD算法更高的权重,在图像平滑、纹理重复区域赋予Census算法更高的权重。融合后得到的新的匹配代价计算公式如式(1)所示。

式中,C(x,y,z)是最终的匹配代价;β、1-β分别是控制SAD匹配算法、Census匹配算法参与匹配代价计算的权重;λSAD、λCen为常数,分别是SAD匹配算法和改进后的Census匹配算法的代价权值;ρ(C,λ)是归一化函数,用于控制SAD匹配算法、Census匹配算法计算的匹配代价值的取值范围在[0,1]。

2 代价聚合

十字交叉区域的构造示意图如图1所示。首先,根据色彩相似性和空间距离关系设定一个色彩阈值τ与一个空间距离阈值L ,然后在水平方向和垂直方向构造待匹配像素点p的十字交叉区域,作为初始支持骨架,其中水平方向为H(p),垂直方向为V(p),则两个正交的交叉断H(p)和V(p)可用公式(2)表示[10]。

图1 十字交叉区域构造示意图

每个臂长的调整准则如公式(3)所示。

式中,Ds(pi, p)是像素点pi和p 的空间距离差,Dc(pi, p)是像素pi和p 的色彩差。当pi达到阈值条件时,臂长不再发生变化,此时将搜索待匹配像素p的领域内与其色彩相似的所有像素。最后,在垂直方向V( p )中的每一个像素点q重复上述过程,即可求得q 的水平方向支持区域H( q )。联合所有的H( q)即可完成待匹配像素p的自适应窗口的构造。最终的十字交叉窗口区域如公式(4)所示。

式中,i 代价聚合的迭代次数,通常取i=2~4,这样既能保证代价聚合后视差图的精度,还可以使得算法具有较高的效率。

王云峰[11]在研究十字代价聚合区域中像素点臂长的调整规则时发现,臂长大小能够反映该像素点处于图像中的哪个位置。例如当像素点上下左右四个臂长值都很大时,那么该像素就位于平滑区域;反之则靠近图像边缘区域。根据这规律,本文设计了一个权重β能够充分融合SAD算法和改进后的Census算法,如公式(6)所示。

式中,hmin是像素点在上下左右四个方向延伸的最小臂长,τ是颜色阈值,L 是空间阈值。通过公式(6)可以发现,当hmin越小,即像素点越靠近图像边缘,β越大,则融合后的算法中SAD立体匹配算法占支配地位,可以更好地处理图像边缘地区;反之,则在图像平缓区域具有更高匹配精度的改进的Census占主导地位。综上所述,采用自适应权重β能够在图像不同区域均得到最好的匹配准确度。

3 视差选择

在视差选择阶段,通常采用胜者为王WTA(Winner-Take-All)策略[12]对聚合后的代价CCBCA(p,d)进行视差计算,再选择计算中的最小视差作为最优的视差值。每个像素点的最优视差获取如公式(7):

式中,ds表示当取最小匹配代价时,当前像素点p的最优视差值;dmax表示视差最大搜索范围。

4 视差优化

经过视差选择处理后将得到一幅初始视差图,但是由于遮挡或深度不连续会造成很多误匹配,导致初始视差图出现孔洞现象。因此,需要对初始视差图进行优化处理。

初始视差图的优化主要采用左右一致性检测方法检测出异常匹配点,然后对异常点进行修正。首先,通过以上步骤得到左右两幅图像的初始视差图,选取左初始视差图中任一像素点p 对应的最优视差值ds1,那么像素点p在右初始视差图中对应的像素点p-ds1的最优视差值为ds2。若像素点p 不满足公式(7),则像素点p为异常匹配点。根据对极几何原理可以将异常匹配点p分为遮挡点和错误匹配点[13]。

一些礼仪习俗会导致交流障碍。比如,澳大利亚男性土著人忌讳说姐妹的名字,所以当律师问到其姐妹的名字时,他可能回答“不知道”。如果译员只是直译,显然不能促进各方的交流。

式中,Th表示视差阈值,通常取值为1。

最后,对异常点进行修正。具体过程如下:假设像素点p为异常点,分别在像素点p的左、右方向寻找第一个非异常点,对应的最优视差值分别为d(pl)、d(pr)。则异常点p修正后的视差值为:

经上述处理后便可以得到更加准确的视差图。综上所述,基于自适应权重的SAD-Census立体匹配算法的流程图如图2所示。

图2 本文立体匹配算法流程图

5 匹配实验与结果分析

5.1 实验环境和测试数据集

为了正确评估改进后算法的性能,算法在windows10操作系统,Intel Core i5-8300 CPU,2.30GHz计算机上实现,并通过PyCharm2019编译器和opencv2.4.9作为软件平台,python语言作为编辑语言进行实验。实验所需数据集来源于Middlebury立体匹配算法评测平台[7],选取该测试平台提供的经立体校正后的四套标准彩色立体图像对和对应的真实视差图。如图 3 所示,图中(a)、(b)、(c)、(d)分别是 Cones、Teddy、Tsukuba、Venus四套图像对,图中第一排、第二排分别表示左右摄像机拍摄的左右视图,第三排是左视图对应的真实视差图,用于作为评价立体匹配算法质量的标准。四套图像对的基本属性和特征如表1所示。

图3 Middlebury立体匹配算法测试平台标准图像

表1 Middlebury立体匹配算法测试平台标准图像基本属性

Middlebury测试平台为评估立体匹配算法提供了两个度量指标:均方根误差(RMS,Root-Mean-Squared)和误匹配率(POBMP,Percentage of bad matching pixels)。均方根误差用来计算算法得到的视差图和真实视差图内所有对应像素点的视差均方根,公式如(10)所示;误匹配率相对来说更加简单和直观,用来计算误匹配像素点与图像总像素点数的比值,如公式(11)所示。

式中:N是视差图中像素点的总数;dC(x,y)、dT(x,y)分别是坐标(x,y)在所计算的视差图和真实视差图中的视差值;δd是视差误差容许度,通常取值为1,即算法得到的视差值和真实视差值相减的差的绝对值大于1,则认为该像素点是误匹配点,否则为正确匹配点。误匹配率计算的区域通常分为所有区域(All)、非遮挡区域(Nocc)和视差不连续区域(Disc),其中,所有区域和非遮挡区域的误匹配率是评估立体匹配算法性能的最重要指标,因此,本次实验只计算在这两个区域的误匹配率作为改进的立体匹配算法性能的评价标准。

5.2 改进Census算法的验证

为了能够更直观和客观的表现改进的Census立体匹配算法的性能,这部分实验只进行匹配代价的计算得到初始视差图,计算其均方根误差,分析改进的Census立体匹配算法在准确度和鲁棒性方面的性能。传统Census立体匹配算法和改进的Census立体算法计算标准图像对得到的初始视差图分别如图4(a)、(b)所示,均方根误差如图5所示。匹配代价窗口均为5*5。

图4 对比算法计算的初始视差图

图5 对比算法的均方根误差

从图5中可以发现改进后的Census立体匹配算法得到的视差图比传统Census算法得到的视差图在重复纹理区域的误匹配更少,匹配精度更高。

为了测试改进后Census立体匹配算法的鲁棒性,分别给四套标准图像对中的右视图增加到原亮度的150%,左视图保持不变,如图6(a)所示。将调整之后的左右标准图像分别用SAD立体匹配算法、传统Census立体匹配算法和改进后的Census立体匹配算法进行匹配,得到的视差图如图6(c)、(d)、(e)所示。

图6 光照变化后的匹配代价计算算法对比

从图6可以看出,当待匹配图像亮度发生突然变化时,SAD立体匹配计算出的视差图已经完全无法还原场景的深度信息,传统Census算法虽基本能还原场景深度信息,但准确率明显下降,而改进的Census立体匹配算法则有较强的鲁棒性,获得的视差图与亮度未发生突变时基本保持一致。

5.3 算法总体性能验证

为了进一步验证本文所改进算法的整体性能,根据图2所示的步骤分别采用本文方法、SAD立体匹配算法、Census立体匹配算法计算出标准图像对的最终视差图,即三种算法采用相同的代价聚合、视差选择、视差优化方法,可以得到如图7实验结果。

图7 中(a)、(b)、(c)分别是传统 Census 算法结果、SAD算法结果以及本文算法结果。通过最终对比3种算法,结果表明,本文提出的基于自适应权重的SAD-Census立体匹配算法要比单独适应SAD立体匹配算法和Census立体匹配算法匹配准确性高。对上述视差图的所有区域和未遮挡区域进行误匹配率计算,结果如表所示。

图7 实验算法最终视差图对比

从图7和表2中可以看出,在进行匹配精度的中实验本文提出的基于自适应权重的SAD-Census立体匹配算法在评测标准图像所有区域、未遮挡区域的误匹配率、四对标准图像的平均误匹配率均是三种立体匹配算法中最小值,即本算法具有最好的匹配准确性,尤其对于大部分是倾斜区域和弱纹理区域的Venus标准图像,本文匹配算法的匹配准确率可高于到另外两种算法近4倍。

表2 对比算法误匹配率

6 结论

针对Census立体匹配算法过于依赖中心像素灰度值致使鲁棒性不高的问题提出了一种解决方法,为获得更佳的匹配精度,提出了一种基于自适应权重的SAD-Census立体匹配方法,该方法可实现在图像边缘区域和平坦区域给予SAD匹配算法和改进后Census匹配算法不同的权重以获得最佳的匹配效果,通过实验验证了改进后Census匹配算法具有更好的鲁棒性,基于自适应权证的SAD-Census立体匹配方法的匹配准确性优于原算法。

猜你喜欢
立体匹配视差鲁棒性
基于自适应窗的立体相机视差图优化方法研究
荒漠绿洲区潜在生态网络增边优化鲁棒性分析
基于确定性指标的弦支结构鲁棒性评价
基于梯度域引导滤波的视差精炼迭代算法
基于分割树的视差图修复算法研究
基于SIFT算法的图像匹配技术在测量系统中的应用
改进导向滤波器立体匹配算法
非接触移动供电系统不同补偿拓扑下的鲁棒性分析
立体视差对瞳孔直径影响的研究
动态规划立体匹配的状态空间分析和性能改进