APP下载

基于LabVIEW+VDM的混凝土坝裂缝检测方法

2021-10-20王一兵包腾飞高治鑫

水利水电科技进展 2021年5期
关键词:畸变标定滤波

王一兵,包腾飞,2,3,高治鑫

(1. 河海大学水利水电学院,江苏 南京 210098;2. 河海大学水文水资源与水利工程科学国家重点实验室,江苏 南京 210098;3.三峡大学水利与环境学院,湖北 宜昌 443002)

混凝土坝普遍存在裂缝,裂缝会破坏坝体的整体性和防渗性能,对大坝产生威胁,所以对大坝裂缝的检测和控制对大坝安全监测有着重要意义。传统的混凝土裂缝监测技术主要依托裂缝计[1]或超声波检测[2],而混凝土坝的裂缝检测主要靠人工目检,我国混凝土坝坝高通常很大,有的甚至达到300 m级,人工检测不仅耗费大量的人力,而且某些特殊部位的人工检测是十分危险的。

近年来由于计算机技术的快速发展,催生了一系列基于机器视觉的混凝土裂缝检测技术,这些技术用无人机、爬壁机器人等自动获取混凝土图像信息,再利用裂缝识别算法进行识别。在算法研究方面, Cha等[3]使用卷积神经网络的深层结构来检测混凝土裂缝。Nishyama等[4]通过在裂纹两侧建立反射目标来计算裂缝的位移。陈建立[5]建立卷积神经网络模型对混凝土图片进行检测,提出重构图片的采样率为0.3时效果最优、二值化阈值为0.4时效果最优,但对于不同混凝土裂缝图片的适用性不强;王睿等[6]运用RBF-SVM算法说明不同裂缝特征分配对裂缝识别产生较大影响。梁雪慧等[7]用改进的GoogLeNet卷积神经网络进行裂缝识别。徐港等[8]提出基于连通域特征聚类的裂缝提取方法,解决小宽度多数量网状裂缝的提取,但该方法需要调试的参数较多。在工程运用方面,周颖等[9]在实验室条件下对钢筋混凝土梁表面裂缝进行拍摄和处理,但使用工业级相机的实验室条件不适合大坝现场实际条件。薛峰等[10]提出基于图像处理的铁路轨道裂缝检测方法。姜会增[11]提出局部二值化的铁路桥梁裂缝检测技术。郭全民等[12]利用标记连通域算法对路面混凝土裂缝进行分类、提取。Bernstone等[13]通过间隔拍摄一系列图像,从中识别出裂纹,并表明该技术可用于水电站混凝土结构。王丽等[14-15]基于MATLAB建立了混凝土坝裂缝监测系统,但前者没有进行图像标定,后者的标定方法无法考虑镜头畸变和角度倾斜的校正。

上述研究表明,计算机视觉在混凝土坝裂缝检测领域的研究运用较少且存在标定方法不实用等问题,针对混凝土坝裂缝检测分析需要快速、安全和便捷的要求,本文提出一种基于LabVIEW图形化编程结合VDM视觉开发包的混凝土裂缝分析方法,便于行业人员快速检测分析混凝土坝裂缝,同时对相似程序的快速开发有借鉴意义。

1 裂缝图像的处理方法

一般采用相机获取大坝裂缝的图像,大坝现场由于温度、天气、光照条件和检测时间的变化,采集到的原始图像通常存在有噪声、阴影以及过曝光等一系列问题,为消除噪点,增强裂缝对比度,改善图像质量,需要对图像进行灰度化、滤波、分割、形态学处理,以达到图像增强和锐化效果。

1.1 图像灰度化

相机采集的原始图像为RGB彩色图像(图1(a)),为了避免裂缝识别过程中条带失真,必须对图像进行灰度化处理。RGB图像模型由红绿蓝三个平面构成,任一个平面都是8位灰度图,抽取颜色平面可以得到灰度图像如图1(b)所示。

图1 裂缝图像

