[VIGRA] Generic Programming
for Computer Vision
The VIGRA Computer Vision Library
Version 1.5.0
 
[ VIGRA Homepage | What | Features | Documentation | Download | License ]
What's VIGRA? VIGRA stands for "Vision with Generic Algorithms". It's a novel computer vision library that puts its main emphasize on customizable algorithms and data structures. By using template techniques similar to those in the C++ Standard Template Library, you can easily adapt any VIGRA component to the needs of your application, without thereby giving up execution speed.

VIGRA was mainly implemented by Ullrich Köthe. Look also at the credits page to see who else has contributed to this efford.

Documentation: You can read the VIGRA reference and look at some example programs. A VIGRA tutorial still waits to be written. The most comprehensive description of VIGRA's design (albeit in German) is U. Köthe's PhD thesis:
Generische Programmierung für die Bildverarbeitung
Two of U. Köthe's articels also describe the main ideas behind VIGRA:
Reusable Software in Computer Vision, in: B. Jähne, H. Haußecker, P. Geißler: "Handbook on Computer Vision and Applications", volume 3, Acadamic Press, 1999.
STL-Style Generic Programming with Images, in: C++ Report Magazine 12(1), January 2000
Mailing List: Subscribe to the VIGRA Mailing List to get instant information about new releases, discuss VIGRA's features and development, and ask the experts for help.
Download: Download VIGRA's current version 1.5.0 (Dec 7, 2006). New: We also provide binaries for MS Windows with Visual C++ 7.1.
This version is known to run with GNU gcc 2.95.3 and later (UNIX, Linux, cygwin, alpha, including 64-bit compilation), and Microsoft Visual C++ 7.1 (aka Visual Studio .net 2003) and 8.0 (Support for Microsoft Visual C++ 6.0 is no longer maintained). VIGRA should run with any compiler that conforms to the C++ standard. Please direct questions and bug reports to the VIGRA Mailing List (you must subscribe before posting) or to koethe@informatik.uni-hamburg.de. Please do also read the installation instructions. Note that VIGRA is packaged with several Linux distributions, so you may not need to compile it yourself.

Older versions: vigra 1.4.0, vigra 1.3.2, vigra 1.3.2, vigra 1.3.1, vigra 1.3.0, vigra 1.2.0, vigra 1.1.6, vigra 1.1.5, vigra 1.1.4, vigra 1.1.3, vigra 1.1.2, vigra 1.1.1, vigra 1.0

License: VIGRA is subject to a license which is identical to the MIT X11 License and thus compatible to the GPL. You may use VIGRA in commercial products.
Features:
(Look also at the
changelog page
for the newest additions.)
Images and Multi-dimensional Arrays:
  • templated image data structures for arbitrary pixel types, fixed-size vectors, multi-dimensional arrays (arbitrary high dimension)
  • pre-instantiated images with many different scalar and vector valued pixel types (byte, short, int, float, double, complex, RGB, RGBA etc.)
  • 2-dimensional image iterators, multi-dimensional iterators for arbitrary high dimensions, adapters for various image and array subsets
  • input/output of many image file formats: Windows BMP, GIF, JPEG, PNG, PNM, Sun Raster, TIFF (including 32bit integer, float, and double), Khoros VIFF, HDR (high dynamic range)
  • continuous reconstruction of discrete images using splines: Just create a SplineImageView of the desired order and access interpolated values and derivative at any real-valued coordinate.
Image Processing:
  • STL-style image processing algorithms with functors (e.g. arithmetic and algebraic operations, gamma correction, contrast adaptation, thresholding), arbitrary regions of interest using mask images
  • image resizing using resampling, linear interpolation, spline interpolation etc.
  • geometric transformations: rotation, mirroring
  • automated functor creation using expression templates
  • color space conversions: RGB, R'G'B', XYZ, L*a*b*, L*u*v*, Y'PbPr, Y'CbCr, Y'IQ, and Y'UV
  • real and complex Fourier transform, cosine and sine transform (via fftw)
  • noise normalization according to Förstner
  • computation of the camera magnitude transfer function (MTF) via the slanted edge technique (ISO standard 12233)
Filters:
  • 2-dimensional and separable convolution, Gaussian filters and their derivatives, Laplacian of Gaussian, sharpening etc.
  • separable convolution for arbitrary dimensional data
  • resampling convolution (input and output image have different size)
  • recursive filters (1st and 2nd order), exponential filters
  • non-linear diffusion (adaptive filters), hourglass filter
  • tensor image processing: structure tensor, boundary tensor, gradient energy tensor, linear and non-linear tensor smoothing, eigenvalue calculation etc.
  • distance transform (Manhattan, Euclidean, Checker Board norms)
  • morphological filters and median (disk structuring elements)
  • Loy/Zelinsky symmetry transform
  • Gabor filters
Segmentation:
  • edge detectors: Canny, zero crossings, Shen-Castan, boundary tensor
  • corner detectors: corner response function, Beaudet, Rohr and Förstner corner detectors tensor based corner and junction operators
  • region growing: seeded region growing, watershed algorithm
Image Analysis:
  • connected components labeling
  • detection of local minima/maxima (including plateaus)
  • tensor-basesd image analysis
  • region statistics
Mathematical Tools:
  • special functions (error function, splines of arbitrary order, integer square root, chi square distribution, elliptic integrals)
  • rational and fixed point numbers
  • polynomials and polynomial root finding
  • matrix classes, linear algebra, solution of linear systems, eigen system computation

© Ullrich Köthe (koethe@informatik.uni-hamburg.de)
Cognitive Systems Group, University of Hamburg, Germany


VIGRA 1.5.0 (Dec 7, 2006)