三、CSCA《cross-scale cost aggregation for stereo matching》

来源:http://blog.csdn.net/wsj998689aa/article/details/44411215, 作者:迷雾forest

1.立体匹配概念

  • 立体匹配的意思是基于同一场景得到的多张二维图,还原场景的三维信息,一般采用的图像是双目图像。

  • 目前,立体匹配领域,主要有两个评测网站,一个是KITTI(http://www.cvlibs.net/datasets/kitti/eval_stereo_flow.php?benchmark=stereo),另一个是middlebury(http://vision.middlebury.edu/stereo/),两个网站上的算法都交叉,但是又不完全一样,相对来说,KITTI更好一点,对算法的性能评测更好,虽然时间测算的并不准确

  • 下面说说立体匹配最基本的步骤:
    1)代价计算。计算左图一个像素和右图一个像素之间的代价。
    2)代价聚合。一般基于点之间的匹配很容易受噪声的影响,往往真实匹配的像素的代价并不是最低。所以有必要在点的周围建立一个window,让像素块和像素块之间进行比较,这样肯定靠谱些。代价聚合往往是局部算法或者半全局算法才会使用,全局算法抛弃了window,采用基于全图信息的方式建立能量函数。
    3)深度赋值。这一步可以区分局部算法与全局算法,局部算法直接优化代价聚合模型。而全局算法,要建立一个能量函数,能量函数的数据项往往就是代价聚合公式,例如DoubleBP。输出的是一个粗略的视差图。
    4)结果优化。对上一步得到的粗估计的视差图进行精确计算,策略有很多,例如plane fitting,BP,动态规划等。这里不再熬述。

根据我的理解,可以看作为一种全局算法框架,通过融合现有的局部算法,大幅的提高了算法效果。

2.论文贡献

  • 文献《Cross-Scale Cost Aggregation for Stereo Matching》有三大贡献,第一,设计了一种一般化的代价聚合模型,可将现有算法作为其特例。第二,考虑到了多尺度交互(multi-scaleinteraction),形式化为正则化项,应用于代价聚合(costaggregation)。第三,提出一种框架,可以融合现有多种立体匹配算法。

  • 本文一直强调利用了不同尺度图像“间”的信息,不同于一般的立体匹配算法,只采用了同样尺度下,图像的“内”部结构信息,CSCA利用了多尺度信息,多尺度从何而来?其实说到底,就是简单的对图像进行高斯下采样,得到的多幅成对图像(一般是5副),就代表了多尺度信息。为什么作者会这么提,作者也是从生物学的角度来启发,他说人类就是这么一个由粗到精的观察习惯(coarse-to-line)。生物学好奇妙!

  • 该文献生成的稠密的视差图,基本方法也是逐像素的(pixelwise),分别对每个像素计算视差值,并没有采用惯用的图像分割预处理手段,如此看来运算量还是比较可观的。

3.算法流程

  • 流程图:
  • 其实,这篇文章的论述是很清晰的,上图是我根据自己的理解,画的一份算法流程图,下面我根据这份流程图,对文章脉络进行说明,对关键的公式进行解释。
  1. 对左右两幅图像进行高斯下采样,得到多尺度图像。
  2. 计算匹配代价,这个是基于当前像素点对的,通常代价计算这一步并不重要,主要方法有CEN,CG,GRD等几种,论文中给出了GRD,公式如下所示:
  • 这个模型,神奇的地方在于,可以融合现有的多种代价聚合算法,比如the-state-of-art的NL,ST,BF,GF等,但是很遗憾,文章没有给出明确的推导公式,用以说明为什么上述代价聚合算法可以作为上述模型的特例,只有一大段的文字描述,缺乏有力的说服力。

  • 解释一下这个一般化模型,它的目的是求解当前像素i的最小匹配代价,l为视差未知变量,j是像素i的邻域内的其他像素,K(i,j)就是像素i,j的相似度,这个相似度可以基于空间信息,也可以基于梯度,颜色信息,不同的核函数,就可以等价于不同的代价聚合算法。从另外一个角度解释一下,为何要z-C(j,l)?我认为这是基于两点假设,一个是左图右图匹配的越好,那么整体代价就越小。另一个是统一邻域内的像素深度值往往差不多。

  • 上述模型的求解很容易,直接对z求偏导即可,形式如下:

你可能感兴趣的:(三、CSCA《cross-scale cost aggregation for stereo matching》)