APP下载

基于改进LSD 直线检测算法的钢轨表面边界提取

2021-07-27曹义亲刘龙标

华东交通大学学报 2021年3期
关键词:钢轨梯度滤波

曹义亲,何 恬,刘龙标

(华东交通大学软件学院,江西 南昌 330013)

在钢轨表面缺陷检测时,采集到的全景轨道图像包含大量碎石、道砟等信息[1],如果对整幅全景图像进行处理,必然会降低后续缺陷识别与提取的性能;因此对钢轨表面区域进行精准、快速地识别与提取尤为重要[2-3]。 钢轨表面区域提取离不开钢轨两侧边缘的准确识别。

可将钢轨表面两侧边界看作2 条直线进行直线检测。 Hough 变换是经典的直线检测算法[4],该算法鲁棒性较好,但检测精度不高[5],易产生误检,算法只能处理二值图像且耗时较长。 针对上述不足,Xu 等[6]提出一种随机霍夫变换算法(random Hough transform,RHT),但由于随机采样,对于复杂图像会存在大量无效采样。 朱正伟等[7]提出一种改进的RHT 算法,加快了RHT 算法速度,但算法结果易受拟合窗口大小影响。 刁燕等[8]提出一种改进的概率霍夫变换,虽能减少内存,提高算法效率,但易检测出重叠直线。Radon 变换也可用于直线检测,处理非二值图像,且其性能优于传统Hough 算法[9],在提取直线特征时,具有很强的抗噪能力,但在检测线段时,不能识别起始与结束位置。彭凯飞等[10]提出一种结合二分查找法的Radon 直线检测算法,大大降低了传统Radon 检测运行时间,但在检测夹角较小的直线时容易出现误检。 文献[11]提出一种直线检测分割算法(line segment detector, LSD),算法运行时间短,在准确性与精确度方面较其他算法有较大提升,由于LSD 算法第一步只通过简单设置阈值的方法剔除小像素点,容易造成边缘处细节丢失。 文献[12]结合LSD 算法和K-均值聚类,得到车道直线检测结果,虽在复杂环境下能提取出车道,但在车道不连续时,识别效果不佳。孙俊锋等[13]将局部对比度引入LSD 算法,提高了局部光照不均情况下直线检测算法的稳健性,但效率不高。游江等[14]在传统LSD算法基础上增加了对于候选区域边缘包含像素点数的筛选,能去除伪边缘,提高算法检测性能,不足是容易产生过度分割。 王旭[15]将Edge-Drawing 算法与LSD 算法结合,在进行LSD 算法提取直线前,先利用Edge-Drawing 算法提取边缘图,提高了轮廓的完整性,由于Edge-Drawing 算法较为耗时,改进后的LSD 算法效率不高。

针对LSD 直线检测算法不足,提出一种在边缘图像基础上进行直线拟合的钢轨表面边界直线提取算法。 采用双边滤波代替Canny 边缘检测中的高斯滤波对图像进行边缘提取,将提取出的边缘图像作为LSD 算法的输入进行钢轨边界直线检测。

1 相关算法

1.1 Canny 边缘检测

Canny 边缘检测由Canny[16]在1968 年提出,并建立了边缘最优化提取的三大准则[17-18],是图像边缘检测算法中经典且流行的算法之一, 传统Canny算法分为以下4 步。

1) 图像去噪:对输入图像进行高斯滤波,以滤除图像噪声。 高斯滤波原理如下

式中:σ 为控制滤波程度参数; f(x,y)为原图像;F(x,y)是去噪后新图像。

2) 计算图像像素梯度:利用Sober 算子获得图像像素梯度的幅值M 和方向θ,得到可能的边缘集合

3) 非极大值抑制:抑制梯度小的像素点,保留最大梯度,细化边缘。

4) 双阈值检测:通过设置高阈值和低阈值进行双阈值筛选,进一步处理所得边缘,让边缘更好地闭合,减少断续。

1.2 LSD 直线提取算法

LSD 算法由Grompone 等[19]2010 年在结合Burns所提算法基础上提出,该算法结合图像梯度和方向信息提取直线,主要包括3 部分。

1) 生成直线支持区域: 通过计算每个像素点的梯度,生成对应梯度场,将在一定阈值内且具有相同梯度的像素相连成为直线支持区域,如图1所示。

图1 LSD 算法梯度场和直线支持域Fig.1 Gradient field and line support field of LSD algorithm

2) 直线支持区域的矩形拟合:对于每个直线支持区域我们可以观察它的最小外接矩形,矩形的主轴表示直线支持域的主轴方向,且矩形要覆盖整个区域,该最小外接矩形表示直线信息,如图2 所示。

图2 直线支持域矩形拟合Fig.2 Line support domain rectangle fitting

3) 直线确认:每个拟合的矩形都需要对应一个直线确认步骤, 根据Helmholtz 原则对拟合矩形进行判断[20],验证该矩形区域是否可以作为直线提取。Helmholtz 原则通过与一个假设的独立分布值为[0,2π]的噪声图相比较,判断是否为直线。在一个分辨率为m×n 的图像中,可能出现(nm)5/2种直线支持域,直线支持域中像素总数为n,k 为与拟合矩形同方向的像素总数,δ 为一个确定的精度, 直线区域的错误报警数QNFA定义如下

ε 为判定阈值,如果QNFA小于ε,则该直线支持域为直线,原算法中ε 取1 得到了较好效果,本文也取1。

2 本文算法

2.1 基于Canny 提取边缘图像的LSD 直线检测算法

LSD 直线检测算法在提取输入图像的梯度模值图和方向图的基础上搜索直线支持区域,单纯通过阈值的筛选,剔除梯度值较小的像素点,从而进行直线支持区域搜索, 该方法需多次比较像素梯度,且容易丢失细小边缘;因此,采用Canny 算法先进行边缘图像提取,在边缘图像上搜索直线支持区域,提高算法效率,同时可以有效保护图像细节信息。 为此,提出基于Canny 提取边缘图像的LSD 直线检测算法(Canny combined with LSD, CLSD)。

CLSD 算法流程图如图3 所示。

图3 算法流程图Fig.3 Algorithm flow chart

2.2 双边滤波改进Canny 算法

图像边缘检测算法第一步通常都为滤波操作,以减少噪声影响。 传统Canny 边缘检测算法采用高斯线性滤波,在去除噪声的同时,会模糊图像边缘,对边缘提取产生不利影响[21];因此采用双边滤波,尽可能完整提取图像边缘。

双边滤波是一种非线性滤波,可以在降低噪声的同时保护边缘信息[22-23]。 双边滤波同时考虑了图像像素值域差异与空间域信息[24]。 在图像的平面区域,像素变化范围小,对应值域权重约为1,相当于对输入图像做高斯模糊,此时主要由空间域权重起作用;在边缘区域,像素变化范围大,值域权重变大,可以保持输入图像的边缘信息。

设Iq为输入图像,Ip为输出图像,p 为目标像素,q 为任意像素,σr表示值域标准差,σs表示空间域标准差,用Gr表示值域信息,Gs表示空域信息,则

式中:Wq为窗口内值域权重和,用于权重归一化。

2.3 双边滤波改进Canny 提取边缘图像的LSD直线检测算法

基于双边滤波改进Canny 提取边缘图像的LSD 直线检测算法(bilateral filter to improve Canny combined with LSD, BFCLSD), 在基于Canny 提取边缘图像的LSD 直线检测算法的基础上,用双边滤波代替原Canny 边缘检测的高斯滤波,得到图像的边缘图,将边缘图像和像素梯度方向图作为LSD 直线检测算法的输入进行直线提取。

BFCLSD 算法步骤如下。

1) 将彩色图像转为灰度图像。

2) 双边滤波代替传统Canny 算法中的高斯滤波,得到结构较好的边缘图像[25],将该边缘图像作为输入图像。

3) 对输入图像进行高斯核采样,为避免图像出现锯齿效应,缩放尺度取0.8。

4) 计算每个像素梯度方向的梯度值,水平方向梯度为gx,垂直方向梯度为gy。

式中:像素(x,y)的灰度值为i(x,y);梯度方向为θ;梯度模值为G(x,y)。

5) 对所有梯度值进行[0,1 023]排序,简单分为1 024 个等级, 将梯度值最大的点作为种子结点往下搜索,直到遍历完整幅图像。

6) 小梯度值抑制,梯度值小于ρ 的像素将被拒绝归入后续直线支持域中,直接设置为已使用。

