BInary COrrespondence Search for multi-shot stereo imaging, with optional CUDA acceleration.
This is the implementation of the corresponding paper which appeared in Optical 3D Metrology 2024:
@article{liebender2024libbicos,
title={libBICOS -- An Open Source GPU-Accelerated Library implementing BInary COrrespondence Search for 3D Reconstruction},
author={Liebender, Christoph and Bleier, Michael and N{\"u}chter, Andreas},
journal={The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences},
volume={48},
pages={57--64},
year={2024},
publisher={Copernicus Publications G{\"o}ttingen, Germany}
}
Dependencies:
gcc
or equivalent C compiler with C++17 support (build)meson
>= 1.1.0 (build)opencv 4.x
with cuda supportcuda 12.x
including toolkitbenchmark
(optional, for executing benchmarks)
# recommended: clone the most recent release
$ git clone --depth 1 --branch v1.2.2 https://github.com/JMUWRobotics/libBICOS
$ cd libBICOS
$ meson setup builddir --buildtype release
# optional but recommended if you have access to a CUDA-capable GPU
$ meson configure -Dimplementation=cuda builddir
$ meson install -C builddir
The versioning scheme of the library is Semantic Versioning.
After installing, you can include /usr/local/include/BICOS/*
and link against /usr/local/lib/libBICOS.so
.
Alternatively, this project builds bicos-cli
. To give you a feel for the parameters of BICOS, you can download an example dataset with data/prepare.sh
that contains rectified imagery from a stereo camera, where images per side only differ in the projected light pattern.
Calling:
$ bicos-cli data/{left,right} -q data/Q.yaml --threshold 0.96 --stacksize 33 --limited --variance 2.0 --step 0.1 -o /tmp/result.png
will get you:
While only requiring ~110ms (RTX4090) and ~1.6GB VRAM for matching on two stacks of 33 images each.
The most significant parameters can be summarized:
--threshold
: increasing this reduces match-outliers. High values rely on a reliable pattern.--variance
: high values reduce coarse outliers, e.g. pixels where no pattern was projected. May reduce correct matches on low pattern contrast.--step
: optional value for subpixel-interpolation around matches.
Other settings are available; Try bicos-cli -h
for details.
$ meson test --benchmark -C builddir --interactive
For starters, you may find https://github.com/Sir-Photch/VRRTest useful for projecting a light pattern using an aftermarket projector.
This library is licensed under the GNU Lesser General Public License v3.0 (or later). Please see COPYING and COPYING.LESSER for details.