轨迹系列2——一种基于中值滤波的轨迹纠偏方法和几点思考
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
1.背景
在无路网的情况下,如何进行轨迹纠偏也是一个很多人在研究的内容,各种方案均有很多,有基于不同滤波算法的,也有基于机器学习的,等等。这里,我探讨一种实现相对简单的基于中值滤波来进行轨迹纠偏的方法。
2.中值滤波简介
中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。
中值滤波法对消除椒盐噪声非常有效,在光学测量条纹图象的相位分析处理方法中有特殊作用,但在条纹中心分析方法中作用不大.中值滤波在图像处理中,常用于保护边缘信息,是经典的平滑噪声的方法。
基于中值滤波对去噪平滑有比较好的效果,这里尝试将中值滤波这种思路用在对轨迹点去噪平滑中。
3.算法设计
3.1初步算法设计
算法基于一定的历史轨迹点,初步设计为:
3.2算法优化
根据历史轨迹的数量,以及轨迹的特征,我们再进行如下的算法优化:
a.加上初始的滤波阈值minRange,最大滤波阈值maxRange,递增累加阈值rangeStep,中值样本数目meanNum,四个参数。这个四个参数的作用是首先根据minRange在历史轨迹中过滤出坐标(x,y)附近的轨迹点,判断轨迹点的数目是否大于meanNum,如果轨迹点的数目大于,则返回由所得轨迹平均出的中值,否则将Range加上rangeStep,再返回初始判断。其跳出条件是,当Range大于maxRange后,则将原点判断为奇点,进行返回。
b.由于中值滤波本身是要对范围点排序,再前后去相同数目后再进行平均,但是考虑到对轨迹点走位过滤再排序效率太低,这里直接将所有范围内点进行平均。
c.如果连续多个点均是奇点,将判断为一条新的路线而不舍弃,否则将奇点舍弃。即增加一个ourRangePointNum参数,多余这个参数的奇点均是正常点,否则舍弃。
3.3优化总结
算法优化的目的是:
a.尽量合理算出中值。
b.对无法取中值的奇点,要判断是正常点还是噪音点,尽量保证轨迹特征点。
c.优化算法效率。
4.算法实现
4.1均值算法
4.2入口调用
5.结果展示
6.几点思考
a.基于历史轨迹的查询通过X和Y来过滤效率偏低,可以通过geohash编码后再进行单个字段匹配会加速历史轨迹的查询。
b.中值滤波的效率、平滑等效果一般,并且过度依赖于历史轨迹数据样本。
c.中值滤波会出现将某些点纠偏过度。
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^