This library is essentially just a repository of template definition files, i.e., the actual C++ implementations of several useful (and less useful ;-) image processing algorithms. It houses several IP filters, and it is fairly easy to write a new one, by just starting from an existing one (e.g.,
Every class is templated on five types:
vil_image_view<T>, but it could as well be e.g.
vnl_matrix<double>or your own array-type class).
The common parent class of all filters is
vipl_filter (through its derived class
vipl_filter_2d). There, all image iteration magic is taken care of. You, as a writer of a new filter, only have to implement the filter on a single "section", which is the part of the image that has been loaded in memory. Often, for relatively small images, this is just the whole image, but
vipl allows you to apply any of its filters on a very large image which cannot be loaded in memory at once, without you having to change the implementation.
For the most common case, viz. input and output image are of type
vil_image_view<T>, have a look at the
vepl library. The old
vil1 image representation is interfaced in
This library was originally designed by Terry Boult for the TargetJr package, and then ported to vxl by Peter Vanroose.