Processing math: 100%

Friday, 12 October 2012

A review of smoothing techniques

Recently I need to smooth the Kinect-based finger tracking result. Without smoothing, there are a lot of jitters as shown in this demo video:

In searching for the best solution, I think it's good to have a review of different smoothing techniques. 

Simple moving average

st=1kk1n=0xtn=xt+xt1+...+xtk+1k=st1+xtxtkk

- Disadvantage: cannot be used on the first k-1 terms.

Weighted moving average

Give more weight to the recent terms in the time series. 
- Disadvantage: same as the simple moving average method, it cannot be used on the first k-1 terms. It also requires more complicated calculation at each step as it cannot be written as a inductive formula.

Exponential moving average

s1=x0
st=αxt1+(1α)st1

Exponential smoothing and moving average smoothing are similar in that they both assume a stationary, not trending, time series, therefore lagging behind the trend if one exists. Exponential smoothing also take into account all past data, whereas moving average only takes into account k past data points.

Double exponential smoothing

Double exponential smoothing can be used when there is a trend in the data.

Let {xt} be the raw data sequence, {st} be the smoothed value for time t, and {bt} be the best estimate of the trend at time t. The output of the algorithm is now written as Ft+m. The formulae are:

s1=x0
b1=x1x0

And for t>1
st=αxt+(1α)(st1+bt1)
bt=β(stst1)+(1β)bt1
where α is the smoothing factor, 0<α<1, and β is the trend smoothing factor, 0<β<1.



No comments :

Post a Comment