ALVAR Core

ALVAR Core is a low-level toolkit and fast marker detector for augmented reality applications on mobile devices. It has been developed by VTT Technical Research Centre of Finland Ltd.

Features

Image Handling
Access and work with single- and multi-channel image data. Image memory can be fully managed or wrap existing memory locations.
Camera and Lens
Model the intrinsic parameters of a camera using the standard pinhole camera model and convert to and from a projection matrix. Model the distortion parameter of a camera using the division lens model and undistort and distort image points. Calibrate the intrinsic and distortion parameters of a camera from images of a calibration target.
Pose and Perspective Projection
Store poses consisting of a 3D position and orientation in right-hand coordinates and easily convert to and from common rendering conventions. Project and back-project points using the perspective camera model and a given pose. The projection is done in normalized coordinates and support for normalizing and un-normalizing points is provided.
Pose Optimization
Optimize a perspective camera pose by minimizing 3D point reprojection errors. The optimization is performed by specifying corresponding 2D image points and 3D world points along with weights for each point.
Blob Detection
Sequentially detect and iterate over blobs in a binary image.
Marker Definition
Encode and decode native ALVAR fiducial markers that consist of a margin and a variable resolution Hamming encoded content block. The encoded content can be an integer or a string consisting of the most common characters encoded with 6 bits. New marker types can be defined by implementing a simple interface.
Marker Detector
Sequentially detect and track all markers in an image. Configure the detector by passing multiple marker prototypes and whether all ids or exact marker id matches should be detected. The detector also supports negative markers where the white and black areas have been inverted.
Cross Platform Support
Cross platform support and unified API for threads, mutexes, wait events, message queues, timers, filesystem operations and logging.
Samples
Several code samples show how to use the most common APIs provided by the library. Two of the samples can be used directly to calibrate cameras and generate markers.

Platforms

ALVAR Mobile is implemented using portable C++ and as such is available across many mobile and desktop platforms. It is currently known to work with the following platforms.

0.12.0

  • Android 7+ (NDK r15c, libc++, API Level 24+)
  • Windows 7+, only 64 bit version (Visual Studio 2017+)
  • Universal Windows Platform 10+ (Visual Studio 2017+)
  • Linux (GCC 4.6+)
  • iOS 9.3+, only arm64 (not tested)
  • Mac 10.9+ (not tested)

previous versions

  • Android 7+ (NDK r15c, libc++, API Level 24+)
  • iOS 9.3+ (XCode 7.3+)
  • Universal Windows Platform 10+ (Visual Studio 2015+)
  • Linux (GCC 4.6+)
  • Windows 7+ (Visual Studio 2015+)
  • Mac 10.9+ (XCode 7.3+)

Dependencies

0.12.0

ALVAR Mobile only depends on a single library.

  • Eigen 3.3.7

Some of the samples and tests depend on a few more libraries. Note that these are entirely optional.

  • OpenCV 4.2.0
  • FreeGLUT 2.8+
  • CxxTest 3.10.1

previous versions

ALVAR Mobile only depends on a single library.

  • Eigen 3.3.7

Some of the samples and tests depend on a few more libraries. Note that these are entirely optional.

  • OpenCV 3.2+
  • FreeGLUT 2.8+
  • CxxTest 3.10.1