示例#1
0
 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);
    }
示例#3
0
  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);
 }