Smooth#
Overview#
The smooth module in splineops implements fractional smoothing splines, which are optimal estimators for smooth function approximation and interpolation [1], [2], [3]. Unlike standard polynomial splines, these splines are derived from fractional differential operators, making them highly adaptable for self-similar and fractal-like signals.
This module
supports 1D and N-dimensional smoothing splines;
provides a recursive-filtering implementation for fast computation;
uses fractional-order derivatives for the fine control of smoothness;
implements fast Fourier transform (FFT)-based methods for large-scale smoothing
and provides direct interpolation and denoising functionality.
These methods are particularly useful in signal processing, image reconstruction, and time-series modeling, especially for noisy or fractal-like data.
Problem Formulation#
Smoothing splines solve a regularized variational problem where the objective is to fit a function \(f(x)\) to given data points \((x_m, y_m)\), while penalizing roughness. The problem is formalized as
where
the data-fidelity term is \(E(f(x_m), y_m)\). It is typically quadratic, with \(E(f(x_m), y_m) = (f(x_m) - y_m)^2\);
the regularization parameter is \(\lambda\), which offer control over the smoothness;
the fractional derivative of order \(\gamma = H + 0.5\) is \(\mathrm{D}^\gamma f\);
the norm \(\| \cdot \|_M\) represents the total-variation norm and enforces smoothness.
This formulation ensures that the smoothing-spline solution is a fractional B-spline.
Fractional B-Splines#
Fractional splines generalize classical polynomial splines by allowing non-integer derivatives. The smoothing spline minimizes an energy functional of the form
which is equivalent to the application of a Butterworth-like low-pass filter.
For a discrete signal \(y[n]\), the solution is given by
where the smoothing filter is
This filter attenuates high frequencies and leads to optimal smoothing.
Regularization Parameter#
The regularization parameter \(\lambda\) balances data fidelity and smoothness.
Small \(\lambda\): Preserves details but may fail to attenuate noise.
Large \(\lambda\): Produces a smooth function but may also oversmooth.
For images and high-dimensional data, a typical choice is \(\lambda \in [0.05, 0.2]\).