Evaluation of few methods to apply Gaussian Blur on an Image.
The project is written in MATLAB and the evaluation is by Run Time and Approximation Error.
The runtime is estimation of the overall complexity of the method and not optimization by coding.
Namely, this project is after the most efficient method for applying Gaussian Blur not the fastest MATLAB implementation.
The complexity of the classic method depends on the Image Size and the Gaussian Kernel STD.
Some of the approximations complexity is independent of the Gaussian Kernel Standard Deviation (STD).
- The input image is within the range [0, 1], namely working on Floating Point.
- The Gaussian Blur is actually a one parameter function - the STD.
- Boundaries are either replication or symmetry.
This section describes the current implemented methods.
The result is a convolution with a Gaussian Blur Kernel which is truncated.
According to the Central Limit Theorem a Gaussian Kernel can be approximated by convoloving Box Kernel over and over.
Box Blur by a Box Kernel can efficiently implemented using Integral Images (Summed Area Table).
Implementation using Integral Images makes this method complexity independent of the Gaussian Kernel STD.
The Gaussian Blur filter, based on the Gaussian Kernel has a specific Frequency Response.
By an IIR Filter approximation of the Frequency Response a very efficient implementation can achieved.
The approximation is done by a Polynomial and the filtration is done in the Spatial Domain.
The filter is defined by a function which sets the filter coefficients as a function of the Gaussian Kernel STD.
If the filter (As implemented here) order is independent of the STD parameter, the complexity is constant.
Download all the MATLAB files.
Run GaussianBlurApproximationAnalysis
and see the results on MATLAB main screen.
Play with the parameters as you wish.
- Implement the following methods:
- StackBlur (See Quasimondo/QuasimondoJS#8).
- Efficient and Accurate Gaussian Image Filtering Using Running Sums.
- Recursively Implementing the Gaussian and Its Derivatives.
- Create MEX implementations.
- Make the second method of the IIR Filter work.
- Create a system to compare the methods over a range of STD and image size.
- Include all the required references (Most are shown in the files).