Boost logo

Boost :

From: koethe_at_[hidden]
Date: 2006-10-16 06:22:56


Hi all,

since VIGRA has been mentioned several times in the discussion of GIL,
I (as the VIGRA maintainer) would like to add a few comments.

Some people on the list perhaps remember that I offered VIGRA for
inclusion into boost a few years ago (must have been around 2002).
Back then, it didn't find much acceptance, so I didn't push very far.

Due to the renewed interest in image libraries, I'd like to repeat my
offer now -- I still think that boost would be a good home for VIGRA.
I also consider some integration with GIL an option, although one has
to check what is technically possible and can be done by volunteers.
In any case, I like GIL's extensive use of the view concept.

On Fri, Oct 13, 2006 at 01:43:50PM -0700, Lubomir Bourdev wrote:
> A related question: Which one is easier - building new functionality on
> top of a solid design, or extending the design of a library with lots of
> existing algorithms that are built on top of the old design?
>

This implies that functionality (i.e. algorithms) should be build on
top of a solid (i.e. more or less finalized) design. However, in my
experience this is impossible: as one tries to implement new
functionality, one constantly meets limitations of the original
design. It is the hallmark of good design that it can be adapted to
these evolving needs with minimal effort. VIGRA has proven to be very
flexible in this respect: we added much new functionality to the VIGRA
core with hardly ever breaking backwards compatibility in existing
algorithms. A design can only be really judged by demonstrating that
it can evolve according to the needs of new requirements.

In the GIL design guide, VIGRA is explicitely criticised for lack of
two features:

1. support for different channel orderings such as BGR and conversions
between them. This feature has been added to VIGRA about a year ago.

2. support for images with separate channels: VIGRA handles them by
means of 3-dimensional MultiArray and MultiArrayView templates. The
only things missing are DataAccessors that interprete these as
2-dimenional structures with multiband pixels, and interfaces to the
older BasicImage/BasicImageView group of 2D image classes and
algorithms. Both can be added trivially when there is sufficient
demand (which has been lacking so far).

Someone else pointed out that VIGRA provides an interface to the FFTW
library whose license is incompatible with the boost license. This is
true, but the FFTW can be replaced with another FFT library without
much work provided that the new library is not restricted to
power-of-2 image sizes (and it should prefarably be based on
std::complex).

Regards
Ulli Koethe (VIGRA maintainer)


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk