基于 C++ MFC 活塞环外观表面缺陷检测【100010409】

news/2025/2/5 1:55:06/

活塞环外观表面缺陷检测

1 绪论

1.1 课题研究背景和意义

活塞环是用于嵌入活塞槽沟内部的金属环,是一种具有较大向外扩张变形的金属弹性环,它被装配到剖面与其相应的环形槽内。活塞环的作用包括密封、调节机油(控油)、导热(传热)、导向(支承)四个作用。活塞环的工作表面不能有刻痕、擦伤、剥落等缺陷,外圆柱面和上下端面应有—定的光洁度。因此避免活塞环缺陷的检测关系到系统整体功能的安全性,是企业注重的关键,同时也保证人的生命健康不受损害。

图 1-1 活塞环

活塞环缺陷检测系统由图像采集、图像数据处理、缺陷分析等部分组成[1]。传统的外观检查是通过人工完成。对于一些技术熟练的老工人,虽然可以把这项工作做的比机器更好,但是他们的速度比相对机器来说较慢,并且机械重复式的劳动会感觉疲倦。随着产业转型升级,传统的人工检测已不能满足实际需求,且存在劳动强度大、效率低、工作环境恶劣等诸多弊端,限制了检测技术的发展,解决传统的检测技术弊端迫在眉睫[2]。机器视觉可以有效的取代人工检测。因此,发展人工智能方面的缺陷检测是未来发展的趋势。

机器视觉识别技术作为智能化发展的一个前沿课题,在工业自动化生产领域有良好的应用前景[3]。使用机器视觉实现的检测,无需人类的参与,减少了人工成本。同时,最主要的是机器视觉提高了生产效率,缩短了生产周期,减少了人力成本。在大批量工业生产过程中,用机器视觉检测的方式可以提高生产效率,尽早的发现产品生产过程中的缺陷,避免企业的损失。

本课题的目的旨在基于活塞环表面缺陷检测需求,通过数据采集与分析,软件开发与算法编程,实现活塞环几种典型缺陷的检测。学习检测的相关知识的同时,锻炼自己在实验设计、图像处理等方面的技能,也让我对活塞环的缺陷及其避免有所了解。

论文的研究主要包括以下几点意义:

(1)随着人工成本的不断提高和科技方面的不断提高与拓展,机器取代人类干活是必然趋势,同时伴随的生产效率的提高等优势,活塞环的缺陷检测采用机器识别是必然的。

(2)视觉识别同时也具有拓展性,不仅可以应用在活塞环的缺陷检测,同时也可以应用在车牌识别,犯罪人员的识别与监视等方面。因此,学习并了解识别技术具有现实意义。

图 1-2 车牌识别技术

(3)提供不同方案对于活塞环缺陷检测时视觉识别的影响,了解各项参数对图像采集及处理的关系,提出一种较好的解决方案。

1.2 国内外研究现状和发展

机器视觉在工业自动化中应用广泛,具有非接触性、可靠性好和柔性化程度高的特点[4]。机器视觉技术应用在工业生产制造等行业中,可以有效的适应各种恶劣的环境,具有工作效率稳定、工作精度高、工作质量稳定的特点。对于提高我国自动化水平有着极其重要的研究意义[5]。

如今机器视觉技术在国外尤其是欧洲汽车工业的应用已经十分普遍,基本上涵盖了所有汽车终端零件及工艺制造流程:汽车零件生产线、车体识别,各种汽车零部件精度的视觉检测系统、齿轮缺陷检测、发动机总装检测、火花塞检测、汽车装配、灯光检测等[6]。目前,机器视觉在国内汽车制造业的普及率不是很高,中国汽车工业的应用仍处于起步阶段。随着国内外汽车厂家竞争的加剧,机器视觉系统在中国的发展会更加快速。

进入 21 世纪以来,我国经济得到了明显提升,工业水平也是如此。我国也意识到设备和技术的重要性,因此不断地投入人力物力,加强技术与设备方面的研发,从而提升我国工业的生产效率。我国工业生产朝着智能化和自动化方向迈进[7]。

1.3 研究内容

本课题主要研究的内容有活塞环缺陷图像的采集和活塞环的缺陷图像处理,同时也涉及到活塞环工艺和机器视觉检测系统的研究。论文分为六章:

第一章:论述了国内外对于缺陷检测时的一些发展,并简要介绍论文的主要研究内容与研究方案。

第二章:阐述了目前国内外生产活塞环时的特点,与一些常规的加工方法,介绍了它的生产工艺以及缺陷产生的原因和一些避免措施。

第三章:介绍机器视觉识别的工作原理与机器视觉系统识别的组成。

第四章:介绍了活塞环缺陷的数字图像的特征,介绍了一些图像的预处理,介绍了如何遍历所有图像。

第五章:根据设计的程序各模块如何实现进行详细介绍,包括了图像的预处理、轮廓的提取,图像的裁剪、掉角的检测及面积测量、压伤的测量和操作界面的设计与功能实现。

第六章:对设计的产品和程序进行可行性分析,包括了社会、健康、法律、文化、经济以及环境因素的分析

第七章:结论与展望。

2 活塞环生产过程介绍与缺陷分析

活塞环是内燃机的重要部件之一。随着社会发展,人们对活塞环性能提出了更高的要求。由于活塞环性能直接影响到整机的运行状态,国内外学者对活塞环的强度和热传导部分进行了深入研究[8]。

2.1 活塞环工作原理

活塞环是内燃机主要部件之一,其主要作用是确保密封性,防止燃烧室高温燃气进入曲轴箱影响内燃机使用[9]。另外,活塞环还有调节机油(控油)、导向(支承)作用。活塞环主要分为气环和油环两种,如图所示:

图 2-1 气环与油环

(1)密封性

活塞环保持活塞与气缸壁之间的密封,控制漏气。为防止泄露形成良好密封需要在设计阶段让其具有一定张力,在该力作用下活塞环实现与气缸壁内侧、环槽侧面的接触[10]。活塞环受力图如图所示:

图 2-2 活塞环受力图

2-3 封气原理

(2)导热性

活塞环的导热性就是把活塞顶部的热量通过气环与环槽间的接触面传递给气环,再通过气环与气缸套的接触面将热量传递给气缸套、气缸、冷却水中。

(3)控油性

气缸运动时,活塞环刮落气缸壁上的润滑油,并保持正常的油耗量。如果提供的润滑油过多时,多余的油会被吸至燃烧室,使油耗量增大。燃烧产生的积炭,对发动机性能造成严重影响。

2-4 活塞环刮油

(4)导向型

因活塞外径小于气缸内径,如果没有活塞环,则活塞在气缸内极其不稳定,不能够运动自如。同时,活塞环还要防止活塞直接与气缸的接触,起到了导向作用。因此,活塞环在气缸内上下运动,其滑动面靠活塞环来承担[11]。

2.2 活塞环的的加工特点

活塞环时内燃机中重要易损件,生产批量大,可想而知,必须高度专业化,组织流水生产作业线。

活塞环的生产流水线有如下特点:

(1)专业化程度高

因为活塞环形状的发杂,加工过程中必须在固定的地点完成特定的一道或几道加工工序,而每一道工序都在固定的工作地加工,如活塞环粗磨两端面都在粗磨组进行加工。

(2)加工过程的连续性与单向流动性

活塞环加工工序为:

粗磨——去油——热处理——细磨——去油——半成品检查——切削流水工作线——表面处理——成品检查——配组入库。

活塞环加工过程中需要严格按照加工工艺路线中规定的过程进行加工,不能调换工序,不然会影响到活塞环的使用性能,严重时产生大量的废品。

(3)加工过程的节奏型

每个工序都有一定的时间要求,工序与工序之间都有一定的方向性。

2.3 活塞环工艺过程介绍

活塞环加工的基准面是两端面,以内圆定位,使用螺旋夹具作为夹紧元件,采用锥套收正圆法或者半圆套收正圆法进行夹紧。

活塞环两端面的加工是以其自身作为定位基准,以外圆的导向反复加工。保证两端面的精度,有减少累积误差的作用。

2.4 活塞环缺陷形成原因

活塞环主要的缺陷有三类,分别是掉角、压伤和脱铬。本课题研究将围绕这三类缺陷进行分析,从而实现从根源上寻找活塞环表面缺陷的自动化检测方法。

(1)掉角

掉角是活塞环中最明显的缺陷,在加工过程中,应力的集中使得未加工部分受力过大,导致活塞环非切削部分发生断裂,形成缺角;其次,加工活塞环使用的材料是铸铁,铸铁本身具有硬且脆的特性,机床的正常震动或者切削力的突然急剧变化,都会造成铸铁材料发生断裂,产生掉角。

图 2-5 掉角

(2)压伤

活塞环的上端面和下端面相比其它的平面面积大,加工和搬运过程中,容易发生擦划或碰撞,产生压伤。压伤主要分布在活塞环的上、下端面上。

图 2-6 压伤

(3)划痕

划痕是由于在运输过程中的碰撞,造成表面形成的划痕。

图 2-7 划痕

生产活塞环的过程中,其工艺过程复杂,除了上述三种主要的缺陷外还有外圆拉毛、外圆砂孔、外圆无铬层等数十种表面缺陷。之后的研究将以上述三种主要的缺陷进行研究。

3 机器视觉系统的工作原理与组成

3.1 机器视觉工作原理

基于机器视觉的产品检测在工业自动化生产中有很多重要的应用[12-13]。机器的视觉系统是利用计算机来替代人眼获取的图像信息,结合程序算法对图像信息进行处理,进行智能控制、检测和测量[14]。机器视觉包含了机械电子、计算机图像处理、控制自动化等方面。随着科技不断地发展,机器视觉的研究与应用迅速发展,对于获取得到地图像数据,已经从简单单一的灰度图像发展成为了具有高分辨率的彩色图像,在到现在的 3D 成像技术,图像信息从二维数据转变成为三维数据,能获取到人眼能够识别到的全部图像数据,并结合光学仪器和成熟的成像技术,机器视觉能获取肉眼无法完全识别的微小、高速的图像数据。

3.2 机器视觉系统组成

机器视觉主要包括视觉引导和视觉检测,活塞环外观缺陷检测属于视觉检测。整个识别系统包括光源、成像布局、工业相机、上位机、执行机构、信息处理。在一定的光源条件和场景布局下,相机能够采集特定的数据信息,其中包括外观轮廓、缺陷信息等有用信息,同时也存在大量无用信息,需要通过光源条件、场景布局来消除,同时也可以通过软件的方式实现采集特定的数据。整个系统工作方式如下:

采用特定的光源,特定的成像布局对采集区进行环境搭建,执行机构通过旋转,活塞环完成一周的数据采集,工业相机采集活塞环表面数据,并将数据上传至上位机,上位机通过 OpenCV 库对采集图像数据进行处理,从而检测具体的缺陷,最后输出报告。

影响机器视觉性能的因素主要包括以下几个方面[15]:

(1)光源

光源的作用不仅是起到照明作用,其中在检测环节中,能够让缺陷特征更加明显,其次与环境能够有明显的区域差异,能够在处理图像中快速提取其轮廓,为之后的图像处理提供便利。