1.2 图像滤波

图像滤波是过滤噪声的主要手段,也是重要的图像处理操作。不同滤波方式的选择和参数的调整对滤波效果有重要的影响。常用的有邻域平均滤波、高斯滤波等。另外,Roberts、Prewitt、Sobel等边缘检测算法通常也用于实现过滤图像噪声,保留目标特征的功能[16]。

邻域平均滤波用某像素值一个邻域内的全部像素的平均值来替换该像素值,起到模糊和过滤的作用。邻域平均滤波算法无法考虑距离中心像素越远对中心像素的作用越小的效应,作为改进,采用邻域内像素的加权平均值代替中心像素,即高斯滤波。由于图像是二维数组,引入二维高斯分布函数并将其离散化,以离散点上的高斯函数值为权值,可以得到高斯滤波器模板。二维高斯分布函数如下:

(1)

式中:(x,y)为像素点的坐标;σ为分布函数标准差。

对比分析邻域平均滤波、高斯滤波、Laplacian算法和Canny算法的去噪效果可知,邻域平均和高斯滤波对噪声的剔除效果明显,参数适合时,两者均能取得良好效果(图2(a)(b)); Laplacian算法图像噪点过多、效果不佳(图2(c));Canny算法在标定偏差值设置较大时能有效过滤噪声,但只保留了裂缝的边缘部分且有部分缺失,裂缝内部丢失则较为严重(图2(d))。考虑到后续计算裂缝面积的要求,本文使用高斯滤波对图像进行处理,既过滤了大部分噪声,也完整保留了裂缝特征。

图2 图像滤波

1.3 图像分割

为了提取裂缝特征,灰度图像在滤波后需要进行图像分割,将图像分为背景和裂缝两部分。一幅位深度为8的灰度图像每个像素的取值在0到255之间,阈值函数对图像每一个像素按照一定的阈值分为目标和背景,即:

(2)

式中:g(x,y)为全局阈值分割函数;k为分割阈值;f(x,y)为原图像像素点灰度值。

由于裂缝图像光照条件分布均匀,可使用全局灰度阈值对整个图像进行分割,分割阈值的设定对分割效果有重要的影响,采用Otsu[17]提出的最大类间方差法和Kapur等[18]提出的最大熵法来进行图像分割。最大类间方差法阈值通过类别之间的阈值差异的最大值来决定,即阈值的像素值k使下面的表达式(3)的值最大化:

(3)

式中:σB为类间方差;ωk、μk分别为从1到k的累积出现概率和平均灰度级;μT为整幅图像的平均灰度级;pi为灰度图像的概率分布。

最大熵法中,若k为阈值像素值,则有两个熵:

(4)

(5)

式中:Hb、Hw分别为图像阈值后的测量黑、白像素相关的熵;pbi为黑色背景概率;pwi为目标概率。

最优的阈值是使整幅图像的熵Hb+Hw最大,即阈值是下面的表达式取最大值时的k:

(6)

经过阈值分割后的图像如图3所示,最大类间方差法和最大熵法效果没有明显差别,两算法均能较好地实现图像分割且保留目标区域,本文选择最大类间方差法。同时注意到图像中仍有大量的孤立点,需要进一步处理。

图3 阈值分割

1.4 高级形态学运算

为了剔除裂缝图像中的孤立点、填补小孔洞,需要对图像进行形态学处理。形态学运算的基础是膨胀和腐蚀,通过对像素与结构元素进行集合运算,使二值图像中的目标区域进行扩大或缩小:

X⊗B={x|Bx1⊆X∩Bx2⊆XC}

(7)

式中:X为图像像素集合;B为结构元素;x为集合X中的像素点;XC为集合X的补集;Bx1、Bx2分别为集合X、XC中像素点x及其邻域内像素点组成的集合。当B为白色像素点时,会使图像中的黑色特征区域扩大;当B为白色像素点时,会使图像中的黑色特征区域缩小。

