APP下载

基于改进Canny算法的绝缘子裂缝识别

2021-01-15吕泽卿付兴建

关键词:像素点绝缘子梯度

吕泽卿,付兴建

(北京信息科技大学 自动化学院,北京100192)

0 引言

绝缘子在电力系统中可以起到绝缘作用,是输电线路的一个重要组成部件,如果发生故障,就会造成供电中断甚至发生大范围停电现象,对电力系统造成严重的损害[1]。由于绝缘子长时间暴露在大自然中,难免会因为外界环境的影响受到破坏。尤其是瓷质绝缘子,天气温度变化或者化学物质的腐蚀都可能使其强度下降或产生裂缝。因此,及时发现绝缘子裂缝,对整个电网的正常运行具有非常重要的意义[2]。但随着高压输电线路规模日益庞大,传统的绝缘子故障检测劳动强度大、效率低、危险性高,所以需要一种更加高效的方法对绝缘子的裂缝进行识别。

随着数字图像处理和计算机视觉技术的发展,运用图像处理技术的方法识别裂缝变得越来越普遍。文献[3]基于图像处理提出了一种滑坡后缘裂缝检测方法;文献[4]提出了一种基于统计特征的D邻域滑动窗路面裂缝自适应阈值分割算法。目前对绝缘子的自爆缺陷识别有较多研究,但涉及裂缝缺陷识别的研究较少。常用的边缘算法有Sobel、Canny、Roberts、Prewitt、Laplace等,文献[2]提出了一种基于改进 Sobel 算法的绝缘子陶瓷裂缝识别方法。Sobel算子更适合于灰度梯度和噪声较大的图像处理,但对边缘定位不是很准确;文献[5]提出一种基于边缘检测的瓷质绝缘子裂缝特征检测方法,但没有考虑天气、拍摄等一些复杂因素的影响。

Canny算法被认为是最成功也是应用最广泛的灰度边缘检测方法,相对于其他几种算法去噪能力更好、检测精度更高、应用范围较广[6],但在进行绝缘子裂缝识别时,如果使用传统的Canny算法,会存在一定的误差。因此本文对Canny算法进行了改进,以便准确识别绝缘子裂缝。

1 Canny算法分析

1)Canny算法采用二维零均值高斯滤波器对图像进行卷积操作,滤波器函数表达式为

(1)

式中σ为高斯滤波器分布参数,用来控制平滑程度。σ的大小决定着滤波的效果,如果图像含有的噪声较强,σ值需要大一些,但一旦σ值太大将会导致边缘位置偏离实际位置,边缘定位精度降低[7]。原始Canny算法中的σ是固定的,所以很难保证每个图像在去噪效果好的基础上,还可以保留图像的细节,而且高斯滤波器对高斯噪声的滤波效果没有自适应中值滤波效果好。本文作者对添加高斯噪声后采用高斯滤波和自适应中值滤波后的图像进行了对比,如图1所示。

从图1可以看出,自适应中值滤波处理高斯噪声污染后的图像更清晰,效果更好,所以本文选择用自适应中值滤波代替高斯滤波来对图像进行处理。

2)传统Canny算法在2×2的邻域范围内计算平滑后灰度图像的梯度幅值和方向,其中图像中点(i,j)处的梯度幅值G(i,j)和梯度方向θ(i,j)分别为:

(2)

(3)

式中Gx(x,y)和Gy(x,y)分别为图像在水平和垂直方向上的梯度幅值。

由于领域范围太小,没有考虑更多的方向,使梯度的计算不准确,所以经常会发生伪边缘和漏检情况。

3)传统 Canny 算法用高低阈值来寻找最适合的边缘点,因为阈值是人为设定的[8],每幅图像的边缘强度不一样,所以同一组高、低阈值对于不同的图像来说,边缘检测质量差异很大[9],缺乏自适应性。

2 Canny算法的改进

在进行绝缘子裂缝识别时,如果使用传统的Canny算法,会存在一定的误差,因此本文针对传统Canny算法的不足,进行了如下的改进:采用自适应中值滤波而不是高斯滤波对裂缝图像进行平滑处理,提高自适应性;在计算梯度幅值上用一个3×3的模板代替原有的2×2模板,降低错检率,减少边缘丢失现象。最后采用最大类间方差法自适应地选择高、低阈值[10-11],解决人工选择阈值灵活性低的问题。

2.1 采用自适应中值滤波算法

由于传统的高斯函数方差σ需要人为确定,不但自适应性差,而且会使绝缘子裂缝图像产生边缘丢失和伪边缘,这就可能导致滤波后的图像达不到要求。传统的中值滤波是把所有数据排序,找出排在中间位置上像素的灰度值替代处理像素的值,这样运算量会很大。本文利用排列组合的原理,提出了一种改进的自适应中值滤波器来取代高斯滤波进行平滑处理,能够更好地去除噪声和保护边缘细节,同时也提高了效率。

