基于两阶段自适应优化的双目立体匹配算法

2020-12-25 02:25李宝平王宏涛
关键词:视差像素点测度

李宝平,王宏涛

(1.河南理工大学 物理与电子信息学院,河南 焦作 454000;2.河南理工大学 测绘与国土信息工程学院,河南 焦作 454000)

0 引 言

近年来,随着双目立体视觉技术在虚拟现实、人工智能、目标追踪、立体摄影测量及三维重建等领域中的广泛应用,它已成为计算机视觉领域中的一个研究热点[1-3]。立体匹配是双目立体视觉研究中最为关键的一部分,匹配准确度将直接影响目标物体深度信息的获取。由于遮挡、光照、纹理变换等因素的影响,立体匹配也是立体视觉领域研究中的一个难点。

D.Scharstein等[4]将现有的立体匹配算法分为局部算法和全局算法2大类。局部算法利用支持窗口内像素点的区域特征实现匹配,不需要平滑假设;全局算法则需要进行平滑假设,构造全局能量函数,将立体匹配的标签优化问题转化为能量最小化问题,通过能量优化的方式求解[5]。虽然局部算法计算精确度比全局算法低,但是计算复杂度低,易于实现,有着广泛的应用。局部立体匹配的主要步骤可以概括为[6]:(1)匹配代价初始化;(2)代价聚合;(3)视差选择;(4)视差优化。目前提升匹配准确度的2个主要方法是:(1)改进初始化匹配结果[7-8];(2)改进代价聚合方法[9]。

代价初始化是立体匹配中至关重要的一个环节[7]。采用不同的匹配测度函数,在图像的不同区域(纹理结构,边缘分布等不同)取得的匹配效果也不尽相同。如基于色彩的绝对差值(absolute difference,AD)、平方差值(squared difference,SD)等测度对噪声及光照变化比较敏感,而基于统计的Census 变换虽然对光照变化有较好的鲁棒性,并且在弱纹理区域也有好的表现,但是在重复纹理区域效果不理想。一个有效的方法就是采用多测度融合的方法。K.Wegner等[10]将多测度乘积融合方法应用到新视点合成算法中,取得不错的效果,但也存在错误扩大化问题,当2种测度中有一个匹配错误时,由于乘积的原因会将错误扩大,影响匹配准确度,尤其是在遮挡区域;A.Klaus等[9]利用加权求和的方法融合Gradient和AD 2种测度,使匹配精度得到大幅提升,但权重因子是通过试验的方法获得的,缺乏普适性;X.Mei等[7]通过构建指数函数的方法融合Census和AD测度,也取得了很好的效果;C.Stentoumis等[11]采用固定权重因子,利用指数函数的方法融合了AD,Gradient和Census 3个测度。指数函数融合方法存在与乘积融合方法类似的错误扩大化问题。这些已有的融合方法,其融合参数大都通过试验的方法获得,对图像中所有像素点都是固定不变的,缺乏普适性。

代价聚合是局部立体匹配算法中最为关键的一步,通过对支持窗口内的初始匹配代价进行加权滤波以提高匹配可靠性。代价聚合方法又可分为自适应窗口法和自适应权重法[6]。支持窗口尺寸的选择会直接影响立体匹配效果,如果窗口过小,则区分度不高,在弱纹理区域容易出现误匹配;反之窗口过大,容易跨越边界,在深度不连续区域出现误匹配。自适应支持窗口成为最佳选择[12]:QU Y F等[13]利用像素点的色彩差异性构建自适应支撑窗口;YANG Y Y等[14]提出一种依据梯度大小构建自适应矩形窗口的方法;ZHANG K等[8]提出利用相邻像素间的色彩及距离双重约束,构建一种基于十字支撑的自适应窗口的方法;MEI X等[7]则在此基础上进行扩展,提出基于距离和色彩双阈值的十字支撑自适应窗口。基于自适应权重的方法则是通过对支持窗口内的相邻像素分配不同的权重实现代价聚合的。K.J.Yoon等[15]首先提出基于距离和色彩的双边滤波立体匹配方法,取得很好效果,但计算复杂度较高;A.Hosni等[16]提出一种基于引导滤波器的代价聚合算法,计算复杂度与窗口大小无关,在实时系统中被广泛应用。