通过先膨胀再腐蚀或先腐蚀再膨胀可以得到闭和开运算,结合闭和开运算又衍生出了适当闭和适当开操作。形态学运算是作用于像素上的,在去除孤立点时容易改变裂缝的细节几何特征,在形态学基础上提出的高级形态学操作则是针对二值图像中的粒子进行作用,可以满足去除小的孤立点、填补裂缝小孔洞的同时不对裂缝几何特征造成过大影响。针对二值化后的裂缝图像存在很多孤立点、裂缝边缘存在小毛刺和裂缝内部存在小孔洞的问题,先使用腐蚀迭代删除图像中的孤立点,再使用孔洞填充函数对裂缝内部的孔洞进行填充,最后使用开运算平滑裂缝边缘,减少边缘毛刺,处理结果如图4所示。

图4 图像分割与高级形态学运算

2 裂缝特征分析

2.1 图像标定

为将图像像素长度与真实世界物理单位相关联,需要进行图像标定。混凝土裂缝表面为平面,现场采集图像相机与混凝土平面呈一定角度(图5(a)),如果相机光轴和混凝土表面不垂直,则会产生透视误差,即目标的放大倍率变化受到目标到镜头距离的影响,实际大小相同的点阵由于透视误差在图像上表现出畸变(图5(b)),除了透视引起的线性畸变外,由于镜头的固有缺陷,图像还会产生一定的非线性畸变,如径向畸变和切向畸变等。径向畸变是由于镜头在制造过程中的磨制工艺带来的,切向畸变是由于镜头和相机在装配过程中的定位不精确所产生的。

图5 透视误差与镜头畸变

经典的标定算法有Tsai两步法[19]和张正友标定法[20]等,但其标定过程较为烦琐,为了实现准确快速的标定,本文采用LabVIEW平台视觉开发包进行标定,标定类型为Distortion model(Grid),可以同时考虑线性畸变和非线性畸变。采用张建国等[21]的标定方法,即多参数多项式畸变模型:

xu-xd=xd(1+K1r2+K2r4)+

[2P1xdyd+P2(r2+2xd2)]

(8)

yu-yd=yd(1+K1r2+K2r4)+

[2P2xdyd+P1(r2+2yd2)]

(9)

其中r2=xd2+yd2

式中:(xu,yu)为成像点的理想坐标;(xd,yd)为畸变引起的实际成像点坐标;K1、K2为径向畸变系数;P1、P2为切向畸变系数。

标定结果的精度主要用畸变百分比和平均误差来衡量,畸变百分比是每个像素到光轴的距离除以计算误差产生的平均值;平均误差采用下式计算:

(10)

2.2 裂缝长度确定

计算裂缝长度需要提取裂缝骨架,骨架提取是迭代应用腐蚀直至目标的宽度等于一个像素。常用的骨架提取的算法有Zhang并行细化算法[22]、Hilditch细化算法[23]、Rosenfeld细化算法等[24]。NI vision提供了3种骨架函数:L-Skeleton函数、M-Skeleton函数和Skiz函数,L-Skeleton函数使用图6(a)的结构元素形式,其处理效果如图6(b)所示,M-Skeleton函数提取的骨架比L-Skeleton拥有更多的树突和分支,Skiz函数是在一幅反转的图像上使用L-Skeleton函数得到的结果,即提取背景而不是目标裂缝的骨架。为了计算裂缝长度,要求提取的裂缝骨架没有分支,本文采用L-Skeleton函数进行骨架的初步提取。

图6 骨架函数L-Skeleton

由于裂缝图像形状不规则和边缘不平整的原因,初步提取的骨架存在很多伪分支,伪分支会对裂缝长度计算造成影响,需要剪除。先用二值形态学的细化函数,将结构元素设为5×5,其中中间一行全为1,其他全为0,将伪分支从骨架中分离,再利用高级形态学的腐蚀迭代来删除孤立分支,最终得到没有分支的裂缝骨架。处理过程如图7所示。

