Data Flow Architectures

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.

Printed circuit card Automatic Optical Inspection. Click for details

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

Click to learn more about optical character recognition for mail 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. Click to learn about optical inspection of surgical instruments