本文针对局部立体匹配算法在弱纹理区域匹配准确度低的问题,对匹配代价初始化和代价聚合2阶段进行改进,提出一种两阶段自适应优化的局部立体匹配算法。首先,在代价初始化阶段,利用十字支撑的最短臂长构造自适应函数,自适应融合AD及Census特征测度[17];其次,在代价聚合阶段,利用十字支撑扩展及形态学方法构建自适应窗口,通过自适应区域滤波实现代价聚合;最后,经过视差选择及视差优化生成视差图像。

1 算法描述

本文算法的整体流程如图1所示:首先,对经过立体校正后的双目图像,采用限制对比度自适应直方图均衡(采用Rayleigh直方图)方法[18]进行图像增强;其次,利用色彩及距离双阈值线性约束构造十字支撑窗口,并利用最短臂长构造自适应权值函数融合AD及Census测度,实现匹配代价初始化;再次,通过对十字支撑窗口进行水平扩展及形态学处理生成自适应窗口,并进行区域滤波,实现代价聚合;最后,经视差选择(winner takes all,WTA)及视差优化,输出最终视差图像。

图1 算法流程Fig.1 Flowchart of the proposed algorithm

2 自适应AD-Census测度融合

在局部匹配算法中,通常假设匹配窗口内的像素点视差平滑。对于弱纹理区域需要一个大的匹配窗口以容纳更多纹理,而对于视差不连续区域则需要小的窗口以保持边缘细节。因此,采用基于纹理的自适应窗口代替固定窗口,有助于提高弱纹理区域的匹配准确度。

AD测度主要依赖于像素点自身色彩强度值,Census测度则更依赖于周边像素序列。因此,对于弱纹理区域,Census更具优势,且对光照变化和图像噪声有较好的抑制作用,但对图像中重复纹理及视差不连续区域的匹配效果不是很好。为解决这个问题,需要引入更多的细节参与到匹配计算中,色彩强度信息有助于消除这种模糊性。因此,考虑利用AD-Census进行联合测度,并利用基于纹理的十字支撑窗口的最短臂长构造自适应函数,实现AD-Census测度的自适应融合。

2.1 自适应十字支撑窗口构建

ZHANG K等[8]提出基于十字支撑窗口的立体匹配算法,利用周围像素色彩的约束关系构造自适应窗口。MEI X等[7]在此基础上改进了十字臂长的计算规则,提出基于距离和色彩双阈值约束的臂长计算准则。本文在此基础上,采用一种基于距离的线性可变阈值的臂长计算准则。色彩阈值τ随臂长lpq的增加而线性减小。色彩阈值τ的计算准则为

(2)

式中:L1,L2为构造十字支撑的距离阈值;τ1,τ2为色彩强度阈值;lpq为待匹配像素点p与相邻像素点q之间的距离。

阈值变化曲线如图2所示:L1可理解为设定的深度不连续区域最大允许范围,L2为设定的最大臂长。当lpq

需要说明的是,在计算臂长时,不仅要求p点与q点之间的色彩强度差值小于τ,而且要求臂上相邻像素点(q,q′)间的差值也要小于τ。利用该约束准则,可得到像素点p的四方向臂长{Hp-,Hp+;Vp-,Vp+},进而得到十字支撑窗口,如图3所示。

图2 色彩阈值变化曲线Fig.2 Color threshold change curve

图3 自适应十字支撑窗口Fig.3 Adaptive cross-support window

2.2 AD-Census自适应融合

基于AD-Census测度立体匹配算法的准确度与图像的纹理强弱及边缘分布有密切联系,而十字支撑的最短臂长又可以反映图像的纹理变化:臂长变长,则处于弱纹理覆盖区域;臂长变短,则接近于物体的边缘。由此考虑基于最短臂长构造自适应函数以融合AD和Census测度。AD-Census自适应联合测度函数可表示为[1]

(3)

(4)

