36 #ifndef _vpMbtFaceDepthDense_h_
37 #define _vpMbtFaceDepthDense_h_
41 #include <visp3/core/vpConfig.h>
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
58 DEPTH_OCCUPANCY_RATIO_FILTERING = 1 << 1,
61 MIN_DISTANCE_FILTERING = 1 << 2,
63 MAX_DISTANCE_FILTERING = 1 << 3
88 std::string name =
"");
92 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud,
unsigned int stepX,
94 #
if DEBUG_DISPLAY_DEPTH_DENSE
101 bool computeDesiredFeatures(
const vpHomogeneousMatrix &cMo,
unsigned int width,
unsigned int height,
102 const std::vector<vpColVector> &point_cloud,
unsigned int stepX,
104 #
if DEBUG_DISPLAY_DEPTH_DENSE
113 void computeVisibility();
114 void computeVisibilityDisplay();
117 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false);
119 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false);
122 double scale = 0.05,
unsigned int thickness = 1);
124 double scale = 0.05,
unsigned int thickness = 1);
126 std::vector<std::vector<double> > getModelForDisplay(
unsigned int width,
unsigned int height,
129 bool displayFullModel =
false);
131 inline unsigned int getNbFeatures()
const {
return (
unsigned int)(m_pointCloudFace.size() / 3); }
133 inline bool isTracked()
const {
return m_isTrackedDepthDenseFace; }
139 void setScanLineVisibilityTest(
bool v);
143 m_depthDenseFilteringMaxDist = maxDistance;
150 m_depthDenseFilteringMinDist = minDistance;
155 if (occupancyRatio < 0.0 || occupancyRatio > 1.0) {
156 std::cerr <<
"occupancyRatio < 0.0 || occupancyRatio > 1.0" << std::endl;
158 m_depthDenseFilteringOccupancyRatio = occupancyRatio;
162 inline void setTracked(
bool tracked) { m_isTrackedDepthDenseFace = tracked; }
179 PolygonLine() : m_p1(NULL), m_p2(NULL), m_poly(), m_imPt1(), m_imPt2() {}
181 PolygonLine(
const PolygonLine &polyLine)
182 : m_p1(NULL), m_p2(NULL), m_poly(polyLine.m_poly), m_imPt1(polyLine.m_imPt1), m_imPt2(polyLine.m_imPt2)
188 PolygonLine &operator=(PolygonLine other)
195 void swap(PolygonLine &first, PolygonLine &second)
198 swap(first.m_p1, second.m_p1);
199 swap(first.m_p2, second.m_p2);
200 swap(first.m_poly, second.m_poly);
201 swap(first.m_imPt1, second.m_imPt1);
202 swap(first.m_imPt2, second.m_imPt2);
230 std::vector<vpImagePoint> &roiPts
231 #
if DEBUG_DISPLAY_DEPTH_DENSE
233 std::vector<std::vector<vpImagePoint> > &roiPts_vec
236 double &distanceToFace);
Generic class defining intrinsic camera parameters.
Implementation of column vector and the associated operations.
Class to define RGB colors available for display functionnalities.
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.