Could some review some methods to apply Gaussian Filter (Blur) on an image besides the direct one using Truncated FIR (classic convolution with Truncated Kernel) approximation?
You can apply Gaussian Blurring on an image in many ways:
- Using FIR Approximation by Convolution.
- Using Approximation by Box Blur.
- In the Fourier Domain by Multiplication by a Fourier Kernel.
- Using IIR Approximation.
You may have a look on my project - Fast Gaussian Blur.
Meaning of FIR
In this context FIR is the coefficients which are utilized to create the convolution kernel.
Indeed in the case of Gaussian Blur the 2D Kernel can be represented by outer product of 2 1D kernels hence it can be done in a separable fashion - Rows / Columns and then Columns / Rows.
Multiplication in The Fourier Transform
By utilizing the Convolution Theorem which states there is equivalence between Convolution in Spatial Domain to Multiplication in Fourier Domain one could use it to apply the convolution.
This really depends on 3 things:
- Size of the image.
- Size of the kernel (The STD of the Gaussian Kernel).
- The Quality required.
For instance for cases of large image and large kernel (Size which is approximately the size of the image) the Fourier Transform is really good especially in the case we have few images to be smoothed with the same kernel (For instance 3 RGB Channels).
Usually, in practice, in most times, the methods which their complexity is independent the Kernel STD (Box Blur Approximation / IIR Approximation) are the fastest methods with acceptable quality.
You may try them in the project I linked to above.