当前位置:首页 期刊杂志

融合多尺度信息的各向异性立体匹配

时间:2024-07-28

李 岩,吴孟男,刘克平,于微波

(长春工业大学 电气与电子工程学院,吉林 长春 130012)

0 引言

由于影像中通常存在光照和纹理结构变化的问题,利用传统的立体匹配算法极易出现大量的误匹配等问题,制约着后续系统测量的效果和精度。因此,对弱纹理区域和视差不连续区域匹配精度的研究受到广大学者的青睐[1-3]。

SCHARSTEIN等[4]定义了立体匹配的流程,并将其划分为匹配代价计算、代价聚合、视差计算和后处理4个步骤。根据匹配代价函数构造的不同,又可分为全局立体匹配算法、局部立体匹配算法和深度学习立体匹配算法。

近年来,随着机器学习技术的迅速发展,以深度学习神经网络为基础的匹配算法逐渐成为了研究热点[5]。深度学习通过图像进行非线性变换[6-7],可以提取图像的多层特征用于代价计算[8],通过预训练获得模型参数,提高了算法的鲁棒性[9]。但由于深度学习立体匹配算法需要大量数据进行计算且通常缺少视差优化步骤,导致生成的视差图存在孔洞,在实际应用中受到限制。

传统的立体匹配算法无需大量数据进行训练,匹配准确率也能满足实际应用需求,因此应用更为广泛。全局匹配算法通过构造全局能量函数来遍历图像中的所有像素,以尽可能多地获取全局信息,常用的全局立体匹配方法有图割[10-12]、置信传播[13]和动态规划[14-15]等。全局立体匹配算法获得视差图的精度较高,但算法效率低,难以在实际工程中应用。

局部立体匹配算法将参考图像分为若干图像块[16-18],再求取匹配图像内预期相似度最高的图像块,生成深度图。YANG等[19]提出一种基于自适应指数加权移动平均滤波器和简单线性迭代聚类分割算法的高效局部匹配方法。这种方法对弱纹理区域与亮度变化具有鲁棒性,能够以更低的时间代价获得更好的匹配结果。赵芸等[20]提出一种改进的基于跨尺度代价聚合的立体匹配方法。对不同下采样层的代价卷使用不同的代价聚合方法,极大地减少了计算耗时。桑苗苗等[21]提出一种基于Patch match的半全局双目立体匹配算法,在路径代价计算过程中使用空间传播机制,大幅提高了半全局算法的计算效率。王阳平等[22]提出一种结合加速鲁棒特征的半全局立体匹配算法。能有效解决弱纹理和视差不连续区域中的条纹和噪声,提高了立体匹配精度。HAQ等[23]提出一种基于改进直方图均衡化的空间梯度模型匹配算法,该方法在提高峰值信噪比和降低坏像素百分比方面有显著的效果。

局部匹配法带来了效率上的提升[24],但仅通过在图像原始分辨率下计算左右图像的像素差异生成视差图,无法捕捉不同方向上图像的细微差异,在处理图像中的弱纹理、遮挡区域时效果强差人意。基于上述问题,本文提出融合多尺度信息的各向异性立体匹配算法(Anisotropic Stereo Matching with multi-Scale Information,ASMSI),将梯度与相角信息融合到匹配代价函数中以解决弱纹理区域的孔洞问题,并结合高斯金字塔,分别计算不同尺度下的匹配代价,对得出的代价值进行聚合,从而减小误匹配概率,最终得到更精确的视差值。

1 算法描述

各向异性的立体匹配算法流程如图1所示。将原始图像经高斯下采样得到不同尺度大小的图像,计算每个尺度下的匹配代价值,并对其进行十字交叉域代价聚合(Cross-Based Cost Aggregation,CBCA),得出融合多尺度信息的各向异性匹配代价,后经“赢家通吃”策略(Winner-Take-All,WTA)生成初始视差图,最后对初始视差进行精修与后处理得到理想视差图。

图1 算法流程图

1.1 各向异性的匹配代价函数

