Stereo matching 双目立体匹配

Stereo matching 双目立体匹配,第1张

深度学习开创了3D真实场景下,获取深度的新道路。

分享一下CVPR2019的文章:Group-wise Correlation Stereo Network

X. Guo, K. Yang, W. Yang, X. Wang and H. Li:  Group-wise correlation stereo network . CVPR 2019.

     立体匹配估计一对矫正过的图像之间的视差(disparity),这对深度感知、自动驾驶和枣册滑其它相关任务非常重要。之前的学术工作主要是算出代价量(cost volume),通过交叉相关或者是在所有的视差层级上进行左右特征的 concat,然后用一个 2D或3D的卷积网络来回归出视差图。这篇论文中,我们提出要通过分组相关(group-wise correlation)来算出代价量。沿着通道维度将左、右特征划分为若干组,然后在每组中计算相关图,进而得到多个匹配代价 proposals,然后打包到代价量中。分组相关姿毁为特征的相似度的计算提供了有效的表示,而不会像完全相关(full correlation)一样造成过凳腊多的信息丢失。和之前的方法相比,它在降低参数个数的同时也可以保持原先的性能。这篇论文也改进了 3D stacked Hourglass 网络,提升性能,降低推理计算成本。我们在 Scene Flow, KITTI2012 和 KITTI2015 数据集上进行了实验,证明该方法的性能。

       一个像素点的视差d 可以通过Fl/d 转换为深度值,F FF表示相机的焦距,l ll是两个相机中心点的距离。因此,深度的精度随着视差预测的精度而提升。

       传统的立体方法通常由以下四个步骤组成,匹配代价计算、代价聚合、视差优化、和后处理。匹配代价计算为左图像块和可能对应的右图像块提供初始相似性度量,这一步对立体匹配很关键。一些常用的匹配代价包括绝对差值(SAD)、平方差之和(SSD)、归一化相关系数(NCC)。cost aggregation和optimization steps则结合了上下文匹配代价、正则化项来得到更强大的视差预测. 

       基于深度学习的方法

用神经网络来计算matching cost,视差优化,匹配代价聚合,还有一些后处理过程。GC-NET,PSM-NET(spatial parmaid pooling model,

        双目立体匹配解决问题为在极线上查找同一物理点在左右相机图像的对应投影位置,从而得锋渣明到视差图,用于双目系统的物体深度估计。其核心思想是计算两个像素的相似度度量,选择最佳匹配点。基本步骤为预处理,代价计算,代价聚合,视差计算,视差优化,后处理6个步骤。随着大量合成数据集出现,基于深度学习的算法性能已经显著超过非深度学习算法。GANet将人工设计的算法转换为,基于数据的函数逼近学习过程,性能在KITTI 立体匹配竞赛中名列前茅。本文主要介绍GANet涉及算法,包含经典非深度学习算法(代价滤波、SGBM),首个端到端网络GCNet 和GANet原理;最后对比室外场景下性能效果。

        基于单像素相似度度量的方式,视差结果存在较大噪声。基于滤波的代价聚合方法,能有效降噪;使用原图的引导滤波器[1]方式或者十字交叉臂[2]的自适应形状的代价聚合方式,可实现快速降噪同时保持边缘特性。

    SGBM是opencv实现经典立体匹配算法之一,代价聚合融合局部均值滤波和SGM聚合两种方式,整体流程图见图1。

1)代价计算

        分别计算水平梯度方向图像和原始图像的BT代价(考虑采样影响的亮度差值),两者简单相加求和得到初始代价值。

2)代价聚合

        代价聚合包含局部均值滤波和SGM聚合。局部均值滤波使用固定窗口大小的均值滤波聚合代价。SGM聚合[4]是经典算法,核心思想是多路径代价聚合,每条路径上计算本身代价项和惩罚项。

        SGM全局能量函数定义为:

