APP下载

基于计算机视觉的混凝土坝裂缝检测方法

2021-10-20张小伟包腾飞高兴和

水利水电科技进展 2021年5期
关键词:像素点灰度阈值

张小伟,包腾飞,高兴和

(1.河海大学水利水电学院,江苏 南京 210098;2.河海大学水文水资源与水利工程科学国家重点实验室,江苏 南京 210098;3.江苏省太湖水利规划设计研究院有限公司,江苏 南京 210098)

在混凝土坝的运行期间,由于坝体需要承受很大的水压、温度荷载,以及受到水的冲刷、渗透、侵蚀等原因,导致大坝不可避免地产生裂缝[1]。裂缝的产生会降低大坝结构的承载能力以及坝体耐久性[2-3],最终可能导致大坝因结构破坏而失事,因此快速而准确地发现混凝土表面裂缝是混凝土坝安全监测中的一项重要任务。目前,常用的裂缝检查方法仍是人工检测法,即由检查人员用肉眼来检查,这种检测方式不仅费时费力,并且在特高坝高程较高的地方,其检测的危险性大。

随着计算机视觉技术的发展,以及无人机的广泛运用,裂缝的检测具有一种全新的思路和方法。通过远程操控无人机来获取裂缝照片,然后结合图像识别分割算法,就可以自动识别并分割裂缝图片,进一步自动提取出裂缝特征数据,从而为坝面后期的风险评价提供有力的支持。但是由于光照条件、混凝土表面污渍、混凝土气泡、阴影等原因,通过无人机拍照得到的裂缝图片往往存在大量的噪声污染,传统的图像分割算法已不能满足工程要求。为此,许多学者提出了去噪优化算法,如Fan等[4]通过局部聚类保留存在裂缝的局部区域,同时去除存在噪声的局部区域,再通过全局聚类计算分割阈值,虽然聚类算法计算速度快,适应性较强,但随机性强,可能导致局部裂缝区域丢失;Zhao等[5]通过建立一种组合云模型(CMM)来检测裂缝边缘,虽然抗噪性较Robert、Prewitt等边缘检测算子有所提高,但对混凝土气泡、阴影等噪声仍然十分敏感,算法的适应性较差;陈波等[6]采用改进的全卷积神经网络对裂缝图片进行预测分割,虽然抗噪性较好,但全卷积神经网络在训练过程中容易陷入局部最优,导致算法的适应性较差;Noh等[7]运用掩膜运算以及连通域分析来去除噪声,算法的适应性较强,能针对不同类型的噪声设计不同的掩膜,但算法的分割结果中总会剩余部分噪声,抗噪性较弱;Tsai等[8]通过连接标记的裂缝点来完成裂缝的提取,同时去除噪声,但算法需要人工预先在裂缝路径上标记多个裂缝点,算法的自动化程度低,无法快速处理大量的裂缝图片。

综上所述,目前已有的一些去噪优化算法往往不能同时兼顾算法的抗噪性和适应性。为了提高算法的抗噪性以及适应性,本文提出一种基于自适应区域生长和局部K-Means聚类的裂缝检测算法。该算法首先运用双边滤波对裂缝灰度图进行初步降噪,然后采用基于梯度幅度变化的分段双阈值区域生长算法来分割裂缝图片获得粗分割结果并标记之。通过梯度幅度变化分段设定生长阈值来提高算法的适应性以及抗噪性,不仅能有效去除噪声,同时保证裂缝边缘完整。标记的目的是提高后面的聚类效果,标记完成后对粗分割结果进行形态学腐蚀以及最大连通域提取,通过提取最大连通域来去除其中孤立的点状以及团状噪声,同时提取足够多的局部数据点样本,对该局部数据点样本进行灰度值以及标记值聚类后,得到最终精确的分割结果。本文检测裂缝的方法能为实际工程提供大量实时的检测数据,可以节约大量人力物力,为自动化检测大坝裂缝奠定基础。

1 基于自适应区域生长和局部K-Means聚类的裂缝检测算法

1.1 自适应区域生长算法

区域生长算法是基于区域的分割算法中的经典算法[9],运用区域生长算法来分割裂缝图片,需要在背景区域或者裂缝区域内预先给出种子点以及种子点的生长准则,通过种子点的生长提取出正确的裂缝区域。区域生长的关键点是生长准则的设定,阈值是最重要的准则之一。传统的区域生长算法,阈值一般设定为常数,但是这种设定方法鲁棒性差,无自适应性。为提高区域生长算法的自适应性,许多学者提出了改进措施。陆剑锋等[10]通过计算种子点附近邻域统计信息来自适应改变生长准则,虽然自适应性有所提高,但计算量剧增。Pohle等[11]通过计算已生长区域的灰度值高斯分布参数来控制生长准则,从而提高算法的抗噪性,但高斯拟合的实际效果较差。王胜军等[12]通过梯度幅度变化设定阈值,这样的设定方法使得阈值与种子点灰度值成正相关,当种子点灰度值减小时,阈值也在减小。当分割区域和背景区域灰度值相差较小时,梯度幅度变化减小,阈值的自适应性变差。