匹配代价计算就是衡量两幅图像中的同名点在不同拍摄角度下的相似程度,传统基于灰度绝对差(Absolute Difference,AD)[25]的代价计算方法能够快速准确地检测出左右两幅图像中的灰度或色彩差异,但易受光线和噪声影响且在处理弱纹理区域时容易失效。由于图像梯度信息对光照不敏感且对图像噪声鲁棒,在处理深度不连续区域时生成的视差效果优异。因此选择将基于梯度算子的各向异性匹配代价函数应用到立体匹配中。为抓住各匹配方向上的细微差异,本文提出一种结合图像色彩信息、梯度和相角信息的各向异性匹配代价函数。通过引入相角信息可以在相同梯度方向上得到不同的匹配代价。

在被测图像I中,将梯度定义为图像沿X轴方向和Y轴方向上的一阶偏导数,表达式为:

(1)

沿梯度方向上的幅值和相角定义为:

(2)

(3)

式中:m为沿梯度方向上的幅值,表示图像中灰度的变化率;φ为梯度G的相角,用于衡量灰度的变化方向。当灰度的变化率最大时,相角φ提供梯度变化的方向信息,且其对光照不均具有良好的稳定性。虽然输入图像的梯度幅值m会出现对Gx、Gy的大小变化较为敏感的增益失真,但相角φ不会改变,也不会出现对梯度方向变化敏感的偏置失真。因此,单独考虑梯度幅度和相位角来控制算法对噪声的敏感性更为有利。

通过结合灰度值差、幅值和相角通过加权线性组合作为匹配代价函数来控制算法对噪声的敏感性。

(4)

式中:Ic(i)、mc(i)、φc(i)分别表示右相机图像中的像素坐标、梯度幅值、梯度相角;Ic(i,l)、mc(i,l)、φc(i,l)分别表示左相机图像中像素坐标、梯度幅值、梯度相角;下标c为RGB图像中的3个颜色分量;C(i,l)为当视差为i时的匹配代价;α,β,ζ分别为颜色差异、幅值和相角的平衡因子,通常情况下α+β+ζ=1;τc为颜色的截断值。每个候选视差对应一个匹配代价,将这些代价相加构成全局匹配代价C。

1.2 融合多尺度信息十字交叉域代价聚合

目前主流的匹配代价聚合方法仅适用于图像的原始分辨率,在高纹理区域可以获得质量较好的视差值,但是在低纹理和遮挡区域会由于平滑区域的不唯一性而造成误匹配。通过模拟匹配搜索时人类视觉系统由粗到精(Course-to-Fine)的过程,通过如图2所示的高斯图像金字塔下采样获得不同尺度S下的图像。经采样后的图像分辨率D(WS,HS)定义为:

图2 高斯金字塔结构

(5)

式中:S=0,1,2,...,n,(WS,HS)为尺度S下的图像分辨率,(Wo,Ho)为图像的原始分辨率。不同尺度构成的图像金字塔最上层为图像的整体细节信息,其它层分别为边缘等鲁棒性信息。

将各尺度下的匹配代价值进行十字交叉域代价聚合。CBCA由构造十字交叉臂和代价聚合两个步骤组成。

(1)构造十字交叉臂 以选定像素p为中心向其水平和竖直方向延伸,形成十字臂,颜色(灰度)差异及长度范围是两个限制臂长的主要因素。以左臂延伸为例构造十字臂时,其颜色差异定义为:

(6)

式中:Dc(p,pl)=maxi=R,G,B|Ii(p)-Ii(pl)|即为3个颜色分量差别的最大值,p为所构建十字交叉域的中心像素,pl为p所在像素坐标系水平轴左侧的某一像素,τ1为设定阈值,不仅限制p和pl之间的颜色差异要小于阈值τ1,还限制了pl和其左侧前一像素pl+(1,0)的差异也要小于τ1,这样臂的延伸就不会超过边缘像素。

Ds(p,pl)=|p-pl|,Ds(p,pl)

(7)

式(7)定义了构造十字臂的空间长度,Ds(p,pl)为p和pl的空间长度,L1为设定的臂长阈值。为了使弱纹理区域能包含更多像素,可使用较大的臂长阈值L1,同时设定一个更严格的颜色阈值τ2(τ2<τ1),则有:

Dc(p,pl)<τ2,当L2

(8)

右臂、下臂、上臂的构造规则与左臂相一致。

当确定所有像素的十字交叉区域后,就可以构造中心像素p的支持区域,构造方法如图3所示。像素p的支持区域是合并其垂直臂上的所有像素的水平臂。

图3 构造十字交叉区域

(2)代价聚合 当像素p的支持区域构造好后,就可以对p进行两步法(Two-Pass)代价聚合,如图4所示。

图4 两步法代价聚合

步骤1对所有像素,将其水平臂上的像素代价值相加,存储为临时值Ct:

Ct=∑Cpl+∑Cpr+Cp。

(9)

式中:Cp为十字交叉域竖直方向上某像素点p处的匹配代价,Cpl为p所在水平臂左侧某像素的匹配代价值,∑Cpl为左臂上所有像素的代价值之和,Cpr为p所在水平臂右侧某像素的匹配代价值,∑Cpr为右臂上所有像素的代价值之和。

步骤2对支持域内的所有像素,将其竖直臂上在第一步存储的临时值相加,得到该像素最终的聚合代价值Cf,为了使聚合值范围位于一个较小的可控范围内,最终的聚合代价值需要除以支持区的总像素数N。

(10)

最后将不同尺度下的匹配代价融合得到多尺度十字交叉域代价聚合后的新匹配代价值Cas:

(11)

通过上述步骤可以得到不同的像素支持区域,使聚合到像素的代价值来源不同,这样的改进可以减少视差非连续区域的误匹配。

1.3 视差精修与后处理

由于立体匹配的左右图像存在遮挡和不连续区域,导致得到的包含该区域的视差图效果不能尽如人意。所以常采用视差精修步骤来提高视差图的准确性。本文采用左右一致性(Left-Right Check,LRC)检查进行遮挡检测。在该方法中,需计算通过设置左、右视图为目标获得的两个视差图。通过左视图的视差找到右视图中对应的匹配点,并判断两点视差是否相等,若不相等,则左视差图中的对应点被标记为遮挡。然后,遮挡像素被位于同一扫描线上的最近的未遮挡像素的最小视差值代替。这种遮挡填充在视差图中可能会产生条纹状伪影,为了消除这些伪影并保留边缘信息,采用了以双边滤波为权重的加权中值滤波器。双边滤波器权重表示为:

(12)

当选取窗口Ri大小为(2r+1)×(2r+1)时,其包含的像素个数为n,计算窗口Ri中一对序列{I(i),wi,j}的像素值和权重,然后依次对权重进行排序,直到累计权重大于加权值的一半,此时,相应的I(i)是局部窗口中心点的新像素值,表示为:

i*=minl;

s.t.

(13)

式中i*为滤波后的视差值。

2 实验结果及分析

文中所提算法通过C++语言在Visual Studio 2017编译环境下结合OpenCV4.2库实现。所用计算机采用64位Windows 10操作系统,Intel core i7处理器,8 G运行内存。

如1.1节所述,式(4)匹配代价计算函数的系数选择会影响匹配误差,实验选取参数ζ的步长为0.01来改变ζ的大小,并选取匹配误差最小的ζ作为最优值,如图5所示为不同ζ取值下的匹配误差。从图中可以看出,ζ的最优取值应为0.03,其他实验参数取值情况为:α=0.8,β=0.17,τc=7/255,σs=9,σc=0.1,ki=20。

图5 不同ζ取值下的匹配误差

为验证所提ASMSI算法在非遮挡及弱纹理、无纹理区域的匹配效果,对比了本文算法及块匹配(Block Matching,BM)、AD-Census(absolute differences-census)、半全局立体匹配(Semiglobal Matching,SGM)、大尺度高效匹配(Efficient Large Scale stereo matching,ELAS)4种主流立体匹配算法在Middlebury数据集的测试图片下生成视差图的效果及图中非遮挡区域、深度不连续区域及全部区域的匹配误差,在此基础上进一步对比了各算法的运行时间。

