基于改进的种子填充算法的混凝土裂缝图像识别系统
2022-07-08孙晓贺施成华刘凌晖雷明锋
孙晓贺 施成华 刘凌晖 雷明锋
(中南大学 土木工程学院,湖南 长沙,410075)
随着我国大量基础设施逐渐进入运营维护阶段,高效率监测手段的缺乏给运营维护带来了巨大的挑战。图像识别方法因其高效、客观、低成本等特点成为自动化监测的焦点,是应对大规模运维工作的重要方法。裂缝是建筑工程运维中的主要健康监测对象,针对其开展自动化的图像识别算法研究具有重要意义。
随着图像采集设备的更新换代,目前已经可以较为高效地获取待监测结构的图像[1- 3]。但受环境因素和结构本身的影响,得到的图像往往存在曝光不均、干扰较多等问题。这些问题一方面可以通过提升采集设备的性能来减弱干扰;另一方面则可以通过使用抗干扰能力强的程序对图像进行处理,从算法方面减轻干扰因素造成的干扰。随着计算机技术发展而崛起的深度学习算法在裂缝识别方面就具有抗干扰能力强、识别准确率高等优势。很多学者将深度学习技术应用于桥梁[4]、隧道[5- 6]等结构的裂缝识别,均获得了很好的识别效果。然而,现在一般采用基于监督学习模式的深度学习方法对裂缝进行识别,这就意味着训练前需要准备大量的数据集以及进行繁琐的数据标记工作。数据集的获取一直以来就是个难题,对于投入运营不久的基础设施更是如此。同时数据标记工作也将耗费大量的时间和精力,上述缺点,一定程度上限制了该方法的推广使用。
传统的图像处理方法是基于裂缝图像的特征描述而开发的,基本不需要数据集且无需对图片进行标记操作,避免了深度学习方法的缺点,如阈值分割[7]、边缘检测[8]、OTSU[9]、种子跟踪[10- 11]等算法。这些方法处理简单的裂缝图像效果较好,但是当裂缝图像中干扰多,背景杂乱时处理效果往往不理想。因此很多学者对传统图像处理算法进行了改进,例如在加入频率滤波[12]和霍夫变换[13]等算法后去除了水泥路面刻槽、接缝及线路等特征鲜明的干扰,算法抗干扰能力得到了加强,但还是无法应对复杂的干扰。张硕和邵永军等[14- 15]利用种子填充方法实现了桥梁及隧道裂缝的准确提取,抗干扰能力很强;但该方法需要手动在裂缝图像上提供种子点,无法满足自动化检测的需求。
鉴于上述算法的不足,本研究提出了一种基于种子自动填充算法的图像裂缝识别方法,并通过整合、优化一些既有的图像处理方法,形成了一套兼顾了效率和识别精度的裂缝图像自动化识别系统。该系统在算法方面进行了多处创新,包括使用光照不均匀系数来提高匀光算法的计算效率以及引入种子填充算法来提高裂缝图像分割的抗干扰能力;并经过多项对比实验,对该识别系统的优越性进行论证。
1 裂缝识别系统流程设计
裂缝图像自动识别过程主要包括预处理、裂缝识别和特征提取三个部分,如图1所示。预处理过程中的匀光处理采用光照不均匀系数对图像进行筛选,提高效率的同时最大程度保留了裂缝的信息;随后的裂缝识别过程创新性地引入了计算机图形学中种子填充算法的概念,在此基础上结合自动确定生长点以及连通域滤波等算法实现了图像中裂缝的精准提取;特征提取阶段对裂缝骨架提取流程进行了优化,并且加入了骨架拼接等方法,最终可准确得到裂缝的条数、长宽值等量化参数,为结构健康评定提供了依据。
图1 总体设计流程图
2 图像预处理
2.1 匀光处理及图像增强
对所有图像都使用匀光算法不仅会降低预处理效率,而且会造成图像细节的损失。为克服这一缺点,本研究针对光照不足的图像常带有暗角的现象,提出了基于光照不均匀系数的匀光算法;该方法能自动筛选需要匀光处理的图像,提高运算效率的同时保留了裂缝的细节信息。预处理流程如图2所示,具体实施过程如下。
步骤1对原始图像进行HSV变换,对V通道提取得到灰度图(亮度矩阵),将灰度图划分为6×6的小块。
步骤2计算图像光照不均匀系数。如图2所示,分别计算边角位置B处12个子块平均灰度iB,中心位置A处4个子块平均灰度为iA,按照式(1)求取不均匀系数。将不均匀系数与0.1作对比,如果大于0.1,则进行步骤3匀光处理;反之,直接进入步骤4灰度线性变换。
K=|iA-iB|/iA
(1)
步骤3匀光处理,采用基于亮度均衡的处理算法[16]。
步骤4灰度线性变换。对匀光后的图像进行灰度线性拉伸增强处理,使其灰度值充满在0-255范围,以此增加裂缝与背景图像的对比度,方便裂缝提取。
图2 匀光处理及图像增强流程图
2.2 图像降噪
对裂缝图像的降噪处理有两个目标:①近可能地保留裂缝信息;②对非裂缝区域尽可能的降噪模糊。为此,本研究将不同的降噪方法应用到混凝土裂缝图像进行对比,结果如表1所示。其中的双边滤波算法[17]考虑了距离及灰度值两个方面的影响因素,对背景区域进行模糊的同时保留了裂缝的边缘信息,可以很好地满足降噪处理的两个目标,因此本研究选用双边滤波方法进行降噪处理[18]。
表1 关于混凝土图像的降噪方法对比
3 基于种子填充算法的图像分割
种子填充算法原是计算机图形学的概念,是指通过手动指定封闭区域中的一个像素点,从而将整个封闭区域用指定颜色进行填充[19]。本研究借鉴种子填充算法的原理并对其进行改进,实现了裂缝图像的自动分割;该方法克服了边缘检测、阈值分割等传统算法抗干扰能力弱的缺点,具有较强的鲁棒性。
改进后的种子填充算法首先自动确定若干个种子生长点,然后搜索生长点周围与其灰度相似的像素点,将搜索得到的像素点作为种子点进行生长区域的扩张,反复执行此操作,直至遇到边界;得到的整个生长区域的图像就是裂缝初始二值图;再通过连通域滤波即可得到最终准确的裂缝二值图像。总流程如图3所示。
图3 图像分割流程图
3.1 生长点的确定
通过对大量裂缝图像进行观察,发现图像中的裂缝区域比背景更暗(裂缝灰度值较低),并且裂缝在局部区域内是连续的[20]。因此,只要确保选择的生长点位于裂缝区域,依据种子填充算法的特点,就能提取出整条裂缝,而不必关心种子点数量的多少。为满足上述要求,生长点的确定主要通过以下两个步骤。
步骤1找出滤波处理后图像中灰度值低的点,并将其坐标记录在矩阵M中备用。
此步的关键在于选取合适数量的种子点。如果选取的种子点数量太少,极可能导致所选种子全部落于混凝土裂缝图像背景中的零星黑点区域,导致裂缝分割失败。如果选取的种子点数量过多,种子点的灰度值就会增大,由此可能使灰度值比裂缝高的背景区域被选为种子点,也使得裂缝分割失败。本研究处理的原图大小为800万个像素,经过大量试验比较,种子点数量为像素总数的1‰时(即 8 000 个像素点)可以达到较好效果。此时,不管是粗裂缝还是细裂缝,该比例都能保证裂缝区域存在生长点且不溢出至背景区域,具有较高的鲁棒性。经此步骤提取的种子点如图4(b)所示,可以看到大部分生长点都位于裂缝中,说明选取该比例的种子点是成功的。
步骤2随机从矩阵M中选取一定数量的坐标点作为生长点。
为提高算法的运行效率,此步选取矩阵M中的部分种子点作为生长点即可。考虑到一个图像中可能有一条以上的裂缝,再加上背景区域黑色噪点干扰,如果选取种子点太少,难以保证生长点覆盖全部裂缝。经过大量试验,对于800万像素大小的图像,从矩阵M中随机选取50个作为最终的种子生长点就可达到很好的效果。处理结果如图4(c)所示,裂缝中都有种子点的存在,因此选取该数量的种子生长点是可行的。
通过图4(c)可以看到,经此步处理后,这些种子点有位于裂缝中的,也有位于背景区域的黑点中的。当在实施种子填充算法时,位于裂缝中的种子点因为裂缝具有连续性,所以能扩张到整个裂缝区域;而位于背景区域的黑点中的种子,周围像素值与其差别很大(如图4(c)绿框中的种子点,该种子点为灰度值较低的点,而周围均为白色背景)。此处种子往往扩张不了,从而只填充极小一部分,而这一部分可以在后续连通域滤波阶段进行去除,因此通过种子填充算法进行裂缝图像分割是可行的。
(a)局部位置选取
3.2 邻近像素的搜索方式
对邻近像素的搜索通常是在以生长点为中心的3×3大小的区域进行操作。实施种子填充算法时连通像素的搜索分为四方向搜索和八方向搜索,如图5所示,其中T为搜索方向,F为非搜索方向。
图5 邻近像素的搜索方式
假定图6(a)中蓝色部分为裂缝区域,其中橙色点为种子生长点。四方向搜索结果如图6(b)所示,而八方向搜索结果为如图6(c)所示。八方向搜索方法更为全面,抗干扰能力更强,所以本研究用八方向搜索方法。
图6 不同搜索方式结果对比
3.3 边界的判断
边界的确定考虑邻近像素与生长点的灰度差,如果灰度差超过某一阈值则视为边界像素点。本研究采用抗干扰能力较强的相对阈值法进行边界判断。
首先尝试将生长点邻近像素加入生长区域J,然后计算区域J的平均灰度值m,判断m是否超过预设的阈值K。如果超过阈值K,则将该点定义为边界点;如果没超过阈值K,则将该点加入生长区域J,继续进行下一个邻近像素点的搜索,直至遇到边界点。设图像区域J中的像素数目为N,坐标(x,y)处的灰度值为f(x,y),则平均灰度m可用式(2)表达:
(2)
假设有一幅图像,如图7(a)所示,以灰度值为1的点进行种子填充,阈值为2,采用八方向搜索。种子点的生长过程如图7所示。种子填充算法执行完成后,记录种子填充的区域,即可得到裂缝的二值化图像。
3.4 连通域滤波
连通域滤波即统计二值图中各部分连通区域像素点的个数,然后将极小面积的噪点进行去除。本步骤分滤除背景区域白色噪点与滤除裂缝内部黑色噪点两个阶段进行。
图7 种子生长过程
第一阶段中采用八方向连通域搜索算法对各白色连通区域像素点个数进行统计,将面积小的白色噪点进行滤除,处理结果如图8(b)所示。此时背景白色噪点基本滤除干净,但裂缝内部仍存在大量黑色噪点,这些噪点将会严重影响后续的裂缝细化操作,必须进行滤除。因此,采用连通域滤波方法对小面积黑色区域像素点进行滤除。考虑到存在如图9所示的裂缝内部黑色噪点,该噪点与外部黑色背景斜向相连,若采用八连通域搜索方式对各黑色连通区域进行搜索时,程序会将图9中裂缝内部黑色噪点与黑色大背景视为一体,不会将小面积噪点剔除。而四方向搜索仅进行上下左右方向搜索,并不进行斜向搜索,此时图9所示黑色噪点会被视为孤立点,会被算法滤除。因此在第二阶段必须采用四方向连通域搜索算法进行滤波处理,处理后的裂缝二值图几乎不含内、外噪点,如图8(c)所示。
图8 连通域滤波处理
图9 裂缝内部的黑色噪点放大图
4 裂缝特征提取
裂缝特征提取旨在获取裂缝长宽值,实现对裂缝的量化,包括图像细化、获取裂缝条数、宽度、长度等步骤。
4.1 图像细化
图像细化流程如图10所示,该步处理得到的裂缝骨架可以提供裂缝的中心位置及走向信息。如果直接对裂缝二值化图像进行细化处理,得到的图像往往含有很多毛刺,如图10(b)所示。为解决这个问题,本研究先对图像进行形态学膨胀处理,然后进行Zhang-Suen快速并行细化算法[21]处理即可得到毛刺较少的骨架图,如图10(d)所示。最后再将长度小的支链进行剔除[22],即可得到最终裂缝骨架,如图10(e)所示。此时裂缝骨架图已经没有了细小毛刺,可为裂缝的特征提取提供基础。
图10 裂缝骨架提取流程
4.2 条数提取
当裂缝中存在干扰(如泥块、小石块)时,因为干扰处的亮度比裂缝区域高,使用种子填充算法进行图像分割会认为裂缝在此断开,从而将其当成两条裂缝,如图11所示。然而实际上此裂缝确实为一条,考虑到干扰点面积较小的特点,可以先对裂缝骨架图中各条裂缝的端点之间的距离进行获取。如果距离过小(小于图像长度或宽度1/40),则对干扰处断开裂缝在骨架图中实施连接,作为一条裂缝(如图11所示)。如果距离过大,则认为是两条裂缝。统计连接好的骨架图中连通区域的个数,以此作为裂缝的条数。
图11 骨架图连接
4.3 长度提取
每条裂缝是一个连通区域,可能为单一裂缝,也可能是网状裂缝。对于单一裂缝,可以采取Freeman编码,以此来获取裂缝的长度及方向信息[23]。对于网状裂缝,可以先消除网状裂缝的节点(如图12所示),使其变为多个简单单一裂缝,统计出各简单裂缝的长度最后进行相加即可获得网状裂缝的总长度。
图12 断除节点
4.4 宽度提取
裂缝的平均宽度和局部最大宽度在一定程度上可以反映结构健康状态,因此本研究将对这两个指标进行获取。裂缝的平均宽度获取较简单,直接由每条裂缝二值化图像面积除以对应的裂缝长度获得。而裂缝局部最大宽度可结合Freeman链码信息及裂缝二值图进行获取,具体操作方法可参考文献[23]确定。
5 试验结果及对比分析
为了测试该图像识别方法的处理效果,对几种典型工程结构的衬砌裂缝图像进行了处理,并与其他常规算法进行了比较。总体而言,这些或直观或定量的处理结果在一定程度上反映了文中所提出的图像识别系统的优越性。
5.1 预处理效果分析
本研究图像预处理中采取先判断图像光照均匀程度,再决定是否使用匀光算法进行匀光处理。这样不仅可以提高计算效率,而且能避免匀光处理对光照均匀图像的裂缝信息造成损失、最大程度保留裂缝细节。最后再用灰度值线性变化使得裂缝信息完整呈现出来,如图13所示。
图13 匀光处理及图像增强
同时,为比较各滤波方法的处理效果及适应性,选取了3种不同干扰环境下的图像来对比。由图14可以看出,均值和高斯滤波在一定程度上模糊了裂缝的边缘信息,而中值滤波对背景噪点的处理效果又不甚理想。本研究采用的双边滤波方法既可以很好地处理背景噪声,又可以保留裂缝边缘的细节。同时采用峰值信噪比(PSNR)来对比不同滤波方法对图的处理效果,其中峰值信噪比越高,处理效果越好,结果如图15所示,由图15可见,采用文中提出的双边滤波处理法的效果最好。
图15 不同滤波方法PSNR对比图
5.2 裂缝提取效果对比
本研究选取了4种不同环境下的裂缝图像来对裂缝提取效果进行对比分析,如图16所示。由图16可以看出,自适应阈值法对噪声异常敏感,分割后的图像干扰太多;OTSU算法则因裂缝与背景所占图像比例相差过大,导致该算法得到的阈值较实际最佳阈值高,使得部分背景区域也被识别为裂缝,识别效果不理想;而采用文中基于种子填充的分割算法则可在保留裂缝形态基础上使得噪声干扰降至极低的水平,增大了裂缝的识别率,更有利于进行裂缝的特征提取。
为了对裂缝识别算法效果进行定量评价,采用下式来表示裂缝识别算法的识别率[10]。
(3)
式中,∪表示集合的并运算,∩表示集合的交运算,Rc值为0%~100%(数值越高表示识别效果越好)。
(a)原图
图17为文中算法与自适应阈值法、OTSU法分割效果的对比图,从图中可以看出,本研究采用的种子填充算法在面对背景复杂的裂缝图像时识别率远高于自适应阈值及OTSU分割算法。
图17 识别率定量对比
5.3 特征提取结果展示
采用文中的特征提取方法对图16中4种环境下的图片分别进行处理,结果如表2所示,其中长、宽值均以像素为单位。从表中可以看出,程序所得裂缝长、宽值与实际值非常接近,误差基本在10%以内。因此文中所采用的图像识别系统对复杂干扰情况下的裂缝进行识别及特征提取是可行的。
表2 裂缝信息提取结果的对比
6 结语
本研究提出了一种裂缝图像自动识别系统,该系统在集成成熟算法的基础上,进一步改进了匀光处理算法,并且提出了基于种子填充算法的裂缝图像自动分割方法。对比其他传统图像识别方法,本研究所提出的图像处理系统在裂缝识别方面抗干扰能力更强,结果更加准确且系统整体效率更高。研究成果主要包括以下几个方面:
(1)该系统集成了一系列图像处理程序,实现了裂缝的自动化识别。
(2)匀光算法流程通过光照不均匀系数进行照片初选,大幅提高了预处理效率,并且减少了算法造成的图像细节损失。
(3)提出基于种子填充算法的图像分割方法,结合连通域滤波算法,减轻了混凝土裂缝图像背景干扰,具有较强的抗干扰能力。
(4)改进了裂缝特征提取流程。其中图像细化中引入了形态学处理及毛刺剔除,优化了裂缝骨架;条数提取中将节点间距离过短的骨架相连,消除了裂缝中石块或泥块的干扰。改进后的程序得到的长宽值与实际值更加接近,误差在10%左右。