从嘈杂的位置数据中获取有意义的速度信息

5
如果这个问题发布在错误的stackexchange网站上,请建议我可以迁移到哪里!
我正在研究一个经历多种条件(与墙壁以及其他物体)的物体的速度。物体位置的原始数据有些嘈杂,有两个原因:首先,视频的分辨率有限,其次,我的跟踪软件在跟踪物体时也存在一些误差(因为物体的图像随时间略微变化)。
如果仅使用物体位置的原始数据来计算物体的速度,则会出现显着的误差(比速度更大),因为物体正在高帧率下被跟踪。
我最感兴趣的是在碰撞前后的时间内物体的速度,这是一个重要的问题。
我考虑/尝试了以下可能的选项。
  • 在位置数据上应用离散卡尔曼滤波器:这是一个经常出现在相关问题帖子中的解决方案。然而,考虑到我们在开始平滑数据时已经拥有了所有数据,使用卡尔曼滤波器是否是利用可用数据的最佳方法?我的理解是,该滤波器设计用于随时间而来的数据(例如实时接收的位置数据,而不是完整的位置数据集)。
  • 在位置数据上应用Savitsky-Golay平滑:当我在我的数据上尝试这个方法时,我发现在每次碰撞后±10个数据点的区域中引入了显著的伪像。我怀疑这与碰撞时的显著加速有关,但在尝试了一系列的SG平滑参数后,我无法消除这些伪像。
  • 在碰撞处分离数据,然后使用移动平均法平滑速度:为了克服每次碰撞引入的问题,我将数据分成多个系列,每个碰撞点分离一次数据。例如,如果有三次碰撞,则数据将被分成四个系列。然后计算每个数据系列的速度,并使用移动平均法进行平滑处理。
此外,我的一些同事建议将速度信息通过低通滤波器传递,但我尚未尝试。
下面的两个问题与我的问题有关,并作为参考提供。 平滑系列数据 平滑GPS数据 此外,下面的论文似乎也提供了如何实现卡尔曼滤波器的好建议,尽管是针对实时数据。

http://transportation.ce.gatech.edu/sites/default/files/files/smoothing_methods_designed_to_minimize_the_impact_of_gps_random_error_on_travel_distance_speed_and_acceleration_profile_estimates-trr.pdf


你可能会在http://stats.stackexchange.com/上获得更多答案。 - naught101
1个回答

3
选择适当的过滤算法主要取决于您的对象行为和测量误差(或噪声)。因此,我只能给出一些通用提示:
微分,即从位置数据计算速度会显著放大噪声。因此,您可能需要某种平滑处理。我的临时方法是:对位置数据进行傅里叶变换,在傅里叶空间中进行导数,并尝试找到适当的低通滤波边界。将其他传递函数应用于转换后的位置数据可以解释为核平滑(尽管需要一些核方法的数学见解才能正确地执行该操作)。
卡尔曼滤波器是状态估计器,可递归地工作。如果您有一个合适的(离散时间)运动模型和测量模型,则会产生良好的结果并为您提供速度的直接估计值。这种方法的经验法则:
- 在3D空间或6D空间中建立模型,如果您的对象具有旋转自由度,则不要在图像空间中建立模型(噪声行为不同) - 仔细研究投影误差(相机校准)并仔细选择噪声参数 - 如果出现非线性,则使用无迹卡尔曼滤波器(它比扩展卡尔曼滤波器好得多)
卡尔曼滤波和低通滤波密切相关。对于许多简单的应用程序,可以将卡尔曼滤波器视为自适应低通滤波器,可进行平滑处理。
非递归卡尔曼滤波器称为高斯过程-尽管我只看到它们在轨迹具有少量数据点时优于卡尔曼滤波器。它们的应用不像KF那样直接。

嗨@Dietrich,我需要哪种运动和测量模型?我对基于运动学定律的物体运动有一个大致的想法。 - Vincent Tjeng
对于卡尔曼滤波器,您需要一个线性离散时间状态空间模型来描述您的运动学。非常简单的运动学模型将导致与普通低通滤波器类似的行为。 - Dietrich
那么,可以这样说,模型越接近现实,过滤器的准确性就越高吗? - Vincent Tjeng
你介意在这里讨论一点物理吗?假设我有一个运动学模型,它预测运动取决于重力加速度 $g=9.8 ms^{-2}$。如果我错误地估计它等于其一半(即4.9),那么这个模型会非常错误吗?谢谢 :) - Vincent Tjeng
动态是有趣的。请参见https://en.wikipedia.org/wiki/State_space_representation#Moving_object_example以获取示例。如何获得离散时间模型,请查看https://en.wikipedia.org/wiki/Discretization。 - Dietrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接