|
|
 |
|
What do TI C80-Based Image Processing Developers Really Want?
|
Matrox is one of the board vendors which introduced new C80-based technology last year. ( Matrox Genesis was launched
in July '96.) In designing this technology, we addressed the following set of common needs:
|
|
Of course real-time is relative. In inspection, you might be checking labels on 20,000 bottles an hour or doing
color grading of produce on-line. In medical imaging, you might be doing large kernel convolutions on high-resolution images at 30 fps.
The bottomline is the need for speed.
|
|
If you' re paying for an on-board DSP, you'll want to use it - which means squeezing out the highest performance possible.
|
|
No matter what your application, you have tight development schedules.
|
|
A single C80 might offer enough power for some applications; but others need to use multiple processors. Even if a single C80
solves it now, you're likely looking for "room to grow" which can mean employing multiple processors in the future. If you are developing a line of
products, you need a range of performance levels. Ideally, it would be nice to scale down, so that the same code could run on a C80 platform and a
host processor; with the host-based systems filling the lower end of your product line.
|
|
The three areas that we focused on were machine vision (quality control and inspection), medical imaging (image reconstruction
and visualization), and image analysis (microscopy such as cell analysis). These types of applications share enough fundamental operations to make
it feasible to build a common set of tools. As well, collectively they represent a critical mass of developers, so it is worthwhile to make the
significant investment in R&D.
|
|
Library functions have multiple parameters. You can instruct a general function to perform an operation in a specified way and with specified results. For
example, to do a convolution, you select an appropriate kernel, how the operation handles the borders of an image (overscan or not), and whether the
results will be saturated or not, etc. For a pattern match, you define a model (with select tolerances), set the positional accuracy, set the rotation angle,
and specify the acceptance levels for match scores, etc.
|
Specifically, the levels are: the Matrox Imaging Library (MIL), the Matrox Genesis Native Library and the
Matrox Genesis Developer's Toolkit (DTK) (in .pdf format). MIL is a set of high-level 'C' commands that works with a VGA
and Matrox imaging hardware. Programming at this level will suit your needs if you want to build a portable application. (Since MIL has been available since 1993, some developers
simply ported their MIL code to the new board.) Using MIL requires little knowledge of the hardware.
|
|
To extend the Native Library and develop your own custom functions, you would use the DTK in conjunction with the Texas Instruments' C80 software development
tools. Programming the MP in 'C' does not require detailed knowledge of the C80, and you have access to all of the usual Native Library functions. This allows a host application
to be ported easily to the MP so that the host does not have to be involved in real-time control. For programming the PPs, you'll need some knowledge of the internal architecture
of the C80, including the workings of the Transfer Controller and the Parallel Processors. It usually also requires programming in assembly language in order to achieve maximum
performance.
|
|
For real-time simultaneous acquisition, processing, and display of high speed video; solving the I/O demands is a large part of ensuring maximum performance.
Matrox Genesis sustains high throughput I/O by using a custom video interface ASIC (VIA), as well as dedicated high speed buses for performing transfers on/off board. Also,
the NOA was built to complement the processing power of the C80, by accelerating operations such as large convolutions or correlations. Depending on the function, NOA is up to
20 times faster than the C80.
|
|
To meet the need for scalable processing, the Matrox Genesis Main Board (which has acquisition, processing, and display) works with a Processor Board, which
contains an additional one or two processing nodes (each with a C80/NOA, the VIA and SDRAM). You can add up to six Processor Boards in a system and use the
power of multiple C80s. ("Scaling down" performance is achieved by using MIL to develop the real-time application on the C80-based platform and porting it to a host processor.)
|
|
|
|
|