双目立体匹配

立体匹配共四步:匹配代价计算匹配代价聚集视差计算视差优化

立体匹配主要解决两个问题:

一个是低纹理区域的视差估计

一个是深度不连续区域的视差估计,也就是遮挡区域

图像分割(Image Segmentation)

主要目的也就是将图像(image)分割成若干个特定的、具有独特性质的区域(region),然后从中提取出感兴趣的目标(object)

2003

[1] Stereo matching using belief propagation (BP)

改进:置信度传播算法进行视差求精。一幅图加上对应像素标签可看成是一个马尔科夫场,有马尔科夫场就可以利用BP算法进行优化求解。其中标签是像素的视差值,视差值有一定范围,BP算法在空间内找到使全局能量最小的视差值。

BP有两大优点,第一个是信息不对称,第二是BP的消息值是自适应的,即BP往往在低纹理区域中能够将消息传递到很远,但在深度不连续区域停止传递。

2004

[2]. Bleyer and M. Gelautz. A layered stereo algorithm using image segmentation and global visibility constraints. ICIP 2004.

Segm+visib

Segm

+visib

66.8

1.30

51

1.57

29

6.92

65

0.79

112

1.06

106

6.76

118

5.00

30

6.54

15

12.3

26

3.72

90

8.62

64

10.2

96

5.40

图割算法全局立体匹配

改进:利用颜色分割解决在匹配代价聚集过程中无纹理及边界问题;层分配得到匹配代价函数,采用贪婪算法得到代价函数的局部最小值。(使用3*3window SAD计算匹配代价,使用最小二乘误差法的推导每个分割块的平面方程Segment-based stereo matching using belief propagation and a self-adapting dissimilarity measure,并用于层提取步骤)无法处理遮挡和分段间的不连续。

算法流程:

[3] Efficient graph based image segmentation

一种基于图表示(graph-based)的图像分割方法。图像区域之间的边界定义是图像分割算法的关键,分割算法就是利用在图表示(graph-based)下图像区域之间边界的定义的判断标准,使用贪心选择(greedy decision)来产生分割。该算法在时间效率上,基本上与图像的图表示的边数量成线性关系,而图像的图表示的边与像素点成正比,也就说图像分割的时间效率与图像的像素点个数成线性关系。这个算法有一个非常重要的特性,它能保持低变化(low-variability)区域的细节,同时能够忽略高变化(high-variability)区域的细节,对图像有一个很好的分割效果(能够找出视觉上一致的区域,即高变化区域有一个很好聚合,能够把它们分在同一个区域)。

2006

[4]L. Wang, M. Liao, M. Gong, R. Yang, and D. Nistér. High-quality real-time stereo using adaptive cost aggregation and dynamic programming. 3DPVT 2006.                                                     

[5]A. Klaus, M. Sormann and K. Karner. Segment-based stereo matching using belief propagation and a self-adapting dissimilarity measure. ICPR 2006.

2003基础上进行。在图像分割基础上融入了置信度传播和自适应非相似测度方法,在一定程度上减少了“块效应”,保留了细节部分,但算法计算复杂度高, 花费时间长

[6] Stereo for Image-Based Rendering using Image Over-Segmentation

图割法,采用过分割将分割区域细化,在高纹理区域视差图相对准确的,低纹理区域存在较大的误差。

假设每个分割区域为视差连续的平滑平面。实际场景中不能满足假设,这会造成匹配精度不高,分割区域边缘的不平滑,在三维视图中容易形成断层(视差不连续)。

2008

[7] H. Hirschmüller. Accurate and efficient stereo processing by semi-global matching and mutual information. CVPR 2005, PAMI 30(2):328-341, 2008.

半全局(动态规划)同SGM

半全局立体匹配存在以下几种缺陷:(1)窗口大小的确定困难:窗口太大计算量大,且在深度不连续区域会产生前景膨胀效应,边缘的效果很差;窗口太小则无法包含物体的全部纹理特征,造成匹配结果的多义性。(2)用于计算代价的值仅仅是图像的灰度值或是低阶差分,不能很好的描述特征。即使是使用了非参数的Census变换,也仅仅是增强了对噪声的鲁棒性,并不能解决特征描述不充分的问题。

[8] Q. Yang, L. Wang, R. Yang, H. Stewénius, and D. Nistér. Stereo matching with color-weighted correlation, hierarchical belief propagation and occlusion handling. PAMI 2008.

 

