SGBM学习记录(一)

来源:互联网 发布:元数据和数据字典 编辑:程序博客网 时间:2024/04/27 05:32

初学SGBM,本文是对参考链接的学习翻译
SGM使用逐像素,基于共信息(MI)的匹配代价来作为对于输入图像间辐射差异的补偿。逐像素匹配由平滑度约束支持,通常表示为全局成本函数。SGM通过从各个方向的路径优化来执行快速近似。
我们沿着一条极线进行评估,对于已经矫正过的图像,极线即为水平线。对于极线上的每个像素,我们评估每个可能的视差结果。极线上每个像素可能的视差的代价可以被堆叠成一个矩阵。极线在下图中用深蓝色线突出表示出来
这里写图片描述
极线上每个像素(x方向)对可能视差值(y方向)的代价如下图所示,这条扫描线上视差值为:通过这幅图像中黑色区域的路径(矩阵中的最小代价)。同时,我们需要增加一些平滑性约束,否则我们的视差结果可能会有锯齿般跳跃,不代表现实。
这里写图片描述
找到最小路径就是线性规划的应用,我们从左到右的循环遍历矩阵,滚动总和:当前像素和视差组合的滚动和向量中的一个元素的成本等于当前位置的成本加上先前像素位置的所有可能视差集合的最低总和成本。公式如下:
这里写图片描述
与此同时,应用了一些额外的约束,当视差变化时惩罚代价。视差变化为1的罚项为P1,视差变化比1大的时候罚项为P2。
对每条扫描线做从左到右,从右到左的应用,可以得到的结果如下:
这里写图片描述
可以看到,在扫描线之间有很多撕裂线,我们可以通过使用更大的内核来解决这个问题(上图所使用的内核的大小为1*1);另一种方法是确保跨线的平滑约束,而不是仅仅是视差转换。SGM采用的方法是:在多个角度进行扫描线优化,然后用总的成本向量来决定最终的视差结果。每条线产生的视差结果如下:
这里写图片描述
总和各方向代价,然后选取代价最小的视差,可以得到最终结果。

参考:
http://www.cnblogs.com/hrlnw/p/4746170.html
http://zone.ni.com/reference/en-XX/help/372916M-01/nivisionconceptsdita/guid-53310181-e4af-4093-bba1-f80b8c5da2f4/

原创粉丝点击