为视差图,大小为HxW, 每个像素取值最大为 .给定视差 , 为像素p处本身代价值,第二项为邻域像素视差差值为1的惩罚项,控制平滑性,第三项为邻域像素视差差值较大的惩罚项,控制图像边缘位置不连续性。 共有 可能性,直接优化困难。

        SGM将其转换为16个方向1D路径代价求和方式来近似加速计算,时间复杂度

        单个路径方向r上代价计算为,其中第一项为本身代价值,第二项为惩罚项,第三项为防止累积造成数值过大。

多条路径代价求和得到最终聚合代价值

        对于每个方向的每个像素计算Dmax次,中间项 可以预先计算,时间复杂度为O(Dmax)。

3)视差计算

        每个像素位置采用WTA(赢家通吃)的策略,选择代价最小银告的视差值

4)后处理

        使用显著性一致校验检测异常点,亚像素级增强使得离散视差值连续化,获取更高精度的视差,最后使用左右一致性检测异常点。

        基于深度学习强大的特征提取能力,深度卷积网络特征逐渐被用于匹配代价计算。随着大量合成视差估计数据集的出现,DispNet[5]成为首个实现端到端可学习的视差估计网络。该网络借鉴了光流估计FlowNet思想,本质上两者处理问题一致,均解决输入同一场景两幅图像,输出每个像素偏移量的问题。GC-Net[6]提出4D代价空间和3D卷积做代价聚合,真正实现视差估计全流程参数化学习过程。

        整体计算过程为:

        (1)左右相机图像使用深度卷积网络提取特征图

        (2)拼接每个像素位置对应视差水平的特征,得到4D代价空间,维度为 ;

        (3)在高度、宽度和视差3个维度做3D卷积,代价聚合;

        (4)使用soft argmin回归视差,训练损失函数为smooth L1。

        相对直接度量特征距离的方式,GCNet巧妙使用组合4D代价空间和3D卷积代价聚合,通过可学习权重得到更多代价聚梁滑合方式。如果直接计算c维特征的距离度量,得到 维的代价空间,这种方式只能衡量特征的相对大小,限制代价计算方式多种可能性。GCNet中每组3D滤波器,计算每一个特征线性加权代价,并融合空间域和视差域的代价,最后所有特征对应代价求和得到聚合代价值。公式如下:

                    

        传统立体匹配算法通常选择代价最小的视差,即argmin *** 作。这种 *** 作得到离散精度视差,视差精度低,同时 *** 作不可微,不能使用BP算法训练。GCNet提出soft argmin方式回归视差,即计算代价归一化概率加权的视差值,因为视差和代价成反比,所以有负号。

                    

        视差回归属于稠密像素级预测任务,而高分辨率特征图对稠密任务性能起到至关重要的作用。GCNet采用encoder-decoder方式做代价聚合;PSMNet[7]使用stacked hourglass 提取特征,进一步使用类似stacked hourglass方式堆叠更多3D滤波器做代价聚合,提升匹配效果。GANet[8]提出guided SGA和LGA层进行代价聚合 *** 作,提升立体匹配的性能同时也降低计算量。

        整体结构见图2:左右图像首先经过特征提取器提取特征,组合4D代价空间,然后使用3D卷积和guided sga做代价聚合,最后回归像素点的视差值。

1)SGA

        相比传统SGM算法,SGA层使用归一化权重加权和计算单一路径代价,权重由图像几何纹理特征控制。公式如下:

最后在4个方向上取最大的代价输出

         相对于SGM中使用固定惩罚项的方式,SGA层学习可变权重,而且权重由图像空间纹理和上下文信息引导学习,使得不同区域(平坦、边缘)具有不同的权重值。

          3D卷积代价聚合方式,可以被堆叠多次,扩大聚合像素范围,每个像素位置计算复杂度为 ;SGA层每次计算均聚合整行或者整列像素的代价,计算复杂度为 。所以说SGA层代价聚合效果优于3D卷积,同时计算复杂度低;代价是需要更多的参数量,每个像素位置均需要存储一组加权参数。

