Stereo Processing by Semi-Global Matching and Mutual Information
立体匹配中的视差计算一般分为以下四步,各种方法一般都是在这四个步骤上做改进。
(1)matching cost computation 匹配代价计算
一般是基于强度和颜色的绝对差异、平方差异或者采样不敏感差异,因为这些代价对辐射度radiometric 差异敏感,也有方法用到基于图像梯度的代价。为了处理图像间的复杂辐射度关系,将互信息引入计算机视觉中,已经用到了立体匹配和近似更快计算中。
(2)cost aggregation 匹配代价叠加
代价叠加是在某个邻域内连接匹配代价。通常,代价就是在恒定视差上对固定尺寸的窗做简单加和;一些方法还对窗内的每个元素根据与中心像素的颜色相似性和距离赋权重;也可以根据连续强度和颜色的段选择邻域。
(3)disparity computation/optimization 视差计算/优化
局部算法需要做视差计算,方法是选择最低匹配误差对应的视差,即胜者为王,winner takes all(WTA)。
全局算法跳过第二步代价叠加,直接对匹配代价处理,定义一个包含一个数据项和平滑项的全局能量函数,前者对像素级匹配代价加和,后者支持分段平滑视差选择。一些方法加更多的数据项用来惩罚遮挡,或者用可见性,做图像间的左/右或者对称一致性,或者根据分割信息对平滑性加权。从全局能量函数中找最小值用的策略是不同的。动态规划方法(DP)在1D对每个扫描线单独优化,通常会导致streaking effects,用基于树的DP方法可以避免这个问题。用Graph Cuts 或Belief Propagation可以做2D优化。分层方法做图像分割,然后在视差空间对平面建模,做迭代优化。
(4)disparity refinement 视差细化
视差细化一般是用来消除peaks,检验一致性,在gap内插值,或者通过亚像素插值增加准确性。因为大多数算法得到的视差都是离散值,为了提高精度,需要对其做细化。