基于视觉的卡钳毛刺检测和定位方法研究
2019-12-20韩进宇吴超群
韩进宇,吴超群
(武汉理工大学 机电工程学院,湖北 武汉 430070)
在汽车卡钳机器人自动化打磨时,为了能够自动规划机器人的打磨路径,需要知道毛刺区域的轮廓信息和毛刺区域的位置信息。传统毛刺信息检测主要依靠测量工具进行手动测量,在对工件毛刺进行测量时容易对毛刺和测量工具造成磨损,并且当工件毛刺形状比较复杂,毛刺数量比较多时测量效率不高。另外,汽车卡钳属于铸造件,其毛刺的形状和大小的一致性非常差,不同工件具有不同形状和大小的毛刺,使得机器人离线编程难度加大。采用视觉对汽车卡钳毛刺区域进行检测和定位,既可以提高效率,又不会对毛刺区域造成损坏。因此研究复杂环境下汽车卡钳毛刺打磨区域检测和定位的图像处理算法,可以实现汽车卡钳毛刺打磨区域的在线检测[1-2]。
1 检测系统硬件组成
1.1 视觉系统的组成
毛刺检测和定位系统主要由工业CMOS相机、PC机、光源、工件台、过渡工装和CMOS安装支架等构成,系统结构如图1所示。
图1 毛刺检测和定位系统示意图
1.2 视觉系统的标定
由于CMOS相机本身存在不可避免的安装误差,采用多幅棋盘格图像对相机的内外参数进行标定。该方法运用了针孔成像原理和9×6(每格20 mm)的棋盘格,介于自标定和传统标定方法之间,既具有较好的鲁棒性,又不需要制作昂贵的标定板[3]。标定实验完成后得到相机的内参矩阵A和畸变矩阵B如式(1)和式(2)所示。结合内参矩阵和畸变矩阵进行仿射变换即可对图像进行畸变矫正。在相机标定过程中总会存在一定问题,因此矫正后的图像并不一定非常标准,只能优化原有图像,提高后续毛刺加工区域的定位精度。
(1)
B=[-0.117 00 0.770 00 -0.007 00
0.001 07 0.003 50]
(2)
完成图像的畸变矫正后为了得到毛刺轮廓区域的位置信息,需要对检测系统进行线性标定,建立卡钳图像像素点和工件毛刺区域实际位置尺寸的对应关系。首先对采集的标准量块的图像进行畸变矫正,然后对量块图像进行相应的图像处理,计算出数字图像中标准量块的长度值r(pixel),若标准量块的实际物理尺寸为r1(mm),那么系统的线性标定系数为k,如式(3)所示。
k=r1/r
(3)
为了降低标定误差,对标准量块进行多次人工测量和视觉测量,计算多个标定系数,然后对所有标定系数取平均值得到最终的标定系数为0.087 mm/pixel。
2 图像处理算法研究
2.1 中心矩形ROI区域提取
根据汽车卡钳实际的物理尺寸,在已知图像大小为(2 500,1 900)的条件下剪切出图像目标区域(region of interest,ROI),针对感兴趣区域提取有效的图像特征,最后对图像特征进行分析和识别,ROI区域如图2所示。根据实际拍摄图像的大小,选取对角坐标为(1 000,900)和(1 450,1 530)的矩形区域对卡钳中心矩形区域进行剪切提取。
图2 ROI区域
2.2 工件图像滤波算法研究
由于工厂环境和图像采集仪器的影响,使得卡钳图像在采集和传输时会混入各种噪声和失真。这些噪声和失真会对图像中的目标区域的特征提取造成影响,因此需要先对图像进行降噪处理。
经典的滤波方法有均值滤波、中值滤波、高斯滤波等,采用这些滤波方法对图像进行降噪处理时会对毛刺区域的边缘造成破坏,不利于毛刺加工区域检测。笔者采用基于图像梯度信息的自适应滤波对卡钳图像进行滤波处理[4],该方法步骤如下:
(1)设定迭代次数K;
(4)
(3)计算滤波核的权系数,如式(5)所示:
ω(k)(m,n)=
(5)
式中:h为恒定参数,他确定了可保留下的边缘幅度。
(4)对f(k+1)(m,n)进行卷积运算,计算公式如式(6)所示:
f(k+1)(m,n)=
(6)
(5)根据指定的迭代次数K进行迭代,如果k=K,迭代结束,否则k++,转步骤(2),自适应滤波流程如图3所示。
图3 自适应滤波流程
根据实验发现K=3,h=14时该算法对图像的边缘有一定的锐化效果,同时对轮廓内部区域有很好的平滑效果,自适应滤波结果如图4所示。
图4 自适应滤波结果图
2.3 工件图像的阈值分割
在对卡钳毛刺区域进行提取和定位前,需要完成卡钳图像前景和背景的分割。全局阈值分割和局部阈值分割是常见的两类阈值分割方法。全局阈值分割算法的计算效率高,但是对光照不均的图像无法进行正确的分割。汽车卡钳图像存在光照不均和反光等问题,采用大津法(Otsu)等全局阈值分割法进行工件图像分割时会造成一些边缘缺失[5],如图5所示。
图5 全局阈值二值化图
针对全局阈值分割存在的问题,笔者采用局部自适应阈值法对图像进行二值化,该算法单独计算每一个像素点k×k领域内的灰度均值减去常数C的结果作为该点的阈值,使用局部自适应阈值分割结果如图6所示。
图6 自适应阈值二值图
2.4 阈值分割后反光区域去除
由于工件表面镀锌,采集的工件照片存在反光区域,在完成阈值分割后该区域和背景区域灰度值相同,无法进行有效的区分,此时需要对二值图像的反光区域进行去除。采用一种具有拓扑分析能力的边界跟踪算法将一幅二值图像转换成边界描述。由于提取的信息是两种边界的包围关系,这两种边界是:外层边界和孔洞边界。既然外层边界和1连通域(1-component)之间、孔洞边界和0连通域(0-component)之间存在一对一的对应关系,则给定二值图像的拓扑结构是确定的[6]。根据这一原理调用Opencv中findcounter函数输出检测到的每一个连通区域轮廓点的集合vector〈vector〈point〉〉,然后调用drawContours()函数填充指定区域[7],得到去除反光区域的二值图像,具体程序流程如图7所示。
2.5 毛刺区域提取
如图8所示,分别对打磨好的模板工件图像1和带有未处理毛刺的工件图像2进行二值化操作,得到去除反光的二值化图像1和图像2,将图像1减去图像2即可得到毛刺区域的二值化图像[8]。使用Opencv中findcounter()函数查找每一毛刺区域的轮廓,然后使用Moment()函数计算每个轮廓的中心矩,进而计算出每个毛刺区域轮廓的质心位置。
图8 毛刺区域提取图
2.6 定位矩形中心位置检测
累计概率霍夫变换(progressive probabilistic hough transform,PPHT)算法在对图像中的直线进行检测时,可以设定直线的最小长度和该直线被拟合出来次数的累加值,只有当累加值大于设定阈值的直线才会取出。对打磨好的工件模板图像的ROI区域二值图像进行Canny边缘检测得到中心矩形的单边缘图像[9],然后使用累积概率霍夫变换检测矩形四条边的直线区域[10],根据检测到的四条边线的直线段区间求取矩形区域的4个顶点坐标(1 046,933)、(1 393,933)、(1 046,1 470)、(1 393,1 470),由于系统硬件标定精度为0.087 mm/pixel进而求得矩形区域中心点的位置坐标(106.1 mm,104.5 mm),实验结果如图9所示。
图9 矩形中心位置
3 实验结果
根据上述方法对一批卡钳毛刺进行图像处理,得到了每个毛刺区域轮廓的质心相对定位矩形中心位置的像素坐标,根据标定精度再将像素坐标转换成对应的物理坐标,实验结果如表1所示。利用所得到的物理坐标对毛刺区域进行定位可为后续的毛刺打磨工序提供依据。
表1 毛刺检测实验结果
4 结论
研究汽车卡钳毛刺检测和定位的方法,针对传统滤波算法容易使毛刺边缘模糊的问题,提出了一种基于梯度信息的自适应滤波算法,针对工件图像光照不均提出使用自使用阈值分割代替全局阈值分割,通过模板工件二值图像和未打磨工件二值图像相减获得毛刺加工区域二值图像,最后检测定位矩形的中心位置对毛刺区域进行定位。该检测系统的毛刺区域定位精度可以达到0.087 mm/pixel。