2. THE USER’S PROGRAMMING MODEL
At its most basic level, the programming model for our image processing machine is a host
processor (typically a PC programmed in C++) and an FPGA-based Image Processing
Coprocessor (IPC) which carries out complete image operations (such as convolution, erosion
etc.) as a single coprocessor instruction. The instruction set of the IPC provides a core of
instructions based on the operators of Image Algebra. The instruction set is also extensible in
the sense that new compound instructions can be defined by the user, in terms of the
primitive operations in the core instruction set. (Adding a new primitive instruction is a task
for an architecture designer).
The coprocessor core instruction set
Many IP neighbourhood operations can be described by a template (a static window with user
defined weights) and one of a set of Image Algebra operators. Indeed, simple neighbourhood
operations can be split in two stages:
A ‘local’ operator applied between an image pixel and the corresponding window
coefficient.
A ‘global’ operator applied to the set of intermediate results of the local operation, to
reduce this set to a single result pixel.
The set of local operators contains ‘Add’ (‘+’) and ‘multiplication’ (‘*’), whereas the global
operator contains ‘Accumulation’ (‘’), ‘Maximum’ (‘Max’) and ‘Minimum’ (‘Min’). With
these local and global operators, the following neighbourhood operations can be built: