ViSP
2.8.0
|
#include <vpMbtKltPolygon.h>
Public Types | |
enum | vpMbtPolygonClippingType { 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 | |
vpMbtKltPolygon () | |
virtual | ~vpMbtKltPolygon () |
unsigned int | computeNbDetectedCurrent (const vpKltOpencv &_tracker) |
void | computeHomography (const vpHomogeneousMatrix &_cTc0, vpHomography &cHc0) |
void | computeInteractionMatrixAndResidu (vpColVector &_R, vpMatrix &_J) |
void | displayPrimitive (const vpImage< unsigned char > &_I) |
void | displayPrimitive (const vpImage< vpRGBa > &_I) |
vpCameraParameters & | getCameraParameters () |
vpColVector | getCurrentNormal () const |
std::map< int, vpImagePoint > & | getCurrentPoints () |
std::map< int, int > & | getCurrentPointsInd () |
unsigned int | getInitialNumberPoint () const |
unsigned int | getNbPointsCur () const |
bool | hasEnoughPoints () const |
void | init (const vpKltOpencv &_tracker) |
void | removeOutliers (const vpColVector &weight, const double &threshold_outlier) |
virtual void | setCameraParameters (const vpCameraParameters &_cam) |
void | updateMask (IplImage *_mask, unsigned int _nb=255, unsigned int _shiftBorder=0) |
void | addPoint (const unsigned int n, const vpPoint &P) |
void | changeFrame (const vpHomogeneousMatrix &cMo) |
void | computeRoiClipped (const vpCameraParameters &cam=vpCameraParameters()) |
unsigned int | getClipping () const |
double | getFarClippingDistance () const |
int | getIndex () 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) |
bool | isAppearing () const |
virtual bool | isVisible (const vpHomogeneousMatrix &cMo, const double alpha, const bool &modulo=false) |
bool | isVisible () const |
void | setClipping (const unsigned int &flags) |
void | setFarClippingDistance (const double &dist) |
virtual void | setIndex (const int i) |
virtual void | setNbPoint (const unsigned int nb) |
void | setNearClippingDistance (const double &dist) |
Deprecated functions | |
bool | isVisible (const vpHomogeneousMatrix &cMo, const bool &depthTest=false) |
Static Public Member Functions | |
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) |
Public Attributes | |
int | index |
unsigned int | nbpt |
unsigned int | nbCornersInsidePrev |
bool | isvisible |
bool | isappearing |
vpPoint * | p |
std::vector< std::pair< vpPoint, unsigned int > > | roiPointsClip |
unsigned int | clippingFlag |
double | distNearClip |
double | distFarClip |
Implementation of a polygon of the model containing points of interest. It is used by the model-based tracker KLT, and hybrid.
Definition at line 66 of file vpMbtKltPolygon.h.
|
inherited |
Enumerator | |
---|---|
NO_CLIPPING | |
NEAR_CLIPPING | |
FAR_CLIPPING | |
LEFT_CLIPPING | |
RIGHT_CLIPPING | |
UP_CLIPPING | |
DOWN_CLIPPING | |
FOV_CLIPPING | |
ALL_CLIPPING |
Definition at line 70 of file vpMbtPolygon.h.
vpMbtKltPolygon::vpMbtKltPolygon | ( | ) |
Basic constructor.
Definition at line 51 of file vpMbtKltPolygon.cpp.
References vpMbtPolygon::isvisible.
|
virtual |
Basic destructor.
Definition at line 69 of file vpMbtKltPolygon.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 121 of file vpMbtPolygon.cpp.
References vpMbtPolygon::p.
Referenced by vpMbtDistanceLine::buildFrom(), vpMbKltTracker::initFaceFromCorners(), and vpMbEdgeTracker::initFaceFromCorners().
|
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 133 of file vpMbtPolygon.cpp.
References vpPoint::changeFrame(), vpMbtPolygon::nbpt, vpMbtPolygon::p, and vpPoint::projection().
Referenced by vpMbtPolygon::getRoi(), vpMbtPolygon::getRoiClipped(), and vpMbtPolygon::isVisible().
void vpMbtKltPolygon::computeHomography | ( | const vpHomogeneousMatrix & | _cTc0, |
vpHomography & | _cHc0 | ||
) |
compute the homography using a displacement matrix.
the homography is given by:
Several internal variables are computed (dt, cRc0_0n)
_cTc0 | : the displacement matrix of the camera between the initial position of the camera and the current camera position |
_cHc0 | : the homography of the plane |
Definition at line 247 of file vpMbtKltPolygon.cpp.
References vpHomogeneousMatrix::extract().
void vpMbtKltPolygon::computeInteractionMatrixAndResidu | ( | vpColVector & | _R, |
vpMatrix & | _J | ||
) |
Compute the interaction matrix and the residu vector for the face. The method assumes that these two objects are properly sized in order to be able to improve the speed with the use of SubCoVector and subMatrix.
_R | : the residu vector |
_J | : the interaction matrix |
Definition at line 158 of file vpMbtKltPolygon.cpp.
References vpPixelMeterConversion::convertPoint(), and vpMbtPolygon::index.
unsigned int vpMbtKltPolygon::computeNbDetectedCurrent | ( | const vpKltOpencv & | _tracker | ) |
compute the number of point in this instanciation of the tracker that corresponds to the points of the face
_tracker | : the KLT tracker |
Definition at line 124 of file vpMbtKltPolygon.cpp.
References vpKltOpencv::getFeature(), and vpKltOpencv::getNbFeatures().
|
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 232 of file vpMbtPolygon.cpp.
References vpMbtPolygon::clippingFlag, vpCameraParameters::getFovNormals(), vpCameraParameters::isFovComputed(), vpMbtPolygon::nbpt, vpMbtPolygon::NO_CLIPPING, vpMbtPolygon::p, vpPoint::projection(), and vpMbtPolygon::roiPointsClip.
Referenced by vpMbtDistanceLine::display(), vpMbtPolygon::getRoiClipped(), vpMbtDistanceLine::initMovingEdge(), updateMask(), and vpMbtDistanceLine::updateMovingEdge().
void vpMbtKltPolygon::displayPrimitive | ( | const vpImage< unsigned char > & | _I | ) |
Display the primitives tracked for the face.
_I | : The image where to display. |
Definition at line 423 of file vpMbtKltPolygon.cpp.
References vpDisplay::displayCharString(), vpDisplay::displayCross(), vpImagePoint::get_i(), vpImagePoint::get_j(), vpColor::red, vpMath::round(), vpImagePoint::set_i(), and vpImagePoint::set_j().
Display the primitives tracked for the face.
_I | : The image where to display. |
Definition at line 448 of file vpMbtKltPolygon.cpp.
References vpDisplay::displayCharString(), vpDisplay::displayCross(), vpImagePoint::get_i(), vpImagePoint::get_j(), vpColor::red, vpMath::round(), vpImagePoint::set_i(), and vpImagePoint::set_j().
|
inline |
Get the camera parameters of the face.
Definition at line 122 of file vpMbtKltPolygon.h.
|
inlineinherited |
Get the clipping used.
Definition at line 134 of file vpMbtPolygon.h.
Referenced by vpMbtDistanceLine::display(), vpMbtDistanceLine::initMovingEdge(), and vpMbtDistanceLine::updateMovingEdge().
|
inline |
Definition at line 124 of file vpMbtKltPolygon.h.
|
inline |
Definition at line 126 of file vpMbtKltPolygon.h.
|
inline |
Definition at line 128 of file vpMbtKltPolygon.h.
|
inlineinherited |
Get the far distance for clipping.
Definition at line 141 of file vpMbtPolygon.h.
|
inlineinherited |
Get the index of the face.
Definition at line 148 of file vpMbtPolygon.h.
|
inline |
Get the number of point that was belonging to the face at the initialisation
Definition at line 135 of file vpMbtKltPolygon.h.
|
staticinherited |
Definition at line 574 of file vpMbtPolygon.cpp.
Referenced by updateMask().
|
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 552 of file vpMbtPolygon.cpp.
References vpMeterPixelConversion::convertPoint(), vpImagePoint::get_i(), vpImagePoint::get_j(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), vpMbtPolygon::nbCornersInsidePrev, vpMbtPolygon::nbpt, and vpMbtPolygon::p.
|
inlineinherited |
Return the number of corners at the previous computation.
Definition at line 162 of file vpMbtPolygon.h.
|
inlineinherited |
Return the number of corners.
Definition at line 155 of file vpMbtPolygon.h.
Referenced by vpMbEdgeTracker::addPolygon().
|
inline |
get the number of points detected in the last image.
Definition at line 145 of file vpMbtKltPolygon.h.
|
inlineinherited |
Get the near distance for clipping.
Definition at line 171 of file vpMbtPolygon.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 92 of file vpMbtPolygon.cpp.
References vpException::dimensionError, vpMbtPolygon::nbpt, and vpMbtPolygon::p.
|
inherited |
Get the region of interest in the image.
cam | : camera parameters. |
Definition at line 450 of file vpMbtPolygon.cpp.
References vpMeterPixelConversion::convertPoint(), vpMbtPolygon::nbpt, and vpMbtPolygon::p.
Referenced by vpMbtPolygon::getRoi().
|
inherited |
Get the region of interest in the image.
cam | : camera parameters. |
cMo | : pose. |
Definition at line 471 of file vpMbtPolygon.cpp.
References vpMbtPolygon::changeFrame(), and vpMbtPolygon::getRoi().
|
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 486 of file vpMbtPolygon.cpp.
References vpMeterPixelConversion::convertPoint(), and vpMbtPolygon::roiPointsClip.
Referenced by vpMbtPolygon::getRoiClipped(), init(), and updateMask().
|
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 503 of file vpMbtPolygon.cpp.
References vpMbtPolygon::changeFrame(), vpMbtPolygon::computeRoiClipped(), and vpMbtPolygon::getRoiClipped().
|
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 519 of file vpMbtPolygon.cpp.
References vpMeterPixelConversion::convertPoint(), and vpMbtPolygon::roiPointsClip.
|
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 536 of file vpMbtPolygon.cpp.
References vpMbtPolygon::changeFrame(), vpMbtPolygon::computeRoiClipped(), and vpMbtPolygon::getRoiClipped().
|
inline |
Definition at line 147 of file vpMbtKltPolygon.h.
void vpMbtKltPolygon::init | ( | const vpKltOpencv & | _tracker | ) |
Initialise the face to track. All the points in the map, representing all the map detected in the image, are parsed in order to extract the id of the points that are indeed in the face.
_tracker | : ViSP OpenCV KLT Tracker. |
Definition at line 80 of file vpMbtKltPolygon.cpp.
References vpPlane::getD(), vpKltOpencv::getFeature(), vpKltOpencv::getNbFeatures(), vpPlane::getNormal(), vpMbtPolygon::getRoiClipped(), vpColVector::normalize(), and vpMbtPolygon::p.
|
inlineinherited |
Definition at line 187 of file vpMbtPolygon.h.
|
virtualinherited |
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. |
Definition at line 156 of file vpMbtPolygon.cpp.
References vpMbtPolygon::changeFrame(), vpColVector::crossProd(), vpColVector::dotProd(), vpPoint::get_X(), vpPoint::get_Y(), vpPoint::get_Z(), vpMbtPolygon::isappearing, vpMbtPolygon::isvisible, vpMbtPolygon::nbpt, vpColVector::normalize(), vpMbtPolygon::p, vpMath::rad(), vpPoint::set_X(), vpPoint::set_Y(), and vpPoint::set_Z().
|
inlineinherited |
Definition at line 189 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::isVisible().
|
inherited |
Check if the polygon is visible in the image. To do that, the polygon is projected into the image thanks to the camera pose.
cMo | : The pose of the camera. |
depthTest | : True if a face has to be entirely visible (in front of the camera). False if it can be partially visible. |
Definition at line 643 of file vpMbtPolygon.cpp.
References vpMbtPolygon::changeFrame(), vpMbtPolygon::isappearing, vpMbtPolygon::isvisible, vpMbtPolygon::isVisible(), vpMbtPolygon::nbpt, vpMbtPolygon::p, and vpMath::rad().
void vpMbtKltPolygon::removeOutliers | ( | const vpColVector & | _w, |
const double & | threshold_outlier | ||
) |
This method removes the outliers. A point is considered as outlier when its associated weight is below a given threshold (threshold_outlier).
_w | : Vector containing the weight of all the tracked points. |
threshold_outlier | : Threshold to specify wether or not a point has to be deleted. |
Definition at line 382 of file vpMbtKltPolygon.cpp.
|
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 615 of file vpMbtPolygon.cpp.
References vpImage< Type >::getHeight(), and vpImage< Type >::getWidth().
|
inlinevirtual |
Set the camera parameters
_cam | : the new camera parameters |
Definition at line 158 of file vpMbtKltPolygon.h.
|
inlineinherited |
Specify which clipping to use.
flags | : New clipping flags. |
Definition at line 198 of file vpMbtPolygon.h.
Referenced by vpMbEdgeTracker::addLine(), and vpMbEdgeTracker::setClipping().
|
inlineinherited |
Set the far distance for clipping.
dist | : Far clipping value. |
Definition at line 205 of file vpMbtPolygon.h.
References vpMbtPolygon::FAR_CLIPPING.
Referenced by vpMbEdgeTracker::addLine(), and vpMbEdgeTracker::setFarClippingDistance().
|
inlinevirtualinherited |
Set the index of the face.
i | : the new index of the face. |
Definition at line 212 of file vpMbtPolygon.h.
Referenced by vpMbEdgeTracker::addPolygon(), vpMbKltTracker::initFaceFromCorners(), and vpMbEdgeTracker::initFaceFromCorners().
|
virtualinherited |
Set the number of points which are the corners of the polygon.
nb | : The number of corners. |
Definition at line 106 of file vpMbtPolygon.cpp.
References vpMbtPolygon::nbpt, and vpMbtPolygon::p.
Referenced by vpMbtDistanceLine::buildFrom(), vpMbKltTracker::initFaceFromCorners(), and vpMbEdgeTracker::initFaceFromCorners().
|
inlineinherited |
Set the near distance for clipping.
dist | : Near clipping value. |
Definition at line 220 of file vpMbtPolygon.h.
References vpMbtPolygon::NEAR_CLIPPING.
Referenced by vpMbEdgeTracker::addLine(), and vpMbEdgeTracker::setNearClippingDistance().
void vpMbtKltPolygon::updateMask | ( | IplImage * | _mask, |
unsigned int | _nb = 255 , |
||
unsigned int | _shiftBorder = 0 |
||
) |
Modification of all the pixels that are in the roi to the value of _nb ( default is 255).
_mask | : the mask to update (0, not in the object, _nb otherwise). |
_nb | : Optionnal value to set to the pixels included in the face. |
_shiftBorder | : Optionnal shift for the border in pixel (sort of built-in erosion) to avoid to consider pixels near the limits of the face. |
Definition at line 318 of file vpMbtKltPolygon.cpp.
References vpCameraParameters::computeFov(), vpMbtPolygon::computeRoiClipped(), vpMbtPolygon::getMinMaxRoi(), and vpMbtPolygon::getRoiClipped().
|
inherited |
Clipping flag.
Definition at line 99 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::computeRoiClipped(), and vpMbtPolygon::vpMbtPolygon().
|
inherited |
Distance for near clipping.
Definition at line 103 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::vpMbtPolygon().
|
inherited |
Distance for near clipping.
Definition at line 101 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::vpMbtPolygon().
|
inherited |
Index of the polygon. Cannot be unsigned int because deafult value is -1.
Definition at line 85 of file vpMbtPolygon.h.
Referenced by computeInteractionMatrixAndResidu().
|
inherited |
flag to specify whether the face is appearing or not
Definition at line 93 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::isVisible(), and vpMbtPolygon::vpMbtPolygon().
|
inherited |
flag to specify whether the face is visible or not
Definition at line 91 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::isVisible(), vpMbtKltPolygon(), and vpMbtPolygon::vpMbtPolygon().
|
inherited |
Number of corners inside the image during the last call to getNbCornerInsideImage.
Definition at line 89 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::getNbCornerInsideImage(), and vpMbtPolygon::vpMbtPolygon().
|
inherited |
Number of points used to define the polygon.
Definition at line 87 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::changeFrame(), vpMbtPolygon::computeRoiClipped(), vpMbtPolygon::getNbCornerInsideImage(), vpMbtPolygon::getPoint(), vpMbtPolygon::getRoi(), vpMbtPolygon::isVisible(), vpMbtPolygon::setNbPoint(), and vpMbtPolygon::vpMbtPolygon().
|
inherited |
corners in the object frame
Definition at line 95 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::addPoint(), vpMbEdgeTracker::addPolygon(), vpMbtDistanceLine::buildFrom(), vpMbtPolygon::changeFrame(), vpMbtPolygon::computeRoiClipped(), vpMbtPolygon::getNbCornerInsideImage(), vpMbtPolygon::getPoint(), vpMbtPolygon::getRoi(), init(), vpMbtPolygon::isVisible(), vpMbtPolygon::setNbPoint(), vpMbtPolygon::vpMbtPolygon(), and vpMbtPolygon::~vpMbtPolygon().
|
inherited |
Region of interest clipped.
Definition at line 97 of file vpMbtPolygon.h.
Referenced by vpMbtPolygon::computeRoiClipped(), vpMbtDistanceLine::display(), vpMbtPolygon::getRoiClipped(), vpMbtDistanceLine::initMovingEdge(), and vpMbtDistanceLine::updateMovingEdge().