18 #ifndef PIC_COMPUTER_VISION_NELDER_MEAD_OPT_TRIANGULATION_HPP 19 #define PIC_COMPUTER_VISION_NELDER_MEAD_OPT_TRIANGULATION_HPP 21 #include "../util/matrix_3_x_3.hpp" 22 #include "../util/nelder_mead_opt_base.hpp" 24 #ifndef PIC_DISABLE_EIGEN 25 #ifndef PIC_EIGEN_NOT_BUNDLED 26 #include "../externals/Eigen/Dense" 28 #include <Eigen/Dense> 34 #ifndef PIC_DISABLE_EIGEN 40 std::vector< Eigen::Matrix34d >
M;
41 std::vector< Eigen::Vector2f >
p;
50 this->M.push_back(M0);
51 this->M.push_back(M1);
61 this->M.assign(
M.begin(),
M.end());
69 void update(Eigen::Vector2f &p0, Eigen::Vector2f &p1)
72 this->p.push_back(p0);
73 this->p.push_back(p1);
81 void update(std::vector< Eigen::Vector2f> &
p)
84 this->p.assign(
p.begin(),
p.end());
93 double function(
double *x,
unsigned int n)
95 Eigen::Vector4d point(x[0], x[1], x[2], 1.0);
98 for(
unsigned int i = 0; i <
M.size(); i++) {
99 Eigen::Vector3d proj =
M[i] * point;
104 double dx =
p[i][0] - proj[0];
105 double dy =
p[i][1] - proj[1];
107 err += (dx * dx) + (dy * dy);
118 #endif // PIC_COMPUTER_VISION_NELDER_MEAD_OPT_TRIANGULATION_HPP void update(std::vector< Eigen::Vector2f > &p)
update
Definition: nelder_mead_opt_triangulation.hpp:81
NelderMeadOptTriangulation(std::vector< Eigen::Matrix34d > &M)
NelderMeadOptTriangulation.
Definition: nelder_mead_opt_triangulation.hpp:59
NelderMeadOptTriangulation(Eigen::Matrix34d &M0, Eigen::Matrix34d &M1)
NelderMeadOptTriangulation.
Definition: nelder_mead_opt_triangulation.hpp:48
The NelderMeadOptBase class.
Definition: nelder_mead_opt_base.hpp:31
void update(Eigen::Vector2f &p0, Eigen::Vector2f &p1)
update
Definition: nelder_mead_opt_triangulation.hpp:69
Definition: bilateral_separation.hpp:25
std::vector< Eigen::Matrix34d > M
Definition: nelder_mead_opt_triangulation.hpp:40
Definition: nelder_mead_opt_triangulation.hpp:36
std::vector< Eigen::Vector2f > p
Definition: nelder_mead_opt_triangulation.hpp:41