(2)成像布局

检测的东西不同需要的成像布局方式也不尽相同,检测表面缺陷时,可以采用环形光源,检测轮廓时,可以采用底部背光源。

图 3-1 成像布局

(3)工业相机

工业相机是系统的眼睛,工业相机分为彩色和灰色的,一般都采用灰色相机,能够减少在数据处理时将图片灰度化。工业相机的分辨率决定了图像采集的细节把控。

(4)信息处理

信息处理是系统核心部分,它能够检测出缺陷所在位置,并实时反馈,它需要和上位机紧密联系,并将处理的信息生成文件。

(5)执行机构

作为系统的输出模块,执行只需要在这活塞环进行 360° 旋转即可。

4 图像处理介绍与缺陷分析

4.1 对活塞环缺陷特征的简单分析

基体掉角是活塞环中比较明显的缺陷,主要是因为在加工中开口间隙的过程中由于应力集中导致活塞环非去除部分崩裂,形成缺角,进行二值化后可以明显观测出来。

压伤是缺陷中比较难检测的缺陷,主要是因为压伤的形状很小,且颜色和反光性能与活塞环基体的颜色和反光性能十分接近,需要对打光角度和光的亮度要求很高,需要低角度强光照射。

划痕是由于在运输过程中的碰撞,造成表面形成的划痕,为克服在图像获取中光照对图像照射的不均匀,需要对图像进行增强处理[16]。选择直方图均衡化既可以提高图像的对比度,也可以改善图像的视觉效果,达到凸显划痕的目的。

4.2 图像二值化

图像二值化是将连续色调的模拟图像经采样量化后转换成数字影像的过程。图像二值化的目的是为了更好的对图像进行处理。每个像素点存储着对应的模拟量,但因为模拟量是连续的,计算机在处理时只能处理简单的数字量,因此需要将像素点转换为数字量,可以把每个像素的值设为 0 和某个固定值,使图像呈现出明显的黑白效果,从而达到突出表现所需要的特征效果。图像数字化具有非常重要的作用,他能使图像变得简单,数据量减小,突出特征。图像二值化过程中,可以将大于或等于某个选定的灰度值的所有像素点的灰度值判定为特定物体,其灰度值被固定的灰度值替代,其余的像素点被设定为 0,可以直接剔除一些低于或者高于一定值的像素,使图像编程黑白分明的图像,这样就很好的选择图像中的特征区域。二值化可以视为简单的图像分割方法。图像的阈值选取依赖于具体的问题,不同的图像中可能有不同的阈值,处理的效果也不尽相同。在 OpenCV 中,用 Threshhold()函数实现。

图 4-1 图像二值化

第五个参数,是阈值类型,具体对应下图所示:

图 4-2 阈值类型及其操作

图 4-3 处理原理

4.3 图像处理常用方法

边缘检测是计算机图像处理的最基本问题。边缘检测主要针对于图像中亮度变化比较明显的特征点。这些亮度变化明显的地方很可能表现着需要提取的特征。在图像处理领域中有很多边缘检测的算子和方法,比较经典的有 Sobel 算子、Laplace 算子和 Canny 算子。边缘检测的整个处理过程包括如下步骤,首先,对图像进行平滑处理或者二值化处理,起到滤波和降噪作用;其次,对图像进行强化,突出边缘特征,第三步对边缘进行检测,显示变化情况,最后提取边缘参数。其中就包含了区域面积,周长和位置关系。

图 4-4 Canny 算子

4.4 图像预处理

4.4.1 图像灰度化

在使用工业相机采集图像时,大部分的为彩色相机,为了能够有效处理各类图像,并加快处理速度,因此需要将原始图片进行灰度处理。在 OpenCV 中,进行灰度处理的函数为 CvtColor()函数。处理结果如图所示:

cvtColor( g_srcImage, g_grayImage, COLOR_BGR2GRAY );

图 4-5 灰度处理的图片

图像经过灰度化处理后,原始图像会被转化为具有单通道的 8 位灰度图像,之后对图像进行孤点平滑处理。

4.4.2 平滑处理

平滑处理主要是去除和削弱图像中的孤点和噪声区域的干扰。根据图像噪声源的产生原因,可从硬件和软件两个方面进行噪声消除或抑制,硬件上优化系统传动结构、选择信噪比更高的相机提高成像质量,但在实际应用时,检测系统硬件平台搭建好后,硬件改动对系统影响较大,因此一般采用软件算法对图像进行降噪处理。图像去噪处理也称为图像滤波或者图像平滑[17],下文将介绍几种常见数字图像滤波方法:

(1)中值滤波(medianBlur)

中值滤波是一种典型的非线性滤波技术,基本思想是用像素邻域中各点值的中值替代,让周围的像素值更接近真实值,这个方法在去除脉冲噪声,椒盐噪声的同时有能保留图像的边缘细节。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。中值滤波在一定条件下可以克服常见线性滤波带来的图像细节模糊,也保护了边缘信息,但是对于一些细节多的图像不适合。W 为二维模板,通常为 33,55 区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。

(4-1)

图 4-6 中值滤波

(2)均值滤波(blur)

均值滤波是最简单的一种滤波操作,输出图像的每一个像素是核窗口内输入图像对应的像素平均值。均值滤波是典型的线性滤波算法,主要思想是邻域平均法,即用一片图像区域的各个像素的均值来替代源图像中的各个像素值。需要一个滤波模板,再用模板中的全体像素的平均值来替代原来的像素值。其公式如下,其中 m 为该模板中包含当前像素在内的像素总个数。均值滤波存在固有缺陷,不能很好的保护图像细节,在图像中去噪的同时破坏图像细节部分,从而使图像变模糊,不能很好的去除噪声点。

