From d0d08d191e58ec8a9b9c4c88aa80b0101e200306 Mon Sep 17 00:00:00 2001 From: xsun Date: Fri, 2 Nov 2018 16:18:05 +0800 Subject: [PATCH 01/13] add gitignore --- .gitignore | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..11463ba --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# Folders +*/build/* +/cmake-build-debug/* +.DS_Store +*/.DS_Store +*/tmp +*/.vscode + From 3a0fa1220b9c703f9302049df8cfc98da902cfa7 Mon Sep 17 00:00:00 2001 From: xsun Date: Fri, 2 Nov 2018 16:19:58 +0800 Subject: [PATCH 02/13] add assert head file and fix argv.conf --- .gitignore | 2 +- .../task2/class2_test_fundamental_ransac.cc | 1 + examples/task2/class2_test_math_basic.cc | 57 +- .../task3/class3_test_bundle_adjustment.cc | 1 + examples/task3/class3_test_lm_optimize.cc | 941 +++++++++++++++++- examples/task4/class4_test_incremental_sfm.cc | 426 +++++++- .../task5/class5_scene2pset_multi_views.cc | 3 +- .../task5/class5_scene2pset_single_view.cc | 405 +++++++- 8 files changed, 1830 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 11463ba..6c036e9 100644 --- a/.gitignore +++ b/.gitignore @@ -32,7 +32,7 @@ *.app # Folders -*/build/* +build/* /cmake-build-debug/* .DS_Store */.DS_Store diff --git a/examples/task2/class2_test_fundamental_ransac.cc b/examples/task2/class2_test_fundamental_ransac.cc index eed0e2a..e784e8b 100644 --- a/examples/task2/class2_test_fundamental_ransac.cc +++ b/examples/task2/class2_test_fundamental_ransac.cc @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "math/functions.h" #include "sfm/fundamental.h" diff --git a/examples/task2/class2_test_math_basic.cc b/examples/task2/class2_test_math_basic.cc index 8a9c9ee..9720a37 100644 --- a/examples/task2/class2_test_math_basic.cc +++ b/examples/task2/class2_test_math_basic.cc @@ -1 +1,56 @@ -// // Created by caoqi on 2018/8/30. // #include #include #include "math/matrix.h" #include "math/vector.h" int main(int argc, char *argv[]) { /*构建一个维度为4x5的矩阵,数据类型为double的矩阵*/ math::Matrix A; /*矩阵元素的设置和访问*/ int id=0; for(int i=0; i< A.rows; i++){ for(int j=0; j< A.cols; j++){ A(i,j) = ++id; std::cout< col4 = A.col(4); // 取第5列元素 std::cout<<"col4: "< row2 = A.row(2); // 取第3行元素 std::cout<<"row2: "< v1; for(int i=0; iU; math::Matrix S, V; math::matrix_svd (A,&U, &S, &V); std::cout<<"U: "< +#include +#include "math/matrix.h" +#include "math/vector.h" + +int main(int argc, char *argv[]) +{ + + /*构建一个维度为4x5的矩阵,数据类型为double的矩阵*/ + math::Matrix A; + + /*矩阵元素的设置和访问*/ + int id=0; + for(int i=0; i< A.rows; i++){ + for(int j=0; j< A.cols; j++){ + A(i,j) = ++id; + std::cout< col4 = A.col(4); // 取第5列元素 + std::cout<<"col4: "< row2 = A.row(2); // 取第3行元素 + std::cout<<"row2: "< v1; + for(int i=0; i U; + math::Matrix S, V; + math::matrix_svd (A,&U, &S, &V); + std::cout<<"U: "< #include #include +#include #include "math/matrix.h" #include "math/vector.h" diff --git a/examples/task3/class3_test_lm_optimize.cc b/examples/task3/class3_test_lm_optimize.cc index f0924f9..3c6ee7a 100644 --- a/examples/task3/class3_test_lm_optimize.cc +++ b/examples/task3/class3_test_lm_optimize.cc @@ -1 +1,940 @@ -// // Created by caoqi on 2018/9/2. /* * 实现Levenberg-Marquardt算法,该算法又称为 damped least squares 阻尼最小二乘,用来求解非线性最小二乘 * 问题。LM找到的是局部最小值,该算法介于高斯牛顿法和梯度下降法之间,并通过控制信赖域尺寸的大小,在高斯牛顿法 * 和梯度下降法之间进行调整。LM 算法比高斯牛顿法速度慢但是更为鲁棒, * * LM算法的原理是用模型函数f对待估向量p在邻域内做线性估计(泰勒展开),忽略掉二阶以上的导数项,从而转化为线性最小 * 二乘问题。本质上就是用二次曲面对目标函数进行局部近似。LM算法属于一种信赖域法,即:从初始值开始,先假设一个可以 * 信赖的最大的位移s, 然后以当前点为中心,以s为半径的区域内,通过寻找目标函数的一个近似二次函数的最优点来求得真正 * 的位移。在得到位移之后,再计算目标函数值,如果其使得目标函数值得下降满足了一定条件,那么说明这个位移是可靠的 * 则继续按照此规则迭代计算下去;如果其不能使目标函数的下降满足一定的条件,则应该减少信赖域的范围,重新求解。 * * LM算法的一般流程是: * 1) 初始化 * 2) 计算雅阁比矩阵J,构造正规方程(JTJ + lambdaI) = JTf * 3) 求解正规方程(共轭梯度或者预定共轭梯度法) * 4) 判断若求解成功 * 增加信赖域(1/lambda),使得求解算法接近于高斯牛顿法,加快收敛速度 * 判断终止条件 * 判断若求解失败 * 减少信赖域(1/lambda), 使得求解算法解决域梯度下降法 * 5) 重复1), 2), 3),4) * * (注意,信赖域的大小为正规方程中lambda的倒数) */ // #include #include #include #include #include "sfm/ba_conjugate_gradient.h" #include "sfm/bundle_adjustment.h" #include "sfm/ba_sparse_matrix.h" #include "sfm/ba_dense_vector.h" #include "sfm/ba_linear_solver.h" #include "sfm/ba_sparse_matrix.h" #include "sfm/ba_dense_vector.h" #include "sfm/ba_cholesky.h" typedef sfm::ba::SparseMatrix SparseMatrixType; typedef sfm::ba::DenseVector DenseVectorType; //global variables std::vector cameras; std::vector points; std::vector observations; #define TRUST_REGION_RADIUS_INIT (1000) #define TRUST_REGION_RADIUS_DECREMENT (1.0 / 10.0) #define TRUST_REGION_RADIUS_GAIN (10.0) // lm 算法最多迭代次数 const int lm_max_iterations = 100; // mean square error double initial_mse = 0.0; double final_mse = 0.0; int num_lm_iterations = 0; int num_lm_successful_iterations = 0; int num_lm_unsuccessful_iterations = 0; // lm 算法终止条件 double lm_mse_threshold = 1e-16; double lm_delta_threshold = 1e-8; // 信赖域大小 double trust_region_radius = 1000; int cg_max_iterations =1000; //相机参数个数 int camera_block_dim = 9; const int num_cam_params = 9; /** * /decription 加载相关数据,包括相机的初始内外参数,三维点,观察点 * @param file_name * @param cams * @param pts3D * @param observations */ void load_data(const std::string& file_name ,std::vector&cams ,std::vector&pts3D ,std::vector &observations){ /* 加载数据 */ std::ifstream in(file_name); assert(in.is_open()); std::string line, word; // 加载相机参数 { int n_cams = 0; getline(in, line); std::stringstream stream(line); stream >> word >> n_cams; cams.resize(n_cams); for (int i = 0; i < cams.size(); i++) { getline(in, line); std::stringstream stream(line); stream >> cams[i].focal_length; stream >> cams[i].distortion[0] >> cams[i].distortion[1]; for (int j = 0; j < 3; j++)stream >> cams[i].translation[j]; for (int j = 0; j < 9; j++)stream >> cams[i].rotation[j]; } } // 加载三维点 { int n_points = 0; getline(in, line); std::stringstream stream(line); stream>>word>>n_points; pts3D.resize(n_points); for(int i=0; i>pts3D[i].pos[0]>>pts3D[i].pos[1]>>pts3D[i].pos[2]; } } //加载观察点 { int n_observations = 0; getline(in, line); std::stringstream stream(line); stream>>word>>n_observations; observations.resize(n_observations); for(int i=0; i>observations[i].camera_id >>observations[i].point_id >>observations[i].pos[0] >>observations[i].pos[1]; } } } /* * Computes for a given matrix A the square matrix A^T * A for the * case that block columns of A only need to be multiplied with itself. * Becase the resulting matrix is symmetric, only about half the work * needs to be performed. */ void matrix_block_column_multiply (sfm::ba::SparseMatrix const& A, std::size_t block_size, sfm::ba::SparseMatrix* B) { sfm::ba::SparseMatrix::Triplets triplets; triplets.reserve(A.num_cols() * block_size); for (std::size_t block = 0; block < A.num_cols(); block += block_size) { std::vector> columns(block_size); for (std::size_t col = 0; col < block_size; ++col) A.column_nonzeros(block + col, &columns[col]); for (std::size_t col = 0; col < block_size; ++col) { double dot = columns[col].dot(columns[col]); triplets.emplace_back(block + col, block + col, dot); for (std::size_t row = col + 1; row < block_size; ++row) { dot = columns[col].dot(columns[row]); triplets.emplace_back(block + row, block + col, dot); triplets.emplace_back(block + col, block + row, dot); } } } B->allocate(A.num_cols(), A.num_cols()); B->set_from_triplets(triplets); } /* * Inverts a matrix with 3x3 bocks on its diagonal. All other entries * must be zero. Reading blocks is thus very efficient. */ void invert_block_matrix_3x3_inplace (sfm::ba::SparseMatrix* A) { if (A->num_rows() != A->num_cols()) throw std::invalid_argument("Block matrix must be square"); if (A->num_non_zero() != A->num_rows() * 3) throw std::invalid_argument("Invalid number of non-zeros"); for (double* iter = A->begin(); iter != A->end(); ) { double* iter_backup = iter; math::Matrix rot; for (int i = 0; i < 9; ++i) rot[i] = *(iter++); double det = math::matrix_determinant(rot); if (MATH_DOUBLE_EQ(det, 0.0)) continue; rot = math::matrix_inverse(rot, det); iter = iter_backup; for (int i = 0; i < 9; ++i) *(iter++) = rot[i]; } } /* * Inverts a symmetric, positive definite matrix with NxN bocks on its * diagonal using Cholesky decomposition. All other entries must be zero. */ void invert_block_matrix_NxN_inplace (sfm::ba::SparseMatrix* A, int blocksize) { if (A->num_rows() != A->num_cols()) throw std::invalid_argument("Block matrix must be square"); if (A->num_non_zero() != A->num_rows() * blocksize) throw std::invalid_argument("Invalid number of non-zeros"); int const bs2 = blocksize * blocksize; std::vector matrix_block(bs2); for (double* iter = A->begin(); iter != A->end(); ) { double* iter_backup = iter; for (int i = 0; i < bs2; ++i) matrix_block[i] = *(iter++); sfm::ba::cholesky_invert_inplace(matrix_block.data(), blocksize); iter = iter_backup; for (int i = 0; i < bs2; ++i) if (std::isfinite(matrix_block[i])) *(iter++) = matrix_block[i]; else *(iter++) = 0.0; } } /** * /descrition 将角轴法转化成旋转矩阵 * @param r 角轴向量 * @param m 旋转矩阵 */ void rodrigues_to_matrix (double const* r, double* m) { /* Obtain angle from vector length. */ double a = std::sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]); /* Precompute sine and cosine terms. */ double ct = (a == 0.0) ? 0.5f : (1.0f - std::cos(a)) / (2.0 * a); double st = (a == 0.0) ? 1.0 : std::sin(a) / a; /* R = I + st * K + ct * K^2 (with cross product matrix K). */ m[0] = 1.0 - (r[1] * r[1] + r[2] * r[2]) * ct; m[1] = r[0] * r[1] * ct - r[2] * st; m[2] = r[2] * r[0] * ct + r[1] * st; m[3] = r[0] * r[1] * ct + r[2] * st; m[4] = 1.0f - (r[2] * r[2] + r[0] * r[0]) * ct; m[5] = r[1] * r[2] * ct - r[0] * st; m[6] = r[2] * r[0] * ct - r[1] * st; m[7] = r[1] * r[2] * ct + r[0] * st; m[8] = 1.0 - (r[0] * r[0] + r[1] * r[1]) * ct; } /** * \description 根据求解得到的增量,对相机参数进行更新 * @param cam * @param update * @param out */ void update_camera (sfm::ba::Camera const& cam, double const* update, sfm::ba::Camera* out) { out->focal_length = cam.focal_length + update[0]; out->distortion[0] = cam.distortion[0] + update[1]; out->distortion[1] = cam.distortion[1] + update[2]; out->translation[0] = cam.translation[0] + update[3]; out->translation[1] = cam.translation[1] + update[4]; out->translation[2] = cam.translation[2] + update[5]; double rot_orig[9]; std::copy(cam.rotation, cam.rotation + 9, rot_orig); double rot_update[9]; rodrigues_to_matrix(update + 6, rot_update); math::matrix_multiply(rot_update, 3, 3, rot_orig, 3, out->rotation); } /** * \description 根据求解的增量,对三维点坐标进行更新 * @param pt * @param update * @param out */ void update_point (sfm::ba::Point3D const& pt, double const* update, sfm::ba::Point3D* out) { out->pos[0] = pt.pos[0] + update[0]; out->pos[1] = pt.pos[1] + update[1]; out->pos[2] = pt.pos[2] + update[2]; } /** * /descripition 根据求得的delta_x, 更新相机参数和三维点 * @param delta_x * @param cameras * @param points */ void update_parameters (DenseVectorType const& delta_x , std::vector*cameras , std::vector*points) { /* Update cameras. */ std::size_t total_camera_params = 0; for (std::size_t i = 0; i < cameras->size(); ++i){ update_camera(cameras->at(i), delta_x.data() + num_cam_params * i, &cameras->at(i)); total_camera_params = cameras->size() * num_cam_params; } /* Update points. */ for (std::size_t i = 0; i < points->size(); ++i) { update_point(points->at(i), delta_x.data() + total_camera_params + i * 3, &points->at(i)); } } /** * \description 对像素进行径向畸变 * @param x * @param y * @param dist */ void radial_distort (double* x, double* y, double const* dist) { double const radius2 = *x * *x + *y * *y; double const factor = 1.0 + radius2 * (dist[0] + dist[1] * radius2); *x *= factor; *y *= factor; } /** * \description 计算重投影误差 * @param vector_f * @param delta_x * @param cameras * @param points * @param observations */ void compute_reprojection_errors (DenseVectorType* vector_f , DenseVectorType const* delta_x , std::vector* cameras , std::vector *points ,std::vector *observations) { if (vector_f->size() != observations->size() * 2) vector_f->resize(observations->size() * 2); #pragma omp parallel for for (std::size_t i = 0; i < observations->size(); ++i) { sfm::ba::Observation const& obs = observations->at(i); sfm::ba::Point3D const& p3d = points->at(obs.point_id); sfm::ba::Camera const& cam = cameras->at(obs.camera_id); double const* flen = &cam.focal_length; // 相机焦距 double const* dist = cam.distortion; // 径向畸变系数 double const* rot = cam.rotation; // 相机旋转矩阵 double const* trans = cam.translation; // 相机平移向量 double const* point = p3d.pos; // 三维点坐标 sfm::ba::Point3D new_point; sfm::ba::Camera new_camera; // 如果delta_x 不为空,则先利用delta_x对相机和结构进行更新,然后再计算重投影误差 if (delta_x != nullptr) { std::size_t cam_id = obs.camera_id * num_cam_params; std::size_t pt_id = obs.point_id * 3; update_camera(cam, delta_x->data() + cam_id, &new_camera); flen = &new_camera.focal_length; dist = new_camera.distortion; rot = new_camera.rotation; trans = new_camera.translation; pt_id += cameras->size() * num_cam_params; update_point(p3d, delta_x->data() + pt_id, &new_point); point = new_point.pos; } /* Project point onto image plane. */ double rp[] = { 0.0, 0.0, 0.0 }; for (int d = 0; d < 3; ++d) { rp[0] += rot[0 + d] * point[d]; rp[1] += rot[3 + d] * point[d]; rp[2] += rot[6 + d] * point[d]; } rp[2] = (rp[2] + trans[2]); rp[0] = (rp[0] + trans[0]) / rp[2]; rp[1] = (rp[1] + trans[1]) / rp[2]; /* Distort reprojections. */ radial_distort(rp + 0, rp + 1, dist); /* Compute reprojection error. */ vector_f->at(i * 2 + 0) = rp[0] * (*flen) - obs.pos[0]; vector_f->at(i * 2 + 1) = rp[1] * (*flen) - obs.pos[1]; } } /** * \description 计算均方误差 * @param vector_f * @return */ double compute_mse (DenseVectorType const& vector_f) { double mse = 0.0; for (std::size_t i = 0; i < vector_f.size(); ++i) mse += vector_f[i] * vector_f[i]; return mse / static_cast(vector_f.size() / 2); } /** * /description 计算观察点坐标(x,y),相遇对相机参数和三维点坐标的雅阁比矩阵 * @param cam * @param point * @param cam_x_ptr * @param cam_y_ptr * @param point_x_ptr * @param point_y_ptr */ void my_jacobian(sfm::ba::Camera const& cam, sfm::ba::Point3D const& point, double* cam_x_ptr, double* cam_y_ptr, double* point_x_ptr, double* point_y_ptr) { const double f = cam.focal_length; const double *R = cam.rotation; const double *t = cam.translation; const double *X = point.pos; const double k0 = cam.distortion[0]; const double k1 = cam.distortion[1]; const double xc = R[0] *X[0] + R[1] *X[1] + R[2] *X[2] + t[0]; const double yc = R[3] *X[0] + R[4] *X[1] + R[5] *X[2] + t[1]; const double zc = R[6] *X[0] + R[7] *X[1] + R[8] *X[2] + t[2]; const double x = xc/zc; const double y = yc/zc; const double r2 = x*x + y*y; const double distort = 1.0 + (k0 + k1*r2)*r2; const double u = f* distort*x; const double v = f* distort*y; /*关于焦距的偏导数*/ cam_x_ptr[0] = distort*x; cam_y_ptr[0] = distort*y; /*计算关于径向畸变函数k0, k1的偏导数*/ // 计算中间变量 const double u_deriv_distort = f*x; const double v_deriv_distort = f*y; const double distort_deriv_k0 = r2; const double distort_deriv_k1 = r2*r2; cam_x_ptr[1] = u_deriv_distort*distort_deriv_k0; cam_x_ptr[2] = u_deriv_distort*distort_deriv_k1; cam_y_ptr[1] = v_deriv_distort*distort_deriv_k0; cam_y_ptr[2] = v_deriv_distort*distort_deriv_k1; // 计算中间变量 (x,y)关于(xc, yc, zc)的偏导数 const double x_deriv_xc = 1/zc; const double x_deriv_yc = 0; const double x_deriv_zc = -x/zc; const double y_deriv_xc = 0 ; const double y_deriv_yc = 1/zc; const double y_deriv_zc = -y/zc; // 计算u, v关于x, y的偏导数 const double u_deriv_x = f*distort; const double v_deriv_y = f*distort; // 计算中间变量distort关于r2的偏导数 const double distort_deriv_r2 = k0 + 2*k1*r2; // 计算中间变量r2关于xc, yc, zc的偏导数 const double r2_deriv_xc = 2*x/zc; const double r2_deriv_yc = 2*y/zc; const double r2_deriv_zc = -2*r2/zc; // 计算中间变量distort关于xc, yc, zc的偏导数 const double distort_deriv_xc = distort_deriv_r2*r2_deriv_xc; const double distort_deriv_yc = distort_deriv_r2*r2_deriv_yc; const double distort_deriv_zc = distort_deriv_r2*r2_deriv_zc; // 计算(u,v)关于xc, yc, zc的偏导数 const double u_deriv_xc = u_deriv_distort*distort_deriv_xc + u_deriv_x*x_deriv_xc; const double u_deriv_yc = u_deriv_distort*distort_deriv_yc + u_deriv_x*x_deriv_yc; const double u_deriv_zc = u_deriv_distort*distort_deriv_zc + u_deriv_x*x_deriv_zc; const double v_deriv_xc = v_deriv_distort*distort_deriv_xc + v_deriv_y*y_deriv_xc; const double v_deriv_yc = v_deriv_distort*distort_deriv_yc + v_deriv_y*y_deriv_yc; const double v_deriv_zc = v_deriv_distort*distort_deriv_zc + v_deriv_y*y_deriv_zc; /* 计算关于平移向量的t0, t1, t2的偏导数*/ const double xc_deriv_t0=1; const double yc_deriv_t1=1; const double zc_deriv_t2=1; cam_x_ptr[3] = u_deriv_xc* xc_deriv_t0; cam_x_ptr[4] = u_deriv_yc* yc_deriv_t1; cam_x_ptr[5] = u_deriv_zc* zc_deriv_t2; cam_y_ptr[3] = v_deriv_xc* xc_deriv_t0; cam_y_ptr[4] = v_deriv_yc* yc_deriv_t1; cam_y_ptr[5] = v_deriv_zc* zc_deriv_t2; /* 计算关于旋转矩阵(表示为角轴向量w0, w1, w2)的偏导数 */ const double rx = R[0] *X[0] + R[1] *X[1] + R[2] *X[2]; const double ry = R[3] *X[0] + R[4] *X[1] + R[5] *X[2]; const double rz = R[6] *X[0] + R[7] *X[1] + R[8] *X[2]; const double xc_deriv_w0 = 0; const double xc_deriv_w1 = rz; const double xc_deriv_w2 = -ry; const double yc_deriv_w0 = -rz; const double yc_deriv_w1 = 0 ; const double yc_deriv_w2 = rx; const double zc_deriv_w0 = ry; const double zc_deriv_w1 = -rx; const double zc_deriv_w2 = 0; cam_x_ptr[6] = u_deriv_yc*yc_deriv_w0 + u_deriv_zc*zc_deriv_w0; cam_x_ptr[7] = u_deriv_xc*xc_deriv_w1 + u_deriv_zc*zc_deriv_w1; cam_x_ptr[8] = u_deriv_xc*xc_deriv_w2 + u_deriv_yc*yc_deriv_w2; cam_y_ptr[6] = v_deriv_yc*yc_deriv_w0 + v_deriv_zc*zc_deriv_w0; cam_y_ptr[7] = v_deriv_xc*xc_deriv_w1 + v_deriv_zc*zc_deriv_w1; cam_y_ptr[8] = v_deriv_xc*xc_deriv_w2 + v_deriv_yc*yc_deriv_w2; /* 计算关于三维点坐标X,Y,X的偏导数*/ const double xc_deriv_X = R[0]; const double xc_deriv_Y = R[1];const double xc_deriv_Z = R[2]; const double yc_deriv_X = R[3]; const double yc_deriv_Y = R[4];const double yc_deriv_Z = R[5]; const double zc_deriv_X = R[6]; const double zc_deriv_Y = R[7];const double zc_deriv_Z = R[8]; point_x_ptr[0] = u_deriv_xc*xc_deriv_X + u_deriv_yc*yc_deriv_X + u_deriv_zc * zc_deriv_X; point_x_ptr[1] = u_deriv_xc*xc_deriv_Y + u_deriv_yc*yc_deriv_Y + u_deriv_zc * zc_deriv_Y; point_x_ptr[2] = u_deriv_xc*xc_deriv_Z + u_deriv_yc*yc_deriv_Z + u_deriv_zc * zc_deriv_Z; point_y_ptr[0] = v_deriv_xc*xc_deriv_X + v_deriv_yc*yc_deriv_X + v_deriv_zc * zc_deriv_X; point_y_ptr[1] = v_deriv_xc*xc_deriv_Y + v_deriv_yc*yc_deriv_Y + v_deriv_zc * zc_deriv_Y; point_y_ptr[2] = v_deriv_xc*xc_deriv_Z + v_deriv_yc*yc_deriv_Z + v_deriv_zc * zc_deriv_Z; } /** * \description 构造雅阁比矩阵,采用稀疏矩阵形式, * 关于相机参数的雅阁比矩阵大小为:(2*observations.size()) x (num_cameras*9) * 关于三维点坐标的雅阁比矩阵大小为:(2*observation.size()) x (num_points*3) * @param jac_cam-- 观察点相对于相机参数的雅阁比矩阵 * @param jac_points--观察点相对于三维点的雅阁比矩阵 */ void analytic_jacobian (SparseMatrixType* jac_cam , SparseMatrixType* jac_points) { assert(jac_cam); assert(jac_points); // 相机和三维点jacobian矩阵的行数都是n_observations*2 // 相机jacobian矩阵jac_cam的列数是n_cameras* n_cam_params // 三维点jacobian矩阵jac_points的列数是n_points*3 std::size_t const camera_cols = cameras.size() * num_cam_params; std::size_t const point_cols = points.size() * 3; std::size_t const jacobi_rows = observations.size() * 2; // 定义稀疏矩阵的基本元素 SparseMatrixType::Triplets cam_triplets, point_triplets; cam_triplets.reserve(observations.size() * 2 * num_cam_params); point_triplets.reserve(observations.size()*2 * 3); double cam_x_ptr[9], cam_y_ptr[9], point_x_ptr[3], point_y_ptr[3]; // 对于每一个观察到的二维点 for (std::size_t i = 0; i < observations.size(); ++i) { // 获取二维点,obs.point_id 三维点的索引,obs.camera_id 相机的索引 sfm::ba::Observation const &obs = observations[i]; // 三维点坐标 sfm::ba::Point3D const &p3d = points[obs.point_id]; // 相机参数 sfm::ba::Camera const &cam = cameras[obs.camera_id]; /*对一个三维点和相机求解偏导数*/ my_jacobian(cam, p3d, cam_x_ptr, cam_y_ptr, point_x_ptr, point_y_ptr); /*观察点对应雅各比矩阵的行,第i个观察点在雅各比矩阵的位置是2*i, 2*i+1*/ std::size_t row_x = i * 2 + 0; std::size_t row_y = i * 2 + 1; /*jac_cam中相机对应的列数为camera_id* n_cam_params*/ std::size_t cam_col = obs.camera_id * num_cam_params; /*jac_points中三维点对应的列数为point_id* 3*/ std::size_t point_col = obs.point_id * 3; for (int j = 0; j < num_cam_params; ++j) { cam_triplets.push_back(SparseMatrixType::Triplet(row_x, cam_col + j, cam_x_ptr[j])); cam_triplets.push_back(SparseMatrixType::Triplet(row_y, cam_col + j, cam_y_ptr[j])); } for (int j = 0; j < 3; ++j) { point_triplets.push_back(SparseMatrixType::Triplet(row_x, point_col + j, point_x_ptr[j])); point_triplets.push_back(SparseMatrixType::Triplet(row_y, point_col + j, point_y_ptr[j])); } } if (jac_cam != nullptr) { jac_cam->allocate(jacobi_rows, camera_cols); jac_cam->set_from_triplets(cam_triplets); } if (jac_points != nullptr) { jac_points->allocate(jacobi_rows, point_cols); jac_points->set_from_triplets(point_triplets); } } sfm::ba::LinearSolver::Status my_solve_schur ( SparseMatrixType const& jac_cams, SparseMatrixType const& jac_points, DenseVectorType const& values, DenseVectorType* delta_x) { /* * 雅阁比矩阵: * J = [Jc Jp] * Jc是与相机相关的模块,Jp是与三维点相关的模块。 * 正规方程 * (J^TJ + lambda*I)delta_x = J^T(x - F) * 进一步写为 * [ Jcc+ lambda*Icc Jcp ][delta_c]= [v] * [ Jxp Jpp+lambda*Ipp ][delta_p] [w] * * B = Jcc, E = Jcp, C = Jpp * 其中 Jcc = Jc^T* Jc, Jcx = Jc^T*Jx, Jxc = Jx^TJc, Jxx = Jx^T*Jx * v = Jc^T(F-x), w = Jx^T(F-x), deta_x = [delta_c; delta_p] */ // 误差向量 DenseVectorType const& F = values; // 关于相机的雅阁比矩阵 SparseMatrixType const& Jc = jac_cams; // 关于三维点的雅阁比矩阵 SparseMatrixType const& Jp = jac_points; SparseMatrixType JcT = Jc.transpose(); SparseMatrixType JpT = Jp.transpose(); // 构造正规方程 SparseMatrixType B, C; // B = Jc^T* Jc matrix_block_column_multiply(Jc, camera_block_dim, &B); // C = Jp^T*Jp matrix_block_column_multiply(Jp, 3, &C); // E = Jc^T*Jp SparseMatrixType E = JcT.multiply(Jp); /* Assemble two values vectors. */ DenseVectorType v = JcT.multiply(F); DenseVectorType w = JpT.multiply(F); v.negate_self(); w.negate_self(); /* 以矩阵B和C的对角元素重新构建对角阵*/ // SparseMatrixType B_diag = B.diagonal_matrix(); // SparseMatrixType C_diag = C.diagonal_matrix(); /* 添加信赖域 */ C.mult_diagonal(1.0 + 1.0 / trust_region_radius); B.mult_diagonal(1.0 + 1.0 / trust_region_radius); /* 求解C矩阵的逆C = inv(Jx^T+Jx + lambda*Ixx)*/ invert_block_matrix_3x3_inplace(&C); /* 计算S矩阵的Schur补用于高斯消元. */ SparseMatrixType ET = E.transpose(); // S = (Jcc+lambda*Icc) - Jc^T*Jx*inv(Jxx+ lambda*Ixx)*Jx^T*Jc SparseMatrixType S = B.subtract(E.multiply(C).multiply(ET)); // rhs = v - Jc^T*Jx*inv(Jxx+ lambda*Ixx)*w DenseVectorType rhs = v.subtract(E.multiply(C.multiply(w))); /* Compute pre-conditioner for linear system. */ //SparseMatrixType precond = S.diagonal_matrix(); //precond.cwise_invert(); SparseMatrixType precond = B; invert_block_matrix_NxN_inplace(&precond, camera_block_dim); /* 用共轭梯度法求解相机参数. */ DenseVectorType delta_y(Jc.num_cols()); typedef sfm::ba::ConjugateGradient CGSolver; CGSolver::Options cg_opts; cg_opts.max_iterations = cg_max_iterations; cg_opts.tolerance = 1e-20; CGSolver solver(cg_opts); CGSolver::Status cg_status; cg_status = solver.solve(S, rhs, &delta_y, &precond); sfm::ba::LinearSolver::Status status; status.num_cg_iterations = cg_status.num_iterations; switch (cg_status.info) { case CGSolver::CG_CONVERGENCE: status.success = true; break; case CGSolver::CG_MAX_ITERATIONS: status.success = true; break; case CGSolver::CG_INVALID_INPUT: std::cout << "BA: CG failed (invalid input)" << std::endl; status.success = false; return status; default: break; } /* 将相机参数带入到第二个方程中,求解三维点的参数. */ /*E= inv(Jp^T Jp) (JpT.multiply(F)-Jc^T * Jp * delta_y)*/ DenseVectorType delta_z = C.multiply(w.subtract(ET.multiply(delta_y))); /* Fill output vector. */ std::size_t const jac_cam_cols = Jc.num_cols(); std::size_t const jac_point_cols = Jp.num_cols(); std::size_t const jac_cols = jac_cam_cols + jac_point_cols; if (delta_x->size() != jac_cols) delta_x->resize(jac_cols, 0.0); for (std::size_t i = 0; i < jac_cam_cols; ++i) delta_x->at(i) = delta_y[i]; for (std::size_t i = 0; i < jac_point_cols; ++i) delta_x->at(jac_cam_cols + i) = delta_z[i]; return status; } /** * /description LM 算法流程 * @param cameras * @param points * @param observations */ void lm_optimization(std::vector*cameras ,std::vector*points ,std::vector* observations){ /*1.0 初始化*/ // 计算重投影误差向量 DenseVectorType F, F_new; compute_reprojection_errors(&F, nullptr, cameras, points, observations);// todo F 是误差向量 // 计算初始的均方误差 double current_mse = compute_mse(F); initial_mse = current_mse; final_mse = current_mse; // 设置共轭梯度法的相关参数 trust_region_radius = TRUST_REGION_RADIUS_INIT; /* Levenberg-Marquard 算法. */ for (int lm_iter = 0; ; ++lm_iter) { // 判断终止条件,均方误差小于一定阈值 if (current_mse < lm_mse_threshold) { std::cout << "BA: Satisfied MSE threshold." << std::endl; break; } //1.0 计算雅阁比矩阵 SparseMatrixType Jc, Jp; analytic_jacobian(&Jc, &Jp); //2.0 预置共轭梯梯度法对正规方程进行求解*/ DenseVectorType delta_x; sfm::ba::LinearSolver::Status cg_status = my_solve_schur(Jc, Jp, F, &delta_x); //3.0 根据计算得到的偏移量,重新计算冲投影误差和均方误差,用于判断终止条件和更新条件. double new_mse, delta_mse, delta_mse_ratio = 1.0; // 正规方程求解成功的情况下 if (cg_status.success) { /*重新计算相机和三维点,计算重投影误差,注意原始的相机参数没有被更新*/ compute_reprojection_errors(&F_new, &delta_x, cameras, points, observations); /* 计算新的残差值 */ new_mse = compute_mse(F_new); /* 均方误差的绝对变化值和相对变化率*/ delta_mse = current_mse - new_mse; delta_mse_ratio = 1.0 - new_mse / current_mse; } // 正规方程求解失败的情况下 else { new_mse = current_mse; delta_mse = 0.0; } // new_mse < current_mse表示残差值减少 bool successful_iteration = delta_mse > 0.0; /* * 如果正规方程求解成功,则更新相机参数和三维点坐标,并且增大信赖域的尺寸,使得求解方式 * 趋近于高斯牛顿法 */ if (successful_iteration) { std::cout << "BA: #" << std::setw(2) << std::left << lm_iter << " success" << std::right << ", MSE " << std::setw(11) << current_mse << " -> " << std::setw(11) << new_mse << ", CG " << std::setw(3) << cg_status.num_cg_iterations << ", TRR " << trust_region_radius << ", MSE Ratio: "<= lm_max_iterations) { std::cout << "BA: Reached maximum LM iterations of " << lm_max_iterations << std::endl; break; } } final_mse = current_mse; } int main(int argc, char* argv[]) { /* 加载数据 */ load_data("./examples/task2/test_ba.txt",cameras, points, observations); lm_optimization(&cameras, &points, &observations); // ba优化 // sfm::ba::BundleAdjustment::Options ba_opts; // ba_opts.verbose_output = true; // ba_opts.lm_mse_threshold = 1e-16; // ba_opts.lm_delta_threshold = 1e-8; // sfm::ba::BundleAdjustment ba(ba_opts); // ba.set_cameras(&cameras); // ba.set_points(&points); // ba.set_observations(&observations); // ba.optimize(); // ba.print_status(); // 将优化后的结果重新赋值 std::vector new_cam_poses(2); std::vector radial_distortion(2); std::vector new_pts_3d(points.size()); for(int i=0; i +#include +#include +#include +#include +#include "sfm/ba_conjugate_gradient.h" +#include "sfm/bundle_adjustment.h" +#include "sfm/ba_sparse_matrix.h" +#include "sfm/ba_dense_vector.h" +#include "sfm/ba_linear_solver.h" +#include "sfm/ba_sparse_matrix.h" +#include "sfm/ba_dense_vector.h" +#include "sfm/ba_cholesky.h" + + +typedef sfm::ba::SparseMatrix SparseMatrixType; +typedef sfm::ba::DenseVector DenseVectorType; + +//global variables +std::vector cameras; +std::vector points; +std::vector observations; + +#define TRUST_REGION_RADIUS_INIT (1000) +#define TRUST_REGION_RADIUS_DECREMENT (1.0 / 10.0) +#define TRUST_REGION_RADIUS_GAIN (10.0) + +// lm 算法最多迭代次数 +const int lm_max_iterations = 100; +// mean square error +double initial_mse = 0.0; +double final_mse = 0.0; +int num_lm_iterations = 0; +int num_lm_successful_iterations = 0; +int num_lm_unsuccessful_iterations = 0; + +// lm 算法终止条件 +double lm_mse_threshold = 1e-16; +double lm_delta_threshold = 1e-8; + +// 信赖域大小 +double trust_region_radius = 1000; +int cg_max_iterations =1000; +//相机参数个数 +int camera_block_dim = 9; + +const int num_cam_params = 9; + +/** + * /decription 加载相关数据,包括相机的初始内外参数,三维点,观察点 + * @param file_name + * @param cams + * @param pts3D + * @param observations + */ +void load_data(const std::string& file_name + ,std::vector&cams + ,std::vector&pts3D + ,std::vector &observations){ + + /* 加载数据 */ + std::ifstream in(file_name); + assert(in.is_open()); + std::string line, word; + + // 加载相机参数 + { + int n_cams = 0; + getline(in, line); + std::stringstream stream(line); + stream >> word >> n_cams; + cams.resize(n_cams); + for (int i = 0; i < cams.size(); i++) { + getline(in, line); + std::stringstream stream(line); + stream >> cams[i].focal_length; + stream >> cams[i].distortion[0] >> cams[i].distortion[1]; + for (int j = 0; j < 3; j++)stream >> cams[i].translation[j]; + for (int j = 0; j < 9; j++)stream >> cams[i].rotation[j]; + } + } + + // 加载三维点 + { + int n_points = 0; + getline(in, line); + std::stringstream stream(line); + stream>>word>>n_points; + pts3D.resize(n_points); + for(int i=0; i>pts3D[i].pos[0]>>pts3D[i].pos[1]>>pts3D[i].pos[2]; + } + } + + //加载观察点 + { + int n_observations = 0; + getline(in, line); + std::stringstream stream(line); + stream>>word>>n_observations; + observations.resize(n_observations); + for(int i=0; i>observations[i].camera_id + >>observations[i].point_id + >>observations[i].pos[0] + >>observations[i].pos[1]; + } + } + +} + + +/* + * Computes for a given matrix A the square matrix A^T * A for the + * case that block columns of A only need to be multiplied with itself. + * Becase the resulting matrix is symmetric, only about half the work + * needs to be performed. + */ +void matrix_block_column_multiply (sfm::ba::SparseMatrix const& A, +std::size_t block_size, sfm::ba::SparseMatrix* B) +{ + sfm::ba::SparseMatrix::Triplets triplets; + triplets.reserve(A.num_cols() * block_size); + for (std::size_t block = 0; block < A.num_cols(); block += block_size) { + std::vector> columns(block_size); + for (std::size_t col = 0; col < block_size; ++col) + A.column_nonzeros(block + col, &columns[col]); + for (std::size_t col = 0; col < block_size; ++col) { + double dot = columns[col].dot(columns[col]); + triplets.emplace_back(block + col, block + col, dot); + for (std::size_t row = col + 1; row < block_size; ++row) { + dot = columns[col].dot(columns[row]); + triplets.emplace_back(block + row, block + col, dot); + triplets.emplace_back(block + col, block + row, dot); + } + } + } + B->allocate(A.num_cols(), A.num_cols()); + B->set_from_triplets(triplets); +} + + +/* + * Inverts a matrix with 3x3 bocks on its diagonal. All other entries + * must be zero. Reading blocks is thus very efficient. + */ +void +invert_block_matrix_3x3_inplace (sfm::ba::SparseMatrix* A) { + if (A->num_rows() != A->num_cols()) + throw std::invalid_argument("Block matrix must be square"); + if (A->num_non_zero() != A->num_rows() * 3) + throw std::invalid_argument("Invalid number of non-zeros"); + + for (double* iter = A->begin(); iter != A->end(); ) + { + double* iter_backup = iter; + math::Matrix rot; + for (int i = 0; i < 9; ++i) + rot[i] = *(iter++); + + double det = math::matrix_determinant(rot); + if (MATH_DOUBLE_EQ(det, 0.0)) + continue; + + rot = math::matrix_inverse(rot, det); + iter = iter_backup; + for (int i = 0; i < 9; ++i) + *(iter++) = rot[i]; + } +} + + +/* + * Inverts a symmetric, positive definite matrix with NxN bocks on its + * diagonal using Cholesky decomposition. All other entries must be zero. + */ +void +invert_block_matrix_NxN_inplace (sfm::ba::SparseMatrix* A, int blocksize) +{ + if (A->num_rows() != A->num_cols()) + throw std::invalid_argument("Block matrix must be square"); + if (A->num_non_zero() != A->num_rows() * blocksize) + throw std::invalid_argument("Invalid number of non-zeros"); + + int const bs2 = blocksize * blocksize; + std::vector matrix_block(bs2); + for (double* iter = A->begin(); iter != A->end(); ) + { + double* iter_backup = iter; + for (int i = 0; i < bs2; ++i) + matrix_block[i] = *(iter++); + + sfm::ba::cholesky_invert_inplace(matrix_block.data(), blocksize); + + iter = iter_backup; + for (int i = 0; i < bs2; ++i) + if (std::isfinite(matrix_block[i])) + *(iter++) = matrix_block[i]; + else + *(iter++) = 0.0; + } +} + +/** + * /descrition 将角轴法转化成旋转矩阵 + * @param r 角轴向量 + * @param m 旋转矩阵 + */ +void rodrigues_to_matrix (double const* r, double* m) +{ + /* Obtain angle from vector length. */ + double a = std::sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]); + /* Precompute sine and cosine terms. */ + double ct = (a == 0.0) ? 0.5f : (1.0f - std::cos(a)) / (2.0 * a); + double st = (a == 0.0) ? 1.0 : std::sin(a) / a; + /* R = I + st * K + ct * K^2 (with cross product matrix K). */ + m[0] = 1.0 - (r[1] * r[1] + r[2] * r[2]) * ct; + m[1] = r[0] * r[1] * ct - r[2] * st; + m[2] = r[2] * r[0] * ct + r[1] * st; + m[3] = r[0] * r[1] * ct + r[2] * st; + m[4] = 1.0f - (r[2] * r[2] + r[0] * r[0]) * ct; + m[5] = r[1] * r[2] * ct - r[0] * st; + m[6] = r[2] * r[0] * ct - r[1] * st; + m[7] = r[1] * r[2] * ct + r[0] * st; + m[8] = 1.0 - (r[0] * r[0] + r[1] * r[1]) * ct; +} + +/** + * \description 根据求解得到的增量,对相机参数进行更新 + * @param cam + * @param update + * @param out + */ +void update_camera (sfm::ba::Camera const& cam, + double const* update, sfm::ba::Camera* out) +{ + out->focal_length = cam.focal_length + update[0]; + out->distortion[0] = cam.distortion[0] + update[1]; + out->distortion[1] = cam.distortion[1] + update[2]; + + out->translation[0] = cam.translation[0] + update[3]; + out->translation[1] = cam.translation[1] + update[4]; + out->translation[2] = cam.translation[2] + update[5]; + + double rot_orig[9]; + std::copy(cam.rotation, cam.rotation + 9, rot_orig); + double rot_update[9]; + rodrigues_to_matrix(update + 6, rot_update); + math::matrix_multiply(rot_update, 3, 3, rot_orig, 3, out->rotation); +} + +/** + * \description 根据求解的增量,对三维点坐标进行更新 + * @param pt + * @param update + * @param out + */ +void update_point (sfm::ba::Point3D const& pt, + double const* update, sfm::ba::Point3D* out) +{ + out->pos[0] = pt.pos[0] + update[0]; + out->pos[1] = pt.pos[1] + update[1]; + out->pos[2] = pt.pos[2] + update[2]; +} + +/** + * /descripition 根据求得的delta_x, 更新相机参数和三维点 + * @param delta_x + * @param cameras + * @param points + */ +void +update_parameters (DenseVectorType const& delta_x + , std::vector*cameras +, std::vector*points) +{ + /* Update cameras. */ + std::size_t total_camera_params = 0; + for (std::size_t i = 0; i < cameras->size(); ++i){ + update_camera(cameras->at(i), + delta_x.data() + num_cam_params * i, + &cameras->at(i)); + total_camera_params = cameras->size() * num_cam_params; + } + + /* Update points. */ + for (std::size_t i = 0; i < points->size(); ++i) { + update_point(points->at(i), + delta_x.data() + total_camera_params + i * 3, + &points->at(i)); + } +} + +/** + * \description 对像素进行径向畸变 + * @param x + * @param y + * @param dist + */ +void radial_distort (double* x, double* y, double const* dist) +{ + double const radius2 = *x * *x + *y * *y; + double const factor = 1.0 + radius2 * (dist[0] + dist[1] * radius2); + *x *= factor; + *y *= factor; +} + +/** + * \description 计算重投影误差 + * @param vector_f + * @param delta_x + * @param cameras + * @param points + * @param observations + */ +void compute_reprojection_errors (DenseVectorType* vector_f + , DenseVectorType const* delta_x + , std::vector* cameras + , std::vector *points + ,std::vector *observations) +{ + if (vector_f->size() != observations->size() * 2) + vector_f->resize(observations->size() * 2); + +#pragma omp parallel for + for (std::size_t i = 0; i < observations->size(); ++i) + { + sfm::ba::Observation const& obs = observations->at(i); + sfm::ba::Point3D const& p3d = points->at(obs.point_id); + sfm::ba::Camera const& cam = cameras->at(obs.camera_id); + + double const* flen = &cam.focal_length; // 相机焦距 + double const* dist = cam.distortion; // 径向畸变系数 + double const* rot = cam.rotation; // 相机旋转矩阵 + double const* trans = cam.translation; // 相机平移向量 + double const* point = p3d.pos; // 三维点坐标 + + sfm::ba::Point3D new_point; + sfm::ba::Camera new_camera; + + // 如果delta_x 不为空,则先利用delta_x对相机和结构进行更新,然后再计算重投影误差 + if (delta_x != nullptr) + { + std::size_t cam_id = obs.camera_id * num_cam_params; + std::size_t pt_id = obs.point_id * 3; + + + update_camera(cam, delta_x->data() + cam_id, &new_camera); + flen = &new_camera.focal_length; + dist = new_camera.distortion; + rot = new_camera.rotation; + trans = new_camera.translation; + pt_id += cameras->size() * num_cam_params; + + + update_point(p3d, delta_x->data() + pt_id, &new_point); + point = new_point.pos; + } + + /* Project point onto image plane. */ + double rp[] = { 0.0, 0.0, 0.0 }; + for (int d = 0; d < 3; ++d) + { + rp[0] += rot[0 + d] * point[d]; + rp[1] += rot[3 + d] * point[d]; + rp[2] += rot[6 + d] * point[d]; + } + rp[2] = (rp[2] + trans[2]); + rp[0] = (rp[0] + trans[0]) / rp[2]; + rp[1] = (rp[1] + trans[1]) / rp[2]; + + /* Distort reprojections. */ + radial_distort(rp + 0, rp + 1, dist); + + /* Compute reprojection error. */ + vector_f->at(i * 2 + 0) = rp[0] * (*flen) - obs.pos[0]; + vector_f->at(i * 2 + 1) = rp[1] * (*flen) - obs.pos[1]; + } +} + +/** + * \description 计算均方误差 + * @param vector_f + * @return + */ +double compute_mse (DenseVectorType const& vector_f) { + double mse = 0.0; + for (std::size_t i = 0; i < vector_f.size(); ++i) + mse += vector_f[i] * vector_f[i]; + return mse / static_cast(vector_f.size() / 2); +} + +/** + * /description 计算观察点坐标(x,y),相遇对相机参数和三维点坐标的雅阁比矩阵 + * @param cam + * @param point + * @param cam_x_ptr + * @param cam_y_ptr + * @param point_x_ptr + * @param point_y_ptr + */ +void my_jacobian(sfm::ba::Camera const& cam, + sfm::ba::Point3D const& point, + double* cam_x_ptr, double* cam_y_ptr, + double* point_x_ptr, double* point_y_ptr) +{ + const double f = cam.focal_length; + const double *R = cam.rotation; + const double *t = cam.translation; + const double *X = point.pos; + const double k0 = cam.distortion[0]; + const double k1 = cam.distortion[1]; + + const double xc = R[0] *X[0] + R[1] *X[1] + R[2] *X[2] + t[0]; + const double yc = R[3] *X[0] + R[4] *X[1] + R[5] *X[2] + t[1]; + const double zc = R[6] *X[0] + R[7] *X[1] + R[8] *X[2] + t[2]; + + const double x = xc/zc; + const double y = yc/zc; + + const double r2 = x*x + y*y; + const double distort = 1.0 + (k0 + k1*r2)*r2; + + const double u = f* distort*x; + const double v = f* distort*y; + + /*关于焦距的偏导数*/ + cam_x_ptr[0] = distort*x; + cam_y_ptr[0] = distort*y; + + + /*计算关于径向畸变函数k0, k1的偏导数*/ + // 计算中间变量 + const double u_deriv_distort = f*x; + const double v_deriv_distort = f*y; + const double distort_deriv_k0 = r2; + const double distort_deriv_k1 = r2*r2; + + cam_x_ptr[1] = u_deriv_distort*distort_deriv_k0; + cam_x_ptr[2] = u_deriv_distort*distort_deriv_k1; + + cam_y_ptr[1] = v_deriv_distort*distort_deriv_k0; + cam_y_ptr[2] = v_deriv_distort*distort_deriv_k1; + + + // 计算中间变量 (x,y)关于(xc, yc, zc)的偏导数 + const double x_deriv_xc = 1/zc; const double x_deriv_yc = 0; const double x_deriv_zc = -x/zc; + const double y_deriv_xc = 0 ; const double y_deriv_yc = 1/zc; const double y_deriv_zc = -y/zc; + + // 计算u, v关于x, y的偏导数 + const double u_deriv_x = f*distort; + const double v_deriv_y = f*distort; + + // 计算中间变量distort关于r2的偏导数 + const double distort_deriv_r2 = k0 + 2*k1*r2; + + // 计算中间变量r2关于xc, yc, zc的偏导数 + const double r2_deriv_xc = 2*x/zc; + const double r2_deriv_yc = 2*y/zc; + const double r2_deriv_zc = -2*r2/zc; + + // 计算中间变量distort关于xc, yc, zc的偏导数 + const double distort_deriv_xc = distort_deriv_r2*r2_deriv_xc; + const double distort_deriv_yc = distort_deriv_r2*r2_deriv_yc; + const double distort_deriv_zc = distort_deriv_r2*r2_deriv_zc; + + // 计算(u,v)关于xc, yc, zc的偏导数 + const double u_deriv_xc = u_deriv_distort*distort_deriv_xc + u_deriv_x*x_deriv_xc; + const double u_deriv_yc = u_deriv_distort*distort_deriv_yc + u_deriv_x*x_deriv_yc; + const double u_deriv_zc = u_deriv_distort*distort_deriv_zc + u_deriv_x*x_deriv_zc; + + const double v_deriv_xc = v_deriv_distort*distort_deriv_xc + v_deriv_y*y_deriv_xc; + const double v_deriv_yc = v_deriv_distort*distort_deriv_yc + v_deriv_y*y_deriv_yc; + const double v_deriv_zc = v_deriv_distort*distort_deriv_zc + v_deriv_y*y_deriv_zc; + + /* 计算关于平移向量的t0, t1, t2的偏导数*/ + const double xc_deriv_t0=1; + const double yc_deriv_t1=1; + const double zc_deriv_t2=1; + + cam_x_ptr[3] = u_deriv_xc* xc_deriv_t0; + cam_x_ptr[4] = u_deriv_yc* yc_deriv_t1; + cam_x_ptr[5] = u_deriv_zc* zc_deriv_t2; + + cam_y_ptr[3] = v_deriv_xc* xc_deriv_t0; + cam_y_ptr[4] = v_deriv_yc* yc_deriv_t1; + cam_y_ptr[5] = v_deriv_zc* zc_deriv_t2; + + + /* 计算关于旋转矩阵(表示为角轴向量w0, w1, w2)的偏导数 */ + const double rx = R[0] *X[0] + R[1] *X[1] + R[2] *X[2]; + const double ry = R[3] *X[0] + R[4] *X[1] + R[5] *X[2]; + const double rz = R[6] *X[0] + R[7] *X[1] + R[8] *X[2]; + const double xc_deriv_w0 = 0; const double xc_deriv_w1 = rz; const double xc_deriv_w2 = -ry; + const double yc_deriv_w0 = -rz; const double yc_deriv_w1 = 0 ; const double yc_deriv_w2 = rx; + const double zc_deriv_w0 = ry; const double zc_deriv_w1 = -rx; const double zc_deriv_w2 = 0; + + cam_x_ptr[6] = u_deriv_yc*yc_deriv_w0 + u_deriv_zc*zc_deriv_w0; + cam_x_ptr[7] = u_deriv_xc*xc_deriv_w1 + u_deriv_zc*zc_deriv_w1; + cam_x_ptr[8] = u_deriv_xc*xc_deriv_w2 + u_deriv_yc*yc_deriv_w2; + + cam_y_ptr[6] = v_deriv_yc*yc_deriv_w0 + v_deriv_zc*zc_deriv_w0; + cam_y_ptr[7] = v_deriv_xc*xc_deriv_w1 + v_deriv_zc*zc_deriv_w1; + cam_y_ptr[8] = v_deriv_xc*xc_deriv_w2 + v_deriv_yc*yc_deriv_w2; + + + /* 计算关于三维点坐标X,Y,X的偏导数*/ + const double xc_deriv_X = R[0]; const double xc_deriv_Y = R[1];const double xc_deriv_Z = R[2]; + const double yc_deriv_X = R[3]; const double yc_deriv_Y = R[4];const double yc_deriv_Z = R[5]; + const double zc_deriv_X = R[6]; const double zc_deriv_Y = R[7];const double zc_deriv_Z = R[8]; + + point_x_ptr[0] = u_deriv_xc*xc_deriv_X + u_deriv_yc*yc_deriv_X + u_deriv_zc * zc_deriv_X; + point_x_ptr[1] = u_deriv_xc*xc_deriv_Y + u_deriv_yc*yc_deriv_Y + u_deriv_zc * zc_deriv_Y; + point_x_ptr[2] = u_deriv_xc*xc_deriv_Z + u_deriv_yc*yc_deriv_Z + u_deriv_zc * zc_deriv_Z; + + point_y_ptr[0] = v_deriv_xc*xc_deriv_X + v_deriv_yc*yc_deriv_X + v_deriv_zc * zc_deriv_X; + point_y_ptr[1] = v_deriv_xc*xc_deriv_Y + v_deriv_yc*yc_deriv_Y + v_deriv_zc * zc_deriv_Y; + point_y_ptr[2] = v_deriv_xc*xc_deriv_Z + v_deriv_yc*yc_deriv_Z + v_deriv_zc * zc_deriv_Z; + +} + +/** + * \description 构造雅阁比矩阵,采用稀疏矩阵形式, + * 关于相机参数的雅阁比矩阵大小为:(2*observations.size()) x (num_cameras*9) + * 关于三维点坐标的雅阁比矩阵大小为:(2*observation.size()) x (num_points*3) + * @param jac_cam-- 观察点相对于相机参数的雅阁比矩阵 + * @param jac_points--观察点相对于三维点的雅阁比矩阵 + */ +void analytic_jacobian (SparseMatrixType* jac_cam + , SparseMatrixType* jac_points) { + assert(jac_cam); + assert(jac_points); + // 相机和三维点jacobian矩阵的行数都是n_observations*2 + // 相机jacobian矩阵jac_cam的列数是n_cameras* n_cam_params + // 三维点jacobian矩阵jac_points的列数是n_points*3 + std::size_t const camera_cols = cameras.size() * num_cam_params; + std::size_t const point_cols = points.size() * 3; + std::size_t const jacobi_rows = observations.size() * 2; + + // 定义稀疏矩阵的基本元素 + SparseMatrixType::Triplets cam_triplets, point_triplets; + cam_triplets.reserve(observations.size() * 2 * num_cam_params); + point_triplets.reserve(observations.size()*2 * 3); + + + double cam_x_ptr[9], cam_y_ptr[9], point_x_ptr[3], point_y_ptr[3]; + // 对于每一个观察到的二维点 + for (std::size_t i = 0; i < observations.size(); ++i) { + + // 获取二维点,obs.point_id 三维点的索引,obs.camera_id 相机的索引 + sfm::ba::Observation const &obs = observations[i]; + // 三维点坐标 + sfm::ba::Point3D const &p3d = points[obs.point_id]; + // 相机参数 + sfm::ba::Camera const &cam = cameras[obs.camera_id]; + + /*对一个三维点和相机求解偏导数*/ + my_jacobian(cam, p3d, + cam_x_ptr, cam_y_ptr, point_x_ptr, point_y_ptr); + + /*观察点对应雅各比矩阵的行,第i个观察点在雅各比矩阵的位置是2*i, 2*i+1*/ + std::size_t row_x = i * 2 + 0; + std::size_t row_y = i * 2 + 1; + + /*jac_cam中相机对应的列数为camera_id* n_cam_params*/ + std::size_t cam_col = obs.camera_id * num_cam_params; + + /*jac_points中三维点对应的列数为point_id* 3*/ + std::size_t point_col = obs.point_id * 3; + + for (int j = 0; j < num_cam_params; ++j) { + cam_triplets.push_back(SparseMatrixType::Triplet(row_x, cam_col + j, cam_x_ptr[j])); + cam_triplets.push_back(SparseMatrixType::Triplet(row_y, cam_col + j, cam_y_ptr[j])); + } + + for (int j = 0; j < 3; ++j) { + point_triplets.push_back(SparseMatrixType::Triplet(row_x, point_col + j, point_x_ptr[j])); + point_triplets.push_back(SparseMatrixType::Triplet(row_y, point_col + j, point_y_ptr[j])); + } + } + + + if (jac_cam != nullptr) { + jac_cam->allocate(jacobi_rows, camera_cols); + jac_cam->set_from_triplets(cam_triplets); + } + + if (jac_points != nullptr) { + jac_points->allocate(jacobi_rows, point_cols); + jac_points->set_from_triplets(point_triplets); + } +} + + + +sfm::ba::LinearSolver::Status my_solve_schur ( + SparseMatrixType const& jac_cams, + SparseMatrixType const& jac_points, + DenseVectorType const& values, + DenseVectorType* delta_x) { +/* + * 雅阁比矩阵: + * J = [Jc Jp] + * Jc是与相机相关的模块,Jp是与三维点相关的模块。 + * 正规方程 + * (J^TJ + lambda*I)delta_x = J^T(x - F) + * 进一步写为 + * [ Jcc+ lambda*Icc Jcp ][delta_c]= [v] + * [ Jxp Jpp+lambda*Ipp ][delta_p] [w] + * + * B = Jcc, E = Jcp, C = Jpp + * 其中 Jcc = Jc^T* Jc, Jcx = Jc^T*Jx, Jxc = Jx^TJc, Jxx = Jx^T*Jx + * v = Jc^T(F-x), w = Jx^T(F-x), deta_x = [delta_c; delta_p] + */ + + // 误差向量 + DenseVectorType const& F = values; + // 关于相机的雅阁比矩阵 + SparseMatrixType const& Jc = jac_cams; + // 关于三维点的雅阁比矩阵 + SparseMatrixType const& Jp = jac_points; + SparseMatrixType JcT = Jc.transpose(); + SparseMatrixType JpT = Jp.transpose(); + + // 构造正规方程 + SparseMatrixType B, C; + // B = Jc^T* Jc + matrix_block_column_multiply(Jc, camera_block_dim, &B); + // C = Jp^T*Jp + matrix_block_column_multiply(Jp, 3, &C); + // E = Jc^T*Jp + SparseMatrixType E = JcT.multiply(Jp); + + /* Assemble two values vectors. */ + DenseVectorType v = JcT.multiply(F); + DenseVectorType w = JpT.multiply(F); + v.negate_self(); + w.negate_self(); + + /* 以矩阵B和C的对角元素重新构建对角阵*/ + // SparseMatrixType B_diag = B.diagonal_matrix(); + // SparseMatrixType C_diag = C.diagonal_matrix(); + + /* 添加信赖域 */ + C.mult_diagonal(1.0 + 1.0 / trust_region_radius); + B.mult_diagonal(1.0 + 1.0 / trust_region_radius); + + /* 求解C矩阵的逆C = inv(Jx^T+Jx + lambda*Ixx)*/ + invert_block_matrix_3x3_inplace(&C); + + /* 计算S矩阵的Schur补用于高斯消元. */ + SparseMatrixType ET = E.transpose(); + + // S = (Jcc+lambda*Icc) - Jc^T*Jx*inv(Jxx+ lambda*Ixx)*Jx^T*Jc + SparseMatrixType S = B.subtract(E.multiply(C).multiply(ET)); + // rhs = v - Jc^T*Jx*inv(Jxx+ lambda*Ixx)*w + DenseVectorType rhs = v.subtract(E.multiply(C.multiply(w))); + + /* Compute pre-conditioner for linear system. */ + //SparseMatrixType precond = S.diagonal_matrix(); + //precond.cwise_invert(); + SparseMatrixType precond = B; + invert_block_matrix_NxN_inplace(&precond, camera_block_dim); + + /* 用共轭梯度法求解相机参数. */ + DenseVectorType delta_y(Jc.num_cols()); + typedef sfm::ba::ConjugateGradient CGSolver; + CGSolver::Options cg_opts; + cg_opts.max_iterations = cg_max_iterations; + cg_opts.tolerance = 1e-20; + CGSolver solver(cg_opts); + CGSolver::Status cg_status; + cg_status = solver.solve(S, rhs, &delta_y, &precond); + + sfm::ba::LinearSolver::Status status; + status.num_cg_iterations = cg_status.num_iterations; + switch (cg_status.info) { + case CGSolver::CG_CONVERGENCE: + status.success = true; + break; + case CGSolver::CG_MAX_ITERATIONS: + status.success = true; + break; + case CGSolver::CG_INVALID_INPUT: + std::cout << "BA: CG failed (invalid input)" << std::endl; + status.success = false; + return status; + default: + break; + } + + /* 将相机参数带入到第二个方程中,求解三维点的参数. */ + /*E= inv(Jp^T Jp) (JpT.multiply(F)-Jc^T * Jp * delta_y)*/ + DenseVectorType delta_z = C.multiply(w.subtract(ET.multiply(delta_y))); + + /* Fill output vector. */ + std::size_t const jac_cam_cols = Jc.num_cols(); + std::size_t const jac_point_cols = Jp.num_cols(); + std::size_t const jac_cols = jac_cam_cols + jac_point_cols; + + if (delta_x->size() != jac_cols) + delta_x->resize(jac_cols, 0.0); + for (std::size_t i = 0; i < jac_cam_cols; ++i) + delta_x->at(i) = delta_y[i]; + for (std::size_t i = 0; i < jac_point_cols; ++i) + delta_x->at(jac_cam_cols + i) = delta_z[i]; + + return status; +} +/** + * /description LM 算法流程 + * @param cameras + * @param points + * @param observations + */ +void lm_optimization(std::vector*cameras + ,std::vector*points + ,std::vector* observations){ + + + + /*1.0 初始化*/ + // 计算重投影误差向量 + DenseVectorType F, F_new; + compute_reprojection_errors(&F, nullptr, cameras, points, observations);// todo F 是误差向量 + // 计算初始的均方误差 + double current_mse = compute_mse(F); + initial_mse = current_mse; + final_mse = current_mse; + + + // 设置共轭梯度法的相关参数 + trust_region_radius = TRUST_REGION_RADIUS_INIT; + + /* Levenberg-Marquard 算法. */ + for (int lm_iter = 0; ; ++lm_iter) { + + // 判断终止条件,均方误差小于一定阈值 + if (current_mse < lm_mse_threshold) { + std::cout << "BA: Satisfied MSE threshold." << std::endl; + break; + } + + //1.0 计算雅阁比矩阵 + SparseMatrixType Jc, Jp; + analytic_jacobian(&Jc, &Jp); + + //2.0 预置共轭梯梯度法对正规方程进行求解*/ + DenseVectorType delta_x; + sfm::ba::LinearSolver::Status cg_status = my_solve_schur(Jc, Jp, F, &delta_x); + + //3.0 根据计算得到的偏移量,重新计算冲投影误差和均方误差,用于判断终止条件和更新条件. + double new_mse, delta_mse, delta_mse_ratio = 1.0; + + // 正规方程求解成功的情况下 + if (cg_status.success) { + /*重新计算相机和三维点,计算重投影误差,注意原始的相机参数没有被更新*/ + compute_reprojection_errors(&F_new, &delta_x, cameras, points, observations); + /* 计算新的残差值 */ + new_mse = compute_mse(F_new); + /* 均方误差的绝对变化值和相对变化率*/ + delta_mse = current_mse - new_mse; + delta_mse_ratio = 1.0 - new_mse / current_mse; + } + // 正规方程求解失败的情况下 + else { + new_mse = current_mse; + delta_mse = 0.0; + } + + // new_mse < current_mse表示残差值减少 + bool successful_iteration = delta_mse > 0.0; + + /* + * 如果正规方程求解成功,则更新相机参数和三维点坐标,并且增大信赖域的尺寸,使得求解方式 + * 趋近于高斯牛顿法 + */ + if (successful_iteration) { + std::cout << "BA: #" << std::setw(2) << std::left << lm_iter + << " success" << std::right + << ", MSE " << std::setw(11) << current_mse + << " -> " << std::setw(11) << new_mse + << ", CG " << std::setw(3) << cg_status.num_cg_iterations + << ", TRR " << trust_region_radius + << ", MSE Ratio: "<= lm_max_iterations) { + std::cout << "BA: Reached maximum LM iterations of " + << lm_max_iterations << std::endl; + break; + } + } + + final_mse = current_mse; +} + +int main(int argc, char* argv[]) +{ + + /* 加载数据 */ + load_data("./examples/task2/test_ba.txt",cameras, points, observations); + + lm_optimization(&cameras, &points, &observations); + + // ba优化 +// sfm::ba::BundleAdjustment::Options ba_opts; +// ba_opts.verbose_output = true; +// ba_opts.lm_mse_threshold = 1e-16; +// ba_opts.lm_delta_threshold = 1e-8; +// sfm::ba::BundleAdjustment ba(ba_opts); +// ba.set_cameras(&cameras); +// ba.set_points(&points); +// ba.set_observations(&observations); +// ba.optimize(); +// ba.print_status(); + + // 将优化后的结果重新赋值 + std::vector new_cam_poses(2); + std::vector radial_distortion(2); + std::vector new_pts_3d(points.size()); + for(int i=0; i #include #include #include #include /** *\description 创建一个场景 * @param image_folder_path * @param scene_path * @return */ core::Scene::Ptr make_scene(const std::string & image_folder_path, const std::string & scene_path){ util::WallTimer timer; /*** 创建文件夹 ***/ const std::string views_path = util::fs::join_path(scene_path, "views/"); util::fs::mkdir(scene_path.c_str()); util::fs::mkdir(views_path.c_str()); /***扫描文件夹,获取所有的图像文件路径***/ util::fs::Directory dir; try {dir.scan(image_folder_path); } catch (std::exception&e){ std::cerr << "Error scanning input dir: " << e.what() << std::endl; std::exit(EXIT_FAILURE); } std::cout << "Found " << dir.size() << " directory entries." << std::endl; core::Scene::Ptr scene= core::Scene::create(""); /**** 开始加载图像 ****/ std::sort(dir.begin(), dir.end()); int num_imported = 0; for(std::size_t i=0; i< dir.size(); i++){ // 是一个文件夹 if(dir[i].is_dir){ std::cout<<"Skipping directory "<set_id(num_imported); view->set_name(remove_file_extension(fname)); // 限制图像尺寸 int orig_width = image->width(); image = limit_image_size(image, MAX_PIXELS); if (orig_width == image->width() && has_jpeg_extension(fname)) view->set_image_ref(afname, "original"); else view->set_image(image, "original"); add_exif_to_view(view, exif); scene->get_views().push_back(view); /***保存视角信息到本地****/ std::string mve_fname = make_image_name(num_imported); std::cout << "Importing image: " << fname << ", writing MVE view: " << mve_fname << "..." << std::endl; view->save_view_as(util::fs::join_path(views_path, mve_fname)); num_imported+=1; } std::cout << "Imported " << num_imported << " input images, " << "took " << timer.get_elapsed() << " ms." << std::endl; return scene; } /** * * @param scene * @param viewports * @param pairwise_matching */ void features_and_matching (core::Scene::Ptr scene, sfm::bundler::ViewportList* viewports, sfm::bundler::PairwiseMatching* pairwise_matching){ /* Feature computation for the scene. */ sfm::bundler::Features::Options feature_opts; feature_opts.image_embedding = "original"; feature_opts.max_image_size = MAX_PIXELS; feature_opts.feature_options.feature_types = sfm::FeatureSet::FEATURE_SIFT; std::cout << "Computing image features..." << std::endl; { util::WallTimer timer; sfm::bundler::Features bundler_features(feature_opts); bundler_features.compute(scene, viewports); std::cout << "Computing features took " << timer.get_elapsed() << " ms." << std::endl; std::cout<<"Feature detection took " + util::string::get(timer.get_elapsed()) + "ms."<empty()) { std::cerr << "Error: No matching image pairs. Exiting." << std::endl; std::exit(EXIT_FAILURE); } } int main(int argc, char *argv[]) { if(argc < 3){ std::cout<<"Usage: [input]image_dir [output]scen_dir"<get_views().size()<<" views. "<cache_cleanup(); for (std::size_t i = 0; i < viewports.size(); ++i) viewports[i].features.clear_descriptors(); /* Check if there are some matching images. */ if (pairwise_matching.empty()) { std::cerr << "No matching image pairs. Exiting." << std::endl; std::exit(EXIT_FAILURE); } // 计算相机内参数,从Exif中读取 { sfm::bundler::Intrinsics::Options intrinsics_opts; std::cout << "Initializing camera intrinsics..." << std::endl; sfm::bundler::Intrinsics intrinsics(intrinsics_opts); intrinsics.compute(scene, &viewports); } /****** 开始增量的捆绑调整*****/ util::WallTimer timer; /* Compute connected feature components, i.e. feature tracks. */ sfm::bundler::TrackList tracks; { sfm::bundler::Tracks::Options tracks_options; tracks_options.verbose_output = true; sfm::bundler::Tracks bundler_tracks(tracks_options); std::cout << "Computing feature tracks..." << std::endl; bundler_tracks.compute(pairwise_matching, &viewports, &tracks); std::cout << "Created a total of " << tracks.size() << " tracks." << std::endl; } /* Remove color data and pairwise matching to save memory. */ for (std::size_t i = 0; i < viewports.size(); ++i) viewports[i].features.colors.clear(); pairwise_matching.clear(); // 计算初始的匹配对 sfm::bundler::InitialPair::Result init_pair_result; sfm::bundler::InitialPair::Options init_pair_opts; //init_pair_opts.homography_opts.max_iterations = 1000; //init_pair_opts.homography_opts.threshold = 0.005f; init_pair_opts.homography_opts.verbose_output = false; init_pair_opts.max_homography_inliers = 0.8f; init_pair_opts.verbose_output = true; // 开始计算初始的匹配对 sfm::bundler::InitialPair init_pair(init_pair_opts); init_pair.initialize(viewports, tracks); init_pair.compute_pair(&init_pair_result); if (init_pair_result.view_1_id < 0 || init_pair_result.view_2_id < 0 || init_pair_result.view_1_id >= static_cast(viewports.size()) || init_pair_result.view_2_id >= static_cast(viewports.size())) { std::cerr << "Error finding initial pair, exiting!" << std::endl; std::cerr << "Try manually specifying an initial pair." << std::endl; std::exit(EXIT_FAILURE); } std::cout << "Using views " << init_pair_result.view_1_id << " and " << init_pair_result.view_2_id << " as initial pair." << std::endl; /* Incrementally compute full bundle. */ sfm::bundler::Incremental::Options incremental_opts; incremental_opts.pose_p3p_opts.max_iterations = 1000; incremental_opts.pose_p3p_opts.threshold = 0.005f; incremental_opts.pose_p3p_opts.verbose_output = false; incremental_opts.track_error_threshold_factor = TRACK_ERROR_THRES_FACTOR; incremental_opts.new_track_error_threshold = NEW_TRACK_ERROR_THRES; incremental_opts.min_triangulation_angle = MATH_DEG2RAD(1.0); incremental_opts.ba_fixed_intrinsics = false; //incremental_opts.ba_shared_intrinsics = conf.shared_intrinsics; incremental_opts.verbose_output = true; incremental_opts.verbose_ba = true; /* Initialize viewports with initial pair. */ viewports[init_pair_result.view_1_id].pose = init_pair_result.view_1_pose; viewports[init_pair_result.view_2_id].pose = init_pair_result.view_2_pose; /* Initialize the incremental bundler and reconstruct first tracks. */ sfm::bundler::Incremental incremental(incremental_opts); incremental.initialize(&viewports, &tracks); // 对当前两个视角进行track重建,并且如果track存在外点,则将每个track的外点剥离成新的track incremental.triangulate_new_tracks(2); // 根据重投影误差进行筛选 incremental.invalidate_large_error_tracks(); /* Run bundle adjustment. */ std::cout << "Running full bundle adjustment..." << std::endl; incremental.bundle_adjustment_full(); /* Reconstruct remaining views. */ int num_cameras_reconstructed = 2; int full_ba_num_skipped = 0; while (true) { /* Find suitable next views for reconstruction. */ std::vector next_views; incremental.find_next_views(&next_views); /* Reconstruct the next view. */ int next_view_id = -1; for (std::size_t i = 0; i < next_views.size(); ++i) { std::cout << std::endl; std::cout << "Adding next view ID " << next_views[i] << " (" << (num_cameras_reconstructed + 1) << " of " << viewports.size() << ")..." << std::endl; if (incremental.reconstruct_next_view(next_views[i])) { next_view_id = next_views[i]; break; } } if (next_view_id < 0) { if (full_ba_num_skipped == 0) { std::cout << "No valid next view." << std::endl; std::cout << "SfM reconstruction finished." << std::endl; break; } else { incremental.triangulate_new_tracks(MIN_VIEWS_PER_TRACK); std::cout << "Running full bundle adjustment..." << std::endl; incremental.invalidate_large_error_tracks(); incremental.bundle_adjustment_full(); full_ba_num_skipped = 0; continue; } } /* Run single-camera bundle adjustment. */ std::cout << "Running single camera bundle adjustment..." << std::endl; incremental.bundle_adjustment_single_cam(next_view_id); num_cameras_reconstructed += 1; /* Run full bundle adjustment only after a couple of views. */ int const full_ba_skip_views = std::min(100, num_cameras_reconstructed / 10); if (full_ba_num_skipped < full_ba_skip_views) { std::cout << "Skipping full bundle adjustment (skipping " << full_ba_skip_views << " views)." << std::endl; full_ba_num_skipped += 1; } else { incremental.triangulate_new_tracks(MIN_VIEWS_PER_TRACK); std::cout << "Running full bundle adjustment..." << std::endl; incremental.invalidate_large_error_tracks(); incremental.bundle_adjustment_full(); full_ba_num_skipped = 0; } } sfm::bundler::TrackList valid_tracks; for(int i=0; iget_cameras(); core::Scene::ViewList const& views = scene->get_views(); if (bundle_cams.size() != views.size()) { std::cerr << "Error: Invalid number of cameras!" << std::endl; std::exit(EXIT_FAILURE); } #pragma omp parallel for schedule(dynamic,1) for (std::size_t i = 0; i < bundle_cams.size(); ++i) { core::View::Ptr view = views[i]; core::CameraInfo const& cam = bundle_cams[i]; if (view == nullptr) continue; if (view->get_camera().flen == 0.0f && cam.flen == 0.0f) continue; view->set_camera(cam); /* Undistort image. */ if (!undistorted_name.empty()) { core::ByteImage::Ptr original = view->get_byte_image(original_name); if (original == nullptr) continue; core::ByteImage::Ptr undist = core::image::image_undistort_k2k4 (original, cam.flen, cam.dist[0], cam.dist[1]); view->set_image(undist, undistorted_name); } #pragma omp critical std::cout << "Saving view " << view->get_directory() << std::endl; view->save_view(); view->cache_cleanup(); } // log_message(conf, "SfM reconstruction done.\n"); return 0; } \ No newline at end of file +// +// Created by caoqi on 2018/8/28. +// +#include "defines.h" +#include "functions.h" +#include "sfm/bundler_common.h" +#include "sfm/bundler_features.h" +#include "sfm/bundler_matching.h" +#include "sfm/bundler_intrinsics.h" +#include "sfm/bundler_init_pair.h" +#include "sfm/bundler_tracks.h" +#include "sfm/bundler_incremental.h" +#include "core/scene.h" +#include "util/timer.h" +#include + +#include +#include +#include +#include +#include + +/** + *\description 创建一个场景 + * @param image_folder_path + * @param scene_path + * @return + */ +core::Scene::Ptr +make_scene(const std::string & image_folder_path, const std::string & scene_path){ + + util::WallTimer timer; + + /*** 创建文件夹 ***/ + const std::string views_path = util::fs::join_path(scene_path, "views/"); + util::fs::mkdir(scene_path.c_str()); + util::fs::mkdir(views_path.c_str()); + + /***扫描文件夹,获取所有的图像文件路径***/ + util::fs::Directory dir; + try {dir.scan(image_folder_path); + } + catch (std::exception&e){ + std::cerr << "Error scanning input dir: " << e.what() << std::endl; + std::exit(EXIT_FAILURE); + } + std::cout << "Found " << dir.size() << " directory entries." << std::endl; + + core::Scene::Ptr scene= core::Scene::create(""); + + /**** 开始加载图像 ****/ + std::sort(dir.begin(), dir.end()); + int num_imported = 0; + for(std::size_t i=0; i< dir.size(); i++){ + // 是一个文件夹 + if(dir[i].is_dir){ + std::cout<<"Skipping directory "<set_id(num_imported); + view->set_name(remove_file_extension(fname)); + + // 限制图像尺寸 + int orig_width = image->width(); + image = limit_image_size(image, MAX_PIXELS); + if (orig_width == image->width() && has_jpeg_extension(fname)) + view->set_image_ref(afname, "original"); + else + view->set_image(image, "original"); + + add_exif_to_view(view, exif); + + scene->get_views().push_back(view); + + /***保存视角信息到本地****/ + std::string mve_fname = make_image_name(num_imported); + std::cout << "Importing image: " << fname + << ", writing MVE view: " << mve_fname << "..." << std::endl; + view->save_view_as(util::fs::join_path(views_path, mve_fname)); + + num_imported+=1; + } + + std::cout << "Imported " << num_imported << " input images, " + << "took " << timer.get_elapsed() << " ms." << std::endl; + + return scene; +} + +/** + * + * @param scene + * @param viewports + * @param pairwise_matching + */ +void +features_and_matching (core::Scene::Ptr scene, + sfm::bundler::ViewportList* viewports, + sfm::bundler::PairwiseMatching* pairwise_matching){ + + /* Feature computation for the scene. */ + sfm::bundler::Features::Options feature_opts; + feature_opts.image_embedding = "original"; + feature_opts.max_image_size = MAX_PIXELS; + feature_opts.feature_options.feature_types = sfm::FeatureSet::FEATURE_SIFT; + + std::cout << "Computing image features..." << std::endl; + { + util::WallTimer timer; + sfm::bundler::Features bundler_features(feature_opts); + bundler_features.compute(scene, viewports); + + std::cout << "Computing features took " << timer.get_elapsed() + << " ms." << std::endl; + std::cout<<"Feature detection took " + util::string::get(timer.get_elapsed()) + "ms."<empty()) { + std::cerr << "Error: No matching image pairs. Exiting." << std::endl; + std::exit(EXIT_FAILURE); + } +} + + +int main(int argc, char *argv[]) +{ + + if(argc < 3){ + std::cout<<"Usage: [input]image_dir [output]scen_dir"<get_views().size()<<" views. "<cache_cleanup(); + for (std::size_t i = 0; i < viewports.size(); ++i) + viewports[i].features.clear_descriptors(); + + /* Check if there are some matching images. */ + if (pairwise_matching.empty()) { + std::cerr << "No matching image pairs. Exiting." << std::endl; + std::exit(EXIT_FAILURE); + } + + // 计算相机内参数,从Exif中读取 + { + sfm::bundler::Intrinsics::Options intrinsics_opts; + std::cout << "Initializing camera intrinsics..." << std::endl; + sfm::bundler::Intrinsics intrinsics(intrinsics_opts); + intrinsics.compute(scene, &viewports); + } + + /****** 开始增量的捆绑调整*****/ + util::WallTimer timer; + /* Compute connected feature components, i.e. feature tracks. */ + sfm::bundler::TrackList tracks; + { + sfm::bundler::Tracks::Options tracks_options; + tracks_options.verbose_output = true; + + sfm::bundler::Tracks bundler_tracks(tracks_options); + std::cout << "Computing feature tracks..." << std::endl; + bundler_tracks.compute(pairwise_matching, &viewports, &tracks); + std::cout << "Created a total of " << tracks.size() + << " tracks." << std::endl; + } + + /* Remove color data and pairwise matching to save memory. */ + for (std::size_t i = 0; i < viewports.size(); ++i) + viewports[i].features.colors.clear(); + pairwise_matching.clear(); + + + // 计算初始的匹配对 + sfm::bundler::InitialPair::Result init_pair_result; + sfm::bundler::InitialPair::Options init_pair_opts; + //init_pair_opts.homography_opts.max_iterations = 1000; + //init_pair_opts.homography_opts.threshold = 0.005f; + init_pair_opts.homography_opts.verbose_output = false; + init_pair_opts.max_homography_inliers = 0.8f; + init_pair_opts.verbose_output = true; + + // 开始计算初始的匹配对 + sfm::bundler::InitialPair init_pair(init_pair_opts); + init_pair.initialize(viewports, tracks); + init_pair.compute_pair(&init_pair_result); + if (init_pair_result.view_1_id < 0 || init_pair_result.view_2_id < 0 + || init_pair_result.view_1_id >= static_cast(viewports.size()) + || init_pair_result.view_2_id >= static_cast(viewports.size())) + { + std::cerr << "Error finding initial pair, exiting!" << std::endl; + std::cerr << "Try manually specifying an initial pair." << std::endl; + std::exit(EXIT_FAILURE); + } + + std::cout << "Using views " << init_pair_result.view_1_id + << " and " << init_pair_result.view_2_id + << " as initial pair." << std::endl; + + + /* Incrementally compute full bundle. */ + sfm::bundler::Incremental::Options incremental_opts; + incremental_opts.pose_p3p_opts.max_iterations = 1000; + incremental_opts.pose_p3p_opts.threshold = 0.005f; + incremental_opts.pose_p3p_opts.verbose_output = false; + incremental_opts.track_error_threshold_factor = TRACK_ERROR_THRES_FACTOR; + incremental_opts.new_track_error_threshold = NEW_TRACK_ERROR_THRES; + incremental_opts.min_triangulation_angle = MATH_DEG2RAD(1.0); + incremental_opts.ba_fixed_intrinsics = false; + //incremental_opts.ba_shared_intrinsics = conf.shared_intrinsics; + incremental_opts.verbose_output = true; + incremental_opts.verbose_ba = true; + + /* Initialize viewports with initial pair. */ + viewports[init_pair_result.view_1_id].pose = init_pair_result.view_1_pose; + viewports[init_pair_result.view_2_id].pose = init_pair_result.view_2_pose; + + /* Initialize the incremental bundler and reconstruct first tracks. */ + sfm::bundler::Incremental incremental(incremental_opts); + incremental.initialize(&viewports, &tracks); + + // 对当前两个视角进行track重建,并且如果track存在外点,则将每个track的外点剥离成新的track + incremental.triangulate_new_tracks(2); + + // 根据重投影误差进行筛选 + incremental.invalidate_large_error_tracks(); + + /* Run bundle adjustment. */ + std::cout << "Running full bundle adjustment..." << std::endl; + incremental.bundle_adjustment_full(); + + /* Reconstruct remaining views. */ + int num_cameras_reconstructed = 2; + int full_ba_num_skipped = 0; + while (true) + { + /* Find suitable next views for reconstruction. */ + std::vector next_views; + incremental.find_next_views(&next_views); + + /* Reconstruct the next view. */ + int next_view_id = -1; + for (std::size_t i = 0; i < next_views.size(); ++i) + { + std::cout << std::endl; + std::cout << "Adding next view ID " << next_views[i] + << " (" << (num_cameras_reconstructed + 1) << " of " + << viewports.size() << ")..." << std::endl; + if (incremental.reconstruct_next_view(next_views[i])) + { + next_view_id = next_views[i]; + break; + } + } + + if (next_view_id < 0) { + if (full_ba_num_skipped == 0) { + std::cout << "No valid next view." << std::endl; + std::cout << "SfM reconstruction finished." << std::endl; + break; + } + else + { + incremental.triangulate_new_tracks(MIN_VIEWS_PER_TRACK); + std::cout << "Running full bundle adjustment..." << std::endl; + incremental.invalidate_large_error_tracks(); + incremental.bundle_adjustment_full(); + full_ba_num_skipped = 0; + continue; + } + } + + /* Run single-camera bundle adjustment. */ + std::cout << "Running single camera bundle adjustment..." << std::endl; + incremental.bundle_adjustment_single_cam(next_view_id); + num_cameras_reconstructed += 1; + + /* Run full bundle adjustment only after a couple of views. */ + int const full_ba_skip_views = std::min(100, num_cameras_reconstructed / 10); + if (full_ba_num_skipped < full_ba_skip_views) + { + std::cout << "Skipping full bundle adjustment (skipping " + << full_ba_skip_views << " views)." << std::endl; + full_ba_num_skipped += 1; + } + else + { + incremental.triangulate_new_tracks(MIN_VIEWS_PER_TRACK); + std::cout << "Running full bundle adjustment..." << std::endl; + incremental.invalidate_large_error_tracks(); + incremental.bundle_adjustment_full(); + full_ba_num_skipped = 0; + } + } + + sfm::bundler::TrackList valid_tracks; + for(int i=0; iget_cameras(); + core::Scene::ViewList const& views = scene->get_views(); + if (bundle_cams.size() != views.size()) + { + std::cerr << "Error: Invalid number of cameras!" << std::endl; + std::exit(EXIT_FAILURE); + } + +#pragma omp parallel for schedule(dynamic,1) + for (std::size_t i = 0; i < bundle_cams.size(); ++i) + { + core::View::Ptr view = views[i]; + core::CameraInfo const& cam = bundle_cams[i]; + if (view == nullptr) + continue; + if (view->get_camera().flen == 0.0f && cam.flen == 0.0f) + continue; + + view->set_camera(cam); + + /* Undistort image. */ + if (!undistorted_name.empty()) + { + core::ByteImage::Ptr original + = view->get_byte_image(original_name); + if (original == nullptr) + continue; + core::ByteImage::Ptr undist + = core::image::image_undistort_k2k4 + (original, cam.flen, cam.dist[0], cam.dist[1]); + view->set_image(undist, undistorted_name); + } + +#pragma omp critical + std::cout << "Saving view " << view->get_directory() << std::endl; + view->save_view(); + view->cache_cleanup(); + } + + // log_message(conf, "SfM reconstruction done.\n"); + + return 0; +} + diff --git a/examples/task5/class5_scene2pset_multi_views.cc b/examples/task5/class5_scene2pset_multi_views.cc index 2f6b333..0a7397a 100644 --- a/examples/task5/class5_scene2pset_multi_views.cc +++ b/examples/task5/class5_scene2pset_multi_views.cc @@ -15,6 +15,7 @@ #include #include #include +#include #include "core/depthmap.h" #include "core/mesh_info.h" @@ -171,7 +172,7 @@ main (int argc, char** argv) /* Write mesh to disc. */ std::cout << "Writing final point set (" << verts.size() << " points)..." << std::endl; - assert(util::string::right(arg.outmesh, 4) == ".ply"); + assert(util::string::right(conf.outmesh, 4) == ".ply"); { core::geom::SavePLYOptions opts; opts.write_vertex_normals = conf.with_normals; diff --git a/examples/task5/class5_scene2pset_single_view.cc b/examples/task5/class5_scene2pset_single_view.cc index 7efdc61..51b6802 100644 --- a/examples/task5/class5_scene2pset_single_view.cc +++ b/examples/task5/class5_scene2pset_single_view.cc @@ -1 +1,404 @@ -// // Created by caoqi on 2018/10/01. // #include #include #include #include #include #include #include #include #include "core/depthmap.h" #include "core/mesh_info.h" #include "core/mesh_io.h" #include "core/mesh_io_ply.h" #include "core/mesh_tools.h" #include "core/scene.h" #include "core/view.h" #include "core/depthmap.h" struct AppSettings { std::string scenedir; std::string outmesh; std::string dmname = "depth-L0"; std::string imagename = "undistorted"; std::string mask; std::string aabb; bool with_normals = true; bool with_scale = true; bool with_conf = true; bool poisson_normals = false; float min_valid_fraction = 0.0f; float scale_factor = 2.5f; /* "Radius" of MVS patch (usually 5x5). */ std::vector ids; int view_id = -1; float dd_factor = 5.0f; int scale = 0; }; /** * \description 给定像素坐标,深度值以及内参矩阵的逆,求对应三维点的坐标 * @param x -- 像素坐标x * @param y -- 像素坐标y * @param depth --深度值即,三维点到相机中心的距离 * @param invproj -- 内参矩阵的逆 * @return 三维点坐标 */ math::Vec3f pixel_3dpos (std::size_t x, std::size_t y, float depth, math::Matrix3f const& invproj) { // 图像上的每个像素对应三维中的一条射线(向量) math::Vec3f ray = invproj * math::Vec3f ((float)x + 0.5f, (float)y + 0.5f, 1.0f); // 将射线所在的向量进行归一化,并乘以深度值,得到三维点的坐标 return ray.normalized() * depth; } /** * \description 判断深度值是否具有一致性 * @param widths -- 4x1 4个图像像素对应在三维空间中的宽度,可以理解成空间中长度为widths[i1]的物体 * 投影到图像中i1位置的大小刚好为一个像素 * @param depths -- 深度值 4个图像像素的深度值 * @param dd_factor -- 判断深度一致性的阈值 * 4个像素构成一个grid, 序号分别为 * [0, 1] * [2, 3] * @param i1 -- i1 \in [0,3] * @param i2 -- i2 \in [0,3] * @return */ bool dm_is_depthdisc (float* widths, float* depths , float dd_factor, int i1, int i2) { /* Find index that corresponds to smaller depth. */ int i_min = i1; int i_max = i2; if (depths[i2] < depths[i1]) std::swap(i_min, i_max); /* Check if indices are a diagonal. */ if (i1 + i2 == 3) dd_factor *= MATH_SQRT2; /* Check for depth discontinuity. */ if (depths[i_max] - depths[i_min] > widths[i_min] * dd_factor) return true; return false; } /** * \description 计算1个图像像素在三维空间点p处的长度l,可以理解成空间点p处长度为l的物体 * 投影到图像大小刚好为一个像素 * @param x -- 图像像素坐标 * @param y -- 图像像素坐标 * @param depth -- 图像深度值 * @param invproj -- 相机内参矩阵的逆 * @return */ float pixel_footprint (std::size_t x, std::size_t y, float depth, math::Matrix3f const& invproj) { math::Vec3f v = invproj * math::Vec3f ((float)x + 0.5f, (float)y + 0.5f, 1.0f); return invproj[0] * depth / v.norm(); } /** * \description 创建一个三角面片 * @param mesh -- 需要创建的三维网格 * @param vidx -- 图像像素对应三维顶点索引的映射图 * @param dm -- 深度图像 * @param invproj -- 相机内参矩阵的逆矩阵 * @param i -- 像素在图像中的全局索引[0, w*h-1] * @param tverts -- 三角面片的顶点索引,用的是在局部grid中的索引,即[0, 1] * [2, 3] * */ void dm_make_triangle (core::TriangleMesh* mesh, core::Image& vidx, core::FloatImage const* dm, math::Matrix3f const& invproj, std::size_t i, int* tverts) { int const width = vidx.width(); //int const height = vidx.height(); core::TriangleMesh::VertexList& verts(mesh->get_vertices()); core::TriangleMesh::FaceList& faces(mesh->get_faces()); for (int j = 0; j < 3; ++j) { int iidx = i + (tverts[j] % 2) + width * (tverts[j] / 2); int x = iidx % width; int y = iidx / width; // 如果当前像素尚没有对应的三维点 if (vidx.at(iidx) == MATH_MAX_UINT) { /* Add vertex for depth pixel. */ vidx.at(iidx) = verts.size(); float depth = dm->at(iidx, 0); verts.push_back(pixel_3dpos(x, y, depth, invproj)); } faces.push_back(vidx.at(iidx)); } } /** * \description 给定深度图,彩色图像以及相机参数,恢复带有颜色和法向量的三维点云 * @param dm -- 深度图像 * @param ci -- 彩色图像 * @param invproj -- 相机逆投影矩阵 * @param dd_factor -- 用于判断深度一致性的阈值 * @return */ core::TriangleMesh::Ptr my_depthmap_triangulate (core::FloatImage::ConstPtr dm, core::ByteImage::ConstPtr ci, math::Matrix3f const& invproj, float dd_factor) { // 深度图像不为空 if (dm == nullptr) throw std::invalid_argument("Null depthmap given"); // 图像的宽和高 int const width = dm->width(); int const height = dm->height(); // 创建三角网格接结构体 /* Prepare triangle mesh. */ core::TriangleMesh::Ptr mesh(core::TriangleMesh::create()); /* Generate image that maps image pixels to vertex IDs. */ // 创建映射图,将图像像素映射到三维点的索引 core::Image vidx(width, height, 1); vidx.fill(MATH_MAX_UINT); // 在深度图中遍历2x2 blocks,并且创建三角面片 /* Iterate over 2x2-blocks in the depthmap and create triangles. */ int i = 0; for (int y = 0; y < height - 1; ++y, ++i) { for (int x = 0; x < width - 1; ++x, ++i) { /* Cache the four depth values. */ /* * 0, 1 * 2, 3 */ float depths[4] = { dm->at(i, 0), dm->at(i + 1, 0), dm->at(i + width, 0), dm->at(i + width + 1, 0) }; /* Create a mask representation of the available depth values. */ /* 创建mask记录深度有效的像素个数 * mask=0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, * 1010, 1011, 1100, 1101, 1110, 1111 */ int mask = 0; int pixels = 0; for (int j = 0; j < 4; ++j){ if (depths[j] > 0.0f) { mask |= 1 << j; pixels += 1; } } // 至少保证3个深度值是可靠的 /* At least three valid depth values are required. */ if (pixels < 3) continue; /* Possible triangles, vertex indices relative to 2x2 block. */ /* 可能出现的三角面片对,4个点有2个面片 */ int tris[4][3] = { { 0, 2, 1 }, { 0, 3, 1 }, { 0, 2, 3 }, { 1, 2, 3 } }; /* Decide which triangles to issue. */ /* 决定用哪对面片 */ int tri[2] = { 0, 0 }; switch (mask) { case 7: tri[0] = 1; break; // 0111- 0,1,2 case 11: tri[0] = 2; break; // 1011- 0,1,3 case 13: tri[0] = 3; break; // 1101- 0,2,3 case 14: tri[0] = 4; break; // 1110- 1,2,3 case 15: // 1111- 0,1,2,3 { // 空圆特性 /* Choose the triangulation with smaller diagonal. */ float ddiff1 = std::abs(depths[0] - depths[3]); float ddiff2 = std::abs(depths[1] - depths[2]); if (ddiff1 < ddiff2) { tri[0] = 2; tri[1] = 3; } else { tri[0] = 1; tri[1] = 4; } break; } default: continue; } /* Omit depth discontinuity detection if dd_factor is zero. */ if (dd_factor > 0.0f) { /* Cache pixel footprints. */ float widths[4]; for (int j = 0; j < 4; ++j) { if (depths[j] == 0.0f) continue; widths[j] = pixel_footprint(x + (j % 2), y + (j / 2), depths[j], invproj);// w, h, focal_len); } // 检查深度不一致性,相邻像素的深度差值不要超过像素宽度(三维空间中)的dd_factor倍 /* Check for depth discontinuities. */ for (int j = 0; j < 2 && tri[j] != 0; ++j) { int* tv = tris[tri[j] - 1]; #define DM_DD_ARGS widths, depths, dd_factor if (dm_is_depthdisc(DM_DD_ARGS, tv[0], tv[1])) tri[j] = 0; if (dm_is_depthdisc(DM_DD_ARGS, tv[1], tv[2])) tri[j] = 0; if (dm_is_depthdisc(DM_DD_ARGS, tv[2], tv[0])) tri[j] = 0; } } /* Build triangles. */ for (int j = 0; j < 2; ++j) { if (tri[j] == 0) continue; #define DM_MAKE_TRI_ARGS mesh.get(), vidx, dm.get(), invproj, i dm_make_triangle(DM_MAKE_TRI_ARGS, tris[tri[j] - 1]); } } } // 获取颜色 // 彩色图像不为空,且和深度图像宽和高一致 if (ci != nullptr && (ci->width() != width || ci->height() != height)){ std::cout<<"Color image dimension mismatch"<get_vertex_colors()); core::TriangleMesh::VertexList const& verts(mesh->get_vertices()); colors.resize(verts.size()); // 像素个数 int num_pixel = vidx.get_pixel_amount(); for (int i = 0; i < num_pixel; ++i) { // 像素没有对应的顶点 if (vidx[i] == MATH_MAX_UINT) continue; math::Vec4f color(ci->at(i, 0), 0.0f, 0.0f, 255.0f); if (ci->channels() >= 3) { color[1] = ci->at(i, 1); color[2] = ci->at(i, 2); } else { color[1] = color[2] = color[0]; } colors[vidx[i]] = color / 255.0f; } return mesh; } int main(int argc, char *argv[]){ if(argc<5){ std::cout<<"usage: scendir outmeshdir(.ply) scale view_id"<>conf.scale; // 获取要重建的视角 std::stringstream stream2(argv[4]); stream2>>conf.view_id; conf.dmname = std::string("depth-L") + argv[3]; conf.imagename = (conf.scale == 0) ? "undistorted" : std::string("undist-L") + argv[3]; std::cout << "Using depthmap \"" << conf.dmname << "\" and color image \"" << conf.imagename << "\"" << std::endl; /* Load scene. */ core::Scene::Ptr scene = core::Scene::create(conf.scenedir); /* Iterate over views and get points. */ core::Scene::ViewList& views(scene->get_views()); core::View::Ptr view = views[conf.view_id]; assert(view!= nullptr); // 获取存在相机参数 core::CameraInfo const& cam = view->get_camera(); assert(cam.flen); // 加载深度图 core::FloatImage::Ptr dm = view->get_float_image(conf.dmname); assert(dm != nullptr); // 加载彩色图像 core::ByteImage::Ptr ci; if (!conf.imagename.empty()) ci = view->get_byte_image(conf.imagename); std::cout << "Processing view \"" << view->get_name() << "\"" << (ci != nullptr ? " (with colors)" : "") << "..." << std::endl; /********************Triangulate depth map***********************/ core::TriangleMesh::Ptr mesh; // 计算投影矩阵的逆矩阵 math::Matrix3f invproj; cam.fill_inverse_calibration(*invproj, dm->width(), dm->height()); // 对深度图进行三角化,注意此时的mesh顶点坐标位于相机坐标系中 mesh = my_depthmap_triangulate(dm, ci, invproj, conf.dd_factor); /* Transform mesh to world coordinates. */ // 将网格从相机坐标系转化到世界坐标系中 math::Matrix4f ctw; cam.fill_cam_to_world(*ctw); core::geom::mesh_transform(mesh, ctw); if (conf.with_normals) mesh->ensure_normals(); dm.reset(); ci.reset(); view->cache_cleanup(); /***************************************************************/ /* Write mesh to disc. */ std::cout << "Writing final point set (" << mesh->get_vertices().size() << " points)..." << std::endl; assert(util::string::right(conf.outmesh, 4) == ".ply"); { core::geom::SavePLYOptions opts; opts.write_vertex_normals = conf.with_normals; core::geom::save_ply_mesh(mesh, conf.outmesh, opts); } return EXIT_SUCCESS; } \ No newline at end of file +// +// Created by caoqi on 2018/10/01. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "core/depthmap.h" +#include "core/mesh_info.h" +#include "core/mesh_io.h" +#include "core/mesh_io_ply.h" +#include "core/mesh_tools.h" +#include "core/scene.h" +#include "core/view.h" +#include "core/depthmap.h" + + +struct AppSettings +{ + std::string scenedir; + std::string outmesh; + std::string dmname = "depth-L0"; + std::string imagename = "undistorted"; + std::string mask; + std::string aabb; + bool with_normals = true; + bool with_scale = true; + bool with_conf = true; + bool poisson_normals = false; + float min_valid_fraction = 0.0f; + float scale_factor = 2.5f; /* "Radius" of MVS patch (usually 5x5). */ + std::vector ids; + int view_id = -1; + float dd_factor = 5.0f; + int scale = 0; +}; + + +/** + * \description 给定像素坐标,深度值以及内参矩阵的逆,求对应三维点的坐标 + * @param x -- 像素坐标x + * @param y -- 像素坐标y + * @param depth --深度值即,三维点到相机中心的距离 + * @param invproj -- 内参矩阵的逆 + * @return 三维点坐标 + */ +math::Vec3f +pixel_3dpos (std::size_t x, std::size_t y, float depth, + math::Matrix3f const& invproj) { + + // 图像上的每个像素对应三维中的一条射线(向量) + math::Vec3f ray = invproj * math::Vec3f + ((float)x + 0.5f, (float)y + 0.5f, 1.0f); + + // 将射线所在的向量进行归一化,并乘以深度值,得到三维点的坐标 + return ray.normalized() * depth; +} + +/** + * \description 判断深度值是否具有一致性 + * @param widths -- 4x1 4个图像像素对应在三维空间中的宽度,可以理解成空间中长度为widths[i1]的物体 + * 投影到图像中i1位置的大小刚好为一个像素 + * @param depths -- 深度值 4个图像像素的深度值 + * @param dd_factor -- 判断深度一致性的阈值 + * 4个像素构成一个grid, 序号分别为 + * [0, 1] + * [2, 3] + * @param i1 -- i1 \in [0,3] + * @param i2 -- i2 \in [0,3] + * @return + */ +bool dm_is_depthdisc (float* widths, float* depths + , float dd_factor, int i1, int i2) { + + /* Find index that corresponds to smaller depth. */ + int i_min = i1; + int i_max = i2; + if (depths[i2] < depths[i1]) + std::swap(i_min, i_max); + + /* Check if indices are a diagonal. */ + if (i1 + i2 == 3) + dd_factor *= MATH_SQRT2; + + /* Check for depth discontinuity. */ + if (depths[i_max] - depths[i_min] > widths[i_min] * dd_factor) + return true; + + return false; +} + + +/** + * \description 计算1个图像像素在三维空间点p处的长度l,可以理解成空间点p处长度为l的物体 + * 投影到图像大小刚好为一个像素 + * @param x -- 图像像素坐标 + * @param y -- 图像像素坐标 + * @param depth -- 图像深度值 + * @param invproj -- 相机内参矩阵的逆 + * @return + */ +float +pixel_footprint (std::size_t x, std::size_t y, float depth, + math::Matrix3f const& invproj) { + math::Vec3f v = invproj * math::Vec3f + ((float)x + 0.5f, (float)y + 0.5f, 1.0f); + return invproj[0] * depth / v.norm(); +} + +/** + * \description 创建一个三角面片 + * @param mesh -- 需要创建的三维网格 + * @param vidx -- 图像像素对应三维顶点索引的映射图 + * @param dm -- 深度图像 + * @param invproj -- 相机内参矩阵的逆矩阵 + * @param i -- 像素在图像中的全局索引[0, w*h-1] + * @param tverts -- 三角面片的顶点索引,用的是在局部grid中的索引,即[0, 1] + * [2, 3] + * + */ +void +dm_make_triangle (core::TriangleMesh* mesh, core::Image& vidx, + core::FloatImage const* dm, math::Matrix3f const& invproj, + std::size_t i, int* tverts) { + + int const width = vidx.width(); + //int const height = vidx.height(); + core::TriangleMesh::VertexList& verts(mesh->get_vertices()); + core::TriangleMesh::FaceList& faces(mesh->get_faces()); + + for (int j = 0; j < 3; ++j) { + int iidx = i + (tverts[j] % 2) + width * (tverts[j] / 2); + int x = iidx % width; + int y = iidx / width; + + // 如果当前像素尚没有对应的三维点 + if (vidx.at(iidx) == MATH_MAX_UINT) { + /* Add vertex for depth pixel. */ + vidx.at(iidx) = verts.size(); + float depth = dm->at(iidx, 0); + verts.push_back(pixel_3dpos(x, y, depth, invproj)); + } + faces.push_back(vidx.at(iidx)); + } +} + +/** + * \description 给定深度图,彩色图像以及相机参数,恢复带有颜色和法向量的三维点云 + * @param dm -- 深度图像 + * @param ci -- 彩色图像 + * @param invproj -- 相机逆投影矩阵 + * @param dd_factor -- 用于判断深度一致性的阈值 + * @return + */ +core::TriangleMesh::Ptr +my_depthmap_triangulate (core::FloatImage::ConstPtr dm, core::ByteImage::ConstPtr ci, + math::Matrix3f const& invproj, float dd_factor) +{ + // 深度图像不为空 + if (dm == nullptr) + throw std::invalid_argument("Null depthmap given"); + + // 图像的宽和高 + int const width = dm->width(); + int const height = dm->height(); + + // 创建三角网格接结构体 + /* Prepare triangle mesh. */ + core::TriangleMesh::Ptr mesh(core::TriangleMesh::create()); + + /* Generate image that maps image pixels to vertex IDs. */ + // 创建映射图,将图像像素映射到三维点的索引 + core::Image vidx(width, height, 1); + vidx.fill(MATH_MAX_UINT); + + // 在深度图中遍历2x2 blocks,并且创建三角面片 + /* Iterate over 2x2-blocks in the depthmap and create triangles. */ + int i = 0; + for (int y = 0; y < height - 1; ++y, ++i) { + for (int x = 0; x < width - 1; ++x, ++i) { + /* Cache the four depth values. */ + /* + * 0, 1 + * 2, 3 + */ + float depths[4] = { dm->at(i, 0), dm->at(i + 1, 0), + dm->at(i + width, 0), dm->at(i + width + 1, 0) + }; + + /* Create a mask representation of the available depth values. */ + /* 创建mask记录深度有效的像素个数 + * mask=0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, + * 1010, 1011, 1100, 1101, 1110, 1111 + */ + int mask = 0; + int pixels = 0; + for (int j = 0; j < 4; ++j){ + if (depths[j] > 0.0f) { + mask |= 1 << j; + pixels += 1; + } + } + + // 至少保证3个深度值是可靠的 + /* At least three valid depth values are required. */ + if (pixels < 3) + continue; + + + /* Possible triangles, vertex indices relative to 2x2 block. */ + /* 可能出现的三角面片对,4个点有2个面片 + */ + int tris[4][3] = { + { 0, 2, 1 }, { 0, 3, 1 }, { 0, 2, 3 }, { 1, 2, 3 } + }; + + /* Decide which triangles to issue. */ + /* 决定用哪对面片 + */ + int tri[2] = { 0, 0 }; + + switch (mask) { + + case 7: tri[0] = 1; break; // 0111- 0,1,2 + case 11: tri[0] = 2; break; // 1011- 0,1,3 + case 13: tri[0] = 3; break; // 1101- 0,2,3 + case 14: tri[0] = 4; break; // 1110- 1,2,3 + case 15: // 1111- 0,1,2,3 + { + // 空圆特性 + /* Choose the triangulation with smaller diagonal. */ + float ddiff1 = std::abs(depths[0] - depths[3]); + float ddiff2 = std::abs(depths[1] - depths[2]); + if (ddiff1 < ddiff2) + { tri[0] = 2; tri[1] = 3; } + else + { tri[0] = 1; tri[1] = 4; } + break; + } + default: continue; + } + + /* Omit depth discontinuity detection if dd_factor is zero. */ + if (dd_factor > 0.0f) { + /* Cache pixel footprints. */ + float widths[4]; + for (int j = 0; j < 4; ++j) { + if (depths[j] == 0.0f) + continue; + widths[j] = pixel_footprint(x + (j % 2), y + (j / 2), depths[j], invproj);// w, h, focal_len); + } + + // 检查深度不一致性,相邻像素的深度差值不要超过像素宽度(三维空间中)的dd_factor倍 + /* Check for depth discontinuities. */ + for (int j = 0; j < 2 && tri[j] != 0; ++j) { + int* tv = tris[tri[j] - 1]; + #define DM_DD_ARGS widths, depths, dd_factor + if (dm_is_depthdisc(DM_DD_ARGS, tv[0], tv[1])) tri[j] = 0; + if (dm_is_depthdisc(DM_DD_ARGS, tv[1], tv[2])) tri[j] = 0; + if (dm_is_depthdisc(DM_DD_ARGS, tv[2], tv[0])) tri[j] = 0; + } + } + + /* Build triangles. */ + for (int j = 0; j < 2; ++j) { + if (tri[j] == 0) continue; + #define DM_MAKE_TRI_ARGS mesh.get(), vidx, dm.get(), invproj, i + dm_make_triangle(DM_MAKE_TRI_ARGS, tris[tri[j] - 1]); + } + } + } + + // 获取颜色 + // 彩色图像不为空,且和深度图像宽和高一致 + if (ci != nullptr && (ci->width() != width || ci->height() != height)){ + std::cout<<"Color image dimension mismatch"<get_vertex_colors()); + core::TriangleMesh::VertexList const& verts(mesh->get_vertices()); + colors.resize(verts.size()); + + // 像素个数 + int num_pixel = vidx.get_pixel_amount(); + for (int i = 0; i < num_pixel; ++i) { + // 像素没有对应的顶点 + if (vidx[i] == MATH_MAX_UINT) + continue; + + math::Vec4f color(ci->at(i, 0), 0.0f, 0.0f, 255.0f); + if (ci->channels() >= 3) { + color[1] = ci->at(i, 1); + color[2] = ci->at(i, 2); + } + else { + color[1] = color[2] = color[0]; + } + colors[vidx[i]] = color / 255.0f; + } + + return mesh; +} + + +int main(int argc, char *argv[]){ + + if(argc<5){ + std::cout<<"usage: scendir outmeshdir(.ply) scale view_id"<>conf.scale; + // 获取要重建的视角 + std::stringstream stream2(argv[4]); + stream2>>conf.view_id; + + conf.dmname = std::string("depth-L") + argv[3]; + conf.imagename = (conf.scale == 0) + ? "undistorted" + : std::string("undist-L") + argv[3]; + + std::cout << "Using depthmap \"" << conf.dmname + << "\" and color image \"" << conf.imagename << "\"" << std::endl; + + /* Load scene. */ + core::Scene::Ptr scene = core::Scene::create(conf.scenedir); + + /* Iterate over views and get points. */ + core::Scene::ViewList& views(scene->get_views()); + + core::View::Ptr view = views[conf.view_id]; + assert(view!= nullptr); + + // 获取存在相机参数 + core::CameraInfo const& cam = view->get_camera(); + assert(cam.flen); + + // 加载深度图 + core::FloatImage::Ptr dm = view->get_float_image(conf.dmname); + assert(dm != nullptr); + + // 加载彩色图像 + core::ByteImage::Ptr ci; + if (!conf.imagename.empty()) + ci = view->get_byte_image(conf.imagename); + + std::cout << "Processing view \"" << view->get_name() + << "\"" << (ci != nullptr ? " (with colors)" : "") + << "..." << std::endl; + + /********************Triangulate depth map***********************/ + + core::TriangleMesh::Ptr mesh; + // 计算投影矩阵的逆矩阵 + math::Matrix3f invproj; + cam.fill_inverse_calibration(*invproj, dm->width(), dm->height()); + + // 对深度图进行三角化,注意此时的mesh顶点坐标位于相机坐标系中 + mesh = my_depthmap_triangulate(dm, ci, invproj, conf.dd_factor); + + /* Transform mesh to world coordinates. */ + // 将网格从相机坐标系转化到世界坐标系中 + math::Matrix4f ctw; + cam.fill_cam_to_world(*ctw); + core::geom::mesh_transform(mesh, ctw); + + if (conf.with_normals) + mesh->ensure_normals(); + + dm.reset(); + ci.reset(); + view->cache_cleanup(); + /***************************************************************/ + + /* Write mesh to disc. */ + std::cout << "Writing final point set (" << mesh->get_vertices().size() << " points)..." << std::endl; + assert(util::string::right(conf.outmesh, 4) == ".ply"); + { + core::geom::SavePLYOptions opts; + opts.write_vertex_normals = conf.with_normals; + core::geom::save_ply_mesh(mesh, conf.outmesh, opts); + } + + return EXIT_SUCCESS; +} From 73374c2960b277f7f57daf1fe02896a49d34e43e Mon Sep 17 00:00:00 2001 From: xsun Date: Fri, 9 Nov 2018 15:27:53 +0800 Subject: [PATCH 03/13] std::isnan --- texturing/global_seam_leveling.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/texturing/global_seam_leveling.cpp b/texturing/global_seam_leveling.cpp index 06241c8..ec441cb 100755 --- a/texturing/global_seam_leveling.cpp +++ b/texturing/global_seam_leveling.cpp @@ -130,7 +130,7 @@ calculate_difference(VertexProjectionInfos const & vertex_projection_infos, /* The order is essential. */ math::Vec3f difference = color2 - color1; - assert(!isnan(difference[0]) && !isnan(difference[1]) && !isnan(difference[2])); + assert(!std::isnan(difference[0]) && !std::isnan(difference[1]) && !std::isnan(difference[2])); return difference; } From 9cccd524f82b713b232a426251c7633c5e855c8f Mon Sep 17 00:00:00 2001 From: xsun Date: Sun, 16 Dec 2018 21:53:25 +0800 Subject: [PATCH 04/13] modify .vscode and tmp --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6c036e9..541177e 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,6 @@ build/* /cmake-build-debug/* .DS_Store */.DS_Store -*/tmp -*/.vscode +*tmp/* +*.vscode From 1ba131483b299a6bdf4443a500d653f4c4ff221b Mon Sep 17 00:00:00 2001 From: xsun Date: Sun, 16 Dec 2018 21:55:31 +0800 Subject: [PATCH 05/13] complete chap1,2 --- .gitignore | 2 +- examples/CMakeLists.txt | 2 +- examples/task1/class1_test_features.cc | 2 +- examples/task1/class1_test_matching.cc | 2 +- features/matching.h | 6 +++--- tmp/matching_featureset.png | Bin 311753 -> 311565 bytes 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 541177e..8291a8d 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,6 @@ build/* /cmake-build-debug/* .DS_Store */.DS_Store -*tmp/* +tmp/* *.vscode diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 499a22f..cf34212 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -4,4 +4,4 @@ add_subdirectory(task3) add_subdirectory(task4) add_subdirectory(task5) add_subdirectory(task6) -add_subdirectory(task7) +#add_subdirectory(task7) diff --git a/examples/task1/class1_test_features.cc b/examples/task1/class1_test_features.cc index d31bb5f..9d23e38 100644 --- a/examples/task1/class1_test_features.cc +++ b/examples/task1/class1_test_features.cc @@ -88,7 +88,7 @@ main (int argc, char** argv) sift_drawing, features::Visualizer::RADIUS_BOX_ORIENTATION); /* 保存图像文件名 */ - std::string sift_out_fname = "./tmp/" + util::fs::replace_extension + std::string sift_out_fname = "/home/xsun/ImageBasedModellingEduV1.0/tmp/" + util::fs::replace_extension (util::fs::basename(image_filename), "sift.png"); std::cout << "保存图像: " << sift_out_fname << std::endl; core::image::save_file(sift_image, sift_out_fname); diff --git a/examples/task1/class1_test_matching.cc b/examples/task1/class1_test_matching.cc index 970a935..90df6cb 100644 --- a/examples/task1/class1_test_matching.cc +++ b/examples/task1/class1_test_matching.cc @@ -223,7 +223,7 @@ feature_set_matching (core::ByteImage::Ptr image1, core::ByteImage::Ptr image2) core::ByteImage::Ptr match_image = visualize_matching( matching, image1, image2, feat1.positions, feat2.positions); - std::string output_filename = "./tmp/matching_featureset.png"; + std::string output_filename = "/home/xsun/ImageBasedModellingEduV1.0/tmp/matching_featureset.png"; std::cout << "Saving visualization to " << output_filename << std::endl; core::image::save_file(match_image, output_filename); } diff --git a/features/matching.h b/features/matching.h index e4aaa2e..bf17992 100644 --- a/features/matching.h +++ b/features/matching.h @@ -157,9 +157,9 @@ Matching::oneway_match (Options const& options, /* * 参考标准1的形式给出lowe-ratio约束 */ - // float square_dist_1st_best = static_cast(nn_result.dist_1st_best); -// float square_dist_2st_best = static_cast(nn_result.dist_2nd_best); -// float const square_lowe_thres = MATH_POW2(options.lowe_ratio_threshold); + float square_dist_1st_best = static_cast(nn_result.dist_1st_best); + float square_dist_2st_best = static_cast(nn_result.dist_2nd_best); + float const square_lowe_thres = MATH_POW2(options.lowe_ratio_threshold); /* */ /* 此处添加代码 */ diff --git a/tmp/matching_featureset.png b/tmp/matching_featureset.png index 928f5ac960f0107fd97bafa698f6a6bf4a4d7524..bdd41715b67f4ad47a8e1a4c72f57b4a9beee354 100644 GIT binary patch delta 184453 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 Uxf1X{LYoc73DBd{m$AVF7|~%aJpcdz delta 184633 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ⅈIOdQ2 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%0DFTsr6} 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

