点击上方“小白学视觉”,选择加"星标"或“置顶”

重磅干货,第一时间送达

来源:

https://blog.csdn.net/rs_lys/article/details/83302323

根据Schrstein和Szeliski的总结,双目立体匹配可划分为四个步骤:匹配代价计算、代价聚合、视差计算和视差优化。

一 、匹配代价计算

匹配代价计算的目的是衡量待匹配像素与候选像素之间的相关性。两个像素无论是否为同名点,都可以通过匹配代价函数计算匹配代价,代价越小则说明相关性越大,是同名点的概率也越大。

每个像素在搜索同名点之前,往往会指定一个视差搜索范围D(Dmin ~ Dmax),视差搜索时将范围限定在D内,用一个大小为W×H×D(W为影像宽度,H为影像高度)的三维矩阵C来存储每个像素在视差范围内每个视差下的匹配代价值。矩阵C通常称为DSI(Disparity Space Image)。

匹配代价计算的方法有很多,传统的摄影测量中,使用灰度绝对值差(AD,Absolute Differences)

1

、灰度绝对值差之和(SAD,Sum of Absolute Differences)、归一化相关系数(NCC,Normalized Cross-correlation)等方法来计算两个像素的匹配代价;计算机视觉中,多使用互信息(MI,Mutual Information)法2

3

、Census变换(CT,Census Transform)法4

5

、Rank变换(RT, Rank Transform)法6

7

、BT(Birchfield and Tomasi)法8 等作为匹配代价的计算方法。不同的代价计算算法都有各自的特点,对各类数据的表现也不尽相同,选择合适的匹配代价计算函数是立体匹配中不可忽视的关键步骤。

图1 DSI示意图(C(x,y,d)代表像素(x,y)在视差为d时的匹配代价)

二、 代价聚合

代价聚合的根本目的是让代价值能够准确的反映像素之间的相关性。上一步匹配代价的计算往往只会考虑局部信息,通过两个像素邻域内一定大小的窗口内的像素信息来计算代价值,这很容易受到影像噪声的影响,而且当影像处于弱纹理或重复纹理区域,这个代价值极有可能无法准确的反映像素之间的相关性,直接表现就是真实同名点的代价值非最小。

而代价聚合则是建立邻接像素之间的联系,以一定的准则,如相邻像素应该具有连续的视差值,来对代价矩阵进行优化,这种优化往往是全局的,每个像素在某个视差下的新代价值都会根据其相邻像素在同一视差值或者附近视差值下的代价值来重新计算,得到新的DSI,用矩阵S来表示。

实际上代价聚合类似于一种视差传播步骤,信噪比高的区域匹配效果好,初始代价能够很好的反映相关性,可以更准确的得到最优视差值,通过代价聚合传播至信噪比低、匹配效果不好的区域,最终使所有影像的代价值都能够准确反映真实相关性。常用的代价聚合方法有扫描线法、动态规划法、SGM算法中的路径聚合法等。

图2 代价聚合前后视差图示意图

三 、视差计算

视差计算即通过代价聚合之后的代价矩阵S来确定每个像素的最优视差值,通常使用赢家通吃算法(WTA,Winner-Takes-All)来计算,如图2所示,即某个像素的所有视差下的代价值中,选择最小代价值所对应的视差作为最优视差。这一步非常简单,这意味着聚合代价矩阵S的值必须能够准确的反映像素之间的相关性,也表明上一步代价聚合步骤是立体匹配中极为关键的步骤,直接决定了算法的准确性。

图3 赢家通吃(WTA)算法示意图

四、视差优化

视差优化的目的是对上一步得到的视差图进行进一步优化,改善视差图的质量,包括剔除错误视差、适当平滑以及子像素精度优化等步骤,一般采用左右一致性检查(Left-Right Check)算法剔除因为遮挡和噪声而导致的错误视差;采用剔除小连通区域算法来剔除孤立异常点;采用中值滤波(Median Filter)、双边滤波(Bilateral Filter)等平滑算法对视差图进行平滑;另外还有一些有效提高视差图质量的方法如鲁棒平面拟合(Robust Plane Fitting)、亮度一致性约束(Intensity Consistent)、局部一致性约束(Locally Consistent)等也常被使用。

由于WTA算法所得到的视差值是整像素精度,为了获得更高的子像素精度,需要对视差值进行进一步的子像素细化,常用的子像素细化方法是一元二次曲线拟合法,通过最优视差下的代价值以及左右两个视差下的代价值拟合一条一元二次曲线,取二次曲线的极小值点所代表的视差值为子像素视差值。如图3所示。

图4 二次曲线拟合法子像素位置计算示意图

局部匹配算法的步骤一般包括匹配代价计算、代价聚合和视差计算三个步骤,全局算法则包括匹配代价计算,视差计算与视差优化三个步骤,半全局算法SGM则四个步骤都有。

参考文献:

1.KANADE T, KANO H, KIMURA S, et al. Development of a video-rate stereo machine: Ieee/rsj International Conference on Intelligent Robots and Systems 95. ‘human Robot Interaction and Cooperative Robots’, Proceedings, 2002[C].↩︎

