Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches

#include <vpMbtFaceDepthDense.h>

Public Types

enum  vpDepthDenseFilteringType { NO_FILTERING = 0 , DEPTH_OCCUPANCY_RATIO_FILTERING = 1 << 1 , MIN_DISTANCE_FILTERING = 1 << 2 , MAX_DISTANCE_FILTERING = 1 << 3 }

Public Member Functions

 vpMbtFaceDepthDense ()
 vpMbtFaceDepthDense (const vpMbtFaceDepthDense &mbt_face)
virtual ~vpMbtFaceDepthDense ()
vpMbtFaceDepthDenseoperator= (const vpMbtFaceDepthDense &mbt_face)
void addLine (vpPoint &p1, vpPoint &p2, vpMbHiddenFaces< vpMbtPolygon > *const faces, vpUniRand &rand_gen, int polygon=-1, std::string name="")
bool computeDesiredFeatures (const vpHomogeneousMatrix &cMo, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &point_cloud, unsigned int stepX, unsigned int stepY, const vpImage< bool > *mask=nullptr)
bool computeDesiredFeatures (const vpHomogeneousMatrix &cMo, unsigned int width, unsigned int height, const std::vector< vpColVector > &point_cloud, unsigned int stepX, unsigned int stepY, const vpImage< bool > *mask=nullptr)
bool computeDesiredFeatures (const vpHomogeneousMatrix &cMo, unsigned int width, unsigned int height, const vpMatrix &point_cloud, unsigned int stepX, unsigned int stepY, const vpImage< bool > *mask=nullptr)
void computeInteractionMatrixAndResidu (const vpHomogeneousMatrix &cMo, vpMatrix &L, vpColVector &error)
void computeVisibility ()
void computeVisibilityDisplay ()
void display (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, unsigned int thickness=1, bool displayFullModel=false)
void display (const vpImage< vpRGBa > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, unsigned int thickness=1, bool displayFullModel=false)
void displayFeature (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, double scale=0.05, unsigned int thickness=1)
void displayFeature (const vpImage< vpRGBa > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, double scale=0.05, unsigned int thickness=1)
std::vector< std::vector< double > > getModelForDisplay (unsigned int width, unsigned int height, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, bool displayFullModel=false)
unsigned int getNbFeatures () const
bool isTracked () const
bool isVisible () const
void setCameraParameters (const vpCameraParameters &camera)
void setScanLineVisibilityTest (bool v)
void setDepthDenseFilteringMaxDistance (double maxDistance)
void setDepthDenseFilteringMethod (int method)
void setDepthDenseFilteringMinDistance (double minDistance)
void setDepthDenseFilteringOccupancyRatio (double occupancyRatio)
void setTracked (bool tracked)

Public Attributes

vpCameraParameters m_cam
unsigned int m_clippingFlag
double m_distFarClip
double m_distNearClip
vpMbHiddenFaces< vpMbtPolygon > * m_hiddenFace
vpPlane m_planeObject
vpMbtPolygonm_polygon
bool m_useScanLine

Protected Member Functions

void computeROI (const vpHomogeneousMatrix &cMo, unsigned int width, unsigned int height, std::vector< vpImagePoint > &roiPts, double &distanceToFace)
bool samePoint (const vpPoint &P1, const vpPoint &P2) const

Protected Attributes

int m_depthDenseFilteringMethod
double m_depthDenseFilteringMaxDist
double m_depthDenseFilteringMinDist
double m_depthDenseFilteringOccupancyRatio
bool m_isTrackedDepthDenseFace
bool m_isVisible
std::vector< vpMbtDistanceLine * > m_listOfFaceLines
vpPlane m_planeCamera
std::vector< double > m_pointCloudFace
std::vector< PolygonLine > m_polygonLines

Detailed Description

Member Enumeration Documentation

◆ vpDepthDenseFilteringType

Enumerator
NO_FILTERING 

Face is used if visible.

DEPTH_OCCUPANCY_RATIO_FILTERING 

Face is used if there is enough depth information in the face polygon

MIN_DISTANCE_FILTERING 

Face is used if the camera position is farther than the threshold

MAX_DISTANCE_FILTERING 

Face is used if the camera position is closer than the threshold

Definition at line 71 of file vpMbtFaceDepthDense.h.

Constructor & Destructor Documentation

◆ vpMbtFaceDepthDense() [1/2]

