【问题标题】:Algorithms to normalize finger touch data (reduce the number of points)标准化手指触摸数据的算法(减少点数)
【发布时间】:2011-05-20 21:06:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: algorithm ios geometry signal-processing polyline


    【解决方案1】:

    Ramer–Douglas–Peucker algorithm(维基百科)。

    算法的目的是,给定 由线段组成的曲线, 找到一条相似的曲线更少 点。该算法定义 基于最大值的“不同” 原始曲线之间的距离 和简化曲线。这 简化曲线由一个子集组成 定义的点 原始曲线。

    【讨论】:

    • 我见过一些绘画应用程序使用类似的方法,但它会减少点我觉得它有时会从我实际绘制它们的位置移动线条。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 我做了一些与这种方法非常相似的事情(现在才发现它描述了),尽管我正在构建其他东西 - 手指书写识别。它工作得很好 - 玩弄公差数字。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        • 2021-12-18
        • 1970-01-01
        • 2019-06-26
        • 2020-07-28
        • 2012-09-03
        • 1970-01-01
        相关资源
        最近更新 更多