-
Installation
how to get started
-
Tutorial
first steps with VIGRA
-
Data Structures
multi-dimensional arrays, graphs, numeric types etc.
-
TinyVector
fixed-size arrays
-
MultiArrayView
multi-dimensional array interface
-
MultiArray
multi-dimensional array class that holds the actual memory
-
NumpyArray and NumpyAnyArray
wrappers offering VIGRA's multi-array API for Python arrays
-
Matrix
array specialization for linear algebra
-
Image Containers
classes to manage multiple images and pyramids
-
SplineImageView
on-the-fly interpolation of 2D images and their derivatives
-
Chunked arrays
big data (potentially larger than RAM) stored as a collection of rectangular blocks
-
AdjacencyListGraph
general graph class
-
GridGraph
direct and indirect neighbor graphs on arbitrary dimensional grids
-
BinaryForest
a collection of binary trees
-
Pixel and Number Types
rationals, complex numbers, RGB tuples etc.
-
BucketQueue and MappedBucketQueue
efficient priority queues for integer priorities
-
Any
typesafe storage of arbitrary values
-
ArrayVector
replacement for std::vector with stronger guarantees (deprecated as of C++ 11)
-
BasicImage
deprecated type for 2D images
-
BasicImageView
deprecated type for 2D images that use external memory
-
Image and Array I/O
read and write data from/to disk
-
Parallel Processing
using std::thread
-
Image Processing
array arithmetic, convolution filters, morphology, color conversion, registration etc.
-
Image Analysis
from pixels to structured data
-
Graph Data Structures and Algorithms
graph classes and graph-based algorithms
-
Machine Learning
classification algorithms
-
Mathematical Tools
number types, special functions, linear algebra and optimization etc.
-
Utilities
error handling, speed measurement
-
Concepts
generic interface definitions
-
Examples
demonstration programs for VIGRA's usage
-
Vigra Matlab
VIGRA Matlab bindings (unsupported)
-
vigranumpy
VIGRA Python bindings
-
Credits and Changelog
who contributed what?
VIGRA - Vision with Generic Algorithms
Version 1.12.2 by Ullrich Köthe VIGRA is a computer vision library that puts its main emphasis on flexible algorithms, because algorithms represent the principle know-how of this field. The library was consequently built using generic programming as introduced by Stepanov and Musser and exemplified in the C++ Standard Template Library. By writing a few adapters (image iterators and accessors) you can use VIGRA's algorithms on top of your data structures, within your environment. Alternatively, you can also use the data structures provided within VIGRA, which can be easily adapted to a wide range of applications. VIGRA's flexibility comes almost for free: Since the design uses compile-time polymorphism (templates), performance of the compiled program approaches that of a traditional, hand tuned, inflexible, solution.
VIGRA's design is documented in the chapter "Reusable Software in
Computer Vision" by Ullrich Köthe, in: B. Jähne, H. Haußecker, P. Geißler: "Handbook on
Computer Vision and Applications", volume 3, Academic Press, 1999. If you don't have the book, you may read a draft of this article. A shorter article STL Style Generic Programming with Images describing some of the ideas has appeared in the January 2000 issue of C++ Report Magazine. The most comprehensive source of information is U. Köthe's PhD thesis Generische Programmierung für die Bildverarbeitung, but this is written in German.
VIGRA is subject to this LICENSE.
You can also 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.