图7 骨架提取

完成骨架提取后,用VDM粒子测量的方法求裂缝长度。粒子测量是VDM提供的一组功能强大的函数,粒子是指图像上一组连续的非零像素的组合,经过图像预处理后的裂缝目标即为粒子,粒子通过测量相关的属性如位置、面积、形状等来表示其特征,VDM粒子测量可以同时实现像素测量和现实世界测量。骨架是单像素的,可运用下面的公式计算裂缝长度L:

L=P/2

(11)

式中:P为粒子外边界的长度,因为一个二值图像的边界是由离散的像素组成的,VDM的次级样本边界点可近似一个更平滑、更准确的周长。

2.3 裂缝面积和宽度确定

经过图像处理后的裂缝目标是一组连续的非零像素组合,也是VDM中定义的一个粒子,所以采用VDM粒子测量方法计算裂缝面积。在VDM粒子面积测量中,一个像素认为有一个平方单位的面积,所有裂缝区域所占的像素个数总和即为裂缝面积的像素单位表示。在像素面积转化为真实世界单位时,一个像素认为是一个多边形,其角落定义为中心像素正负各有半个像素的位置,如图8所示,一个坐标为(3,8)的像素是一个正方形,其角上坐标为(2.5,7.5),(3.5,7.5),(3.5,8.5)和(2.5,8.5),4个角的像素转化为现实世界坐标,整个粒子的面积通过标定的轮廓点进行计算。

图8 裂缝面积计算原理

裂缝平均宽度W用裂缝面积A除以L得到:

W=A/L

(12)

3 基于LabVIEW+VDM的混凝土坝裂缝检测方法

LabVIEW是美国国家仪器(national instruments,NI)公司的图形化编程平台,其独具特色的G语言提供了编程的可视化,即通过线、框和图标的组合形成语句逻辑,使用前面板结合程序框图的模式进行编程开发,这种图形化编程的最大优点就是入门简单,开发快速。NI vision是NI公司的视觉开发模块,其全称是vision development module(VDM),该模块主要运用于计算机视觉、图像处理领域,VDM中包含的视觉助手vision assistant(VA)能通过交互实现VDM的各种功能,并且可以将处理过程生成VI(LabVIEW编程平台使用的脚本)导入LabVIEW,方便LabVIEW平台实现调用。

采用LabVIEW+VDM的方式进行程序开发,先用VDM中的VA对图像采集、处理和分析的各项功能进行研究和验证,即直接在VA软件中载入含裂缝的混凝土坝图像,对图像抽取颜色平面得到灰度图像,再对图像进行领域平均滤波、高斯滤波、Laplacian算法和Canny算法,比较后保留效果最好的高斯滤波算法,对处理后的图像运用图像分割算法,保留效果最好的Otsu算法,类似的,对图像进行高级形态学运算、多参数多项式畸变模型标定、细化算法提取裂缝骨架,最后用粒子测量方法计算裂缝长度、面积和宽度,完成VA对图像处理过程的验证,再将VA中保留的算法生成VI脚本并导入LabVIEW中进行GUI开发和调试,最终实现裂缝检测程序的开发,其主要流程如图9所示。

图9 混凝土坝裂缝检测程序流程

为方便对大坝裂缝的快速检测分析,开发了基于LabVIEW平台的混凝土坝裂缝检测程序。通过VA对图像处理流程进行研究,生成VI导入LabVIEW编程平台进行优化和调试,同时基于LabVIEW前面板+程序框图的模式设计了混凝土坝裂缝检测程序GUI,系统程序GUI如图10所示。

图10 混凝土坝裂缝检测系统GUI

4 裂缝检测方法实例分析

