I've been using Savitzky-Golay (SG) filters for quite a while, but always on 1D data, using an implementation based on the algorithm from the Numerical Recipes to calculate the kernel (mask, ...
Most engineers know how to create a moving average. Just slide a "window" along your raw data and averaging the exposed values to create a new value for the central data point. That new value drops ...