Computing the Stereo Matching Cost with a Convolutional Neural Network

来源:互联网 发布:在手机淘宝怎么改评论 编辑:程序博客网 时间:2024/05/24 06:22

译:

摘要:

从矫正的图像对中提取深度信息,训练CNN预测两图如何匹配并且计算立体匹配损耗。成本由交叉成本聚合和半球匹配所改善。

1.介绍:

考虑如下问题:两张从不同位置的相机所摄的图像,目标是计算左图每个像素的差异。差异指的是左右两图的水平位置差异d,其中的差异可由深度z(即物体到相机的距离)(公式未知),上述问题变成了立体重建的子问题,即可从一张或多张图片中重建出3D的形状出来,一个典型的立体算法由四部分构成:1,匹配成本计算。2.成本聚合。3.优化。4.差异改进。 12步为计算匹配成本。34步为立体方法。

通过大量已知差异的小样本图像对来训练CNN。网络的输出用来初始化样本对的匹配成本。匹配成本由交叉聚合形成的相似图像像素构成。半球匹配和左右一致性检查造就了平滑抑制,可估算闭合区域的估算误差。我们进行亚像素增强并且采用一个中值滤波器和双边滤波器来得到最终的差异匹配。本文有俩贡献:

1.CNN如何用在立体匹配中。

2.准确率提升

2.相关工作:

其他人用地面真值信息来获取模型的参数。真值信息科用在获取模型参数上。

图1 两幅输入图片主要差别在物体的水平位置上。物体离相机越近有着更大的差异。输出就是右边的密度差异映射图,越热的颜色代表着更大的差异

3.计算匹配成本

典型的立体算法计算匹配成本是绝对差异的总和。数据集以左图的为模板,物理位置为P(X,Y),而正负样本为右图坐标。各自都有偏差。也许正样本的偏差小点,而负样本的偏差更大。正样本偏差不设置为0是为了后续的立体方法考虑。特别的,交叉成本聚合法的效果也很好。

3.2 网络结构

网络由8层构成,第一层卷积层,其余层为全连接层,输入为两个9×9的灰度图像块。第一个卷基层由32个5×5×1的核构成。23层各由200个神经元构成。3层之后,200维向量并成400维向量,经过全连接层。4至7层各300维,最终的8层由一个softmax函数映射出两个真值。产生分布代表两类(优匹配和差匹配)。123层的权重为固定的,每一层都有改进的线性单元。除了第八层。算法没有用到池化。网络包括60万参数。RGB的核函数就是5×5×3,而灰度图像的核函数就是5×5×1。每个数据集的最佳的网络结构不固定。

3.3 匹配成本

匹配成本直接由网络输出计算得到,我们应当考虑图像位置p和每个位置的坐标差异d。有三个需要注意的细节:

1.123层的输出应当每个位置p都计算一次,不需要对每个偏差d都重计算一次。

2.3层的输出可通过网络传递全像素图像中的所有位置生成而不是仅仅的9×9图像块。为了得到这个,采用23层的的卷积效果。2层是5×5×32卷积。3层是1×1×200的卷积。都产生200个特征映射。

3.同样的是,4到8层可由1×1大小的卷积来替换,为了计算单纯的前向传播中所有位置的输出。不幸的是,我们仍旧不得不对每个差异进行前向传递。

4. 立体方法

为了有效的评估匹配损耗,使用一种立体方案去配对它们,

4.1 交叉成本聚合cross-based cost aggregation

为了有效的评估匹配成本,需要立体方案,成本聚合考虑了领域的信息。更加稳定。

领域像素的信息可以一种固定窗口的模式来平均匹配成本。这个方法在窗口内有深度不连续时将会失效。我们更情愿那种可以自动选择每个像素领域的方法因此支撑平面只由相近深度的像素构成。在交叉成本聚合中,我们根据每个位置以相似深度值来建立局部的领域。

交叉成本聚合以根据每个位置建立交叉域为始。只要满足如下两个条件那么P位置的左膀将会延伸:

1)二者颜色的强度绝对值小于一个数

2)二者物理水平位置小于一个数

上下左右的膀子都类似建立起来。一旦我们知道了这四个膀子,就可以定义P的支撑域。即P垂直膀子上的点q的水平膀子。有个家伙建议聚合应该考虑立体对中两个图的支撑面,让UL和UR分别代表左右图的支撑域。我们定义结合支撑域Ud如下:匹配成本是由众多结合支撑域求平均的。i为迭代数。四次重复平均。输出就是。

4.2 半圆匹配semiglobal matching

通过对偏移量图像中添加平滑限制来优化匹配成本。定义取决于图像D的能量函数E(D)。refine matching cost 的时候加入的平滑约束限制。这一步就是在计算cost volumn的时候添加了点平滑的限制,仅此而已。

第一项为高匹配成本的差异惩罚项,第二项当领域差异为1时则添加惩罚P1,而第三项添加了更大的惩罚P2,当领域差异大于1。

并非在2维空间中最小化E(D),更希望以一种单方向动态管理的方式去最小化它。

这种方法增加了不必要的条纹干扰。因此在我们不打算优化的方向上我们将不会采用偏移图像平滑,半球匹配中,最小化能量E(D)在许多方向上,同时在最终结果中取平均。尽管有人说要选择16个方向,我们只在水平取2个垂直取2个方向。添加方向并没有提高系统的准确性。

这里P1和P2可以理解成是控制匹配点选择范围的变量,当值比较大的时候,惩罚较高,因此最好就取这个偏移量自身的成本,而如果当该方向上出现边缘,即像素差异较大时,则适当的降低惩罚,因此该点的偏移量可能就取到其他偏移量的成本之上了。不然这种边缘上的点成本最好还是取得比较宽泛点为好。不然找不到对应的点是不是很麻烦?

为了在方向r上最小化E(D),定义匹配成本C(P,D)。

第二项以防Cr变得太大同时并没有影响最优区分映射。参数p1和p2根据图像梯度设定因此差异跳跃与图像中的边缘是一致的。

4.3 计算视差图

视差图D由winner-take-all(WTA)计算而成。最小化C(P,D)。D(p)=argmindC(p,d)。

4.3.1 插值

Dl代表着左图为参考图片时的区别映射,Dr代表着参考图片为右图时的区别映射。DL和DR都包含闭合区域的误差。我们尝试去以左右一致性检测来检测这样的误差。标记每个位置P

对于闭合,左向平移直至有匹配正确的标签。

对于不匹配,改变方向。使用插值的中值。

4.3.2 亚像素增强
4.3.3 改良





0 0