对于一个大小为M×N的图像,设Sxy是当前像素点(x,y)去噪处理时的工作窗口,Z(x,y)为像素点(x,y)的灰度值,Zmin为最小像素的灰度值,Zmax为最大像素的灰度值,Zmed为灰度值中值,Smax是允许的最大滤波窗口。

具体步骤如下:

1)设初始化滤波窗口大小为w=3;

2)按改进后的方法计算当前窗口内灰度值的最小值Zmin、最大值Zmax、中值Zmed;

3)如果Zmin

4)如果增大后的窗口尺寸小于等于Smax,转到2);否则用当前窗口内的中值Zmed代替当前像素点的灰度值,Z(x,y)=Zmed;

5)如果Zmin

2.2 改进梯度幅值和梯度角度计算方法

传统 Canny算法使用2×2模板来计算图像梯度幅值,然后用幅值作为依据来判断其像素点是否为边缘,容易受噪声干扰,不能得到很好的检测效果。本文在3×3模板上借鉴Sobel算子,增加 45°和135°方向计算梯度的幅值和方向,改进后模板的8个邻域如图2所示。

其中假设I(i,j)为第i行第j列像素的灰度值,改进后的模板可计算出4个方向的梯度幅值,计算公式如式(4)~(7)所示。

x方向梯度:

Gx(i,j)={[I(i+1,j+1)+2I(i,j+1)+I(i-1,

j-1)]}-{[I(i-1,j-1)+

2I(i,j-1)+I(i+1,j-1)]}

(4)

y方向梯度:

Gy(i,j)={[I(i+1,j-1)+2I(i+1,j)+I(i+1,

j+1)]}-{[I(i-1,j-1)+

2I(i-1,j)+I(i-1,j+1)]}

(5)

45°方向梯度:

G45(i,j)={[I(i+1,j)+2I(i+1,j+1)+I(i,

j+1)]}-{[I(i,j-1)+2I(i-1,

j-1)+I(i-1,j)]}

(6)

135°方向梯度:

G135(i,j)={[I(i,j-1)+2I(i+1,j-1)+

I(i+1,j)]}-{[I(i-1,j)+2I(i-1,

j+1)+I(i,j+1)]}

(7)

对式(4)~(7)得到的4个梯度求和,作为新的X轴和Y轴梯度值。新的X轴梯度值为

(8)

新的Y轴梯度值为

(9)

因此,当前像素点灰度值的梯度幅值G(i,j)和梯度角度θ(i,j)分别为:

(10)

(11)

改进后的梯度计算考虑到对角线方向上的像素点对中心像素点的影响,这样对绝缘子裂缝的定位会更加准确,使错检率降低了很多,边缘丢失现象也相应地减少了很多。

2.3 采用改进Otsu算法求取高低阈值

传统的Canny算法高低阈值由人为确定,因此对绝缘子裂缝检测效果很差。Otsu[12]算法是大津展之在1980年提出的一种对图像进行分割的算法,又称大津法。该算法在类间方差最大的情况下,可以自适应地确定阈值。

设灰度图像大小为M×N,其中某一点的灰度值为Z(x,y),分割阈值为t,w0为前景像素点数占图像的比例,u0为前景像素点的平均灰度,w1为背景像素点数占图像的比例,u1为背景像素点的平均灰度。

图像总平均灰度为

u=w0u0+w1u1

(12)

前景与背景间的类间方差为

g=w0(u0-u)(u0-u)+w1(u1-u)(u1-u)=

w0w1(u0-u1)(u0-u1)

(13)

传统Otsu算法需要遍历所有灰度等级去计算类间方差值,当类间方差最大时,把此时的灰度值作为阈值,这样运算量大,效率低。因此,本文对Otsu算法进行了改进,使得阈值可以自动获取,这样使裂缝边缘检测的自适应性更强[13]。

改进的获取阈值具体步骤如下:

1)先求出整幅梯度图像的梯度均值T,用T将图像分割成两部分T1和T2,其中:

T1={Z(x,y)|Z(x,y)≤T}

(14)

T2={Z(x,y)|Z(x,y)>T}

(15)

由类间方差的统计意义可知,接下来的搜索区域就变成了[T1,T2];

2)计算出T1和T2的平均值Tn,以Tn的两个相邻梯度值Tn-1和Tn+1作为阈值,然后根据式(14)分别计算出对应的类间方差值g(Tn-1)、g(Tn)、g(Tn+1);

3)若g(Tn-1)g(Tn),就把最佳阈值定在区域[T1,Tn]中,让区间[T1,Tn]成为新的搜索区,重新定义T1、T2转到2)继续搜索;若g(Tn+1)>g(Tn),就把最佳阈值定在区域[Tn,T2]中,让区间[Tn,T2]成为新的搜索区,重新定义T1、T2并转到2)继续搜索;