基于以上分析,本文提出基于梯度幅度变化的分段双阈值区域生长方法,该方法采用梯度幅度变化来设定阈值(梯度阈值),当种子点灰度值减小并不断接近裂缝区域灰度值时,灰度阈值(梯度阈值与种子点灰度值的乘积)减小,生长条件收窄,算法的自适应性提高。为了避免梯度幅度变化过小导致自适应性变差,本文将大津阈值[13]N引入生长准则中,当种子点灰度值大于,小于或等于N时,梯度阈值分别取N1和N2。当种子点灰度值大于N时,种子点主要存在于背景区域内,此时设定的梯度阈值N1较大,保证背景区域内的噪声被完全去除;当种子点灰度值小于或等于N时,种子点灰度值接近裂缝区域灰度值,此时设定的梯度阈值N2较小,以保证裂缝边缘完整。综合大量试验,梯度阈值N1在0.2~0.4之间取值,梯度阈值N2在0.05~0.1之间取值。通过分段设定梯度阈值使得算法在有效去除背景区域内噪声的同时有效保证了裂缝边缘的完整性。改进后的区域生长准则为

|(S-G(x,y))/S|≤T

(1)

(2)

式中:S为种子点灰度值;G(x,y)为种子点邻域内像素点灰度值;T为梯度阈值。

获得生长准则之后需要在背景区域内选定种子点,种子点自动选取方法为:用10×10的网格来划分裂缝图片,计算网格节点处灰度值,将其中灰度值大于N的节点作为种子点。确定种子点和种子点生长准则之后,就可以运用自适应区域生长算法分割裂缝图像,提取裂缝的粗分割图。

1.2 局部K-Means聚类算法

K-Means聚类算法[14]是一种基于划分的聚类算法[15]。算法需要预先指定初始聚类中心,然后根据相似性准则完成聚类,通过不断更新聚类中心并降低类簇误差平方和来得到最佳聚类结果[16]。本文将K-Means聚类算法运用到裂缝图像分割中,通过将属性值接近的像素点聚为一类来完成裂缝区域和背景区域分割任务。K-Means聚类算法思想简单,聚类速度快,聚类效果好,但是对初始聚类中心敏感,并且容易陷入局部最优解[17]。目前主要的改进方法集中在以下几个方向:算法中初始聚类中心个数的选取,初始聚类中心点的选取,离群点的检测和去除等。

为此,提出局部K-Means聚类算法,该方法的主要思想是对包含裂缝区域像素点的局部像素点样本进行聚类,由于样本点中剔除了大部分非裂缝区域而保留了所有的裂缝区域,离群点的干扰减小,并且初始聚类中心易于寻找,所以对该局部像素点进行聚类,不易陷入局部最优解。为了提高聚类效果,对局部数据点样本中疑似裂缝区域像素点进行标记,标记值为M(权重属性值),对非疑似裂缝区域像素点标记值为0。运用K-Means聚类算法对该局部像素点进行聚类,像素点属性值为其灰度值以及标记值,聚类的目的是将灰度值和标记值接近的像素点聚为一类。相似性准则一般由欧式距离来衡量,距离越小,相似性越高。聚类的相似性公式为

d((gij,oij),(g1,o1))=

(3)

式中:gij,oij分别为坐标点(i,j)处像素点灰度值和标记值;g1,o1分别为初始聚类中心的灰度值和标记值。

此时对应的误差平方和公式为

式中:Ct为第t个聚类;gt、ot分别为第t个聚类的聚类中心(gt,ot)的灰度值和标记值。

为了避免初始聚类中心的随机性导致结果的随机性,g1取局部区域中疑似裂缝区域像素点灰度均值,g2取局部像素点中非疑似像素点灰度均值,o1取M,o2取0。聚类结果:当M较小时,聚类结果主要由灰度值决定,聚类结果趋近于局部像素点灰度值聚类;当M较大时,聚类结果主要由标记值决定,聚类结果主要由疑似像素点组成。

2 算法流程

