基于改进边缘检测的钢箱梁疲劳裂纹识别及量化方法研究
2023-12-01荣飞亚吉伯海袁周致远
荣飞亚 吉伯海 高 天 袁周致远
(河海大学 土木与交通学院, 南京 210098)
钢箱梁凭借其优越的受力性能,被广泛应用于各类大跨径桥梁中[1].然而随着服役年限的增加,在复杂交通荷载作用下,钢箱梁出现了不同程度的疲劳开裂现象[2-4].若不对钢箱梁进行定期检测以监测裂纹扩展动态,就无法及时采取有效的维修加固措施.一旦发生疲劳断裂,将严重危害人民生命财产安全.然而由于钢箱梁疲劳裂纹数量众多,目前人工目视检测仍然是钢箱梁病害检测的主要方法.检测人员通过肉眼观察,使用相机采集疲劳裂纹图像并记录裂纹位置、长短及扩展情况.为提高裂纹检测效率,检测人员往往凭借经验对裂纹的长度进行估计,仅选择部分裂纹进行钢尺测量,缺乏定量分析.
随着数字图像识别技术的不断发展,其凭借检测速度快、精度高等优点,被广泛运用于各类裂纹的检测中.孟兆新等基于边缘检测算法对扫描电镜下疲劳裂纹图像进行数据提取[5];张维峰等基于图像处理技术,研发了一套远距离裂纹几何尺寸图像识别系统,实现了对混凝土桥梁腹板裂纹检测[6];黄心畏等基于边缘检测和数字图像相关法,实现了疲劳裂纹长度的高精度动态测量[7].这些研究中选取的测试图像都有着背景单一的特点,而钢箱梁构造复杂,焊缝众多,裂纹识别往往会受到复杂背景的干扰,难以准确识别.
近年来,随着卷积神经网络的不断发展,王丽苹等提出了基于卷积神经网络的裂缝检测方法,实现了路面缺陷的自动化检测分类并提高了裂缝检测效率与精度[8].不同于传统的图像处理方法,基于卷积神经网络的裂缝检测精度对训练样本有较高的依赖性.与混凝土、路面结构不同,钢箱梁疲劳裂纹缺乏独特的视觉特征,且缺少足够的训练样本,难以保证钢箱梁疲劳裂纹的高效识别[9-10].为识别出疲劳裂纹同时避免焊缝等噪声点边缘的干扰,本文引入双边滤波算法,对传统Canny边缘检测算法进行改进,抑制焊缝细节和噪声点的干扰,同时实现了对疲劳裂纹边缘特征点的提取;然后通过张氏标定法[11]进行相机标定,获取相机成像模型参数,建立图像坐标与空间坐标的转化关系,实现了利用二维图像对三维空间中疲劳裂纹真实长度的测量.
1 识别算法及特征量化原理
1.1 改进边缘检测算法
钢箱梁疲劳裂纹部位与其周围有着较大的像素差,具有典型的边缘特征.边缘检测的目标是实现图像的最优边缘提取,即抑制干扰信息并尽可能多地标示出图像中的实际边缘.经典的边缘检测算法是由John F.Canny提出的,其采用高斯滤波对图像进行平滑,并基于Sobel算子对边缘像素进行提取[12].本文改用双边滤波对待检测图像进行平滑处理,通过在卷积的过程中组合空域函数和值域核函数来实现边缘特征信息的保护,再计算像素梯度幅值,然后对非极大值点进行抑制,最后对所提取边缘点进行连接,具体原理如下:
1)图像平滑处理
为了降低对伪边缘的误检概率,在边缘检测前需要对图像进行平滑处理.图像中噪声点附近像素值变化较大,易被误检为图像边缘,造成误检现象.传统Canny边缘检测算法采用高斯滤波平滑图像,该算法能较好地抑制服从正态分布的噪声点,二维高斯分布函数如式(1)所示:
式中:σ为标准差;x为点的横坐标;y为点的纵坐标.
以模板中心为原点(0,0),向右为x正方向,向上为y正方向,将各位置的坐标(x,y)代入公式(1),所得值即为高斯滤波器模板系数G(x,y).通过该模板遍历图像中的每个像素,将该像素邻域内各个像素值与模板对应位置的像素值进行卷积求和,用所得的加权平均灰度值代替滤波器中心像素值,所有加权平均灰度值所组成的图像即为高斯滤波后的图像[13].通过标准差控制周围像素对中心像素的影响程度,σ越大,远处像素对中心像素的影响程度越高,滤波效果越平滑.
然而,经过高斯滤波平滑后的图像边缘变得模糊,可能会造成部分边缘特征信息损失,为此本文引入双边滤波,在降噪平滑的同时保持边缘特征.双边滤波同时考虑像素点的空域信息和值域信息,利用边缘两侧点的像素值差异较大这一特征,根据像素值的大小对滤波区域进行分割,可以达到保持边缘、降噪平滑的效果.双边滤波通过在卷积的过程中组合空域函数和值域核函数来实现边缘特征信息的保护,具体函数如式(2)~(3)所示:
在图像的平坦区域,(Ip-Iq)的值变化很小,对应的值域权重接近于1,此时空域权重起主要作用,相当于直接对此区域进行高斯模糊;在边缘区域,(Ip-Iq)会有较大的差异,此时值域权重会有所下降,导致此处整个核函数的分布的下降,从而保持边缘的细节信息.
2)梯度幅值与方向量化
图像边缘具有图像像素值变化剧烈的特性,灰度值变化越大,其梯度值越大,因此在检测边缘前,需要对图像的梯度进行计算.图像中像素点(x,y)的梯度方向和数值大小可由图像与Sobel算子经卷积操作确定,Sobel算子是两个3×3的矩阵,分别为Sx、Sy.设经过双边滤波后的图像为I,Sobel算子在计算中心位置的梯度时除了考虑前后像素的差分,还赋予邻域在所求方向上额外的两对像素一定的权重,具体计算如式(4)所示:
则每个像素点的梯度幅值F与梯度方向θ分别如式(5)~(6)所示:
式中:Fx为该像素在x方向上的变化率;Fy为该像素在y方向上的变化率;Sx、Sy为Sobel算子卷积核;I为经过双边滤波后的图像.
3)非极大值抑制
通过寻找图像梯度的极大值,将非极大值点所对应的像素值置为0,从而可以剔除图像中部分非边缘的点[14].Canny的论文中非极大值抑制只在0、45、90、135四个梯度上进行,实际图像中的像素点是离散的二维矩阵,中心点的梯度方向不一定只沿着这四个方向,难以达到较好的抑制效果.处于中心像素点梯度方向的两侧的点不一定存在,本研究将该类不存在点定义为亚像素点,可通过对亚像素两侧像素点的梯度值进行插值计算,从而得到两侧亚像素点的梯度值.若中心像素点的梯度值大于两侧亚像素点的梯度值,则保留中心像素点的梯度值,否则将其置为0,完成部分非边缘点的剔除.
4)双阈值检测与边缘连接
通过非极大值抑制,完成了部分非边缘点的剔除,一些非边缘点仍然存在.因此人为设置高、低两个阈值,对非边缘点进行抑制[15-16].遍历整幅图像的梯度值,将所有梯度值低于低阈值的点视为非边缘点,将其像素值置为0,踢除此类非边缘点;将所有梯度值高于高阈值的视为强边缘点,将其像素值置为255;对梯度值介于高、低阈值之间的点进行进一步判断:若中心像素点的八邻域点内存在梯度值高于高阈值的点,则判定该中心点为真实边缘,将像素值置为255实现边缘连接,否则将该点像素点像素值置为0,完成非边缘点的剔除.
1.2 量化原理
二维图像将空间中三维物体以像素点集的形式呈现,但像素点不能反映各三维物体的实际物理尺寸参数.想要通过二维图像实现三维物体的尺寸测量,必须求解三维物体表面点空间位置与其在二维图像中坐标之间的相互关系,实现坐标转化,才能完成对空间中物体的尺寸参数量化.为确定坐标转化关系,必须建立相机成像模型,通过求解模型获得模型参数,该过程也被称为相机标定.
相机成像模型涉及四大坐标系,分别设像素坐标系(u,v),图像坐标系为(x,y),相机坐标系为(Xc,Yc,Zc),世界坐标系为(Xw,Yw,Zw),其中图像坐标系以图像的中心为原点,像素坐标系以图像左上角为原点,相机坐标系以相机透镜光心为原点,这三大坐标系的坐标轴都分别沿着图片的水平、竖直方向.由于从相机坐标系到世界坐标系属于刚体变化,物体不会发生形变,只进行旋转和平移.当不必描述裂纹空间绝对位置时,在相机坐标系下即可完成裂纹真实长度测量,故简化为三大坐标系之间的转化,三大坐标系关系示意图如图1所示.
图1 三大坐标系关系示意图
设图片中心点坐标为(u0,v0),则图像坐标系与系数坐标系之间关系如式(7)所示:
由三角形相似得空间点与图像坐标点之间关系如式(8)所示:
式中:Zc为相机光心到拍摄对象的距离;f为相机焦距.
联立两矩阵形式等式得像素坐标系与相机坐标系之间的转化关系如式(9)~(10)所示:
式中:Zc为相机光心到拍摄对象的距离;fx为x方向上焦距,单位为像素;fy为y方向上焦距,单位为像素.
2 实验与分析
2.1 钢箱梁疲劳裂纹识别试验
为了验证改进Canny边缘检测算法在钢箱梁疲劳裂纹识别中的实际效果,分别采用传统Canny边缘检测算法与改进Canny边缘检测算法对实桥疲劳裂纹图像进行识别试验;再与经典的自适应阈值分割算法识别效果进行对比分析.
Canny边缘检测算法实质是提取图像中不连续部分的特征,由于疲劳裂纹处像素灰度值变化幅值较大,理论上通过此方法可以实现疲劳裂纹边缘特征点的提取.传统Canny边缘检测算法,为减少噪声点对检测的影响,采用高斯函数对图像进行平滑处理,对特征不明显的疲劳裂纹有一定的抑制作用,改进Canny边缘检测算法采用双边滤波器进行图像平滑处理,理论上可以对疲劳裂纹边缘起到保护作用.
以国内某跨江大桥顶板-U 肋疲劳裂纹图像作为试验对象,如图2所示,对比分析传统Canny边缘检测算法与改进Canny边缘检测算法在钢箱梁疲劳裂纹识别中的表现:分别对含有疲劳裂纹的图片进行高斯滤波、双边滤波平滑处理,经过高斯滤波后疲劳裂纹边缘与图像中的噪声点相对较平滑,但肉眼观察难以评价.接着分别对两种滤波器平滑后的图像进行边缘提取,边缘提取效果分别见图2(c)、(d),可以明显看出,经过高斯滤波平滑的图像干扰点较少,但存在边缘漏检的现象.尤其是对于本身裂纹就不明显处,如图2(c)中红圈区域,经过高斯滤波会造成细小边缘信息损失.
图2 传统算法与改进算法边缘检测效果对比
为进一步评价传统Canny边缘检测算法与改进Canny边缘检测算法在钢箱梁疲劳裂纹识别中的表现,对所提取的边缘特征点进一步进行图像后处理操作,后处理结果如图3所示.
图3 图像后处理结果对比
对传统算法与改进算法所提取的裂纹特征点进行形态学膨胀处理,结果分别如图3(a)、(b)所示.基于双边滤波的改进Canny边缘检测算法对疲劳裂纹边缘具有一定的保护效果,边缘提取更为完整,存在的干扰相对较多,但干扰边缘多呈点状分布,与裂纹边缘有着明显的特征差异.点状分布的干扰边缘在膨胀处理后不会形成较大的连通区域,将单个连通区域面积小于总连通区域面积10%的区域像素值置为0,即可完成干扰点的去除,从而获得待求的疲劳裂纹区域.传统算法与改进算法所提取的裂纹特征点膨胀后再进行连通区域提取,结果分别如图3(c)、(d)所示.通过对比分析后处理结果,可见图3(c)中红圈区域存在疲劳裂纹边缘漏检,进一步验证了基于双边滤波的改进Canny边缘检测算法对疲劳裂纹边缘有一定的保护效果.
此外还通过自适应阈值分割算法对国内某跨江大桥实桥疲劳裂纹图像进行特征提取,提取结果如图4所示.自适应阈值分割算法根据局部区域像素值计算出该区域的阈值,解决了光照不均匀图像特征提取难的问题.通过该算法完整地识别出疲劳裂纹边缘,但对焊缝边缘和噪点进行了保留,从而难以对裂纹信息进行分离,如图4(a)所示;使用高斯滤波算法对图像进行平滑处理后,再进行自适应阈值分割,识别效果如图4(b)所示,可见效果明显优于对灰度图像直接进行阈值分割,但仍然提取了较多的焊缝边缘信息,仍然难以提取准确的裂纹信息.
图4 自适应阈值分割算法识别效果
通过上述对比,可见基于双边滤波的改进Canny边缘检测算法在背景干扰较大的钢箱梁疲劳裂纹识别中有较好的适应性.
2.2 单目视觉下疲劳裂纹量化试验
2.2.1 平台搭建及图像采集
在保证采集图像清晰的条件下,工业相机、手机后置相机,数码相机均可进行疲劳裂纹图像采集.本实验所选图像采集设备为Redmi K40,后置主摄4 800万像素,搭配IMX582传感器,棋盘标定板置于钢箱梁试件平面上,使用支架将相机固定于棋盘标定板上方,相机距试件平面距离记为Zc,如图5所示.图像采集时使用相机专业模式,闪光灯为开启状态,ISO 为250,快门为1/80 s,光圈为f/1.79.在保证采集棋盘完整性的前提下,改变相机姿态,分别采集15张棋盘标定板图像,同时以该参数采集一张钢箱梁试件疲劳裂纹图像,如图6所示.
图5 图像采集平台
图6 试件疲劳裂纹图像
2.2.2 钢箱梁试件疲劳裂纹识别
采用双边滤波对该钢箱梁试件疲劳裂纹图像进行平滑处理,计算平滑处理后图像的梯度幅值及方向计算,并进行非极大值抑制,再通过双阈值检测及边缘连接.获取的裂纹边缘,由于实验室环境相对于实桥环境较优,噪声点干扰较小.将低阈值设为10,高阈值设为80,提取的边缘特征信息如图7所示.将图像放大,图中仅存在4处离散噪声点,通过形态学腐蚀膨胀操作将裂纹边缘连接为一个连通区域,同时将噪声点进行去除,最终获取的裂纹区域如图8所示.
图7 改进算法提取裂纹边缘
图8 后处理获得的裂纹区域
2.2.3 相机标定及裂纹长度量化
本实验采用张氏标定法进行相机标定,其中部分图像如图9所示,标定物为一块由黑白方块间隔组成的标定板,称为棋盘标定板,相对于复杂的三维物体,平面棋盘标定板数据更容易处理.利用角点提取算法获取其角点像素坐标,通过单应矩阵计算出相机内参数初始值,再使用非线性最小二乘法估计畸变系数,最后使用极大似然估计法优化参数.最终得到的相机内参数fx=760.53,fy=761.04,u0=485.89,v0=338.90,重投影误差为0.47.
图9 张氏标定法获取相机参数
为计算出钢箱梁试件的疲劳裂纹长度,对已识别出的裂纹区域进行特征提取,对裂纹区域进行骨架提取,获得一条单像素的骨架线以及该骨架线的局部放大效果,如图10所示.
图10 疲劳裂纹骨架线及局部放大图
该骨架线为二值化图像,由像素值0 和像素值255两类点组成,通过遍历图像,记录像素值为255的像素点坐标,并将所有点按照横坐标递增的次序进行排序,以骨架线像素点总数的2%的间隔进行抽点,以抽出点有序连接形成的折线长度,近似代替该节段模型疲劳裂纹的长度.
例如此骨架线起点、终点的像素坐标分别为(242,48)、(241,913),Zc取200 mm,使用式(10)将像素坐标系中的点转化为相机坐标系中的点,起点终点坐标分别为(-64.14,-76.45,200.00)、(-64.40,150.87,200.00),其余特征点坐标转化与起终点相同.在相机坐标系下计算裂纹长度并记为识别长度;通过绳测法测量出该疲劳裂纹长度记为真实长度.同时,以钢尺作为参照物,钢箱梁试件疲劳裂纹如图11所示.
图11 钢尺参照下的钢箱梁试件疲劳裂纹
当采集距离过小时,相机视野受限无法采集完整的疲劳裂纹信息;当距离过大时,将拍摄大量干扰信息,也不利于提取裂纹特征信息,从而造成测量精度降低.为控制该方法的测量精度,应将图像采集距离控制在适宜的范围内.通过调节图像采集平台高度,分别以距钢箱梁试件平面220、240、260 mm 的距离对疲劳裂纹进行图像采集,并对裂纹进行识别与计算,测量结果及误差汇总见表1.
表1 不同采集距离识别计算试件裂纹长度
计算结果显示,4次测量中绝对误差最大为4.88 mm,相对误差最大为2.05%.相对误差基本可控制在5%之内,能够满足工程中疲劳裂纹检测的精度要求.
对实桥疲劳裂纹识别与量化时,可能受到钢箱梁内部光线不足、桥梁振动、钢箱梁内部脏污等因素影响,造成所采集的钢箱梁疲劳裂纹图像模糊,从而影响疲劳裂纹识别的准确性;此外,实桥疲劳裂纹图像采集主要依靠人工拍摄,难以对拍摄距离进行定量控制,距离测量误差将对裂纹长度量化直接造成影响.若能采用机械化巡检装置对钢箱梁疲劳裂纹图像进行批量采集,将解决本文方法在实桥应用中的不足.
3 结 论
1)传统Canny边缘检测算法采用高斯滤波平滑处理图像,在钢箱梁疲劳裂纹识别中可抑制噪声和焊缝边缘干扰,但易导致部分疲劳裂纹边缘损失.
2)改进Canny边缘检测算法,以双边滤波平滑取代高斯滤波平滑,相比于传统Canny边缘检测算法,抑制噪声的同时对疲劳裂纹边缘有一定的保护效果,实现了焊缝及噪声干扰下的钢箱梁疲劳裂纹提取.
3)通过单目相机标定,建立了相机成像模型,从而将疲劳裂纹特征点由图像像素坐标映射至三维空间坐标.在试验条件下,疲劳裂纹长度测量误差可控制在5%以内.