[9] D. Min and K. Sohn. Cost aggregation and occlusion handling with WLS in stereo matching. IEEE TIP 2008.

CostAggr+occ

CostAggr

+occ

82.8

1.38

57

1.96

63

7.14

70

0.44

95

1.13

110

4.87

107

6.80

85

11.9

77

17.3

98

3.60

84

8.57

60

9.36

88

6.2

改进:(遮挡问题)确定遮挡像素的候选集,在候选集中设定合理的代价函数。采用几何与光度约束检测不对称遮挡,计算相邻像素的视差值确定像素是否可见。遮挡像素的视差通常大于被遮挡像素的视差

假设极线平行,定义了一个能量函数,通过数值方法求解迭代方程来求解视差计算中最小值问题。利用高斯赛德尔法、多尺度法、自适应插值法等方法视差优化。其中,为在无纹理区域的邻域中使用平滑约束,需利用能量函数加权最小二乘法(WLS)聚集邻域内充足的纹理信息进行匹配。

2009

[10] Hirschmuller, H. and Scharstein, D. (2009). Evaluation of stereo matching costs on images with radiometric differences. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 31(9):1582–1599.

[11] Cross-based local stereo matching using orthogonal integral images.

2012

[12] Q. Yang. A non-local cost aggregation method for stereo matching. CVPR 2012.

NonLocalFilter(下文以NL为缩写)

NonLocal-Filter

60.1

1.47

67

1.85

57

7.88

86

0.25

66

0.42

49

2.60

58

6.01

57

11.6

67

14.3

45

2.87

54

8.45

55

8.10

60

5.48

改进:support window在视察估计上普遍具有陷入局部最优的缺陷,提出了基于全局最小生成树进行代价聚合。利用颜色信息建立像素之间关系的最小生成树MST(全称是最小权重生成树),像素之间的关系一目了然,减少代价聚合的计算时间。

全局算法。以全图所有的像素作为节点,构建过程中不断删除权值较大的边,然后采用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法进行计算,得到全图像素之间的关系,并基于这层关系,构建代价聚合。

2013

[13] D. Chen, M. Ardabilian, X Wang, and L. Chen. An improved non-local cost aggregation method for stereo matching based on color and boundary cue. ICME 2013.

对2012 A non-local cost aggregation method for stereo matching的改进

2014

[14] Cross-Scale Cost Aggregation for Stereo Matching(下文以CSCA为缩写)

在2012 A non-local cost aggregation method for stereo matching基础上做的(下同)

改进:利用多尺度代价聚类模型(简单的对图像进行高斯下采样,得到的多幅成对图像(一般是5副))

多尺度是框架,融合多种代价聚合算法(NL、ST、BF、GF)

算法流程:

https://i-blog.csdnimg.cn/blog_migrate/da75b8f8ffacd3da5f81648fb1026b1e.png

[15] Segment-Tree based Cost Aggregation for Stereo Matching

改进:MST。NL应用在上采样,stereo matching算法时间复杂度较高,采用下采样图像计算视差图,在对低分辨率的视差图上采样成为高分辨率的视差图,可提高几倍速度,但视差图效果不如直接在高分辨率图像上生成的视差图效果好。NL算法对带噪声及纹理丰富的图像处理效果很差,会导致MST的构造出现错误,基于MST对纹理进行处理,作者给出了MST参数的经验值但时间复杂度增加,我觉得对纹理处理效果一般。视差精炼:先利用left-right-check对左右视差图进行处理,得到视差图的稳定点和不稳定点,同时直接在左视差图上定义新的代价值,再同样利用原图所得的MST,对所有像素点重新进行代价聚合,最后利用WTA算法估计新的视差。

算法流程:

https://i-blog.csdnimg.cn/blog_migrate/bd30b14373c66ba78742f37c29335cc7.pnghttps://i-blog.csdnimg.cn/blog_migrate/7ed8ba8ed313cd6db3da9bf9236a0be9.pnghttps://i-blog.csdnimg.cn/blog_migrate/316af04192acd6b106ac7b27c7226f58.png

2015

[16] Žbontar, Jure, Lecun Y. Stereo Matching by Training a Convolutional Neural Network to Compare Image Patches[J]. 2015, 17(1):2287-2318.

深度学习

