当前位置:   article > 正文

双目立体视觉建立深度图_立体匹配成像算法BM,SGBM,GC,SAD一览

两个单目做成一个双目 如何计算深度图

在深度相机的主流技术方案Structure Light,ToF,Stereo Dual)中,主动双目成像方案可以基于低成本的硬件,获得高分辨率、高精度的深度图像,但是立体匹配算法(stereo matching)复杂,对计算资源消耗很大。那我们介绍下几种经典的双目匹配的算法。

【双目匹配】

双目立体视觉理论建立在对人类视觉系统研究的基础上,通过双目立体图象的处理,获取场景的三维信息,其结果表现为深度图,再经过进一步处理就可得到三维空间中的景物,实现二维图象到三维空间的重构。Marr-Poggio-Grimson [1] 最早提出并实现了一种基于人类视觉系统的计算视觉模型及算法。双目立体视觉系统中,获取深度信息的方法比其它方式(如由影到形方法)较为直接,它是被动方式的,因而较主动方式(如程距法)适用面宽,这是它的突出特点。

双目立体视觉系统中,深度信息的获得是分如下两步进行的:

(1) 在双目立体图象间建立点点对应,

(2) 根据对应点的视差计算出深度。

第一部分,也就是对应点问题,是双目立体视觉的关键; 第二部分是摄像机模型问题。双目立体视觉模型中,双摄像机彼此参数一致,光轴平行且垂直于基线,构成一共极性 (epipolar) 结构,这样做是为了缩小对应的搜索空间,只有水平方向的视差,简化了对应过程

f2723c4ac47d654fbf95495efa596899.png

【立体匹配算法介绍】

BM

其中minDisparity是控制匹配搜索的第一个参数,代表了匹配搜苏从哪里开始,numberOfDisparities表示最大搜索视差数uniquenessRatio表示匹配功能函数,这三个参数比较重要,可以根据实验给予参数值。

该方法速度最快,一副320*240的灰度图匹配时间为31ms

28d9d48c6371d77b8b32f271f273f3f6.png
0d91005c5a95397ed135ab415e28a83b.png

SBGM

SGBM算法 Stereo Processing by Semiglobal Matching and Mutual Information

作为一种全局匹配算法,立体匹配的效果明显好于局部匹配算法,但是同时复杂度上也要远远大于局部匹配算法。算法主要是参考Stereo Processing by Semiglobal Matching and Mutual Information。

通过选取每个像素点的disparity,组成一个disparity map,设置一个和disparity map相关的全局能量函数,使这个能量函数最小化,以达到求解每个像素最优disparity的目的。

能量函数形式如下:

f507b78f79c0955e6e9d867191896dbe.png

D指disparity map。E(D)是该disparity map对应的能量函数。

p, q代表图像中的某个像素

Np 指像素p的相邻像素点(一般认为8连通)

C(p, Dp)指当前像素点disparity为Dp时,该像素点的cost

P1 是一个惩罚系数,它适用于像素p相邻像素中dsparity值与p的dsparity值相差1的那些像素。

P2 是一个惩罚系数,它适用于像素p相邻像素中dsparity值与p的dsparity值相差大于1的那些像素。

I[.]函数返回1如果函数中的参数为真,否则返回0

利用上述函数在一个二维图像中寻找最优解是一个NP-complete问题,耗时过于巨大,因此该问题被近似分解为多个一维问题,即线性问题。而且每个一维问题都可以用动态规划来解决。因为1个像素有8个相邻像素,因此一般分解为8个一维问题。

8350ee3a2cdf867417cea6c4da975194.png
500aed8151388ab14499ef37d7582228.png

OpenCV中自带了BM和SBGM,效果对比如下图:

b5b0b195f8518308d5b05e84dc52ec9f.png

GC

GC算法 算法文献:Realistic CG Stereo Image Dataset with Ground Truth Disparity Maps

6ead2dc1b8166425a78458f2d16dcb2c.png

SAD

SAD(Sum of absolute differences)是一种图像匹配算法。基本思想:差的绝对值之和。此算法常用于图像块匹配,将每个像素对应数值之差的绝对值求和,据此评估两个图像块的相似度。该算法快速、但并不精确,通常用于多级处理的初步筛选。

基本流程

输入:两幅图像,一幅Left-Image,一幅Right-Image
对左图,依次扫描,选定一个锚点:

(1)构造一个小窗口,类似于卷积核;(2)用窗口覆盖左边的图像,选择出窗口覆盖区域内的所有像素点;(3)同样用窗口覆盖右边的图像并选择出覆盖区域的像素点;(4)左边覆盖区域减去右边覆盖区域,并求出所有像素点灰度差的绝对值之和;(5)移动右边图像的窗口,重复(3)-(4)的处理(这里有个搜索范围,超过这个范围跳出);(6)找到这个范围内SAD值最小的窗口,即找到了左图锚点的最佳匹配的像素块。

5c1a649a4b310aed50746b6229488143.png

【匹配陷阱】

以下几种情形生成的深度图像可能会有缺陷:

(1) 光学失真和噪声(亮度、色调、饱和度等失衡)

f2cb06a81727429c307e46991e2abe6e.png

(2) 平滑表面的镜面反射

高光处无细节,无特征点。

68c86166e334bae055209efb473fa63a.png

(3) 投影缩减(Foreshortening)

摄影测量学中的一个概念,指物体近大远小。由于相对左右照相机距离的不同,看到的同一个物体在左右视图中的投影尺寸也会不同,造成匹配障碍。

cff676502a8dc215d38545a827bb2ea4.png

(4) 透视失真(Perspective distortions)

由于镜头畸变造成的被摄物体失真。譬如画面中的鼻子被拉长。

3a1d97eb46392072419c6b65df1267f4.png

(5) 低纹理(Low texture)

无细节。主动纹理光可以解决这一问题。

f31e67d3c382eafae76e04f698386c66.png

(6) 重复纹理(Repetitive/ambiguous patterns)

高度相似的特征点描述向量接近,行扫描时难以判断哪一个是对应的特征点。

28bc3301af98f6e07160e3f8c4925f3a.png

(7) 透明物体

同低纹理。

5d5ab5b47cdeb9bd0251985dce3fb286.png

(8) 重叠和非连续

纹理中断,不利于行查找。

fa327abd2b82d1358fd690e26a62038b.png

来源:知乎,作者:浩克匠心

链接:https://zhuanlan.zhihu.com/p/32752535

End

声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/90326
推荐阅读
相关标签
  

闽ICP备14008679号