Smoothing incoming values from fiducials

hi every body.
I have another basic, but terrible question:

how to smooth the incoming values from real time detection modules ?

if i use a little fiducial in my image (its one of my constraint), and translate/rotate an image to its position, this image has a little movement ( surely due to loop computation) all the time. I need to attenuate the incoming thread wich is all the time moving ( 0.65677 0.65901 etc…).

i was thinking of different ways to do it:
-or using decays, dampers, but they affect the time of reaction when manipulating the fiducial
-or rounding the value ( 0.65677 to 0.66) ( but how ?)
-or passing the value in kind of smoothing patch, with a kind of curve ( ?)

is there any module, or manner, arrive to a kind of " stability " ?

(i have same problem with audioin incoming value, so this topic is… a basic example … )

thanks and cheers, christoph

maybe the Transient (Animation Filter).v4p in kalle.Modules.Animation gives you ideas for possible approaches.

or sth like FrameDifference (Animation) and Hysteresis (Animation) . switch only if framedifference is higher than…

thanks kalle, your user page is rich and very usefull !
really many many many thanks !


Many tracking systems use an algorithm where the filter time of a damper gets higher the less the input is changing. While this is a little bit counterintuitive, its quite practical: Big changes will get immediate responses, while slow changes will lead to big damper times, therefore very smooth results.

You can simulate that with two Dampers: The second one Dampering the Difference (probably squared) between the input and output of the first Damper, Map that dampered difference and use it as a Filter Time for the first Damper.

thanks oschatz, dampering was my first “reflx” to this problem.
i did n t think of this way. I have made a night playing around with kalles modules ( that are so necessary for every vvvv user !) and today will try with his IIR module wich is using the morphing function.

i do not arrive to create from a single incomming value a curve array to pass it throught and smooth it.

maybe my head is bugging somehow and spreads do not enter in the right corner…

but many thanks for those really strong suggestions

cheers ;-p