|
|
|
WARNING: OBSOLETE (Chalk's internal code has become much better by now)
|
|
|
|
|
|
|
|
From time to time, people come up with the suggestion to use an
|
|
|
|
existing imaging library with Chalk, to replace our own core. This
|
|
|
|
file contains a list of all libraries known to me, and a short
|
|
|
|
evaluation.
|
|
|
|
|
|
|
|
Perhaps, one day, we will decide to either use an existing library, or
|
|
|
|
remodel our core after one of those. Of the libraries present, except
|
|
|
|
for our own Chalk, Vigra look like it's the best bet from a technical
|
|
|
|
point of view, with Vips a good runner-up.
|
|
|
|
|
|
|
|
|
|
|
|
* Chalk (http://koffice.kde.org/chalk)
|
|
|
|
|
|
|
|
Chalk contains its own 2D image library, consisting of the tile
|
|
|
|
manager, the layer classes and KisPainter. We really should separate
|
|
|
|
this 2d lib from the interface code, and put it in a real lib with
|
|
|
|
a well-defined interface.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Already works
|
|
|
|
- Optimized for interactive work
|
|
|
|
- Allows different colour models
|
|
|
|
- Uses GraphicsMagick or ImageMagick for loading and saving.
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Does not work well with different channel depths
|
|
|
|
- Not integrated with CMS
|
|
|
|
- TileManager complicated and slow for pixel reading and
|
|
|
|
writing.
|
|
|
|
|
|
|
|
* Gimp (http://www.gimp.org)
|
|
|
|
|
|
|
|
The Gimp contains a complex core that allows interactive painting of
|
|
|
|
images with a channel depth of 8 bits.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Well tested, very complete
|
|
|
|
- Optimized for interactive usage
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Written in C.
|
|
|
|
- Not readily available as a library.
|
|
|
|
- Depends on glib and gtk
|
|
|
|
- 8-bit only
|
|
|
|
- No colour models
|
|
|
|
- Has problems handling really large images
|
|
|
|
|
|
|
|
* Vigra (http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/)
|
|
|
|
|
|
|
|
Vigra is a C++ imaging library written by Ullrich Koetthe to
|
|
|
|
demonstrate his Phd thesis on flexible image algorithms.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Supports very large images
|
|
|
|
- Supports colour models
|
|
|
|
- Supports different bit depths through templating
|
|
|
|
- C++
|
|
|
|
- Relatively small
|
|
|
|
- Relatively well-documented
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- License incompatible with GPL?
|
|
|
|
- Not optimized for interactive use
|
|
|
|
- Unsure about future development since this was a research
|
|
|
|
project.
|
|
|
|
|
|
|
|
* Vips (http://www.vips.ecs.soton.ac.uk/)
|
|
|
|
|
|
|
|
Vips is a C library with a C++ layer. It has been designed for
|
|
|
|
handling very large images, mainly in the context of research into
|
|
|
|
paintings in museums like the National Gallery. It comes with a gtk2
|
|
|
|
gui.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Handles very large images
|
|
|
|
- Handles colour models
|
|
|
|
- Handles different bit depths
|
|
|
|
- C++ interface
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Not optimized for paintbox type apps (even though it is
|
|
|
|
possible).
|
|
|
|
- Very large.
|
|
|
|
|
|
|
|
* VXL (http://vxl.sourceforge.net/)
|
|
|
|
|
|
|
|
VXL is a collection of small libraries that are used for compution
|
|
|
|
vision and imaging purposes in an academic setting.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Handles very large images
|
|
|
|
- C++
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Not recently updated
|
|
|
|
- Comes with its own core libraries that replace standard C++
|
|
|
|
- Optimized for simple rgb images.
|
|
|
|
- No license at all
|
|
|
|
- Badly documented
|
|
|
|
|
|
|
|
* CImg (http://cimg.sourceforge.net/)
|
|
|
|
|
|
|
|
CImg is a very cool, very small library that offers some extremely
|
|
|
|
innovative image effects, like inpainting of damaged or noise images.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Small
|
|
|
|
- GPL
|
|
|
|
- Cool stuff
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Everything, including GUI stuff, in one header file.
|
|
|
|
- badly documented.
|
|
|
|
|
|
|
|
|
|
|
|
* Gegl (http://www.gegl.org/)
|
|
|
|
|
|
|
|
Gegl was intended to become the Gimp 2.0 core, but development had
|
|
|
|
stalled so much that the move to Gegl didn't happen before Gimp 2.0.
|
|
|
|
However, the Thawte millionaire whose name has escaped me, has
|
|
|
|
promised to support gegl development financially, freeing the
|
|
|
|
developer to work full-time on it. It is, more or less, an attempt to
|
|
|
|
write a templated library in C++ with the help of a custom language to
|
|
|
|
describe image operations.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- It's got money behind it
|
|
|
|
- Small
|
|
|
|
- Optimized for interactive use
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Not finished yet
|
|
|
|
- C
|
|
|
|
- Complex hack around the fact that C is a low-level language
|
|
|
|
|
|
|
|
* libart_lgpl (http://www.levien.com/libart/)
|
|
|
|
|
|
|
|
Libart isn't really an image library, but rather a canvas that can be
|
|
|
|
used to paint images on. It is optimized for vector graphics, and is
|
|
|
|
used by Karbon to render shapes before display.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Raph Levien is really good at this stuff, so libart is
|
|
|
|
quality
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- C
|
|
|
|
- It isn't an image library, really
|
|
|
|
|
|
|
|
|
|
|
|
* java2D (http://java.sun.com/j2se/1.4.2/docs/guide/2d/index.html)
|
|
|
|
|
|
|
|
|
|
|
|
Java2D is more or less complete library to write a paint app around.
|
|
|
|
It offers image types, colour spaces, kernel convolutions and text.
|
|
|
|
It's in Java, of course, and the free re-implementation is not done
|
|
|
|
yet, and besides, is based around Cairo.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Neat OO design
|
|
|
|
- Complete
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Java
|
|
|
|
- Not free
|
|
|
|
- Has some legacy cruft.
|
|
|
|
|
|
|
|
* ImageMagick/GraphicsMagick (http://imagemagick.org/, http://www.graphicsmagick.org/)
|
|
|
|
|
|
|
|
GraphicsMagick is ImageMagick with a different license, and a
|
|
|
|
focus on API stability. GM and IM now also differ slightly in terms of
|
|
|
|
features offered. Chalk used to be based around IM (which can still be
|
|
|
|
seen in many places in the code). The IM core was dropped in favour of
|
|
|
|
the present core because it turned out that IM was not re-entrant,
|
|
|
|
making it hard to use in an interactive application.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- Mature
|
|
|
|
- C++ interface
|
|
|
|
- Full-featured
|
|
|
|
- RGB and CMYK (but not more)
|
|
|
|
- License compatible with Chalk
|
|
|
|
- Under active development
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Bit-depth a compile-time option
|
|
|
|
- Not re-entrant: not optimized for interactive use.
|
|
|
|
|
|
|
|
* Paintlib2 (http://www.paintlib.de/paintlib/)
|
|
|
|
|
|
|
|
A portable (windows/Linux) library for image loading, manipulation and
|
|
|
|
saving. The same kind of thing as IM/GM, but not quite as mature.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- No support for larger bit depths per channel
|
|
|
|
- Windows (bmp) centric
|
|
|
|
- Development seems to have stopped in 2000
|
|
|
|
|
|
|
|
|
|
|
|
* Antigrain (http://www.antigrain.com/)
|
|
|
|
|
|
|
|
Antigrain is a graphics lib that specializes in high-quality anti-aliasing. It can be
|
|
|
|
useful to mine for algorithms, but is mainly a library to render vector data to bitmaps,
|
|
|
|
just like libart or cairo.
|
|
|
|
|
|
|
|
Advantages:
|
|
|
|
|
|
|
|
- High quality algorithms
|
|
|
|
- Completely free license.
|
|
|
|
- Colour-space agnostic
|
|
|
|
|
|
|
|
Disadvantages:
|
|
|
|
|
|
|
|
- Not a complete 2D library
|
|
|
|
- self-admittedly complex and hard to use.
|
|
|
|
- No support for greater bit-depths.
|
|
|
|
|
|
|
|
* The Visualization Toolkit (VTK, http://public.kitware.com/VTK/)
|
|
|
|
|
|
|
|
A very big C++ library for 2d and 3d image processing and visualisation. It's
|
|
|
|
too big to easily evaluate for me.
|
|
|
|
|
|
|
|
Advantages
|
|
|
|
|
|
|
|
- It is used in other Qt applications, like Julius
|
|
|
|
- Probably very good
|
|
|
|
|
|
|
|
Disadvantages
|
|
|
|
|
|
|
|
- The book is very expensive
|
|
|
|
- Uses its own make equivalent, CMake
|
|
|
|
- Very large
|
|
|
|
|
|
|
|
* Java Advanced Imaging
|