A High-Performance Image and Movie Processing Pipeline
Introduction - Image Processing
Images and image processing are great fun. There is a
virtually infinite number of different image processing
operations, such as filters, segementation, regsitration,
feature extraction and feature tracking in sequences of
images. Typically, images are processing by a "pipeline" of such
operations: we might first apply some filters, then a feature
extraction etc.
Aims of this project
The first aim of this project is to build a nice, interactive
application for configuring image processing
pipelines. Pipelines should be represented in a graphical way as
a worksflow, and be configurable via drag-and drop etc.
The second aim is to execute these image processing pipelines
as fast as possible, using interesting hardware and
parallelism. Some suggestions:
- When processing sequences of sets of images with the same
pipeline, use idle cycles on lab workstations to do this in
parallel.
- Use the TaskGraph
Library to fuse the different operations constituting an
image processing pipeline and apply restructuring
optimisations.
- Generate code to execute pipelines on FPGAs or GPUs.
- Use speculative caching to attempt to speed up the
processing of future pipelines.
Key Challenges
- Choose the right terchnology for implementing the
front-end, and get something to work quickly. You could look
at writing something from scratch in Python, or possibly, at
building an extension of the Gimp.
- Choose a collection of processing operations to
implement. There are plenty of existing libraries that may be
suitable; but care has to be taken not to choose a technology
which will make optimisations difficult.
- Learn aboutr techniques for launching tasks on
workstations that currently have idle cycles. There are lots
of interesting policy issues here - available resources,
possible precursors to the current task which could have been
cached, etc.
- Learn about the TaskGraph library and techniques for
generating code for FPGAs and GPUs.
- Find some really interesting examples that make a great
demo of the final product.
Is this project for you?
To do this project, you should not be scared by large,
exisiting pieces of software, and have teh ability to get
complex pieces of code to work.
Olav Beckmann
Last modified: Tue Oct 4 12:07:42 BST 2005