在深度相机的主流技术方案Structure Light,ToF,Stereo Dual)中,主动双目成像方案可以基于低成本的硬件,获得高分辨率、高精度的深度图像,但是立体匹配算法(stereo matching)复杂,对计算资源消耗很大。那我们介绍下几种经典的双目匹配的算法。
【双目匹配】
双目立体视觉理论建立在对人类视觉系统研究的基础上,通过双目立体图象的处理,获取场景的三维信息,其结果表现为深度图,再经过进一步处理就可得到三维空间中的景物,实现二维图象到三维空间的重构。Marr-Poggio-Grimson [1] 最早提出并实现了一种基于人类视觉系统的计算视觉模型及算法。双目立体视觉系统中,获取深度信息的方法比其它方式(如由影到形方法)较为直接,它是被动方式的,因而较主动方式(如程距法)适用面宽,这是它的突出特点。
双目立体视觉系统中,深度信息的获得是分如下两步进行的:
(1) 在双目立体图象间建立点点对应,
(2) 根据对应点的视差计算出深度。
第一部分,也就是对应点问题,是双目立体视觉的关键; 第二部分是摄像机模型问题。双目立体视觉模型中,双摄像机彼此参数一致,光轴平行且垂直于基线,构成一共极性 (epipolar) 结构,这样做是为了缩小对应的搜索空间,只有水平方向的视差,简化了对应过程
【立体匹配算法介绍】
BM
其中minDisparity是控制匹配搜索的第一个参数,代表了匹配搜苏从哪里开始,numberOfDisparities表示最大搜索视差数uniquenessRatio表示匹配功能函数,这三个参数比较重要,可以根据实验给予参数值。
该方法速度最快,一副320*240的灰度图匹配时间为31ms
SBGM
SGBM算法 Stereo Processing by Semiglobal Matching and Mutual Information
作为一种全局匹配算法,立体匹配的效果明显好于局部匹配算法,但是同时复杂度上也要远远大于局部匹配算法。算法主要是参考Stereo Processing by Semiglobal Matching and Mutual Information。
通过选取每个像素点的disparity,组成一个disparity map,设置一个和disparity map相关的全局能量函数,使这个能量函数最小化,以达到求解每个像素最优disparity的目的。
能量函数形式如下:
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个一维问题。
OpenCV中自带了BM和SBGM,效果对比如下图:
GC
GC算法 算法文献:Realistic CG Stereo Image Dataset with Ground Truth Disparity Maps
SAD
SAD(Sum of absolute differences)是一种图像匹配算法。基本思想:差的绝对值之和。此算法常用于图像块匹配,将每个像素对应数值之差的绝对值求和,据此评估两个图像块的相似度。该算法快速、但并不精确,通常用于多级处理的初步筛选。
基本流程
输入:两幅图像,一幅Left-Image,一幅Right-Image 对左图,依次扫描,选定一个锚点:
(1)构造一个小窗口,类似于卷积核; (2)用窗口覆盖左边的图像,选择出窗口覆盖区域内的所有像素点; (3)同样用窗口覆盖右边的图像并选择出覆盖区域的像素点; (4)左边覆盖区域减去右边覆盖区域,并求出所有像素点灰度差的绝对值之和; (5)移动右边图像的窗口,重复(3)-(4)的处理(这里有个搜索范围,超过这个范围跳出); (6)找到这个范围内SAD值最小的窗口,即找到了左图锚点的最佳匹配的像素块。
【匹配陷阱】
以下几种情形生成的深度图像可能会有缺陷:
(1) 光学失真和噪声(亮度、色调、饱和度等失衡)
(2) 平滑表面的镜面反射
高光处无细节,无特征点。
(3) 投影缩减(Foreshortening)
摄影测量学中的一个概念,指物体近大远小。由于相对左右照相机距离的不同,看到的同一个物体在左右视图中的投影尺寸也会不同,造成匹配障碍。
(4) 透视失真(Perspective distortions)
由于镜头畸变造成的被摄物体失真。譬如画面中的鼻子被拉长。
(5) 低纹理(Low texture)
无细节。主动纹理光可以解决这一问题。
(6) 重复纹理(Repetitive/ambiguous patterns)
高度相似的特征点描述向量接近,行扫描时难以判断哪一个是对应的特征点。
(7) 透明物体
同低纹理。
(8) 重叠和非连续
纹理中断,不利于行查找。
全部0条评论
快来发表一下你的评论吧 !