You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There are several techniques used in image processing to apply Gaussian filtering more efficiently than direct or FFT convolution. A useful summary of methods is given in this paper: https://ieeexplore.ieee.org/document/6738106
iterated box filter (repeated convolution with box kernel is cheap and close to Gaussian; a bit of cleverness/interpolation is needed to deal with non-integer widths).
recursive filters (a large convolution kernel is replaced by a small kernel which acts on both input and output values. This method is very effective for audio filtering, but may break down at large widths. The scipy filtfilt and lfilter functions can be used to apply recursive (IIR) filters efficiently.)
Kernel decomposition. This may use similar technology to JPEG compression (discrete cosine transform (DCT)) and seems particularly applicable to more complex (e.g. 2D?) kernels. Compared to recursive filters the cost may be higher but the error properties are better.
I propose to test these methods for some instrumental broadening problems and determine whether the properties are satisfactory for our purposes. Some initial tinkering in a Jupyter notebook shows speedups of the order x10 for recursive filters compared to convolution, so if broadening is a bottleneck this could be a significant improvement. If other steps are limiting, perhaps those should be tackled first.
The text was updated successfully, but these errors were encountered:
There are several techniques used in image processing to apply Gaussian filtering more efficiently than direct or FFT convolution. A useful summary of methods is given in this paper: https://ieeexplore.ieee.org/document/6738106
I propose to test these methods for some instrumental broadening problems and determine whether the properties are satisfactory for our purposes. Some initial tinkering in a Jupyter notebook shows speedups of the order x10 for recursive filters compared to convolution, so if broadening is a bottleneck this could be a significant improvement. If other steps are limiting, perhaps those should be tackled first.
The text was updated successfully, but these errors were encountered: