其他分享
首页 > 其他分享> > 双目立体匹配修炼之路

双目立体匹配修炼之路

作者:互联网

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、双目立体匹配是什么?

思考一个问题:人的双眼是如何观察,感知现实的三维世界呢?
生活中的现象是:你不断的闭上左眼,再睁开,然后去看距离你较近的物体,你会发现这个物体的位置在变化;当你同样的方法去看距离较远的物体时,你会发现没有什么变化。
根据这个现象,我们引入了双目视觉

双目视觉:

(baidu)它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。

视差:

所谓的视差,即同一空间物理点在不同图像中的映像点对应起来后,会有一个相对差别,这个差别,我们称作视差,就是上面所说的当你睁眼闭眼的时候,近处的物体位置好像在变化。

“对极约束”概念:

首先,单眼看世界,比如左眼:Oc就是摄像机镜头中心,红色坐标系理解为相机坐标系,绿色的射线就是你的一束目光,也叫射线Ray,此时镜头中的某物体成像后,处于照片X的处
在这里插入图片描述
接着,双眼看世界:你的目光望向同一个物体,Oc为左相机,Oc`为右相机,绿色的ray相交。左边相机成像在X处,右边相机成像在
在这里插入图片描述

对极几何(Epipolar Geometry)

接下来这幅图:描述的是两幅视图之间的内在射影关系,与外部场景无关,只依赖于摄像机内参数和这两幅试图之间的的相对姿态
1.基线(baseline):直线Oc-Oc’为基线。

2.对极平面束(epipolar pencil):以基线为轴的平面束。

3.对极平面(epipolar plane):任何包含基线的平面都称为对极平面。

4.对极点(epipole):摄像机的基线与每幅图像的交点。比如,上图中的点e和e’。

5.对极线(epipolar line):对极平面与图像的交线。比如,上图中的直线l和l’。

6.点共面:点x,x’,摄像机中心Oc Oc’,空间点X是5点共面的。

7.极线约束:两极线上点的对应关系

在这里插入图片描述

如何计算得到深度呢?

来看一个景深相机的模型:不用过多解释,A,B,D三个点在左边相机中成像位置不同,在右边相机中成像在同一个位置,理由就是这三点都在右边相机的Ray上
在这里插入图片描述
这时,假如要得到A距离相机连线的位置,只需知道A点在左右相机成像中的视差即可。
在这里插入图片描述
视差公式:D= f * b / d * ps
f=Focal length
b=Baseline
d=Disparity value
ps=Pixel size
D=Depth

二、《Bilateral Grid Learning for Stereo Matching Network》论文学习

1.文章简介

摘要

立体匹配网络的实时性对于自动驾驶、机器人导航和增强现实(AR)等许多应用都是非常重要的。虽然近年来立体匹配网络取得了很大的进展,但在实时性和准确性之间的平衡仍然是一个挑战。本文提出了一种新的基于学习双边网格切片操作的保边代价体积上采样模型。切片层是无参数的,使得我们可以在学习到的导航图的指导下,从低分辨率的成本体中高效地获得高分辨率的高质量成本体。提出的成本量上采样模块可以无缝地嵌入到许多现有的立体匹配网络中,如GCNet、PSMNet和GANET。由此产生的网络在保持相当精度的同时,加速了几倍。在此基础上,我们设计了一个实时网络(称为BGNet),它的性能优于现有的实时深度立体匹配网络,以及一些基于Kitti立体数据集的复杂网络。

从摘要中我们知道,目前双目立体匹配算法一个问题在于实时性准确性间的一个平衡。而这篇文章的核心应该是"双边学习网格",那什么是双边学习网格呢?想知道什么是双边网格,得先了解双边滤波器

论文学习之路

该章节参考文章:
知乎:双边滤波——作者:Jargon
CSDN:双边滤波和双边网格——作者:亚古兽要进化
CSDN:双边格网(bilateral grid)——作者:flow_specter
知乎:Bilateral Grid直观理解——作者:七海
Paper2007:Real-time Edge-Aware Image Processing with the Bilateral Grid

双边滤波

为什么用双边滤波器呢?因为高斯滤波(均值滤波)去降噪,会较明显地模糊边缘,对于高频细节的保护效果并不明显。而双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息灰度相似性,达到保边去噪的目的

对于高斯滤波,仅用空间距离的权值系数核与图像卷积后,确定中心点的灰度值。即认为离中心点越近的点,其权重系数越大。 双边滤波中加入了对灰度信息的权重,即在邻域内,灰度值越接近中心点灰度值的点的权重更大,灰度值相差大的点权重越小。此权重大小,则由值域高斯函数确定。两者权重系数相乘,得到最终的卷积模板。由于双边滤波需要每个中心点邻域的灰度信息来确定其系数,所以其速度与比一般的滤波慢很多,而且计算量增长速度为核大小的平方.

对图像进行空间域滤波的方法是使用一个结构元素(核)来对原图像进行卷积。该图所展示待滤波图像P,像素值差断崖处即为图像中的某条边缘线,经过空间核Gs,值域核Gr相乘后的双边核,最后达到了保边去噪
在这里插入图片描述
看看下面这两张图:
高斯滤波在这里插入图片描述双边滤波在这里插入图片描述

OK,上面所讲其实就是,高斯滤波(均值滤波)很好,但其权值系数仅仅考虑像素空间信息,这样在像素差异较大的图像边缘处,边缘会被模糊掉,所以双边滤波器不但考虑距离中心点像素的远近,还考虑核中心点像素值的大小差距,即考虑邻域灰度信息的权重。但是该权重显然是一个需要不断评估且变化的权重系数,因此速度很慢。那么就有了接下来的双边网格

双边网格

双边滤波速度很慢 —> 加速,双边网格。如何来理解双边网格呢?
我们用下图粗略解释如何利用Bilateral Grid对一维图片进行双边滤波的操作
在这里插入图片描述
双边滤波的目的是在保留图片中edge的同时,可以平滑其他非edge部分。上图中的例子是一维图片(图a),两条橙色的线表示的是图片不同位置的像素值(intensity level)。文中提出的数据结构“Bilateral Grid”,其实就是一个 对输入图片扩展了一个维度的tensor(图b),新扩展出的那个range维度,表示的就是原图中的像素值;旧的sapce维度,对应的自然就是原图中的像素位置

传统的双边滤波:

因此传统的双边滤波,可以说是加权的高斯模糊:通过加权来保留edge

而《Real-time Edge-Aware Image Processing with the Bilateral Grid》文中作者所提出的双边网格:

从图c中可以看到,取回的值都是已经被平滑过的值了,因此实现了平滑功能;而edge由于在空间上不相邻的缘故则没有受到影响

看看原文中作者的例子:

在这里插入图片描述
可以看到

Bilateral Grid为啥速度快呢?

至此:双边滤波可以简单的理解为在空间域内考虑到色彩域的信息,综合权重进行滤波,但是直接根据双边滤波权重的公式进行计算的话,常常在速度上令人着急,因此提出了在双边网格上模拟双边滤波的想法,在三维上既能够考虑到色彩域的信息,又能够加快速度。

现在将快速双边滤波的过程简洁的描述为: splat/blur/slice, 也就是在图像上进行采样操作,投影到3D网格上,在3D上进行滤波,再内插出每个( x , y ) (x,y)(x,y)上的值,重建出滤波后的影像。

三、常用数据集

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

标签:立体匹配,Bilateral,双目,滤波,网格,像素,修炼,Grid,双边
来源: https://blog.csdn.net/weixin_46200756/article/details/120555934