一种基于OpenCV的断口形貌图裂纹缺陷提取方法与流程

文档序号:18034322发布日期:2019-06-28 23:05阅读:602来源:国知局
一种基于OpenCV的断口形貌图裂纹缺陷提取方法与流程

本发明涉及一种基于opencv的断口形貌图裂纹缺陷提取方法。



背景技术:

目前对金属断口行为的研究有两种不同的方法。一种是断口力学的方法,它的依据是断口学和弹塑性理论,考虑材料固有缺陷;另一种是金属物理的方法,它从材料的显微组织、微观缺陷、甚至分子和原子的尺度上研究断口机理。断口失效主要是因为在机械构件或机械产品中产生裂纹或断口,所以,要研究断口失效原因或影响因素就必须着重或首先分析研究裂纹或断口的类型、机理和特征,也就是要分析研究裂纹产生的规律及影响因素。断口经历裂纹的形成扩展直至最终破断等不同阶段,每一阶段都与内部的、外部的、力学的、化学的以及物理的等很多因素有关;同时断裂过程的每一阶段又会在断口上留下相应的痕迹、形貌及特征。断口分析就是通过对这些痕迹、形貌和特征的观察、鉴别及分析,揭示出断裂过程的相关因素,从而判明断裂失效的性质与机理。目前主要是根据专家的现有经验对某一断口形貌进行定性的分类,再在此基础上判断出此失效产品的具体失效模式。因此客观地对断口形貌进行分类是失效分析工作的基础,有重要意义。金属断口学是一门观察研究金属断口表面特征形态的科学,在材料评价和失效等工程中具有重要作用。观察和分析金属断口可以为研究金属材料的性能和行为等提供重要信息,通过对金属断口的特征、形状、形貌等问题的研究,可以更好地揭示断裂过程的机理,研究影响断裂过程及断口形态的各种因素,从而更好地指导生产实线。



技术实现要素:

本发明的目的是为了解决现有的对金属断口行为判断方法依据经验而定,存在判断不准确的问题,而提出一种基于opencv的断口形貌图裂纹缺陷提取方法。

一种基于opencv的断口形貌图裂纹缺陷提取方法,所述方法通过以下步骤实现:

步骤一、对拉伸断口形貌图像采用阈值化方法进行预处理,将图像裂纹像素点与背景像素图形区分并凸显:

首先,找到图像要分割的像素点,然后对这些像素点设定相应的阈值;其中,设定的阈值像素点的灰度值要有较强的对比度以方便观察和后续图像处理。

步骤二、采用均值滤波或中值滤波方法进行祛噪处理;

步骤三、断口形貌图裂纹缺陷的提取:

对预处理后的图像进行边缘提取,得到直观的裂纹特征相貌的图像;

步骤四、图像细化过程;

步骤五、查找并绘制图像的轮廓矩。

本发明的有益效果为:

本发明是涉及的opencv是一个基于bsd许可(开源)发行的跨平台计算机视觉库,可以运行在linux、windows、android和macos操作系统上。它开源且高效--由一系列c函数和少量c++类构成,同时提供了python、ruby、matlab等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。使用opencv函数库中,adaptivethreshold()指令可以实现阙值的自动选择,即自适应阙值法。基于阙值的变量属性,通过直方图自动选择,以达到最佳效果。中值滤波属于非线性滤波,使用像素点邻域灰度值的中值来代替该像素点的灰度值,在对断口形貌图裂纹缺陷图像处理时有效得抑制噪声。邻域中有很多点的梯度值较大,使用opencv边缘检测中的sobel算子对图像进行边缘检测,可以有效地将非边缘点进行舍弃。

附图说明

图1为本发明的方法流程图;

图2为本发明涉及的像素块图示;

图3为图2中每个像素都贴了标签,且用深色表示前景像素,浅色表示背景像素;

具体实施方式

具体实施方式一:

本实施方式的一种基于opencv的断口形貌图裂纹缺陷提取方法,所述方法通过以下步骤实现:

步骤一、对拉伸断口形貌图像采用阈值化方法进行预处理,将图像裂纹像素点与背景像素图形区分并凸显:

首先,找到图像要分割的像素点,然后对这些像素点设定相应的阈值;其中,设定的阈值像素点的灰度值要有较强的对比度以方便观察和后续图像处理。通过对拉伸断口图像分析,可确认出裂纹特性,但图像在采集过程中,周围环境、光线等因素干扰,造成了裂纹与背景的区分度不够。阙值化的图形分割方法,可以从图形上提取出必要的像素点。

步骤二、采用均值滤波或中值滤波方法进行祛噪处理;

步骤三、断口形貌图裂纹缺陷的提取:

拉伸断口图像预处理后,可以得到完整的裂纹图像。对预处理后的图像进行边缘提取,得到直观的裂纹特征相貌的图像;

步骤四、图像细化过程;

步骤五、查找并绘制图像的轮廓矩。

具体实施方式二:

与具体实施方式一不同的是,本实施方式的一种基于opencv的断口形貌图裂纹缺陷提取方法,所述的步骤二中,采用均值滤波方法进行祛噪处理的过程为:

中值滤波考虑的滤波器是线性的,即两个信号的响应和它们各自响应之和是相等的。线性滤波易于构造,并且从频率响应角度来进行分析。然而在很多情况下,使用邻域像素的非线性滤波会得到更好的效果。比如在噪声是散粒噪声时,用均值滤波等线性滤波对图像进行处理时,噪声是不会被去除的,它们只会转换成更为柔和但仍可见的散粒。这是就需要用到中值滤波。

