张天龙,许贵阳
(1.北京建筑大学机电与车辆工程学院,北京100044;2.北京建筑大学城市轨道交通车辆服役性能保障北京市重点实验室,北京100044)
轨枕的工作状态对铁路行车安全有着重要影响。对于轨枕的日常检查工作主要采用传统的人工巡检方式[1],该方式效率低、危险系数高,不能满足我国轨道交通的发展需求[2]。为了提高铁路基础设施日常检测效率,基于计算机与人工智能技术的发展背景,采用铁路轨枕状态的自动检测方式代替人工巡检方式,在铁路安全巡检自动化检测中具有重要的应用价值。
国内外学者针对铁路轨枕定位进行了大量研究,目前通过计算机视觉技术和图像处理技术来实现。朱洪涛等[3]利用电涡流式接近开关的方法来实现轨枕定位,但该方法可能因轨道扣件的缺失或断裂无法识别出轨枕,且轨道上任何金属杂物超过一定范围,传感器都会产生开关信号,从而误识别为轨枕,识别效果不佳。雷华堂[4]利用粗糙神经网络对轨枕状态进行检测,但在实际情况中铁路环境复杂多变,对纹理特征的精确选取较为困难,检测效果不佳。谭伟[5]采用一维方波卷积的方法,对图像的垂直边缘进行检测来确定轨枕的位置,但该方法会因为梯度不明显而造成定位不精确。
针对目前铁路轨枕定位方法的不足,为了快速、准确地定位铁路轨枕,为铁路轨枕状态检测提供可靠的、高精度的轨枕图像,本文提出基于改进Sobel 算子的铁路轨枕自动定位方法。
Sobel 算子是一种基于图像强度的一阶导数的离散型差分算子,用来计算图像亮度函数的灰度近似值,通常用于边缘检测。传统的Sobel 算子是利用0°(水平方向)和90°(垂直方向)2 个方向的边缘检测模板与图像作平面卷积,通过计算图像的一阶导数得到图像的边缘点像素值。传统Sobel 算子0°和90°的边缘检测卷积模板S0°和S90°[6]分别为
假设连续的图像函数为U(x,y),其在(x,y)处的梯度是一个具有方向和大小的矢量,即
式中:i,j分别是x,y方向的单位矢量。
U(x,y)在(x,y)处的梯度幅值和方向分别为
传统 Sobel 算法流程为[7]:①将 2 个方向的模板分别与轨道图像矩阵作离散卷积;②选取卷积较大的值取代图像中模板中心位置的像素值,作为该像素新的灰度值;③取合适的阈值T,若新灰度值大于等于T,则认为该像素点为边缘点。
传统的Sobel 边缘检测算法原理易懂、计算简便、运行时间短,但该方法可能因像素间隔较大而误判其差分值为边界点,且没有对噪声数据进行过滤和判断,此外该算法只能检测0°(水平)和90°(垂直)2个方向上的边缘,对轨枕其他方向的边缘检测不敏感,边缘检测效果欠佳。
1.2.1 Sobel算子模板的改进
为了获得较完整的图像边缘,改进的Sobel 算子重新构造出一种8方向边缘检测模板[8],分别是0°,45°,90°,135°,180°,225°,270°,315°方向模板,即
模板中每一点到中心点的距离和该点在模板中所在的方向决定着该点的权重,距离相等的点具有相同的权重。改进Sobel算子边缘检测的8个方向如图1所示。
图1 改进Sobel算子边缘检测的8个方向
改进的Sobel 算子重新调整了原有水平和垂直方向梯度的权重,并提高了对角线方向梯度的权重,使得该算法对边缘特征的提取更加准确。
1.2.2 改进Sobel算子最佳阈值的选取
改进的Sobel 算子由原来的水平和垂直2 个方向模板增加到8 个方向模板,从而可以获得更加完整的边缘信息。但是与传统Sobel 算子一样,对于一些叠加了噪声图像的边缘检测信息,改进的Sobel 算子效果欠佳,即抗噪能力仍然较差。针对以上不足,本文通过设定阈值的方法来改善。Sobel 算子检测的边缘值与设定的阈值T进行比较,若幅值大于阈值T,则将该点定义为边缘,若幅值小于阈值T,则为0,即该点函数g(j,k)为
式中:A为边缘点的像素值,0<A≤255;fi(j,k)为经过模板卷积法边缘检测的输出结果。
道砟和轨枕的灰度值相近,且容易受到噪声的干扰,因此,阈值T的选取在轨枕的边缘检测中尤为重要。若选取的阈值偏低,将会保留较多的噪声点,边缘检测效果欠佳;若选取的阈值偏高,则会丢失部分灰度值较小的边缘,导致图像边缘不完整。针对铁路轨枕图像,采用8 方向Sobel 算子边缘检测后,利用最大后验概率估计的方法,对检测后的图像进行最佳阈值分割处理,增强算法的抗噪声能力。
用zl(m,n)来表示经过Sobel 算子检测后的图像,假设
式中:xl(m,n)为原始图像的边缘部分;yl(m,n)为高斯白噪声,其均值为0,方差为
检测出的边缘图像xl(m,n)是服从拉普拉斯分布的高频分量,其概率密度函数p(a)为
式中:a为经过改进Sobel 边缘检测后图像的高频分量;σx为xl(m,n)的标准差。
基于式(5)得出的信号模型,可以推导出xl(m,n)的最大后验概率估计为
其中,T0为最佳阈值,表达式为
可以看出,式(7)和式(8)给出的边缘估计的特点是:当图像边缘的幅值大于阈值时,将二者的差值作为边缘估计值,因此,具有更强的去噪功能。
为了由式(7)获得边缘信号的最佳估计值,需要确定T0的值,因此要分别估计出σx和σyl的值。
假定图像大小为N×N,用中值法估计σyl的值为
其中median[·]表示取中值的运算。定义
将式(9)、式(12)给出的和σyl的估计值代入式(7),可得阈值T0,即最佳阈值。
相比于传统Sobel 算法,上述方法的最大优点是能有效地去除噪声,尽可能地保留了图像的真实边缘,达到了一种更好的边缘检测效果。
基于改进Sobel 算子的边缘检测方法主要步骤为[7]:①将改进的8 个方向模板分别与轨道图像矩阵作离散卷积;②采用卷积运算结果最大值作为新的灰度值来代替原像素点的灰度值;③利用边缘的最大后验概率估计法,选取最佳阈值T0,对新的灰度图像进行二值化处理,得到一幅二值化图像。
针对轨道图像,分别用传统的Sobel 算子、8 方向Sobel 算子和采用最佳阈值的Sobel 算子3 种方法,在实际的环境下进行边缘检测,效果见图2。可知本文采用改进的Sobel 算子在检测轨道图像边缘信息时较其他算子效果更好。
图2 不同方法边缘检测效果
投影法是将图像的像素沿着水平和垂直方向进行灰度投影,统计出在所有点上的数值大小,并以线性图的方式显示的一种方法。将经过改进Sobel 算子边缘检测后的图像进行灰度值投影,从而确定轨枕的上下和左右边界的具体位置,然后根据先验信息即可确定轨枕的位置。具体方法如下。
首先将经过改进Sobel 算子边缘检测后的图像进行水平灰度投影,有阶跃性的灰度值变化的位置即为轨枕的边界区域,可知图3 中位于20~62 像素之间的即为轨枕的上下边界位置。然后将图像顺时针旋转90°,同样对旋转后的图像作水平灰度投影,可知图4中位于60~518 像素之间的即为轨枕的左右边界位置。根据灰度图像投影,即可获得轨枕宽度的像素宽度为42,轨枕长度的像素宽度为458。为了准确定位轨枕,根据灰度图像的边缘检测结果,将轨枕图像统一设置为45×460像素,然后进行区域截取。根据先验信息即可精确定位轨枕[9]。定位结果如图5所示。
图3 水平灰度投影
图4 旋转90°水平灰度投影
图5 定位轨枕
为了检验上述方法对轨枕定位的准确性,对采集的多张图像进行试验检测。采用MATLAB2014b 软件编程,将采集的50 张图像通过改进的Sobel 算子进行定位检测,具体流程如图6所示,最后均检测成功。轨枕定位结果对后续的轨枕和扣件状态检测工作起到重要作用,准确的定位结果可减轻后续工作量。
图6 具体试验流程
针对传统Sobel 算子在铁路轨枕边缘检测中存在的缺陷与不足,本文提出一种基于改进Sobel 算子的轨枕精确定位方法。在传统Sobel 算子具有水平和垂直2 个方向模板的基础上增加至8 个方向模板,提高边缘的检测精度,并且采用最大后验概率估计的方法选取最佳阈值,进行二值化处理,增强算法的抗噪声能力,然后将处理后的图像进行灰度投影,实现轨枕精确定位。试验结果表明,该方法能快速、准确地定位轨枕,为铁路轨枕状态检测提供可靠的、高精度的轨枕图像。