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

from:https://blog.csdn.net/wintergeng/article/details/51049596

一、概念

        立体匹配算法主要是通过建立一个能量代价函数,通过此能量代价函数最小化来估计像素点视差值。立体匹配算法的实质就是一个最优化求解问题,通过建立合理的能量函数,增加一些约束,采用最优化理论的方法进行方程求解,这也是所有的病态问题求解方法。

二、主要立体匹配算法分类

1)根据采用图像表示的基元不同,立体匹配算法分为:

       A、区域立体匹配算法(可获取稠密视差图。缺点:受图像的仿射畸变和辐射畸变影响较大;像素点约束窗口的大小与形状选择比较困难,选择过大,在深度不连续处,视差图中会出现过度平滑现象;选择过小,对像素点的约束比较少,图像信息没有得到充分利用,容易产生误匹配。)

       B、基于特征的立体匹配算法(可获得稀疏的视差图,经差值估计可获得稠密视差图。可提取点、线、面等局部特征,也可提取多边形和图像结构等全局特征。缺点:特征提取易受遮挡、光线、重复纹理等影响较大;差值估计计算量大)

       C、基于相位立体匹配算法(假定在图像对应点中,其频率范围内,其局部相位是相等的,在频率范围内进行视差估计)

2)依据采用最优化理论方法的不同,立体匹配算法可以分为:

       A、局部的立体匹配算法

       B、全局的立体匹配算法

三、匹配基元(match primitive)

目前匹配算法中所采用的匹配基元可以分成两大类:

1)在所有图象像素点上抽取量测描述子

      A、像素灰度值(最简单、直接,但必须在同一光照条件下获得)

      B、局部区域灰度函数(主要是利用求得在各种大小不同窗口中灰度分布的导数信息,描述像素点周围的结构矢量。)

      C、卷积图象符号(利用各种大小算子与图象进行卷积,用灰度梯度局部极大值或极小值作为特征信息,描述整个图像)

2)图像特征

      A、过零点

      B、边缘(由于边缘是图像特征位置的标志,对灰度值的变化不敏感,边缘是图像匹配的重要特征和描述子)

      C、角点(虽然其没有明确的数学定义,但大家普遍认为角点,即二维图像亮度变化剧烈的点或边缘曲线上曲率极值点)

------------------------------------------------------------------基元-----------------------------------------------------------------------------------------

  1. 立体视觉匹配基元:匹配基元是用以进行立体匹配的图像特征,匹配基元的选择,要考虑基元的稳定性、敏感性、可行性和能否表示图像。
    • :利用图像的局部特征信息作为匹配基元,表示一个像素,如像素灰度值,角点,边缘,卷积等。

      双目立体视觉—基本约束准则

    • :局部区域内所有像素的灰度、亮度特征值,对区域内所有像素进行变化,如卷积、梯度变换和Censes变换等。

      双目立体视觉—基本约束准则

    • 线:一般是像素灰度信息发生急剧变化的像素点集,最能体现边缘特征。

      检测边缘的算子如Sobel算子、Canny算子、Log算子和Prewitt算子等。

      双目立体视觉—基本约束准则

------------------------------------------------------------------基元end------------------------------------------------------------------------------------------

四、区域匹配算法

        基本原理是给定在一幅图像上的某一点,选取该像素点邻域内的一个子窗口,在另一幅图像中的一个区域内,根据某种相似性判断依据,寻找与子窗口图像最为相似的子图,而其匹配的子图中对应的像素点就为该像素的匹配点。

        一般单纯的区域匹配都遇到如下限制:

       1)针对弱纹理或存在重复纹理的区域,匹配结果不好

       2)该算法不适应于深度变化剧烈的场景

       3)对光照、对比度和噪声比较敏感

       4)子窗体的大小很难选择

五、特征匹配算法

        特征的匹配算法,主要是基于几何特征信息(边缘、线、轮廓、兴趣点、角点和几何基元等),针对几何特征点进行视差估计,所以先要提取图像的特征点,尽而利用这些特征点的视差值信息来重建三维空间场景。

        匹配所需要的主要步骤:图像预处理、提取特征、特征点的匹配获取稀疏视差图,如果想得到稠密的视差图,需要采用插值的方法。

六、全局匹配算法

        全局立体匹配算法主要是采用了全局的优化理论方法估计视差,建立全局能量函数,通过最小化全局能量函数得到最优视差值。

        全局匹配算法得到的结果比较准确,但是其运行时间比较长,不适合实时运行。主要的算法有图割(graph cuts)、信念传播(belief propagation)、动态规划等算法。

七、局部匹配算法(个人觉得跟区域匹配类似,角度不同而已)

        主要是采用局部优化方法进行视差值估计,局部立体匹配算法有 SAD,SSD 等算法,与全局立体匹配算法一样,也是通过能量最小化方法进行视差估计,但是,在能量函数中,只有数据项,而没有平滑项。

       主要分为三类:自适应窗体立体匹配算法、自适应权值的立体匹配算法和多窗体立体匹配算法。