本文的算法流程主要包括图片预处理,裂缝粗提取,二值图像去噪以及裂缝精提取。①图片预处理:输入原始裂缝图片,灰度化, 然后运用双边滤波进行初步去噪平滑,双边滤波能在保留裂缝边缘信息的同时降低噪声平滑图像。②裂缝粗提取:运用自适应区域生长算法进行分割,得到裂缝的粗分割图。③二值图像去噪:经过区域生长分割后,裂缝图像被分割为裂缝区域和背景区域两部分,裂缝区域灰度值设定为0,标记值为M,背景区域灰度值设定为255,标记值为0。对二值图像进行形态学腐蚀操作以及最大连通域提取,连接断裂裂缝,并去除二值图像中孤立的团状及点状噪声。④裂缝精提取:由于环形裂缝的阻挡,导致裂缝粗分割图像中仍有许多未被生长的区域,需要运用局部K-means聚类算法,通过局部区域灰度值以及标记值聚类进一步去除其中非裂缝区域。在裂缝精提取中,通过试验研究发现,当裂缝图像中裂缝区域灰度值与背景区域灰度值相差较大时,像素点灰度值聚类的效果好;当裂缝图像中裂缝区域灰度值与背景区域灰度值相差较小时,通过区域生长分割获得的分割图更加准确,所以标记值M应该选取能够表征原灰度图像裂缝区域灰度值与背景区域灰度值差异的参数。本文M值取原灰度图中灰度值在阈值N以上的像素点灰度均值与灰度值在阈值N以下的像素点灰度均值之差。综上所述,可以得到应用本文算法进行裂缝图片处理的流程如下:

步骤1通过无人机拍摄得到裂缝图片,经过预处理得到预处理图片,图像预处理包括图像灰度化和图像双边滤波。

步骤2根据灰度图计算N、M的值。

步骤3运用本文设计的自适应区域生长算法分割裂缝图片获得裂缝的粗分割图,将其中的裂缝区域标记为疑似裂缝区域。

步骤4对粗分割图进行腐蚀操作,腐蚀操作的目的是连接分割图像中因局部过生长而断裂的裂缝,腐蚀操作的结构元素为2×2,腐蚀次数为2次。

步骤5腐蚀完成后,提取被分割部分的最大连通区域,通过最大连通域提取来去除其中孤立的点状及团状噪声。

步骤6再次进行腐蚀操作,为聚类运算提供足够多的像素点样本,腐蚀操作的结构元素为2×2,腐蚀次数为2次。

步骤7提取局部数据点样本,并确定数据点样本的灰度值以及标记值(标记值的确定需要结合从步骤3中得到的疑似裂缝区域),运用局部K-Means聚类算法进行聚类。

步骤8得到最终的裂缝分割结果。

3 实例分析

选取3幅存在噪声污染的裂缝图片进行对比分析,如图1所示。3幅图片都经过了预处理。裂缝1是1条近似竖向裂缝,裂缝图片中主要存在污渍噪声污染,同时背景区域灰度值与裂缝区域灰度值相差较小;裂缝2是1条叉形裂缝,裂缝图片中主要存在混凝土表面毛刺噪声,同时裂缝区域灰度值与背景区域灰度值相差较大;裂缝3是1条竖向裂缝,裂缝图片中主要存在块状以及条状噪声,这些噪声污染是由水对坝体的侵蚀造成的。

图1 裂缝图片

3.1 区域生长算法改进前后分割结果对比

为了对改进前和改进后的区域生长算法进行比较,分别运用这两种算法对图1进行分割,分割结果如图2所示。分析图2可知,改进前的区域生长算法(阈值取15)获得的裂缝分割图中有大量的灰色点状噪声,同时裂缝边缘存在大量毛刺,裂缝宽度比实际宽度大。改进后的区域生长算法由于梯度阈值的自适应性以及N值对裂缝边缘分割的控制作用,使得分割图中点状噪声少,裂缝边缘更加平滑,与实际裂缝边缘更加接近,但分割图中仍存在圆形标记处环形裂缝内的误分割,同时背景区域内存在少量孤立的点状及团状噪声。

图2 区域生长算法改进前后分割结果对比

3.2 最大连通域提取结果和聚类分割结果对比

对图2中改进后的分割图进行形态学腐蚀操作并提取最大连通区域后得到图3,再对图3进行形态学腐蚀操作,提取其中包含裂缝的局部区域数据点样本,运用局部K-Means聚类算法进行聚类,最终获得分割结果如图4所示。

图3 最大连通域提取结果

图4 局部K-means聚类分割结果

