双目立体匹配 等 算法 论文 综述
本文GITHUB
博文末尾支持二维码赞赏哦 _
双目立体视觉技术实质就是模拟人的双眼视觉处理系统来处理通过摄像机采集所
获取的图像,它利用两台或多台摄像机在一定约束条件下采集同一场景的图像,对采集
到的图像进行信息提取和整合,最终恢复图像中场景的三维信息。
基于双目视觉的立体匹配算法研究涉及模式识别、人工智能、机器视觉、计算机图
形学等领域的许多相关复杂的研究课题。随着许多著名专家学者对此问题不断深入地研
究,立体匹配算法的精度越来越高,实时性越来越好。
kitti双目算法评测
Middlebury Stereo Evaluation - Version 2 算法评测
立体匹配的研究背景以及意义
立体匹配导论
三维重建技术概述 pcl 点云配准
三维重建基础 背景意义 双目立体视觉 tof 结构光
机器人视觉技术中所涉及的立体匹配通常是指应用于机器人立体视觉系统
中的一项关键技术,是指采用行之有效的方法来分析从不同的视角条件下获取
的目标物体的左右图像(图像对)之间的一致性或相似性,并识别出左右图像
(图像对)间的对应点或同名点; 立体匹配技术都是指应用于机
器人双目立体视觉系统中的。
当三维空间场景中的标定物被投影为二维图像时,二维图像信息丢失了标定物的深度信息 z,
立体匹配就是要恢复物体的深度信息 z,它是模拟人的双眼感知外部事物的过程。
具体来讲,立体匹配是对所选图像对中的图像特征点的计算,来建立不同图像特
征空间点中的像素对应关系。换句话说,就是将世界坐标系中的空间特征点与图像坐标
系中相对应的图像特征点进行一一映射,经过匹配算法等处理计算出空间特征点的三维
坐标,最终获得其对应的视差图。在视差图中,所得的是图像某一点以像素为单位的视
差值,它一般是一个整数估计值,由是差值就可得到场景的深度信息。
根据采用最优化理论方式的不同,立体匹配算法又分为基于局部的立体匹配算法和基于全局的立体匹配算法。
基于局部的立体匹配算法的核心在于匹配代价的计算和代价聚合阶段。
基于全局的立体匹配算法在视差计算阶段处理算法中的大部分计算问题,最终得到的视差图精准度更高,
基本上满足人们在实际生产应用中对匹配精度的要求
全局
基于全局的立体匹配算法使用全局约束来解决由于遮挡或重复纹理造成的像素误
匹配问题,是基于优化理论方法估计视差值。全局匹配问题通常被描述为能量最小化问
题,在其建立的能量函数中,除了数据项之外,还有平滑项。数据项主要是测量像素之
间的相似性问题,而平滑项是平滑像素之间的视差关系,保证相邻像素之间视差的平滑
性.基于全局的立体匹配算法需要构造一个能量函数,其形式一般为:
E = Edata + Esmooth
其中数据项 Edata 描述了匹配程度,平滑项 Esmooth体现了场景中的各种约束。
基于动态规划的立体匹配算法
全局立体匹配算法中动态规划算法是使用比较多的一种经典算法,
传统的动态规划立体匹配算法基于极线约束,
在每条极线上面运用动态规划方法来寻找最佳匹配点,
并通过动态寻优的方法来寻求全局能量最小化,得到视差匹配图。
但由于只是扫描了水平极线上像素点,导致视差图的条纹现象十分明显。
KunpengLi通过先提取图像中的特征点,然后将特征点用最近邻搜索算法进行匹配的
方法,以缓解传统的动态规划算法引起的横条纹效应;为了更加高效的利用动态规划立体匹配
算法,CarlosLeung提出了一种快速最小化方案,通过使用迭代动态规划算法来进行立体匹
配,该算法对行和列进行迭代以达到实现快速立体匹配的目的;TingboHu考虑到动态规划
匹配算法对图像边缘不能有效匹配的问题,将单一的极线搜索改进成单向四连接树的匹配算
法,并针对SDFC树设计了快速动态规划优化方法,这样可以在有效的提高匹配精度的同时,
将计算复杂度降低到传统动态规划算法的1/12。
基于图割法的立体匹配算法
图割法是一种能量优化算法,通过一个无向图来表示要分割的图像,并利用Ford和Fulk-
erson的最大流-最小割理论求出最小割,也就是最优的图像分割集合,
通过该方法可以很好的解决动态规划引起的条纹现象,但是缺点是时间复杂度比较大。
颜轲先将图像进行分割并建立立体匹配的马尔科夫有随机场模型,然后通过约束条件
保留分割的信息,提高了匹配的精度;Lempitsky通过将图像进行最优分割,然后对分割后
的图像进行分别计算,最后将结果进行结合,确保准确率不会下降的情况下,大大提高图割法的运行速度.
基于置信度传播的立体匹配算法
置信度传播的立体匹配算法由马尔科夫随机场模型组成。其将像素点作为网络传输的节点,
每个节点包含数据信息和消息信息两种,分别保存像素的视差值和每个节点的信息值。
置信度传播算法通过像素在四邻域网格上进行,在匹配的时候设定编号的模型,
通过对编号相同的点进行搜索。它的消息值是自适应的,在低纹理区域能够将消息传播到很远。
虽然匹配的精度提高了,但由于单个像素点容易产生误匹配,并且进行的是全局图像像素的搜索,
算法时 间复杂度非常大。因此如何快速有效的运用该算法也成为了研究的热点。
局部
基于局部的立体匹配算法采用局部优化的理论方法进行像素视差估计,研究的重点
在于匹配代价的计算和匹配代价的累积上。它是在最大视差的范围内找出匹配代价最小
的像素点作为目标匹配像素,利用局部信息求出匹配代价最小的像素点从而计算出视
差。与全局立体匹配算法相同,这类算法是通过寻找能量最小化方法进行像素视差估计,
但是,在能量函数中只有数据项没有平滑项。实时立体视觉系统多采用匹配速度较快的
局部匹配算法来处理获得的图像。
基于局部的立体匹配算法主要有 SSD、SAD 等算法,大致可以分为三类:自适应
窗体立体匹配算法、自适应权值立体匹配算法和多窗体立体匹配算法。
这些算法都是从邻域像素中选择最佳的支持区域和支持像素,即尽可能选择与要计算像素具有相同真实
视差的像素点作为其支持像素,利用支持像素作为邻域约束条件,从而得到比较好的局
部视差估计。自适应窗体是窗体在自适应进行变化,包含大小和形状,针对不同的变化
规则就具有不同的算法。多窗体匹配算法,主要是从多个窗体中,按照一定的规则,选
择最佳的窗体进行视差估计。自适应权值的立体匹配算法,主要是建立邻域像素的真实
支持度关系,根据它们的属性的不同建立不同的支持度模型,能反映他们之间真实的视
差关系。
基于区域的立体匹配算法
基于区域的立体匹配算法通过确定源图像上一个像素点,并在该像素点周围选取一个子
窗口,然后在目标图像的区域内寻找与该子窗口最为相似的窗口,匹配得到的窗口对应的像素
点就是该像素的匹配点。该算法在时间复杂度上比较小,但是对于弱纹理区域匹配效果不太
理想,受环境影响比较大,比如光照、遮挡等影响。并且在进行立体匹配的时候,子窗口大小的
选择也成为一个难点。
现在普遍利用视差估计、窗口视差近似等方法获得具有自适应的窗口,并在此基础上改进
算法。曾凡志在自适应窗口的基础上,采用8个相同的窗口运用并行处理的方法,根据图
像的平滑情况从8个方向选择合适的区域,该算法解决了在低纹理区域容易造成误匹配的现
象,并且运行时间与传统时间差别不大;ZF Wang将区域作为匹配的基元,通过引入区域之
间的合作和竞争,采用协作优化模式来最小化匹配成本。
于区域的图像匹配方法能够直接产生浓密的视差图,缺点是计算量大,实时性不强;
基于特征的立体匹配算法
基于特征的立体匹配算法主要利用图像的几何特征信息,根据特征信息进行视差的估计。
所以在进行匹配的时候,要先进行特征点的提取,并根据特征点建立物体的稀疏三维轮廓,
如果想要稠密的立体图则需要进行相应的插值算法。基于特征的立体匹配算法更多的强调的是
物体的结构信息,根据特征提取的不同,又可以分为基于点特征的匹配算法,
基于线特征的立体匹配等。
基于特征的图像匹配方法是针对摄像机获取的图像对中选取特定的特征点进行匹配,
其优点是匹配速度相对较快,匹配结果的精度也较高,
对于图像对中没有明显纹理等特征的区域容易造成歧义匹配而无法处理;
基于相位的匹配
是利用相位信号作为匹配基元,它可以精确到对每个像素的匹配,
经过特殊处理后,一般只能得到空间场景中标定物的大致结构.
基于相位的立体匹配算法是在频率区域范围内对相位信号进行视差估计,算法假定
图像对中的对应像素点附近在其频率范围内局部相位是相等的,从频率域相位的角度来
进行像素点视差值的估计。相位信号在空间域上的平移现象在频率域中表现为成比例
的相位平移,主要依据是傅立叶平移定理。该类算法对于各种畸变,如几何畸变和辐射
畸变等,具有很好的抗干扰能力,所以基于相位的匹配算法能够获得亚像素级的致密视
差图。徐彦君提出了一种基于相位的尺度自适应的立体匹配方法,尺度自适应是一种基
于频率响应积分面积相关的选择规则,实现了一种新颖的尺度自适应算法,对于常见的
“卷积
”问题,采用
“由粗及细
”的逐步求精方法处理,该方法获得的视差图有精度高、稳
定性好等优点,且能预测很大的视差范围。
经典立体匹配算法对比表
立体匹配算法名称 算法特性
基于动态规划的立体匹配算法 时间复杂度比较低,匹配精度不高,容易出现条纹现象
基于图割法的立体匹配算法 能解决动态规划出现的条纹现象,边缘匹配处理比较好,时间复杂度比较高
基于置信度传播的立体匹配算法 收敛性比较差,时间复杂度比较高,对于低纹理问题处理的比较好
基于区域的立体匹配算法 时间复杂度比较低,算法受环境影响比较大,弱纹理问题不能有效解决
基于特征的立体匹配算法 时间复杂度比较低,对于几何特征明显的图像匹配效果比较好
3 个基本问题
1) 匹配基元的选择:
选择合适的图像特征点、特征线或特征区域等作为匹配基元,使匹配结果更准确;
匹配基元是指在图像中有明显特征的点、线或者特定的区域,它是立体匹配算法的
最小匹配单元。由于在双目立体视觉系统中采集图像阶段经常受到摄像机的角度和位
置、场景纹理的特征和数量和光照的强弱变化程度等外在因素的影响,因此要在获取的
图像对中对所有的像素点都进行无歧义性的匹配是有难度的。
前常用的匹配基元有:过零点(zero-crossing)、边缘轮廓(object boundaries)、
线性特征(linear features)、像素灰度值等,
从总体上大致分为:
点状特征、区域特征和 线状特征.
其中,点状特征是最基本的特征基元,所含有效的信息量相对较少;
区域特征基元具有较好的全局属性,所含的信息量较为丰富,能够简单描述出事物的大致结构;
线状特征基元是介于两者之间的。
点状特征基元的优点是对特征点定位准确、检测和描述像素点的信息更容易,在合
适的图像中可以采用点状特征基元对场景进行三维重建。采用点状特征作为基元的算法
需要采用比较有力的约束准则及匹配策略来约束像素点,通常选择图像中的角点作为点
状特征匹配基元。
2) 匹配准则:
将客观世界中存在的事物固有的属性作为匹配算法必须遵循的准则,
所得结果能够更真实的反映事物的原貌及特征;
极线约束、唯一性约束 、连续性约束 、顺序一致性约束
3) 算法结构:选择或设计合适的数学方法对匹配算法来说也是非常关键的一步,
直接影响算法的执行效率。
相似性测度
立体匹配中的相似性测度是衡量两幅或多幅图像中,参考图像中的匹配模板与待匹
配图像中区域之间的相似程度的度量,这个测度可以让我们找到最优的匹配区域。
专家和研究学者对立体匹配问题已研究经,也提出了一些关于相似性测度的标准及方法。
常见的有:最小值绝对差
SAD(Sum of Absolute Difference)、
最小值平方差 SSD (Sum of Squared Difference)、
互相关 NCC (Normalized Cross Correlation)等多种测度
立体匹配算法的步骤
在双目立体视觉中,立体匹配是比较关键的部分,也是最困难和最复杂的部分,
其目的就是根据所选相似性测度,在待匹配图像中,找出参考图像某物点的对应匹配点,
建立双目图像间的特征对应关系,W此计算二者的视差并恢复图像深度信息。
立体匹配算法的研究重点主要在于匹配基元的选择、相似性测度函数、立体匹配策略和约束准则等。
1)匹配代价计算;
2)匹配代价叠加; 代价聚合
3)视差获取;
4)视差细化(亚像素级)
基于全局的立体匹配算法一般不需要进行匹配代价的叠加,
而是利用匹配代价和平滑约束来实现全局能量最小化,通常不包含第 2步。
而基于局部的立体匹配算法是基于矩形窗口滑动的方法,
它以中心像素点的领域像素点灰度均值为矩形窗口进行匹配代价的叠加。
1. 匹配代价计算
SD AD Census
C(x, y, z) =L(x +d, y) −R(x, y)
L 代表双目立体视觉系统中的左视图,
R 为双目立体视觉系统中的右视
图, x和 y 分别表示像素点的坐标值,d像素点的视差值。
经过计算后得到的C 为三维矩阵,我们称它为视差空间 DSI(Disparity Space Image),
视差空间 DSI 中任意的 d 对应有 x 和 y 的切面,
而该空间中(x, y,d) 的值表示参考图像中点(x, y) 被赋予视差 d 时的匹配代价m(x, y,d) 。
2. 匹配代价叠加/聚合
匹配代价的叠加是基于窗口的代价函数的叠加[7]。
基于区域的匹配算法它用来增强匹配代价的可靠性,
通常以待匹配像素为中心点选择一个矩形区域,将区域内的匹配代价与周围的匹配代价进行叠加。
根据原始匹配代价不同可分为 SSD(sum of squared differences)算法、
SAD(sum of absolute differences)等。
对于给定支持域的像素的匹配代价聚集操作可以采用 2D 或 3D 卷积的形式进行.
C(x, y, d) = w(x, y, d) ∗ C0(x, y, d)
其中,C0(x, y, d) 为给定像素的支持域内某像素的匹配代价值,
w(x, y, d) 表示支持域内给定像素的权值。
C(x, y,d) 为给定像素的新的匹配代价。
3. 视差获取
视差的获取的方法分为两类,一类是基于窗口的局部立体匹配算法,它只需在窗口
的范围内选择匹配代价聚集后的最佳点(最佳点的获取通常采用 SAD 或 SSD 算法结果 取最小值)作为对应的匹配点(WTA赢者通吃)。
另一类是基于全局的立体匹配算法,实质是获得能量函
数的最小值,算法先给出一个能量评价函数,然后通过优化算法来求得能量的最小值,
使能量函数最小的匹配关系即为最终的视差,同时可以获得每个像素的视差值。
局部匹配算法只有数据项,并无平滑项。全局算法包含 数据项和平滑项。
平滑项分为两种情况,
一种是极线间平滑性,
另一种是极线方向平滑性,两者种情况的计算方法相同,
都采用基于邻域的视差值计算方法,
如极线方向平滑性的计算公式:
Esmooth = sum( ρ(d(x, y),d(x+1, y)) )
在视差图中存在视差深度不连续的情况,例如场景中的物体与其背景相交的区域。
由于视差深度不连续的情况一般都发生在图像的边缘区域。如果存在图像中的灰度值变
化较大的区域,通常采用降低平滑代价的方法解决。由于场景中物体与其边界处通常存
在 视 差 深 度 的 跳 变 , 造 成 视 差 深 度 不 连 续.
ρ(d(x, y),d(x+1, y))
====> 改为
ρ(d(x, y),d(x+1, y)) = | 0 , d(x,y) = d(x+1,y) , 视差差1 而 代价相同 平滑处
| t , |d(x,y) - d(x+1,y)|=1 视差差1 而 代价额差1 , t为常数
| w , 其他情况 , w 更加灰度差值大小确定
4. 视差修正
视差获取及优化步骤中得到的是估计的视差图,
由于遮挡、噪声和光强等因素的影响,匹配过程中不可避免的存在误匹配点。
估计视差图中存在一些离散的空白像素,需要对其做进一步修正。
常用的修正方法有两种:
一种是采用左右一致性检验的方法,
该方法的步骤是对两幅图像中的匹配点分别检测并进行对比,
若相同,说明该匹配点视差值是正确的,
若不相同,则认为该点是误匹配点并对其进行校正处理。
另一种是采用平滑滤波的方法,
常用的平滑滤波是中值滤波,它将窗口内所有像素的灰度值从大到小排序,将排序后的
中间值取出替代要误匹配的数据,让周围的像素值更接近的真实值,从而消除孤立
的噪声点,达到视差修正的目的。
面临的挑战
1. 遮挡区域的立体匹配。
2. 弱纹理或重复区域的立体匹配。歧义性(ambiguity)比较大。视差平面集合能近似表示场景的结构。
3. 深度不连续像素点的立体匹配。物体的边缘,简单的推理和插值
4. 照变化引起的立体匹配问题。没有考虑镜面反射的情况。
5. 倾斜区域的匹配问题。
图像分割
图像分割(Image segmentation)方法是近年来才引入立体视觉系统中,也是立体匹
配算法研究中的一个重要的研究方向,图像分割技术在复杂场景的图像识别、图像分析、
图像理解和表达等方面能够发挥其优势。图像分割的原理是对摄像机所拍摄场景中的图
像进行分析,根据一定相似准则分析出图像场景中的一些相类似的特征点或特征区域,
再根据一定的约束准则对图像中相似点或相似区域的像素进行分组并聚合,此时聚合后
的图像上会出现有特殊规律的区域。这些特殊的区域既使后续的图像高级处理(包括
图像识别、图像分析、图像理解和表达等)阶段的操作步骤大大减少,又能保持图像结
构特征的关键信息不丢失。针对立体匹配算法,将图像分割成一些具有相同特征的小区
域,而这些区域往往有一个平滑的视差,然后利用上述方法进行匹配就会得到更好的效果。
研究者和专家们对图像分割技术的研究及方法在一直不断的探索改进中,
常见的图像分割算法有
基于阈值分割、
基于区域分裂合并、
分水岭分割、
均值漂移(Mean shift)、