上一篇文章简单介绍了立体匹配算法相关的资源,这里简单总结一下立体匹配算法,总体来讲包含以下6个步骤:
1. Preprocess ( GaussBlur , SobelX, ...etc)
2. Cost Compute ( AD, SAD, SSD, BT, NCC, Census, ...etc)
3. Cost Aggregation ( Boxfilter, CBCA, WMF, MST, ...etc)
4. Cost Optimization ( BP, GC, HBP, CSBP, doubleBP, ...)
5. Disparity Compute( WTA)
6. Postprocess ( MedianFilter, WeightMedianFilter, LR-check, ...etc)
一般情况下,组合12356称为局部立体匹配算法, 12456称为全局立体匹配算法,区别在于是否构建全局能量优化函数, 如果有对六个步骤的含义不清楚的地方,请再次详细阅读上一篇文章《初始立体匹配算法》中的两篇综述论文。接下来的部分,我会重点讲述并且复现SGBM算法,这样不仅可以给大家讲清楚算法流程,还可以给大家贴出更多的中间结果供大家编码参考和学习,也欢迎大家加入学习立体匹配算法中,提高自己。
一、SGBM与SGM的区别
回到今天的主题SGBM(Semi-Global Block Matching)算法,为什么要分析这个算法呢,原因有二:
1. 算法核心为非常经典的SGM(Semi-Global Matching)算法;
2. SGBM算法自OpenCV2.4.6开始就已经被开源,非常的方便,并被广泛使用。
可能说