八、立体匹配约束

1)极线约束
2)唯一性约束

3)视差连续性约束

4)顺序一致性约束

5)相似性约束

----------------------------------------------------------------匹配约束--------------------------------------------------------------------------------------

  1. 约束准则具有缩小匹配搜索的范围,降低误匹配,同时提高匹配效率的功能。
    • 极线约束:

      如图所示,三维空间的一个映射点,其匹配点必定在另一图像的极线上,理想情况下,匹配点对位于同一水平线上即坐标y值相同。故只需在对应的水平线上搜素匹配点,大大提高了匹配效率。

      双目立体视觉—基本约束准则

    • 唯一性约束:

      三维空间点至多只一个图像上的映射点(遮挡则没有映射点),匹配时左右图像上只有唯一一个匹配点。

      双目立体视觉—基本约束准则

    • 连续性约束:

      三维空间中物体表面是光滑的,匹配得到的视差图大部分情况下是连续且光滑变化的。一般使用较小的视差梯度降低匹配的搜索范围和待匹配点的数量以提高匹配速度。

      双目立体视觉—基本约束准则

    • 相似性约束:

      三维空间中的物体在不同视角下投影产生的匹配基元(点、块、线)必须要有相同或相似的属性。由于光照等因素的影响,相似性约束具有局限性。

      双目立体视觉—基本约束准则

    • 顺序一致性约束:

      三维空间中物体上的点的位置信息在映射到两幅图像上的位置顺序不会改变。这是不透明物体表面投影的几何学必然性。

      双目立体视觉—基本约束准则

    • 平滑性约束:

      假设三维空间中物体表面是平滑的,则视差图上除物体边界位置会有大的视差波动以外,其他位置上匹配视差的变化很小。

      双目立体视觉—基本约束准则

    • 左右一致性约束:

      如图所示,参考图上像素点p点在匹配图上的点是q,则参考图上像素点q在匹配图上是p。如果两次搜索的结果不对应,则改点不可靠。常用于遮挡区域的检测。

      双目立体视觉—基本约束准则

    • 视差范围约束:

      两台摄像机之间具有一定的距离,在沿极线搜索时,搜索的范围应小于一定的阈值。视差范围约束限制了搜索的范围。

      双目立体视觉—基本约束准则

-----------------------------------------------------------------匹配约束end----------------------------------------------------------------------------------

九、相似性判断标准

1)像素点灰度差的平方和,即 SSD

2)像素点灰度差的绝对值和,即 SAD

3)归一化交叉相关,简称 NCC

4) 零均值交叉相关,即 ZNCC

5)Moravec 非归一化交叉相关,即 MNCC

6) Kolmogorov-Smirnov 距离,即 KSD

7)Jeffrey 散度

8)Rank 变换(是以窗口内灰度值小于中心像素灰度值的像素个数来代替中心像素的灰度值)

9)Census 变换(是根据窗口内中心像素灰度与其余像素灰度值的大小关系得一串位码,位码长度等于窗口内像素个数减一)

各类代码实现参考:https://blog.csdn.net/liyingjiang22/article/details/53156331

十、评价参数

        立体匹配算法是一个病态问题,一般通过建立能量函数,利用最小化能量函数,和一些约束条件,采用最优化理论方法进行求解方程。

        公认的定量评价参数有:均方根误差(Root-mean-squared)和误匹配率(percentage of bad matching pixels)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zjnu1730 PIRAMIDA(字符串,模拟)

Description Sample Input 6 JANJETINA 5 1 J 1 A 6 N 6 I 5 E Sample Output 1 0 2 1 1题意:给你一个长度小于等于10^6的字符串,然后每次让它循环铺盖,构成层数为n的塔,让你求得第i层塔中某个字符的个数。 思路:首先要…

ICP算法理解

from:https://blog.csdn.net/linear_luo/article/details/52576082 1 经典ICP ICP的目的很简单,就是求解两堆点云之间的变换关系。怎么做呢?思路很自然,既然不知道R和t(针对刚体运动),那我们就假设为未知量呗&#xf…

2016-8-2更新日志