(4-2)

图 4-7 均值滤波

(3)高斯滤波(GaussianBlur)

高斯滤波使一种线性平滑滤波,可以消除高斯噪声,应用于图像处理的减噪过程。高斯滤波使对整幅图像进行加权平均的过程,每一个像素点的值,都由本身和邻域内的其他像素值经过加权平均后得到,具体操作为用一个模板扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值替代模板中心像素点的值。图像的高斯模糊过程就是图像与正态分布做卷积。高斯滤波对于抑制服从正态分布的噪声非常有效。一维高斯函数如下:

(4-3)

其中,高斯分布决定高斯函数的宽度,对于图像处理来说,常用二维均值离散高斯函数做平滑处理,二维高斯函数如下:

(4-4)

图 4-8 高斯滤波

图 4-9 高斯分布(正态分布)

可以看出,高斯滤波对噪声有一定的程度抑制,且边缘信息保留较好,因此选取高斯滤波对图像进行预处理。

4.4.3 图像增强-直方图均衡化(equalizeHist)

直方图均衡化是灰度变换的一个重要应用,他高效且易于实现,广泛应用与图像增强处理中。直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法。

图 4-10 图像增强

4.4.4 形态学滤波(morphologyEx)

但是在图像处理时,一些部分不能够连通或者轮廓不够圆润光滑,对采集的边缘有干扰,因此就需要通过形态学滤波对图像进行处理了

形态学处理主要通过结构模板,如矩形、圆形或十字形等,将其作用于原图像,经过一系列的图像卷积操作获得结果图像,其计算简单,能较快地获取图像形状边缘[19]。最基本的形态学操作为膨胀和腐蚀,并且通过多次运算和相互之间组合可以衍生出开运算、闭运算和形态学梯度等操作。对于二值图像来说:

腐蚀:核与其覆盖的图像部分做“与”操作,如果全为 1,则该像素点为 1,否则为 0。

膨胀:核与其覆盖的图像部分做“与”操作,如果全为 0,则该像素点为 0,否则为 1。

如下图所示,通过进行膨胀运算,可以将不连续的部分连续起来,形成一定的封闭图形。

图 4-11 膨胀运算

4.5 图片的裁剪(Rect)

图片裁剪能够指定想要读入的目标,减少处理时间,增加精度,减少不必要的图像影响,给图像处理带来便利。

图 4-12 处理前

图 4-13 处理后

4.6 图片的混合(addWeighted)

处理过的图像需要和原始图像进行叠加,在原始图像中显示缺陷位置,因此需要将处理后找到的缺陷与原图进行叠加进行显示。

图 4-14 图片的混合

4.7 缺陷面积的计算(contourArea)

缺陷面积需要通过一系列的图像处理得到只剩下缺陷位置的区域,通过 contourArea()函数计算区域面积,具体实现如下所示

double area = contourArea(contours[i]);//计算面积

4.8 图像的遍历算法

图像都是由像素点组成,可以把图像理解成由很多个点组成,每个点都有各自的坐标。图像的遍历就是通过 for 循环,一排一排的将每个像素点扫描,实现图像的遍历,具体参数如下所示:

//一个循环,遍历所有部分
for( unsigned int i = 0; i < contours.size(); i++ )
{ approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true );//用指定精度逼近多边形曲线 boundRect[i] = boundingRect( Mat(contours_poly[i]) );//计算点集的最外面(up-right)矩形边界minEnclosingCircle( contours_poly[i], center[i], radius[i] );//对给定的 2D点集,寻找最小面积的包围圆形 
}

5 功能模块程序设计与开发

5.1 图像预处理

由采集系统采集到的图像为原始图像,但原始图像中又有很多噪点,非相关区域,对提取所需特征有一定的干扰作用,同时非相关区域又会造成图像处理缓慢,影响整体系统处理时间。因此,图像处理前,需要对图像进行预处理。其中就包括图像灰度化,图像二值化,图像去噪,和图像裁剪等一系列预处理。

图 5-1 图像预处理

5.2 各功能的实现方法

5.2.1 轮廓的提取

轮廓的提取可以知道当前活塞环的具体位置,同时可以根据一些点的坐标大致估算其活塞环的大小。首先需要对图像进行预处理,包括对图片进行灰度处理和降噪处理,降噪方式采用高斯滤波的方式对图像进行整体降噪,实现代码如下所示:

// 转成灰度并模糊化降噪cvtColor( g_srcImage, g_grayImage, COLOR_BGR2GRAY );GaussianBlur( g_grayImage, g_grayImage, Size(3,3) ,0,0);

通过二值化的方式可以采集到特定的数值,将阈值设定为 60,采集到图像信息如图所示,实现代码如下:

g_grayImage = g_grayImage > 60;

图 5-2 阈值为 60 的图像

因此需要通过形态学滤波的方式处理图像,使之能够连续,从而得到轮廓,需要通过 morphologyEx()使用形态学梯度的迅速按类型处理,可以使边缘信息更加明显,经处理效果如图所示,实现代码如下:

	Mat element=getStructuringElement(MORPH_RECT,Size(15,15));Mat element1=getStructuringElement(MORPH_RECT,Size(15,15));morphologyEx(g_grayImage,g_grayImage,MORPH_GRADIENT,element1);morphologyEx(g_grayImage,g_grayImage,MORPH_ERODE,element);

图 5-3 形态学梯度处理图像

最后只需要通过遍历所有像素画出轮廓即可完成查找轮廓。

5.2.2 图像的裁剪

