On 10/5/06, Tom Brinkman
The review of Generic Image Library (GIL) begins today, October 5, 2006, and continues through October 15, 2006.
Please download the library at: http://opensource.adobe.com/gil. Minor change are being made regularly (daily), so check the site often for updates.
I highly recommend viewing the 55 minute Breeze presentation describing the library at: http://opensource.adobe.com/gil/presentation/index.htm
A tutorial is available at: http://opensource.adobe.com/gil/gil_tutorial.pdf
A design guide is availage at: http://opensource.adobe.com/gil/gil_design_guide.pdf
Description:
The Generic Image Library (GIL) is a C++ library that abstracts the image representation from operations on images. It allows for writing the image processing algorithm once and having it work for images in any color space, channel depth and pixel organization, or even synthetic images, without compromising the performance. GIL has an extension mechanism that allows for adding extra functionality. Two extensions are currently provided – one for image I/O and one for handling images whose properties are specified at run-time.
I think you might look at the Olena project: http://olena.lrde.epita.fr *** Overview of the Olena library *** The Olena project aims at building a scientific computation platform oriented towards image processing, image recognition, and artificial vision. This environment is composed of a high performance generic library, a set of tools for shell scripts, together with, in the more distant future, an interpreter (a la Octave, MatLab etc.) and a visual programming environment. Each step includes its own difficulties and requires the invention of new solutions. For instance, the library --the low level service set on top of which is built the whole project-- shall be both fast and generic. These objectives are quite antagonist in programming. Fortunately, the scientific computation field recently realized that genericity, as found in object oriented languages, is no longer a tool useful to implement auxiliary classes, but constitutes a new programming paradigm in its own right. Contrary to the usual oject oriented modelizations with inheritance and dynamic polymorphism, (static) genericity enables the generation of performant and reusable code. The Olena library is written using this paradigm. We have already found effective solutions to delicate problems, such as the wide variety of data types and data structures expected to be offered by such a library. In addition, we have generalized these solutions as design patterns to be reused in similar conditions. Olena is also effective for us to perform research on image processing. *** Library features *** The C++ library provides: * Generic basic image types (1-D, 2-D, 3-D images, etc.) * Mophers: generic, composable and lighweight objects built on one or several images, that can be used as o mixins: a morpher can add extra data (e.g. a neighborhood) or operations (e.g., an ordering on the values) to an image; o adaptors: e.g., a slice morpher can be used to view a slice of a 3-D image (spacemap) as a 2-D image (bitmap); o modifiers: a morpher can add a mask to an image, to restrict its (iterable) domain; o lazy function applications: a morpher can present a image seen through a function, either bijective or not; o etc. * Generic image processing algorithms * Auxiliary tools, necessary to write generic algorithms: o topologies; o points, delta-points; o neighborhoods; o etc. Regards, -- Johan