Ну, стандартный вроде прием для сглаживания - задаешь некую функцию K(x,y,z), называемую ядро. С потолка берешь, лишь бы гладкая была, неотрицательная, посимметричней и чтобы поскорее стремилась к нулю при удалении от (0,0,0).
Потом, когда нужно проинтерполировать в точке x0, y0, z0, то просто берешь сумму всех известных тебе значений функций в точках сетки с весами K(x[i] - x0, y[i] - y0, z[i] - z0), ну и нормализуешь на сумму весов. Т.е.
![f(x0, y0, z0) = \frac{\sum K(x[i] - x0, y[i] - y0, z[i] - z0) * u[i]}{\sum K(x[i] - x0, y[i] - y0, z[i] - z0)}, f(x0, y0, z0) = \frac{\sum K(x[i] - x0, y[i] - y0, z[i] - z0) * u[i]}{\sum K(x[i] - x0, y[i] - y0, z[i] - z0)},](/latex/img/a3eb399c0527f4219783fa67e3c740c8-1.gif)
где (x[i], y[i], z[i]) - координата i-й точки сетки, и u[i] - значение в ней.
Сумму брать по всем точкам где ядро ненулевое. Их мало, т.к. ядро обычно должно быть равно нулю начиная с некоторого удаления.
Какие ядра брать. Ну это от данных зависит. Попробуй Ланкоша -
http://en.wikipedia.org/wiki/Lanczos...ation_formulas
- хвалят его в image processing. Плюс с ним значения в точках сетки не изменятся после этой интерполяции-сглаживания. С другими ядрам это не обязательно так.