ROBA: Rotation-Only Bundle Adjustment
Paper, Video, Poster, Presentation, Supplementary Material
In this repository, we provide the implementation of ROBA. If you use our code, please cite it as follows:
@InProceedings{Lee_2021_CVPR,
author = {Lee, Seong Hun and Civera, Javier},
title = {Rotation-Only Bundle Adjustment},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2021}
}
Quick start
-
To initialize the rotations, ROBA relies on rotation averaging. Specifically, we used the rotation averaging code provided by Chatterjee and Govindu. Go to their webpage and download their code (PAMI version). Extract
SO3GraphAveraging
folder and save it in the same directory. -
Download the processed input/results data from here and save it in the same directory.
-
In Matlab, run the following command to compile the mex function:
mex computeEdgeCost.cpp
. -
Run
RunSynthetic.m
(orRunReal.m
) to try it on the synthetic (or real) data.
File descriptions
-
RunSynthetic.m
: Run the experiment on synthetic data. Setdraw3D = true
to visualize the ground truth data. Choose the simulation configuration by setting theconfig
variable. -
RunReal.m
: Run the experiment on the real data. SetplotResult = true
to show the accuracy evolution over iterations. Setdatasets
to select the datasets to evaluate. The Booleanssquare_rooting
,switch_alpha
andapproximate_gradient
are for the ablation study in the paper. -
computeEdgeCost.cpp
: C++ Mex implementation of Algorithm 1 in our paper. -
GetGroundTruthRealData.m
: Parse data from 1DSfM datasets. It is not necessary to run this script, as we already provide the parsed data here. If you want to try this yourself, then you need to download the raw data (.out
,coords.txt
,EGs.txt
,tracks.txt
) from their webpage. -
LoadAndPlotResultsInPaper.m
: Load and plot the published results in our paper. Our results are available here.