基于KNN分类的涂胶质量检测算法*
2023-08-02于一深苏宇锋高建设
于一深,苏宇锋,高建设
(郑州大学机械与动力工程学院,郑州 450000)
0 引言
涂胶工艺在工业生产中有着极其重要的作用,涂胶质量的好坏影响部分器件甚至整个系统的工作。随着工业的发展,机器自动涂胶[1]已经逐步取代了人工涂胶,生产效率取得显著提高,然而在涂胶过程中由于机器本身的误差和震动,环境的变化如温度导致的胶枪出胶不稳定,这些因素会造成涂胶轨迹的缺陷[2],如涂胶轨迹的偏移,断胶以及胶条过宽和过窄。通过机器视觉进行检测[3-5]已经成为了工业自动化发展的必然趋势[6]。
国内外许多专家和学者对于基于视觉的缺陷检测进行了研究。王亚运[7]通过神经网络建立了涂胶质量标准信息库并通过分析图像中的标定物为在线监测提供了较为精确的标定信息。廖勇[8]通过使用VisionPro视觉处理系统实现了发动机缸体的胶线分割和整体定位,并且通过标准点和实际图片中的控制点计算了偏差。殷苏民等[9]通过使用图像差分法和模板匹配法对缺陷图像进行分析制定了高效的电池涂胶缺陷检测算法。王一等[10]通过使用3个组合线结构光传感器对胶体进行了三维测量,并搭建了检测系统硬件平台。朱立忠等[11]提出了一种基于卷积神经网络Faster-RCNN的涂胶检测算法,使其检测准确率和检测速度都有所提升。
上述方法都需要标定物或者标准图片进行比对,基于此,本文提出了一种无需标准涂胶图片,只需要获取涂胶轨迹数据的涂胶检测算法,该算法的输入参数为标准轨迹位置信息,允许的偏移量以及最大最小胶条宽度,就可以获知涂胶轨迹是否满足要求。
1 图像处理模块
本文以电池涂胶图像为例,对涂胶轨迹进行检测。涂胶系统主要由硬件模块和软件模块两部构成,如图1所示。
图1 检测系统总体设计图
1.1 模板匹配
上位机接收到来自传感器的图像后,通常因为光照,误差等因素的影响,工件的位置会发生变化,因此我们需要通过模板匹配找到工件在图像中的实际位置,并通过透视变换将工件位置进行相应的校正,常用的模板匹配方法有:①基于灰度的模板匹配算法;②基于金字塔的快速NCC匹配算法;③尺度不变特征变换SIFT[12]。
其中SIFT中的特征点对图像尺度和旋转是不变的,并且对仿射失真,视点以及光照的变化也具有鲁棒性,因此选择SIFT作为模板匹配的特征提取方法。
SIFT算法通过构建多尺度高斯差分(DoG)金字塔以寻找同一图像在不同尺度下的特征点。
采用SIFT算法定位图像中的特征点和描述子之后,我们需要将这些特征点与标准图像中的特征点一一对应。之后对测试图像通过透射变换便可以将测试图像的工件位置进行纠正。
1.2 图像预处理
因为原始图像I(x,y)中存在光照不均匀的,这对之后的阈值分割有较大影响,因此首先需要对图像进行光照补偿。首先使用尺寸较大的盒式滤波器B(x,y,w)对图像进行滤波操作。再将原图像与滤波后的图像相减,即可得到补偿后的图像R(x,y),可以表示为:
R(x,y)=I(x,y)-B(x,y,w)*I
(1)
经过光照补偿后的图像与原图像相比光照不均匀的现象明显减弱,边缘和中心部分的亮度差距显著缩小,如图2所示。
图2 光照补偿对比
1.3 边缘检测
常见的基于二阶导数的边缘检测算子有,Marr-Hildreth算子,Laplacian算子,Canny算子,本项目选择更为成熟和先进的Canny算子进行边缘检测。
1.4 提取骨架
涂胶质量检测的主要是胶条的宽度和中心线的偏移量,要计算这些参数都需要首先提取胶条的骨架图像,提取骨架在形态学中也称为细化操作。细化操作只需要通过腐蚀和开运算就可以完成,即:
(2)
Sk(A)=(A⊖kB)-(A⊖kB)∘B
(3)
式中:B为腐蚀和开运算所需的结构元,A为原始图像中胶条的集合,K为A被腐蚀为一个空集之前的最后一个迭代步骤。至此,如图3所示我们便得到了涂胶轨迹以及轨迹的骨架(中心线)。
图3 图像处理最终结果
2 胶条质量检测算法
2.1 胶条质量检测标准
胶条常见的缺陷主要有:胶条过窄、胶条过宽、断胶以及中心线偏移,因此可以明确需要检测的是:
(1)胶条的中心线(骨架)与标准涂胶轨迹的中心线之间的距离是否超出规定值;
(2)胶条各个位置法线方向的宽度是否在公差范围内;
在明确了需要检测的参数后我们便可以进行相应的算法设计。
2.2 胶条中心线偏移量检测
计算中心线的偏移量可以得知胶条的整体走向是否在设定范围内,电池芯组的涂胶轨迹通常为多段直线插补与圆弧插补的组合,因此我们只需计算之前得到的胶条骨架线上的点与标准轨迹中圆弧或者直线的最短距离,即为胶条中心线的偏移量。
将涂胶轨迹看作多段直线和圆弧的组合,需要计算的是胶条中的点与这些线段或者圆弧的最短距离。
2.2.1 中心线的点与线段的距离
点到线段的最短距离可以使用矢量算法,过程比较清晰而且数据量较大时优势明显,如图4所示,采用矢量算法计算时只需考虑以下3种情况,我们要找到AP在AB方向的投影,即:
图4 点到线段的矢量计算法
(4)
(5)
2.2.2 中心线的点与圆弧的距离
点与圆弧的最短距离采用矢量算法时也需要考虑3种情况,如图5所示。
图5 点到圆弧的矢量算法
需要判断的是点P在扇形所在的圆弧内侧还是外侧,当点P在外侧时,点到圆弧的最短距离为min(CP,BP),当P在内侧时,距离为|PA+AD|。
对于向量AC,AB,AP,使用向量的叉乘公式有:
AP×AC=|AP||AC|sinθ
(6)
AP×AB=|AP||AB|sinα
(7)
当点P位于圆弧内侧时,sinα*sinθ<0,而当点P位于外侧时,sinα*sinθ≥0,因此可以得到点P到圆弧的最短距离为:
(8)
2.2.3 计算骨架点的偏移量
需要计算的是涂胶的实际位置和标准涂胶轨迹的间距,对每一个像素点ci,需要计算它与集合A之间的最小距离Di,可以描述为:
Di=min(d(ci,A))
(9)
式中:
(10)
而
(11)
只需要设置合理的阈值T和标准距离L,就可以判断每个像素点的偏移量Di是否在合理范围内,其结果为:
(12)
2.3 胶条宽度检测
要计算胶条的宽度,首先需要明确如何计算,对于不规则形状的线条,其各个位置的宽度计算主要由以下几步:
步骤1:将离散的骨架点C有序化,使得每个像素点ci的最近邻点fi和bi为实际位置中与其最近的前后两点;
步骤2:根据每个点和其最近的两个点可以获得ci位置的法线方向ni;
步骤3:沿法线方向ni的正负方向同时进行搜索,直到搜索到胶条的边缘,胶条在像素点ci的长度为li=|ai|+|bi|,其中,ai,bi为法线方向上沿着正负半轴的胶条的长度;
步骤4:设标准宽度为w,公差为t,将li与wmin=w-t和wmax=w+t进行比较,判断是否超出范围。
2.3.1 法向量估计
为了将无序的像素点进行有序化排列,选择使用kd-tree算法。在kd-tree构建完成之后,通过最近邻搜索对整个像素点的集合进行高维空间的范围搜索,通过设置参数就可以找到每个像素点最相近的两个像素点的位置和索引。通过kd-tree的构建和检索,就能够得到每个像素点ci的最近邻点fi和bi。
在得到每个点及其最近邻点的位置后,就可以通过SVD(奇异值分解)的方法获得该像素点的法向量,假设矩阵A是一个m×n的矩阵,那么定义矩阵A的SVD为:
A=UΣVT
(13)
2.3.2 宽度计算
计算胶条宽度的主要思想是将胶条的边缘线仿射变换至以骨架线法向量ni为y轴的局部坐标系中,仿射变换表示为:
Ct=R×C
(14)
式中:C和Ct分别为仿射变换前后的边缘线的位置,R为旋转矩阵,在本例中为法向量和切向量组成的矩阵即:
R=[ti,ni]
(15)
仿射变换后的法向量和切向量以及边缘点的位置如图6所示。
(a) 变换前 (b) 变换后图6 仿射变换
对于仿射变换后的图像,可以设置左右范围lbond和rbond,只搜索该范围内的边缘点,忽略范围之外的边界点,这样可以减少计算量,同时提高宽度的计算精度,如图7所示。
图7 设置左右边界 图8 设置上下边界
然而大部分涂胶轨迹都是有大量的回转,某一位置的法向量可能同时经过多个位置的轨迹,因此还需要设置ubond和bbond以控制轨迹的上下范围,而轨迹的上下范围取决于胶条的宽度,因此可以取下范围为0~0.5w,上范围取1.5~2w,同时因为轨迹分为上下两部分,因此ubond和bbond也需要针对正半轴和负半轴分别设置,本项目取下范围为0.25w,上范围为2w。
因此,lbond和rbond和两对ubond和bbond以及Y轴共同对图像取点进行限制,将区域划分为左上lub,左下lbb,右上rub,右下rbb四部分,如图8所示。
在划分区域之后,对4个区域分别进行搜索,可以搜寻区域中与X轴的最近点也可以求取区域内的所有点与X轴距离的平均值,本项目选用最近点。设lub区域内的最近点距离为dlub,rub区域内的最近点距离为drub,那么如图9所示可以求得上半边缘与骨架点O的距离du为:
图9 胶条宽度计算
(16)
同理可得:
(17)
因此可以得到点ci处的胶条宽度为li=du+db。
设胶条的标准宽度为w,公差为t,那么有wmin=w-t和wmax=w+t,将li与其进行比较,判断胶条宽度是否在标准范围内,有:
(18)
3 实验和结果
根据实际工作需要,对已涂胶电池进行等级规范,可以分为一级,二级,三级和次品4个类别,等级的划分基于涂胶轨迹是否存在偏移,宽度是否符合规范,以及不合规轨迹的数量和长度来划分。
实验测试运行环境:大恒MER-301-125U3M面阵工业数字相机,KUKA KR16工业机器人,KUKA KRC4控制柜,中瑞ZRRT-608喷涂机器人,上位机。
为了便于区分和筛选,需要对加工完成的电池进行分类,共划分为4个等级:一级,二级,三级和次品,其中等级的划分主要基于涂胶轨迹的不合格部分的数量和长度,偏移片段的数量和总长度分别表示为NP,LP,宽度不合格片段的数量和总长度为NW,LW。
表1 胶条等级划分
为了对检测质量进行测试,共设置了一,二,三以及次品各100个共400个,做好记录后将其顺序打乱,使用工业相机进行拍摄后将图像传输给上位机,上位机检测结果如下。
表2 胶条质量检测准确率
4 结论
本文针对工业涂胶中经常出现的断胶,胶条过宽,过窄以及胶条偏移等缺陷,基于机器视觉模块OpenCV设计了一种基于机器视觉的电池芯组涂胶缺陷检测方法。实验证明,该检测方法的准确率在97.85%,证明了系统的可靠性和可信性,具有重要的参考价值,在检测速度上,平均每个产品的检测时间为98 ms,与传统人工检测相比,效率明显提高。