INTRODUCTION
Image processing is one of the main applications to tap the maximum parallelism out of FPGA as
compared to a microprocessor. Thus in order to test the speedup that can be achieved out of an
FPGA as compared to microprocessor, we plan to implement Sobel Edge Detection technique used
for detecting edges of an image. Edge detection plays very important role in various applications
which requires extraction of structural features of an image for further processing or to eliminate
less relevant data for data compression.
In the ideal case, the result of applying an edge detector to an image may lead to a set of
connected curves that indicate the boundaries of objects, the boundaries of surface markings as
well as the curves that correspond to the discontinuities in surface orientation.
Thus applying
an edge detector to an image may significantly reduce the amount of data to be processed and
may therefore filter out information that may be regarded as less relevant, while preserving the
important structural properties of an image.
There are many ways to perform edge detection. Most of the methods may be grouped into
two categories, gradient and Laplacian based techniques. The gradient method detects the edges
by looking for the maximum and minimum in the first derivative of the image. Roberts, Prewitt
and Sobel are common gradient techniques. The Laplacian method searches for zerocrossings in
the second derivative of the image to find edges. The well known Laplacian technique is Marrs
Hildreth algorithm. For our project we are implementing Sobel edge detection algorithm. This
method is computationally intensive due to large size of images and involves overlap of data values
in consequent iterations thus making it a good candidate for implementation on a reconfigurable
fabric such as an FPGA.
ALGORITHM
To perform most image processing techniques, we convolve the image with a filter mask.
As
shown in the Fig.
1, a mask
W
operates on a pixel value
p
5
located at (
x, y
) of an image
and its neighboring pixels
{
p
1
, p
2
, p
3
, p
4
, p
6
, p
7
, p
8
, p
9
}
and gives an output pixel
q
(
x, y
) given by
q
(
x, y
) =
∑
3
i
=1
w
i
∗
p
i
which is stored in an output image at location (
x, y
).
Sobel edge detector uses a simple convolution kernel to create a series of gradient magnitudes.
A gradient in
x
direction means a vertical edge is present and gradient in
y
direction means a
horizontal edge is present. There are two kernels, one for the vertical contrast (
G
x
) and one for
the horizontal contrast (
G
y
) as shown in Fig. 2.
The output pixel value at the location (
x, y
) for mask
G
x
is given by
q
x
(
x, y
) = (
p
3
−
p
1
) +
2(
p
6
−
p
4
)+(
p
9
−
p
7
) and for mask
G
y
is given by
q
y
(
x, y
) = (
p
1
−
p
7
)+2(
p
2
−
p
8
)+(
p
3
−
p
9
). The
output data can be represented as a gradient vector
q
=
q
x
q
y
with magnitude and orientation
given by
q
=
q
2
x
+
q
2
y
and
θ
= tan
−
1
{
q
y
q
x
}
. In our implementation we approximate the magnitude
as sum of the magnitudes of gradients given by
q
=

q
x

+

q
y

. When the value of
q
is significant,
we consider the point as edge pixel location. Greater the magnitude of the gradient, greater the
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
This is the end of the preview.
Sign up
to
access the rest of the document.
 Spring '08
 Staff
 Image processing, Microprocessor, smart buffer

Click to edit the document details