2)LGA层

  LGA层使用归一化权重加权代价和,聚合代价。公式如下

        乍看很像归一化权重的3D卷积 *** 作,不同点是3D卷积在空间和视差水平上权重共享,而lga层权重不共享,每个像素位置,视差水平都有一组权重。这种 *** 作更类似快速边缘保持滤波器guided filter,   文章后续试验表明添加lga层在物体边缘位置效果更好。

        测试对比sgbm和ganet在室外场景图像效果。sgbm算法在不同场景下有一定的偏差,但效果整体比较稳定;GANet在大部分区域匹配非常精确, 在无纹理区域(地面、天空)更加平滑,物体边缘效果精确,但是在近距离的重复区域仍存在较大偏差。这主要是GANet特征提取器采用多次下采样,再上采样恢复高分辨率特征导致。HRNet[9]使用多分辨率子网并行计算,多尺度融合的方式获取高分率特征。在人体姿态估计、像素级分类等任务中,都被证明有效。试验HRNet做特征提取器,近距离的重复区域的立体匹配效果会更加精确。

        随着大量标注数据集出现,基于深度学习的立体匹配算法在特定场景下的效果显著优于非深度学习算法。GANet将经典SGM算法参数化表示,基于数据学习参数;同时摒弃深度卷积网络权值共享的机制,添加基于图像纹理控制的权重 *** 作层,在立体匹配数据集取得优异性能。这种结合领域知识设计的网络架构是无法通过最近盛行的网络架构搜索得到的。

1. C. Rhemann, A. Hosni, M. Bleyer,等. Fast cost-volume filtering for visual correspondence and beyond[J].

2. Xing Mei, Xun Sun, Mingcai Zhou,等. On Building an Accurate Stereo Matching System on Graphics Hardware[C]// IEEE International Conference on Computer Vision Workshops, ICCV 2011 Workshops, Barcelona, Spain, November 6-13, 2011. IEEE, 2011.

3.  https://www.jianshu.com/p/07b499ae5c7d

4. Heiko Hirschmüller. Stereo Processing by Semi-Global Matching and Mutual Information[J]. IEEE Transactions on Pattern Analysis &Machine Intelligence, 2007, 30(2):328-341.

5. Mayer N , Ilg E , Husser P , et al. A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Estimation[J]. 2015.

6.Kendall A , Martirosyan H , Dasgupta S , et al. End-to-End Learning of Geometry and Context for Deep Stereo Regression[J]. 2017.

7.Chang J R , Chen Y S . Pyramid Stereo Matching Network[J]. 2018.

8.Zhang F , Prisacariu V , Yang R , et al. GA-Net: Guided Aggregation Net for End-to-end Stereo Matching[J]. 2019.

9.Sun K , Xiao B , Liu D , et al. Deep High-Resolution Representation Learning for Human Pose Estimation[J]. 2019.

与普通的图像模板匹配不同的是,立体匹配是通过在两幅或多幅存在视点差异、几何畸变、灰度畸变、噪声干扰的图像对之间进行的,不存在任何标准模板进行匹配。立体匹配方法一般包含以下三个问题:(1)基元的选择,即选择适当的图像特征如点、直线、相位等作为匹配基元(2)匹配的准则,将关于物理世界的某些固有特征表示为匹配所必须遵循的若干规则,使匹配结果能真实反映景物的本来面目(3)算法结构,通过利用适当的数学方法设计能正确匹配所选择基元的稳定算法。

根据匹配基元的不同,立体视觉匹配算法目前主要分为三大类,即区域匹配、相位匹配和特征匹配:

基于区域灰度的匹配算法是把一幅图像(基准图)中某一点的灰度邻域作为模板,在另一幅图像(待匹配图)中搜索具有相同(或相似)灰度值分布的对应点邻域,从而实现两幅图像的匹配。这类算法的性能取决于度量算法及搜索策略的选择。另外,也必须考虑匹配窗口大小、形式的选择,大窗口对于景物中存在的遮挡或图像不光滑的情况会更多的出现误匹配,小窗口则不具有足够的灰度变化信息,不同的窗口形式对匹配信息也会有不同的影响。因此应该合理选取匹配区域的大小和形式来达到较好的匹配结果。

相位匹配是近二十年发展起来的一种匹配算法,相位作为匹配基元,即认为图像对中的对应点局部相位是一致的。最常用的相位匹配算法有相位相关法和相位差——频率法,虽然该方法是一种性能稳定、具有较强的抗辐射抗透视畸变能力、简单高效、能得到稠密视差图的特征匹配方法。但是,当局部结构存在的假设不成立时,相位匹配算法因带通输出信号的幅度太低而失去有效性,也就是通常提到的相位奇点问题,在相位奇点附近,相位信息对位置和频率的变化极为敏感,因此用这些像素所确定的相位差异来衡量匹配误差将导致极不可靠的结果。此外,相位匹配算法的收敛范围与带通滤波器的波长有关,通常要考虑相位卷绕,在用相位差进行视差计算时,由于所采用的相位只是原信号某一带通条件下的相位,故视差估计只能限制在某一限定范围之内,随视差范围的增大,其精确性会有所下降。

基于特征的图像匹配方法是目前最常用的方法之一,由于它能够将对整个图像进行的各种分析转化为对图像特征(特征点、特征曲线等)的分析的优点,从而大大减小了图像处理过程的计算量,对灰度变化、图像变形、噪音污染以及景物遮挡等都有较好的适应能力。

基于特征的匹配方法是为使匹配过程满足一定的抗噪能力且减少歧义性问题而提出来的。与基于区域的匹配方法不同,基于特征的匹配方法是有选择地匹配能表示景物自身特性的特征,通过更多地强调空间景物的结构信息来解决匹配歧义性问题。这类方法将匹配的搜索范围限制在一系列稀疏的特征上。利用特征间的距离作为度量手段,具有最小距离的特征对就是最相近的特征对,也就是匹配对。特征间的距离度量有最大最小距离、欧氏距离等。

特征点匹配算法严格意义上可以分成特征提取、特征匹配和消除不良匹配点三步。特征匹配不直接依赖于灰度,具有较强的抗干扰性。该类方法首先从待匹配的图像中提取特征,用相似性度量和一些约束条件确定几何变换,最后将该变换作颤坦旅用于待匹配图像。匹配中常用的特征基元有角点、边缘、轮茄凳廓、直线、颜色、纹理等。同时,特征匹配算法也同样地存在着一些不足,主要表现为:

(l)特征在图像中的稀疏性决定了特征匹配只能得到稀疏的视差场,要获得密集的视差场必须通过使用插值的过程,插值过程通常较为复杂。

(2)特征的提取和定位的准确与否直接影响特征匹配结果的精确度。

(3)由于其应用场合的局限性,特征匹配往往适用于具有特征信息显著的环境中,在缺少显著主导特征环境中该方法有很大困难。

总之,特征匹配基元包含了算法编程上的灵活性以及令人满意的统计特性。算法的许多约束条件均能清楚地应用于数据结构,而数据结构的规则性使得特征匹配非常适用于硬件设计。例如,基于线段的特征匹配算法将场景模型描绘成相互联结的边缘线段,而不是区域匹配中的平面模型,因此能很好地处理一些几何畸变问题,对对比度和明显的光照变化等相对稳定。特征匹配由于不直接依赖于灰度,计算量小,比基于区域的匹配算法速度快的多。且由于边缘特征往往出现在视差不连续的区域,特征匹配较易处理立体视觉匹配中的视差不连续问信瞎题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12496913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存