Getting meaningful speed information from noisy position data

If this question is posted on the wrong stackexchange site - please suggest where I can move it!

I am studying the speed of an object that is subjected to multiple conditions with walls as well as other objects. The raw object location data is a bit noisy for two reasons: firstly, the video resolution is limited, and secondly, my tracking software also has some error in tracking the object (as the object image changes slightly over time).

If the speed of an object is simply computed using the raw object position data, there is a significant error (higher than the speed) because the object is tracked at a high frame rate.

I am most interested in the speed of an object in the time before and after collisions, and this is thus a significant problem.

Possible options that I have considered / tried.

  • Applying a discrete Kalman filter over location data . This is a solution that is often found in posts about the related question. However, given that we have all the data, when we start to smooth our data, is the Kalman filter the best way to use the data available? I understand that the filter is for data that comes in over time (for example, location data that is received in real time, not a complete set of location data).
  • Applying Savitsky-Golay smoothing to position data . When I tried to do this on my data, I found that significant artifacts were introduced after each collision in the ± 10 data points area. I suspect it has something to do with the significant acceleration on collision, but after checking a number of SG anti-aliasing settings, I can't seem to eliminate the artifacts.
  • Splitting the collision data, then smoothing the velocities using a moving average . To overcome the problem caused by acceleration on each collision, I split the data into multiple rows at each collision point. For example, if there were three collisions, the data will be split into four series. Then the speed for each data series was calculated and smoothed using a moving average.

Also, some of my colleagues have suggested passing the velocity information through a low pass filter, which I have not tried.

The two questions below are related to mine and are provided as a reference.

Smooth Series Data

Smooth GPS data

In addition, the article below also gives a good idea of ​​how to implement the Kalman filter, albeit for real-time 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

+3


source to share


1 answer


The choice of an appropriate filtering algorithm depends mainly on the behavior of your object and measurement errors (or noise). Therefore, I can only give general hints:

Differentiation, i.e. calculating speed from position data greatly amplifies the noise. So you probably need some sort of anti-aliasing. My ad-hoc approach: Fourier-Transform your location data, derivative in Fourier space and play around to find suitable bounds for low-trace filtering. Applying other transfer functions to your transformed positioned data can be interpreted as kernel smoothing (although a mathematical understanding of kernel methods is required to work properly).

The Kalman filter is a government grade that works recursively. If you have the correct motion model (discrete time) and measurement model, it will give good results and give you a direct estimate of the speed. The rules for this approach:



  • Model in 3D or 6D space if your object has rotational degrees of freedom rather than image space (noise behaves differently)
  • Carefully examine projection errors (camera calibration) and carefully select noise parameters
  • Use Non-Percent Kalman filter (much better than extended Kalman filter) if non-linearities occur

Kalman filtering and low-path filtering are closely related. For many simple applications, the Kalman filter can be thought of as an adaptive bottom path filter that flattens.

The non-recursive Kalman filter is called a Gaussian process, although I only see advantages over the Kalman filter if your trajectories have small numeric data points. Their application is not as straightforward as KF.

+2


source







All Articles