【理论恒叨】【立体匹配系列】经典AD-Census: (1)代价计算

08/05 15:55
阅读数 112

AD-Census算法来自于中国学者Xing Mei等在ICCV2011发表的论文《On Building an Accurate Stereo Matching System on Graphics Hardware》1。算法效率高、效果出色,Intel RealSense D400就是基于该算法实现的立体匹配2

本系列将带大家深入了解AD-Census的理论,希望能够对同学们的立体匹配算法研究有所帮助。

AD-Census是一个将局部算法和半全局算法相结合的算法,它包含四个步骤:1 初始代价计算、2 代价聚合、3 扫描线优化、4 视差优化。本篇的内容是初始代价计算部分。

Step 1. AD-Census Cost Initialization
Step 2. Cross-based Cost Aggregation
Step 3. Scanline Optimization
Step 4. Multi-step Disparity Refinement


【理论恒叨】【立体匹配系列】经典AD-Census: (1)代价计算

从AD-Census这个名字,我们就可以猜想它的代价计算方式应该是结合了AD法和Census法,AD大家应该不会陌生,即Absolute Differences,亮度或颜色差的绝对值,AD法计算代价的公式为:

即左右视图像素点的三个颜色分量之差的绝对值取平均,如果是灰度图像,则等于灰度的亮度差。

Census法和Census-based SGM立体匹配算法中的方法一样,博主在前面有单独写过一篇理论介绍,大家可以看下面这篇文章:

【理论恒叨】【立体匹配系列】经典SGM:(2)匹配代价计算之Census变换

目前Census法应用非常广泛,它基于窗口内的相对亮度差,可以更好的处理两张图整体亮度不一致的情况,且基于窗口的方法对影像噪声更加鲁棒,对弱纹理也有一定的鲁棒性,相对的更能反映真实的相关性。但缺点是对重复的纹理会产生歧义。而AD法这类基于单像素亮度差的方法可以一定程度上缓解重复纹理的歧义性问题。

基于此,AD-Census将AD和Census结合。将两个代价相加似乎是一个比较好的思路,但是问题在于两个算法的结果尺度并不一样,AD的结果是亮度差,范围是[0,255],而Census是比特串对应位值不相同的个数,范围为[0,N](N等于比特串的位数,一般是32位或者64位)。

因此,需要通过归一化,将两者的结果归一化到相同的范围区间,AD-Census所采用的方法是一个值区间在[0,1]的自然指数函数:

c c c是代价值, λ λ λ是控制参数,当 c c c λ λ λ都为正值时,这个函数的值区间在[0,1]的。因此可以通过该函数将任意代价值归一化到[0,1]的范围。

最终,AD-Census的代价计算公式为:

两个归一化后的结果相加,结果范围应该是[0,2]。

作者做了一个实验来评判方法的有效性,分别采用AD、Census、AD-Census方法计算匹配代价,再执行同一种代价聚合方法。视差结果的对比图如下:

结果也验证了作者的设想,AD法在重复纹理区域比Census法表现更好,Census法在弱纹理区域比AD法表现更好,而AD-Census法在两种场景下都是表现最好的。

本篇内容就介绍到这里,下一篇我们将介绍AD-Census的第二个步骤:Cross-based Cost Aggregation 基于十字交叉域的代价聚合。


  1. Mei X , Sun X , Zhou M , et al. On building an accurate stereo matching system on graphics hardware[C]// IEEE International Conference on Computer Vision Workshops. IEEE, 2012. ↩︎

  2. Keselman L , Woodfill J I , Grunnet-Jepsen A , et al. Intel® RealSense™ Stereoscopic Depth Cameras[C]// 2017 IEEE Conference on Computer Vision and Pattern Recognition Workshops (CVPRW). IEEE, 2017. ↩︎

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部