Semi-Global Matching(SGM)算法原文理解

本文深入解析Semi-Global Matching(SGM)算法,介绍了基于互信息的匹配代价计算、代价聚合过程,以及算法的优化策略,如分层互信息和动态规划。通过对图像匹配和成本聚合的探讨,为实现精确的立体匹配提供了理论基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  参考:@迷雾forest http://blog.youkuaiyun.com/wsj998689aa/article/details/49464017,原博主对SGM算法的精髓理解的很透,我是在参考他文章的基础上,才能看懂SGM算法几处关键的地方。本文的不同在于加入了一些我自己的理解,并且调整了一下整个算法阐述的思路,当是自己的一个阅读笔记。后边打算再做一下SGM原始算法与OpenCV的SGBM算法实现的对比,并且争取自己实现一下SGM算法。因为我的导师不搞这个方向,很多东西都是我自己的理解,恐怕会有不对的地方,还请大家多指正。下面直接从第二章开始。


2.半全局立体匹配

  半全局立体匹配算法基于一种逐像素匹配的方法,该方法使用互信息来评价匹配代价,并通过组合很多一维的约束来近似一个全局的二维平滑约束。本方法分成下面几个步骤,其中有一些并不是必须的。

2.1 逐像素匹配代价的计算

  输入的左右图像必须已经知道对极几何模型,但是不一定是校正过的,因为有些图像是难以校正的,比如推扫式图像。要计算参考图(base image)某点P的匹配代价,需要用到其灰度为Ibp,及在待匹配图(match image)的疑似匹配点q,其灰度为Imq,p和q之间有极线方程q=ebm(p,d),d是极线的参数。如果图像已经被校正了,那么待匹配图在参考图的右边,且d代表视差。

  一个重要的问题是用于匹配的区域的大小和形状,区域越大,鲁棒性越好,但是大了以后会导致物体的边界模糊。这里不使用P邻域内的视差是连续的这一假设,也就是说,只有Ibp和Imq这两个灰度值被用来计算点p匹配代价,其他的点不考虑。

  文章介绍一种逐像素匹配代价计算的方法是Brichfield and Tomasi提出的基于采样的方法《Depth Discontinuities by Pixel-to-Pixel Stereo》,该方法在OpenCV SGBM算法中使用。但是这里,文章使用了新的方法,即基于互信息的匹配代价,该方法对光照不敏感。下面介绍互信息。

  互信息M的定义式,互信息是基于熵来计算的,下面的三项分别是图1的熵,图2的熵,以及图12的联合熵,紧接着给出熵和联合熵的定义:

                                                                                 

                                                       

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值