4)重复步骤2)、3),直到搜索到最佳阈值。把这个阈值作为高阈值Th,低阈值设为Tl=0.5Th。

改进的Otsu算法比传统的算法大大减少了计算量,对绝缘子裂缝的识别效果比改进前的传统算法更好,识别和定位准确率更高,自适应性更强,产生的毛刺更少。

3 仿真实验结果

由于绝缘子所处的环境特殊,在图像采集过程中容易受到外部环境的影响,比如:拍摄时的天气、光照以及背景复杂度,因此为了能够提高图像识别的速度,第一步需要先对绝缘子裂缝图像去除背景,然后进行预处理,降低噪声,使图片质量得到提高,从而使实验更有效地进行。去除背景之后的效果如图3所示。

3.1 图像灰度化

灰度化[14]可以提高图像识别的处理速度,减少图像矩阵占用的内存空间。根据重要性以及其他指标,将3个分量以不同的权值进行加权平均。由于人眼对绿色最敏感,而对蓝色最不敏感,因此根据式(16),对RGB三分量进行加权平均,得到较合理的灰度图像:

Fg(i,j)=0.299R(i,j)+0.587G(i,j)+

0.114B(i,j)

(16)

使用Matlab将绝缘子的彩色图像转换为灰度图像,效果如图4所示。

3.2 图像增强

因为在采集绝缘子裂缝图像的过程中,受到外界的各种影响,采集的图像多少都会存在偏暗或偏亮问题,图像的对比度就会较低,图像增强的主要目的就是对裂缝图像进行处理来提高对比度[15]。图5是直方图均衡化(contrast limited adaptive histogram equalization,CLAHE)处理后的图像。

3.3 裂缝识别

本文实验是在Windows10操作系统、Matlab和OPenCV3.7.0+Visio Studio2015开发环境下进行的。为了验证改进的Canny算法在识别绝缘子裂缝上效果更好,将其与传统的Canny算法进行比较,仿真结果如图6所示。

为比较传统Canny算法和改进Canny算法的降噪效果,分别计算均方误差(MSE)、峰值信噪比(PSNR)作为实验结果的评价指标。图像均方误差为

(17)

峰值信噪比为

(18)

式中:M和N为图像的长宽像素;f(i,j)为去噪后的图像在(i,j)处的灰度值;g(i,j)为原图像在(i,j)处的灰度值。

由式(17)、(18)可知,如果 MSE越小,PSNR越大,图像检测效果就会越好。传统Canny算法和改进Canny算法的MSE以及PSNR如表1所示。

表1 传统Canny算法和改进Canny算法评价因子

由表1可知,改进Canny算法相比传统Canny算法的均方误差降低了61%,峰值信噪比提高了34%,证明本文改进算法性能优于传统算法。

传统Canny方法存在一些假边缘,同时噪声很多,改进后的Canny算法检测裂缝边缘更为清晰,毛刺也更少,而且也可以有效地抑制噪声。因此,本文的算法效果更好、自适应性更高。

为得到更加精准的绝缘子裂缝的中心坐标、长度、宽度等一些详细特征值,实验对提取出的裂缝图像与绝缘子图像进行了细化处理,并对图像内数据进行了智能决策,最终提取出完整的裂缝图像,检测结果如图7所示。

4 结束语

本文针对传统绝缘子裂缝识别算法的缺陷,结合数字图像处理和计算机视觉技术,提出了一种基于改进Canny算法的绝缘子裂缝识别方法。对传统的Canny边缘检测算子进行了以下3个方面的改进:1)用自适应中值滤波代替高斯滤波,对原始图像进行平滑,可以更好地去除噪声和保护边缘细节,同时也大幅度地提高了效率。2)在传统 Canny算子2×2模板中额外加了两个方向的梯度模板,对绝缘子裂缝的定位更加准确,同时也极大地降低了错检率、减少了边缘丢失现象。3)采用Otsu法自适应地根据图像灰度选择高、低阈值,解决人工选择阈值灵活性低的问题。通过改进传统的Canny算法,提高了裂缝故障识别和定位准确率,而且自适应性更强,同时也解决了传统的绝缘子裂缝识别方法中工作量大、效率低、危险性高等问题。从实验结果可以明显看到改进后的Canny算法能够较为稳定地识别完整且边缘更加清晰的绝缘子裂缝图像。

猜你喜欢

像素点绝缘子梯度
接触网覆冰绝缘子的多物理场分析及伞裙结构优化
磁共振梯度伪影及常见故障排除探讨
基于应变梯度的微尺度金属塑性行为研究
基于Mask RCNN的绝缘子自爆缺陷检测
图像二值化处理硬件加速引擎的设计
基于局部相似性的特征匹配筛选算法
沈阳:在梯度材料的损伤容限研究中取得进展
一个具梯度项的p-Laplace 方程弱解的存在性
一种X射线图像白点噪声去除算法
基于canvas的前端数据加密