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

时间:2013-01-31 08:16:58

标签: video-processing noise smoothing

如果这个问题发布在错误的stackexchange网站上 - 请告知我可以将其迁移到哪里!

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

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

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

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

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

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

以下两个问题与我的相关,并作为参考提供。

Smooth of series data

Smooth GPS data

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

非递归卡尔曼滤波器是一种称为高斯过程 - 尽管如果您的轨迹具有少量数据点,我只会看到优于卡尔曼滤波器的优势。他们的申请并不像KF那样直截了当。