图像裁剪应用于该程序的最开始,主要作用是将整张图片裁剪到比较小的尺寸,处理图片时处理速度得到提升,其次可以减少处理一些不必要的干扰。

	Mat image1=  imread( "Mosaic_map/output.bmp");//读取位于Mosaic_map/output.bmp的图片Mat imageROI;//定义一个感兴趣区域imageROI=image1(Rect(350,0,550,850));//左上角坐标(350,0)到右下角坐标(550,850)的矩形//imshow("裁剪",imageROI);//显示裁剪区域,调试中可以查看,正式程序中不采用waitKey(0); 	//等待按下imwrite("Mosaic_map/output_caijian.bmp",imageROI);//将处理后的图片写入到Mosaic_map/output_caijian.bmp处

图像都是由像素组成的,像素坐标是像素在图像中的位置。以图像左上角为原点建立以像素为单位的直接坐标系 u-v。像素的横坐标 u 与纵坐标 v 分别是在其图像数组中所在的列数与所在行数。(在 OpenCV 中 u 对应 x,v 对应 y)。使用 Rect()函数可以将图片坐标为左上角坐标(350,0)到右下角坐标(550,850)的矩形裁下,储存在 imageROI 变量中。

图像坐标系如图所示:

图 5-4 图像坐标系

因此经过 Rect 函数处理后可以裁剪得到如下对应 OpenCV 坐标系中所示的矩形图片

图 5-5 图片坐标区域

5.2.3 掉角的检测及面积测量

(1)图像预处理

得到的图像因为是彩色的,对于计算机来说图像处理只能处理简单的 01 信号,因此需要将图像进行预处理,将其转换为简单的数字图像。首先需要对图像进行灰度处理,可以使用 cvtColor()函数,将其第三个参数设置为 COLOR_BGR2GRAY,可以实现将 BGR 图片转换为 GRAY 型图片。在提取掉角缺陷的图像中,需要对图像进行降噪,该实例采用均值滤波对图像进行降噪,使用 blur(),其核为 7x7 型,不同的核的大小对图像处理效果不同。处理效果如图所示:

图 5-6 降噪预处理

	cvtColor( g_srcImage, g_grayImage, COLOR_BGR2GRAY );//对图像进行灰度处理blur( g_grayImage, g_grayImage, Size(7,7) );//使用均值滤波对图像进行降噪blur

降噪完成后,需要对图像进行二值化处理。在二值化函数 threshold()中,第 3 个参数为 40,第 4 个参数为 255,采用 THRESH_BINARY 模式,对图像进行处理。使得像素值范围在 40—255 区间的所有像素值变为 255,其余的像素点的像素值变为 0,起到突出特征的效果,处理效果与代码如下所示:

图 5-7 图像处理模式算法

threshold( g_grayImage, threshold_output,40 , 255, THRESH_BINARY ); // 使用 Threshold 检测边缘

图 5-8 阈值为 40 和 80 的图像

处理完图片能够发现区域并不是封闭,且有一定的干扰,因此需要对图像进行形态学滤波处理,常见的处理方式为:腐蚀、膨胀、开运算、闭运算、形态学梯度、顶帽、黑帽。根据图像可知,需要对其进行开运算,使其能够封闭完整,之后对其进行闭运算,减少干扰。使用 morphologyEx()对图像进行形态学滤波处理。处理效果如图所示:

图 5-9 图像形态学滤波处理效果

	Mat element=getStructuringElement(MORPH_RECT,Size(15,15));//	0:矩形  1:十字交叉形  2: 椭圆morphologyEx(threshold_output,threshold_output,MORPH_OPEN,element);//开运算morphologyEx(threshold_output,threshold_output,MORPH_CLOSE,element);//闭运算threshold_output=~threshold_output;//求反

现在得到了掉角缺陷的图像信息,需要对其区域轮廓进行查找,并框选其区域。需要使用 findContours()对其进行轮廓查找,第 4 个参数采用 RETR_TREE 的轮廓检索模式,和第 5 个参数为 CHAIN_APPROX_SIMPLE 的轮廓的近似办法,查找轮廓。具体不同参数如表所示:

表 5-1 轮廓检索模式

表 5-2 轮廓检索近似办法

findContours( threshold_output, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0) );// 找出轮廓

得到轮廓信息,就需要遍历所有像素,用逐渐逼近的方法,去画出找到的轮廓,使用 for 循环,遍历所有像素,代码如下所示,

//一个循环,遍历所有部分for( unsigned int i = 0; i < contours.size(); i++ ){ approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true );//用指定精度逼近多边形曲线 boundRect[i] = boundingRect( Mat(contours_poly[i]) );//计算点集的最外面(up-right)矩形边界minEnclosingCircle( contours_poly[i], center[i], radius[i] );//对给定的 2D点集,寻找最小面积的包围圆形 }

之后需要画出查找的轮廓,使用 drawContours()函数进行绘画。使用 for 循环对其轮廓进行绘画。代码如下所示:

// 绘制Mat drawing = Mat::zeros(  threshold_output.size(), CV_8UC3 );for( int unsigned i = 0; i<contours.size( ); i++ ){Scalar color = Scalar(0 ,255,255);//设置为黄颜色drawContours( drawing, contours_poly, i, color, 1, 8, vector<Vec4i>(), 0, Point() );//绘制轮廓

图 5-10 绘制缺陷

最后计算该区域的面积与周长,使用 contourArea()和 arcLength()函数可以实现直接计算,但是需要注意的是,工业相机使用的是 M2513-MP2 型号,其焦距为 30mm 且成像比例为 1:1.4。该相机参数如图所示,该实验平台相机距离被测物体为 40mm 需要根据公式得到实际尺寸,同理对于周长来说也是使用相同公式。

