5

如果此问题发布在错误的 stackexchange 站点上 - 请建议我可以将其迁移到哪里!

我正在研究一个物体的速度,它与墙壁以及其他物体一起经历多种条件。物体位置的原始数据有轻微的噪音,原因有两个:第一,视频的分辨率有限,第二,我的跟踪软件在跟踪物体时也有一些误差(因为物体的图像略有变化随着时间的推移)。

如果仅通过使用对象位置的原始数据来计算对象的速度,则在以高帧率跟踪对象时存在明显的误差(大于速度的误差)。

我对碰撞前后物体的速度最感兴趣,因此这是一个重大问题。

我考虑过/尝试过的可能选项。

  • 在位置数据上应用离散卡尔曼滤波器:这是一个经常出现在有关相关问题的帖子中的解决方案。然而,当我们开始对数据进行平滑处理时,考虑到所有数据,卡尔曼滤波器是利用可用数据的最佳方式吗?我的理解是,过滤器是为随着时间的推移传入的数据而设计的(例如,实时接收的位置数据,而不是完整的位置数据集)。
  • 对位置数据应用 Savitsky-Golay 平滑:当我在我的数据上尝试此操作时,我发现每次碰撞后在 ±10 个数据点的区域中引入了显着的伪影。我怀疑这与碰撞时的显着加速度有关,但在尝试了 SG 平滑的一系列参数后,我无法消除伪影。
  • 在碰撞时分离数据,然后使用移动平均值平滑速度:为了克服每次碰撞时加速度引入的问题,我在每个碰撞点将数据分成多个系列。例如,如果有 3 次碰撞,则数据将分为四个系列。然后使用移动平均值计算和平滑每个数据系列的速度。

此外,我的一些同事建议通过低通滤波器传递速度信息,我没有尝试过。

以下两个问题与我有关,仅供参考。

系列数据的平滑

流畅的 GPS 数据

此外,下面的论文似乎也为如何实现卡尔曼滤波器提供了一个很好的建议,尽管是针对实时数据。

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

4

1 回答 1

3

选择合适的过滤算法主要取决于对象的行为和测量误差(或噪声)。所以我只能给出一些通用的提示:

微分,即从位置数据计算速度会显着放大噪声。所以可能你确实需要某种平滑。我的临时方法是:傅里叶变换您的位置数据,在傅里叶空间中进行导数并四处寻找适合低路径过滤的边界。将其他传递函数应用于转换后的定位数据可以解释为内核平滑(尽管需要对内核方法进行一些数学洞察才能正确地做到这一点)。

卡尔曼滤波器是状态估计器,它以递归方式工作。如果您有适当的(离散时间)运动模型和测量模型,它将产生良好的结果并为您提供对速度的直接估计。这种方法的经验法则:

  • 如果您的对象具有旋转自由度,则在 3D 空间或 6D 空间中建模,而不是在图像空间中(噪声表现不同)
  • 仔细调查您的投影误差(相机校准)并仔细选择噪声参数
  • 如果出现非线性,请使用无迹卡尔曼滤波器(它比扩展卡尔曼滤波器好得多)

卡尔曼滤波和低路径滤波密切相关。对于许多简单的应用,卡尔曼滤波器可以被认为是一种自适应低路径滤波器,它会进行平滑处理。

非递归卡尔曼滤波器是一种称为高斯过程的过程 - 尽管如果您的轨迹具有少量数据点,我只看到卡尔曼滤波器的优势。它们的应用不像 KF 那样简单。

于 2013-02-05T12:27:39.423 回答