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., vipl_threshold
).
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).vipl_convert
does.)vil_image_view<T>
.vipl_trivial_pixeliter
.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 vepl1
.
This library was originally designed by Terry Boult for the TargetJr package, and then ported to vxl by Peter Vanroose.