The blo Library
The blo Library

The blo library is comprised of algorithm implementations that are useful in computer vision, especially multiple view geometry, and photogrammetry.

All functions and classes are in namespace blo. Related functions are contained in the same file.

Using the blo library

The directory structure of the blo library:

Header files

The file blo.h includes all of the blo header files. For forward compatibility, include only blo.h in your program.

#include <blo/blo.h>


For the debug version of the blo library, link to blod.lib. For the release version of the blo library, link to blo.lib.


Some blo functions are multithreaded using OpenMP. To set the number of threads used, either set the environment variable OMP_NUM_THREADS or call setMaxNumThreads(). To disable multithreading, set the number of threads to 1.

If you use OpenMP in your application, then it is recommended that your application uses the same OpenMP runtime as the blo library does. To do so, link to libiomp5md.lib. If using Microsoft Visual Studio, then also ignore (/NODEFAULTLIB) vcompd.lib and vcomp.lib for debug and release versions, respectively.


Image coordinates

In the blo library the upper left corner of an image has coordinates (0, 0) with x increasing left to right and y increasing top to bottom.

Subpixel coordinates

When specifying the coordinates of a pixel using integral data types (e.g., int), the coordinates specify the entire pixel at those coordinates. However, this is not the case for coordinates specified using floating-point data types (e.g., double) or other data types that represent real numbers, as the coordinates specify an image point within a pixel. In the blo library, the coordinates of a point at the center of a pixel has integral values. For example, for the pixel at coordinates (2, 3), the point at the center of the pixel has coordinates (2.0, 3.0) and the point at the upper left corner of the pixel is (1.5, 2.5).