当前位置:首页 期刊杂志

机器人视觉下的视差图效果优化研究

时间:2024-07-28

张京军,刘松松,方智立,高瑞贞

(1.河北工程大学机械与装备工程学院,河北 邯郸 056000;2.河北工程大学信息与电气工程学院,河北 邯郸 056000)

1 引言

双目视觉作为机器视觉的重要分支,在工业测量,目标跟踪,无人驾驶,机器人应用,场景重建等领域都有广泛的应用[1],其一般的流程可总结为双目相机采集图像,相机标定,双目校正,立体匹配,深度计算等[2],而现在基于双目的机器视觉技术在实际应用中还没有达到较好的时效性,是因为双目视觉的许多算法还不能高速运行。其中立体匹配是算法的重要环节,决定着程序运行的速度和精度,立体匹配算法常用的有BM(Bidirectional Matching)算法,SGM(Semi-Global Matching)算法,GC(Graph Cut)算法[3-4]。因要满足目标的实时跟踪和监控,让立体匹配算法更适用于实际机器人工程,所以选择BM算法作为立体匹配基础算法进行立体匹配[5]。

首先分别用Sobel 检测,基于Sobel 改进的Scharr 检测和Canny检测对图像进行边缘提取,然后利用BM算法进行立体匹配,提取图像边缘信息进行立体匹配可以减少原始图像中的数据量,只筛选出有用的信息进行匹配,缩短了程序运行时间。实验部分利用15对Middlebury双目图像数据集中的标准图像实验进行了客观评价[6],并用自行搭建的双目相机实验平台采集图像,利用所提方法进行实验做出主观评价,利用标准图像和自采集图像两组实验均表明经过边缘检测处理后的图像可明显提高立体匹配效果,且Sobel和BM结合算法效果最优。

2 图像预处理

图像预处理包括相机标定和图像校正,由于相机的加工工艺客观物理条件等因素,相机成像时会发生光学畸变[7-8],所以采集的图像需要经过校正后才能使用,双目相机实验平台,如图1所示。

图1 双目相机实验平台Fig.1 Experimental Platform of Binocular Camera

相机标定采用张正友标定法,首先使用双目相机拍摄不同角度、不同位置的16幅标定板图像,标定板为每个棋盘格大小(29×29)mm,数量(7×10)的黑白相间的棋盘图,如图2所示。然后通过MATLAB标定工具箱得出相机的内参数和左右相机之间的外参数,如表1所示。

表1 相机参数Tab.1 Camera Parameters

图2 拍摄的左右标定板图像Fig.2 Images of Left and Right Calibration Plates

用上述标定参数结合OpenCV计算机视觉库校正图像,利用内参数来校正图像出现的桶形畸变和枕形畸变,利用外参数来校正左右图像出现的位置偏差,使左右图像实现完全行对准。其中一组拍摄图像和已校正的图像,如图3、图4所示。

图3 拍摄图像Fig.3 Images Taken

图4 已校正图像Fig.4 Image Corrected

图3中相同像素不在同一直线上,图4相同像素校正到同一直线上,为后续立体匹配算法做好准备。

3 算法介绍

本部分介绍了边缘检测算法的原理以及BM 立体匹配算法的原理。通过结合两者的算法可提高立体匹配算法效果。

3.1 边缘检测与差分算子

边缘即信号变化的位置,以一维逐渐增大的信号为例,如图5所示。图中所示的A,B,C三点,我们称B点为边缘点,即信号变化的位置。图5所示的信号(曲线a)、一阶微分(曲线b)和二阶微分(曲线c),如图6所示。从图中可以看出,在信号的边缘处一阶微分为极大值,二阶微分为零点。

图5 一维边缘信号Fig.5 One Dimensional Edge Signal

图6 一维边缘信号及其微分Fig.6 One Dimensional Edge Signal and its Differential

对于二维信号f(x,y),一阶导数为f(x,y)的梯度的模,f(x,y)的梯度,如式(1)所示。二阶导数一般采用各向同性的二阶微分算子,即拉普拉斯(Laplace)算子表示,如式(2)所示。检测一阶微分的极大值或者二阶微分的零点就是二维信号边缘检测的方法。

以上只是理想情况,实际采集的图像是有噪声的,而且图像在计算机中的实际存储形式为离散信号,所以要先对信号进行平滑滤波[9]。以一维有噪声的信号为例,设平滑滤波器的脉冲传递函数为,则滤波后的信号为:

式中:⊗—卷积运算。对g(x)求一阶或二阶导数检测边缘,运算结果如下所示:

所以对于一维有噪声的信号边缘检测的基本方法为设计滤波器h(x),检测f(x)⊗h'(x)的局部最大值或者f(x)⊗h''(x)的零点位置。而对于离散一维信号而言,要用差分运算替代微分运算[10],一阶差分运算的定义有三种[11]:

(1)前向差分:h(1)(n)=h(n+1) -h(n);

(2)后向差分:h(1)(n)=h(n) -h(n-1);

(3)平均差分:h(1)(n)=(h(n+1) -h(n-1));

式中:h(1)(n)—离散函数h(n)的一阶差分。一般使用前后向平均差分作为差分定义,则二阶差分为:

对于离散二维信号即图像,设计有限窗口算子,用有限窗口算子和图像作卷积运算得到图像的边缘信息,以下为常见的边缘检测算子。

(1)Sobel检测算子分为计算水平梯度和垂直梯度的算子[11],如图7所示。

图7 Sobel算子Fig.7 Sobel Operator

设当前像素P坐标为(x,y),像素值为f(x,y),首先计算x方向的梯度∇x f和y方向的梯度∇y f,然后将两者的平方相加再开方得到最终图像梯度,但是实际应用中计算量过大,用两者的绝对值相加来近似图像的梯度,如式(7)所示。

(2)Scharr检测算子和Sobel检测算子类似,如图8所示。图像梯度的计算方法和Sobel检测方法相同。

图8 Scharr算子Fig.8 Scharr Operator

(3)Canny 检测在Sobel 检测算法的基础上增加了非极大信号抑制(Non-Maximum Suppression)[12],非极大信号抑制可以将局部最大值之外的所有梯度值抑制为0,经过上述算法得到了点P的梯度值∇p f,第二步为计算该点梯度方向的角度θ,利用反正切函数可求出θ的大小,如式(8)所示。

第三步为将当前的梯度值与沿正负梯度方向上的临近两个像素值的梯度强度进行比较,如果当前像素的梯度值最大,则被判定为边缘,否则被抑制。但是我们只能得到当前像素临近的八个像素,如图9所示。所以需要用线性插值的方法求出临近两个像素P1和P2的梯度强度,如式(9)、式(10)所示。当∇P f≥∇P1f且∇P f≥∇P2f时,判定该点的梯度值为最大值,否则被抑制为0。

图9 非极大信号抑制Fig.9 Non Maximum Signal Suppression

3.2 BM立体匹配算法

BM 算法是一种块立体匹配算法,使用绝对误差累积,简称SAD(Sum of Absolute Differences)的小窗口来匹配校正过的左右图像的对应点。这种算法只匹配图像之间的强纹理点,对于弱纹理,只需要计算其中少量点的值。匹配过程通过逐行移动SAD窗口来实现立体匹配,对于校正过的图像每一行就是一条极线,在两个摄像机拍摄的共同区域之内,左图像上的点必然出现在右图像上的对应行上面,如图10所示。匹配方法是先设窗口大小为(3×3),找出左图像窗口下各像素的灰度值,然后在右图像极线上设置距离D,从左往右依次移动窗口找出相应像素的灰度值,左图像窗口下的像素灰度值减去右图像的并求绝对值之和,在距离D内绝对值之和最小的窗口即为最佳匹配窗口,超出距离D则不再计算直接跳出,这样就找出了左图像窗口锚点,即窗口中心位置的最佳匹配像素点,以此为依据可得出视差图。

