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
SO3GraphAveragingfolder 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 = trueto visualize the ground truth data. Choose the simulation configuration by setting theconfigvariable. -
RunReal.m: Run the experiment on the real data. SetplotResult = trueto show the accuracy evolution over iterations. Setdatasetsto select the datasets to evaluate. The Booleanssquare_rooting,switch_alphaandapproximate_gradientare 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.