Visual Servoing Platform
version 3.3.0 under development (2020-02-17)
|
#include <visp3/mbt/vpMbtDistanceKltPoints.h>
Public Member Functions | |
vpMbtDistanceKltPoints () | |
virtual | ~vpMbtDistanceKltPoints () |
unsigned int | computeNbDetectedCurrent (const vpKltOpencv &_tracker, const vpImage< bool > *mask=NULL) |
void | computeHomography (const vpHomogeneousMatrix &_cTc0, vpHomography &cHc0) |
void | computeInteractionMatrixAndResidu (vpColVector &_R, vpMatrix &_J) |
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 | displayPrimitive (const vpImage< unsigned char > &_I) |
void | displayPrimitive (const vpImage< vpRGBa > &_I) |
std::vector< std::vector< double > > | getFeaturesForDisplay () |
std::vector< std::vector< double > > | getModelForDisplay (const vpCameraParameters &cam, bool displayFullModel=false) |
vpCameraParameters & | getCameraParameters () |
vpColVector | getCurrentNormal () const |
std::map< int, vpImagePoint > & | getCurrentPoints () |
std::map< int, int > & | getCurrentPointsInd () |
unsigned int | getInitialNumberPoint () const |
unsigned int | getCurrentNumberPoints () const |
bool | hasEnoughPoints () const |
void | init (const vpKltOpencv &_tracker, const vpImage< bool > *mask=NULL) |
bool | isTracked () const |
void | removeOutliers (const vpColVector &weight, const double &threshold_outlier) |
virtual void | setCameraParameters (const vpCameraParameters &_cam) |
void | setTracked (const bool &track) |
void | updateMask (cv::Mat &mask, unsigned char _nb=255, unsigned int _shiftBorder=0) |
Public Attributes | |
vpMbtPolygon * | polygon |
vpMbHiddenFaces< vpMbtPolygon > * | hiddenface |
bool | useScanLine |
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 67 of file vpMbtDistanceKltPoints.h.
vpMbtDistanceKltPoints::vpMbtDistanceKltPoints | ( | ) |
Basic constructor.
Definition at line 58 of file vpMbtDistanceKltPoints.cpp.
|
virtual |
Basic destructor.
Definition at line 70 of file vpMbtDistanceKltPoints.cpp.
void vpMbtDistanceKltPoints::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 283 of file vpMbtDistanceKltPoints.cpp.
References vpHomography::convert(), and vpHomogeneousMatrix::extract().
Referenced by vpMbEdgeKltTracker::computeVVS(), and vpMbKltTracker::computeVVSInteractionMatrixAndResidu().
void vpMbtDistanceKltPoints::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 194 of file vpMbtDistanceKltPoints.cpp.
References vpPixelMeterConversion::convertPoint(), and vpException::divideByZeroError.
Referenced by vpMbEdgeKltTracker::computeVVS(), and vpMbKltTracker::computeVVSInteractionMatrixAndResidu().
unsigned int vpMbtDistanceKltPoints::computeNbDetectedCurrent | ( | const vpKltOpencv & | _tracker, |
const vpImage< bool > * | mask = NULL |
||
) |
compute the number of point in this instanciation of the tracker that corresponds to the points of the face
_tracker | : the KLT tracker |
mask | Mask image or NULL if not wanted. Mask values that are set to true are considered in the tracking. To disable a pixel, set false. |
Definition at line 153 of file vpMbtDistanceKltPoints.cpp.
References vpKltOpencv::getFeature(), vpKltOpencv::getNbFeatures(), and vpMeTracker::inMask().
Referenced by vpMbKltTracker::preTracking().
void vpMbtDistanceKltPoints::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 588 of file vpMbtDistanceKltPoints.cpp.
References vpDisplay::displayLine(), and getModelForDisplay().
void vpMbtDistanceKltPoints::display | ( | const vpImage< vpRGBa > & | I, |
const vpHomogeneousMatrix & | cMo, | ||
const vpCameraParameters & | cam, | ||
const vpColor & | col, | ||
unsigned int | thickness = 1 , |
||
bool | displayFullModel = false |
||
) |
Definition at line 602 of file vpMbtDistanceKltPoints.cpp.
References vpDisplay::displayLine(), and getModelForDisplay().
void vpMbtDistanceKltPoints::displayPrimitive | ( | const vpImage< unsigned char > & | _I | ) |
Display the primitives tracked for the face.
_I | : The image where to display. |
Definition at line 545 of file vpMbtDistanceKltPoints.cpp.
References vpDisplay::displayCross(), vpDisplay::displayText(), vpImagePoint::get_i(), vpImagePoint::get_j(), vpColor::red, vpMath::round(), vpImagePoint::set_i(), and vpImagePoint::set_j().
Referenced by vpMbEdgeKltMultiTracker::display().
Display the primitives tracked for the face.
_I | : The image where to display. |
Definition at line 569 of file vpMbtDistanceKltPoints.cpp.
References vpDisplay::displayCross(), vpDisplay::displayText(), 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 162 of file vpMbtDistanceKltPoints.h.
|
inline |
Definition at line 164 of file vpMbtDistanceKltPoints.h.
|
inline |
Get the number of points detected in the last image.
Definition at line 189 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbEdgeKltTracker::computeVVS(), vpMbKltTracker::computeVVSInteractionMatrixAndResidu(), vpMbKltTracker::postTracking(), vpMbKltTracker::preTracking(), vpMbKltTracker::setPose(), and vpMbKltTracker::testTracking().
|
inline |
Definition at line 166 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbKltTracker::setPose().
|
inline |
Definition at line 168 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbKltTracker::setPose().
std::vector< std::vector< double > > vpMbtDistanceKltPoints::getFeaturesForDisplay | ( | ) |
Return a list of features parameters for display.
<feature id (here 1 for KLT)>
, <pt.i()>
, <pt.j()>
, <klt_id.i()>
, <klt_id.j()>
, <klt_id.id>
Definition at line 621 of file vpMbtDistanceKltPoints.cpp.
References vpImagePoint::get_i(), vpImagePoint::get_j(), vpMath::round(), vpImagePoint::set_i(), and vpImagePoint::set_j().
Referenced by vpMbKltTracker::getFeaturesForDisplayKlt().
|
inline |
Get the number of point that was belonging to the face at the initialisation
Definition at line 178 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbKltTracker::postTracking().
std::vector< std::vector< double > > vpMbtDistanceKltPoints::getModelForDisplay | ( | const vpCameraParameters & | camera, |
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()>
camera | : The camera parameters. |
displayFullModel | : If true, the line is displayed even if it is not |
Definition at line 666 of file vpMbtDistanceKltPoints.cpp.
References vpMbHiddenFaces< PolygonType >::computeScanLineQuery(), vpMeterPixelConversion::convertPoint(), vpPolygon3D::DOWN_CLIPPING, vpPolygon3D::FAR_CLIPPING, vpImagePoint::get_i(), vpImagePoint::get_j(), vpPolygon3D::getPolygonClipped(), hiddenface, vpMbtPolygon::isVisible(), vpPolygon3D::LEFT_CLIPPING, vpPolygon3D::NEAR_CLIPPING, polygon, vpPolygon3D::RIGHT_CLIPPING, vpPolygon3D::UP_CLIPPING, and useScanLine.
Referenced by display(), and vpMbKltTracker::getModelForDisplay().
|
inline |
Definition at line 191 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbEdgeKltTracker::computeVVS(), vpMbKltTracker::computeVVSInteractionMatrixAndResidu(), vpMbEdgeKltMultiTracker::display(), vpMbKltTracker::getFeaturesForDisplayKlt(), vpMbKltTracker::postTracking(), vpMbKltTracker::preTracking(), and vpMbKltTracker::testTracking().
void vpMbtDistanceKltPoints::init | ( | const vpKltOpencv & | _tracker, |
const vpImage< bool > * | mask = NULL |
||
) |
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. |
mask | Mask image or NULL if not wanted. Mask values that are set to true are considered in the tracking. To disable a pixel, set false. |
Definition at line 80 of file vpMbtDistanceKltPoints.cpp.
References vpKltOpencv::getFeature(), vpMbtPolygon::getIndex(), vpMbHiddenFaces< PolygonType >::getMbScanLineRenderer(), vpKltOpencv::getNbFeatures(), vpPolygon3D::getPoint(), vpPolygon3D::getRoiClipped(), hiddenface, vpMeTracker::inMask(), vpPolygon::isInside(), vpColVector::normalize(), polygon, and useScanLine.
Referenced by vpMbKltTracker::reinit(), and vpMbKltTracker::setPose().
|
inline |
Return if the klt points are used for tracking.
Definition at line 200 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbEdgeKltTracker::computeVVS(), vpMbKltTracker::computeVVSInteractionMatrixAndResidu(), vpMbEdgeKltMultiTracker::display(), vpMbKltTracker::getFeaturesForDisplayKlt(), vpMbKltTracker::postTracking(), vpMbKltTracker::preTracking(), vpMbKltTracker::reinit(), and vpMbKltTracker::testTracking().
void vpMbtDistanceKltPoints::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 507 of file vpMbtDistanceKltPoints.cpp.
Referenced by vpMbKltTracker::postTracking().
|
inlinevirtual |
Set the camera parameters
_cam | : the new camera parameters |
Definition at line 209 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbKltTracker::initFaceFromCorners(), vpMbKltTracker::initFaceFromLines(), and vpMbKltTracker::setCameraParameters().
|
inline |
Set if the klt points have to considered during tracking phase.
track | : True if they have to be tracked, False otherwise. |
Definition at line 216 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbKltTracker::setUseKltTracking().
void vpMbtDistanceKltPoints::updateMask | ( | cv::Mat & | mask, |
unsigned char | 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 354 of file vpMbtDistanceKltPoints.cpp.
References vpPolygon::buildFrom(), vpPolygon::getArea(), vpPolygon3D::getMinMaxRoi(), vpPolygon3D::getRoiClipped(), vpPolygon::isInside(), polygon, and vpImagePoint::set_ij().
Referenced by vpMbKltTracker::reinit().
vpMbHiddenFaces<vpMbtPolygon>* vpMbtDistanceKltPoints::hiddenface |
Pointer to the list of faces.
Definition at line 108 of file vpMbtDistanceKltPoints.h.
Referenced by getModelForDisplay(), init(), vpMbKltTracker::initFaceFromCorners(), and vpMbKltTracker::initFaceFromLines().
vpMbtPolygon* vpMbtDistanceKltPoints::polygon |
Pointer to the polygon that define a face.
Definition at line 106 of file vpMbtDistanceKltPoints.h.
Referenced by vpMbEdgeKltTracker::computeVVS(), vpMbKltTracker::computeVVSInteractionMatrixAndResidu(), vpMbEdgeKltMultiTracker::display(), vpMbKltTracker::getFeaturesForDisplayKlt(), getModelForDisplay(), init(), vpMbKltTracker::initFaceFromCorners(), vpMbKltTracker::initFaceFromLines(), vpMbKltTracker::postTracking(), vpMbKltTracker::preTracking(), vpMbKltTracker::reinit(), vpMbKltTracker::setPose(), vpMbKltTracker::setUseKltTracking(), vpMbKltTracker::testTracking(), and updateMask().
bool vpMbtDistanceKltPoints::useScanLine |
Use scanline rendering.
Definition at line 110 of file vpMbtDistanceKltPoints.h.
Referenced by getModelForDisplay(), init(), vpMbKltTracker::initFaceFromCorners(), and vpMbKltTracker::initFaceFromLines().