Bö is a collection of basic and advanced methods and data structures for 2D image processing and segmentation, 3D object analysis, surface reconstruction. Written entirely in C++, the library provides loosely-coupled though completely compatible modules for various problems in computer vision. Bö is BSD licensed. Please be advised that Bö is mainly a research project and might contain bugs and rough edges.
- Highly customizable Markov random field (MRF) representation for regular 2D lattices, as well as several predefined prior and likelihood energy functionals ready to use in MRF models.
- Optimization algorithms for Markov random fields: Metropolis–Hastings algorithm, Modified Metropolis Dynamics (MMD), Iterated conditional modes (ICM).
- Modified Butterfly subdivision surface method.
- Robust mesh-growing surface reconstruction method.
- Iterative closest point (ICP) registration algorithm.
- Triangular mesh with support of export/import to PLY file format.
- Various point-to-point and point-to-plane metrics in 3D.
- Transformations in 3D space based on quaternions or transformation matrices.
- Generic representation of multidimensional vectors and points.
- Generic representation of 2D images.
- Linear filtering for 2D images.
- Matrix operations (e.g. matrix inversion, eigenvectors and eigenvalues of real matrices).
No C++11 features are currently used in order to support older compilers.
- Boost. Minimal required version of boost is 1.43 because of
boost::array::fill(). This function is used only once and can be rewritten, that lowers the version needed to 1.38 because of the ScopeExit library. If you also want to build tests, boost version 1.44 is required because of the Filesystem version 3 library.
- Google Test is used for testing. If you are not going to build tests, you may ignore this dependency.
- There is some header-only utility code for OpenCV library, however, it is disabled by default and if you don't plan to use it in your project, you may ignore this dependency.
No pre-built binaries are currently available. Use the following command to get the source code:
$ hg pull https://bitbucket.org/rukletsov/b
CMake is currently used to build Bö and its tests. If you use CMake from command line, you may find the following options useful:
-DCMAKE_BUILD_TYPE=Debug -DBuildTests=ON -DUsePch=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DBuildTests=ON -DUsePch=OFF -DBUILD_SHARED_LIBS=OFF
The code has been successfully built with, tested and run on:
- Ubuntu 10.04 32bit with gcc 4.4.3.
- Fedora 17 32bit with gcc 4.7.0.
- openSUSE 12.2 64bit with gcc 4.6.2 and clang 3.1.
- Mac OS X Lion (10.7.2) 64bit with gcc 4.2.1 and clang 3.0.
- Windows XP 32bit with msvc2005 and msvc2008.
- Windows 7 64bit with msvc2010.
Code samples and overview of some features are available on project wiki.