◆ vpMbtFaceDepthDense() [2/2]

vpMbtFaceDepthDense::vpMbtFaceDepthDense ( const vpMbtFaceDepthDense & mbt_face)

Copy constructor.

Parameters
mbt_face: MBT face to copy.

Definition at line 191 of file vpMbtFaceDepthDense.cpp.

References vpMbtFaceDepthDense().

◆ ~vpMbtFaceDepthDense()

vpMbtFaceDepthDense::~vpMbtFaceDepthDense ( )
virtual

Destructor.

Definition at line 226 of file vpMbtFaceDepthDense.cpp.

References m_listOfFaceLines.

Member Function Documentation

◆ addLine()

void vpMbtFaceDepthDense::addLine ( vpPoint & P1,
vpPoint & P2,
vpMbHiddenFaces< vpMbtPolygon > *const faces,
vpUniRand & rand_gen,
int polygon = -1,
std::string name = "" )

Add a line belonging to the $ index $ the polygon to the list of lines. It is defined by its two extremities.

If the line already exists, the polygon's index is added to the list of polygon to which it belongs.

Parameters
P1: The first extremity of the line.
P2: The second extremity of the line.
faces: Pointer to vpMbHiddenFaces.
rand_gen: Random number generator used in vpMbtDistanceLine::buildFrom().
polygon: The index of the polygon to which the line belongs.
name: the optional name of the line

Definition at line 247 of file vpMbtFaceDepthDense.cpp.

References vpPolygon3D::addPoint(), vpMbtDistanceLine::addPolygon(), vpMbtDistanceLine::buildFrom(), vpPolygon3D::FAR_CLIPPING, vpMbtDistanceLine::getPolygon(), vpMbtDistanceLine::hiddenface, m_cam, m_clippingFlag, m_distFarClip, m_distNearClip, m_listOfFaceLines, m_polygonLines, m_useScanLine, vpPolygon3D::NEAR_CLIPPING, vpPolygon3D::NO_CLIPPING, vpPolygon3D::p, vpMbtDistanceLine::p1, vpMbtDistanceLine::p2, samePoint(), vpMbtDistanceLine::setCameraParameters(), vpPolygon3D::setClipping(), vpPolygon3D::setFarClippingDistance(), vpMbtDistanceLine::setIndex(), vpMbtDistanceLine::setName(), vpPolygon3D::setNbPoint(), vpPolygon3D::setNearClippingDistance(), and vpMbtDistanceLine::useScanLine.

Referenced by vpMbDepthDenseTracker::addFace().

◆ computeDesiredFeatures() [1/3]

◆ computeDesiredFeatures() [2/3]

bool vpMbtFaceDepthDense::computeDesiredFeatures ( const vpHomogeneousMatrix & cMo,
unsigned int width,
unsigned int height,
const std::vector< vpColVector > & point_cloud,
unsigned int stepX,
unsigned int stepY,
const vpImage< bool > * mask = nullptr )

◆ computeDesiredFeatures() [3/3]

bool vpMbtFaceDepthDense::computeDesiredFeatures ( const vpHomogeneousMatrix & cMo,
unsigned int width,
unsigned int height,
const vpMatrix & point_cloud,
unsigned int stepX,
unsigned int stepY,
const vpImage< bool > * mask = nullptr )

◆ computeInteractionMatrixAndResidu()

void vpMbtFaceDepthDense::computeInteractionMatrixAndResidu ( const vpHomogeneousMatrix & cMo,
vpMatrix & L,
vpColVector & error )

◆ computeROI()

◆ computeVisibility()

void vpMbtFaceDepthDense::computeVisibility ( )

Definition at line 569 of file vpMbtFaceDepthDense.cpp.

References m_isVisible, and m_polygon.

Referenced by vpMbDepthDenseTracker::computeVisibility().

◆ computeVisibilityDisplay()

◆ display() [1/2]

void vpMbtFaceDepthDense::display ( const vpImage< unsigned char > & I,
const vpHomogeneousMatrix & cMo,
const vpCameraParameters & cam,
const vpColor & col,
unsigned int thickness = 1,
bool displayFullModel = false )

Definition at line 949 of file vpMbtFaceDepthDense.cpp.

References vpDisplay::displayLine(), and getModelForDisplay().

◆ display() [2/2]

