基于MATLAB GUI的裂缝检测系统研究

2020-04-15 05:59李鹏宇
关键词:直方图图像处理滤波器

王 林,叶 鑫,李鹏宇

(安徽工程大学 电气工程学院,安徽 芜湖 241000)

当前大量科研工作者正在努力使裂纹对混凝土的寿命,安全性和耐用性的影响最小化。这就要求我们必须要准确地测量裂缝的宽度、长度、面积和方向,并对裂缝进行标记。但是,由于检查员通常手动测量裂纹,这样需要耗费大量的时间和精力进行测量并收集相关数据[1-2]。因此现阶段正努力研发更快且更精准有效的裂缝测量方法。随着数字图像的高速发展,许多研究人员开始采用图像处理对裂缝进行检测,其中主要包括两个步骤:裂纹检测和裂纹分析。裂纹检测是指检测到图像表面的裂缝。但是,由于裂纹的形状随机多变,尚未实现对于裂纹的数学建模[3-4]。另外,由于结构暴露在环境中,混凝土表面会产生很多噪声,很难对噪声类型进行分类,目前大多使用通用的滤波器对图像进行滤波。本文设计一种基于MATLAB GUI图像处理系统,该系统可以有效检测裂缝并计算出图像上出现的裂缝参数[5]。我们系统中包括的基本图像处理功能。通过对裂缝图像的预处理,其中包括图像灰度化、图像去噪、图像增强、图像二值化,最后实现边缘检测[6-7]。

1 图像预处理

1.1 图像灰度化

在现实生活中我们所采集到的大多数图片都是RGB图片,也就是我们所说的彩色图片,RGB图像可以被视为彼此堆叠的三个图像(红色分量图像、绿色分量图像和蓝色分量图像)。在MATLAB中,RGB图像基本上是M*N*3的彩色像素阵列,其中每个彩色像素是一个三维数组,它对应于指定空间位置处RGB图像的红色、蓝色和绿色分量,然而我们在对图像处理时并不是所有时候都用到RGB三个分量。因此在预处理时要尽量减少无用数据。图像灰度化处理可以使得处理速度变快,在MATLAB中,灰度图像基本上M*N数组,相对于三维数组处理起来更加方便,一般灰度图像的灰度值在0-255之间,白色为255,黑色为0[8]。

MATLAB中灰度化处理有以下几种方式:

(1)最大值法

将彩色图像中的三分量的亮度最大值作为灰度图像的灰度值。

F(i,j)=max(R(i,j),G(i,j),B(i,j))

(2)平均法

将彩色图像中的三分量亮度求平均得到一个灰度值。

F(i,j)=(R(i,j),G(i,j),B(i,j))/3

(3) 加权平均法

F(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)

图1为三种方式下的灰度化图片,为了使得灰度化更加符合要求,本系统中采用加权平均法对彩色图像进行灰度化处理。

图1 三种方式下的灰度化图片

1.2 图像去噪

在图像采集、传输、编码和处理等步骤中,数字图像中不可避免的存在噪声,导致图像信息失真和丢失。由于存在噪声,可能会对随后的图像处理任务(图像特征提取,图像分析等)产生不利影响。因此,图像去噪在现代图像处理系统中起着重要的作用。

图像去噪是为了去除噪声图像中的噪声,从而尽可能地还原真实图像。但是,由于噪声、边缘和纹理都处于高频分量,因此,去噪后的图像不可避免地会丢失一些细节。总体而言,当今在噪声去除过程中从嘈杂的图像中恢复有需要的信息以获得高质量的图像是一个重要的问题,它使图像处理的后续工作得以开展。

图像中常见的噪声类型有脉冲噪声、高斯噪声、泊松噪声、斑点噪声等。通过裂缝图像的灰度直方图我们可以看出脉冲噪声和高斯噪声存在的较多。如何去除噪声是非常重要的,现如今在图像去噪方面的算法非常多,但是最好的算法应该在保留图像细节的同时能尽可能地消除噪声。去噪方法可以是线性的也可以是非线性的,线性方法去噪速度很快,但是不能很好地保留图像的细节,裂缝检测需要去噪的同时能够很好地保留细节,非线性方法可以很好地保留图像中的细节。去噪滤波器常用的有均值滤波器、中值滤波器和自适应滤波器。

均值滤波器是一个简单的线性滤波器,它用窗口中所有像素的平均值来替换窗口中的中心值。滑动窗口一般是正方形(3*3)的。

图2为滤波前,其中心值为1,通过均值滤波窗口滤波后中心值为5,如图3所示。其计算过程为:

(5+3+6+2+1+9+8+4+7)/9=5

图2 滤波前窗口 图3 均值滤波后窗口

经过均值滤波后的图像少了很多细节,使得裂缝的边缘变得有些模糊,因此本系统采用中值滤波器进行滤波。相对于均值滤波器来说,中值滤波是一种非线性滤波器,它是由Tukey首先提出来的,由于其能很好地消除脉冲噪声并且很好地保持了信号边缘,因此在图像滤波中广泛应用。

用中值滤波对图像进行去噪时,要注意选用合适的模板。通常,模板越大,去噪能力就越强。但同时也会使得图像变得模糊,为了克服因模板选择不当而导致图像变得模糊,本文中选用了自适应中值滤波。其算法过程如下:

首先定义:

Xxy:滤波器的作用区域,该区域的中心点图像中的第x行第y列个像素点;

Zmin:Xxy中灰度级的最小值;

Zmed:Xxy中灰度级的中值;

Zmax:Xxy中灰度级的最大值;

Z(x,y):坐标(x,y)上的灰度值;

Xmax:Xxy所允许的最大尺寸;

自适应滤波器有以下两个过程:

1:

A1=Zmed-Zmin;

A2=Zmed-Zmax;

如果A1>0 &A2<0,跳转至B;否则,增大窗口的尺寸;如果增大后的尺寸≤Xmax,重复A;否则,直接输出Zmed

2:

B1=Z(x,y)-Zmin

B1=Z(x,y)-Zmax

如果B1>0&B2<0,输出Z(x,y);否则,输出Zmed。运行结果见图4。

图4 原图与自适应中值滤波后对比图

1.3 图像增强

在裂缝图像中我们能够发现裂缝与周围的环境非常相似,这给后续处理带来了很大的困扰,因为我们需要去增强图像中的有用信息,其目的是要改善裂缝与周围环境的对比度,在图像增强技术中有插值法、对比度拉伸法、灰度直方图均衡化以及偏微分方程等方法。

对比度是指图像中两个相邻像素之间的亮度差。低对比度的图像出现在不均匀的照明条件下,成像传感器的非线性或动态范围小。对比度拉伸是指通过拉伸图像强度值的范围,使其跨越一个期望或允许的范围,从而提高图像的对比度以增强其可视性。

我们通过分析裂缝图片的灰度直方图发现其灰度值大多集中在140-180之间,因此在这里我们需要使用对比度增强法对裂缝做增强处理,对比度增强主要有灰度变换法和直方图均衡化,通过分析图像灰度直方图我们设计的系统使用直方图均衡化来实现对比度拉伸。直方图均衡化的原理是把原图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内均匀分布。

如图5所示,对比度增强后的图像与原图像相比可以发现裂缝区域更加明显了。

图5 原图与对比度增强后对比图

2 边缘检测

我们生活中常遇到的图像有三种状态,分别是彩色图像、灰度图像、二值图像。其中彩色图像就是最常见的具有丰富像素组成的图像,而灰度图像是将三维彩色图像转换为二维图像,图像灰度级从0到255,一共256个灰度级,如图6、7所示就是裂缝区域的灰度值。

图6 裂缝区域

图7 裂缝区域灰度值

二值图像是在灰度图像的基础上通过阈值分割,在阈值化过程中,我们选择一个阈值,然后将所有低于所选阈值的灰度值归为0,并将所有等于或大于阈值的灰度值归为1,最后只有黑白(0和1)两个灰度[9-10]。如公式所示:

其中,g(x,y)表示(x,y)处的阈值图像像素,f(x,y)表示(x,y)处的灰度图像像素。

图像二值化广泛应用于文本识别和医疗图像处理,且非常适用于裂缝检测。这是因为文本和裂缝具有相似的性质,它们的特点是具有易变的线条和曲线。图像二值化处理的核心就在于阈值分割,阈值在图像二值化中起到重要作用。选择合适的阈值是二值化的一个重要环节。方法有两种,一种是全局阈值法,另一种是局部阈值法。全局阈值比较适合灰度直方图为双峰的图像,但是由于裂缝图像大多为单峰,所以本文采用基于OTSU算法的自适应阈值分割。最大类间方差法是由日本学者大津于1979年提出,它是按照图像的灰度特性,将图像分为前景和背景两个部分,背景与前景之间的类间方差越大,说明构成图像的两部分差别就越大。OTSU的算法过程如下:

对于图像I(x,y),前景(裂缝)和背景的分割阈值记为T,属于前景(裂缝)的像素点占整个图像的比例为ω1,其平均灰度为μ1。背景的像素点占整个图像的比例为ω2,其平均灰度为μ2。图像的总平均为μ,类间方差记为g。图像大小为M*N,图像中像素小于T的个数为N1,大于T的记为N2,则有:

(1)

(2)

N1+N2=M×N

(3)

ω1+ω2=1

(4)

μ=μ1×ω1+μ2×ω2

(5)

g=ω1×(μ-μ1)2+ω2×(μ-μ2)2

(6)

将公式(5)代入公式(6)得

g=ω1×ω2×(μ1-μ2)2

(7)

采用遍历的方法就能得到阈值T。二值化后图像如图8所示。

图8 原图与二值化后对比图

3 GUI设计

MATLAB GUI由窗口、菜单、图标、光标、键、对话框、文本和其他图形对象组成。它允许用户自定义如何与MATLAB交互。本文设计了一种基于MATLAB GUI的图像处理图形用户界面,如图9所示,以实现裂缝检测的基本功能。该系统包括六个主要模块,中值滤波去噪、对比度增强、二值化处理、裂缝识别、裂缝标记以及裂缝参数技术。图10为裂缝检测结果图,并显示了具体参数。

图9 GUI界面图

图10 检测结果图

总结

在本文中我们通过使用MATLAB GUI搭建了裂缝检测系统,该系统可以有效地进行裂缝识别。我们通过对原图像进行一系列的预处理处理,其中包括图像灰度化、图像去噪、图像增强,最后对图像进行二值化处理后边缘检测,能够识别裂缝并分析裂缝的长度、宽度、面积以及方向。

在实际检测中我们也遇到了一些问题,例如采集到的图像中存在的噪声并不是单一噪声,是许多类型噪声叠加在一起。图像预处理是后续一切工作进行下去的基础,在预处理过程中噪声如何去除干净一直以来是国内外学者研究的重点,能否进行先识别再处理是后续研究的重点。

猜你喜欢
直方图图像处理滤波器
符合差分隐私的流数据统计直方图发布
海战场侦察图像处理技术图谱及应用展望
人工智能辅助冠状动脉CTA图像处理和诊断的研究进展
基于FPGA的直方图均衡图像增强算法设计及实现
基于ARM嵌入式的关于图像处理的交通信号灯识别
从滤波器理解卷积
用直方图控制画面影调
机器学习在图像处理中的应用
开关电源EMI滤波器的应用方法探讨
一种微带交指滤波器的仿真