36 #ifndef _vpMbtFaceDepthDense_h_
37 #define _vpMbtFaceDepthDense_h_
41 #include <visp3/core/vpConfig.h>
42 #if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_COMMON)
43 #include <pcl/point_cloud.h>
44 #include <pcl/point_types.h>
47 #include <visp3/core/vpPlane.h>
48 #include <visp3/mbt/vpMbTracker.h>
49 #include <visp3/mbt/vpMbtDistanceLine.h>
51 #define DEBUG_DISPLAY_DEPTH_DENSE 0
60 DEPTH_OCCUPANCY_RATIO_FILTERING = 1 << 1,
63 MIN_DISTANCE_FILTERING = 1 << 2,
65 MAX_DISTANCE_FILTERING = 1 << 3
90 int polygon = -1, std::string name =
"");
92 #if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_COMMON)
94 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud,
unsigned int stepX,
96 #
if DEBUG_DISPLAY_DEPTH_DENSE
103 bool computeDesiredFeatures(
const vpHomogeneousMatrix &cMo,
unsigned int width,
unsigned int height,
104 const std::vector<vpColVector> &point_cloud,
unsigned int stepX,
unsigned int stepY
105 #
if DEBUG_DISPLAY_DEPTH_DENSE
111 bool computeDesiredFeatures(
const vpHomogeneousMatrix &cMo,
unsigned int width,
unsigned int height,
112 const vpMatrix &point_cloud,
unsigned int stepX,
unsigned int stepY
113 #
if DEBUG_DISPLAY_DEPTH_DENSE
122 void computeVisibility();
123 void computeVisibilityDisplay();
126 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false);
128 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false);
131 double scale = 0.05,
unsigned int thickness = 1);
133 double scale = 0.05,
unsigned int thickness = 1);
135 std::vector<std::vector<double> > getModelForDisplay(
unsigned int width,
unsigned int height,
137 bool displayFullModel =
false);
139 inline unsigned int getNbFeatures()
const {
return (
unsigned int)(m_pointCloudFace.size() / 3); }
141 inline bool isTracked()
const {
return m_isTrackedDepthDenseFace; }
147 void setScanLineVisibilityTest(
bool v);
157 if (occupancyRatio < 0.0 || occupancyRatio > 1.0) {
158 std::cerr <<
"occupancyRatio < 0.0 || occupancyRatio > 1.0" << std::endl;
161 m_depthDenseFilteringOccupancyRatio = occupancyRatio;
165 inline void setTracked(
bool tracked) { m_isTrackedDepthDenseFace = tracked; }
182 PolygonLine() : m_p1(nullptr), m_p2(nullptr), m_poly(), m_imPt1(), m_imPt2() { }
184 PolygonLine(
const PolygonLine &polyLine)
185 : m_p1(nullptr), m_p2(nullptr), m_poly(polyLine.m_poly), m_imPt1(polyLine.m_imPt1), m_imPt2(polyLine.m_imPt2)
191 PolygonLine &operator=(PolygonLine other)
198 void swap(PolygonLine &first, PolygonLine &second)
201 swap(first.m_p1, second.m_p1);
202 swap(first.m_p2, second.m_p2);
203 swap(first.m_poly, second.m_poly);
204 swap(first.m_imPt1, second.m_imPt1);
205 swap(first.m_imPt2, second.m_imPt2);
233 std::vector<vpImagePoint> &roiPts
234 #
if DEBUG_DISPLAY_DEPTH_DENSE
236 std::vector<std::vector<vpImagePoint> > &roiPts_vec
239 double &distanceToFace);
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.
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.
double m_depthDenseFilteringMinDist
Minimum distance threshold.
vpMbHiddenFaces< vpMbtPolygon > * m_hiddenFace
Pointer to the list of faces.
bool m_isVisible
Visibility flag.
double m_distFarClip
Distance for near clipping.
std::vector< double > m_pointCloudFace
List of depth points inside the face.
vpPlane m_planeObject
Plane equation described in the object frame.
void setDepthDenseFilteringMethod(int method)
unsigned int getNbFeatures() const
void setTracked(bool tracked)
void setDepthDenseFilteringMinDistance(double minDistance)
vpMbtPolygon * m_polygon
Polygon defining the face.
bool m_useScanLine
Scan line visibility.
bool m_isTrackedDepthDenseFace
Flag to define if the face should be tracked or not.
double m_depthDenseFilteringMaxDist
Maximum distance threshold.
void setDepthDenseFilteringMaxDistance(double maxDistance)
std::vector< PolygonLine > m_polygonLines
Polygon lines used for scan-line visibility.
int m_depthDenseFilteringMethod
Method to use to consider or not the face.
vpDepthDenseFilteringType
unsigned int m_clippingFlag
Flags specifying which clipping to used.
std::vector< vpMbtDistanceLine * > m_listOfFaceLines
void setDepthDenseFilteringOccupancyRatio(double occupancyRatio)
vpCameraParameters m_cam
Camera intrinsic parameters.
double m_depthDenseFilteringOccupancyRatio
Ratio between available depth points and theoretical number of points.
double m_distNearClip
Distance for near clipping.
Implementation of a polygon of the model used by the model-based tracker.
bool isvisible
flag to specify whether the face is visible or not
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 ...
vpPoint * p
corners in the object frame
Class for generating random numbers with uniform probability density.