对比图2和图3可知,经过腐蚀操作以及最大连通域提取后,裂缝图片中的点状和团状噪声被完全除去。对比图3和图4可知,对提取到的局部数据点样本进行聚类后,获得的最终分割图像不仅有效地保留了自适应区域生长的结果,同时圆形标记处环形裂缝内误分割区域被正确分割。

3.3 本文算法与常用分割算法对比

为了证明本文算法的优越性,将本文算法与大津阈值分割算法(OTSU)、文献[5]算法、Canny边缘检测算法[18]进行对比,运用以上算法对图1进行分割,得到裂缝分割结果如图5所示。为了对裂缝提取效果进行量化分析和评价,本文引入完成度和正确度指数[19-20]。完成度指数用于描述完成裂缝提取这一任务的完成程度,正确度指数则描述完成任务的质量水平,其定义分别见式(5)和式(6)。

图5 不同算法裂缝分割结果对比

(5)

(6)

式中:Lr为提取结果的真实裂缝长度;Lgt为裂缝的实际长度;LT为提取的总长度。

根据式(5)和式(6)以及图5中裂缝的分割图像,计算得到各算法提取的裂缝完成度和正确度指数,计算结果如表1所示。

表1 裂缝分割结果评价

为了对算法的适应性和抗噪性进行评价,将适应性等级划分为优、良、中、差4个等级,算法能去除的噪声种类越多则适应性等级越高;将抗噪性等级划分为强、较强、较弱、弱4个等级,算法获得的分割结果中噪声越少则抗噪性越强。根据图5的分割结果和表1的评价数据可以得到算法的适应性和抗噪性水平。

分析图5和表1可知,本文算法能有效分割存在污渍噪声、混凝土表面毛刺噪声、块状以及条状噪声污染的裂缝图片,算法的适应性等级为优,同时分割结果的完成度指数以及正确度指数均在0.95以上,算法的抗噪性强;大津阈值分割算法对裂缝1和3的分割结果差,分割的完成度指数和正确度指数极低,无法确定裂缝的完整形态,但算法对裂缝2的分割结果较好,整体而言,算法适应性等级为中,抗噪性弱;文献[5]算法对裂缝3的分割效果好,完成度指数和正确度指数均超过了0.95,但是对裂缝1和2的分割效果较差,主要表现在裂缝局部断裂、裂缝宽度局部偏大以及剩余少量的背景噪声,但通过分割结果基本可以确认裂缝的完整形态,算法的适应性等级为良,抗噪性较强;Canny边缘检测算法对裂缝1的分割结果好,裂缝分割的完成度指数和正确度指数高,对裂缝2和3的分割结果较差,分割图中存在大量的伪边缘,但同样可以基本确定裂缝的完整形态,算法适应性等级为中,抗噪性较弱。

综上可知,本文算法能有效去除污渍噪声、混凝土表面毛刺噪声、块状以及条状噪声,算法提取的裂缝完成度指数和正确度指数均在0.95以上。不论是适应性还是抗噪性都要优于其他3种算法,能够满足实际工程需要的精度要求。

4 结 论

a.本文提出一种基于自适应区域生长和局部K-Means聚类的混凝土坝面裂缝检测算法,该算法解决了传统分割算法适应性差、抗噪性性弱的问题。与改进前的区域生长算法相比,改进后的自适应区域生长算法通过梯度幅度变化分段设定生长阈值,不仅提高了算法的自适应性,同时提高了算法的抗噪性,其分割结果中裂缝边缘更加平滑,背景噪声更少。

b.本文通过去除离群点以及计算具有强代表性的初始聚类中心来避免聚类算法陷入局部最优解,同时避免算法因聚类中心的随机性导致聚类结果的随机性。通过改进后的K-means聚类算法对裂缝进行精确分割,得到的分割结果正确度指数和完成度指数极高,能满足实际工程要求。

c.与其他图像分割算法相比,本文分割算法适应性更好,抗噪性更强,能有效去除诸多类型噪声,算法提取的裂缝完成度指数和正确度指数最高。与传统人工检测方法相比,本文基于计算机视觉的混凝土裂缝检测方法能自动并且快速地检测大量裂缝,可以节约大量人力物力。

猜你喜欢

像素点灰度阈值
采用改进导重法的拓扑结构灰度单元过滤技术
图像二值化处理硬件加速引擎的设计
土石坝坝体失稳破坏降水阈值的确定方法
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
基于局部相似性的特征匹配筛选算法
采用红细胞沉降率和C-反应蛋白作为假体周围感染的阈值
Arduino小车巡线程序的灰度阈值优化方案
基于像素点筛选的舰船湍流尾迹检测算法
基于canvas的前端数据加密
基于迟滞比较器的双阈值稳压供电控制电路