EdFe%@NE|V=W{2lwSYSBmF$cApEhDM2$ZpOl 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 Date: Sun, 23 Dec 2018 22:09:13 +0800 Subject: [PATCH 06/13] modify output path --- examples/task4/class4_test_incremental_sfm.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/task4/class4_test_incremental_sfm.cc b/examples/task4/class4_test_incremental_sfm.cc index 1c107f5..e82387e 100644 --- a/examples/task4/class4_test_incremental_sfm.cc +++ b/examples/task4/class4_test_incremental_sfm.cc @@ -348,7 +348,7 @@ int main(int argc, char *argv[]) /***** 保存输出结果***/ - std::ofstream out_file("./points.ply"); + std::ofstream out_file("/home/xsun/ImageBasedModellingEduV1.0/examples/data/sfm_result_points.ply"); assert(out_file.is_open()); out_file<<"ply"< Date: Sun, 23 Dec 2018 22:10:11 +0800 Subject: [PATCH 07/13] swap texture and core to build --- examples/task7/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 examples/task7/CMakeLists.txt diff --git a/examples/task7/CMakeLists.txt b/examples/task7/CMakeLists.txt old mode 100644 new mode 100755 index fec33cd..8123d5f --- a/examples/task7/CMakeLists.txt +++ b/examples/task7/CMakeLists.txt @@ -24,4 +24,4 @@ set(TEXTURING_SOURCES arguments.cpp class7_texrecon.cpp) add_executable(task7_texturing ${TEXTURING_SOURCES}) -target_link_libraries(task7_texturing mvs util core texturing coldet mrf gco) +target_link_libraries(task7_texturing mvs util texturing core coldet mrf gco) From 4fa6240b44ff415140851c9ca6fe844bcc3fece4 Mon Sep 17 00:00:00 2001 From: xsun Date: Sun, 23 Dec 2018 22:10:31 +0800 Subject: [PATCH 08/13] updated --- examples/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index cf34212..499a22f 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -4,4 +4,4 @@ add_subdirectory(task3) add_subdirectory(task4) add_subdirectory(task5) add_subdirectory(task6) -#add_subdirectory(task7) +add_subdirectory(task7) From f7b4f185afe294bebd03f25929d2ceef4d59f20c Mon Sep 17 00:00:00 2001 From: xsun Date: Sun, 23 Dec 2018 22:12:46 +0800 Subject: [PATCH 09/13] modify output path --- examples/task7/class7_texrecon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/task7/class7_texrecon.cpp b/examples/task7/class7_texrecon.cpp index dfad2ec..b9e2756 100755 --- a/examples/task7/class7_texrecon.cpp +++ b/examples/task7/class7_texrecon.cpp @@ -171,7 +171,7 @@ int main(int argc, char **argv) { colors[i][2] = rand()&255; } - std::ofstream out("./examples/task7/view_selection_result.ply"); + std::ofstream out("./home/xsun/ImageBasedModellingEduV1.0/examples/data/sequence_scene/view_selection_result.ply"); assert(out.is_open()); out<<"ply"< Date: Sun, 23 Dec 2018 22:14:08 +0800 Subject: [PATCH 10/13] add example/data --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8291a8d..c27dd43 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,4 @@ build/* */.DS_Store tmp/* *.vscode - +examples/data/* From 208d69550d3f55e2da6dc7100cfa97c34e9958ed Mon Sep 17 00:00:00 2001 From: xsun Date: Mon, 7 Jan 2019 14:12:56 +0800 Subject: [PATCH 11/13] modify output file name by input arg --- examples/task1/class1_test_features.cc | 7 ++++--- examples/task1/class1_test_matching.cc | 11 ++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/examples/task1/class1_test_features.cc b/examples/task1/class1_test_features.cc index 9d23e38..3a2828b 100644 --- a/examples/task1/class1_test_features.cc +++ b/examples/task1/class1_test_features.cc @@ -28,9 +28,9 @@ sift_compare (features::Sift::Descriptor const& d1, features::Sift::Descriptor c int main (int argc, char** argv) { - if (argc < 2) + if (argc < 3) { - std::cerr << "Syntax: " << argv[0] << " " << std::endl; + std::cerr << "Syntax: " << argv[0] << " " << "out put file name path"< Date: Mon, 7 Jan 2019 14:34:25 +0800 Subject: [PATCH 12/13] modify output ply file path by input argv --- examples/task4/class4_test_incremental_sfm.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/task4/class4_test_incremental_sfm.cc b/examples/task4/class4_test_incremental_sfm.cc index e82387e..a46015b 100644 --- a/examples/task4/class4_test_incremental_sfm.cc +++ b/examples/task4/class4_test_incremental_sfm.cc @@ -158,8 +158,8 @@ features_and_matching (core::Scene::Ptr scene, int main(int argc, char *argv[]) { - if(argc < 3){ - std::cout<<"Usage: [input]image_dir [output]scen_dir"< Date: Mon, 7 Jan 2019 15:19:43 +0800 Subject: [PATCH 13/13] add comments --- examples/task1/class1_test_features.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/task1/class1_test_features.cc b/examples/task1/class1_test_features.cc index 3a2828b..8e7ff71 100644 --- a/examples/task1/class1_test_features.cc +++ b/examples/task1/class1_test_features.cc @@ -30,7 +30,7 @@ main (int argc, char** argv) { if (argc < 3) { - std::cerr << "Syntax: " << argv[0] << " " << "out put file name path"<" << "out put file name path without .png format"<