轨迹系列——一种基于中值滤波的轨迹纠偏方法和几点思考

简介: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/1.背景在无路网的情况下,如何进行轨迹纠偏也是一个很多人在研究的内容,各种方案均有很多,有基于不同滤波算法的,也有基于机器学习的,等等。

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处: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/

                                                                                 如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                                                                                                     

 

目录
相关文章
|
机器学习/深度学习 存储 监控
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
|
网络协议 数据安全/隐私保护 Windows
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
|
XML 存储 开发工具
|
Python
ROS节点检测ArUco标签并记录空间坐标
利用Realsense D435i相机检测ArUco标签,使用Python程序订阅相机的ROS话题,记录Time和标签的XYZ值,储存在一个csv文件中;当出现识别不到标签或者反馈坐标为0,0,0的情况时,不进行记录。
612 0
|
1月前
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
118 12
|
计算机视觉
【目标跟踪】卡尔曼滤波器(Kalman Filter) 含源码
【目标跟踪】卡尔曼滤波器(Kalman Filter) 含源码
630 0
Vue2滑动输入条(Slider)
这是一个基于 Vue3 的滑动输入条(Slider)组件,提供了丰富的自定义选项,如最小值、最大值、初始值、宽度、禁用状态及双滑块模式等。用户可通过拖动滑块或点击输入条调整数值。代码示例展示了如何创建组件及在页面中引入使用。包含单滑块与双滑块模式的效果图。
385 2
Vue2滑动输入条(Slider)
|
11月前
|
SQL Oracle 关系型数据库
Python连接Oracle
Python连接Oracle
133 0
|
SQL 关系型数据库 MySQL
[clickhouse]同步MySQL
[clickhouse]同步MySQL
367 0
|
自然语言处理 搜索推荐 Java
计算文本相似度的几种方法
计算文本相似度的几种方法