|
|
 |
|
DSP-based Vision Comes Of Age
|
|
|
|
High end imaging applications are typically pixel processing intensive with real-time performance requirements.
Of course, real-time is relative. Labels on bottles may need to be inspected at a speed of 20,000 bottles an hour. Produce may
require on-line color grading at a speed of several feet per minute. In medical imaging, it is common to perform large kernel convolutions
on high-resolution images at 30 frames per second.
|
|
Figure 1
While the TI C80 can process operations such as point-to-point in 2-3 ms on a 512 x 512 x 8-bit image, neighborhood operations such as convolutions or
morphology, that are fundamental to imaging, are much slower. The optional custom Matrox neighborhood operations accelerator (NOA) ASIC supplements the power
of the TI C80 in this case. It consists of a MAC (multiplier/ accumulator) array capable of performing 32 simultaneous sum of products at 50 MHz, and accelerates
neighborhood operations by up to 20 times when compared to the TI C80 alone. |
|
Besides powerful processing components, imaging applications require flexible acquisition. Given the wide range of cameras used, imaging
hardware targeted at industrial, medical, and scientific applications should interface to a range of input devices. In addition to standard RS-170/CCIR and RGB
cameras; non-standard color and monochrome analog and digital, progressive scan cameras, cameras with higher frame rates (i.e. 60 frames per second or more) and
multiple output taps, as well as higher resolution cameras are becoming increasingly common. For web inspection, interfacing to line scan cameras is likely required.
PCB panel inspection might require a digital camera to capture images with less noise and more accuracy than analog cameras.
|
|
Display requirements vary with applications, but real-time display of processed images and some operator intervention is likely. So is a large
desktop for placing multiple windows in an efficient workspace. Rectangles and cross hairs to mark ROIs and edges may need to be written over a live video window for
such tasks as alignment of components. In medical or scientific imaging, graphics and text may be used to annotate images.
To avoid bottlenecks, an imaging subsystem must be able to handle the I/O requirements for simultaneous acquisition, processing, and display of high-speed
video. Matrox Genesis sustains high throughput I/O by using the VIA to control and manage all data interfaces, and by using SDRAM for main memeory. Multiple, high-speed dedicated
buses are used to transfer data between devices on main and processor boards, as well as between main/processor boards and to/from external resources such as the host PC
(see Figure 2). |
|
Figure 2
System performance requirements vary from one application to the next. To address this, Matrox uses the concept of processing nodes. Processing nodes are the
basic building blocks of Matrox Genesis' processing power. A main board has one processing node while companion processor boards each have one or two processing nodes. One node
contains one TI C80, NOA ASIC (optional), VIA ASIC and up to 64 MB of SDRAM.
|
|
For applications that demand it, multiple processing nodes can be used by adding companion processor boards to a main board (see Figure 2). Multiple nodes
can be used in parallel, either using the SIMD (single instruction, multiple data) model or the MIMD (multiple instruction, multiple data) model.
|
|
Many medical imaging applications require real-time acquisition, processing and display of images for visualization and review. Typical processing may include noise or temporal
filtering, edge enhancement, and brightness/contrast adjustment. Performing these operations on a 512 x 512 x 8-bit image at 30 frames per second might be handled by one main board in real time, i.e.
33 ms. However, a 1k x 1k x 10-bit image at 30 fps may require the addition of a processor board.
|
|
Figure 3
|
|
A traditional way to cope with demanding real-time inspection requirements has been to use pipeline hardware. While this can certainly meet some requirements,
it can be expensive and inflexible. A dedicated hardware module is required for each operation in the pipe and reconfiguring hardware for different applications can prove cost prohibitive or impossible.
While virtual pipelining can be accomplished using Matrox Genesis main and processor boards, a more efficient way would be to let each frame of image data be processed on whatever node is available.
|
|
Figure 4
|
|
|
As software development can be the largest investment in any application solution, software development tools like libraries
should provide not only comprehensive functionality but the flexibility to accept custom operations if needed. Matrox supplies three levels for
programming Matrox Genesis: the device-independent Matrox Imaging Library (MIL), the board-specific
Matrox Genesis Native Library, and the Matrox Genesis Developer's Toolkit (DTK) (in .pdf format).
The DTK is used in conjunction with Texas Instruments' TMS320C80 Software Development Tools for programming the TI C80 DSP directly.
MIL and the Native Library have an extensive set of pre-built and optimized functions for point processing, morphology, neighborhood
operations, statistics, geometric transforms, as well as blob analysis, pattern matching and alignment, gauging and JPEG compression. The two libraries
generally have the same commands, with the Native Library offering some additional commands which exploit the specific features of the board.
|
|
An application can be built using MIL, the Native Library, or the DTK; or any combination. To develop mainly portable code, the majority of
the application can be written with MIL commands and by using MIL's native mode programming, a developer can call Native Library commands for certain tasks.
By building on the power of DSPs that are optimized for imaging, such as TI's C80, vendors like Matrox are able to provide PC-based technology for even
the most demanding applications in industrial, medical, and scientific imaging. A flexible, off-the-shelf subsystem like Matrox Genesis solves I/O issues and processing
requirements on a single board, and if required, offers the scalability to achieve almost any level of performance. |
|
|
|
|