叶润东 姚佳岷 魏宇昕 林雪晴 陈志伟 张伟荣
摘 要:运用基于OpenCV的机器视觉,研究检测齿轮瑕疵生产流水线,采用CCD工业相机获取实时图像,通过基于OpenCV研发的算法,对齿轮进行灰度化、滤波、二值化、形态学运算等预处理后,剔除背景图像的影响,获得清晰的齿轮轮廓图,然后对齿轮轮廓图进行筛选,检测齿轮的瑕疵,并且把有瑕疵齿轮位置传送给SCARA机械臂,机械臂夹取瑕疵品。机器视觉算法与机械臂相结合,实现齿轮的自动检测。
关键词:OpenCV;机器视觉;齿轮瑕疵检测;图像处理;流水线生产
中图分类号:TP391.4 文献标识码:A
Abstract: This research studies the production line of detecting gear defects by using machine vision based on OpenCV. The real-time images are obtained by CCD (Charge-Coupled Device) industrial camera. After preprocessing the gear with grayscale, filtering, binarization and morphological operation based on OpenCV, the influence of background image is eliminated, and the clear gear profile is obtained. Then, the gear profile is screened to detect the teeth, and the positions of the defective gears are transmitted to the SCARA (Selective Compliance Assembly Robot Arm) manipulator, which picks up the defective products. In this way, the automatic detection of gears is realized through combining machine vision algorithm and the manipulator.
Keywords: OpenCV; machine vision; gear defect detection; image processing; assembly line production
1 引言(Introduction)
隨着我国制造业的高速发展和市场需求的加剧,中国成为继美国、日本和欧洲之后的全球第四大制造业市场。制造业发展的历程证明,导致制造业技术和创造产业的重大进步的是关键技术的突破。然后,基于机器视觉的高速智能检测技术一直是制约着中国制造业的发展的瓶颈,是制造业发展继续突破的关键技术[1]。
机器视觉采用CCD工业摄像机的实时抓拍生产线上的零件图像[2],通过图像处理分析后,获取零件的外形及位置等信息,反馈到子环节的机械臂,告知机械臂进行下一步操作[3]。机器视觉应用广泛,于工件识别检测等领域有着极其重要的地位,能高效弥补人工检测劳动强度大且效率低的传统人工检测弊端。
产品检验和定位技术是工业上产中的重要环节,所有制造业行业都需要对产品进行识别和分类,尤其在多样的生产环境的企业中,车间的自动化水平和智能程度直接决定该企业的生产效率。OpenCV被广泛运用于工业生产的机器视觉研究中,具有实现简单、效率高、通用性好的特点[4]。
2 环境准备(Environmental preparation)
为减小外界无关环境影响导致算法计算量的繁杂度,通过搭建检测黑箱,侧向打光补充黑箱内光线环境,运用CCD工业摄像机抓拍图像。环境模型图参照图1检测黑箱。
3 图像预处理(Image preprocessing)
图像采集过程中,由于传送带上的污渍划痕,以及齿轮上的刮痕等因数会产生不利于检测结果的噪点。因此,对实时抓拍的原始图像进行灰度化、滤波、二值化、形态学处理去除背景[5],流程图参照图2图像处理过程。
3.1 灰度化
抓拍原始图像,然后采用加权平均法对原始图像进行灰度化处理[6],得到处理后图像,灰度化效果参照图3灰度化处理,所叙述灰度化处理计算公式为:
其中,为像素点为坐标为的灰度结果,R为红色通道数据,G为绿色通道数据,B为蓝色通道数据。
3.2 高斯滤波除噪
抓拍的图像包含各种各样的噪声,为减少后续图像处理和轮廓计算复杂度,需要对图像进行滤波除噪。图像滤波指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。根据图像的能量大部分集中在低频和中频的幅度谱中,而较高频段的信息则会被大量的噪声淹没,为简约后续图像处理,消除抓拍时混入的噪声。
主要滤波有线性滤波和非线性滤波,其中线性滤波有方框滤波、均值滤波、高斯滤波,非线性滤波有中值滤波和双边滤波。根据频率,还分低通滤波器和高通滤波器,之外还有在特定频率通过的带通滤波器,特定频率阻止通过的带阻滤波器,以及允许所有频率的全通滤波器。
高斯滤波指以高斯函数作为滤波函数进行滤波操作,高斯低通是模糊,高斯高通是锐化。高斯滤波对整幅图像进行加权平均计算,每个像素值都由其本身和领域内其他的像素经过加权平均得到结果。在灰度化后对图像进行高斯滤波,其计算公式为:
其中,σ表示方差。高斯滤波处理后图像参照图4高斯滤波处理。
3.3 二值化
在滤波之后根据图像与背景占据不同灰度等级范围,设定阈值进行二值化处理,对齿轮与背景进行分割。通过适当阈值处理图像,使处理后图像的集合性质只有与像素值为0或255的点的位置信息相关,不在涉及像素的多级值。
图像信息计算信号值原理图参照图5二值化计算。
图5中Src为输入源信号值,Dst为计算后信号值。二值化处理后图像参照图6二值化处理。
3.4 形态学运算
经过二值化处理后,提取的目标中会存在伪目标图像的问题,或者进行多个目标同时处理时,多个目标物中间存在粘连或是断裂现象的问题。为区分所提取的目标物,对不同目标特征进行描述与计算,再次运用形态学运算进行计算。
形态学运算指先进行膨胀运算,对二值化图像中存在的细小断裂点进行连接,再进行腐蚀运算,消除图像边界,去除图像中细小连接点[7]。
腐蚀是一种消除连通域的边界点,使边界向内收缩的处理。腐蚀运算的计算公式为:,处理原理示意图参照图7腐蚀运算。
膨胀是将与目标图像区域的背景点整合到改目标图像中,使目标图像边界向外扩张的处理。膨胀运算的计算公式为:,处理示意图参照图8膨胀运算。
其中,结构B是用来膨胀A,S是用来腐蚀X,结构B和S为矩阵结构。
4 齿轮轮廓处理(Gear profile treatment)
4.1 计算齿轮轮廓
计算图像边缘的算法算子有Rebert算子、Prewitt算子、Sobel算子、Laplacian算子和Canny算子。其中,Canny边缘检测算子是一个非常普遍且高效的算子。Canny算子先对灰度化后的图像使用高斯滤波器进行平滑,计算图像平滑后每个像素点的梯度幅值和梯度方向。梯度方向用于细化边缘,当梯度幅值不高于梯度方向的两个邻点的梯度幅值,则抑制该像素响应,达到边缘细化的目的。
Canny算子使用两个幅值阈值,高阈值和低阈值。高阈值用来检测梯度幅值大的强边缘,低阈值用来检测梯度幅值小的弱边缘。边缘细化后,跟踪具有高幅值的轮廓,从满足高阈值的边缘像素开始,顺序跟踪连续的轮廓段,把与强边缘相连的弱边缘连接起来,可得到目标图像的边缘轮廓。Canny边缘检测算法的基本过程参照图9Canny边缘检测。
Canny算子具有参数较少、计算效率高、得到的边缘连续完整、Gauss滤波的尺度的选择和双阈值的选择等优点。
4.2 提取齿轮轮廓
根据Canny算子运算后,采用Findcontours方法进行轮廓获取[8],轮廓经检测后,边缘计算由计算出极大值点,根据过零点信息和图像梯度计算出上下极限位置,构成frame等信息,根据这些信息把轮廓检测后得到的数据进行筛选,去除零散不符合要求的轮廓后,把计算后的轮廓保存在构建的多维数组中稍待后面进行计算处理。
设定特定双阈值,篩选轮廓信息,把低于低阈值的轮廓信息组删去,低于阈值的轮廓信息为生产线上刮痕等痕迹的轮廓信息;把高于高阈值的轮廓信息组删去,高于高阈值的轮廓信息为生产线的流水线边缘。检测到的轮廓图像参照图10齿轮轮廓。
5 筛选齿轮并计算反馈位置(Select gear and calculate feedback position)
获得齿轮轮廓后根据轮廓信息筛选齿轮,齿轮可能存在的瑕疵有尺寸不达标、缺齿、多齿、齿距不达标和齿深不达标。
5.1 尺寸不达标
根据轮廓信息计算当前齿轮轮廓最外层齿轮的轮齿位置分别为Q1、Q2、Q3、Q4,其中,Q1、Q2点在纵坐标上,Q3、Q4点在横坐标上。根据四个顶点确定与齿轮相切的正方形的面积S=(Q2-Q1)*(Q4-Q3);当结果S比预设值大时,意味着当前齿轮尺寸过大,当S比预设值小时,则当前齿轮尺寸大小。
5.2 齿距不达标以及缺齿和少齿
获取轮廓信息,对轮廓进行凸包检测,假设一个点集,对点集中任意两个点P和Q,以P和Q为端点的线段被包在这个子集中,则S是凸包。一个点集S的凸包是包含S的最小凸集。
运用convexHull算法和convexityDefects算法齿轮轮廓进行运算,获取凸包数据。根据凸包数据进行凸包检测,计算凸包总数为n,齿轮标准齿数为m,当m>n时,当前齿轮齿数多于生产标准,当m 当齿轮齿数达标后,检测齿轮的齿距,任意相邻齿轮齿尖A1(A1.x,A1.y)与A2(A2.x,A2.y)的间距。其中x、y为齿尖对应横纵坐标。标准齿轮齿距为L,当L=W时,该齿轮为符合生产标准齿轮,否则不达标。 5.3 齿深不达标 检测完齿数、齿距后进行齿深检测,齿尖A1与A2之间,与A1和A2相连接位于轮廓最内层的点Q(Q.x,Q.y), 点A1、A2、Q构成三角形,则Q到齿尖的距离为。其中,A为齿尖距离,由勾股定理得,齿深。生产标准齿深为h,当H=h时,该齿轮符合生产标准,否则,不达标。 5.4 计算被筛选齿轮位置 当检测不合格后,根据轮齿Q1、Q2、Q3、Q4,计算齿轮中心C(x,y),其中,x=|Q2.x-Q1.x|,y=|Q2.y-Q1.y|。相机拍摄图像与实际拍摄位置面积比例为ε,则当前齿轮的实际位置为P(x*ε,y*ε)。计算到结果后把计算结果反馈给机械臂,由机械臂把不达标齿轮筛选出来。 6 结论(Conclusion) 本文针对基于机器视觉的高速智能检测技术一直是制约着中国制造业的发展的瓶颈的问题,提出基于OpenCV的机器视觉应用于工业生产流水线中齿轮瑕疵检测和筛选,研究一种应用于齿轮瑕疵检测的工业生产流水线,探索解决制约制造业发展的途径。根据工业相机的高帧率快速抓拍,高效率筛选齿轮,可以检测齿轮的尺寸、齿数、齿深、齿距等瑕疵,并把瑕疵齿轮的位置信息反馈给机械臂。由于相机是垂直拍摄,检测齿轮厚度有一定局限性,会导致较大的误差,可在此基础上研究双摄像机联拍,在检测齿轮正面瑕疵的基础上增加检测侧面,以及齿轮厚度的功能。 参考文献(References) [1] 易东蔚,梁玉强,陈劲杰.基于OpenCV的齿轮自动识别研究[J].农业装备与车辆工程,2019,057(007):79-82. [2] Sun S, Yang X. Method of CCD Camera Calibration Based on OpenCV[J]. fire control & command control, 2014: 34-37. [3] 刘庆宏,王声文,白彦庆.基于OpenCV的机器视觉功能开发及在工业生产中的应用[J].制造技术与机床,2015(3):40-43. [4] 范瑞琪,任德均,欧彬,等.基于OpenCV的相机显示研究与实现[J].精密制造与自动化,2017(02):28-31. [5] Kaehler A, Bradski G. Learning OpenCV: Computer Vision in C++ with the OpenCV Library[M]. O'Reilly Media, Inc. 2013. [6] 余辉,王林,王德胜.OpenCV在产品特征檢测系统中的应用[J].科技视界,2013(05):45;100. [7] 秦小文,温志芳,乔维维.基于OpenCV的图像处理[J].电子测试,2011(07):39-41. [8] Adrian Kaehler, Gary Bradski. Learning Opencv 3: Computer Vision in C++ with the Opencv Library[M]. O'Reilly Media, Inc. 2016. 作者简介: 叶润东(1996-),男,本科,技术员.研究领域:软件开发,机器视觉. 姚佳岷(1985-),男,硕士,实验师.研究领域:软件开发,深度学习,机器视觉. 魏宇昕(1996-),男,本科,技术员.研究领域:软件开发. 林雪晴(1998-),女,本科,技术员.研究领域:电子科学. 陈志伟(1998-),男,本科生.研究领域:嵌入式系统,自动化. 张伟荣(1997-),男,本科,技术员.研究领域:3D建模.