void vpMbtFaceDepthDense::display ( const vpImage< vpRGBa > & I,
const vpHomogeneousMatrix & cMo,
const vpCameraParameters & cam,
const vpColor & col,
unsigned int thickness = 1,
bool displayFullModel = false )

Definition at line 963 of file vpMbtFaceDepthDense.cpp.

References vpDisplay::displayLine(), and getModelForDisplay().

◆ displayFeature() [1/2]

void vpMbtFaceDepthDense::displayFeature ( const vpImage< unsigned char > & I,
const vpHomogeneousMatrix & cMo,
const vpCameraParameters & cam,
double scale = 0.05,
unsigned int thickness = 1 )

Definition at line 977 of file vpMbtFaceDepthDense.cpp.

◆ displayFeature() [2/2]

void vpMbtFaceDepthDense::displayFeature ( const vpImage< vpRGBa > & I,
const vpHomogeneousMatrix & cMo,
const vpCameraParameters & cam,
double scale = 0.05,
unsigned int thickness = 1 )

Definition at line 982 of file vpMbtFaceDepthDense.cpp.

◆ getModelForDisplay()

std::vector< std::vector< double > > vpMbtFaceDepthDense::getModelForDisplay ( unsigned int width,
unsigned int height,
const vpHomogeneousMatrix & cMo,
const vpCameraParameters & cam,
bool displayFullModel = false )

Return a list of line parameters to display the primitive at a given pose and camera parameters.

  • Parameters are: <primitive id (here 0 for line)>, <pt_start.i()>, <pt_start.j()>, <pt_end.i()>, <pt_end.j()>
Parameters
width: Image width.
height: Image height.
cMo: Pose used to project the 3D model into the image.
cam: The camera parameters.
displayFullModel: If true, the line is displayed even if it is not

Definition at line 998 of file vpMbtFaceDepthDense.cpp.

References computeVisibilityDisplay(), vpMbtDistanceLine::getModelForDisplay(), m_isTrackedDepthDenseFace, m_listOfFaceLines, and m_polygon.

Referenced by display(), display(), and vpMbDepthDenseTracker::getModelForDisplay().

◆ getNbFeatures()

unsigned int vpMbtFaceDepthDense::getNbFeatures ( ) const
inline

◆ isTracked()

bool vpMbtFaceDepthDense::isTracked ( ) const
inline

◆ isVisible()

bool vpMbtFaceDepthDense::isVisible ( ) const
inline

◆ operator=()

◆ samePoint()

bool vpMbtFaceDepthDense::samePoint ( const vpPoint & P1,
const vpPoint & P2 ) const
protected

Check if two vpPoints are similar.

To be similar : $ (X_1 - X_2)^2 + (Y_1 - Y_2)^2 + (Z_1 - Z_2)^2 < epsilon
$.

Parameters
P1: The first point to compare
P2: The second point to compare

Definition at line 1029 of file vpMbtFaceDepthDense.cpp.

References vpPoint::get_oX(), vpPoint::get_oY(), and vpPoint::get_oZ().

Referenced by addLine().

◆ setCameraParameters()

void vpMbtFaceDepthDense::setCameraParameters ( const vpCameraParameters & camera)

Definition at line 1042 of file vpMbtFaceDepthDense.cpp.

References m_cam, and m_listOfFaceLines.

◆ setDepthDenseFilteringMaxDistance()

void vpMbtFaceDepthDense::setDepthDenseFilteringMaxDistance ( double maxDistance)
inline

Definition at line 165 of file vpMbtFaceDepthDense.h.

References m_depthDenseFilteringMaxDist.

◆ setDepthDenseFilteringMethod()

void vpMbtFaceDepthDense::setDepthDenseFilteringMethod ( int method)
inline

Definition at line 167 of file vpMbtFaceDepthDense.h.

References m_depthDenseFilteringMethod.

◆ setDepthDenseFilteringMinDistance()

void vpMbtFaceDepthDense::setDepthDenseFilteringMinDistance ( double minDistance)
inline

Definition at line 169 of file vpMbtFaceDepthDense.h.

References m_depthDenseFilteringMinDist.

◆ setDepthDenseFilteringOccupancyRatio()

void vpMbtFaceDepthDense::setDepthDenseFilteringOccupancyRatio ( double occupancyRatio)
inline

Definition at line 171 of file vpMbtFaceDepthDense.h.

References m_depthDenseFilteringOccupancyRatio.

◆ setScanLineVisibilityTest()

