基于图像分割的稠密立体匹配算法 下载: 1086次
1 引言
立体匹配是计算机视觉中的热门研究方向,广泛应用于机器人导航、虚拟现实、三维重建等领域[1]。Scharstein等[2]将立体匹配算法分为4个步骤:1)匹配代价计算;2)代价聚合;3)视差计算或优化;4)视差细化(视差后处理)。根据是否采用代价聚合步骤,可以将传统的立体匹配算法分为全局、半全局和局部立体匹配算法。全局立体匹配算法通常跳过匹配代价聚合步骤,直接进行视差的计算和优化,如图割法[3]、置信度传播法[4]等。全局立体匹配算法虽然精度高,但是计算效率低。半全局立体匹配算法中的动态规划算法[5-6]是最为典型的方法,传统动态规划算法的结果会出现扫描线效应。局部立体匹配算法一般利用匹配点的局部信息计算匹配代价,采用代价聚合方法来改善匹配代价,然后利用WTA(Winner Take All)算法得到视差图,虽然精度低,但是计算效率高。
近几年,以深度学习为代表的机器学习被用于解决立体匹配问题,并且取得了非常好的效果。机器学习主要是将卷积神经网络(CNN)应用在立体匹配中。基于CNN解决立体匹配问题的方法也大致分为三类[7]:1)利用CNN学习匹配代价,然后利用传统方法进行视差后处理,例如MC-CNN(Matching Cost-Convolutional Neural Network)及其改进网络[8];2)从端到端训练CNN,直接从图像对估计视差,例如DispNets[9]网络;3)利用多个网络得到视差图,例如CRL(Cascade Residual Learning)[10]网络,由DisFullNet和DisResNet两个网络组成。基于CNN网络的方法取得了非常好的效果,但是也具有一定的局限性:首先遮挡区域的像素点不能用来训练,这意味着很难在这些区域获得可靠的视差估计[7];其次,训练神经网络需要大量的数据,在某些特定场合,无法得到训练网络所需要的数据,这使得基于CNN的方法受到限制。
传统方法不需要训练数据,且已取得了较好的结果。Rhemann等[11]将图像引导滤波器(GF)应用在立体匹配中,不仅能够减轻视差图边缘模糊现象,而且计算效率高。Yang[12]将最小生成树(MST)引入匹配代价聚合,不仅速度快,而且精度高,但是在遮挡处容易误匹配。Zhang等[13]提出跨尺度代价聚合模型,优化了GF、MST等算法的结果,但是对遮挡处的误匹配问题优化效果不佳。刘艳等[14]提出结合局部二进制表示和超像素分割求精的方法,改善了弱纹理区域的阶梯效应,但是在平均误匹配率较高。龚文彪等[15]利用mean shift分割算法,分割出不同深度区域的匹配点,根据匹配点所在的深度区域进行匹配代价重定义,在遮挡处的效果较好,但是在其他区域的误匹配率较高。为降低所有区域的误匹配率,本文提出基于图像分割的稠密立体匹配方法。
2 基于图像分割的立体匹配算法
所提算法的流程分为三个部分:1)匹配代价融合算法和SLIC(Simple Liner Iterative Cluster)[16]算法;2)匹配代价聚合方法,包括基于视差图和超像素更新匹配代价和GF算法;3)视差后处理方法,包括左右一致性检验(LRC)、孔洞填充和十字交叉自适应窗口加权中值滤波。匹配代价聚合、视差后处理以及整个算法的流程图如
图 1. 算法流程图。(a)匹配代价聚合;(b)视差后处理;(c)综合流程图
Fig. 1. Flow chart of algorithm. (a) Matching cost aggregation; (b) disparity post-processing; (c) integrated flow chart
2.1 匹配代价计算
匹配代价计算基于立体校正过的图像,即同一物体在左右两幅图像的同一行。匹配代价计算就是计算左右图像中各个点之间的相似性程度。分别计算图像中每点的灰度-梯度算法[11]和零均值归一化互相关(ZNCC)算法的匹配代价。灰度-梯度算法的输入为RGB图像,而ZNCC算法的输入是由RGB图像转换成的灰度图像。
灰度-梯度算法的计算公式为
式中:
ZNCC算法的计算公式为
式中:
一般在物体边缘处容易发生遮挡,遮挡处容易发生误匹配。遮挡就是在相机的公共视场内,物体在左图中可以看到而在右图中看不到,或物体在左图中看不到而在右图中能看到。物体边缘处一般为图像边缘处。图像边缘和非边缘处具有不同的特征,因此在边缘和非边缘处对两种匹配代价计算方法分配不同的权值。由于灰度-梯度算法对灰度变化敏感,而物体边缘处一般灰度发生变化较大,因此在物体边缘处,给灰度-梯度算法分配的权值较大,给ZNCC算法分配的权值较小。反之,在非边缘区域,ZNCC算法对噪声具有较强的稳健性,因此给ZNCC算法分配的权值较大,给灰度-梯度算法分配的权值较小。
匹配代价计算公式为
式中:
图像的边缘可以利用SLIC超像素分割算法得到。SLIC算法将图像从RGB颜色空间转换到CIE-Lab颜色空间,每个像素的颜色(
式中:
对Tsukuba进行SLIC超像素分割,根据分割结果提取边缘,其结果如
2.2 匹配代价聚合
匹配代价聚合分3个步骤:1)通过视差图更新匹配代价;2)利用超像素更新匹配代价;3)利用GF对匹配代价进行滤波。
图 2. SLIC算法结果。(a) Tsukuba图像;(b)超像素分割图;(c)边缘图像
Fig. 2. Result of SLIC algorithm. (a) Tsukuba image; (b) superpixel segmentation image; (c) edge image
首先利用视差图对匹配代价进行更新,视差图的更新公式为
式中:
利用超像素更新匹配代价,超像素内大多数像素拥有正确的视差值,用这些正确的视差更新超像素内像素的匹配代价。匹配代价更新公式为
式中:
为了解决边缘处的误匹配问题,使用GF对匹配代价进行滤波,GF滤波器定义为
式中:
2.3 视差后处理
完成匹配代价聚合后,使用WTA算法得到视差图。但是视差图上存在许多误匹配点,视差后处理在一定程度上可以消除这些误匹配点。视差后处理包括LRC算法,孔洞填充,十字交叉自适应窗口加权中值滤波和3×3的中值滤波。
LRC算法是检测误匹配点的重要且有效的方法,其主要思想是:当以左图像为参考图时,生成左视差图,反之生成右视差图。左视差图和右视差图中匹配点的视差值相同,视差值不同的点为误匹配点。LRC算法的计算公式为
式中:
通过LRC算法标记出误匹配点,在孔洞填充阶段对误匹配点进行填充。孔洞填充可以看作是一个图像修复问题,经典的图像修复算法[17-19]常利用偏微分方程、纹理合成、结构特征等方法修复图像,虽然能取得很好的结果,但是计算效率低,一般在孔洞填充阶段很少采用。传统的视差图孔洞填充算法是分别寻找误匹配点所在行的左侧和右侧距离误匹配点最近的有效匹配点,用这2个有效匹配点视差值中较小的视差值填充误匹配点,虽然效果一般,但是速度快。为了兼顾视差图修复过程的速度和精度,改进传统的视差图孔洞填充算法过程,不仅在误匹配点所在行寻找有效匹配点,还在误匹配点所在行的上一行和下一行寻找有效匹配点,此时一共有6个有效匹配点视差值,取6个视差值中的最小值填充误匹配点。但当选择同一个视差值作为大量无效点的填充值时,会在视差图上产生条纹效应,如
通过十字交叉自适应窗口加权中值滤波来减弱条纹效应,其效果图如
式中:
图 3. 不同算法所得结果。(a)孔洞填充;(b)十字交叉自适应窗口加权中值滤波
Fig. 3. Results of different algorithms. (a) Hole filling; (b) cross adaptive window weighted median filtering
在支持域内进行加权中值滤波,权值通过RGB颜色值计算[21]:
式中:
求出权值后,再取中值。构造视差直方图:
式中:
将权值按照视差值从小到大的顺序相加,当权值之和大于等于总权值的一半时,此时对应的视差为加权中值滤波的结果,即
式中:
3 实验结果与分析
实验环境为:Windows7 64位系统,Intel(R) Core(TM)i7-6700CPU主频3.4 GHz,4核,8 GB内存。使用Middlebury[22]平台提供的Tsukuba、Venus、Teddy和Cones 4组彩色图像进行测试。利用这4组图像确定算法参数,并与其他算法进行比较。除这4组图像外,再加上平台提供的27组图像,共利用31组图像对所提算法进行测试。
3.1 参数设置
所提算法参数设置如下:灰度-梯度算法和GF的参数采用文献[
11]的参数
首先,确定ZNCC窗口大小
下一步确定
确定
固定
通过实验,最终确定:
图 5. 不同参数对平均误差的影响。(a) N;(b) β和γ;(c) ρ;(d) T
Fig. 5. Influences of parameters on AvgPBM. (a) N; (b) β and γ; (c) ρ; (d) T
3.2 算法对比分析
确定参数之后,在Middlebury提供的Tsukuba、Venus、Teddy和 Cones 4组图像上进行测试,并将所提算法与MST[13]、GF[12]和GA-DP(Gradient Adaptive-Dynamic Programming)[5]算法进行对比,如
图 6. 实验结果。(a)左图像;(b)真实视差图;(c)所提算法结果;(d) MST算法结果;(e) GF算法结果;(f) GA-DP算法结果
Fig. 6. Experimental results. (a) Left image; (b) ground-truth disparity; (c) result of proposed algorithm; (d) result of MST algorithm; (e) result of GF algorithm; (f) result of GA-DP algorithm
所提算法、MST、GF和GA-DP算法的误匹配率如
表 1. 不同算法下的平均误匹配率
Table 1. AvgPBM for different algorithms%
|
为全面地测试算法性能,对Middlebury提供的31组图像上进行测试,测试结果如
表 2. 不同算法下n-occ的平均误匹配率
Table 2. AvgPBM for different algorithms on n-occ region%
|
4 结论
提出一种基于图像分割的稠密立体匹配算法。首先提出基于超像素边缘的匹配代价融合计算方法,为后面迭代提供良好的初始视差图。经过基于视差图和超像素的匹配代价更新、GF滤波和视差后处理循环迭代后,视差图的误匹配率有所降低。实验结果表明所提算法具有较低的平均误匹配率和较低的遮挡处误匹配率,但是在无纹理和弱纹理区域的匹配精度有待提高。
后续研究方向包括:1)继续研究匹配代价计算方法的融合;2)研究图像分割算法与立体匹配算法相结合的方法;3)对于无纹理区域,所提算法的错误率较高,后续工作着重解决无纹理区域的误匹配问题。
[1] 范海瑞, 杨帆, 潘旭冉, 等. 一种改进Census变换与梯度融合的立体匹配算法[J]. 光学学报, 2018, 38(2): 0215006.
范海瑞, 杨帆, 潘旭冉, 等. 一种改进Census变换与梯度融合的立体匹配算法[J]. 光学学报, 2018, 38(2): 0215006.
[4] 李晶皎, 马利, 王爱侠, 等. 基于改进Patchmatch及切片采样粒子置信度传播的立体匹配算法[J]. 东北大学学报(自然科学版), 2016, 37(5): 609-613.
李晶皎, 马利, 王爱侠, 等. 基于改进Patchmatch及切片采样粒子置信度传播的立体匹配算法[J]. 东北大学学报(自然科学版), 2016, 37(5): 609-613.
[5] 祝世平, 李政. 基于改进梯度和自适应窗口的立体匹配算法[J]. 光学学报, 2015, 35(1): 0110003.
祝世平, 李政. 基于改进梯度和自适应窗口的立体匹配算法[J]. 光学学报, 2015, 35(1): 0110003.
[6] 祝世平, 闫利那, 李政. 基于改进Census变换和动态规划的立体匹配算法[J]. 光学学报, 2016, 36(4): 0415001.
祝世平, 闫利那, 李政. 基于改进Census变换和动态规划的立体匹配算法[J]. 光学学报, 2016, 36(4): 0415001.
[7] Liang ZF, Feng YL, Guo YL, et al. Learning deep correspondence through prior and posterior feature constancy[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2017: 2403- 2411.
Liang ZF, Feng YL, Guo YL, et al. Learning deep correspondence through prior and posterior feature constancy[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2017: 2403- 2411.
[8] 肖进胜, 田红, 邹文涛, 等. 基于深度卷积神经网络的双目立体视觉匹配算法[J]. 光学学报, 2018, 38(8): 0815017.
肖进胜, 田红, 邹文涛, 等. 基于深度卷积神经网络的双目立体视觉匹配算法[J]. 光学学报, 2018, 38(8): 0815017.
[9] MayerN, IlgE, HäusserP, et al. A large dataset to train convolutional networks for disparity, optical flow, and scene flow estimation[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2016: 4040- 4048.
MayerN, IlgE, HäusserP, et al. A large dataset to train convolutional networks for disparity, optical flow, and scene flow estimation[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2016: 4040- 4048.
[10] Pang JH, Sun WX, Ren JS, et al. Cascade residual learning: a two-stage convolutional neural network for stereo matching[C]. IEEE International Conference on Computer Vision Workshops, 2017: 878- 886.
Pang JH, Sun WX, Ren JS, et al. Cascade residual learning: a two-stage convolutional neural network for stereo matching[C]. IEEE International Conference on Computer Vision Workshops, 2017: 878- 886.
[12] Yang QX. A non-local cost aggregation method for stereo matching[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2012: 1402- 1409.
Yang QX. A non-local cost aggregation method for stereo matching[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2012: 1402- 1409.
[13] ZhangK, Fang YQ, Min DB, et al. Cross-scale cost aggregation for stereo matching[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2014: 1590- 1597.
ZhangK, Fang YQ, Min DB, et al. Cross-scale cost aggregation for stereo matching[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2014: 1590- 1597.
[14] 刘艳, 李庆武, 霍冠英, 等. 结合局部二进制表示和超像素分割求精的立体匹配[J]. 光学学报, 2018, 38(6): 0615003.
刘艳, 李庆武, 霍冠英, 等. 结合局部二进制表示和超像素分割求精的立体匹配[J]. 光学学报, 2018, 38(6): 0615003.
[15] 龚文彪, 顾国华, 钱惟贤, 等. 基于图像分割和自适应支撑权重的立体匹配算法[J]. 光学学报, 2015, 35(s2): s210002.
龚文彪, 顾国华, 钱惟贤, 等. 基于图像分割和自适应支撑权重的立体匹配算法[J]. 光学学报, 2015, 35(s2): s210002.
[18] GuoH, OnoN, SagayamaS. A structure-synthesis image inpainting algorithm based on morphological erosion operation[C]. Congress on Image and Signal Processing, 2008: 530- 535.
GuoH, OnoN, SagayamaS. A structure-synthesis image inpainting algorithm based on morphological erosion operation[C]. Congress on Image and Signal Processing, 2008: 530- 535.
[20] MeiX, SunX, Zhou MC, et al. On building an accurate stereo matching system on graphics hardware[C]. IEEE International Conference on Computer Vision Workshops, 2011: 467- 474.
MeiX, SunX, Zhou MC, et al. On building an accurate stereo matching system on graphics hardware[C]. IEEE International Conference on Computer Vision Workshops, 2011: 467- 474.
马瑞浩, 朱枫, 吴清潇, 鲁荣荣, 魏景阳. 基于图像分割的稠密立体匹配算法[J]. 光学学报, 2019, 39(3): 0315001. Ruihao Ma, Feng Zhu, Qingxiao Wu, Rongrong Lu, Jingyang Wei. Dense Stereo Matching Algorithm Based on Image Segmentation[J]. Acta Optica Sinica, 2019, 39(3): 0315001.