双目深度相机--2.sgm算法的匹配代价计算的方法详细介绍
sgm算法的匹配代价计算的方法详细介绍
好的,我们来详细介绍一下半全局匹配(SGM)算法中匹配代价计算的方法。
这是SGM流程中的第一步,也是至关重要的一步。SGM算法本身的核心在于其多方向的路径代价聚合,但其精度和鲁棒性的基础则来自于一个高质量的初始匹配代价。
SGM算法并不固定使用某一种匹配代价计算方法,它是一个灵活的框架。然而,经过实践验证,某些方法因其优异的性能而成为首选或事实上的标准。
核心思想
匹配代价计算的目的是,对于左图中的每一个像素 (x, y) 和每一个可能的视差值 d ,计算一个代价 C(x, y, d) 。这个代价衡量了左图像素 (x, y) 与右图像素 (x-d, y) 的不相似程度。代价越低,说明两个像素越可能是匹配的。
最终,我们会得到一个三维的代价立方体(Cost Volume),其尺寸为 图像宽度 W × 图像高度 H × 视差范围 D 。
常用的匹配代价计算方法
SGM论文原文以及后续的实际应用中,最常用且效果最好的方法是 Census Transform 以及 Birchfield和Tomasi提出的方法 的组合。
- Census Transform ( census变换 )
这是一种非参数化的图像变换,对光照变化非常鲁棒,是SGM算法中最受欢迎的代价计算方法。
计算步骤:
- 定义窗口:以一个像素点为中心(例如左图的 p = (x, y) ),定义一个矩形邻域窗口(如 3×3, 5×5, 7×7 等)。窗口越大,对纹理的区分能力越强,但计算量也越大,且在边缘处容易出错。
- 生成比特串:将窗口内每