【理论恒叨】【立体匹配系列】经典PatchMatch: (3)后处理(一致性检查与视差填充)

理论恒叨系列

【理论恒叨】【立体匹配系列】经典PatchMatch: (1)Slanted support windows倾斜支持窗模型
【理论恒叨】【立体匹配系列】经典PatchMatch: (2)基于PatchMatch的视差估计
【理论恒叨】【立体匹配系列】经典PatchMatch: (3)后处理(一致性检查与视差填充)

PatchMatchStereo1是Michael Bleyer等在2011年发表于British Machine Vision Conference(BMVC)上的一篇双目立体匹配算法文章,非常经典,倾斜支持窗的思路打破传统固定窗口式局部匹配的思维桎梏,在Middlebury数据集上获得非常好的匹配效果,一段时间内高居排行榜第一名。更难能可贵的是,它和SGM一样数据泛化能力出色,对大部分数据都能取得不错的结果,所以也被很多商业软件所实现,是真正能够产品化的算法。

本系列博主将为大家介绍经典的PatchMatchStereo(PMS)算法原理,希望能够对同学们的立体匹配算法研究有所帮助。

上篇博客中,博主介绍了PMS的视差估计方法:基于PatchMatch的视差估计法。本篇则是介绍PMS的后处理部分,顺便给PMS概述专题收尾。

【理论恒叨】【立体匹配系列】经典PatchMatch: (3)后处理(一致性检查与视差填充))

PMS后处理

同大多数立体匹配算法一样,PMS的后处理一是常规操作:一致性检查和视差填充

一致性检查

一致性检查的介绍自不必细说,还不太了解的请查看博主的另外两篇博客

【理论恒叨】【立体匹配系列】经典SGM:(4)视差计算、视差优化

【码上实战】【立体匹配系列】经典SGM:(5)视差优化

有一点特别的是,上篇博客提到PMS有一个视图传播,即左右视图同名点的视差平面的传播,这意味着如果执行视图传播,则右视图也需要和左视图一样执行一次随机+N次传播的步骤。我们执行右视图计算时,需要注意右视图的视差值依然等于左视图的列号减去右视图的列号,即 d = x l − x r d=x_l-x_r d=xlxr

所有迭代传播完成后,计算左视图像素点 p p p在右视图上的同名点 q = p − d p q=p-d_p q=pdp,判断 ∣ d p − d q ∣ < = 1 |d_p-d_q|<=1 dpdq<=1是否成立,若不成立,则不满足一致性约束,将 p p p点和 q q q点的视差都赋为无效值。

视差填充

PMS的视差填充策略和SGM不一样,想了解SGM的填充策略的请查看博主前面的博客:

【码上实战】【立体匹配系列】经典SGM:(6)视差填充

PMS的策略是:
(1)搜索无效像素 p p p左右最近的有效像素。记录它们的视差平面 f l f^l fl f r f^r fr
(2)将像素 p p p的坐标代入 f l f^l fl f r f^r fr,计算出视差,选择较小的那个视差作为 p p p的视差值。选较小的含义是遮挡像素往往是出现在背景。(背景总是被前景遮挡,前景流氓做的大啊,挨近相机就是有优势!)

以上两个步骤可以为像素 p p p填充一个视差值,但有个问题是这样做会产生水平线条纹,这个不难理解,此方法没考虑其他方向的视差,只考虑了水平方向的视差,肯定会有条纹效应(一般来说,只考虑单方向就会出现该单方向条纹,比如只考虑水平,就出现水平条纹)。

为了缓解这个问题,作者想了个办法,既然填充只考虑了单方向,那就再做个多方向滤波!

搞一个加权中值滤波!

中值滤波做图像处理的再熟悉不过了(不认识的面壁去吧!),加权中值滤波不过就是给窗口内每个格子一个权值,权值计算公式依旧是它:

什么,没见过?请看下篇:

【理论恒叨】【立体匹配系列】经典PatchMatch: (1)Slanted support windows倾斜支持窗模型

γ γ γ选择和前面一样的值,中值滤波的窗口和匹配时的窗口大小一样。(如果是时序传播,那这里的窗口就是三维的)

实验图

首先我们看论文中最大的一张实验图:(右边是实验分析)

另外贴一下PMS加入时序传播的视频立体匹配实验结果:(有趣的时序传播,但好像很少见到实际应用的?)

系列完结!大家有不懂的,可以留言给我。要代码的,等段时间,博主把代码教学篇奉上!

代码篇来也↓↓↓

下载完整源码,点击进入: https://github.com/ethan-li-coding/PatchMatchStereo.git
欢迎同学们在Github项目里讨论,如果觉得博主代码质量不错,给颗小星星,Follow 我!感激不尽!

码上实战系列

【码上实战】【立体匹配系列】经典PatchMatch: (1)框架
【码上实战】【立体匹配系列】经典PatchMatch: (2)主类
【码上实战】【立体匹配系列】经典PatchMatch: (3)随机初始化
【码上实战】【立体匹配系列】经典PatchMatch: (4)代价计算
【码上实战】【立体匹配系列】经典PatchMatch: (5)迭代传播
【码上实战】【立体匹配系列】经典PatchMatch: (6)后处理

博主简介:
Ethan Li 李迎松(知乎:李迎松)
武汉大学 摄影测量与遥感专业博士

主方向立体匹配、三维重建

2019年获测绘科技进步一等奖(省部级)

爱三维,爱分享,爱开源
GitHub: https://github.com/ethan-li-coding
邮箱:ethan.li.whu@gmail.com

个人微信:

欢迎交流!

关注博主不迷路,感谢!
博客主页:https://ethanli.blog.csdn.net


  1. Bleyer M , Rhemann C , Rother C . PatchMatch Stereo - Stereo Matching with Slanted Support Windows[C]// British Machine Vision Conference 2011. ↩︎

  • 56
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值