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 for arbitrary high dimensions and arbitrary element types

chunked arrays for data bigger than RAM

efficient grid graph class for graph-based image processing (arbitrary high dimensions)

input/output of many image file formats: Windows BMP, GIF, JPEG, PNG, PNM, Sun Raster, TIFF (including 32bit integer, float, and double pixel types and multi-page TIFF), Khoros VIFF, HDR (high dynamic range), Andor SIF, OpenEXR

input/output of images with transparency (alpha channel) into suitable file formats

comprehensive support for HDF5 (input/output of arrays in arbitrary dimensions)

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: exrpession templates for easy array arithmetic

image resizing using resampling, linear interpolation, spline interpolation etc.

geometric transformations: registration, rotation, mirroring, arbitrary affine transformations

color space conversions: RGB, sRGB, R'G'B', XYZ, L*a*b*, L*u*v*, Y'PbPr, Y'CbCr, Y'IQ, and Y'UV

real and complex Fourier transforms in arbitrary dimensions, 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: separable and FFT-based convolution in arbitrary dimensions, Gaussian filters and their derivatives, Laplacian of Gaussian, sharpening etc., non-separable convolution in 2D

multithreaded filter execution

resampling convolution (input and output image have different size)

recursive filters (1st and 2nd order), exponential filters

non-linear diffusion (adaptive filters), hourglass filter

total-variation filtering and denoising (standard, higer-order, and adaptive methods)

differential features: gradient magnitude, eigenvalues of Hessian matrix and structure tensor, Laplacian of Gaussian in arbitrary dimensions

tensor image processing: structure tensor, boundary tensor, gradient energy tensor, linear and non-linear tensor smoothing, eigenvalue calculation etc. (2D and 3D)

distance transform (Manhattan, Euclidean, Checker Board norms), vector distance transform, eccentricity transform in arbitrary dimensions, 2D skeletonization with automatic pruning

morphological filters and median (2D and 3D)

Loy/Zelinsky symmetry transform

Gabor filters Image Analysis and 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

superpixels: watersheds, SLIC superpixels (arbitrary dimensions)

connected components labeling (arbitrary dimensions)

detection of local minima/maxima (arbitrary dimensions)

tensor-basesd image analysis (2D and 3D)

powerful incremental computation of region and object statistics (arbitrary dimensions)

sophisticated graph-based image analysis, e.g. agglomerative clustering Machine Learning: random forest classifier with various tree building strategies

variable importance, feature selection (based on random forest)

unsupervised decomposition: PCA (principle component analysis) and pLSA (probabilistic latent semantic analysis) Mathematical Tools: special functions (error function, splines of arbitrary order, integer square root, chi square distribution, elliptic integrals)

dual numbers and automatic differentiation

random number generation

rational and fixed point numbers

quaternions

polynomials and polynomial root finding

matrix classes, linear algebra, solution of linear systems, eigen system computation, singular value decomposition

optimization: linear least squares, ridge regression, L1-constrained least squares (LASSO, non-negative LASSO, least angle regression), quadratic programming, non-linear least squares (using the Levenberg-Marquardt algorithm with automatic differentiation) Inter-language support: Python bindings in both directions (use Python arrays in C++, call VIGRA functions from Python), supports Python 2.7. and 3.5

Matlab bindings of some functions (currently unsupported)