在opencv中,函数threshold()可以完成上述五种阙值化操作。但是函数threshold()有一个明显的缺陷,即为达到较好的图像处理效果,在操作过程中要对参数threshold进行多次修改。然而在opencv中,函数adaptivethreshold()可以实现阙值的自动选择,即自适应阙值法。这是改进的阙值技术,其中阙值本身是一个变量,基于直方图自动选择阙值,以达到最佳效果。

自适应阙值函数原型:

c++:voidadaptivethreshold(inputarraysrc,outputarraydst,doublemaxvalue,intadaptivemethod,intthresholdtype,intblocksize,doublec)

通过阙值化处理后发现二值化阙值与截断阙值将裂纹与背景明显区分开来。但是采用截断阙值处理后的图像裂纹颜色与背景颜色整体偏暗。所以最终选用二值化阙值处理图像,因为经过二值化阙值处理后,图像只剩下黑白两色,这样图像对比度高,便于观察。

均值滤波是典型的线性滤波算法,主要方法是邻域平均法,即用一片图像区域的各个像素的平均值来代替源图像的各个像素值,在图像上对目标像素给出一个模板,该模板包括了其周围的临近像素,在用模板内的全体像素的平均值来代替原来的像素,即对待处理的当前像素点(x,y),选择一个模板,该模板由临近的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度点g(x,y),即:

其中,m为该模板中包含当前像素在内的像素总个数;

所述的步骤二中,采用中值滤波方法进行祛噪处理的过程为:所述的中值滤波是一种典型的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值;中值滤波是基于排序统计理论的一种有效抑制噪声的非线性信号处理技术,其基本原理是把数字图像或数字序列中一点的值用在该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点;中值滤波在处理连续图像窗函数是与线性滤波的工作方式类似,但滤波过程不再是加权运算。

中值滤波相比于均值滤波具有明显的优势。在均值滤波中,由于噪声成分被放入平均值中,所以输出受到了噪声的影响。但是在中值滤波中,由于噪声成分很难被选上,所以几乎不会影响到输出。因此在同样的区域中,中值滤波消除噪声的方法的能力更胜一筹。中值滤波无论是在消除噪声还是保存边缘方面都是一个不错的方法。

具体实施方式三:

与具体实施方式一不同的是,本实施方式的一种基于opencv的断口形貌图裂纹缺陷提取方法,所述的步骤三中,对预处理后的图像进行边缘提取,得到直观的裂纹特征相貌的图像的过程具体为:

拉伸断口图像预处理后,可以得到完整的裂纹图像,对预处理后的图像进行边缘检测提取裂纹,得到直观的裂纹特征相貌的图像:从而将图像中某一个像素邻域中像素具有剧烈变化像素值的像素点(即边缘点)提取出来。

具体实施方式四:

与具体实施方式三不同的是,本实施方式的一种基于opencv的断口形貌图裂纹缺陷提取方法,所述的边缘检测过程通过以下步骤实现:

1)滤波边缘检测算法:

基于图像强度的一阶和二阶导数,导数对噪声敏感,需采用滤波来改善图像质量;使用自适应中值滤波进行预处理的图像,可达到使用边缘检测的图像要求;

2)增强边缘算法:

确定图像各点邻域强度的变化值后,通过增强算法计算梯度幅值,将图像灰度点邻域强度值有显著变化的点凸显出来。

3)检测算法:

增强后图像,邻域中有很多点的梯度值较大,通过阙值化方法进行检测,将非边缘点进行舍弃;

使用opencv边缘检测中的sobel算子对图像进行边缘检测;sobel算子是一个主要用于边缘检测的离散微分算子;它结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度;在图像的任意一点使用此算子,都会产生对应的梯度矢量或是其法矢量。

其中,sobel算子的计算过程:

1)分别在x和y两个方向求导;

①水平变化:将i(被作用图像为i)与一个奇数大小的内核gx进行卷积。比如,当内核大小为3时,gx的计算结果为:

②垂直变化:将i与一个奇数大小的内核进行卷积;比如,当内核大小为3时,计算结果为:

2)在图像的每一点,结合以上两个结果求出近似解:

或者利用下式代替:

g=|gx|+|gy|。

具体实施方式五:

与具体实施方式四不同的是,本实施方式的一种基于opencv的断口形貌图裂纹缺陷提取方法,所述的步骤四中,图像细化过程是生成一个对象的骨架的过程,且骨架通常是一个二值对象;骨架以较少的像素表示对象的形状,所有这些像素都是结构性的像素,因而都是必要的像素。图像细化过程可以简单的定义为找出对象中那些描述对象形状的必要像素的过程,这些描述对象形状的必要像素为骨架像素,组成的集合作为细化处理的二值图像,背景为黑色,值为0,要细化的前景物体像素值为255;通过如下步骤判断目标像素是否为该细化掉的像素点:

如图2为3×3的像素块,每个像素都贴了标签。用深色表示前景像素,浅色表示背景像素,如图3所示,p9为前景像素,p4为背景像素,而p1为目标像素,即需要判断的该不该被细化掉的像素点。

算法分为两步:

第一步:循环所有的前景像素点,对符合如下条件的像素点标记为删除:

1、2≤n(p1)≤6,其中,n(p1)表示跟p1相邻的8个像素点中,为前景像素点的个数;

2、s(p1)=1,其中,s(p1)表示将p2-p9-p2之间按序前后分别成对值为0、1的个数;

3、p2*p4*p6=0;

4、p4*p6*p8=0;

第二步:循环所有的前景像素点,对符合如下条件的像素点标记为删除;

1、2≤n(p1)≤6,其中,n(p1)表示跟p1相邻的8个像素点中为前景像素点的个数;

2、s(p1)=1,其中,s(p1)表示将p2-p9-p2之间按序前后分别成对值为0、1的个数;

3、p2*p4*p8=0;

4、p2*p6*p8=0。

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