图10 BM算法匹配示意图Fig.10 BM Algorithm Matching Diagram

3.3 算法具体步骤

(1)首先,分别使用Sobel检测,基于Sobel改进的Scharr检测和Canny检测对图像进行边缘提取。

(2)其次,将得到的图像以边缘特征为范围约束,使用BM算法进行立体匹配。

(3)然后,设定误差阈值,计算每组的误匹配率和匹配时间。

(4)最后,通过对比不同边缘检测算法和BM 算法组合的结果,筛选出匹配精度和速度相对最优的组合算法。

4 实验对比分析

本次实验采集图像的两台相机型号为Basler scA1300-32gc,计算机处理器为英特尔酷睿i7-5960x,Windows10×64位操作系统,实验环境为Visual Studio 2017 和基于跨平台计算机视觉库OpenCV3.4.1 来编写程序进行实验。针对匹配精度我们利用误匹配率R进行评价,表达式如下:

式中:K—图像像素数;da(x,y)—计算得到的视差图;db(x,y)—真实视差图;σd—误差阈值,通常取1,无其它约束条件。该指标反映在一定误差阈值内,两幅图像匹配所得视差图的误差占整幅图像的比重,可以客观地立体匹配得到视差图的精度。以下介绍的分别为Middlebury图像数据集中的标准图像实验部分和双目相机自采集图像实验部分。

4.1 Middlebury图像数据集实验

Middlebury双目图像数据集是经过处理后的标准图像,不再需要自行校正,首先对15 组图像进行边缘检测,其中一组图像Aloe的左原始图像和检测结果,如图11所示。

图11 原始图像及检测结果Fig.11 Original Image and Processing Image

接下来使用BM 算法对原始图像及边缘检测图像分别进行立体匹配,同时记录各种方法消耗的时间和误匹配率,如表2、表3所示。其中Aloe原始图像匹配的视差图及经过边缘检测后匹配的视差图,如图12所示。

表2 Middlebury双目图像数据集匹配时间(ms)Tab.2 Middlebury Binocular Image Dataset Matching Time(ms)

表3 Middlebury双目图像数据集误匹配率(%)Tab.3 Mismatch Rate of Middlebury Binocular Image Dataset(%)

图12 原始视差图及处理后视差图Fig.12 Original Disparity Map and Processed Disparity Map

通过表2、表3数据计算可得经过Sobel检测匹配精度和速度分别提升了8.26%和14.27%,Scahrr检测匹配精度和速度分别提升了4.25%和7.27%,Canny 检测匹配精度和速度分别提升了5.78%和8.05%。经过比较可得,经过Sobel检测的立体匹配可以提高匹配效果较佳。下面使用自采集图像进行结论二次验证。

4.2 自采集图像实验

自采集图像共拍摄了三组书架,花卉和雨伞,其中花卉的左图像和边缘检测的图像,如图13所示。匹配时间和误匹配率,如表4、表5所示。

表4 自采集图像匹配时间(ms)Tab.4 Matching Time of Self Collected Images(ms)

表5 自采集图像误匹配率(%)Tab.5 False Matching Rate of Self Collected Images(%)

图13 边缘检测结果Fig.13 Edge Detection Results

从表格数据中可知,自采集图像在经过Sobel检测后的匹配速度和精度得到了较大的提升,验证了用Middlebury双目图像数据集实验得到的结论。

5 结语

传统的立体匹配算法精度不高且耗时较长,不适合用于实际的机器人技术工程,通过将边缘检测和BM 立体匹配算法相结合,降低不必要的匹配,提高立体匹配算法的精度和效率。利用Middlebury双目图像数据集和自采集图像比较了原始图像,Sobel检测、Canny 检测、Scharr 检测后的立体匹配效果。经过实验验证,Sobel检测和BM立体匹配算法相结合方法最为适宜,匹配效果最佳,可以更好的服务于实际机器人工程。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!