CoLi-BA: Compact Linearization based Solver for Bundle Adjustment
Paper
Introduction
CoLi-BA is an open-source C++ library for solving bundle adjustment problems. CoLi-BA has a very high solution speed, which is several times of the existing solution algorithm.
Install
Requirements
- C++17
- GCC 7.5+
- CMake 3.10+
Dependencies from the default Ubuntu repositories:
sudo apt-get install \
wget \
git \
cmake \
build-essential \
libglew-dev \
libgtest-dev \
libgflags-dev \
libgoogle-glog-dev \
libatlas-base-dev \
libsuitesparse-dev \
libtbb-dev
Install eigen
git clone https://gitlab.com/libeigen/eigen.git
cd eigen
mkdir build && cd build
cmake .. && sudo make install
Install g2o
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build && cd build
cmake .. && make -j4 &&sudo make install
Compile CoLi-BA
git clone --recursive https://github.com/zju3dv/CoLi-BA.git
cd CoLi-BA/ceres-solver
mkdir build && cd build
cmake .. && make -j4 && sudo make install
cd ../../
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
Getting Started
-
Download the provided test data or prepare data with your own images.
-
The input data can be generated by colmap
/data/path/ ├── cameras.bin ├── images.bin └── points3D.bin
-
Run the following command to solve the BA problems:
./bin/main coli /data/path/
-
Run the following command to evaluate on test data(KITTI and 1DSfM):
python3 ./run_compare.py --data_path=/data1/test_data/ --method=coli
You can also evaluate other methods. We currently provide ceres and g2o.
Citation
@article{ye2022coli,
title={CoLi-BA: Compact Linearization based Solver for Bundle Adjustment},
author={Ye, Zhichao and Li, Guanglin and Liu, Haomin and Cui, Zhaopeng and Bao, Hujun and Zhang, Guofeng},
journal={IEEE Transactions on Visualization and Computer Graphics},
year={2022},
publisher={IEEE}
}