2.KIM J, KOLMOGOROV V, ZABIH R. Visual Correspondence Using Energy Minimization and Mutual Information: IEEE International Conference on Computer Vision, 2003. Proceedings, 2008[C].↩︎

3.EGNAL G. Mutual Information as a Stereo Correspondence Measure[J]. Technical Reports, 2000.↩︎

4.MA L, LI J, MA J, et al. A Modified Census Transform Based on the Neighborhood Information for Stereo Matching Algorithm: Seventh International Conference on Image and Graphics, 2013[C].↩︎

5.BAIK Y K, JO J H, LEE K M. Fast Census Transform-based Stereo Algorithm using SSE2: The 12th Korea-Japan Joint Workshop on Frontiers of Computer Vision, Tokushima, Japan, 2006[C].↩︎

6.GU Z, SU X, LIU Y, et al. Local stereo matching with adaptive support-weight, rank transform and disparity calibration[J]. Pattern Recognition Letters, 2008,29(9):1230-1235.↩︎

7.BANKS J, BENNAMOUN M, KUBIK K, et al. A constraint to improve the reliability of stereo matching using the rank transform: Acoustics, Speech, and Signal Processing, 1999. on 1999 IEEE International Conference, 1999[C].↩︎

8.BIRCHFIELD S, TOMASI C. A Pixel Dissimilarity Measure That Is Insensitive to Image Sampling[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 1998,20(4):401-406.↩︎

本文仅做学术分享,如有侵权,请联系删文。

python 立体匹配_双目立体匹配步骤详解相关推荐

  1. python波形图librosa_对python中Librosa的mfcc步骤详解

    对python中Librosa的mfcc步骤详解 发布时间:2020-10-18 23:55:35 来源:脚本之家 阅读:71 作者:qq_39239990 1.对语音数据归一化 如16000hz的数 ...

  2. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  3. python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法

    网络爬虫,即Web Spider,是一个很形象的名字.把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 1. 网络爬虫的定义 网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个 ...

  4. sql输出带颜色的字段_表输出步骤详解

    表输出步骤常被用于将转换中的行集从内存持久化到数据库,对转换而言是行集被拿出去的感觉,故名为输出.步骤配置信息如图1所示. 图1 :表输出插件整体信息 下文依次解释各配置项的含义:1.转换步骤名称:步 ...

  5. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  6. python加密字符串小写字母循环后错两位_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  7. [双目视差] 立体匹配步骤详解

    文章目录 立体匹配步骤详解 Step1 匹配代价计算 Step2 代价聚合 Step3 视差计算 Step4 视差优化 立体匹配步骤详解 Step1 匹配代价计算 匹配代价计算的目的是衡量待匹配像素与 ...

  8. python画三维平面-Python 绘制酷炫的三维图步骤详解

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  9. 电脑安装python步骤-python3.8下载及安装步骤详解

    1.操作系统:Windows7 64bit executable installer 2.安装步骤: 双击安装文件python-3.8.0-amd64.exe 勾选下方"Add Python ...

最新文章

  1. 写那么多年Java,还不知道啥是Java agent的必须看一下!
  2. Linux字符设备驱动剖析
  3. matlab的syntax简记
  4. 圆 最小外包矩形_【OpenCV3图像处理】提取轮廓的凸包、外包矩形、最小外包矩形、最小外包圆...
  5. LogManager分析
  6. idea在java文件中查找_Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标...
  7. 微软关闭音乐服务器,微软关闭Zune音乐服务 Zune播放器变为MP3
  8. php fpm 日志记录,使用Nginx在PHP-FPM 7上启用错误日志记录?
  9. 基于android鲜花销售app,基于Android的鲜花APP设计任务书
  10. 管理感悟:先做事,后做人
  11. 如何查看硬盘对应的主板接口属性
  12. 赚了20亿美元GandCrab勒索病毒家族的故事
  13. 读《TOWARDS EXPRESSIVE SPEAKING STYLE MODELLING WITH HIERARCHICAL CONTEXT INFORMATION FOR MANDARIN》
  14. 2019年中南大学研究生复试机试题 题解
  15. 英语听力采用计算机化考试,高考英语听力机考12问——访北京教育考试院有关负责人...
  16. 关于多对多关系(即E-R图中m:n)中的界面展示优化
  17. Linux内核由32位升到64,将Ubuntu从32位版本升级到64位版本
  18. Kubernetes volumes简介
  19. 伪静态URLRewrite学习笔记
  20. TSF微服务治理实战系列(二)——服务路由

热门文章

  1. 易优eyoucms响应式网络软件网站模板
  2. 【搜索】 来自风平浪静的明天
  3. 一种非常好用的Android屏幕适配
  4. mysql服务器及卸载
  5. 【单例设计模式】懒汉式跟饿汉式的区别
  6. 2019年浙江高考数学真题(填空题1-5题)解析答案
  7. 计算机辅助应用论文,浅谈应用计算机辅助数学教学
  8. JAVA 求1000以内的完数
  9. Unity3D Animation Rig 蜘蛛动画
  10. python类中包含类_彻底搞懂Python中的类