一、LCA(Local Cost Aggregation)
局部代价聚合:生成代价空间后,对每一层视差的代价进行聚合(滤波),也就是对相邻区域的匹配代价进行加权求和,根据滤波器(卷积核)的不同,所得到的聚合(滤波)效果也就不同。
求和项里分别是邻域权重、邻域代价
二、(S)GM Semi-Global Matching
全局(半全局)匹配
上面局部代价聚合中仅仅利用了局部特征进行聚合,出来的视差对全局特征效果较差,因此全局代价聚合将全局特征整合为一个能量函数,能量函数主要对一张视差图进行能量评估,能量越低,视差图越好
SGM的cost aggregation
SGM中的代价聚合仍然采用全局能量函数的方式
求和式里面的三项分别是该点的代价,邻域视差的跃变等于1时的惩罚项(较小)使其可以适应视察连续变化的斜坡,领域视差跃变大于1时候的惩罚项(较大),这样计算了整幅视差图的能量函数,计算能量函数最小的视差图
Ibp 和Ibq 分别是当前点的灰度和邻域点的灰度,也就是利用图像灰度的连续程度来引导惩罚项,如果在图像灰度上也有较大的灰度变化,那就允许在深度上有较大的变化,否则不允许,P2’是事先设置的灰度初值。
SGM将这个寻求最优化的问题用路径代价聚合的思路来解决,即将像素所有视差下的匹配代价进行像素周围所有路径上的一维聚合(按照一条直线)得到路径下的路径代价值,然后将所有路径代价值相加得到该像素聚合后的匹配代价值
按照某个路径p-r进行聚合
Lr(p,d)表示在p-r方向,的聚合代价,C(p,d)是这个像素的代价,后面这一项对应上面能量函数里面的二三项,对不同视差的跃变情况进行惩罚,视差不变不惩罚,视差为1,P1惩罚,视差>1,P2惩罚,最后一项是为了使视差值大小不至于很大,使计算时不会占用太多内存,最后总代价等于所有聚合的路径代价之和
参考
https://ethanli.blog.csdn.net/article/details/83754473