张博 刘秀波
中国铁道科学研究院集团有限公司基础设施检测研究所,北京 100081
随着铁路运输系统的快速发展,列车速度、运量、轴重不断增加,钢轨承受的荷载幅值和频率也随之提高,钢轨表面滚动接触疲劳裂纹越来越严重。滚动接触疲劳裂纹会进一步发展为剥落掉块,甚至向钢轨内部扩展最终导致钢轨断裂[1]。因此,快速有效地检测钢轨接触疲劳裂纹对保障铁路的运营安全至关重要。
目前钢轨伤损的主要检测方法有目视、超声、涡流、漏磁、机器视觉等[2-3]。目视法依靠人工目视检查,检查速度慢,效率低,且检测结果易受人工主观因素影响。超声法通过观察超声波在钢轨中的波形、回波、衰减等传播变化来判定钢轨内部是否存在伤损,对钢轨内部裂纹有较好的检测效果,但难以识别钢轨表面和近表面的裂纹[4]。涡流法利用交变磁场在钢轨中产生感应交变电流,当钢轨表面或近表面有缺陷时就会引起涡流畸变,导致检测线圈的阻抗或电压发生变化,但涡流检测效果易受提离变化的影响,要求检测探头与被测钢轨表面的距离保持固定,实现难度大,检测效率较低[5]。漏磁法利用磁感应传感器获取缺陷漏磁场信号,通过该信号来检测钢轨是否存在伤损,但需要对钢轨进行磁化,要求探头和检测面的间隙保持恒定,实现难度大,检测效率较低,且随着检测速度提升漏磁场强度会显著降低,影响检测效果[6-7]。
基于机器视觉的检测方法具有非接触、快速高效等优点[8],相关学者对钢轨表面伤损的机器视觉检测方法开展了研究并提出相应的伤损识别方法。刘泽等[9]设计了动态阈值分割法,通过阈值分割提取钢轨表面伤损区域。贺振东等[10]采用背景建模差分的方法分割出伤损区域。Shang 等[11]采用基于Inception⁃v3结构的卷积神经网络区分正常和有缺陷的钢轨图像。但是这些检测方法大多未对伤损类型进行分别处理,不能判断钢轨伤损类型。因此,本文依据接触疲劳裂纹伤损的视觉表现,提出有针对性的检测方法。
读取采集到的单幅轨道图像后,钢轨接触疲劳裂纹检测的算法流程如下。①提取轨面区域:从读取的轨道图像中提取钢轨顶面区域;②统计梯度方向直方图:将轨面区域划分为若干个单元区域,统计每个单元区域的梯度方向直方图;③检测接触疲劳裂纹:根据梯度方向直方图判断钢轨是否存在接触疲劳裂纹。
现场采集的图片中除了钢轨,还包含了非钢轨区域。非钢轨区域的图像信息对后续的伤损检测会产生干扰,要将钢轨和非钢轨区域区分开,提取出钢轨的轨面区域[12]。
车轮与钢轨顶面长期摩擦使钢轨顶面亮度高,可以利用钢轨顶面和非钢轨区域的亮度差异将钢轨顶面区域分割出来[13-14]。此外,采集图像的相机固定后,钢轨顶面区域的宽度R是固定的[15]。利用上述特征设计轨面区域提取方法。
针对获取的一张轨道图像,首先计算图像每一列的灰度均值m(x),并对其进行加权,得到图像的列加权均值,记作mq(x)。
式中:W(x)为加权函数;WI为图像宽度。
W(x)的表达式为
针对图像的列加权均值,依次计算每个宽度为R的区间的灰度值积分P(x)。
使P(x)取得最大值的x即为钢轨的左侧起始位置GB,与之对应的钢轨右侧位置为GB+R。图1展示了轨面区域提取的效果。输入采集的轨道图像[图1(a)]后计算得到列灰度均值曲线[图1(b)],进而提取出钢轨顶面区域图像[图1(c)]。可以看出,本文提出的算法能够从轨道图像中有效定位钢轨顶面区域。
图1 轨面区域提取
将提取的钢轨顶面区域图像划分为若干个单元区域,每个单元区域包含m×n个像素,其中m和n均为整数。统计每个单元区域的梯度方向直方图,具体步骤如下。
1)计算该单元区域的每个像素点的梯度方向
将两个卷积核(图2)分别与该单元区域的每一个像素点进行卷积,计算该点的梯度值和梯度方向。其中卷积核1 用来计算水平梯度gx,卷积核2 用来计算垂直梯度gy。每个像素点的梯度值梯度方向θ= arctan(gy∕gx),θ∈(-90°,90°]。
图2 计算梯度的卷积核
2)统计该单元区域的梯度方向直方图
将梯度方向范围分成18份,每10°为一组,单元区域的每一个像素点根据梯度方向归入其中一组,例如像素点的梯度方向θ= 45°,则该像素点归为40°~50°这一组。然后将每一组中所有像素点对应的梯度值进行累加,得到18个数值。梯度方向直方图就是由这18个数值组成的数组[h1,h2,…,h18],对应梯度方向的角度依次为-90°~-80°,-80°~-70°,…,80°~90°。这种直方图的表示方法对单个像素灰度值的变化不敏感,减少了光照等对图像的影响。
未受伤损的钢轨表面光洁平整,而有接触疲劳裂纹的钢轨表面有明显特征。接触疲劳裂纹有明显的方向性,裂纹扩展方向与钢轨纵向呈一定角度,一般与列车前进方向一致[16]。表现在钢轨图像上,接触疲劳裂纹所在位置的像素点的梯度方向与钢轨纵向呈一定角度。利用上述特征可以判断每个单元区域是否存在接触疲劳裂纹,具体步骤如下。
1)归一化每个单元区域的梯度方向直方图。对于第i个单元区域,计算该单元区域的梯度方向直方图[h1,h2,…,h18]的和sh,即利用nk=hk∕sh对该单元区域的梯度方向直方图进行梯度方向直方图归一化,得到的[n1,n2,…,n18]即为该单元区域的归一化梯度方向直方图,对应于梯度方向的角度依次为-90°~-80°,-80°~-70°,…,80°~90°。
2)计算每个单元区域的归一化梯度方向直方图在-80°~-10°和10°~80°梯度方向范围内的归一化梯度之和。对于第i个单元区域,该单元区域的归一化梯度方向直方图在-80°~-10°梯度方向范围内的归一化梯度之和,在10°~80°梯度方向范围内的归一化梯度之和
3)将单元区域的两个归一化梯度之和与显著性比例进行比较,判断每个单元区域是否存在接触疲劳裂纹。
提取的钢轨图像[参见图1(c)]中,单元区域A 存在接触疲劳裂纹,单元区域B 不存在接触疲劳裂纹。其归一化梯度方向直方图见图3。可以看出:对于单元区域A,梯度方向在10°~80°内占比较大,计算得到梯度方向在10°~80°内归一化梯度之和为0.606 7;对于单元区域B,梯度方向在每组中的占比大致相同,均在0.05~0.06,计算得到梯度方向在10°~80°内归一化梯度之和为0.385 7。
图3 单元区域的归一化梯度方向直方图
利用上述特征,将每个单元区域的归一化梯度方向直方图在-80°~-10°和10°~80°梯度方向范围内的归一化梯度之和与显著性比例进行比较(显著性比例取0.55)。如果单元区域的归一化梯度方向直方图在-80°~-10°内的归一化梯度之和或在10°~80°内的归一化梯度之和大于显著性比例,则判定该单元区域存在接触疲劳裂纹。
测试试验使用了150幅钢轨接触疲劳裂纹伤损图片,涵盖了若干不同伤损程度。试验环境为:Intel i7⁃3 520 M CPU@2.90 GHz,4 GB 内存,Win10,64 位系统。检测算法性能采用准确率(Acc)指标进行评测,计算公式为
式中:Tp为正确检出的裂纹图像数目;Np为测试数据集给出的裂纹图像数目。
部分检测结果如图4 所示,接触疲劳裂纹处用黑色矩形框出。测试结果显示,检测算法的准确率为97.33%。这表明本文提出的检测算法能够有效检测出钢轨接触疲劳裂纹伤损。
图4 接触疲劳裂纹检测结果(部分)
由于采用梯度方向直方图并且利用了钢轨接触疲劳裂纹的方向性特征,对光照不均等情况具有比较强的鲁棒性。如图4(b)所示的样例2 中,局部光照不均的影响被有效排除。测试样本中有4幅图像未能检出接触疲劳裂纹所在区域。通过对检测样本进行分析,其原因是裂纹比较细微且图像质量较差导致接触疲劳裂纹的梯度方向特性未能凸显出来。
在分析轨道图像和钢轨接触疲劳裂纹视觉特征的基础上,本文提出了基于机器视觉的钢轨接触疲劳裂纹检测方法。该方法首先利用纵向灰度值积分的方法从轨道图像中提取轨面区域,然后利用接触疲劳裂纹的梯度方向特性,通过计算钢轨图像中单元区域的归一化梯度方向直方图实现接触疲劳裂纹检测。试验结果表明,该方法能够有效检测出钢轨接触疲劳裂纹,并能排除光照不均等因素的干扰,对测试样本检测的准确率达到97.33%。与其他检测方法相比,本文方法没有复杂耗时的运算,其实现简单且有针对性,在定位伤损的同时实现了对伤损类型的判断。