<< Chapter < Page Chapter >> Page >

2D Convolution Equation

For an image of size M x N and kernel of size k, a direct implementation would require O(MNk^2) time, which is infeasiblefor a real-time implementation. Instead, it is possible to exploit the separable property of certain convolution matricesh, e.g. that h can be represented as the product of two onedimensional matrices h1 and h2. This effectively reduces ourtwo-dimensional convolution of Equation (1) to two separate instances of one-dimensional convolution:

Separable Convolution

which is implemented as

Separable Convolution Equation

Execution times of direct and separable 2D Convolution

For the same M x N input and square kernel of size k, a separable implementation reduces the computational complexityto O(MNk). By comparison, an implementation using the FFT would cost O(MN logMN). In practice, considerthe separable convolution speed gain evident in the following results for a convolution of a 3 x 3 Gaussian filter kernel withimages of varying sizes (visualized in Figure 2).

Execution Time of Direct 2D Convolution

Execution Time of Separable 2D Convolution

As detailed in later sections, we take advantage of the fast computational complexity of separable convolution in ourimplementation, as all of the filters we apply are separable into one-dimensional matrices.

Noise elimination: two-dimensional gaussian filtering

The first task in our edge detection algorithm is denoising the input in order to reduce the amount of high-frequencycontent in the image by as much as possible without destroying critical information points in the image (e.g. the real edges).We filter out high-frequency noise so that random noise is not mistakenly interpreted as an edge, as edges correspond topoints in the image where the gradient has an above-threshold magnitude.

For example, consider the 5312 x 2988 pixel image (taken at a high ISO to deliberately introduce noise) of Figure 3and a plot of its grayscale intensity versus the image’s spatial dimensions in Figure 4. It is clear from the mesh that thereis much high-frequency noise, which can be removed with a low-pass filter.

Fig. 3. unfiltered noisy image

noisy image

Fig. 4 grayscale intensity of unfiltered noisy image at each pixel

noisy image intensity plot

Fig. 5. fft magnitude of unfiltered noisy image (log scale)

FFT magnitude of unfiltered noisy image (log scale)

To low-pass filter our image, we apply a discrete Gaussian filter. Generally, a Gaussian blur kernel of size 2n+1 x 2n+1(where n is a positive integer, and with parameter sigma) is given by

equation for Gaussian kernel

Our implementation of Gaussian filtering uses the constantsized (k = 3), constant-sigma kernel

Gaussian kernel

This kernel is implemented separably as

Separable Gaussian Kernel

Applying a Gaussian filter with parameters k = 5 and sigma = 5 to the above image significantly denoises the image withoutsacrificing edge precision, which can be seen from the spatial intensity plot in Figure 7.

Fig. 6. gaussian-filtered noisy image

Gaussian-filtered noisy image

Fig. 7. grayscale intensity of gaussian-filtered noisy image

Grayscale intensity of Gaussian-filtered noisy image

Fig. 8. fft magnitude of gaussian-filtered noisy image

FFT magnitude of Gaussian-filtered noisy image

Gradient computation: the sobel operator

Edges in the image correspond to pixel locations at which there is a rapid change in intensity with respect to the image’sspatial dimensions. Thus, edge pixels are defined as those whose gradient magnitude |G| is maximized along thegradient direction ThetaG.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Elec 301 projects fall 2015. OpenStax CNX. Jan 04, 2016 Download for free at https://legacy.cnx.org/content/col11950/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Elec 301 projects fall 2015' conversation and receive update notifications?

Ask