近年来随着计算机视觉领域的迅猛发展, 基于视觉的三维重建已经成为一个非常热门的方向, 双目视觉作为其中一种重要的分支也越来越得到大家的关注. 立体匹配是从双目视觉到三维重建中的一个非常关键的步骤, 对重建效果影响巨大. 根据Sharstein等[1]提出的双目立体匹配理论框架, 立体匹配主要分为以下4个步骤: 匹配代价计算、匹配代价聚合、视差计算以及视差精化. 当前主要的立体匹配算法又可以根据在匹配代价计算后是否采用代价聚合分为全局和局部立体匹配算法. 全局立体匹配算法的核心思路是在计算匹配代价后, 构建一个全局的能量函数, 通过全局优化理论方法最小化能量函数估计视差. 全局立体匹配算法匹配精度高, 但其运行速度慢且算法复杂度较高. 局部立体匹配算法充分利用像素点周围的局部信息, 通过代价聚合来估计视差, 得到视差的局部最优解. 相比于全局立体匹配算法, 精度稍低, 但运行速度快且算法复杂度较低.
现有的局部立体匹配算法主要关注于改进代价计算和代价聚合两部分来提高算法精度. 常见的匹配代价计算方法有基于像素的匹配代价如灰度绝对值(Adsolute Differences, AD)、灰度差平方(Squared Differences, SD)等; 基于窗口的匹配代价如灰度差绝对值和(Sum of Absolute Difference, SAD)、归一化互相关(Normalized Cross Correlation, NCC)等; 以及基于非参数变换[2]的匹配代价如Census、Rank等. 一般来说, 基于像素和窗口的代价计算方法对噪声和光照变化非常敏感, Census变换对光照变化不敏感, 但在重复纹理区域效果较差, 因此融合多种代价计算方法也成为一种常用的手段. Hosni等将SAD和梯度信息结合作为性的代价计算方法; Mei等[3]结合灰度差绝对值和Census变换进行代价计算, 在弱纹理区域和重复纹理结果区域都取得了很好的结果; Zhu等[4]提出将AD、梯度信息和Census变换结合, 提高了匹配精度.
代价聚合的方法主要分为自适应窗口和自适应权重的方法. Yoon等[5]首先提出使用双边滤波器进行代价聚合, 提出了自适应权重的算法, 该算法的主要思想视为匹配窗口中每一个像素赋予一个权重, 而权重通过其到窗口中心点的颜色差和距离得到, 但算法复杂度较高, 且运行速度较慢. Hosni等[6]提出使用引导滤波替代双边滤波进行代价聚合, 该算法整个计算过程都是线性的, 计算效率大幅提高, 在保持运行速度的情况下具有良好的匹配精度. Zhu等[7]优化Census变换策略, 并讲动态规划引入到代价聚合中, 有效的提升了代价聚合的效率.
为在保持运行速度的前提下, 提高视差精度, 本文提出了一种改进的基于跨尺度引导滤波的立体匹配算法. 首先融合SAD和改进的Census变换两种代价计算方法, 然后采用基于跨尺度的引导滤波进行代价聚合, 在进行视差计算时, 并没有采用常用的赢者通吃(Winner-Take-All, WTA)方法, 而是通过制定一个判断准则判断图像中每一个像素点的最小聚合代价对应的视差值是否可靠, 当判断为视差不可靠时, 对像素点构建自适应十字交叉窗口, 并基于自适应窗口修正该像素点对应的视差值, 最后进行视差精化得到最终的视差图. 实验表明, 相比于当前的局部立体匹配算法, 本文所提出的算法可以获得更高精度的视差图.
1 引导滤波由He等[8]提出的引导滤波算法, 是一种能够实现边缘保留特性的滤波方法.
设I为引导图像, p为待滤波图像, q为滤波后图像, 引导滤波基于如下假设: 在以各个像素为中心的窗口
${q_i} = {a_k}{I_i} + {b_k},\forall i \in {\omega _k}$ | (1) |
${q_i} = {p_i} - {n_i},\forall i \in {\omega _k}$ | (2) |
式(1)中,
在窗口
${{E}}\left( {{a_k},{b_k}} \right) = \mathop \sum \limits_{i \in {\omega _k}} \left[ {{{\left( {{a_k}{I_i} + {b_k} - {p_i}} \right)}^2} + \varepsilon a_k^2} \right]$ | (3) |
式(3)中,
式(3)的解为:
${a_k} = \dfrac{{\dfrac{1}{{\left| \omega \right|}}\displaystyle\mathop \sum \nolimits_{i \in {\omega _k}} {I_i}{p_i} - {\mu _k}{p_k}}}{{\sigma _k^2 + \varepsilon }}$ | (4) |
${b_k} = {p_k} - {a_k}{\mu _k}$ | (5) |
式(4)、(5)中,
本文算法由代价计算、跨尺度引导图滤波以及视差计算三部分组成. 核心算法流程如图1所示. 首先对原始图像进行降采样, 得到多尺度图像, 并对每一尺度图像对计算其匹配代价, 构建多尺度原始代价空间; 然后基于引导滤波对多尺度原始代价空间进行代价聚合, 并加入正则式项, 优化相邻尺度的一致性问题; 最后以处理后的代价空间为基础计算视差, 根据视差判断准则, 对不可靠视差进行优化.
2.1 代价计算
代价计算的目的是量化左右图像对应像素之间的相似程度, 在设计代价计算方法时面对的主要问题是像素级的相似性判断对光照变化、噪声等非常敏感, 非常容易误匹配. 一般的计算方法有SAD、Census和归一化互相关等, 同时多种代价计算方法融合也是很常用的方法. 本文采用的基于颜色通道的SAD和census融合的代价计算方法.
假设左图中的一个像素点为
${C_{AD}}\left( {{p_i},d} \right) = \frac{1}{3}\mathop \sum \limits_{c \in \left[ {r,g,b} \right]} I_l^c\left( {{\omega _i}} \right) - I_r^c\left( {{\omega _i}} \right)$ | (6) |
${\rm{I}}\left( {{\omega _i}} \right) = \frac{1}{N}\mathop \sum \limits_{j \in {w_i}} {p_j}$ | (7) |
式(6)、(7)中
在计算
${C_{\rm{census}}}\left( {{p_i},d} \right) = Ham\left( {ce{n_l}\left( {{p_i}} \right),ce{n_r}\left( {{p_i}} \right)} \right)$ | (8) |
SAD-census联合匹配代价的定义为:
${{C}}\left( {{p_i},d} \right) = \rho \left( {{C_{\rm{census}}}\left( {{p_l},d} \right),{\lambda _{\rm{census}}}} \right) + \rho \left( {{C_{AD}}\left( {{p_l},d} \right),{\lambda _{AD}}} \right)$ | (9) |
其中,
$\rho \left( {C,\lambda } \right) = 1 - {\rm{exp}}\left( { - \frac{C}{\lambda }} \right)$ | (10) |
其中,
传统的匹配代价聚合方法主要考虑原始图像, 即在最细的尺度进行研究. 其聚合代价可以视为一个加权最小二乘问题[9], 即
$\tilde C\left( {i,d} \right) = {\rm{argmin}}{_z}\frac{1}{{{Z_i}}}\mathop \sum \limits_{j \in {\omega _i}} K\left( {i,j} \right)z - C{\left( {j,d} \right)^2}$ | (11) |
式(11)中
为了融合多尺度的信息, 充分利用粗尺度信息提高弱纹理和无纹理区域的匹配精度, Zhang等[10]通过对图像下采样获取多尺度信息, 提出了跨尺度模型来聚合多尺度匹配代价, 在优化目标中添加广义L2正则化项, 使匹配代价在相邻尺度上具有一致性, 即:
$ \begin{aligned} \tilde C\left( {{i^s},{d^s}} \right) &= {\rm{argmin}}{_{{z^s}_{s = 0}^s}} \left( \mathop \sum \limits_{s = 0}^S \frac{1}{{Z_{{i^s}}^S}}\mathop \sum \limits_{{j^s} \in N_i^s} K\left( {{i^s},{j^s}} \right){z^s}\right.\\ &\left.- {C^s}{{\left( {{j^s},{d^s}} \right)}^2} + \gamma \mathop \sum \limits_{s = 1}^S {z^s} - {z^{s - 1}}^2 \right)\end{aligned} $ | (12) |
式(12)中上标s为下采样尺度空间, S为下采样的最大次数.
代价聚合得到的代价空间, 同时包含了对应像素之间的相似度信息和对应像素邻域之间的相似度信息. 在计算每个像素点的视差值时, 传统算法一般采用赢者通吃(WTA)的策略简单地选择最小匹配代价对应的视差值作为该像素对应的视差值.
然而, 考虑到最小匹配代价对应的视差值不一定等于真实视差值. WTA策略并不是一个好的选择视差的策略. 根据聚合后的代价空间信息, 可以对视差的可靠性进行判断. 一个常用的视差可靠的判断依据[11]如下:
${C_d} = \frac{{{C_{i,1}}}}{{{C_{i,2}}}}$ | (13) |
${C_i} = \left\{ {\begin{array}{*{20}{c}} {{C_{i,1}},{C_d} \le {C_{th}}}\\ {g\left( {C\left( {i,d} \right)} \right),{C_d} > {C_{th}}} \end{array}} \right.$ | (14) |
式(13)、(14)中对于任意像素
对于不可靠的视差值还需要进一步的处理. 一般来说某个区域梯度变化的不规则通常会导致其和噪声具有高相似性, 从而导致引导滤波将其误认噪声. 所以本文采用基于梯度相似性的自适应窗口来处理不可靠视差值, 如图2所示.
从图像左上角开始, 按照从上到下、从左到右的顺序搜索视差不可靠像素点, 对于搜索到的每一个像素点
$h_{i}^{r}=\text{max}\left[ {r}{\mathop{\prod_{{\begin{matrix} j\in \left[ 1,2,3,\cdots, N \right],\\ {{x}_{j}}\in \left[ {{x}_{i}}+1,{{x}_{i}}+r \right],\\ {{y}_{j}}={{y}_{i}} ,\\ r\in \left[ 1,L \right] \\ \end{matrix}}} }}\,g\left( j-1,j \right) \right]$ | (15) |
$g\left( {j - 1,j} \right) = \left\{ {\begin{array}{*{20}{l}} {1,\;\;\dfrac{1}{3}\displaystyle\mathop \sum \limits_{c \in \left[ {r,g,b} \right]} \left| {G_x^c\left( {j - 1} \right) - G_x^c\left( j \right)} \right| \leqslant \partial } \\ {0,\;\;{\rm{other}}} \end{array}} \right.$ | (16) |
式(15)、(16)中, L表示最大臂长;
确定
${H_i} = \left\{ {\left( {x,y} \right)|x \in \left[ {{x_i} - h_i^l,{x_i} + h_i^r} \right],y = {y_i}} \right\}$ | (17) |
${V_i} = \left\{ \left( {x,y} \right)|y \in \left[ {{y_i} - v_i^u,{y_i} + v_i^b} \right]\right\} $ | (18) |
像素点
${U_i} = \bigcup\limits_{j \in {V_i}} {{H_j}} $ | (19) |
由于自适应窗口
$g\left( {C\left( {i,d} \right)} \right) = {\rm{argmin}}\mathop \sum \limits_{j \in {U_i}} {C_{j,l}}$ | (20) |
处理完成后, 将窗口
为验证本文算法的有效性, 在Clion集成开发环境中结合图像处理开源库OpenCV, 使用C++实现了算法. 实验环境为: Ubuntu16.04系统, Intel i7-4720HQ, 内存8 GB. 采用学术界公认的立体匹配算法测试平台Middlebury[12]进行测评. 该网站提供了4组标准色彩立体匹配图以及其对应的真实视差图, 分别为: Tsukuba(384像素×288像素), Venus(434像素×383像素), Teddy(450像素×375像素), Cones(450像素×375像素). 通过将实验结果视差图与真实视差图比较并量化匹配误差, 从而客观地对算法效果进行评价. 其中实验中参数设置如下:
图3中为在Middlebury2006标准立体图像数据集中的实验结果. 图3(a)为各组标准图像对的原始左图像, 图3(b)为各组标准图像对的真实视差图, 图3(c)为单尺度引导滤波算法(GF)[6]的视差图, 图3(d)为跨尺度引导滤波算法(S-GF)[10]的视差图, 图3(e)为本文算法的视差图. 以上几种算法与本文算法相关性较大, 具有很高的可比性. 由对比结果可以看出, 本文算法对4对标准图像对都有一定程度的精度提升.
表1为本文算法与其他局部立体匹配算法的定量结果对比. 其中n-occ为非遮挡区域误匹配像素百分比, disc为深度不连续区域误匹配像素百分比, all是全部区域误匹配像素百分比. 通过它们的均值可以得出4组标准图像对的平均错误率(Average Percent of Bad Pixels, AvgPBM). 从表1数据可以看出, 本文算法同GF算法相比精度提高了0.81个百分比, 同S-GF算法相比提高了0.2个百分点. 本文算法尽管在Tsukuba精度上有所降低, 但在Venus, Teddy和Cones的匹配精度上有了显著提高.
3.2 参数分析参数
从图4、图5可以看出, 对于Venus数据, 误匹配率受参数
为提高视差图精度同时保持较快的运行速度, 本文提出了一种改进的跨尺度引导滤波算法. 首先融合SAD和Census变换两种代价计算方法, 然后采用基于跨尺度的引导滤波进行代价聚合, 在进行视差计算时, 并没有采用常用的赢者通吃(Winner-Take-All, WTA)方法, 而是通过制定一个判断准则判断图像中每一个像素点的最小聚合代价对应的视差值是否可靠, 当判断为视差不可靠时, 对像素点构建基于梯度相似性的自适应窗口, 并基于自适应窗口修正该像素点对应的视差值, 最后进行视差精化得到最终的视差图. 实验结果表明, 通过达到精度和速度的平衡. 在接下来的研究中, 会基于GPU平台重构代码, 实现并行运算进一步提高算法运行速度.
[1] |
Scharstein D, Szeliski R. A taxonomy and evaluation of dense two-frame stereo correspondence algorithms. International Journal of Computer Vision, 2002, 47(1): 7-42. |
[2] |
Zabih R, Woodfill J. Non-parametric local transforms for computing visual correspondence. Proceedings of the third European Conference on Computer Vision (Vol. II). Stockholm, Sweden. 1994. 151–158.
|
[3] |
Mei X, Sun X, Zhou MC, et al. On building an accurate stereo matching system on graphics hardware. Proceedings of 2011 IEEE International Conference on Computer Vision Workshops. Barcelona, Spain. 2011. 467–474.
|
[4] |
Zhu SP, Yan L. Local stereo matching algorithm with efficient matching cost and adaptive guided image filter. The Visual Computer, 2017, 33(9): 1087-1102. DOI:10.1007/s00371-016-1264-6 |
[5] |
Yoon KJ, Kweon IS. Adaptive support-weight approach for correspondence search. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2006, 28(4): 650-656. DOI:10.1109/TPAMI.2006.70 |
[6] |
Hosni A, Rhemann C, Bleyer M, et al. Fast cost-volume filtering for visual correspondence and beyond. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013, 35(2): 504-511. DOI:10.1109/TPAMI.2012.156 |
[7] |
Zhu SP, Yan LN, Li Z. Stereo matching algorithm based on improved Census transform and dynamic programming. Acta Optica Sinica, 2016, 36(4): 0415001. |
[8] |
He KM, Sun J, Tang XO. Guided image filtering. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013, 35(6): 1397-1409. DOI:10.1109/TPAMI.2012.213 |
[9] |
Milanfar P. A tour of modern image filtering: New insights and methods, both practical and theoretical. IEEE Signal Processing Magazine, 2013, 30(1): 106-128. DOI:10.1109/MSP.2011.2179329 |
[10] |
Zhang K, Fang YQ, Min DB, et al. Cross-scale cost aggregation for stereo matching. IEEE Transactions on Circuits and Systems for Video Technology, 2017, 27(5): 965-976. DOI:10.1109/TCSVT.2015.2513663 |
[11] |
Hirschmüller H, Innocent PR, Garibaldi J. Real-time correlation-based stereo vision with reduced border errors. International Journal of Computer Vision, 2002, 47(1–3): 229-246. |
[12] |
Scharstein D, Szeliski R, Hirschmüller H. The middlebury stereo vision page. http://vision.middlebury.edu/stereo/.
|