(5-1)

图 5-11 M2514-MP2 参数

最后需要对得到的数据进行储存,将其存在 txt 文件中,方便之后数据的读取。

代码如下:

//计算面积与周长double area = contourArea(contours[i]);//计算面积double length = arcLength(contours[i], true);//计算周长//计算area=area*(30.0/40.0*1.4)/100;//面积计算length=length*(30.0/40.0*1.4)/10;//周长计算ofstream outfile;//创建文件   outfile.open("diaojiao_canshu.txt"); //创建名为diaojiao_canshu.txt文件,存储数据outfile<<"面积为"<<area<<"mm2"<<endl; //数据流的显示outfile<<"周长为"<<length<<"mm"<<endl; //数据流的显示outfile.close();//关闭文本

图 5-12 面积及周长数据

通过不同位置对其可行性进行验证,得出如下所示表格:

表 5-3 不同位置测量数据

5.2.4 压伤的检测

对图像处理都需要对其进行预处理,将其转为灰度图片并进行均值滤波对图像进行降噪,可以减少一些在之后的图像处理中的干扰,具体代码如下所示:

	cvtColor( g_srcImage, g_grayImage, COLOR_BGR2GRAY );//对图像进行灰度处理blur( g_grayImage, g_grayImage, Size(7,7) );//使用均值滤波对图像进行降噪blur

对其进行阈值分割,得出一个有缺陷特征和没有缺陷特征的处理图,分别使用阈值为 100 的和阈值为 70 的二值化对图像进行处理,处理图像信息如图所示:

图 5-13 阈值为 100 和阈值为 70 的图像

	threshold( g_grayImage, threshold_output_1,70 , 255, THRESH_BINARY );	// 减数 使用Threshold检测边缘threshold( g_grayImage, threshold_output,100 , 255, THRESH_BINARY );	// 被减数 使用Threshold检测边缘

我们可以通过图像的取反求减的方法实现得到剩下的缺陷特征,但是在运算时,阈值小的被减后会有一些边缘信息没有被剔除,造成的结果如图所示:

图 5-14 求差运算

因此需要对得到的图像进行形态学滤波处理,可以通过膨胀 erode()函数的方式让减数扩大一些特征,但因为减数没有缺陷信息,膨胀并不会影响缺陷变化,但可以实现消除干扰,可以使用算子为(9,9)的对其进行膨胀,处理得到的缺陷特征可以进行适当的膨胀,算子为(3,3)最终处理效果如图所示:

	Mat element=getStructuringElement(MORPH_RECT,Size(3,3));//	0:矩形  1:十字交叉形  2: 椭圆Mat element1=getStructuringElement(MORPH_RECT,Size(9,9));//	0:矩形  1:十字交叉形  2: 椭圆erode(threshold_output_1,threshold_output_1,element1);//用(9,9)算子膨胀threshold_output=~threshold_output;//求反threshold_output_1=~threshold_output_1;//求反threshold_output_2=threshold_output-threshold_output_1;//运算dilate(threshold_output_2,threshold_output_2,element);//用(3,3)算子对缺陷特征膨胀

图 5-15 缺陷图像

经过最终处理,得到压伤缺陷检测的程序,运行结果如下所示:

图 5-16 缺陷位置

5.3 操作界面程序设计

设计的操作界面,具备图片采集(未完成)、图片裁剪、轮廓显示、缺陷分析、实时图像(未完成)、掉角的显示与面积周长的估算、划痕的显示与长度的估计、选择图片的功能。图片采集可以控制执行机构通过旋转并配合工业相机,将图片进行采集到指定位置;图片裁剪的主要目的是在指定区域内进行工作,可以减少程序的执行时间,同时可以减少处理一些外部干扰;轮廓显示主要显示当前活塞环的轮廓,并估计活塞环的直径大概为多少,实时图像可以做到当场采集当场分析的作用;缺陷分析可以分析所有的缺陷,并将其显示;掉角的显示可以分别显示当前的缺陷,并估算掉角面积大小与周长;划痕的显示可以显示划痕的形状,并估算其长度;选择图片可以加载已采集好的图片,进行缺陷分析。中间的图片区可以实时查看处理结果,右边的图片区可以显示当前工作区。操作界面如图所示:

图 5-17 操作界面

5.3.1 按钮的实现

按钮采用 MFC 所使用的按钮,通过添加处理事件程序的从而实现通过按钮实现执行程序。消息类型为 BN_CLICKED,即点击触发。

5.3.2 图像的加载

通过 WINDOW.h 自带的函数可以设置某按钮的加载图片的功能,通过 GetPathName()获取图片路径,GetFileName()获取图片名称,实现功能的代码如下:

	CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this);fileDlg.DoModal();
//获取图片路径和图片名称strFilePath = fileDlg.GetPathName();//路径strFileName = fileDlg.GetFileName();//名称

载入图片时需要对图片进行判断,不能够使其为空,否则会对图像处理造成不必要的麻烦,可以使用 if 语句进行判断。之后需要将读取到的图片存入到 Picture Control 中。首先需要知道图片框的 ID 为多少,其次,需要通过数据流的方式,将图片绘制到图片框中,最后释放读取的图片,减少其内存。

	//Picture Control的ID为IDC_SrcCWnd  *pWnd = GetDlgItem(IDC_Src);pWnd->GetClientRect(rectControl);CDC *pDc = GetDlgItem(IDC_Src)->GetDC();SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE);rectPicture = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(), (int)rectControl.Height()));((CStatic*)GetDlgItem(IDC_Src))->SetBitmap(NULL);//以下两种方法都可绘制图片//image.StretchBlt(pDc->m_hDC, rectPicture, SRCCOPY); //将图片绘制到Picture控件表示的矩形区域image.Draw(pDc->m_hDC, rectPicture);                //将图片绘制到Picture控件表示的矩形区域image.Destroy();pWnd->ReleaseDC(pDc);