图6中第1行为5种算法在测试图片“Cloth3”下的视差图结果,第2行~第6行分别对应测试图片“Cones”、“Reindeer”、“Wood2”、“Teddy”与“Barn2”下的视差图表现。表1~表3分别列出了本文所提算法与4种对比测试算法在图像中不同区域误匹配率的比较结果,其中每列的最小值以粗体显示。

表1 非遮挡区域下的误匹配像素百分比 %

图6 立体匹配算法视差图

在实验中,当参考算法获得的匹配结果与真实值(ground truth)相差超过一个像素时,将其标记为误匹配。其中表1数据为非遮挡区域中的像素误匹配率,表2数据为深度不连续区域中的像素误匹配率,表3数据为总误匹配率,平均匹配误差栏表示算法的整体准确性和广泛适用性。

表2 深度不连续区域下的误匹配像素百分比 %

表3 全部区域下的误匹配像素百分比 %

从表1中数据可以看出,本文所提ASMSI算法在解决弱纹理图像的非遮挡区域匹配问题时效果优秀,在全部6组数据集中均得到了最低的误匹配率,与其他匹配算法相比有着较大幅度的领先。同时,如表2所示,对于视差不连续区域的匹配误差,所提方法在“Barn2”和“Wood2”上得到了远超其他算法的优异成果。表3数据表明:相较于其他算法,本文算法将全部区域的平均误匹配率降低了5.02%。

在生成视差图效果方面,本文算法引入了图像的梯度信息,将图像的灰度值差、梯度幅值和相角线性结合来控制算法对噪声的敏感性,且融合了图像的多尺度信息,所以生成的视差图更为清晰。如图7a所示,在对比测试图片“Cones”中锥桶的边缘轮廓与竹网细节可发现,所提ASMSI算法获得的边缘视差完整、清晰。如图7b所示,在“Reindeer”中,仅本文算法还原出了图像中窗帘与鹿角的轮廓信息。这是因为代价匹配函数的各向异性促进了联合区域的感知能力。如图7c所示,从“Wood”视差图对比可以看出,本文提出的算法在弱纹理中的精度较高,图像背景没有白噪声,与传统的AD-Census算法相比,本文算法在图像的边缘和不连续性方面具有更好的效果。另外,算法在“Cloth3”和“Reindeer”图像中的误差较高,生成的视差图中出现了误匹配,如图7d所示,这是由于测试图像对的亮度差异较大且存在大面积的遮挡区域所造成的,ASMSI算法主要解决弱纹理区域的匹配精度问题,并未针对遮挡区域进行优化,所以在处理存在大面积遮挡区域及亮度差异较大图像时会出现误匹配,但由视差图对比可以看出,本文算法在生成包含该区域视差时误差依旧处于较低水平。最重要的,本文所提算法在全部测试图像的平均匹配率均取得了最低值。总体而言,ASMSI算法能够有效提高弱纹理区域的匹配精度,在图像边缘也有较好的匹配效果。

图7 视差图细节对比

如表4所示为各匹配算法运行时间结果,从表中可以看出BM算法拥有最快的运行效率,但其生成的视差图往往伴随着大量的噪声与误匹配,因此只适用于初始视差估计,并不能应用至精确视差求解过程中。在其他4种匹配算法的运行时间对比中,本文所提ASMSI算法在全部6组测试中用时最短,可以证明本文算法能够在保证匹配准确性的同时拥有较高的效率。

表4 算法运行时间对比 s

3 结束语

本文提出融合多尺度信息的各项异性立体匹配,算法引入梯度和相角信息构造各向异性匹配代价函数,采用融合多尺度信息的十字交叉域匹配代价聚合获得最终的匹配代价值,进一步经WTA策略生成初始视差图,在此基础上进行左右一致性检测化及以双边滤波为权重的加权中值滤波得到精修后的视差图。实验结果表明,ASMSI算法可以有效提高弱纹理区域的匹配精度,在图像边缘也有较好的匹配效果。但当图像对之间亮度差异较大且存在大面积遮挡时,算法的性能会受到影响,后续工作将进一步研究并解决该问题。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!