41 #ifndef VP_HOMOGRAPHY_H
42 #define VP_HOMOGRAPHY_H
47 #include <visp3/core/vpCameraParameters.h>
48 #include <visp3/core/vpHomogeneousMatrix.h>
49 #include <visp3/core/vpImagePoint.h>
50 #include <visp3/core/vpMatrix.h>
51 #include <visp3/core/vpPlane.h>
52 #include <visp3/core/vpPoint.h>
297 vpHomography inverse(
double sv_threshold = 1e-16,
unsigned int *rank =
nullptr)
const;
314 void load(std::ifstream &f);
409 void resize(
unsigned int nrows,
unsigned int ncols,
bool flagNullify =
true)
424 void save(std::ofstream &f)
const;
493 static void DLT(
const std::vector<double> &xb,
const std::vector<double> &yb,
const std::vector<double> &xa,
494 const std::vector<double> &ya,
vpHomography &aHb,
bool normalization =
true);
520 static void HLM(
const std::vector<double> &xb,
const std::vector<double> &yb,
const std::vector<double> &xa,
521 const std::vector<double> &ya,
bool isplanar,
vpHomography &aHb);
550 static bool ransac(
const std::vector<double> &xb,
const std::vector<double> &yb,
const std::vector<double> &xa,
551 const std::vector<double> &ya,
vpHomography &aHb, std::vector<bool> &inliers,
double &residual,
552 unsigned int nbInliersConsensus,
double threshold,
bool normalization =
true);
615 static void robust(
const std::vector<double> &xb,
const std::vector<double> &yb,
const std::vector<double> &xa,
616 const std::vector<double> &ya,
vpHomography &aHb, std::vector<bool> &inliers,
double &residual,
617 double weights_threshold = 0.4,
unsigned int niter = 4,
bool normalization =
true);
619 #ifndef DOXYGEN_SHOULD_SKIP_THIS
628 static void computeDisplacement(
const vpHomography &H,
double x,
double y, std::list<vpRotationMatrix> &vR,
629 std::list<vpTranslationVector> &vT, std::list<vpColVector> &vN);
639 static bool degenerateConfiguration(
const vpColVector &x,
unsigned int *ind);
640 static bool degenerateConfiguration(
const vpColVector &x,
unsigned int *ind,
double threshold_area);
641 static bool degenerateConfiguration(
const std::vector<double> &xb,
const std::vector<double> &yb,
642 const std::vector<double> &xa,
const std::vector<double> &ya);
643 static void hartleyNormalization(
unsigned int n,
const double *x,
const double *y,
double *xn,
double *yn,
double &xg,
644 double &yg,
double &coef);
645 static void hartleyNormalization(
const std::vector<double> &x,
const std::vector<double> &y, std::vector<double> &xn,
646 std::vector<double> &yn,
double &xg,
double &yg,
double &coef);
648 double xg2,
double yg2,
double coef2);
653 static const double m_sing_threshold;
654 static const double m_threshold_rotation;
655 static const double m_threshold_displacement;
694 static void initRansac(
unsigned int n,
double *xb,
double *yb,
double *xa,
double *ya,
vpColVector &x);
Implementation of a generic 2D array used as base class for matrices and vectors.
void insert(const vpArray2D< Type > &A, unsigned int r, unsigned int c)
static bool load(const std::string &filename, vpArray2D< Type > &A, bool binary=false, char *header=nullptr)
vpArray2D< Type > & operator=(Type x)
Set all the elements of the array to x.
static bool save(const std::string &filename, const vpArray2D< Type > &A, bool binary=false, const char *header="")
Generic class defining intrinsic camera parameters.
Implementation of column vector and the associated operations.
error that can be emitted by ViSP classes.
Implementation of an homogeneous matrix and operations on such kind of matrices.
Implementation of an homography and operations on homographies.
void resize(unsigned int nrows, unsigned int ncols, bool flagNullify=true)
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
Implementation of a matrix and operations on matrices.
This class defines the container for a plane geometrical structure.
Class that defines a 3D point in the object frame and allows forward projection of a 3D point in the ...
Implementation of a pose vector and operations on poses.
Implementation of a rotation matrix and operations on such kind of matrices.
Implementation of a rotation vector as axis-angle minimal representation.
Class that consider the case of a translation vector.
vpMatrix operator*(const double &x, const vpMatrix &A)