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

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

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

                                                                                                                     

 

时间: 2024-07-30 02:35:24

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

轨迹系列——一种基于路网图层的GPS轨迹优化方案

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 GPS数据正常情况下有20M左右的偏移,在遇到高楼和桥梁等情况下偏移会更大.本方案讨论基于路网图层如何来进行轨迹优化. 2.数据预处理 整套数据预处理围绕拓扑检查.节点打断来进行,具体步骤为: a.新建数据集. b.导入道路图层. c.新建拓扑规则. d.进行拓扑操作. e.导出处理后的数据.     3.匹配算法设计                    

cuda c-CUDA-GPU加速-中值滤波-黑屏+显卡程序崩溃

问题描述 CUDA-GPU加速-中值滤波-黑屏+显卡程序崩溃 新手刚接触CUDA C,这段中值滤波的代码一直跑不通,如果读取一张小图片(2790,2560)没有问题,如果读取一张大图片(5580,5120),就会导致黑屏+没有结果. 我的显卡是NVIDIA Geforce 820M #include <iostream> #include "ImMedFilter.h" #define DIM_GRID 128 #define DIM_BLOCK 16 using name

图片-初学小女子求问一个关于矩阵,中值滤波题目

问题描述 初学小女子求问一个关于矩阵,中值滤波题目 目前用的是VS2010,所以希望是C语言~多谢喇 望各方大神快快冒泡,解小女子一惑o(^▽^)o 解决方案 不是告诉你算法了么?就是用某个点周围8个点按照第二个矩阵的泉重求平均数,作为滤波后的值. 解决方案二: 打个比方,第二排第二个元素158,滤波以后等于多少呢? 我们看它和它四周的9个元素,是不是 160 163 167 159 158 155 153 155 157 和Mask每一项相乘相加再除以16 等于 (160*1+163*2+16

vc++-VC++MFC工程做自适应中值滤波

问题描述 VC++MFC工程做自适应中值滤波 求完整的自适应中值滤波程序,要求有源程序,可执行程序.之前在网上找的都不太好模仿,希望直接在view里做,不要各种引申函数,就在一个大括号里做完的.拜托拜托!!急啊! 解决方案 恕我直言题主,您的第二张图片中的代码完全看不清楚 解决方案二: CXXXXXDoc* pDoc = GetDocument(); int iH,iW; LPSTR lpDIB; LPSTR lpDIBBits; lpDIB = (LPSTR) ::GlobalLock((HG

图像处理(三)彩图的中值滤波与cuda形式

灰度图像为一通道图像,如8位的灰度图的每一个像素点的数据由一个uchar类型来储存,uchar的值代表图像的亮度,灰度图像的中值滤波是根据像素值的3×3的领域内,像素值排序后的中值像素代表该点的像素值值: 而彩色图像一般为RGB图片,像素点的颜色由红绿蓝三通道决定,数据由一个uchar3型存储,如同灰度图的中值滤波一样,彩色图像的中值滤波也是根据图像的亮度来选取相应的像素点的值. RGB图像的亮度计算: F(x,y)=(R(x,y)+G(x,y)+B(x,y))/3 F(X,Y)是处理后该点的亮

一种基于粒子群优化的虚拟资源分配方法

一种基于粒子群优化的虚拟资源分配方法 周相兵 针对云计算环境下存在虚拟化资源利用率不高.延迟.性能衰减等问题,提出一种基于粒子群的虚拟资源分配优化方法.根据云计算优势,对虚拟化资源进行描述及状态定义,分析了虚拟环境下的服务质量(quality of services,QoS)组成和计算方法;同时通过用户与云提供商收益最大化的平衡关系,建立一种虚拟化操作方法,以确保虚拟化资源被合理分配和回收;采用粒子群算法使用户和虚拟服务提供方都能趋于收益平衡.在此基础上设计的一款云播放器与直接嵌入到Web播放器

中值滤波-利用中值空间滤波去除波形噪声

问题描述 利用中值空间滤波去除波形噪声 我们做的大作业,要求改进算子,去除波形噪声,我不知道从哪改,也不知道波形噪声是什么吗,百度不到,算子是在源码改么 有人有代码么

中值滤波c = box1.GetPixel(i + k1, j + k2),参数必须为正且小于高度!求大神指点!

问题描述 privatevoidbutton3_Click(objectsender,EventArgse){Colorc=newColor();Colorcc=newColor();Bitmapbox1=newBitmap(pictureBox1.Image);Bitmapbox2=newBitmap(200,200,System.Drawing.Imaging.PixelFormat.Format24bppRgb);intrr,r1,g1,b1,i1,j1,k1,k2,dm,m;int[]d

一种基于记录集查找特定行的方法

记录集 问:我的一个表中包含了名为IdValue的单列主键.对于给定的IdValue值,我希望找到紧邻目标值之前和之后的表行(假定结果按IdValue排序).怎样才能不使用游标而通过一个基于集合的方法得到需要的结果? 答:Transact-SQL是一个基于集合的语言,使用它在结果集中定位特定的行并非一件易事.但是,服务器端ANSI Transact-SQL游标的性能远远不如基于集合的解决方案,因此,学习解决问题的多种技术非常重要,尤其在面临上述问题时. 以Northwind数据库中的Orders