【问题标题】:Two Dimensional Curve Approximation二维曲线逼近
【发布时间】:2012-02-02 11:34:11
【问题描述】:

这是我想做的(最好是使用 Matlab):

基本上,我有几条汽车在十字路口行驶的痕迹。每个都是嘈杂的,所以我想取所有测量的平均值,以获得更好的真实路线近似值。换句话说,我正在寻找一种逼近曲线的方法,它与所有测量的轨迹的距离最小(在最小二乘意义上)。

乍一看,这与 CurveFitting Toolbox 的 spap2 可以实现的非常相似(Least-Squares Approximation here 部分中的好例子)。 但是这个算法有一些主要缺点:它假设一个函数(每个 x 恰好有一个 y(x)),但我想要的是 2d 曲线(一个 x 可能有几个 y(x))。当汽车右转或左转超过 90 度时,这会导致问题。 此外,它采用垂直偏移而不是垂直偏移(根据wolfram 上的定义)。

有人知道如何解决这个问题吗?我曾想过使用 B-Spline 并更改节数和度数,直到达到一定的拟合质量,但我无法通过分析或 CurveFitting Toolbox 提供的功能找到解决此问题的方法。有没有办法在不进行数值优化的情况下解决这个问题?

【问题讨论】:

  • 你能让每条路径成为时间的函数吗?对于每个时间值,一辆车只有一个 (x,y) 坐标。
  • 这就产生了一个问题,即每辆汽车的行驶速度都不同。如果 t=0 设置在交叉路口前的给定点,则一辆车可能已经完成了转弯机动,而另一辆车(更仔细地看汽车)在相同的时间后还没有完成。因此,两辆车同时的 (x,y) 平均值不会导致一条与测量轨迹的距离最短(在 x-y 平面上)的曲线。
  • 我在想,与其对不同汽车的路径进行平均,不如将每条路径中的高频噪声滤除以使其平滑。

标签: geometry curve approximation


【解决方案1】:

mbeckish 是对的。为了在曲线形状上获得足够的灵活性,您必须使用参数曲线表示 (x(t), y(t)) 而不是显式表示 y(x)。见Parametric equation

给定曲线上的 n 个连续点,如果您知道,则分配它们的真实时间,如果您不知道,则只分配整数 0..n-1。然后使用向量 T, X 和 T, Y 而不是 X, Y 调用 spap2 两次。现在对于任意 t,您会在曲线上得到一个点 (x, y)。

这不会为您提供真正的最小二乘解决方案,但应该足以满足您的需求。

【讨论】:

  • 这意味着所有汽车都以相同的速度行驶,因为它假设对于不同的路径 (x_i(t_0), y_i(t_0)) 对于所有路径 i 和时间都彼此接近t_0。我认为您需要一种进行平均的方法,该方法还允许重新参数化路径。
猜你喜欢
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 2021-12-09
  • 2020-10-20
相关资源
最近更新 更多