式中:e 为梯度量化过程中出现的误差边界, 设定为2;τ 为后续算法中出现的角度容忍度。

7) 选择一个像素作为种子节点, 将其作为起点,在阈值为[-τ,τ]内的点中进行区域搜索,每扩散一个像素,就将该像素状态设置为已使用,直至生成直线支持区域。 图4(a)是原图像,图4(b)~图4(d)分别是τ 取11.5°,22.5°,45°时的实验效果。

图4 从顶部中间像素开始的3 个角度容忍度实验结果Fig.4 Experimental results of three angle tolerances starting from the top middle pixel

图4 显示角度容忍度τ 设置为22.5°,实验效果更好,本算法τ 取22.5°。

8) 矩形拟合,上一步形成的直线支持区域为一系列离散点,需要将直线支持域包含在一个矩形框R 内,R 为包含直线支持域的最小矩形,矩形R 的方向就为直线支持域的主方向,矩形的中心(Gx,Gy)。

式中:G(j)是像素j 的梯度幅值;j 用于遍历矩形区域内的所有像素。

9) 计算QNFA,确认直线,如式(7),式(8)。

3 基于改进LSD 直线检测算法的钢轨表面边界提取

为验证基于双边滤波改进Canny 提取边缘图像的LSD 直线检测算法的有效性,将其应用到轨道图像的轨面区域提取中,对钢轨表面两侧边缘直线进行提取,检验其实际应用效果。

采用MATLAB R2018a 软件编程,在Win10 操作系统环境下进行实验。 对LSD 直线提取算法、文献[15]算法、CLSD 和BFCLSD 算法进行仿真实验对比,实验图像选取采集到的两类图像,第一类图像为正常钢轨全景图像,第二类图像为生锈钢轨全景图像。

3.1 主观评价

对正常钢轨全景图像图5(a)分别进行LSD 算法直线提取、文献[15]算法直线提取、CLSD 算法直线提取和BFCLSD 算法直线提取,为便于观察,提取出的直线用红色标出。 实验结果如图5(b)~图5(e)所示。

原图像直接进行LSD 直线检测,所得结果如图5(b),钢轨表面两侧边缘已大致识别出来,但对于右侧钢轨表面上方由于光照不匀产生的阴影边缘,也当作直线识别出来,这样容易造成最终钢轨边缘识别不准确;图5(c)为文献[15]中LSD 算法与Edge-Drawing 算法结合后的提取结果,钢轨两侧直线提取较为完整,但碎石边缘的检测比钢轨主体的检测效果更好, 没有突出钢轨主体直线检测效果;图5(d)为CLSD 提取结果,可以看到该算法相比于LSD 算法对于钢轨边缘直线提取更加连续,直线提取效果较好,不足的是该算法对于图像的降噪效果不佳,可以看到轨面产生较多噪点;图5(e)为BFCLSD 算法直线提取结果, 钢轨表面两侧边缘已基本识别出来,且直线较连续,轨面也无其它误检,碎石、轨枕及扣件部分被检测为直线的概率远小于以上3 种算法,整体来说检测效果较好。

图5 不同算法对正常钢轨全景图像直线检测Fig.5 Linear detection of normal rail panoramic image by different algorithms

分别采用LSD 算法、文献[15]算法、CLSD 算法及BFCLSD 算法对生锈钢轨全景图像图6(a)进行直线检测,结果如图6(b)~图6(e)所示,检测出的线段用红色标出。

图6 不同算法对锈迹钢轨全景图像直线检测Fig.6 Linear detection of rusted rail panoramic image by different algorithms

图6(b)为传统LSD 直线检测算法提取的线段,提取结果显示检测出的线段短而密集, 而且较粗,直线提取结果不准确;图6(c)为文献[15]算法提取结果,可以看出对于碎石和扣件的误检程度明显比LSD 算法低,但对于钢轨两侧识别效果较差;图6(d)为CLSD 提取结果,在钢轨轨面区域,产生很多噪点,对于碎石和扣件部分的误检程度明显高于文献[15]算法;图6(e)为BFCLSD 算法实验结果,对于碎石、扣件等无关区域的提取程度比以上3 种算法低,说明误检程度低,提取出的直线段较细,说明直线提取较精确,不足是虽然钢轨表面右侧边缘提取较前两种算法好,但左侧边缘直线提取改进效果不大。 综合图6 实验结果, 对于灰度较低的生锈钢轨两侧边缘的提取,BFCLSD 算法效果最优, 但4 种算法实验效果均有待提高,尤其对于钢轨左侧边缘这种灰度变化缓慢的边缘。

