Discrete-continuous optimization for large-scale structure from motion