34#ifndef VP_MBT_DEPTH_DENSE_TRACKER_H
35#define VP_MBT_DEPTH_DENSE_TRACKER_H
37#include <visp3/core/vpConfig.h>
38#include <visp3/core/vpPlane.h>
39#include <visp3/mbt/vpMbTracker.h>
40#include <visp3/mbt/vpMbtFaceDepthDense.h>
41#include <visp3/mbt/vpMbtTukeyEstimator.h>
43#if DEBUG_DISPLAY_DEPTH_DENSE
44#include <visp3/core/vpDisplay.h>
72 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false) VP_OVERRIDE;
75 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false) VP_OVERRIDE;
79 virtual std::vector<std::vector<double> >
getModelForDisplay(
unsigned int width,
unsigned int height,
82 bool displayFullModel =
false) VP_OVERRIDE;
88 virtual void loadConfigFile(
const std::string &configFile,
bool verbose =
true) VP_OVERRIDE;
91 bool verbose = false);
92#if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_COMMON)
93 void reInitModel(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud,
const std::string &cad_name,
101 virtual
void setDepthDenseFilteringMaxDistance(
double maxDistance);
102 virtual
void setDepthDenseFilteringMethod(
int method);
103 virtual
void setDepthDenseFilteringMinDistance(
double minDistance);
104 virtual
void setDepthDenseFilteringOccupancyRatio(
double occupancyRatio);
108 if (stepX == 0 || stepY == 0) {
109 std::cerr <<
"stepX and stepY must be greater than zero!" << std::endl;
121#if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_COMMON)
127 void setUseDepthDenseTracking(
const std::string &name,
const bool &useDepthDenseTracking);
131 virtual
void track(const
vpImage<
unsigned char> &) VP_OVERRIDE;
133#if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_COMMON)
134 virtual void track(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud);
136 virtual void track(
const std::vector<vpColVector> &point_cloud,
unsigned int width,
unsigned int height);
161#if DEBUG_DISPLAY_DEPTH_DENSE
177 const std::
string &name =
"") VP_OVERRIDE;
180 const std::
string &name =
"") VP_OVERRIDE;
186#if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_COMMON)
187 void segmentPointCloud(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud);
189 void segmentPointCloud(
const std::vector<vpColVector> &point_cloud,
unsigned int width,
unsigned int height);
Generic class defining intrinsic camera parameters.
Implementation of column vector and the associated operations.
Class to define RGB colors available for display functionalities.
Class that defines generic functionalities for display.
Implementation of an homogeneous matrix and operations on such kind of matrices.
Definition of the vpImage class member functions.
Implementation of a matrix and operations on matrices.
virtual void initFaceFromLines(vpMbtPolygon &polygon) VP_OVERRIDE
virtual void initFaceFromCorners(vpMbtPolygon &polygon) VP_OVERRIDE
void segmentPointCloud(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &point_cloud)
vpMbtTukeyEstimator< double > m_robust_depthDense
Tukey M-Estimator.
void computeVisibility(unsigned int width, unsigned int height)
vpColVector m_weightedError_depthDense
Weighted error.
unsigned int m_depthDenseSamplingStepY
Sampling step in y-direction.
virtual vpColVector getError() const VP_OVERRIDE
vpMbHiddenFaces< vpMbtPolygon > m_depthDenseHiddenFacesDisplay
Set of faces describing the object used only for display with scan line.
unsigned int m_depthDenseSamplingStepX
Sampling step in x-direction.
virtual void computeVVSWeights()
virtual vpColVector getRobustWeights() const VP_OVERRIDE
vpColVector m_error_depthDense
(s - s*)
virtual void computeVVSInteractionMatrixAndResidu() VP_OVERRIDE
virtual void initCylinder(const vpPoint &p1, const vpPoint &p2, double radius, int idFace=0, const std::string &name="") VP_OVERRIDE
vpMatrix m_L_depthDense
Interaction matrix.
std::vector< vpMbtFaceDepthDense * > m_depthDenseListOfActiveFaces
List of current active (visible and features extracted) faces.
void setDepthDenseSamplingStep(unsigned int stepX, unsigned int stepY)
void addFace(vpMbtPolygon &polygon, bool alreadyClose)
unsigned int m_denseDepthNbFeatures
Nb features.
vpColVector m_w_depthDense
Robust weights.
virtual void initCircle(const vpPoint &p1, const vpPoint &p2, const vpPoint &p3, double radius, int idFace=0, const std::string &name="") VP_OVERRIDE
std::vector< vpMbtFaceDepthDense * > m_depthDenseFaces
List of faces.
Implementation of the polygons management for the model-based trackers.
virtual void track(const vpImage< unsigned char > &I)=0
virtual void resetTracker()=0
virtual void init(const vpImage< unsigned char > &I)=0
virtual std::vector< std::vector< double > > getModelForDisplay(unsigned int width, unsigned int height, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, bool displayFullModel=false)=0
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
vpMbTracker & operator=(const vpMbTracker &tracker)
virtual void loadConfigFile(const std::string &configFile, bool verbose=true)
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 ...