1€ Filter
Géry Casiez1,2,3 Nicolas Roussel3 and Daniel Vogel4
1LIFL, 2University of Lille, 3Inria Lille and 4Cheriton School of Computer Science, University of Waterloo

This page implements the "1€ Filter" in different languages. See our CHI 2012 paper (PDF). The name "1€" is an homage to the $1 recognizer.

Algorithm

1 euro filter algorithm

1€ Links and Downloads

References

Casiez, G., Roussel, N. and Vogel, D. (2012). 1€ Filter: A Simple Speed-based Low-pass Filter for Noisy Input in Interactive Systems. Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI '12). Austin, Texas (May 5-12, 2012). New York: ACM Press, pp. 2527-2530.

Tuning the filter

To minimize jitter and lag when tracking human motion, the two parameters (fcmin and beta) can be set using a simple two-step procedure. First beta is set to 0 and fcmin (mincutoff) to a reasonable middle-ground value such as 1 Hz. Then the body part is held steady or moved at a very low speed while fcmin is adjusted to remove jitter and preserve an acceptable lag during these slow movements (decreasing fcmin reduces jitter but increases lag, fcmin must be > 0). Next, the body part is moved quickly in different directions while beta is increased with a focus on minimizing lag. First find the right order of magnitude to tune beta, which depends on the kind of data you manipulate and their units: do not hesitate to start with values like 0.001 or 0.0001. You can first multiply and divide beta by factor 10 until you notice an effect on latency when moving quickly. Note that parameters fcmin and beta have clear conceptual relationships: if high speed lag is a problem, increase beta; if slow speed jitter is a problem, decrease fcmin.

Tuning can also be done using the Pitch Pipe technique [Code on Github].

1€ Implementations verified and available on Github

Other implementations not verified yet

Try the on-line interactive demo

Thanks to Jonathan Aceituno!
1 euro filter demo

Comparison with other filters (video)