This page uses cookies. For details and possible settings refer to our Privacy Policy.
Continuing to use this page means accepting the processing of cookie files.

Accept (hide infobox)

Adaptive Vision Library


Adaptive Vision Library is a general purpose machine vision toolset optimised for the needs of industrial quality inspection. The main strengths of the library include the excellent performance and comprehensive set of machine vision algorithms with particularly good support of the low level techniques: image processing, blob analysis and contour analysis.

The main part of the library is divided in six parts, defined according to the datatype(s) of interest:

  • Image Processing - containing methods for initial image preprocessing/refinement
  • Blob Analysis, Contour Analysis - two big toolsets for image analysis built upon the processing of regions (Blob Analysis) and subpixel-precise paths (Contour Analysis) extracted from an image
  • Profiles, Histograms - auxiliary toolsets for the processing and analysis of 1D data
  • Geometry 2D - platform for performing final measurements between objects found using (possibly) different tools.

Additionally, the library provides support for a number of specialised techniques like1D Measurement, Fourier Analysis and Shape-based Template Matching.

Relation between Adaptive Vision Library and Adaptive Vision Studio

Each function of Adaptive Vision Library is a basis for corresponding filter available in Adaptive Vision Studio. Therefore it is possible (and advisable) to use the Adaptive Vision Studio as a convenient, point & click prototyping tool, even if one intends to develop the final solution in C++ using Adaptive Vision Library. Compare the ThresholdImage function to the ThresholdImage filter:

Adaptive Vision Library:

void ThresholdImage
    const Image& inImage,
    Optional<const Region&> inRoi,
    Optional<real> inMinValue,
    Optional<real> inMaxValue,
    real inFuzziness,
    Image& outMonoImage

Adaptive Vision Studio:


Image Processing

High performance, any-shape ROI operations for unary and binary arithmetics, image refinement, morphology, smoothing, spatial transformations, feature extraction, gradient extraction, numerous thresholding methods, disc IO and more.

Blob Analysis

Powerful set of robust operations for classic technique of blob analysis. Provides numerous methods of blob extraction, set arithmetics, region refinement, any-kernel morphology, skeletonization, spatial transformations, feature extraction, measurements and more.

Contour Analysis

Subpixel-precise toolset designed as an alternative to blob analysis, particularly suitable for shape analysis. Provides methods for contour extraction, refinement, segmentation, smoothing, classification, global transformations, feature extraction and more.

Geometry 2D

Exhaustive toolset of geometric operations compatible with other parts of the library. Provides more than 50 operations for 2D geometry, including fitting of geometric primitives, measurements, intersections, tangents, feature extraction and more.

Histograms & Profiles

Auxiliary toolsets allowing to refine and analyse 1D data extracted from the image. Innovative design of the Library puts the classic histograms and profiles far beyond their usual applications. It is not uncommon in Adaptive Vision Library to analyse the profile of distance between two paths, or histogram of the numeric features extracted from a set of objects.

1D Measurement

Set of methods for classic technique of extracting edges across image profile. The Library provides specialised methods for measuring paired edges of alternating characteristics and support measurements along any path.

Edge-based Template Matching

Efficient, robust and easy to use methods for template matching. Whenever low-level techniques are not enough to locate the object you look for, these tools provide sound alternative.

Fourier Analysis

Suitable both for educational experimentation and industrial application, this toolset provides methods for Fourier transform and image processing in the frequency domain.



In Adaptive Vision Library careful design of algorithms goes hand in hand with exhaustive hardware optimisations, resulting in performance that puts the library among the fastest in the world. Our implementations make use of SSE instructions and parallel computations on multicore processors.

Modern Design

All datatypes features automatic memory management. Errors are handled explicitly by throwing an appropriate exception. Innovative optional inputs construction is provided for elegant handling of special values on inputs.


Function names have a form of VERB + NOUN (e.g. SmoothImage, RotateVector). If there are several variants of a single operation they are distinguished with a suffix starting with an underscore (e.g. SmoothImage_Mean, SmoothImage_Gauss). All results are returned via reference output parameters, so that many outputs are always possible.

Example Results

Example program

Simple program based on Adaptive Vision Library may look as follows:

#include <AVL.h>

using namespace atl;
using namespace avl;

int main()
        Image input, output;
        LoadImage("input.bmp", input);
        ThresholdImage(input, atl::NIL, 128, atl::NIL, 0, output);
        SaveImage(output, "output.bmp");
        return 0;
    catch (const avl::Error& er)
        return -1;

Further reading

Documentation for the Library is available online.