实现将读取的图片显示在图片框中,但是由于是将读取的图片绘制到图片框中,处理的图片不能够从图片框中直接获得,因此需要将读取的图片存入到指定的文件中,代码如下所示:

	//参考 https://blog.csdn.net/a478257115/article/details/53031799//保存CWnd* bmpShow = GetDlgItem(IDC_Src);CDC *pdc = bmpShow->GetDC();CImage  imag;CRect rect;CString picturePath;GetClientRect(&rect);        //获取画布大小bmpShow->GetWindowRect(&rect);imag.Create(rect.Width(), rect.Height(), 32);::BitBlt(imag.GetDC(), 0, 0, rect.Width(), rect.Height(), pdc->m_hDC, 0, 0, SRCCOPY);picturePath = "Mosaic_map/output.bmp";  //文件路径HRESULT hResult = imag.Save(picturePath); //保存图片ReleaseDC(pdc);imag.ReleaseDC();

6 可行性分析

6.1 各因素对系统的影响

该程序的应用可以应用于任何关于活塞环缺陷检测的所有系统中,本设计只停留于程序方面的设计。对于一个完整的系统,包括了检测系统、执行系统、动力系统、传动系统、控制系统等。若继续完善,可以成为一个完整的活塞环检测系统。对于一个完整的系统,需要考虑各因素对其系统的影响。系统包括了工业相机、光源、支撑架、运动机构等。检测装置布局如图所示:

图 6-1 设备布局

6.1.1 社会因素的考虑

社会因素是相对于自然因素和精神因素而言的。社会因素包括社会结构的各种要素及其各种社会关系。经济基础决定上层建筑。该设备提升了人工检测活塞环缺陷时的效率,决定了生产力,解放了生产力,人们有更多的时间去思考,从而促进设会的进步。

6.1.2 健康因素的考虑

本系统只是检测机构,不产生任何有害气体,且进行检测时,可以在一个密闭空间中执行检测,通过上位机实时得到活塞环缺陷数据,可实现检测与执行分离的作用。

6.1.3 安全因素的考虑

转台转速在 10°/s,36s 可实现一个活塞环的缺陷检测,且转台在旋转时,处于低速状态,不会对人造成安全影响,其次转台与工作台间隙很小,不会产生夹人事件,系统的安全性可以得到保障,对于程序控制方面,执行机构都有限位开关,当达到极限位置时,可以实现限位作用。转台都有急停功能,能够在紧急情况下实现急停。

6.1.4 文化因素的考虑

本系统符合社会主义价值观,同时紧随中国制造 2025 与中国提出的智能化工业,没有涉及到宗教信仰、风俗习惯、社会道德等问题,符合中国国情。

6.1.5 环境因素的考虑

系统能够在各种特殊环境下运行,包括恶劣工况下、高噪音、黑暗环境下,都可以完美运行,同时它不会输出有害气体,只是在运行时会产生少量噪音及运动的损耗,对环境不会造成严重影响。

6.2 复杂环境的预测

因为系统非常依赖光源、工业相机的成像方式、环境条件等因素,不同的影响因素的叠加,会对系统的稳定性造成影响。

6.2.1 光源

光源对整个检测来说影响是非常明显的。因为光源的照射方向不同,对于采集的数据也不同。光源不仅仅是照亮目标物体的表面,在复杂的工业现场,由于检测对象表面存在反光差异、目标区域的图像特征不明显以及检测需求精度高的原因,被测目标物体的表面信息往往很难提取,因此一个好的机器视觉系统首先考虑的是选择一个合适的光源与照明方案。所选光源亮度要求高,能体现出目标物体检测区域与背景区域的差异,其次是性能稳定,长时间工作情况下不会影响图像的成像质量。此外,选择光源时应考虑其形状、颜色和入射角度等信息,能体现出目标物体表面的几何纹路信息。

表 6-1 不同光源特性对比

可以看出,LED 光源具有亮度高、均匀性强、光谱范围宽、性能稳定的优点,己成为机器视觉系统的首选光源方案。并且,随着半导体技术和制造工艺的发展,LED 光源的制造成本逐渐降低,其应用市场将会越来越大。

6.2.2 工业相机的成像方式

根据目标物体的几何尺寸,检测区域的面积、纹理,图像的检测精度等特征,需要针对性的选择合适的成像方式,使采集到的图像尽可能的体现出检测目标和背景图像之间的差异,提高检测效果。成像方式主要考虑光源的照射方式、镜头的选取以及光学系统的设计。常见成像方式如图所示:

图 6-2 成像方式

使用底部背光源采集图像如图所示,该采集方法可以较快的提取到活塞环的轮廓。

图 6-3 底部背光采集

采用无影光源,可以避免投影的影子对检测的影响,减少检测时不必要的图像处理。采集数据如图所示:

图 6-4 无影光源采集

6.2.3 环境条件

环境对于图像处理有很大影响。对于复杂的环境,在进行图像处理时需要将干扰降到最低,同样的需要大量的图像处理。如下所示,分别为不同环境下采集的图像数据。

图 6-5 不同环境下采集的数据

6.3 系统经济性分析

系统经济性体现在两个方面:一个是生产该设备时需要花费的价钱,另一个是在单位时间内产生的社会价值。

6.3.1 生产成本

生产成本可以由如下不完整表格体现(数据来源与淘宝):

表 6-2 成本预计

