参考了这篇博客
https://blog.csdn.net/wsj998689aa/article/details/44411215
https://blog.csdn.net/chuhang_zhqr/article/details/54316484
https://blog.csdn.net/weixin_36558054/article/details/74832494?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight
文中介绍了3个评测数据库,
一个是KITTI(http://www.cvlibs.net/datasets/kitti/eval_stereo_flow.php?benchmark=stereo),起源于Geiger教授领导的自动驾驶研究小组。Elas算法就是Geiger教授做的成果。网站包含内容比较丰富,双目视觉数据库有2012 和2015 两种,2012是静态图,2015是动态图。
另一个是middlebury(http://vision.middlebury.edu/stereo/)这个就比较老一些,只有双目视觉的评测。Scharstein 和Szeliski两位大神搭建的。
第三个是new tsukuba dataset.这里有1800对图像。起源于1997年的tsukuba大学的数据库。https://home.cvlab.cs.tsukuba.ac.jp/dataset。
论文的贡献在于提供了cost aggregation的多尺度框架,而不是一种新的聚合方法。妙处在于可以把好多方法都套用到这个框架中。
文中说现在大部分的聚合的方法都是某种程度上对代价计算窗口的联合滤波。一般都是在最精细的尺度上进行,图像越精细效果越好。因为人类视觉系统的处理是在多个尺度上进行的,所以在计算机中也采用CTF:coarse to fine的方法。
cost 计算
C ( i , l ) C(i,l) C(i,l)表示在像素 ( x i , y i ) (x_i,y_i) (xi,yi)处第 l l l级匹配代价,
intensity+gradient的代价
C ( i , l ) = ( 1 − α ) ⋅ m i n ( ∣ ∣ I ( i ) − I ′ ( i l ) ∣ ∣ , τ 1 ) + α ⋅ m i n ( ∣ ∣ ∇ x I ( i ) − ∇ x I ′ ( i l ) ∣ ∣ , τ 2 ) C(i,l) = (1-\alpha)\cdot min(||I(i)-I'(i_l)||, \tau _1)+\alpha \cdot min(||\nabla_xI(i)-\nabla_xI'(i_l)||,\tau_2) C(i,l)=(1−α)⋅min(∣∣I(i)−I′(il)∣∣,τ1)+α⋅min(∣∣∇xI(i)−∇xI′(il)∣∣,τ2)
第一项是intensity 第二项是gradient。
τ 1 \tau_1 τ1 τ 2 \tau_2 τ2是截止参数
α \alpha α =0.11
cost 聚合
可以采用 BF、GF、BOX、NL、ST等方法聚合
下采样
下采样后做以上两个工作。
多尺度框架
在这个框架下将多尺度下的聚合结果优化。这是本文的贡献所在。
借鉴了WLS:weighted least square的思想,用同一像素多尺度下的聚合结果估计匹配结果。除此之外,作者加了一个正则化项来表示尺度之间的差异性。差异越小,越容易被接受。
用微分的方法找到估计值的表达式,结果很直观,形式很像图像的滤波啊
C ‾ = − λ z s − 1 + ( 1 + 2 λ ) z s − λ z s + 1 \overline C=-\lambda z^{s-1}+(1+2\lambda)z^s-\lambda z^{s+1} C=−λzs−1+(1+2λ)zs−λzs+1
这不就是用前面的值和后面的值来估计中间值吗?用 λ \lambda λ调整权重。
为了方便计算,搞了一个矩阵来计算,感觉没什么用啊,嗯一定是适度的包装。这一段没看很明白,有明白的来讲讲啊。
最后用WTA的方法找到最终的匹配点。
后处理
WM SG NP等一些均值等常规操作。
程序运行命令:
SSCA GRD BF WM 0.2 im0.png im1.png disp0ccsa.jpg 60 4
λ = 0.2 \lambda=0.2 λ=0.2合不合适没找到建议值。
程序运行时间挺长,效果也不错,从实践对比上来看应该是比原来的算法要好一些。
作者提供了完整的源码,很仗义了,里面有很多算法。谢谢了!如果有中文视频讲讲就好了。