模拟人的两只眼睛的Stereo相机最近变得很受欢迎。通过对stereo相机拍摄的左右两张图进行匹配找出视差图,可以还原物体的3D信息。

立体匹配(Stereo matching)的步骤如下:

1: 预处理:亮度归一化,去噪,图像增强,滤波等等

2: 匹配Cost计算Cost aggregation

每个像素点的matching cost可用下图所示的两种方式表示

将所有像素的Cost加起来,选择和最小的方案。

3: 全局最优化

4: 后处理:Refinement 精化

一般基于像素点的匹配含有较大的噪音,所以人们更愿意使用基于局部或全局的匹配算法。常用的立体匹配算法可分为基于局部的匹配方法和基于全局的匹配方法。

(1)基于局部的匹配算法:块匹配,模板匹配,SIFT[1],SURF[2],AKAZE[3]

(2)基于全局的匹配算法:首先定义Cost Function,然后根据约束条件优化Cost Function.Dynamic Programming

Scaling Optimization

Graph Cuts

Belief Propagation:Markov Random Field

一般的Cost Function如下:ED基于像素的亮度,Es基于像素邻居之间的Smoothness。

在这里简单介绍后两种全局匹配算法:

1:Graph Cut: 将每一个像素看作Graph中的一个Node,然后假设该图有L个不同的深度值,则添加L个新的Node作为Label,然后求视差图的问题就变成了多重Labelling的问题了,具体Graph Cut参照文献[4]。

2:Belief Propagation: 将图像看作马尔科夫随机场,则求视差问题变成了最大化联合后验概率的问题,每一个像素对其深度值的猜测来自于其邻居给的信息,然后再把信息传给其他的邻居。每一个信息有 一个可靠度(概率)。最后经过多次循环深度值会收敛。

[2]Herbert Bay,Tinne Tuytelaars, and Luc Van Gool,SURF: Speeded Up Robust Features,ECCV,2006

[4]Yuri Boykov and Vladimir Kolmogorov (2003), "Computing Geodesics and Minimal Surfaces via Graph Cuts"

OpenCV提供了以下四种立体匹配算法的函数:Block Matching(BM) StereoBM

Semi-Global Block Matching(SGBM) StereoSGBM

Graph Cut(GC)cvStereoGCState()

Dynamic Programming(DP)cvFindStereoCorrespondence()

第一种就是简单的块匹配,第三,四种是基于全局的匹配,以下简单介绍一下第二种算法。我们知道局部匹配计算量小速度快,而全局匹配计算量大速度慢,所以作者提出了SGBM算法[5]: 第一步对每一个Pixel使用块匹配BM进行匹配,得到了全部Pixel的disparity map。

第二步对Disparity map建立图,用Graph Cut对其进行全局优化。利用Rectification将二维转化为一维:则对每一个像素的可能的Disparity值d,从以下4中里面选取一个最小值:左相邻像素disparity取值为d时,其最小的cost值。

左相邻像素disparity取值为d-1时,其最小的cost值+惩罚1。

左相邻像素disparity取值为d+1时,其最小的cost值+惩罚1。

左相邻像素disparity取值为其他时,其最小的cost值+惩罚2。

它与GC的区别在于它的左相邻像素的Disparity是已知的(根据块匹配结果),而GC是未知的,所以GC要对每一种取值进行一次计算,计算量比SGBM要大得多。

[5]H. Hirschmuller, Stereo Processing by Semi-global Matching and Mutual Information,"IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 30, Issue 2, pp. 328-341, Feb. 2008.

下图给出了各种不同算法的结果比较:

左右原图如下:

匹配结果如下:

精度与速度统计图如下:

python立体匹配误匹配率_立体匹配算法(Stereo Matching)及其在OpenCV中的应用相关推荐

  1. python安装django模块_在您的(Django)项目中使用setup.py

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 最近一位客户问我为什么我们创建的Django项目的根目录下都有一个setup.py.其他很多项目没有set ...

  2. python羊车门问题_「羊车门」经典概率题中不换门选中车的概率是多少?

    今天用Python求解「羊车门」经典的概率问题,对概率学基础和Python语法的灵活运用有所收货. 本次「羊车门」求解过程采用的是:穷举法计算概率已验证概率学基础理论.期间重点借鉴了'奥卡姆剃刀的博客 ...

  3. python list增加元素_将字符串的元素添加到列表中(python)

    该程序设计用于获取由数字(任意长度)组成的字符串,并将该字符串的内容输出到列表中,一次一位数字.如果数字x小于或等于前面的数字y,则数字x将被插入到子列表中.在数字z大于y之前,x和z之间的所有内容都 ...

  4. python检测多重共线性程序_用 VIF 方法消除多维数据中的多重共线性

    多元线性回归是我们在数据分析中经常用到的一个方法,很多人在遇到多维数据时基本上无脑使用该方法,而在用多元线性回归之后所得到的结果又并不总是完美的,其问题实际上并不出在方法上,而是出在数据上.当数据涉及 ...

  5. opencv求两张图像光流_光流(optical flow)和openCV中实现

    转载请注明出处! ! ! 光流(optical flow)和openCV中实现 光流的概念: 是Gibson在1950年首先提出来的. 它是空间运动物体在观察成像平面上的像素运动的瞬时速度.是利用图像 ...

  6. 立体匹配十大概念综述---立体匹配算法介绍

    from:https://blog.csdn.net/wintergeng/article/details/51049596 一.概念 立体匹配算法主要是通过建立一个能量代价函数,通过此能量代价函数最 ...

  7. 双目立体匹配算法:SGM

    一.简介   立体匹配旨在为校正后的左右视图提供稠密的匹配对,这种问题称为"stereo correspondence problem".有大量的算法用于求解立体匹配问题,根据Sc ...

  8. 基于深度学习算法和传统立体匹配算法的双目立体视觉

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 01 立体视觉是什么? 在开始之前,我相信很多站友都会有这个疑问, ...

  9. OpenCV立体校准stereo calib的实例(附完整代码)

    OpenCV立体校准stereo calib的实例 OpenCV立体校准stereo calib的实例 OpenCV立体校准stereo calib的实例 #include "opencv2 ...

最新文章

  1. AI破解脑电波,准确率超80%!高度还原你眼中最美的ta
  2. Java接收多台设备发送消息_FCM(Firebase Cloud 消息传递)发送到多个设备
  3. 2014搜狗前端面经【B事业部】
  4. JEPaas代码_((列表,表单)刷新列表||刷新表单数据
  5. c++ 嵌套类 内部类
  6. 简单代码生成器原理剖析(一)
  7. spring学习(48):自动装配中定义的bean的作用域
  8. RANDOM模块:PYTHON获取随机数
  9. MySQL replication illegal mix of collations
  10. 准备学Java的同学看过来,初学者入门必备!
  11. 支付宝 android sdk 调用h,支付宝 iOS SDK 的简单使用
  12. 笔记本安装固态硬盘ssd教程
  13. VMware Ubuntu18.10与Win10共享文件夹
  14. 做人晶莹剔透,做事水滴石穿
  15. 我参加了资金盘培训,get了这些“知识点”
  16. 解决部署Hexo后出现的The custom domain for your GitHub Pages site is pointed at an outdated IP address警告
  17. C语言在开发中的应用博文汇总贴
  18. 数学建模论文基本格式(转载)
  19. 论文数据查找和论文参考准确搜索定位
  20. stm32 MPU6050 姿态解算 Mahony互补滤波算法

热门文章

  1. Google 将对过时 Android 应用展开“大扫除”
  2. 微软拆分 VS Code 中 Python 扩展,部分功能可独立下载
  3. 强制好评,付费去广告,诈骗应用横行AppStore
  4. 提高(微)服务安全的非完全攻略
  5. Google 宣布 Kotlin-first 已四年,为什么 Java 开发者仍不买账?
  6. 混合现实平台 Mesh、云服务能力翻倍扩容、福利 150 万人……Ignite China 精彩盘点...
  7. 从芯片到 AI 生态,52 岁英特尔的蜕变!
  8. 开源操作系统年度盛会最新日程曝光,邀您一同开启烧脑模式!
  9. 蚂蚁金服自研数据库打败Oracle拿下世界第一;三星手机全面退出中国;微软发布Windows 10X双屏系统 | 极客头条...
  10. 终于!这本Python书彻底玩大了!