4

我正在开发一个应用程序,该应用程序允许用户通过在地图上的手指绘画来选择区域。然后将这些点转换为纬度/经度并上传到服务器。

触摸屏传递的点太多,无法通过 3G 上传。即使是小区域也可以累积高达 500 分。

我想平滑这个触摸数据(在一定的公差范围内近似)。只要该区域的总体面积相同,绘图的准确性并不重要。

有没有众所周知的算法可以做到这一点?这适用于卡尔曼滤波器吗?

4

4 回答 4

6

Ramer-Douglas-Peucker 算法(维基百科)。

该算法的目的是,给定一条由线段组成的曲线,找到一条点数较少的相似曲线。该算法根据原始曲线和简化曲线之间的最大距离定义“不相似”。简化曲线由定义原始曲线的点的子集组成。

在此处输入图像描述

于 2011-05-21T02:18:04.130 回答
1

您可能不需要任何太奇特的东西来显着减少您的数据。考虑这样简单的事情:

构建某种错误度量。一个简单的方法是从省略的点到近似它们的线的距离的归一化总和。确定使用此指标的可容忍错误是多少。

然后从第一个点开始构造落在可容忍误差范围内的最长线段。重复此过程,直到将整个路径转换为多段线。

这不会为您提供全局最优近似值,但它可能已经足够好了。

如果您希望近似值更“曲线”,您可以考虑使用样条曲线或贝塞尔曲线而不是直线段。

于 2011-05-20T21:54:24.403 回答
1

您想将曲面细分为具有四叉树或空间填充曲线的网格。sfc 将 2d 复杂度降低到 1d 复杂度。您想查找 Nick 的希尔伯特曲线四叉树空间索引博客。

于 2011-05-22T18:01:03.580 回答
0

我打算在应用程序中执行此操作,但打算从动态点生成路径。我打算使用这个点序列插值线程中提到的技术

于 2011-05-22T17:53:06.360 回答