void Fit(const std::vector<size_t> &samples, std::vector<Model> *models) const { const Mat2X x = ExtractColumns(x_camera_, samples); const Mat3X X = ExtractColumns(X_, samples); Mat34 P; Mat3 R; Vec3 t; if (EuclideanResectionEPnP(x, X, &R, &t)) { P_From_KRt(K_, R, t, &P); models->push_back(P); } }
void Fit(const std::vector<size_t> &samples, std::vector<Vec2> *lines) const { assert(samples.size() >= (unsigned int)MINIMUM_SAMPLES); // Standard least squares solution. const Mat2X sampled_xs = ExtractColumns(xs_, samples); LineSolver::Solve(sampled_xs, lines); }
void Fit ( const std::vector<size_t> &samples, std::vector<ModelArg> *models ) const { const Mat pt2d = ExtractColumns(this->x1_, samples); const Mat pt3d = ExtractColumns(this->x2_, samples); assert(2 == pt2d.rows()); assert(3 == pt3d.rows()); assert(SolverArg::MINIMUM_SAMPLES <= pt2d.cols()); assert(pt2d.cols() == pt3d.cols()); SolverArg::Solve(pt2d, pt3d, models); }
void Fit(const std::vector<size_t> &samples, std::vector<Model> *models) const { const Mat x1 = ExtractColumns(x1_, samples); const Mat x2 = ExtractColumns(x2_, samples); Solver::Solve(x1, x2, models); }