王裕东, 吕学勤, 汤宇豪, 瞿 艳
(上海电力学院 自动化工程学院, 上海 200090)
双目视觉传感器从多个不同角度获取丰富的场景信息,通过三角法等视差原理获得场景内目标物的深度信息,可有效解决单目传感器无法测得目标深度信息的难点[1]。基于双目视觉传感器的双目立体视觉技术已逐渐应用于各个领域中[2]。双目立体视觉技术包括图像获取,摄像机标定、图像预处理和立体匹配4个过程。
从二维焊缝图像中提取焊缝特征点的三维信息,需通过视觉传感器标定获取视觉传感器的外部参数和内部参数。目前,视觉传感器标定方法主要有射影标定法、自标定法、正交消隐法、相机纯旋转标定法和平面模板两步法等[3]。2016年,长春理工大学的张超等学者[4]提出了一种基于位姿约束的标定算法,是将相对位姿作为约束条件解出双目视觉的初始内部参数,再通过重复迭代剔除误差率较大的标定图像,当误差率小于指定值时得到较精确的双目视觉内部参数。2018年,南京航天航空大学的姜涛课题组[5]采用单应性矩阵求解双目视觉内外参数,有效解决了现有变焦镜头标定方法难度大、精度低的问题。
对焊缝图像的预处理可以避免焊接过程中产生的弧光飞溅,但会给焊缝图像带来噪声污染,影响后续立体匹配的效果[6]。2018年,上海交通大学的王志刚等研究者[7]采用一种焊缝图像预处理算法,提高了算法的精度和实时性。该方法在消除噪声的同时,通过保留信号的边缘,极大程度地提高了焊缝图像处理的细节。
匹配的复杂性是立体匹配的关键。立体匹配是基于若干不同视角拍摄的图像找出匹配点的对应关系,利用视差得到深度信息[8]。正确的选择和研究匹配算法是一个难点,这是由于对于一幅图像上的某个像素或特征,另一幅图像可能有若干特征与之相似。近年来,基于图切割和置信度传递的优化算法被广泛应用。2018年,西悉尼大学的MITCHELL D等学者[9]研究了一种立体置信度估计的深度体系结构,与现有的基于深度卷积神经网络只依赖匹配代价估计视差图不同,该网络通过同时使用两个异构输入估计立体置信度,对提高立体匹配算法的精度具有重要意义。这种结构的局限性是对缺乏纹理的图像匹配精度较低,也会影响视差精度。
获取物体的深度信息可根据来自不同相机的图像求解视差。基于以上分析,针对焊件表面大多是弱纹理且缺乏独特的特征点导致立体匹配困难的问题,本文提出了一种弱纹理检测跨尺度聚合的立体匹配算法,通过检测弱纹理区域利用不同的梯度进行跨尺度聚合,来提高立体匹配的精度。
焊缝图像预处理的第一步是图像滤波。中值滤波既可以有效去除图像噪声又可以保留焊缝图像的边缘细节,为后续准确提取焊缝特征点提供有利条件。滤波后,为减少背景因素干预,再对焊缝图像进行二值化处理,整个过程如图1所示。图像二值化把焊缝图像中灰度值超过所设灰度阈值的线结构光条纹区域定义为目标区域,g(x,y)表示像素灰度值(其中x,y分别表示二维图像的横坐标值和纵坐标值),T表示设定的灰度阈值。公式如下
(1)
图1 焊缝图像预处理
采用张氏标定法标定双目视觉传感器。首先,通过相机拍摄标定板对不同位置的各个角度的图像进行标定。采用16×20的棋盘格作为相机的标定物,每个格子边长为1 mm,共采集12对焊缝标定板图片,如图2所示。然后,通过误差分析、角点剔除和角点再提取得到左摄像机相对标定板的位置和左右摄像机的相对位置,从而得到双目视觉传感器的参数。
图2 双目视觉标定结果
视差和深度的关系如图3所示。
图3 深度和视差的关系
B为两个传感器之间的距离。Z为目标到传感器的距离,即深度。P点为目标位置。Pl,Pr为目标在左右两个传感器上的成像点。Cl,Cr为左右摄像机位置。f为传感器镜头焦距。ax为传感器参数。用xl,xr表示目标两个成像的坐标。由中心映射关系得
(2)
xl-xr为目标位置P点的视差,用d表示,则式(2)可表示为
(3)
可以看出,物体的深度与视觉传感器参数、基线的长度以及像素点的视差有关,物体的深度信息与像素点的视差成反比关系。标定得到传感器参数后,即可通过立体匹配得到视差值[10]。
只要找到焊缝左右图像中的匹配对应点并求出视差,即可得到深度信息。匹配对应点即匹配代价最小的点。以左焊缝图像为基准图,检测焊缝图像的纹理情况,将焊缝图像分割成纹理区域和弱纹理区域,利用输入左右焊缝图像的色彩信息以及梯度信息计算匹配代价。
弱纹理区域的实质是其灰度信息在图像中的变化很小甚至几乎不变化。范海瑞课题组根据两个特征对弱纹理区域进行检测:一是固定区域内的颜色变化;二是像素的梯度变化[11]。实验发现颜色值的变化对最后的匹配结果影响很小,因此实验中对焊缝图像进行纹理和弱纹理区域的分割时,根据焊缝图像像素灰度梯度特性变化就可以提取出焊缝图像弱纹理区域,设图像I中任意像素(x,y),如果此像素(x,y)属于弱纹理区域,则满足以下公式
(4)
其中,
式中:gT,δT——灰度阈值;
N——窗口像素的个数;
W(x,y)——以像素(x,y)为中心的窗口;
I(u,v)——像素的灰度值;
图4为焊缝图像弱纹理区域检测结果,其中虚线框中白色部分表示焊缝图像弱纹理区域,其余黑色部分表示焊缝图像纹理区域。
图4 焊缝图像弱纹理检测结果
差的绝对值之和(Sum of Absolute Differences,SAD)算法是一种图像匹配算法,具有匹配精度高、速度快等优点,缺点是在边缘区域匹配精度不高[12]。基于图像梯度的代价计算法在图像边缘也能得到较高的匹配精度,能够弥补SAD算法的缺点。因此,在计算匹配代价中,采用截断颜色差和截断梯度差组合,同时加入x方向和y方向梯度算子进行代价计算。设焊缝图像对左图像IL,右图像IR,p是左图像中一点,匹配代价如下
(7)
其中,
其中:C(p,d)——视差为d时点p的匹配代价;
α——颜色差和梯度差之间的平衡因子;
R,G,B——彩色图像的3个通道;
TAD,Tgrad——颜色和梯度的截断阈值;
代价聚合本质是对代价计算的结果进行去噪,去噪包含特定滤波核实则是加权最小二乘(Weighted Least Square,WLS)优化问题,因此匹配代价聚合公式如下
(11)
z——期望优化目标值;
q——p的邻域像素点;
d——视差值;
W(p,d)——高斯滤波核,衡量像素点之间相似性的相似性核。
式(11)的最小二乘优化解如下
(12)
目前大多数研究都是最细尺度,即原图像尺度上进行的代价聚合。在原图像尺度下,代价聚合可以在纹理区取得良好的效果。但是在立体匹配的对应搜索中,不同尺度上的信息是交互处理的。因此,代价聚合不能像传统方法只在最细尺度上进行操作,应该采用由粗到细的跨尺度算法。
为了确保匹配的准确性,保证多尺度视差的一致性,对于图像的弱纹理和无纹理区域,在不同尺度上进行代价聚合[13-14]。式(11)仅包含单一尺度图片,不涉及其他尺度的图片信息,根据尺度空间理论,将式(11)扩展为如下公式
(13)
s——尺度参数;
S——尺度个数,即第几个尺度;
zs——第s个尺度上的期望优化目标值;
ps,qs——第s个尺度上的像素点及其邻域像素点;
Cs(qs,ds)——像素qs在s尺度上的匹配代价。
C0为图像原始尺度匹配代价。将原左右图像IL,IR使用高斯金字塔变换分解到 0,1,2…S高斯分解层,分别在第 0,1,2…S高斯分解层下计算匹配代价并独立进行代价聚合,得到匹配代价卷C0,C1,C2…CS。图5为跨尺度代价聚合流程图。
图5 跨尺度代价聚合视差图提取流程
(14)
式(14)的解为每个尺度上分别进行高斯平滑代价聚合的结果,对于任意s尺度的高斯平滑代价聚合结果为
(15)
为了得到最后的视差图,对每层匹配代价进行融合,保证相邻尺度相同像素一致性是融合的关键,式(13)引入正则化约束项,则
(16)
式中:λ——正则化因子。
(17)
图像分解为S+1个尺度,因此有S+1个线性方程,此方程组可表示为
(18)
A是(S+1)×(S+1)维的对角矩阵,即
A矩阵可逆,可得
(19)
感知焊接过程中环境实时变化,实施调整焊枪位置是研究的重点。用双目视觉传感器能够采集丰富的信息,适应环境性好,具有非接触不易干扰的良好特性,避免了环境的不确定性对焊接成品质量的影响。由于焊缝属于精密检测,要求传感器获取的焊缝图像质量高,图像系数畸变小,所以本文选择摄像效果良好的MER-132-30UM/C,USB接口帧曝光CCD工业数字相机。镜头的选择取决于镜头的焦距f的大小,根据实际情况,实验平台选择f=35 mm的镜头。
实验过程中,双目视觉传感器从不同位置拍摄焊缝全貌。然后,对焊缝图像进行中值滤波、二值化处理得到焊缝信息。通过视觉传感器标定,得到传感器参数。根据代价计算和代价聚合得到最小的匹配代价,即焊缝左右图像匹配对应点,从而得到焊缝视差图。再从视差中恢复深度信息,得到焊枪的高度信息,实时调整焊枪高度。图6为位置1焊缝左图像,图7为处理之后的焊缝视差图。从焊缝视差图中获取最小视差可得到焊缝到传感器距离(焊缝深度信息)。
图6 焊缝左图像
图7 焊缝视差
改变传感器到焊缝距离,进行多次实验,用SAD算法和本文提出的算法分别对焊缝图像进行立体匹配,记录下每次的实验数据。统计结果如表1和表2所示。
表1 本文算法测得焊缝深度信息
表2 SAD测得焊缝深度信息
对比表1和表2可知,跨尺度代价聚合算法得到的焊缝深度信息误差率均小于10%,相对于SAD算法,本文提出的算法误差率更低。实验结果表明,本文提出的跨尺度代价聚合法实现立体匹配精度更高,提取焊缝深度信息效果更好。
针对双目视觉传感器的焊缝深度信息提取研究,本文采用了弱纹理检测跨尺度聚合的立体匹配算法来获得焊缝图像视差图。首先,通过双目视觉传感器获取焊缝图像,对焊缝图像进行中值滤波、二值化处理,去除图像噪声,减少图像背景干扰。然后,通过标定得到视觉传感器参数,进一步得到视差和深度的关系。最后,采用弱纹理检测跨尺度聚合算法进行立体匹配,获取焊缝图像视差图,得到焊缝视差。与SAD算法比较,由跨尺度代价聚合算法计算得到的焊缝深度信息误差率均小于10%,提取焊缝深度信息效果更好。