基于改进Census变换与梯度融合的立体匹配算法 下载: 988次
1 引言
立体匹配是指从两个或多个视点进行像素匹配,并根据视差原理计算视差的过程,广泛应用于产品质量检测、目标识别与跟踪、视频监控等领域。在立体视觉的研究中,立体匹配算法有局部和全局两种类型。Scharstein等[1-2]将立体匹配的过程分为代价计算、代价聚合、视差计算、视差后处理等阶段。常用的匹配代价计算方法包括绝对差值和(SAD)、归一化互相关(NCC)以及基于非参数变换的方法,如Rank变换、Census变换。全局立体匹配算法可被等效为求解能量最小化的算法,如图割法(GC)[3]、动态规划(DP)[4]、置信传播(BP)[5]、遗传算法(GA)[6];局部立体匹配算法采用固定窗口实现代价计算,采用最小生成树(MST)[7]等算法实现代价聚合,算法比较成熟,且具有计算量小、实时性好、容易实现等优点。
Hirschmuller等[8]的研究表明,基于非参数变换的Census变换对光照、噪声等影响因素的抗干扰能力较强;Pollard等[9]在匹配代价模型中融入了图像的梯度代价,可以减弱光照等因素对算法的影响。通过代价计算得到的匹配代价存在很大的噪声,为了减少图像误匹配,常采用盒子滤波器、高斯滤波器进行代价聚合。Yoon等[10]在代价聚合阶段引入双边滤波(BF)算法,能很好地保护图像的边缘特性。Hosni等[11-12]将性能优于BF算法且计算量更小的引导滤波器(GF)用于图像的代价聚合,能更大程度地保留轮廓边缘信息。
本文提出的算法在代价计算阶段,融合了改进的Census代价与梯度代价,以获得初始匹配代价;在代价聚合阶段,为了更好地保留图像的边缘轮廓信息,减弱噪声、光照等因素对匹配代价计算造成的影响,提高视差图的质量,充分利用了图像的粗信息和细信息[13];对待匹配图像进行下采样后得到多尺度图像,然后采用引导滤波算法完成所有尺度图像的代价聚合;在视差计算阶段,采用赢家通吃(WTA)算法计算初始视差;在视差后处理过程中,采用左右一致性检测、中值滤波修正视差图中的遮挡点,去除视差图中由误匹配造成的孤立噪点。
2 算法描述
本算法先将经过双目校正的左右图像对作为输入,然后对图像进行代价计算、代价聚合、视差计算和视差后处理等[2]过程,输出结果为视差图像,具体流程如
2.1 匹配代价计算
代价计算可以量化左右图像对应像素的相似程度,通常受噪声、光照变化等因素的影响。传统Census变换[14-16]依次选取图像中的像素点p,然后以p点为中心建立固定变换窗口,对比窗口内p点和邻域像素点q的灰度值。如果邻域像素的灰度值大于等于中心像素,则对应中心像素位置为1,反之用0表示,可表示为
式中,I(p)、I(q)分别为像素点p、q的灰度值,C
式中,(x,y)为Census变换窗口中心像素的坐标,Scen(x,y)为变换窗口的Census变换码,为位连接运算,w、h分别为窗口的宽度和高度,I(x,y)为(x,y)的灰度值。
根据(2)式得到输入图像对应的Census变换码,求得左右图像的汉明距离[16],可将Census代价定义为
式中,
传统Census变换受限于窗口的中心像素,特别是在复杂环境条件下,受光照等不良因素的影响,中心像素的灰度值会发生突变,引起Census变换码发生变化,极大增加了视差图中对应像素点发生错误匹配的概率。同时,传统Census变换并未利用变换窗口内所有像素点之间的相关信息,当光照条件不理想时,也容易导致误匹配。
为了克服上述问题,将Census变换窗口分成4个重复区域为中心像素块的子区域。选取灰度分布均匀度最小和最大的两个子区域中除窗口中心像素外的像素均值作为中心像素灰度值,图像灰度均匀度可表示为
式中,I(x,y)为(x,y)的像素灰度值,
根据子区域的灰度均匀度值,得到原变换窗口中心像素的像素值为
式中,
分别以变换窗口的中心像素值、所有像素均值和本算法得到的像素灰度值作为中心像素值,得到的Census变换结果如
图 2. 不同算法得到的Census变换窗口。(a)不同的窗口;(b)中心像素值;(c)窗口像素的平均值;(d)本算法
Fig. 2. Census transform windows obtained by different algorithms. (a) Different windows; (b) center pixel value; (c) average value of window pixels; (d) our algorithm
由于梯度信息是图像本身的属性,因此可利用图像的梯度信息衡量两幅不同图像的相似性。为了进一步提高匹配算法对干扰的鲁棒性,在本算法的代价计算中融入了图像梯度属性,可表示为
式中,Cgrad(p,d)为视差值为d时像素点p基于梯度的匹配代价,Il(p)为左图像中像素点p的灰度值,
融合梯度代价与改进的Census代价,并对代价进行归一化处理,得到本算法的匹配代价计算模型为
2.2 代价聚合
代价聚合是在代价计算获得的初始代价空间基础上,对以单个像素为中心的固定窗口内所有像素的初始代价进行加权求和。为了能最大程度上利用图像的细信息和粗信息,并降低弱纹理区域的误匹配率,Zhang等[16]在图像的多尺度空间下采用引导滤波进行代价聚合。为了更好地保留输入图像的边缘轮廓特性,基于引导滤波实现代价聚合。先进行高斯下采样,构建输入图像的高斯金字塔,获得多尺度图像;然后,在每个尺度空间上单独计算匹配聚合代价值,并添加正则项以加强各尺度间的一致性匹配代价运算,最后计算最优解。
引导滤波模型可表示为
式中,k为窗口ωk内的邻域像素,a、b为线性函数的系数,G(p)为输入的引导图,C'(p,d)为输出的代价图。用文献[ 17]中的代价聚合方式,对所有尺度的图像采用引导滤波算法进行代价聚合。引导滤波器的核函数可表示为
式中,i,j为输入图像I的像素索引,
式中,λ为正则化因子,zs-zs-1为相邻尺度空间上对应像素代价值的差,s为尺度空间的序数。λ越大,表明算法对同一像素点在不同尺度空间的一致性约束越强,进一步增大算法对低纹理区域的视差估计、提高算法的性能。
2.3 视差计算
完成图像多尺度空间的代价聚合后,用WTA算法计算初始视差值,可表示为
式中,Rd=
2.4 视差后处理
由于初始视差图中与输入图像的遮挡区域和深度非连续区域对应的区域可能存在错误匹配点,因此,采用左右一致性检测、中值滤波等后处理算法获得更精确的视差图。左右一致性的原理:对于两幅输入图像的视差图,在右输入图像视差图中应该存在一个与左图像视差图对应且满足约束条件的像素点,可表示为
式中,d1为左图中一个像素点p的最优视差值,d2为右图中与p对应像素点p-d1的最优视差值,Td为视差阈值。
将不满足约束条件的像素点p视为异常点,对于异常点p的修正:分别在p点的左方向和右方向选取第一个非异常点,记作pl1、pr1,取pl1和pr1中的最小视差值作为异常点p的修正视差值,可表示为
视差图中可能存在随机噪声及非连续的错误匹配点,因此,还需采用中值滤波对视差图进行平滑处理,最终获得高质量的视差图。
3 实验结果与分析
为了验证本算法的稳健性和实用性,选取Middlebury2.0平台上的标准图像对,用C++编程语言和第三方开源视觉库Opencv编程实现相关算法。采用非遮挡区域误匹配率(No-occluded)和所有区域的误匹配率(All)评价算法的匹配精度[12]。误匹配率M可表示为
式中,dc(x,y)为本算法得到的视差值,dr(x,y)为图像真实的视差值,N为图像非遮挡区域或所有区域的像素点总数。
将视差阈值设为1 pixel,即未经过后处理的视差图中一个像素点与真实视差图中对应像素点之间的差值超过1 pixel时,认为该点为错误匹配点。实验中的参数设置如
3.1 匹配代价计算验证
为充分验证本算法中代价计算的有效性,分别将本算法与传统Census代价(CT)、改进的Census代价(Impro-CT)和梯度代价(GRD)算法[13]进行消融实验。选择Middlebury2.0中的六组标准立体图像对(Baby1,Wood1,Aloe,Monopoly,Plastic,Lampshade2)作为实验数据,获得的所有视差图都没有进行后处理,且都在相同尺度空间下进行基于引导滤波的代价聚合,不同算法的误匹配率如
表 2. 不同代价算法的误匹配率(非遮挡区域)
Table 2. Mismatch rates of different cost algorithms (non-occluded area) unit: %
|
表 3. 不同代价算法的误匹配率(遮挡区域)
Table 3. Mismatch rates of different cost algorithms (occlusion area) unit: %
|
分别采用CT、Impro-CT、GRD与本算法对六组标准立体图像对进行实验,得到的视差图如
图 3. 不同算法得到的视差图。(a)左图像;(b)右图像;(c)真实视差图;(d)CT;(e)Impro-CT;(f)GRD;(g)本算法
Fig. 3. Disparity images obtained by different algorithms. (a) Left image; (b) right image; (c) true disparity image; (d) CT; (e) impro-CT; (f) GRD; (g) our algorithm
3.2 算法性能测试
为验证本算法的稳健性,选取Middlebury2.0中的一组标准立体图像对(Aloe)分别用不同代价算法在不同光照和不同曝光条件下进行对比实验,结果如
图 4. 本算法得到的Aloe视差图。(a)左图像;(b)右图像;(c)真实视差图;(d)多尺度空间下的视差图;(e)最终视差图
Fig. 4. Aloe disparity images obtained by our algorithm. (a) Left image; (b) right image; (c) real disparity image; (d) disparity image in multi-scale space; (e) final disparity image
图 5. 不同算法在不同条件下得到的视差图。(a)左图像;(b)右图像;(c)真实视差图;(d)CT;(e)Impro-CT;(f)GRD;(g)本算法
Fig. 5. Disparity images obtained by different algorithms under different conditions. (a) Left image; (b) right image; (c) ground truth; (d) CT; (e) Impro-CT; (f) GRD; (g) our algorithm
为了验证本算法的实用性,选取三组实际的场景图像进行双目校正后作为输入,图像对中包含大量的弱纹理和深度不连续区域,且存在光照不均匀的问题,如
图 6. 实际场景的视差图。(a)左图像;(b)右图像;(c) 本算法生成的视差图
Fig. 6. Disparity images of the actual scene. (a) Left image; (b) right image; (c) disparity images generated by our algorithm
4 结论
提出了一种改进的立体匹配算法,在代价计算阶段,用支持窗口内灰度分布均匀度最小和最大的两个子区域中除窗口中心像素外的像素均值作为Census变换的参考值;引入图像的梯度信息,将梯度代价与Census代价进行融合,得到初始的匹配代价,降低了失真对代价计算的干扰,提高了算法的匹配精度;在图像的多尺度空间下分别进行基于引导滤波的代价聚合,充分利用了图像的粗信息和细信息,有效降低了图像的误匹配率。实验结果表明,本算法在Middlebury2.0评估测试平台上的平均误匹配率为5.11%,且具有很好的稳健性和实用性。
[1] Scharstein D, Szeliski R. A taxonomy and evaluation of dense two-frame stereo correspondence algorithms[J]. International Journal of Computer Vision, 2002, 47(1/2/3): 7-42.
[2] 程子怡, 卢荣胜, 毛翠丽. 光亮表面双目立体视觉三维形貌测量方法[J]. 激光与光电子学进展, 2020, 57(7): 071202.
[3] KolmogorovV, ZabihR. Computing visual correspondence with occlusions using graph cuts[C]∥Proceedings Eighth IEEE International Conference on Computer Vision, July 7-14, 2001, Vancouver, BC, Canada. New York: IEEE, 2001: 508- 515.
[4] VekslerO. Stereo correspondence by dynamic programming on a tree[C]∥2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, June 20-25, 2005, San Diego, CA, USA. New York: IEEE, 2005: 384- 390.
[6] Holland J H. Genetic algorithms[J]. American Scientist, 1992, 267(1): 66-72.
[7] Yang QX. A non-local cost aggregation method for stereo matching[C]∥2012 IEEE Conference on Computer Vision and Pattern Recognition, June 16-21, 2012, Providence, RI, USA. New York: IEEE, 2012: 1402- 1409.
[8] Hirschmuller H, Scharstein D. Evaluation of stereo matching costs on images with radiometric differences[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2009, 31(9): 1582-1599.
[9] Pollard S B, Mayhew J E, Frisby J P. PMF: a stereo correspondence algorithm using a disparity gradient limit[J]. Perception, 1985, 14(4): 449-470.
[10] Yoon K J, Kweon I S. Adaptive support-weight approach for correspondence search[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2006, 28(4): 650-656.
[12] 孔令寅, 朱江平, 应三丛. 基于引导图像和自适应支持域的立体匹配[J]. 光学学报, 2020, 40(9): 0915001.
[13] 马瑞浩, 朱枫, 吴清潇, 等. 基于图像分割的稠密立体匹配算法[J]. 光学学报, 2019, 39(3): 0315001.
[14] SteinF. Efficient computation of optical flow using the census transform[M] ∥Rasmussen C E, Bülthoff H H, Schölkopf B, et al. Pattern Recognition. DAGM 2004. Lecture Notes in Computer Science. Cham: Springer, 2004, 3175: 79- 86.
[15] 周旺尉, 金文光. 一种新颖的自适应权重Census变换立体匹配算法[J]. 计算机工程与应用, 2016, 52(16): 192-197, 215.
Zhou W W, Jin W G. Novel stereo matching algorithm for adaptive weight Census transform[J]. Computer Engineering and Applications, 2016, 52(16): 192-197, 215.
[16] ZhangK, Fang YQ, Min DB, et al. Cross-scale cost aggregation for stereo matching[EB/OL]. [2020-06-18].https: ∥arxiv.org/abs/1403. 0316.
[17] Min DB, Lu JB, Do MN. A revisit to cost aggregation in stereo matching: how far can we reduce its computational redundancy?[C]∥2011 International Conference on Computer Vision, November 6-13, 2011, Barcelona, Spain. New York: IEEE, 2011: 1567- 1574.
萧红, 田川, 张毅, 魏博, 康家旗. 基于改进Census变换与梯度融合的立体匹配算法[J]. 激光与光电子学进展, 2021, 58(2): 0215008. Hong Xiao, Chuan Tian, Yi Zhang, Bo Wei, Jiaqi Kang. Stereo Matching Algorithm Based on Improved Census Transform and Gradient Fusion[J]. Laser & Optoelectronics Progress, 2021, 58(2): 0215008.