Adobe Systems, Inc.

Generic Image Library (GIL)
[Adobe Source Libraries]


Modules

 Generic Concepts
 Point
 I/O
 JPEG I/O

Detailed Description

Author:
Lubomir Bourdev and Hailin Jin
Advanced Graphics Technology
Adobe Systems Inc.

Introduction

Images are a fundamental construct in Digital Imaging/Digital Video projects and yet the variability in pixel data representations (color space, bit depth, channel ordering, planar/interleaved, alignment policy) makes it hard to write imaging-related code that is both generic and efficient. This library allows for writing generic imaging algorithms with performance comparable to hand-writing for a particular image type.
The library is designed with the following five goals in mind:
  • Generality: Abstracts image representations from algorithms on images. It allows for writing code once and have it work for any image type.
  • Performance: Speed has been instrumental to the design of the library. The generic algorithms provided in the library are comparable in speed to hand-coding the algorithm for a specific image type.
  • Flexibility: Compile-type parameter resolution results in faster code, but severely limits code flexibility. The library allows for any image parameter to be specified at run time (for a minor performance cost comparable to a virtual call overhead).
  • Extensibility: It is easy to extend the library with new color spaces and image types. Library extensions typically require no changes to the library core; at the same time existing image algorithms apply to new color spaces and image types.
  • Compatibility: The library is designed as an STL and Boost complement. Generic STL algorithms can be used for pixel manipulation, and they are especially optimized. The library works with existing raw pixel data from another image library and can even be integrated into a third-party reference counting mechanism.

Resources

Installation

There is no library to link against. You just need to include the corresponding header files.
The only dependency is Boost.

Acknowledgements

  • Jon Brandt, Mark Ruzon and Paul McJones spent significant time reviewing the library and documentation and provided valuable feedback.
  • Alex Stepanov's class has directly inspired this project. Alex's "start from the inside" and "bottom up" principles have been applied throughout the design.
  • Sean Parent and Alex Stepanov suggested splitting the image into a 'container' and 'range' classes
  • Jaakko Jarvi collaborated with us on reducing the code bloat of GIL
  • Bjarne Stroustrup reviewed the core library design

GIL Table of Contents

Copyright © 2006 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.

Search powered by Google