3.2 客观评价

为客观评价BFCLSD 算法有效性,将原图转换为灰度图,采用峰值信噪比(PSNR)和均方差(MSE)2 个常用的图像客观评价指标对LSD 算法、 文献[15]算法、CLSD 算法和BFCLSD 算法提取直线后的结果图像进行比较。

峰值信噪比(PSNR)是使用最广泛的一种图像客观评价指标,PSNR 值越大表示图像失真越小,直线提取结果图像整体质量越好。 均方差(MSE)表示结果图像与原图像之间的均方误差,MSE 值越小,说明结果图像与原图像在边缘结构上越相似。

对图7(a)和图8(a)分别用LSD 算法、文献[15]算法、CLSD 算法和BFCLSD 算法进行直线提取,提取结果如图7(b)~图7(e)、图8(b)~图8(e)所示。图7(b),图8(b)分别为传统LSD 算法进行直线检测后的二值图像,图7(c),图8(c)分别为文献[15]算法直线检测结果,图7(d),图8(d)分别为CLSD 算法直线检测结果,图7(e),图8(e)分别为BFCLSD算法直线检测结果。

图7 不同算法对正常钢轨全景图像直线提取结果Fig.7 Linear extraction results of panoramic image of normal rail with different algorithms

图8 不同算法对锈迹钢轨全景图像直线提取结果Fig.8 Linear extraction results of rusted rail panoramic image by different algorithms

分别计算两类图像经LSD 算法、文献[15] 算法、CLSD 算法、BFCLSD 算法直线提取后图像相应的PSNR 值和MSE 值取平均值,所得结果如表1 所示。

表1 不同算法客观评价结果Tab.1 Objective evaluation results of different algorithms

从表1 可看出,第一类图像(正常钢轨全景图像)经BFCLSD 算法实验过后的平均峰值信噪比较传统LSD 算法提升了6.49%,第二类图像(锈迹钢轨全景图像)经BFCLSD 算法实验过后的平均峰值信噪比较传统LSD 算法提升了13.58%,BFCLSD 算法实验后两类实验图像的直线提取结果图的平均峰值信噪比在4 种算法中均最大,说明该算法直线提取后的结果图失真最小,图像质量较高;BFCLSD算法实验结果图的平均均方差最小,说明还原度较另外3 种算法都有较大提升,符合原图像的直线轨迹,实验结果较好。

因此,经仿真实验并结合主客观评价,本文提出的基于双边滤波改进Canny 算法提取边缘图的LSD 直线检测算法能较准确地提取钢轨表面边缘直线, 有效减轻后续轨道表面缺陷检测工作量,对钢轨表面缺陷检测研究具有一定的实用价值。

4 结论

为更准确地提取钢轨表面区域,提出一种基于双边滤波改进Canny 算法提取边缘图的LSD 直线检测算法并应用到轨面边缘直线提取中,仿真实验结合主观和客观评价表明:

1) 新算法对提取轨道图像中钢轨表面边缘直线较相关算法有较好的效果提升,为后续钢轨表面区域提取以及钢轨表面缺陷的检测、识别和分类奠定了基础,具有一定的实际意义。

2) 实验过程发现,对于灰度较低的图像和直线边缘灰度变化缓慢区域, 直线检测算法效果不佳。在后续研究中将对低灰度图像中的直线检测与提取作进一步研究。

猜你喜欢

钢轨梯度滤波
基于HP滤波与ARIMA-GARCH模型的柱塞泵泄漏量预测
基于改进自适应中值滤波的图像降噪方法*
基于应变梯度的微尺度金属塑性行为研究
钢轨预打磨在地铁线路中的运用相关阐述
一种考虑GPS信号中断的导航滤波算法
一个具梯度项的p-Laplace 方程弱解的存在性
内容、形式与表达——有梯度的语言教学策略研究
航磁梯度数据实测与计算对比研究
火车道上为什么铺碎石
两种钢轨表面伤损在线整修技术方案的对比探讨