Bundle adjustment explained