生产成本预估为 1 万 5 千元。

6.3.2 产生社会价值

产生的设会价值包括节约的成本、时间、人力物力等方面以及创造的价值。若采用该设备,可以提高检测效率为 70%,节省检测时间的 45%,解放大量生产力。

7 结论

本文的意义在于:

(1)通过分析活塞环产生缺陷的原因,分析了在什么样的环境下容易造成缺陷,并提出了避免措施,介绍了一些有关视觉识别在具体环境下的应用与取得的成就,最后针对检测缺陷提出了几种可行的方案;

(2)通过阐述一些图像处理、图像增强的方法,分析了什么样的活塞环缺陷存在怎样的数字特征,如何提取缺陷特征并显示存在的缺陷,如何能够缩短整体运行时间;

(3)分析了对于特定缺陷应该怎样布局环境,选择怎样的光源进行增光;

(4)设计了一套系统软件,根据系统的要求对其功能进行实现,能够检测掉角、划痕、压伤等缺陷,对软件界面做了整体优化。

之后我将会:

(1)将其设计成一个完整的系统,包括了传送、执行、检测等一系列完整的检测体系;

(2)优化检测程序,能够适应大部分检测环境,提高检测效率与成功率,对其界面进行优化,减少程序的漏洞;

(3)能够实时检测,并将分析报告打包上传。

当前,活塞环的缺陷依旧会对各相关环节有一定的影响作用,检测活塞环缺陷并且能够及时发现并处理,对之后活塞环应用于实际有着积极的影响。视觉检测不仅可以应用于缺陷检测,同样的也可以应用于其他领域,发挥它积极的作用。随着世界的不断发展,人工智能取代传统工业是必然趋势。活塞环在制作中会越来越精细,运输途中会越来越平稳,活塞环缺陷也会越来越少。同样的,对于其检测机构也会越来越完善,智能化必将取代笨重的人工检测。

♻️ 资源

在这里插入图片描述

大小: 45.8MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87379040


http://www.ppmy.cn/news/380822.html

相关文章

我的世界JAVA版活塞虫_《我的世界》活塞虫汽车制作教程

在《我的世界》游戏中&#xff0c;有许多玩家表示不知道活塞虫汽车怎么做&#xff0c;其实这个还是挺简单的&#xff0c;下面是玩家分享的《我的世界》活塞虫汽车制作教程&#xff0c;希望能够帮助到大家。 粘液块合成方法&#xff1a; PS&#xff1a;粘液块在《我的世界》1.8版…

基于C++MFC的活塞环外观表面缺陷机器视觉检测系统

目 录 1 绪论 1 1.1 课题研究背景和意义 1 1.2国内外研究现状和发展 2 1.3研究内容 2 2 活塞环生产过程介绍与缺陷分析 4 2.1活塞环工作原理 4 2.2活塞环的的加工特点 5 2.3活塞环工艺过程介绍 6 2.4活塞环缺陷形成原因 6 3 机器视觉系统的工作原理与组成 8 3.1机器视觉工作原理…

选择合适的采购系统,实现企业数字化转型

随着数字化技术的飞速发展&#xff0c;企业数字化转型已经成为了当今市场的必然趋势。而采购系统作为企业数字化转型的重要组成部分&#xff0c;选择合适的采购系统对于企业来说至关重要。本文将围绕选择合适的采购系统&#xff0c;实现企业数字化转型展开讨论。 一、企业数字化…

网络安全进阶学习第一课——认证崩溃之弱口令与暴力破解

文章目录 一、什么是弱口令&#xff1f;二、暴力破解1、暴力破解攻击产生原因2、暴力破解分类3、具体案例 一、什么是弱口令&#xff1f; 弱口令没有严格和准确的定义&#xff0c;通常认为它是容易被别人猜测到或被工具破解的口令均为弱口令。 在允许社会工程学攻击的情况下&…

uniapp小程序订阅消息推送+Thinkphp5后端代码教程示例

记录一下通过uniapp开发小程序消息推送的实例&#xff0c;配合后端tp推送&#xff0c;之前写的项目是微信小程序而且后端是原生php&#xff0c;这次通过项目记录一下 目录 回顾access_token获取规则以及思路 第一步&#xff1a;设计前端触发订阅事件第二步&#xff1a;设计将to…

实战:用dockerfile创建镜像实现springboot项目容器化

文章目录 前言技术积累docker基本操作命令dockerfile简介dockerfile指令说明 实战演示创建dockerfile创建挂载目录构建dockerfile启动容器完成验证 写在最后 前言 docker容器化方案是当下流行的服务部署方式&#xff0c;在软件领域举足轻重。我公司的测试、线上环境都采用dock…

30ea什么意思_阿玛尼ga是什么意思、和ea的区别

阿玛尼品牌大家一直都很熟悉&#xff0c;但我们经常会看到阿玛尼ga&#xff0c;阿玛尼ea等&#xff0c;有很多种类&#xff0c;这就让我们很费解&#xff0c;完全看不懂什么意思&#xff0c;不知道如何区分&#xff0c;那么阿玛尼ga是什么意思、和ea的区别是什么?下面请看详细…

ebay 后台HTML有尺寸宽度要求吗,eBay牛仔裤成为尺码问题重灾区,卖家上架需注意这几个方面...

eBay已经宣布&#xff0c;10月15日发布的商品细节和分类上的变化所引起的大部分问题已经解决。本文将关注eBay牛仔裤的尺寸&#xff0c;以评估商品的状态。除了牛仔裤&#xff0c;其他类别也处于类似的状态。 我们将看到eBay产品细节的新字段&#xff0c;另外买家缩小搜索范围并…