式中:λAD和λCensus为正则化参数;α为自适应权值系数;Lmin为四方向最短臂长;γL为边缘区域控制参数;ε为修正系数。

如果像素点p接近图像边缘,则最短臂长短,AD权值增大,Cesus权值减小,自适应融合AD和Census测度。

3 自适应区域滤波

在代价聚合阶段,采用基于自适应区域滤波的代价聚合方式。如图3所示,首先在像素点p十字支撑的垂直臂{Vp-~Vp+}上,对每一个像素点q进行水平扩展,水平扩展需要满足与p点水平扩展相似的色彩阈值条件:

(6)

至此,可以初步得到每一个像素点p的自适应滤波区域,如图4(b)所示。考虑到区域滤波的平滑性,可以对该区域进行形态学处理,得到如图4(c)所示的自适应滤波区域。

R∘B=(RΘB)⊕B,

(7)

式中:R为二值化后的自适应区域;B为结构元素;∘为开运算;Θ为腐蚀操作;⊕为膨胀操作。

像素点p在视差范围d∈[dmin,dmax]内的匹配代价可以表示为

(8)

图4 自适应滤波区域示意Fig.4 Sketch map of adaptive filtering area

式中:Νp为像素点p的自适应滤波区域;N为该区域内的像素点数目。

最后,采用WTA( winner takes all)策略,在视差范围内选择使匹配代价最小的视差值作为初始视差:

(9)

4 视差优化

由WTA方法得到的初始视差与真实视差之间还存在一定的差距,需要进行后续处理。首先,考虑利用图像中每个像素点p的自适应区域Νp,进行区域优化,选择邻域范围内统计频次最高的视差值作为p点的视差[12]:

(10)

其中,hist(d,Νp)为在p点的邻域Νp内视差d的统计频次。

由式(10)得到的视差值为统计意义上的最优视差。这一过程可进行多次迭代以尽量消除误匹配点。图5为AD初始视差统计优化前后的视差图像对比。

通过左右一致性检测,检测视差图像中的异值点:

式中:dleft(p)为左视差图中p点的视差值;dright(p-dleft(p))为p点在右视差图中对应点的视差值。

对于异值点可以在该像素点的八方向进行搜索,选择最小视差作为该点的视差值,最后,通过中值滤波,得到视差图像。

5 测试分析

为了验证算法的试验效果,试验利用Middlebury Stereo Evaluation 2和Evaluation 3测试数据集[19]进行测试。试验中Evaluation 2测试集采用误匹配率作为匹配准确度的衡量指标,视差允许误差设为1,Evaluation 3测试集采用视差平均误差为匹配准确度的衡量指标。试验中所用的主要参数设置如表1所示。

表1 试验所用参数设置Tab.1 Parameter settings in test

5.1 与单一测度及固定权值融合方法的比较

为检验两阶段自适应优化的效果,将本文算法与AD、Census单测度及固定权值(α=0.5)融合方法进行比较,这里统一采用自适应区域滤波,在视差优化阶段,只进行左右一致性检测及中值滤波。Venus,Teddy图像的试验测试结果如图6所示。

从图6可以看到,AD测度在图像边缘区域表现较好,但在弱纹理区域表现较差;Census测度则相反,在弱纹理区域表现较好,视差平滑,但在图像边缘区域,由于视差不连续,Census的区域特性会导致边缘模糊。图6(d)中采用固定权值的融合方式,与Census匹配结果相接近,融合优势表现不明显,主要原因是缺乏自适应环节。本文提出的两阶段自适应优化方法则可以依据像素点位置的纹理强弱,自适应调整AD及Census的权值,使其在弱纹理区域和图像边缘区域均有较好的表现。试验数据集平均测试结果对比如图7所示。本文所提算法较固定权值算法,误匹配率下降了0.44%。

图6 Venus及Teddy试验结果对比

Fig.6 Comparison of Venus and Teddy images test results

图7 不同测度函数得到的误匹配率对比Fig.7 Comparison of error matching rates obtained by different measures

5.2 参数设置对结果的影响

下面探讨不同参数设置对立体匹配结果的影响。这里以Evaluation 2数据集中的Tsukuba,Venus,Teddy和Cones图像为例进行分析。

