Does anybody know how should I a newibe like me can get started on
VHDL and Image Processing?
I have purchased Altera DE2.
The obvious Google search will bring up lots of hits, but first
I suggest you should concentrate on getting the basics in place.
I don't know the Altera DE2 board, but whatever, make sure you
know how to get an image into its on-board memory, and how to
display that image on a monitor of some kind. Once you've done
that, consider doing some REALLY simple operation on every pixel
in the image - for example, make the image negative - and check
that works by simply looking at the displayed result.
Having done those things, you are probably ready to do some
more interesting image processing operations. First, try to
implement a 3x3 moving-average filter over the image - for
each pixel, compute the average of that pixel and its eight
immediate neighbours, and use that average as the output
pixel value. Again your success or failure can easily be
confirmed by inspection of the displayed image, and it's
a good way to start thinking about the addressing issues
(how do you access a pixel's near neighbours?).
Now you're ready to do just about any of the classic image
processing operations such as edge detection, contrast
enhancement and so on; you can start concentrating on the
image processing problems, because you will by then
understand how to implement it in the FPGA. It should also
be an easy step from there to doing image compression tasks
like DCT.
The next step is to start considering geometrical operations
such as rotation and scaling. These tend to be quite a bit
harder in FPGAs because they need complicated address
calculations that don't have the simple locality that you
find with filtering operations.
Depending on what peripheral hardware you have with your
development board, you may or may not be able to implement
these operations in real-time on a video stream. If so,
you can then consider operations *between* images, rather
than *within* a single frame; that step allows you to do
stuff like motion estimation as well as some interesting
compression and noise-reduction tricks. But it will
require you to manage quite a lot of memory.
I think that the message I'm trying to convey is this:
Image processing on an FPGA is, in principle, no different
than image processing in software. However, the very
different resources on an FPGA compared with a software
platform mean that the main practical difficulties are
likely to be issues like memory access and video interfacing,
rather than the theory of the image processing itself.
Your reward for mastering those difficulties, of course,
will be astonishingly high throughput - if you get it right
--
Jonathan Bromley, Consultant
DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services
Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
(e-mail address removed)
http://www.MYCOMPANY.com
The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.