39#ifndef _vpMbKltTracker_h_
40#define _vpMbKltTracker_h_
42#include <visp3/core/vpConfig.h>
44#if defined(VISP_HAVE_MODULE_KLT) && defined(VISP_HAVE_OPENCV) && defined(HAVE_OPENCV_IMGPROC) && defined(HAVE_OPENCV_VIDEO)
46#include <visp3/core/vpExponentialMap.h>
47#include <visp3/core/vpMeterPixelConversion.h>
48#include <visp3/core/vpPixelMeterConversion.h>
49#include <visp3/core/vpSubColVector.h>
50#include <visp3/core/vpSubMatrix.h>
51#include <visp3/klt/vpKltOpencv.h>
52#include <visp3/mbt/vpMbTracker.h>
53#include <visp3/mbt/vpMbtDistanceCircle.h>
54#include <visp3/mbt/vpMbtDistanceKltCylinder.h>
55#include <visp3/mbt/vpMbtDistanceKltPoints.h>
56#include <visp3/vision/vpHomography.h>
286 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false) VP_OVERRIDE;
288 const
vpColor &col,
unsigned int thickness = 1,
bool displayFullModel = false) VP_OVERRIDE;
304 std::vector<vpImagePoint> getKltImagePoints()
const;
306 std::map<int, vpImagePoint> getKltImagePointsWithId()
const;
341 virtual std::vector<std::vector<double> >
getModelForDisplay(
unsigned int width,
unsigned int height,
344 bool displayFullModel =
false) VP_OVERRIDE;
346 virtual
void loadConfigFile(const std::
string &configFile,
bool verbose = true) VP_OVERRIDE;
350 void resetTracker() VP_OVERRIDE;
387 faces.getOgreContext()->setWindowName(
"MBT Klt");
400 for (std::list<vpMbtDistanceKltPoints *>::const_iterator it =
kltPolygons.begin(); it !=
kltPolygons.end(); ++it)
401 (*it)->useScanLine = v;
416 std::cerr <<
"This option is not yet implemented in vpMbKltTracker, "
417 "projection error computation set to false."
421 void setUseKltTracking(
const std::string &name,
const bool &useKltTracking);
424 virtual
void track(const
vpImage<
unsigned char> &I) VP_OVERRIDE;
425 virtual
void track(const
vpImage<
vpRGBa> &I_color) VP_OVERRIDE;
484 virtual
void computeVVSInteractionMatrixAndResidu() VP_OVERRIDE;
486 virtual std::vector<std::vector<
double> > getFeaturesForDisplayKlt();
488 virtual
void init(const
vpImage<
unsigned char> &I) VP_OVERRIDE;
489 virtual
void initFaceFromCorners(
vpMbtPolygon &polygon) VP_OVERRIDE;
490 virtual
void initFaceFromLines(
vpMbtPolygon &polygon) VP_OVERRIDE;
491 virtual
void initCircle(const
vpPoint &, const
vpPoint &, const
vpPoint &,
double,
int, const std::
string &name =
"") VP_OVERRIDE;
492 virtual
void initCylinder(const
vpPoint &, const
vpPoint &,
double,
int, const std::
string &name =
"") VP_OVERRIDE;
494 void preTracking(const
vpImage<
unsigned char> &I);
496 virtual
void reinit(const
vpImage<
unsigned char> &I);
Generic class defining intrinsic camera parameters.
Implementation of column vector and the associated operations.
Class to define RGB colors available for display functionalities.
Implementation of an homogeneous matrix and operations on such kind of matrices.
Definition of the vpImage class member functions.
Wrapper for the KLT (Kanade-Lucas-Tomasi) feature tracker implemented in OpenCV. Thus to enable this ...
Implementation of a matrix and operations on matrices.
std::list< vpMbtDistanceKltCylinder * > kltCylinders
virtual std::list< vpMbtDistanceCircle * > & getFeaturesCircle()
vpColVector m_error_klt
(s - s*)
vpHomogeneousMatrix c0Mo
Initial pose.
void addCircle(const vpPoint &p1, const vpPoint &p2, const vpPoint &p3, double radius, const std::string &name="")
void setMaskBorder(const unsigned int &e)
vpHomogeneousMatrix ctTc0
virtual void setScanLineVisibilityTest(const bool &v) VP_OVERRIDE
std::list< vpMbtDistanceKltPoints * > kltPolygons
double getKltThresholdAcceptation() const
virtual void setOgreVisibilityTest(const bool &v) VP_OVERRIDE
cv::Mat cur
Temporary OpenCV image for fast conversion.
std::vector< cv::Point2f > getKltPoints() const
unsigned int getKltMaskBorder() const
std::list< vpMbtDistanceCircle * > circles_disp
Vector of the circles used here only to display the full model.
vpColVector m_weightedError_klt
Weighted error.
vpKltOpencv tracker
Points tracker.
virtual vpColVector getError() const VP_OVERRIDE
unsigned int getMaskBorder() const
vpKltOpencv getKltOpencv() const
void setKltThresholdAcceptation(double th)
void setThresholdAcceptation(double th)
vpRobust m_robust_klt
Robust.
int getKltNbPoints() const
virtual std::list< vpMbtDistanceKltCylinder * > & getFeaturesKltCylinder()
virtual vpColVector getRobustWeights() const VP_OVERRIDE
double getThresholdAcceptation() const
unsigned int maskBorder
Erosion of the mask.
unsigned int m_nbFaceUsed
vpColVector m_w_klt
Robust weights.
std::vector< std::vector< double > > m_featuresToBeDisplayedKlt
Display features.
vpMatrix m_L_klt
Interaction matrix.
virtual void display(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, unsigned int thickness=1, bool displayFullModel=false) VP_OVERRIDE
void setKltMaskBorder(const unsigned int &e)
virtual void setProjectionErrorComputation(const bool &flag) VP_OVERRIDE
int getNbKltPoints() const
virtual std::list< vpMbtDistanceKltPoints * > & getFeaturesKlt()
virtual std::vector< std::vector< double > > getModelForDisplay(unsigned int width, unsigned int height, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, bool displayFullModel=false)=0
vpMbHiddenFaces< vpMbtPolygon > faces
Set of faces describing the object.
virtual void setScanLineVisibilityTest(const bool &v)
virtual void setOgreVisibilityTest(const bool &v)
virtual void setPose(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cdMo)=0
virtual void display(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, unsigned int thickness=1, bool displayFullModel=false)=0
virtual void computeVVSInit()=0
virtual void testTracking()=0
Manage a circle used in the model-based tracker.
Implementation of a polygon of the model used by the model-based tracker.
Class that defines a 3D point in the object frame and allows forward projection of a 3D point in the ...
Contains an M-estimator and various influence function.