![]() |
Visual Servoing Platform
version 3.3.0
|
#include <vpMbtPolygon.h>
Public Types | |
enum | vpPolygon3DClippingType { NO_CLIPPING = 0, NEAR_CLIPPING = 1, FAR_CLIPPING = 2, LEFT_CLIPPING = 4, RIGHT_CLIPPING = 8, UP_CLIPPING = 16, DOWN_CLIPPING = 32, FOV_CLIPPING = 60, ALL_CLIPPING = 63 } |
Public Member Functions | |
vpMbtPolygon () | |
vpMbtPolygon (const vpMbtPolygon &mbtp) | |
virtual | ~vpMbtPolygon () |
int | getIndex () const |
std::string | getName () const |
bool | isAppearing () const |
bool | isPolygonOriented () |
virtual bool | isVisible (const vpHomogeneousMatrix &cMo, double alpha, const bool &modulo=false, const vpCameraParameters &cam=vpCameraParameters(), unsigned int width=0, unsigned int height=0) |
bool | isVisible () const |
vpMbtPolygon & | operator= (const vpMbtPolygon &mbtp) |
virtual void | setIndex (int i) |
void | setLod (bool use_lod) |
void | setMinLineLengthThresh (double min_line_length) |
void | setMinPolygonAreaThresh (double min_polygon_area) |
void | setName (const std::string &face_name) |
void | setIsPolygonOriented (const bool &oriented) |
void | addPoint (unsigned int n, const vpPoint &P) |
void | changeFrame (const vpHomogeneousMatrix &cMo) |
void | computePolygonClipped (const vpCameraParameters &cam=vpCameraParameters()) |
unsigned int | getClipping () const |
double | getFarClippingDistance () const |
unsigned int | getNbPoint () const |
unsigned int | getNbCornerInsidePrevImage () const |
unsigned int | getNbCornerInsideImage (const vpImage< unsigned char > &I, const vpCameraParameters &cam) |
double | getNearClippingDistance () const |
vpPoint & | getPoint (const unsigned int _index) |
std::vector< vpImagePoint > | getRoi (const vpCameraParameters &cam) |
std::vector< vpImagePoint > | getRoi (const vpCameraParameters &cam, const vpHomogeneousMatrix &cMo) |
void | getRoiClipped (const vpCameraParameters &cam, std::vector< vpImagePoint > &roi) |
void | getRoiClipped (const vpCameraParameters &cam, std::vector< vpImagePoint > &roi, const vpHomogeneousMatrix &cMo) |
void | getRoiClipped (const vpCameraParameters &cam, std::vector< std::pair< vpImagePoint, unsigned int > > &roi) |
void | getRoiClipped (const vpCameraParameters &cam, std::vector< std::pair< vpImagePoint, unsigned int > > &roi, const vpHomogeneousMatrix &cMo) |
Public Attributes | |
int | index |
bool | isvisible |
bool | isappearing |
bool | useLod |
double | minLineLengthThresh |
double | minPolygonAreaThresh |
std::string | name |
bool | hasOrientation |
unsigned int | nbpt |
unsigned int | nbCornersInsidePrev |
vpPoint * | p |
std::vector< std::pair< vpPoint, unsigned int > > | polyClipped |
unsigned int | clippingFlag |
double | distNearClip |
double | distFarClip |
Deprecated functions | |
vp_deprecated void | getRoiClipped (std::vector< vpPoint > &points) |
void | getPolygonClipped (std::vector< std::pair< vpPoint, unsigned int > > &poly) |
void | getPolygonClipped (std::vector< vpPoint > &poly) |
void | setClipping (const unsigned int &flags) |
void | setFarClippingDistance (const double &dist) |
virtual void | setNbPoint (unsigned int nb) |
void | setNearClippingDistance (const double &dist) |
static void | getClippedPolygon (const std::vector< vpPoint > &ptIn, std::vector< vpPoint > &ptOut, const vpHomogeneousMatrix &cMo, const unsigned int &clippingFlags, const vpCameraParameters &cam=vpCameraParameters(), const double &znear=0.001, const double &zfar=100) |
static void | getMinMaxRoi (const std::vector< vpImagePoint > &roi, int &i_min, int &i_max, int &j_min, int &j_max) |
static bool | roiInsideImage (const vpImage< unsigned char > &I, const std::vector< vpImagePoint > &corners) |
Implementation of a polygon of the model used by the model-based tracker.
Definition at line 65 of file vpMbtPolygon.h.
|
inherited |
Enumerator | |
---|---|
NO_CLIPPING | |
NEAR_CLIPPING | |
FAR_CLIPPING | |
LEFT_CLIPPING | |
RIGHT_CLIPPING | |
UP_CLIPPING | |
DOWN_CLIPPING | |
FOV_CLIPPING | |
ALL_CLIPPING |
Definition at line 61 of file vpPolygon3D.h.
vpMbtPolygon::vpMbtPolygon | ( | ) |
Basic constructor.
Definition at line 55 of file vpMbtPolygon.cpp.
vpMbtPolygon::vpMbtPolygon | ( | const vpMbtPolygon & | mbtp | ) |
Definition at line 61 of file vpMbtPolygon.cpp.
|
virtual |
Basic destructor.
Definition at line 88 of file vpMbtPolygon.cpp.
|
inherited |
Add a corner point to the list of polygon's corners.
n | : The index of the corner. |
P | : The point to add. |
Definition at line 132 of file vpPolygon3D.cpp.
Referenced by vpMbTracker::addPolygon(), and vpMbTracker::addProjectionErrorPolygon().
|
inherited |
Project the 3D corner points into the image thanks to the pose of the camera.
cMo | : The pose of the camera. |
Definition at line 144 of file vpPolygon3D.cpp.
Referenced by vpMbKltTracker::reinit(), and vpMbKltTracker::setPose().
|
inherited |
Compute the region of interest in the image according to the used clipping.
cam | : camera parameters used to compute the field of view. |
Definition at line 159 of file vpPolygon3D.cpp.
Referenced by vpMbKltTracker::reinit(), and vpMbKltTracker::setPose().
|
staticinherited |
Static method to compute the clipped points from a set of initial points.
ptIn | : Input points |
ptOut | : Output points (result of the clipping). |
cMo | : Pose considered for the clipping. |
clippingFlags | Clipping flag (see vpPolygon3D::vpPolygon3DClippingType). |
cam | : Camera parameters (Only used if clipping flags contain FOV clipping). |
znear | : Near clipping distance value (Only used if clipping flags contain Near clipping). |
zfar | : Far clipping distance value (Only used if clipping flags contain Far clipping). |
Definition at line 568 of file vpPolygon3D.cpp.
|
inlineinherited |
Get the clipping used.
Definition at line 117 of file vpPolygon3D.h.
|
inlineinherited |
Get the far distance for clipping.
Definition at line 124 of file vpPolygon3D.h.
|
inline |
Get the index of the face.
Definition at line 100 of file vpMbtPolygon.h.
Referenced by vpMbDepthDenseTracker::addFace(), vpMbDepthNormalTracker::addFace(), vpMbtFaceDepthDense::computeDesiredFeatures(), vpMbtFaceDepthNormal::computeDesiredFeatures(), vpMbTracker::initProjectionErrorFaceFromCorners(), and vpMbTracker::initProjectionErrorFaceFromLines().
|
staticinherited |
Definition at line 591 of file vpPolygon3D.cpp.
|
inline |
Get the name of the face.
Definition at line 107 of file vpMbtPolygon.h.
Referenced by vpMbDepthDenseTracker::addFace(), vpMbDepthNormalTracker::addFace(), vpMbTracker::initProjectionErrorFaceFromCorners(), vpMbTracker::initProjectionErrorFaceFromLines(), vpMbDepthDenseTracker::setUseDepthDenseTracking(), and vpMbDepthNormalTracker::setUseDepthNormalTracking().
|
inherited |
Static method to check the number of points of a region defined by the vector of image point that are inside the image.
I | : The image used for its size. |
cam | : The camera parameters. |
Definition at line 531 of file vpPolygon3D.cpp.
|
inlineinherited |
Return the number of corners at the previous computation.
Definition at line 138 of file vpPolygon3D.h.
|
inlineinherited |
Return the number of corners.
Definition at line 131 of file vpPolygon3D.h.
Referenced by vpMbDepthDenseTracker::addFace(), vpMbDepthNormalTracker::addFace(), vpMbKltTracker::computeVVSInteractionMatrixAndResidu(), vpMbTracker::initProjectionErrorFaceFromCorners(), vpMbTracker::initProjectionErrorFaceFromLines(), vpMbKltTracker::reinit(), and vpMbKltTracker::setPose().
|
inlineinherited |
Get the near distance for clipping.
Definition at line 147 of file vpPolygon3D.h.
|
inherited |
Get a reference to a corner.
vpException::dimensionError | if the _index is out of range. |
_index | : the index of the corner |
Definition at line 105 of file vpPolygon3D.cpp.
|
inherited |
Get the 3D clipped points and their clipping information.
poly | : resulting points plus clipping information. |
Definition at line 435 of file vpPolygon3D.cpp.
Referenced by vpMbtFaceDepthNormal::computeNormalVisibility(), and vpMbtFaceDepthDense::computeROI().
|
inherited |
Get the 3D clipped points.
poly | : resulting points. |
Definition at line 445 of file vpPolygon3D.cpp.
|
inherited |
Get the region of interest in the image.
cam | : camera parameters. |
Definition at line 384 of file vpPolygon3D.cpp.
|
inherited |
Get the region of interest in the image.
cam | : camera parameters. |
cMo | : pose. |
Definition at line 404 of file vpPolygon3D.cpp.
|
inherited |
Get the region of interest clipped in the image and the information to know if it's a clipped point.
cam | : camera parameters. |
roi | : image point corresponding to the region of interest with clipping information. |
Definition at line 498 of file vpPolygon3D.cpp.
|
inherited |
Get the region of interest clipped in the image and the information to know if it's a clipped point.
cam | : camera parameters. |
roi | : image point corresponding to the region of interest with clipping information. |
cMo | : pose. |
Definition at line 516 of file vpPolygon3D.cpp.
|
inherited |
Get the region of interest clipped in the image.
cam | : camera parameters. |
roi | : image point corresponding to the region of interest. |
Definition at line 461 of file vpPolygon3D.cpp.
Referenced by vpMbtFaceDepthNormal::computeNormalVisibility(), vpMbtFaceDepthDense::computeROI(), and vpMbtFaceDepthNormal::computeROI().
|
inherited |
Get the region of interest clipped in the image.
cam | : camera parameters. |
cMo | : pose. |
roi | : image point corresponding to the region of interest. |
Definition at line 479 of file vpPolygon3D.cpp.
|
inherited |
Get the 3D points of the clipped region of interest.
points | : resulting points. |
Definition at line 419 of file vpPolygon3D.cpp.
|
inline |
Definition at line 109 of file vpMbtPolygon.h.
|
inline |
Definition at line 110 of file vpMbtPolygon.h.
|
inline |
Definition at line 114 of file vpMbtPolygon.h.
|
virtual |
Check if the polygon is visible in the image and if the angle between the normal to the face and the line vector going from the optical center to the cog of the face is below the given threshold. To do that, the polygon is projected into the image thanks to the camera pose.
cMo | : The pose of the camera. |
alpha | : Maximum angle to detect if the face is visible (in rad). |
modulo | : Indicates if the test should also consider faces that are not oriented counter clockwise. If true, the orientation of the face is without importance. |
cam | : Camera parameters (intrinsics parameters) |
width,height | : Image size used to consider level of detail. |
Definition at line 106 of file vpMbtPolygon.cpp.
Referenced by vpMbtFaceDepthDense::computeVisibility(), vpMbtFaceDepthNormal::computeVisibility(), vpMbKltTracker::computeVVSInteractionMatrixAndResidu(), vpMbKltTracker::getFeaturesForDisplayKlt(), vpMbKltTracker::reinit(), and vpMbKltTracker::setPose().
vpMbtPolygon & vpMbtPolygon::operator= | ( | const vpMbtPolygon & | mbtp | ) |
Definition at line 70 of file vpMbtPolygon.cpp.
References hasOrientation, index, isappearing, isvisible, minLineLengthThresh, minPolygonAreaThresh, name, vpPolygon3D::operator=(), and useLod.
|
staticinherited |
Static method to check whether the region defined by the vector of image point is contained entirely in the image.
I | : The image used for its size. |
corners | : The vector of points defining a region |
Definition at line 632 of file vpPolygon3D.cpp.
|
inlineinherited |
Specify which clipping to use.
flags | : New clipping flags. |
Definition at line 186 of file vpPolygon3D.h.
Referenced by vpMbTracker::addProjectionErrorLine().
|
inlineinherited |
Set the far distance for clipping.
dist | : Far clipping value. |
Definition at line 193 of file vpPolygon3D.h.
Referenced by vpMbTracker::addProjectionErrorLine().
|
inlinevirtual |
Set the index of the face.
i | : the new index of the face. |
Definition at line 123 of file vpMbtPolygon.h.
Referenced by vpMbTracker::addPolygon(), and vpMbTracker::addProjectionErrorPolygon().
|
inline |
Set if the polygon is oriented or not.
oriented | : True if the polygon is oriented, false otherwise. |
Definition at line 165 of file vpMbtPolygon.h.
Referenced by vpMbTracker::addPolygon(), and vpMbTracker::addProjectionErrorPolygon().
void vpMbtPolygon::setLod | ( | bool | use_lod | ) |
Set the flag to consider if the level of detail (LOD) is used or not. When activated, lines and faces of the 3D model are tracked if respectively their projected lenght and area in the image are significative enough. By significative, we mean:
use_lod | : true if level of detail must be used, false otherwise. |
The sample code below shows how to introduce this feature:
Definition at line 276 of file vpMbtPolygon.cpp.
Referenced by vpMbTracker::addPolygon(), and vpMbTracker::addProjectionErrorPolygon().
|
inline |
Set the threshold for the minimum line length to be considered as visible in the LOD (level of detail) case. This threshold is only used when setLoD() is turned on.
min_line_length | : threshold for the minimum line length in pixel. When a single line that doesn't belong to a face is considered by the tracker, this line is tracked only if its lenght in pixel is greater than min_line_length. |
Definition at line 140 of file vpMbtPolygon.h.
Referenced by vpMbTracker::addPolygon(), and vpMbTracker::addProjectionErrorPolygon().
|
inline |
Set the minimum polygon area to be considered as visible in the LOD (level of detail) case. This threshold is only used when setLoD() is turned on.
min_polygon_area | : threshold for the minimum polygon area in pixel. When a face is considered by the tracker, this face is tracked only if its area in pixel is greater than min_polygon_area. |
Definition at line 151 of file vpMbtPolygon.h.
Referenced by vpMbTracker::addPolygon(), and vpMbTracker::addProjectionErrorPolygon().
|
inline |
Set the name of the face.
face_name | : name of the face. |
Definition at line 158 of file vpMbtPolygon.h.
Referenced by vpMbTracker::addPolygon(), and vpMbTracker::addProjectionErrorPolygon().
|
virtualinherited |
Set the number of points which are the corners of the polygon.
nb | : The number of corners. |
Definition at line 118 of file vpPolygon3D.cpp.
Referenced by vpMbTracker::addPolygon(), and vpMbTracker::addProjectionErrorPolygon().
|
inlineinherited |
Set the near distance for clipping.
dist | : Near clipping value. |
Definition at line 206 of file vpPolygon3D.h.
Referenced by vpMbTracker::addProjectionErrorLine().
|
inherited |
|
inherited |
Distance for near clipping.
Definition at line 88 of file vpPolygon3D.h.
Referenced by vpPolygon3D::operator=().
|
inherited |
Distance for near clipping.
Definition at line 86 of file vpPolygon3D.h.
Referenced by vpPolygon3D::operator=().
bool vpMbtPolygon::hasOrientation |
Boolean that specify if the polygon has an orientation or not (mainly used for cylinders)
Definition at line 88 of file vpMbtPolygon.h.
Referenced by operator=().
int vpMbtPolygon::index |
Index of the polygon. Cannot be unsigned int because default value is -1.
Definition at line 70 of file vpMbtPolygon.h.
Referenced by operator=().
bool vpMbtPolygon::isappearing |
flag to specify whether the face is appearing or not
Definition at line 74 of file vpMbtPolygon.h.
Referenced by operator=().
bool vpMbtPolygon::isvisible |
flag to specify whether the face is visible or not
Definition at line 72 of file vpMbtPolygon.h.
Referenced by vpMbtFaceDepthDense::isVisible(), vpMbtFaceDepthNormal::isVisible(), and operator=().
double vpMbtPolygon::minLineLengthThresh |
Threshold for minimum line length in pixel to consider if the line is visible or not in LOD case
Definition at line 80 of file vpMbtPolygon.h.
Referenced by operator=().
double vpMbtPolygon::minPolygonAreaThresh |
Threshold for minimum polygon area in pixel to consider if the polygon is visible or not in LOD case
Definition at line 83 of file vpMbtPolygon.h.
Referenced by operator=().
std::string vpMbtPolygon::name |
|
inherited |
Number of corners inside the image during the last call to getNbCornerInsideImage
Definition at line 78 of file vpPolygon3D.h.
Referenced by vpPolygon3D::operator=().
|
inherited |
Number of points used to define the polygon.
Definition at line 75 of file vpPolygon3D.h.
Referenced by vpMbDepthDenseTracker::addFace(), vpMbDepthNormalTracker::addFace(), vpPolygon3D::operator=(), and vpPolygon3D::vpPolygon3D().
|
inherited |
corners in the object frame
Definition at line 80 of file vpPolygon3D.h.
Referenced by vpMbDepthDenseTracker::addFace(), vpMbDepthNormalTracker::addFace(), vpMbTracker::initProjectionErrorFaceFromCorners(), vpMbTracker::initProjectionErrorFaceFromLines(), vpPolygon3D::operator=(), vpMbKltTracker::setPose(), and vpPolygon3D::vpPolygon3D().
|
inherited |
Region of interest clipped.
Definition at line 82 of file vpPolygon3D.h.
Referenced by vpPolygon3D::operator=().
bool vpMbtPolygon::useLod |
Flag to specify if the visibility of the polygon depends also of the current level of detail (LOD)
Definition at line 77 of file vpMbtPolygon.h.
Referenced by operator=().