10#ifndef SFM_BUNDLE_ADJUSTMENT_HEADER
11#define SFM_BUNDLE_ADJUSTMENT_HEADER
58 BA_CAMERAS_AND_POINTS = 1 | 2
92 void set_cameras (std::vector<Camera>* cameras);
93 void set_points (std::vector<Point3D>* points);
94 void set_observations (std::vector<Observation>* observations);
97 void print_status (
bool detailed =
false)
const;
104 void sanity_checks (
void);
105 void lm_optimize (
void);
111 void radial_distort (
double* x,
double* y,
double const* dist);
112 void rodrigues_to_matrix (
double const* r,
double* rot);
117 void analytic_jacobian_entries (
Camera const& cam,
Point3D const& point,
118 double* cam_x_ptr,
double* cam_y_ptr,
119 double* point_x_ptr,
double* point_y_ptr);
123 void update_camera (
Camera const& cam,
double const* update,
Camera* out);
124 void update_point (
Point3D const& pt,
double const* update,
Point3D* out);
130 std::vector<Camera>* cameras;
131 std::vector<Point3D>* points;
132 std::vector<Observation>* observations;
133 int const num_cam_params;
139BundleAdjustment::Options::Options (
void)
140 : verbose_output(false)
141 , bundle_mode(BA_CAMERAS_AND_POINTS)
142 , lm_max_iterations(50)
143 , lm_min_iterations(0)
144 , lm_delta_threshold(1e-4)
145 , lm_mse_threshold(1e-8)
153 , num_lm_iterations(0)
154 , num_lm_successful_iterations(0)
155 , num_lm_unsuccessful_iterations(0)
156 , num_cg_iterations(0)
163 , log(options.verbose_output
164 ?
util::Logging::LOG_DEBUG
165 :
util::Logging::LOG_INFO)
168 , observations(nullptr)
169 , num_cam_params(options.fixed_intrinsics ? 6 : 9)
177 this->cameras = cameras;
183 this->points = points;
189 this->observations = points_2d;
A simple bundle adjustment optimization implementation.
BundleAdjustment(Options const &options)
void set_cameras(std::vector< Camera > *cameras)
void set_observations(std::vector< Observation > *observations)
void set_points(std::vector< Point3D > *points)
Sparse matrix class in Yale format for column-major matrices.
Parser, tokenizer, timer, smart pointer, threads, etc.
#define SFM_BA_NAMESPACE_BEGIN
#define SFM_NAMESPACE_END
#define SFM_NAMESPACE_BEGIN
#define SFM_BA_NAMESPACE_END
double lm_delta_threshold
LinearSolver::Options linear_opts
int num_lm_successful_iterations
int num_lm_unsuccessful_iterations
Camera representation for bundle adjustment.
3D point representation for bundle adjustment.