定位器坡度快速算法的探讨

2019-05-23 06:23宋坤骏中国铁路上海局集团有限公司科研所
上海铁道增刊 2019年1期
关键词:定位器坡度线段

宋坤骏 中国铁路上海局集团有限公司科研所

1 引言

铁路轨道上定位装置的主要作用是:使得接触线保持在受电弓滑板的接触范围内,确保受电弓磨耗均匀,并将接触线所产生的水平力传递给腕臂。定位器安装完成后,定位系统、接触网悬挂系统达到力学平衡,接触线处于平直状态,定位器所受的水平力和垂直力静力平衡[1],此时定位器相对于钢轨平面的倾角即为定位器安装坡度。

如果定位器坡度过大,则接触线张力过大,会使得受电弓同接触网的接触力发生突变,甚至造成离线。如果定位器坡度过小,则定位管与定位器之间距离较近,定位器可能与受电弓滑板相撞[2]。因而定位器坡度的合理范围是正切值在1/10~1/5之间[3]。定位器是各种应力和冲击集中的部位,因此是供电部门日常维护的重点。

目前人工检测定位器坡度需要用到激光测量仪,容易出现失误且工作量大,维护成本高。车载动态检测定位器坡度需要用到触针式检测仪,然而该仪器并不能给出定位器坡度的较精确数值[2]。因此开发一种低成本且高精度的定位器坡度测量方法显得很有必要。本文采用的解决方案是采用机器视觉的方法测量定位器坡度值。

2 算法描述

本文在对图像进行定位器检测和坡度计算前先对图像进行一些预处理。所涉及的预处理描述如下:

首先,定位器应当出现在图像上方但不是顶部,且很少有出现在图像下半部分的。为此在图像上方裁剪highcut行像素并舍去,在图像中取第highcut行像素到第lowratio×h行像素为止。其中h为图片的高度,highcut取为20,lowratio取为0.45。霍夫峰值数取为10。

裁剪后的图像随后进行自适应Canny变换,所谓自适应是指Canny变换的阈值是自适应确定的。Canny算法有两个参数,称为敏感度向量,有高低两个阈值。阈值的选择同图像中梯度幅值的最大值有关,Matlab可以自动计算这两个阈值。获取这两个阈值以后,低阈值th(1)乘以一个倍数lowb,例如4,高阈值th(2)乘以另一个倍数highb,例如6,就得到本文采用的阈值,这种阈值选取方式可以令得到的黑白轮廓图中只保留基本的粗线条轮廓而舍弃其他细枝末节的轮廓。最终的敏感度向量按照公式(1)计算:

计算中用到两个阈值的原因如下:高阈值比较严格,求得的边缘很少,认为高阈值的边缘都是有效的。低阈值宽松,求得边缘很多(一般包括了高阈值求到的边缘)。通常希望Canny算子求得的边缘是连续的(最好是封闭的),但高阈值求的边缘一般是断断续续的。断开的地方如果低阈值求得的边缘存在,就用低阈值的边缘替代,以达到让边缘联通的目的。除此之外其它情况下低阈值的边缘是用不到的。

随后在Canny变换得到的黑白图中去除所有面积小于等于55的8连通域,这一步是为了防止背景中一些小的物体的干扰。

本文采用的定位器坡度检测算法主要是Hough变换。Hough变换的优点在于,对于图像中噪声不敏感,直线的间断或延长对直线检测结果没有太大影响。Hough变换的原理是:

通过平面上的一定点的直线族对应参数平面的一条曲线(如果直线参数是斜率k和截距b那么原平面上通过定点的直线族对应参数平面上一条直线。)于是原平面上一条直线上的两点对应的直线族对应的参数平面上的两条曲线会交于参数平面上一点,该点给出的就是通过原平面上两点的直线的参数。

这样一来,只要统计参数平面上各个点通过的曲线数目就可以判断该点是否对应原图中一条直线了。通过参数平面上一点的曲线数越多,说明该参数点越可能代表原空间中一条直线,可以设定一个阈值,认为凡是通过曲线数目大于该阈值的参数点都对应于原平面上一条直线。这样通过统计参数平面上参数符合条件的参数点就可以确定原平面上的各条直线以及直线的数目。

本文中Hough变换角度扫描范围是-900到900,角度扫描步长是0.050,极径的分辨率是0.5个像素,houghpeaks最多探测10个hough变换的峰值,也就是最多检测10条直线。

需要克服的困难在于Hough变换找出的直线有很多条,然而真正代表定位器的直线段只有一条,因此需要附加一些筛选条件将不符合要求的直线段剔除。这里作者引入了如下这些筛选条件:

第一个有助于减少候选直线段的筛选条件如下:首先对应参数落入同一个霍夫直线参数分割小区间内的两条直线段之间间隙小于30个像素的被认为是在同一条直线上,这样的两条线段当成一条线段计数,其次对合并后的线段长度进行筛选,认为只有长度在100像素到250像素之间的线段才是定位器,否则不是。

