A collection of tools for generating synthetic bundle adjustment datasets.
Datasets can either be generated programatically via the library or using the included executables. When using SnavelyCamera
s, the coordinate system is -z forward, y up.
# Generate a problem from a 3D model
city2ba generate test_scene.obj problem.bal --cameras 100 --points 200
# Add noise to the problem
city2ba noise problem.bal problem_noised.bal --drift-strength 0.001 --rotation-std 0.0001
# Generate a problem using a city block grid
city2ba synthetic problem.bal --blocks 4
# Convert a problem to a format for visualization
city2ba ply problem.bal problem.ply
First install embree (available at https://github.com/embree/embree). Then install cargo to build the code and dependencies (https://rustup.rs is the easiest way to get cargo).
To install the latest stable version run:
EMBREE_DIR=/path/to/embree/lib cargo install city2ba
Make sure to point EMBREE_DIR
to the lib
directory inside of the directory
where you installed embree.
To build the latest version run:
git clone https://github.com/tkonolige/city2ba.git
cd city2ba
EMBREE_DIR=/path/to/embree/lib cargo install --path .
Make sure to point EMBREE_DIR
to the lib
directory inside of the directory
where you installed embree.
The city2ba
binary is installed into $HOME/.cargo/bin
. In order to run the
binary you will need to add this directory to your PATH
(you can do this with
export PATH="$HOME/.cargo/bin:$PATH"
, you may want to add this to your
.bashrc
or equivalent).
A simple scene is provided in test_scene.obj
for you to experiment with. You can download it from https://github.com/tkonolige/city2ba/raw/master/test_scene.obj.
Build City2BA locally with:
git clone https://github.com/tkonolige/city2ba.git
cd city2ba
cargo build --release # release mode is recommended for performance
Run tests with:
cargo test
Executables can be run with:
cargo --release ARGS GO HERE
Please use the GitHub issue tracker to report issues, ask questions, and submit patches.