首先,分析色彩强度及距离阈值对匹配结果的影响。在代价初始化阶段,由阈值决定的像素点的最短臂长会影响AD及Census测度的权值分配;在代价聚合阶段,由臂长决定的像素点自适应区域则会对滤波效果产生影响。

由图8(a)及(c)所示的测试结果可以观测到:最短距离阈值L1及色彩强度阈值τ1的变化对匹配结果的影响较小,这是因为对于很多强纹理区域或边缘区域而言,高对比度已经将其自适应区域限制在一较小的范围内,因此,其变化对结果的影响不大。L2及τ2主要影响弱纹理区域像素点自适应区域的构建,会对Census测度产生较大的影响。由图8(b)和(d)可知,当L2=40,τ2=5时,可以取得较好的匹配效果。

其次,分析边缘控制参数γL和修正系数ε对匹配视差的影响,其变化均会影响AD和Census测度的比例分配。这里固定γL=1,分析ε取值对匹配结果的影响。当ε取值减小,AD比例增加,反之Census比例增加。

修正系数ε对匹配视差的影响如图9所示。当取值较小时,AD比例过大,可以获得较好的边缘视差,但同时会减弱Census测度在弱纹理区域的作用,导致匹配误差较大。合理设置ε,既可以在弱纹理区域获得较好的平滑视差,又不至于产生边缘模糊。

图8 参数设置对试验结果的影响

Fig.8 Influence of parameter settings on test results

图9 修正系数ε对匹配结果的影响Fig.9 Influence of correction coefficient ε on matching results

5.3 与其他融合算法的比较

将本文算法与其他同类融合算法进行比较分析。基于Middlebury Evaluation 3测试集的测试结果对比如表2~3所示。MEI X等[7]提出的经典自适应AD-Census融合算法,采用基于十字支撑的自适应区域滤波算法,但其在代价初始化阶段采用固定权值进行AD-Census测度融合,没有考虑不同测度在不同纹理区域的适应度问题。而本文算法则在初始化阶段考虑不同测度在不同纹理区域的置信度,因此,匹配效果更好。整体匹配误差下降了3.95%,非遮挡区域下降了2.17%。AW-ADCens算法[1]利用指数函数对AD-Census测度进行自适应融合,其中采用固定阈值的方法计算十字支撑臂长,本文采用线性阈值,在弱纹理区域,有更好的适应性,视差平均误差下降了0.25%。ADSM算法[20]是在图像分割的基础上,融合多个特征测度进行视差估计,其匹配准确度与图像分割的可靠性有很大关联,本文算法整体视差匹配误差较之下降了1.85%。部分试验测试结果如图10所示。

表2 不同融合方法视差平均误差比较(非遮挡区域)Tab.2 Comparison of disparity average errors with different fusion methods(non-occlusion area) %

表3 不同融合方法视差平均误差比较(全部区域)Tab.3 Comparison of disparity average errors with different fusion methods(all area) %

图10 部分测试结果

Fig.10 Partial results of tests

6 结 论

针对局部立体匹配算法在图像弱纹理区域匹配效果不理想的问题,本文提出两阶段自适应优化匹配算法。在代价初始化阶段,基于像素点十字支撑窗口的最短臂长构造自适应融合函数,实现AD-Census联合测度;在代价聚合阶段,则通过十字支撑窗口的自适应扩展及形态学处理,实现像素点的自适应区域滤波。试验结果表明,两阶段自适应优化算法在弱纹理区域及图像边缘区域,较传统的AD-Census融合算法,平均匹配误差均有明显下降,匹配准确度得到提升。

猜你喜欢
视差像素点测度
基于自适应窗的立体相机视差图优化方法研究
Rn上的测度双K-框架
图像二值化处理硬件加速引擎的设计
平面上两个数字集生成的一类Moran测度的谱性
基于局部相似性的特征匹配筛选算法
我国要素价格扭曲程度的测度
视差边缘优化的SGM 密集深度估计算法∗
Kobe—one of the greatest basketball players
基于像素点筛选的舰船湍流尾迹检测算法
基于canvas的前端数据加密