void vpMbtFaceDepthDense::setScanLineVisibilityTest ( bool v)

Definition at line 1052 of file vpMbtFaceDepthDense.cpp.

References m_listOfFaceLines, and m_useScanLine.

◆ setTracked()

void vpMbtFaceDepthDense::setTracked ( bool tracked)
inline

Member Data Documentation

◆ m_cam

vpCameraParameters vpMbtFaceDepthDense::m_cam

Camera intrinsic parameters.

Definition at line 84 of file vpMbtFaceDepthDense.h.

Referenced by vpMbDepthDenseTracker::addFace(), addLine(), computeROI(), operator=(), setCameraParameters(), and vpMbtFaceDepthDense().

◆ m_clippingFlag

unsigned int vpMbtFaceDepthDense::m_clippingFlag

Flags specifying which clipping to used.

Definition at line 86 of file vpMbtFaceDepthDense.h.

Referenced by vpMbDepthDenseTracker::addFace(), addLine(), computeROI(), operator=(), and vpMbtFaceDepthDense().

◆ m_depthDenseFilteringMaxDist

double vpMbtFaceDepthDense::m_depthDenseFilteringMaxDist
protected

◆ m_depthDenseFilteringMethod

int vpMbtFaceDepthDense::m_depthDenseFilteringMethod
protected

◆ m_depthDenseFilteringMinDist

double vpMbtFaceDepthDense::m_depthDenseFilteringMinDist
protected

◆ m_depthDenseFilteringOccupancyRatio

double vpMbtFaceDepthDense::m_depthDenseFilteringOccupancyRatio
protected

Ratio between available depth points and theoretical number of points.

Definition at line 233 of file vpMbtFaceDepthDense.h.

Referenced by computeDesiredFeatures(), computeDesiredFeatures(), computeDesiredFeatures(), operator=(), setDepthDenseFilteringOccupancyRatio(), and vpMbtFaceDepthDense().

◆ m_distFarClip

double vpMbtFaceDepthDense::m_distFarClip

Distance for near clipping.

Definition at line 88 of file vpMbtFaceDepthDense.h.

Referenced by vpMbDepthDenseTracker::addFace(), addLine(), operator=(), and vpMbtFaceDepthDense().

◆ m_distNearClip

double vpMbtFaceDepthDense::m_distNearClip

Distance for near clipping.

Definition at line 90 of file vpMbtFaceDepthDense.h.

Referenced by vpMbDepthDenseTracker::addFace(), addLine(), operator=(), and vpMbtFaceDepthDense().

◆ m_hiddenFace

◆ m_isTrackedDepthDenseFace

bool vpMbtFaceDepthDense::m_isTrackedDepthDenseFace
protected

Flag to define if the face should be tracked or not.

Definition at line 235 of file vpMbtFaceDepthDense.h.

Referenced by getModelForDisplay(), isTracked(), operator=(), setTracked(), and vpMbtFaceDepthDense().

◆ m_isVisible

bool vpMbtFaceDepthDense::m_isVisible
protected

Visibility flag.

Definition at line 237 of file vpMbtFaceDepthDense.h.

Referenced by computeVisibility(), operator=(), and vpMbtFaceDepthDense().

◆ m_listOfFaceLines

◆ m_planeCamera

vpPlane vpMbtFaceDepthDense::m_planeCamera
protected

Plane equation described in the camera frame and updated with the current pose

Definition at line 241 of file vpMbtFaceDepthDense.h.

Referenced by computeInteractionMatrixAndResidu(), operator=(), and vpMbtFaceDepthDense().

◆ m_planeObject

vpPlane vpMbtFaceDepthDense::m_planeObject

Plane equation described in the object frame.

Definition at line 94 of file vpMbtFaceDepthDense.h.

Referenced by vpMbDepthDenseTracker::addFace(), computeInteractionMatrixAndResidu(), operator=(), and vpMbtFaceDepthDense().

◆ m_pointCloudFace

std::vector<double> vpMbtFaceDepthDense::m_pointCloudFace
protected

◆ m_polygon

◆ m_polygonLines

std::vector<PolygonLine> vpMbtFaceDepthDense::m_polygonLines
protected

Polygon lines used for scan-line visibility.

Definition at line 245 of file vpMbtFaceDepthDense.h.

Referenced by addLine(), computeROI(), operator=(), and vpMbtFaceDepthDense().

◆ m_useScanLine