41 #ifndef vpHomography_hh
42 #define vpHomography_hh
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>
170 static const double sing_threshold;
171 static const double threshold_rotation;
172 static const double threshold_displacement;
212 static void initRansac(
unsigned int n,
double *xb,
double *yb,
double *xa,
double *ya,
vpColVector &x);
338 vpHomography inverse(
double sv_threshold = 1e-16,
unsigned int *rank = NULL)
const;
355 void load(std::ifstream &f);
450 void resize(
unsigned int nrows,
unsigned int ncols,
bool flagNullify =
true)
465 void save(std::ofstream &f)
const;
534 static void DLT(
const std::vector<double> &xb,
const std::vector<double> &yb,
const std::vector<double> &xa,
535 const std::vector<double> &ya,
vpHomography &aHb,
bool normalization =
true);
561 static void HLM(
const std::vector<double> &xb,
const std::vector<double> &yb,
const std::vector<double> &xa,
562 const std::vector<double> &ya,
bool isplanar,
vpHomography &aHb);
591 static bool ransac(
const std::vector<double> &xb,
const std::vector<double> &yb,
const std::vector<double> &xa,
592 const std::vector<double> &ya,
vpHomography &aHb, std::vector<bool> &inliers,
double &residual,
593 unsigned int nbInliersConsensus,
double threshold,
bool normalization =
true);
656 static void robust(
const std::vector<double> &xb,
const std::vector<double> &yb,
const std::vector<double> &xa,
657 const std::vector<double> &ya,
vpHomography &aHb, std::vector<bool> &inliers,
double &residual,
658 double weights_threshold = 0.4,
unsigned int niter = 4,
bool normalization =
true);
660 #ifndef DOXYGEN_SHOULD_SKIP_THIS
670 static void computeDisplacement(
const vpHomography &H,
double x,
double y, std::list<vpRotationMatrix> &vR,
671 std::list<vpTranslationVector> &vT, std::list<vpColVector> &vN);
681 static bool degenerateConfiguration(
const vpColVector &x,
unsigned int *ind);
682 static bool degenerateConfiguration(
const vpColVector &x,
unsigned int *ind,
double threshold_area);
683 static bool degenerateConfiguration(
const std::vector<double> &xb,
const std::vector<double> &yb,
684 const std::vector<double> &xa,
const std::vector<double> &ya);
685 static void HartleyNormalization(
unsigned int n,
const double *x,
const double *y,
double *xn,
double *yn,
double &xg,
686 double &yg,
double &coef);
687 static void HartleyNormalization(
const std::vector<double> &x,
const std::vector<double> &y, std::vector<double> &xn,
688 std::vector<double> &yn,
double &xg,
double &yg,
double &coef);
690 double xg2,
double yg2,
double coef2);
694 #if defined(VISP_BUILD_DEPRECATED_FUNCTIONS)
Implementation of a generic 2D array used as base class for matrices and vectors.
static bool load(const std::string &filename, vpArray2D< Type > &A, bool binary=false, char *header=NULL)
void insert(const vpArray2D< Type > &A, unsigned int r, unsigned int c)
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.
virtual ~vpHomography()
Destructor.
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.
vpColVector operator*(const double &x, const vpColVector &v)