| |
|
|
 |
Image
processing is fundamental to a wide range of industries including
optical character recognition (OCR), medical diagnostic instruments,
automatic optical inspection (AOI), ink jet printing, laser
plotters, photo plate setting, and so forth. The common aspect
to all of these applications is the need to move lots of data
through the system, so the supporting electronics are best characterized
as data flow architectures. |
This
is a core technology for Presco and we have been extensively involved
in each of the industries mentioned above. FPGAs
are an ideal implementation vehicle for data flow architectures.
The ability to create wide data paths and parallel computational
structures allows us to keep clock rates low while still processing
massive amounts of data. Also, the rich array of memory resources
in the Xilinx FPGAs permits easy construction of line buffers for
2D compression algorithms, sliding kernel filters, and the like.
Compress
Your Data for Better Performance
If you move lots of data, the need will eventually arise for
data compression because your data rates will surpass the throughput
available from disk drives and magnetic tapes. Many times, an
industry standard compression format such as CCITT Group 3 (FAX),
JBIG or MPEG will be the natural choice. These standards are
supported by dedicated compression chips, but often these chips
lack the resources to handle the needs of a particular application.
|
 |
One challenging compression problem occurred with a client whose
image format was 240,000 pels on each axis. They wanted to store
multiple images for use at a later time, so there was an obvious
need for data compression. Unfortunately, all of the modern
2D compressors relied on line buffers no longer than a few thousand
pels. Furthermore, the available algorithms did a poor job of
compressing our client's data. See the
Huffman Coder for a description of how we developed a high
speed custom coder based on the CCITT Group 3 principles, but
specialized to our client's requirement. |
Why
Data Compressors Get Slow
| One
of the troubling aspects of data compressors is speed: sophisticated
(i.e. efficient) algorithms can be difficult to implement in
a high speed data flow architecture. For the Huffman Coder example
just mentioned, the coding tables were kept much smaller than
the CCITT standard in order to facilitate a high speed implementation.
In cases where this is not possible, the key to high speed might
be the use of an intermediate transformation of the data being
compressed. Prudent selection of an intermediate data representation
has been the key insight in product development cycles ranging
from automatic optical inspection to defect identification. |
Pattern
Recognition Using Transformed Data
 |
A
final thought concerns the combination of data compression and
pattern recognition. The most efficient data compression algorithms
rely on some known aspect of the data being encoded. Perhaps
it is known that the source data represent printed circuit artworks,
or acoustic signatures, or typed documents. |
| An
efficient compression algorithm distills out the true
information content of the data stream. As a result, many
pattern recognition algorithms work more efficiently in
the compressed data space than on the original input data.
See the Address
Block Locator for an unusual data transformation used
to locate selected sub-images within a very cluttered
scene. |
 |
|
|
|