Fighting Noise with the 1€ Filter

December 4, 2014 posted by: joreg

helohelo,

here is a supasmall thing. But it can be supausefull. So i thought you should know rightaway: We’re all familiar with noisy signals coming from sensors and the simplest thing in vvvv to do to calm such a signal always was to use a Damper (Animation)node. But of course that introduces a lag, which is sometimes unwanted.

::![](OneEuroFilter%20(_r.png) ::

Enter the 1€ Filter: A Simple Speed-based Low-pass Filter for Noisy Input in Interactive Systems All credits to its creators: Géry Casiez, Nicolas Roussel, Daniel Vogel and Mitsuru Furuta from which we borrowed the C# implementation.

Available now with more details in the helppatch in the latest alpha.


Comments:

Comments are no longer accepted for this post.

vux
04.12.2014 - 22:37
Does it fix ui lag too? ;)
mrboni
04.12.2014 - 23:52
excellent. thank you
joreg
23.02.2015 - 18:14
@mooney it already comes with the latest regular download now. no more alpha needed.
Mooney
23.02.2015 - 19:00
Hey, thanks for the reply. I actually came across this a while ago, re downloaded the add on pack to make sure. Still couldn’t find it. Kind of forgot about then and tried to make a work around. Any chance you have the file path to where it should be? Cheers
joreg
23.02.2015 - 20:05

i am not sure why you ask about a filepath.. just doubleclick in a patch to popup the nodebrowser and type “oneeuro..” to make it come up. if it does not show up like this you are not running the latest version of vvvv.

in case you’re asking for the source, it is here: https://github.com/vvvv/vvvv-sdk/blob/develop/vvvv45/src/nodes/plugins/Animation/OneEuroFilter/OneEuroFilterNode.cs

mediadog
13.12.2014 - 03:29
I’ve been using this filter for a while to filter head tracking data for VR (got it off the VRGeeks list), but never made it into a proper plugin because it is stateful, and couldn’t decide how best to handle that in the case of changing spreads. Does this implementation handle spreads, and if so what happens if the spread count changes?
joreg
13.12.2014 - 13:10
well, it behaves like all the other filters (linear, damper, oscillator) do.
mediadog
13.12.2014 - 22:35

To clarify, that behavior is to always use the slice history, regardless of slice count changes, yes? I tried making wrappers that bang a reset when the spread count changes, but that is still not great.

I’ve been thinking it would be helpful for all of those animation filter nodes to have a version that took a spread of IDs as well to maintain behavior, since in tracking applications you frequently do have an ID associated with the data. That way the correct history would apply wherever in the spread the data moved to. One of these days…

joreg
13.12.2014 - 23:03
yes. and see here for a discussion on the topic: forum
sebl
13.12.2014 - 23:05
@mediadog hehe, i had the exact same idea some days ago. maybe some clever id-creation nodes can make such ID-ized nodes even more multipurpose
elliotwoods
11.02.2015 - 03:21
this is amazing news! is it using some kind of Kalman based approach?
joreg
11.02.2015 - 13:46
in their paper they argue how that outsmarts kalman: http://www.lifl.fr/~casiez/publications/CHI2012-casiez.pdf
Mooney
23.02.2015 - 18:03
Hey guys. This seems like exactly what I need right now, but I can’t seem to find it anywhere in the alpha pack? Am I missing something obvious?

Contact


Imprint

vvvv - Dießl & Gregor GbR
Oranienstrasse 10
10997 Berlin/Germany
VAT: DE275566955

groupӘvvvv.org

Follow us

Sign up for our Newsletter

Your subscription could not be saved. Please try again.
Your subscription has been successful.