其次考虑候选线段的倾斜角度和指向,定位器的特征是应该向着内侧倾斜的,由此派生的筛选条件是:定位杆的两个端点P1和P2,如果纵坐标y1<y2,那么必定满足横坐标x1比x2更加靠近图片中线,也就是|x1-w/2|<|x2-w/2|,其中w为图片宽度。

第三个筛选条件利用了定位器所在直线段的颜色特征。先在每条候选线段两个端点上下各膨胀1个像素,从所得的四个顶点利用matlab的roiploy函数生成包含原线段的四边形ROI,只有这个ROI中偏浅色像素数目大于一定数时才认为是定位器。

此外基于定位器坡度的合理范围还有一个角度筛选条件,与图片竖直中线夹角在670到89.50或者-89.50到-670之间的认为是定位器,其余角度则不符合要求。

经过以上对于线段的筛选后如果还有多于5根的候选直线段,那么考虑所有这些直线段靠近内侧的端点同图片竖直中线的水平距离,即该点横坐标x同图片竖直中线横坐标的差值的绝对值|x-w/2|,这个距离越小,说明越可能是定位器,将此距离最小的5根直线段作为保留的5根候选直线段。

最后,为了最终确定定位器所在的直线段,在上述5根候选直线段中选出y坐标最大值最大的一根直线段,即5根直线段中位于最下方的直线段。它就是最终代表定位器的直线段。从霍夫变换的极坐标极角参数不难直接算出该直线段的斜率,根据斜率的正负可以规定定位器水平倾角即坡度的数值。由于钢轨有超高,车体相对钢轨水平面有倾角,因此从图像处理计算出来同水平面倾角不能认为是定位器坡度,还需要加上一个坡度补偿值,这个补偿值是通过车体同钢轨之间的倾角计算出来的。

3 算法效果展示

表1所示为定位器坡度计算表格,表格中第一列为公里标,负数代表上行,正数代表下行,杆号中的S代表上行中“上”的首字母拼音。定位器坡度值为正数代表反定位,反之代表正定位。

表1 定位器坡度计算值结果表格

如图1和图2所示是两幅成功检测到定位器坡度所在直线的示例图片,图2中去除了图片下半部分无用的黑色背景,仅仅保留了图片上半部分中包含定位器的部分。图中红色标出的为定位器所在直线段,该红色直线的水平倾角的正切值取反正切即为定位器坡度(有正负号)。该角度值加上由于钢轨超高导致的补偿值以后就能得到真实的定位器坡度数值。同时在图片文件名中打印出定位器坡度值,有助于直观显示需要的最终坡度结果值。为了示例完整起见,两幅图中显示的定位器坡度一个是正定位,一个是反定位。一个定位器在图中远处,另一个定位器在图中近处,显示出算法对于各种情况均能够成功应对,具有较高的鲁棒性和容错性。

图1 远处反定位定位器坡度计算结果图

图2 近处正定位定位器坡度计算结果图

该算法的实时性较好,在一般的服务器上可以做到图片处理速度为0.1 s每张,对于在近处的定位器,不论正定位还是反定位均能够做到大于96%的定位器识别准确率。远处定位器的识别较不准确,主要是因为定位器在远处的图片包含了很多干扰,导致容易将背景杂物误判为定位器。

4 GUI软件展示

图3 定位器坡度计算GUI软件界面截图

图4 定位器坡度计算GUI软件界面左上角放大图

图3所示为针对衢州市常山县160 km综合检测车项目制作的定位器坡度计算GUI软件界面截图。图4,图5和图6分别为该用户界面的左上角、左下角和右上角放大图。从这些图中可见,界面左侧为上述算法的参数选择框和手动输入框,参数选择下拉框中提供了一组经过调试得出的较为合理的参数取值,而手动输入框中的值如果不为空将会覆盖下拉框中选择的数值。此外参数栏右侧的里程,杆号,定位器坡度测量值和定位器坡度修正值会随着算法遍历图片根目录下一张张图片而实时更新。每次遍历到的图片计算出的结果图会显现在右侧的方框中,上一张图与下一张图间隔的时间约为(0.5~1)s。在起始里程和终止里程中输入遍历过程的起始和终止公里标能够实现算法仅仅遍历这两个公里标区间内的定位器图片。点击开始选择文件按钮会指示用户依次选择图片存放的一级根目录和结果报表CSV文件存放的目录。点击停止运行按钮会使得程序终止运行。由此构成了一个功能完善用户体验良好的GUI软件。

图5 定位器坡度计算GUI软件界面左下角放大图

图6 定位器坡度计算GUI软件界面右上角放大图

猜你喜欢
定位器坡度线段
气动阀门定位器创新应用的探索与实施
画出线段图来比较
压接类定位器压接工艺设备改进方案
Aqueducts
大坡度滑索牵引索失效分析及解决措施研究
怎样画线段图
我们一起数线段
关于场车规程中坡度检验要求的几点思考
数线段
捉迷藏用