基于边缘轮廓的管道裂纹缺陷检测算法研究*
2022-06-16关静楼飞
关 静 楼 飞
(南京师范大学中北学院 丹阳 212300)
1 引言
管道一般应用于排水、天然气运输、石油运输等领域,而长时间的使用以及外部环境、输送介质的影响等,容易使管道内部产生裂纹、锈迹等缺陷,进而产生泄露等事故,因此定期对管道进行检测,排除隐患具有重要意义[1~3]。
由于水上环境以及管道形状的影响等,管道的缺陷检测成为难题。传统的计算机实时监控、放射线透视检测和超声波探伤检测法[4]工作量大,准确率低,抗干扰能力差,以管道机器人和视觉传感器为载体,基于图像处理的管道缺陷检测方法实施方便,效率高且正确率高[5~6],已成为普遍使用的方法。20 世纪初,美国普渡大学的Myung Jin Chae 教授等研发出了一套自动检测系统,可扫描管道并评估其缺陷类型[7];随着图像处理技术和计算机视觉的发展,加拿大的Motaemdi M 教授等提出利用管道缺陷的细节特征进行检测的新方法,结果表明该方法准确率较高,能够识别出管道的裂纹、锈迹腐蚀等缺陷[8]。长安大学的孙朝云等研发了裂纹检测系统,通过图像增强、图像分割,根据图像的线性特征分离出了裂纹缺陷[9];孙文雅等基于形态学边缘算法对管道图像进行处理,并利用阈值法分割图像后,提取裂缝的特征参数来检测裂缝[10]。
本文主要对管道内部裂纹进行检测,利用图像处理技术,提出基于边缘轮廓的管道缺陷检测算法:先对视觉传感器获取的图像进行预处理,然后利用最大类间方差法(Otsu)将图像的背景与缺陷部分分割,并对分割后的图像进行形态学操作和提边缘轮廓,根据边缘轮廓计算管道缺陷的特征参数,并对长短轴的计算方法提出改进,最后实现裂纹缺陷的识别。本文利用Matlab进行实验仿真,结果表明本文所用算法准确率较高,计算速度快,能够搭载管道机器人对管道内部裂纹进行检测。
2 管道裂纹图像的预处理
管道机器人的视觉传感器获取的图像是彩色图像,且受光照、噪声、设备等影响,管道缺陷区域特征不明显,会对图像的检测造成影响,因此需要进行预处理,降低图像中的噪声,同时便于后续图像的轮廓检测和特征提取。图像预处理包括滤波和图像增强。
图像进行预处理前先灰度化减少计算量,视觉传感器获取的缺陷管道图像和灰度化后的图像如图1所示。
图1 管道图像的灰度化
为了减少或消除噪声对图像的影响,需要对灰度图进行滤波处理。空间滤波的实质是用掩模(模板)对图像中的每个像素点操作,重新计算其灰度值。常用的滤波方法有均值滤波,中值滤波和高斯滤波等,本文分别用中值滤波和高斯滤波对图像进行处理。中值滤波简单来说就是将模板内像素值从小到大排列,位于中间的像素值赋值给待处理像素。高斯滤波即是在模板范围内对所有像素值进行加权平均,权值由高斯核确定,二维高斯核如下式:
式中σ=(ksize/2-1)*0.3+0.8,ksize 为高斯核大小,即模板大小。本文中中值滤波和高斯滤波的模板大小均设为5,实验结果如图2 所示,从图中可看出,中值滤波后的图像较清晰,且能滤除椒盐噪声,同时后面进行图像分割时中值滤波效果较好,因此选择中值滤波对灰度图进行处理。
图2 管道缺陷图像滤波处理
为了便于图像分割,突出管道图像中的缺陷区域,抑制背景区域,对滤波后的图像进行增强。空间域增强即对图像的各像素点进行处理,通过运算或变换改变其灰度值。针对本文管道缺陷图像的特点,利用对比度线性展宽算法进行图像增强。
对比度线性展宽[11]的实质是灰度值的线性映射,通过抑制非重要信息的对比度使重要信息的对比度展宽,可用下式表示:
图3 对比度线性展宽效果图
3 图像分割
图像分割的目的是将管道缺陷图像分为缺陷和背景两部分,重点是阈值的选取。由于管道内部的环境不同,缺陷类别不同,不同的管道缺陷图像灰度分布不同,因此不能选择固定阈值进行二值化,需要利用动态阈值来适应不同的缺陷图像。常用的方法有类间最大距离法,最大熵方法和最大类间方差法等。本文选择最大类间方差法对图像进行分割,并提出改进方法。
图像分割实际上是将图像中所有的像素值分为两类,合适的阈值会使两类数据之间的方差越大,最大类间方差法[12]就是用方差将其分为两类,具体算法如下。
1)计算图像中所有像素的分布概率:
式中Ni为灰度值是i的像素个数,Nimg是像素的总个数;
2)设置初始阈值Th=Th0,将图像分为C1 和C2两类;
3)计算两类的方差σ1,σ2和灰度均值μ1,μ2,图像的总体灰度均值μ:
4)计算两类问题的发生概率P1和P2:
5)计算类间方差:
6)选取最佳阈值Th=Th*,使图像分为两类后满足:
一般为选取到最合适的阈值,初始阈值可从0开始,取完所有的灰度值,找到最大类间方差,对应的阈值即为最终阈值,但整个算法耗费时间较长,计算量大。根据实验比较分析,管道缺陷图像分割时,阈值均在120~200 之间,因此可选择初始阈值为120,并在阈值为200时结束,寻找类间方差最大时对应的阈值,减少运算时间。
用上述方法对管道缺陷图像进行分割,改进后的算法可将计算时间减少一半,结果如图4,可以看出图中的裂纹被分割出来,但裂纹之间不连续,有断裂部分;同时由于图像右下角像素的灰度值与裂纹灰度值较接近,也被认为是目标像素检测出来,需对其进行处理。
图4 管道缺陷图像的分割
形态学操作[13]可将图像中断裂部分连接,便于提取缺陷的完整轮廓。形态学算法是以结构元素为基础的运算,结构元素就是某种具有确定形状的基本结构元素,可以是矩形、圆形或菱形等。腐蚀可以将目标图形收缩,而膨胀则将目标图形扩大。本文为了将目标区域向外部扩张使其连接,因此需进行膨胀,同时为了保持原目标区域的大小不变,膨胀后需要再进行腐蚀运算,也称为闭运算。根据裂纹缺陷的特点,本文选取矩形结构元素对图4 分别进行膨胀和腐蚀运算四次,结果如图5 所示,可以看出裂纹区域面积基本不变,且基本连接在一起,便于后面进行管道缺陷图像的边缘检测。
图5 膨胀和腐蚀效果图
4 管道裂纹图像的边缘检测
边缘是描述目标细节特征的重要信息,是特征提取的基础,通常图像局部区域中灰度变化较明显的像素点即为边缘。边缘检测一般基于图像的一阶或二阶微分算子,一阶微分算子如Roberts,Sobel,Priwitt 算子等是利用不同的模板求图像的梯度,通过阈值确定边缘,计算较简单,能够获得图像特定方向的灰度变化,但获得的边界较模糊;二阶微分算子如Laplacian 微分算子,Wallis 算子等计算图像的二阶方向导数,但对噪声较敏感[14]。
Canny于1986 年研究了最优边缘检测的特性,提出了Canny 边缘检测,成为应用最广泛成功的一种算法,本文基于Canny 算子对裂纹进行边缘检测:先对图像进行高斯滤波,然后用一阶差分计算图像梯度的幅值和方向,并根据幅值在梯度方向上进行非极大值抑制,最后用滞后阈值算法确定边缘像素点。对图5 进行边缘检测后如图6 所示,可看出裂纹边缘能够完整地检测出,效果较好。
图6 管道缺陷图像的边缘检测效果
5 管道缺陷图像的特征提取和识别
一般图像的特征可分为纹理特征,形状特征,颜色特征和边缘特征等,其中形状特征包括目标的长宽比、圆形度、周长、面积等。根据裂纹缺陷的特点,本文基于形状特征对管道缺陷进行提取。
周长是最简单的形状特征,可认为是轮廓线的像素个数。长轴和短轴也可描述管道裂纹的形状,通常长轴与短轴是目标区域外接矩形的长短轴,边界上任意两像素点间距离最大的是长轴,短轴则是垂直于长轴方向的两个像素间距离最大[15]。偏心度为长轴和短轴之比,可以描述细长目标。本文基于边缘轮廓提取管道缺陷图像的周长,长轴和短轴等特征,并提出长短轴的改进算法。
为了滤除孤立点或非缺陷点,先设定阈值滤除小轮廓,即周长较小的轮廓,便于之后的特征提取和计算,对图6 进行处理,结果如图7 所示,小轮廓目标均被滤除。
图7 滤除小轮廓效果图
比较缺陷区域和非缺陷区域可看出,其偏心度有较大差别,裂纹长轴较长,而短轴很短,偏心度较大,因此可通过计算长短轴的长度来识别裂纹,在图7中,即分别计算各轮廓的长短轴。
传统算法中,长轴是轮廓上任意两个像素点间的最大距离,而短轴则是垂直于长轴的最长距离,计算量较大,耗费时间长,且裂纹形状不规则,可能有的区域较宽,有的区域窄,所找到的短轴不能代表裂纹的粗细程度,因此本文提出一种计算长短轴的方法,具体步骤如下:
1)对于任一轮廓,分别计算X,Y方向的最大最小值;
2)计算X 方向的最大距离和Y 方向的最大距离,较大的距离为长轴距离,同时确定裂纹走向;
3)裂纹走向分为横向和纵向,根据裂纹走向,在该方向上取N 个点进行采样,若走向为横向,则相同的纵坐标肯定有对应的两个横坐标,计算两个横坐标间的距离,然后对所有采样点的距离求均值后即为短轴长度。
4)计算短轴时,若相同的纵坐标对应的横坐标只有一个,可以确定该轮廓对应的目标区域不是缺陷轮廓,可以滤除。
管道裂纹的形状不同,大小也不同,因此计算短轴时可以根据情况取固定的采样点数,也可用不同的采样点数。在本文中根据长轴长度,若长轴小于100 取10 个采样点,否则取20 个采样点,计算得到的短轴长度基本可以代表裂纹缺陷的粗细程度。
用传统算法和本文所提算法计算图像中所有轮廓的长轴和短轴长度,并计算偏心度,设置阈值Th,若偏心度大于该阈值,则该轮廓区域为裂纹,否则不是。由于存在较小较细的裂纹,因此本文选取的阈值Th=5。
对图7 中的所有轮廓线进行识别,各形状特征如表1 所示,其中长短轴的长度均以像素为单位,并且在相同的软硬件条件下计算两种算法所需时间。可以看出该图中的裂纹属于细长型,偏心度较大,与传统算法相比,本文所提算法计算的短轴距离较短,与实际情况更相符,同时所需时间较短。
表1 管道裂纹缺陷形状特征
对于裂纹较多较复杂的情况,用本文算法对其进行识别,原图如图8(a)所示,预处理和形态学操作后的图像如(b)所示,可以看出图中有不同形状走向的裂纹三条,同时由于图像分割原因,左下角和右下角区域被认为是目标区域而保留。对图(b)进行边缘检测,如图(c)所示,可以看出轮廓周围出现很多毛刺等孤立点,通过轮廓周长滤掉后结果如图(d)所示,为方便观察,对每条轮廓编号。
图8 复杂裂纹图像
滤除孤立点、小轮廓后,对剩余的轮廓进行特征提取和识别,在识别过程中,若轮廓区域属于非缺陷区域,则不计算短轴,各裂纹对应的形状特征如表2所示。传统算法中,3号轮廓线的短轴较长,不能正确识别出裂纹,且所需时间较长。经比较,本文所提算法正确率高,且速度较快。
表2 复杂裂纹缺陷的形状特征
为了验证本文算法的准确性,对50 幅有裂纹的图像进行缺陷识别,其中45 幅图像的裂纹可以检测出来,正确率达到90%,其中裂纹没有检测出来的图像主要是存在细小裂纹,在图像分割时与背景连接在一起被认为是目标区域,识别时被认为是非缺陷区域。
6 结语
本文基于边缘轮廓对舰船的管道缺陷图像进行检测,利用管道机器人搭载视觉传感器获取图像后,通过预处理、图像分割和形态学操作等,将缺陷区域作为目标区域,提取轮廓边界,并基于轮廓线进行缺陷的特征提取和识别,在特征提取时,本文提出长短轴的计算方法,通过偏心度识别裂纹,与传统算法相比本文所提算法运算速度较快,正确率较高。总的实验结果表明本文所述方法可用于管道裂纹的缺陷检测,方法可行、可靠。为了进一步提高管道缺陷检测的准确度,可对图像分割算法进行改进,减少背景、光照等因素对缺陷区域的影响,满足不同环境和场景的要求。