一种基于图像处理的表面擦伤缺陷联通的算法的制作方法

文档序号:16682064发布日期:2019-01-19 00:36阅读:331来源:国知局
一种基于图像处理的表面擦伤缺陷联通的算法的制作方法

本发明涉及图像处理领域,更具体地,涉及一种基于图像处理的表面擦伤缺陷联通的算法。



背景技术:

随着生产技术和工艺的发展,人们对产品外观质量给予了足够的重视,特别是对于产品表面缺陷的考察,也日渐成为各行业的关注点。表面的缺陷不仅影响了包装、工艺品等这些以外观为重的产品的美观,还对某些金属、光纤等产品的性能产生了很大的影响。

目前,国内越来越多的企业运用机器视觉等相关技术,对生产线上的产品进行表面缺陷的在线检测。其关键技术是将缺陷区域从图像中分割出来后,进行图像的预处理,后对缺陷进行特征描述,进而利用各种分类器来识别缺陷的类型。

但对于少量类型的缺陷,如擦伤缺陷。在进行图像预处理时,用常规的形态学操作或者联通域操作将擦伤缺陷进行联通,会大大改变缺陷其本身实际的几何、形状等性质,导致后续的缺陷类型识别不准确。



技术实现要素:

本发明为克服上述现有技术所述对于表面擦伤缺陷联通造作的不足,在尽可能小的改变擦伤缺陷实际性质的前提下,对离散的擦伤缺陷进行联通,使之成为一个独立完整的缺陷,提供一种基于图像处理的表面擦伤缺陷联通的算法。

为解决上述技术问题,本发明的技术方案如下:

一种基于图像处理的表面擦伤缺陷联通的算法,包括以下步骤:

s1.获取图像,设定最小缺陷面积阈值δ,使用图像轮廓查找算法对图像进行缺陷轮廓识别,并将图像中面积小于δ的缺陷移除;

s2.初始化参数,对每个缺陷轮廓进行标记,记为contours[i],i代表当前第i+1的缺陷轮廓;

0<=i<k,其中,k为缺陷轮廓的总数,每个缺陷轮廓均由一定数目的点组成;

s3.对每个缺陷轮廓进行和其他缺陷轮廓遍历比较的操作,计算相邻2个缺陷轮廓间的最小距离,并且将距离最小时的2个点进行直线连接,使相邻的2个缺陷轮廓联通、合并;

s4.输出经过联通缺陷的图像,算法结束。

进一步地,所述步骤s1中,缺陷移除的具体方式为如下:

计算缺陷面积,与所述阈值δ进行比较,若小于δ,则将该区域的灰度值设置为0;若缺陷面积大于δ,则不做处理,保留原本图像的灰度值。

进一步地,所述步骤s2中,初始化参数具体还包括以下步骤:

s201.设定最小距离mindistance,设i=p=q=0。

进一步地,所述步骤s3采用opencv的函数进行遍历比较,在opencv中,contours.size()代表图像中所有的离散的缺陷轮廓的数量,contours[i].size()代表为第i个轮廓中点集的数目,步骤s3的具体过程包括以下步骤:

s301.判断i<contours.size()-1是否成立,如果是,则进入步骤s302,否则进入步骤s4;

s302.判断p<contours[i].size()是否成立,如果是,则进入步骤s303,否则进入步骤s307;

s303.判断q<contours[i+1].size()是否成立,如果是,则进入步骤s304;否则将p递增1,进入步骤s302;

s304.计算p点和q点之间的距离dis,将q递增1;

s305.判断dis<mindistance,如果成立,则进入步骤s306,否则进入步骤s303;

s306.将dis的值赋予mindistance,记录当前p点和q点的位置,进入步骤s303;

s307.在图像上,将p点和q点之间用直线进行连接,将mindistance设为1000,将i递增1,进入步骤s301。

与现有技术相比,本发明技术方案的有益效果是:

本发明通过采用计算相邻两缺陷轮廓间最短距离的两个点的连线,从而将离散的缺陷进行联通,使多个缺陷构成一个整体,能较好地维持缺陷本身性质,便于后续对其二值图像进行求取相关特征描述,构建特征向量,继而便可由相关分类器进行识别判断缺陷的类型,增加了识别判断阶段的准确度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是基于图像处理的表面擦伤缺陷联通的算法流程示意图。

图2是剔除小缺陷前和剔除后的效果图。

图3是缺陷联通后的效果图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

下面结合附图和实施例对本发明的技术方案做进一步的说明。

一种基于图像处理的表面擦伤缺陷联通的算法,其具体实施过程如图1所示,包括以下步骤:

s1.获取图像,设定最小缺陷面积阈值δ,使用图像轮廓查找算法对图像进行缺陷轮廓识别,并将图像中面积小于δ的缺陷移除;

s2.初始化参数,对每个缺陷轮廓进行标记,记为contours[i],i代表当前第i+1的缺陷轮廓;

0<=i<k,其中,k为缺陷轮廓的总数,每个缺陷轮廓均由一定数目的点组成;

s3.对每个缺陷轮廓进行和其他缺陷轮廓遍历比较的操作,计算相邻2个缺陷轮廓间的最小距离,并且将距离最小时的2个点进行直线连接,使相邻的2个缺陷轮廓联通、合并;

s4.输出经过联通缺陷的图像,算法结束。

在本实施例中,步骤s1中的缺陷移除的具体方式为如下:

擦伤缺陷包含很多离散的小缺陷,将每个离散的缺陷的面积计算出来后,与所设的阈值δ进行比较,以图2中带有离散缺陷的图像为例,若小于δ,则将该区域的灰度值置为0(黑色);若面积大于δ,则不做处理,保留原本图像的灰度值(白色即缺陷)。

具体的,如图2中圈出的缺陷所示,这些缺陷本属于一个擦伤缺陷,但其面积较小,若继续后续的步骤,将离散的缺陷之间用直线连接,那么可能会出现连接的线段反而会比该小缺陷的面积更大,故将其剔除掉。本实例中,设定的阈值δ为50(即50个像素),若离散的缺陷的面积(像素组成个数)小于50,则将该小区域的灰度值置为0(黑色),若其面积大于50,则不做任何处理。经次处理后,便可达到将面积较小的区域剔除掉的目的,具体的效果如图2右侧。

在本实施例中,步骤s2中,初始化参数具体还包括以下步骤:

s201.设定最小距离mindistance,设i=p=q=0。

在本实施例中,步骤s3采用opencv的函数进行遍历比较,在opencv中,contours.size()代表图像中所有的离散的缺陷轮廓的数量,contours[i].size()代表为第i个轮廓中点集的数目,步骤s3的具体过程包括以下步骤:

s301.判断i<contours.size()-1是否成立,如果是,则进入步骤s302,否则进入步骤s4;

s302.判断p<contours[i].size()是否成立,如果是,则进入步骤s303,否则进入步骤s307;

s303.判断q<contours[i+1].size()是否成立,如果是,则进入步骤s304;否则将p递增1,进入步骤s302;

s304.计算p点和q点之间的距离dis,将q递增1;

s305.判断dis<mindistance,如果成立,则进入步骤s306,否则进入步骤s303;

s306.将dis的值赋予mindistance,记录当前p点和q点的位置,进入步骤s303;

s307.在图像上,将p点和q点之间用直线进行连接,具体的连接方式如图3所示,采用白色线条将相邻的缺陷轮廓进行连接;将mindistance设为1000,将i递增1,进入步骤s301。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1