<< Chapter < Page | Chapter >> Page > |
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:
which is implemented as
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).
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.
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.
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
Our implementation of Gaussian filtering uses the constantsized (k = 3), constant-sigma kernel
This kernel is implemented separably as
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.
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.
Notification Switch
Would you like to follow the 'Elec 301 projects fall 2015' conversation and receive update notifications?