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/
- SGBM学习记录(一)
- 立体视觉算法-SGBM(一)
- 立体视觉算法-SGBM(一)
- 学习记录(一)
- 学习记录(一)
- 学习记录(一)
- AcegiSecurity学习记录(一)
- DB2学习记录(一)
- DB2学习记录(一)
- delphi学习记录(一)
- gdb学习记录(一)
- BroadCastReceiver 学习记录(一)
- JS学习记录(一)
- Android学习记录(一)
- perl学习记录(一)
- Scala学习记录(一)
- XML学习记录(一)
- MFC学习记录(一)
- SCI 图像处理 机器学习
- 四张图揭秘中国AI人才现状
- redis高级实用特性
- Dagger2 入门,以初学者角度
- HDOJ HDU 1016 Prime Ring Problem
- SGBM学习记录(一)
- 20:球弹跳高度的计算
- CentOS7.2安装ActiveMQ全过程
- 蜂窝移动的架构 以及省电的方法
- Codeforces851B
- Linux下几款C++程序中的内存泄露检查工具
- C 位级操作
- [LeetCode]20. Valid Parentheses
- Java web学习总结2:Tomcat服务器的学习和使用