For anyone reading a number off a noisy signal
ProSmoothing filters
Five of them, and the research behind each
Markerless tracking jitters. A landmark that moves by a couple of pixels between frames moves a short segment's angle by degrees, and an occluded limb's points wander. That noise does not average out of a range of motion — it inflates it, because a range is the distance between the two most extreme frames, and the most extreme frames are the ones most likely to be wrong.
Filtering is the normal answer, and it is a choice rather than a default we make for you: every filter trades noise against the peaks a range is measured from. So there are five, each with a page saying what it does, when to reach for it, what it costs and what has been published about it.
Butterworth low-pass
The convention in human-movement research
A low-pass filter with the flattest possible passband, run forwards and then backwards so it introduces no lag. If a paper you are reading filtered its kinematics, this is almost certainly what it used.
How it works, and the papers →Savitzky–Golay
Smooths without flattening the peaks
Instead of averaging a sliding window, it fits a curve through it. An average pulls the top of a peak down; a fitted curve follows it — which matters when a range of motion is read off exactly those peaks.
How it works, and the papers →Median
Deletes the one frame that went wrong
Replaces each frame with the middle value of its neighbours rather than their average. One absurd reading cannot drag a middle value with it, so the spike disappears instead of being spread around.
How it works, and the papers →Moving average
The simplest thing that works
A centred mean of the frames around each one. It is the best filter there is at reducing random noise in the time domain, and among the worst in the frequency domain — both halves of that are worth knowing.
How it works, and the papers →Kalman
Models the movement, not just the numbers
Carries an estimate of where the joint is and how fast it is moving, and weighs each new reading against where the movement was already heading. A backward pass then re-reads every estimate knowing what came afterwards.
How it works, and the papers →
What holds whichever you pick
Most of the ways filtering goes wrong are not about which filter you chose.
- Nothing is overwritten
- A filter is a lens over the stored measurement, not a change to it. Set it back to None and the raw angles are there, unchanged, exactly as they were measured.
- Every download says what was done
- The exact filter and its settings are written into the file — a field in the JSON, a comment line in the CSV. A filtered file that does not say so is a file nobody downstream can check.
- No phase shift, ever
- A filter that lags moves a peak off the frame it happened on. All five here are zero-lag: the Butterworth runs forwards and backwards, the Kalman has a backward smoothing pass, and the window filters are centred.
- Gaps stay gaps
- A frame where no pose was detected is not data. Each run of readings between the gaps is filtered on its own, so nothing is invented across a dropout.
- The 0°/360° seam is handled
- Joint angles are circular, and a naive filter averages 359° and 1° to 180° — putting a smoothed frame on the opposite side of the body. Angles are unwrapped before filtering and wrapped back afterwards.
- Applied before the clip is cut
- The whole series is filtered first and the trimmed window taken out of the result, so the edges of a section are filtered against real frames and the numbers do not move when you drag the window.
Why markerless data gets filtered
Wade, L., Needham, L., McGuigan, P., & Bilzon, J. (2022). Applications and limitations of current markerless motion capture methods for clinical gait biomechanics. PeerJ, 10, e12995.
A review of where markerless capture stands, and of the noise that makes filtering a normal step rather than an optional one.
doi:10.7717/peerj.12995
Needham, L., Evans, M., Cosker, D. P., et al. (2021). The accuracy of several pose estimation methods for 3D joint centre localisation. Scientific Reports, 11, 20673.
Measures how far pose-estimation joint centres sit from marker-based ones — the error a filter is and is not able to help with.
doi:10.1038/s41598-021-00212-x