基于patch的提取与比较,学习其相似性得到一个matching cost,并将正确匹配的patch定义为正样本,其他为负样本。后处理包括:cross-based cost aggregation, semi-global matching, a left-right consistency check, subpixel enhancement, a median filter, and a bilateral lter. fast 和accurate两个版本. 网络的输出用来初始化cost, 其实就是对score求反,score越高,代价cost越小。 架构的特点: 1. 对于两个sub-network,每个pixel只需要被计算一次,不需要每个视差都算一遍。 2. 对两个sub-network ,可以通过输入全图一次前向传播得到所有像素的输出.3. 全连接层的输出也可在一个前向pass中得到,方法是替换fc层为1*1的卷积层,但我们需要对每个视差都计算一遍forward pass。那么,对每幅图我们需要计算一次sub-network ,而fc层需要run d次(d是disparity range)(而在fast 结构中,只有dot product需要被运行d次.)

GitHub:https://github.com/jzbontar/mc-cnn

 [17] Computing the Stereo Matching Cost with a Convolutional Neural Network(MC-CNN)

深度学习

通过训练卷积神经网络来预测两个图像块的匹配程度,使用它来计算立体匹配代价。代价定义为基于交叉的代价聚合和半全局匹配,利用左右一致性检查来消除在遮挡区域的误差。

[18] MatchNet: Unifying feature and metric learning for patch-based matching

深度学习

Github: https://github.com/hanxf/matchnet

The architecture provided in the paper is divided into two parts:A (Feature network) and B (metric network), which can be regard as extracting and descriptor.

 

2016

[19] A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Estimation

深度学习

两个模型Dispnet、SceneFlownet;

[20] (LW-CNN) look wider to match image patches by cnn

2017

[21] Improved Stereo Matching With Constant Highway Networks and Reflective Confidence Learning

深度学习

提出了一种新的highway network架构,它基于多级加权残差的跳层连接(multilevel weighted residual shortcuts)的方式,计算每个可能视差值的匹配误差,并利用复合损失函数进行训练,支持图像块的多级比较。然后后期处理步骤用第二个CNN网络汇集了(pooling)从多个视差值中获取的全局信息。这个网络的输出包括图像的视差图以及预测结果的置信度,前者没有采用过去的WTA策略,后者是作者在训练网络时用一种新技术来实现的,该技术可称之为“反射损失”,这个置信度在精细化步骤中可用于更好地检测异常点。

[22] Cascade Residual Learning: Stereo Matching

 

[23] CVPR 2017, 有人提出将CNN+CRF混合模型,也实现了双目视差的end-to-end计算。

未加入年份:

BF

GF

Convolutional neural network using multi-scale information for stereo matching cost computation

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
双目立体匹配是一种计算机视觉中的技术,主要用于将双目摄像头获取的两个视角的图像进行配准,获得二者之间的深度信息。Python是一种流行的编程语言,被广泛应用于科学计算和计算机视觉领域。 双目立体匹配算法旨在通过分析两个视角上的图像,找到对应点的像素坐标,进而计算该点的深度。这个过程涉及到图像预处理、特征提取以及匹配搜索等步骤。 在Python中,有许多开源的库和工具可用于实现双目立体匹配。例如,OpenCV库提供了丰富的图像处理和计算机视觉算法,包括双目立体匹配算法。使用OpenCV,我们可以通过加载两个视角的图像,获取它们的特征点,然后应用立体匹配算法来生成深度图。 Sad(Sum of Absolute Differences)是一种常用的匹配代价度量方法,用于计算两个像素块之间的差异。在双目立体匹配中,Sad是一种常用的代价度量方法之一,用于衡量两个像素块之间的相似度。通过计算像素块的Sad值,我们可以确定最佳匹配,并从而估计深度信息。 Python作为一种易学易用的编程语言,广泛运用于双目立体匹配的实现和应用中。它具有丰富的图像处理和计算机视觉库,并且有着不断更新和完善的社区支持。与其他编程语言相比,Python的语法简洁直观,使得双目立体匹配算法的实现更加便捷和高效。 总而言之,双目立体匹配是计算机视觉中的一项重要技术,而Python作为一种流行的编程语言,能够提供丰富的工具和库来实现该技术。通过使用Python和相关的图像处理库,我们可以实现双目立体匹配算法,从而获取深度图像,并在诸多应用领域中发挥其重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beryl2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值