对某水库大坝的混凝土裂缝原始图像进行采集,使用相机采集,常规的标定是将相机镜头固定住,在镜头前放置一张标定板并采集一张图像进行标定,再在相同的镜头角度下采集裂缝照片进行分析,这种标定方法步骤较为繁琐,适用于实验室条件下进行研究,水库现场由于地形复杂,设备众多等原因不方便假设固定的相机镜头。本文提出采用一次拍摄的方法,即将标定板贴于裂缝旁,拍摄含标定板的裂缝图像(图11),后期图像处理时将标定板和裂缝目标分离,避免了相机镜头固定的麻烦。

运用本文裂缝检测方法对原始图像处理,主要包括图像灰度化、图像滤波、阈值分割等内容,处理过程及其效果如图12所示。处理完成后能够有效过滤混凝土裂缝图像中的噪声,保留完整的裂缝形态和轮廓。

图像处理完成后,采用VDM视觉开发包进行标定,具体标定步骤如下:

步骤1标定图像载入。将含标定板的裂缝原始图像作为图像源,其平面为代表工作平面。

步骤2提取标定点特征。使用ROI工具框选标定板区域,将RGB图像采用局部阈值Local Threshold:BG Correction法进行阈值分割,设置合适的参数,将黑色标定圆点作为粒子提取出来,最后应用指定有效圆度提取标定点的中心坐标。

步骤3指定标定参数。输入实际的圆点中心距的物理单位,由标定图像的边界坐标可以计算出图像中心坐标及各标定点圆心的坐标。

步骤4检查标定结果。计算标定精度参数及畸变模式的调整。

步骤5指定标定轴,使用默认的标定轴,即原始的图像坐标轴即可。

步骤6保存标定模板。当信息栏显示了标定后的数据时,表示标定已经学习成功了,将基于VDM的标定结果和模板等信息保存,文件类型为PNG。

为分析本例中图像标定的精度,以标定板(表1)中12个点为例,列出修正前、修正后各点的位置如表2所示。计算得到,标定平均误差为0.089 mm,最大误差为0.227 mm,畸变百分比为0.038%,认为一次拍照标定法能得到很高的标定精度,能够满足大坝裂缝检测标定需要,且便捷性较高。

表1 标定板尺寸 单位:mm

表2 图像标定点误差

对标定后的裂缝目标进行几何特征分析,主要过程如图13所示,经计算得,该裂缝的粒子周长为507.6 mm,裂缝长度为253.8 mm,裂缝面积为859.3 mm,裂缝平均宽度为3.4 mm。

图13 混凝土坝裂缝图像几何分析

5 结 语

提出LabVIEW+VDM的混凝土坝裂缝检测系统开发方法,用相机对含标定板的大坝裂缝图像进行采集,用VDM中的VA对裂缝图像进行图像处理和特征分析,处理过程为灰度化、滤波、阈值分割和高级形态运算,特征分析为骨架函数结合形态学运算提取裂缝骨架,VDM粒子分析方法计算裂缝长度、宽度和面积,最后将VA过程生成VI导入LabVIEW编程平台进行调试及GUI开发,研究结果表明,VDM视觉开发包的算法能够独立完成混凝土坝裂缝的检测分析功能,对大坝安全评价与决策提供依据。

LabVIEW作为一款优秀的虚拟仪器开发平台,其核心的G语言图形化编程正被越来越多的科学工程界人员所接受, LabVIEW图形化编程结合VDM图像处理模块能快速验证和开发计算机视觉领域的工程项目,专业人员即使没有丰富的编程经验也可以独立快速地完成开发任务,该方法对水利专业人员的系统开发工作有借鉴意义。

猜你喜欢

畸变标定滤波
大型焊接容器局部热处理防畸变工装优化设计
使用朗仁H6 Pro标定北汽绅宝转向角传感器
几何特性对薄壁箱梁畸变效应的影响
CT系统参数标定及成像—2
CT系统参数标定及成像—2
基于EKF滤波的UWB无人机室内定位研究
在Lightroom中校正镜头与透视畸变
基于MATLAB 的CT 系统参数标定及成像研究
ECAS下线检测及标定系统开发
一种GMPHD滤波改进算法及仿真研究