1D Signal Smoothing Example

Orion Sky Lawlor
2003/9/24
CS 497mjg Supplemental
Laplace Smoothing:
Linearly interpolate point with average of its neighbors. This neighbor averaging forms a very simple low pass filter, but the averaging tends to eat away at all parts of a mesh, not just the small ones. Taubin calls this effect "shrinkage".
Here, I take 70% neighbors, 30% point, or a lambda of 0.7.
[Taubin1995] Smoothing:
Perform one pass of Laplace smoothing with a positive lambda, then another pass with negative lambda. A negative-lambda Laplace is actually a sharpening pass; for middling freqencies, this more than compensates for the shrinkage of the first pass.
Here, I use a first-pass lambda of 0.6307; the second pass factor is -0.6732. (Values from [Desbrun1999]).

Laplace-smoothed Unit Step: 1000 passes.

Taubin-smoothed Unit Step: 1000 passes.
Note the ringing artifacts (Gibb's phenomenon).

Laplace Frequency Response: 1, 100, and 1000 passes.
Note the only non-attenuated signal is at 0 (DC term)--everything else vanishes.

Taubin Frequency Response: 1, 100, and 1000 passes.
Note the amplification of the midrange.

Description

The unit steps were written into a 300-cell array, then filtered.

The frequency responses were computed by writing a unit-amplitude linear frequency ramp into a 100,000-cell time-domain array and then applying the filter.

C++ source code and gnuplot script.

Taubin works for IP juggernaut IBM, so his shrinkage-free smoothing algorithm is restricted under patent, US Patent 5,506,947.

References


Back to Orion's Oeuvre.
Back to Orion's Home Page.