1.修正版本管理器资源文件名 不能正确拉取 91Resource 文件下的资源的问题2.修正商城购买物品不计算负重的问题3.修正拾取叠加物品 只计算一个物品的重量的问题4.游戏参数-> 游戏选项2->增加物品使用间隔5.修正冷酷不加技能点的BUG6.自定义UI开放测试[目前只能针对热血传…

字符流缓冲区的使用之BufferedWriter和BufferedReader

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取,代码中使用了输入缓冲区的特有的方法:readLine(),获取一行文本数据 import java.io.BufferedReader; import java.io.FileNotFoundException; import java…

图像处理的灰度化和二值化

from:http://blog.sina.com.cn/s/blog_13c6397540102wqtt.html 在图像处理中,用RGB三个分量(R:Red,G:Green,B:Blue),即红、绿、蓝三原色来表示真彩色&#x…

结合 category 工作原理分析 OC2.0 中的 runtime

绝大多数 iOS 开发者在学习 runtime 时都阅读过 runtime.h 文件中的这段代码: struct objc_class {Class isa OBJC_ISA_AVAILABILITY;#if !__OBJC2__Class super_class OBJC2_UNAVAILABLE;const char *name …

获取子元素

1、纯css 获取子元素 #test1>div {background-color:red;}#test1 div {font-size:14px;}#test1>div:first-child {color:#ccc;} <div id"test1"><div>性别</div><div>男</div></div> 因1示例中为#test1下的子元素 #test1…

JPG PNG GIF BMP图片格式的区别

类型优点缺点应用场景相同图片大小比较BMP无损压缩&#xff0c;图质最好文件太大&#xff0c;不利于网络传输 152KGIF动画存储格式最多256色&#xff0c;画质差 53KPNG可保存透明背景的图片画质中等 202KJPG文件小&#xff0c;利于网络传输画质损失车牌识别84K BMP BMP&…

EasyUI左右布居

<!DOCTYPE html><html xmlns"http://www.w3.org/1999/xhtml"><head runat"server"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>首页</title> <li…

44.Android之Shape设置虚线、圆角和渐变学习

Shape在Android中设定各种形状&#xff0c;今天记录下&#xff0c;由于比较简单直接贴代码。 Shape子属性简单说明一下:   gradient -- 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle是指从哪个角度开始变.solid -- 填充。stroke -- 描边。corners -- 圆角…

几种边缘检测算子的比较Roberts,Sobel,Prewitt,LOG,Canny

from&#xff1a;https://blog.csdn.net/gdut2015go/article/details/46779251 边缘检测是图像处理和计算机视觉中的基本问题&#xff0c;边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括&#xff1a;深度上的…

django 初试

/*************************************************************************************** django 初试* 说明&#xff1a;* 昨天打搭了dgango的服务器&#xff0c;今天学一下怎么来输出一个hello world出来。* * …

浅析“高斯白噪声”,“泊松噪声”,“椒盐噪声”的区别

from&#xff1a;https://www.jianshu.com/p/67f909f3d0ce 在图像处理的过程中&#xff0c;一般情况下都进行图像增强&#xff0c;图像增强主要包括“空域增强”和“频域增强”&#xff0c; 空域增强包括平滑滤波和锐化滤波。 平滑滤波&#xff0c;就是将图像模糊处理&#x…

HttpClient通过Post上传文件(转)

在之前一段的项目中&#xff0c;使用Java模仿Http Post方式发送参数以及文件&#xff0c;单纯的传递参数或者文件可以使用URLConnection进行相应的处理。 但是项目中涉及到既要传递普通参数&#xff0c;也要传递多个文件&#xff08;不是单纯的传递XML文件&#xff09;。在网上…

数字图像处理:各种变换滤波和噪声的类型和用途总结

摘自http://imgtec.eetrend.com/blog/4564 一、基本的灰度变换函数 1.1图像反转 适用场景&#xff1a;增强嵌入在一幅图像的暗区域中的白色或灰色细节&#xff0c;特别是当黑色的面积在尺寸上占主导地位的时候。 1.2对数变换&#xff08;反对数变换与其相反&#xff09; …

Java 开发环境部署

1.下载Java开发环境工具包JDK&#xff0c;下载地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载后&#xff0c;双击jdk应用程序&#xff0c;根据提示完成安装&#xff0c;安装过程中可以自定义安装目录等信息&#xff0c;这里我选择…

枚举enum、NS_ENUM 、NS_OPTIONS

2019独角兽企业重金招聘Python工程师标准>>> enum 了解位移枚举之前&#xff0c;我们先回顾一下C语言位运算符。 1 << : 左移,比如1<<n,表示1往左移n位&#xff0c;即数值大小2的n次方; 例如 : 0b0001 << 1 变为了 0b0010 2 >> : 右…

mysql 关键词相关度排序方法详细示例分析

http://www.jb51.net/article/40480.htm转载于:https://www.cnblogs.com/lixiuran/p/5299305.html

数字图像处理-频率域滤波原理

from&#xff1a;https://blog.csdn.net/forrest02/article/details/55510711?locationNum15&fps1 写在前面的话 作者是一名在读的硕士研究僧&#xff0c;方向是图像处理。由于图像处理是一门相对复杂的学科&#xff0c;作者在课堂上学到的东西只是非常浅显的内容&#…

tomcat优化-有改protocol 和 缓存 集群方案

tomcat优化 在线上环境中我们是采用了tomcat作为Web服务器&#xff0c;它的处理性能直接关系到用户体验&#xff0c;在平时的工作和学习中&#xff0c;归纳出以下七种调优经验。 1. 服务器资源 服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。 (1) 对于高并发…