Separable filter

A separable filter in image processing can be written as product of two more simple filters. Typically a 2-dimensional convolution operation is separated into two 1-dimensional filters. This reduces the computational costs on an image with a filter from down to .

Examples

1. A two-dimensional smoothing filter:

2. Another two-dimensional smoothing filter with stronger weight in the middle:

3. The Sobel operator, used commonly for edge detection:

This works also for the Prewitt operator.

In the examples, there is a cost of 3 multiply–accumulate operations for each vector which gives six total (horizontal and vertical). This is compared to the nine operations for the full 3x3 matrix.

Another notable example of a separable filter is the Gaussian blur whose performance can be greatly improved the bigger the convolution window becomes.

References

Uses material from the Wikipedia article Separable filter, released under the CC BY-SA 4.0 license.