Visual Servoing Platform
version 3.1.0
|
#include <visp3/mbt/vpMbtDistanceCylinder.h>
Public Member Functions | |
vpMbtDistanceCylinder () | |
~vpMbtDistanceCylinder () | |
void | buildFrom (const vpPoint &_p1, const vpPoint &_p2, const double r) |
void | computeInteractionMatrixError (const vpHomogeneousMatrix &cMo, const vpImage< unsigned char > &I) |
void | display (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, const unsigned int thickness=1, const bool displayFullModel=false) |
void | display (const vpImage< vpRGBa > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, const unsigned int thickness=1, const bool displayFullModel=false) |
void | displayMovingEdges (const vpImage< unsigned char > &I) |
void | getCameraParameters (vpCameraParameters &camera) |
unsigned int | getIndex () |
double | getMeanWeight1 () const |
double | getMeanWeight2 () const |
std::string | getName () const |
void | initInteractionMatrixError () |
bool | initMovingEdge (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo) |
bool | isTracked () const |
bool | isVisible () const |
void | reinitMovingEdge (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo) |
void | setCameraParameters (const vpCameraParameters &camera) |
void | setTracked (const bool &track) |
void | setIndex (const unsigned int i) |
void | setMeanWeight1 (const double wmean) |
void | setMeanWeight2 (const double wmean) |
void | setMovingEdge (vpMe *Me) |
void | setName (const std::string &cyl_name) |
void | setName (const char *cyl_name) |
void | setVisible (bool _isvisible) |
void | trackMovingEdge (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo) |
void | updateMovingEdge (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo) |
Public Attributes | |
vpMbtMeLine * | meline1 |
vpMbtMeLine * | meline2 |
vpCircle * | cercle1 |
vpCircle * | cercle2 |
double | radius |
vpPoint * | p1 |
vpPoint * | p2 |
vpMatrix | L |
vpColVector | error |
unsigned int | nbFeature |
unsigned int | nbFeaturel1 |
unsigned int | nbFeaturel2 |
bool | Reinit |
vpCylinder * | c |
vpMbHiddenFaces< vpMbtPolygon > * | hiddenface |
int | index_polygon |
bool | isvisible |
Manage a cylinder used in the model-based tracker.
Definition at line 66 of file vpMbtDistanceCylinder.h.
vpMbtDistanceCylinder::vpMbtDistanceCylinder | ( | ) |
Basic constructor
Definition at line 64 of file vpMbtDistanceCylinder.cpp.
vpMbtDistanceCylinder::~vpMbtDistanceCylinder | ( | ) |
Basic destructor useful to deallocate the memory.
Definition at line 75 of file vpMbtDistanceCylinder.cpp.
References c, cercle1, cercle2, meline1, meline2, p1, p2, and vpForwardProjection::project().
Build a vpMbtDistanceCylinder thanks to two points corresponding to the extremities of its axis and its radius.
_p1 | : The first extremity on the axis. |
_p2 | : The second extremity on the axis. |
r | : Radius of the cylinder. |
Definition at line 119 of file vpMbtDistanceCylinder.cpp.
References c, cercle1, cercle2, vpPoint::get_oX(), vpPoint::get_oY(), vpPoint::get_oZ(), p1, p2, radius, vpCircle::setWorldCoordinates(), and vpCylinder::setWorldCoordinates().
Referenced by vpMbEdgeTracker::addCylinder().
void vpMbtDistanceCylinder::computeInteractionMatrixError | ( | const vpHomogeneousMatrix & | cMo, |
const vpImage< unsigned char > & | I | ||
) |
Compute the interaction matrix and the error vector corresponding to the cylinder.
Definition at line 675 of file vpMbtDistanceCylinder.cpp.
References c, cercle1, cercle2, vpCircle::changeFrame(), vpCylinder::changeFrame(), vpFeatureBuilder::create(), vpDisplay::displayCross(), error, vpDisplay::flush(), vpCameraParameters::get_px(), vpCameraParameters::get_py(), vpCameraParameters::get_u0(), vpCameraParameters::get_v0(), vpFeatureLine::getRho(), vpFeatureLine::getTheta(), vpFeatureLine::interaction(), isvisible, vpMeSite::j, L, vpCylinder::line1, vpCylinder::line2, meline1, meline2, vpColor::orange, vpCircle::projection(), vpCylinder::projection(), and vpColor::red.
Referenced by vpMbEdgeTracker::computeVVSFirstPhase(), vpMbEdgeTracker::computeVVSFirstPhaseFactor(), vpMbEdgeTracker::computeVVSInteractionMatrixAndResidu(), vpMbEdgeKltTracker::trackFirstLoop(), and vpMbEdgeKltTracker::trackSecondLoop().
void vpMbtDistanceCylinder::display | ( | const vpImage< unsigned char > & | I, |
const vpHomogeneousMatrix & | cMo, | ||
const vpCameraParameters & | camera, | ||
const vpColor & | col, | ||
const unsigned int | thickness = 1 , |
||
const bool | displayFullModel = false |
||
) |
Display the cylinder. The 3D cylinder is projected into the image.
I | : The image. |
cMo | : Pose used to project the 3D model into the image. |
camera | : The camera parameters. |
col | : The desired color. |
thickness | : The thickness of the lines. |
displayFullModel | : When true, display the circle even if non visible. |
Definition at line 509 of file vpMbtDistanceCylinder.cpp.
References c, cercle1, cercle2, vpPoint::changeFrame(), vpCircle::changeFrame(), vpCylinder::changeFrame(), vpCircle::computeIntersectionPoint(), vpMeterPixelConversion::convertLine(), vpDisplay::displayLine(), vpCylinder::getRho1(), vpCylinder::getRho2(), vpCylinder::getTheta1(), vpCylinder::getTheta2(), isvisible, p1, p2, vpCircle::projection(), vpPoint::projection(), vpCylinder::projection(), and vpImagePoint::set_ij().
void vpMbtDistanceCylinder::display | ( | const vpImage< vpRGBa > & | I, |
const vpHomogeneousMatrix & | cMo, | ||
const vpCameraParameters & | camera, | ||
const vpColor & | col, | ||
const unsigned int | thickness = 1 , |
||
const bool | displayFullModel = false |
||
) |
Display the cylinder. The 3D cylinder is projected into the image.
I | : The image. |
cMo | : Pose used to project the 3D model into the image. |
camera | : The camera parameters. |
col | : The desired color. |
thickness | : The thickness of the lines. |
displayFullModel | : When true, display the circle even if non visible. |
Definition at line 574 of file vpMbtDistanceCylinder.cpp.
References c, cercle1, cercle2, vpPoint::changeFrame(), vpCircle::changeFrame(), vpCylinder::changeFrame(), vpCircle::computeIntersectionPoint(), vpMeterPixelConversion::convertLine(), vpDisplay::displayLine(), vpCylinder::getRho1(), vpCylinder::getRho2(), vpCylinder::getTheta1(), vpCylinder::getTheta2(), isvisible, p1, p2, vpCircle::projection(), vpPoint::projection(), vpCylinder::projection(), and vpImagePoint::set_ij().
void vpMbtDistanceCylinder::displayMovingEdges | ( | const vpImage< unsigned char > & | I | ) |
Enable to display the points along the lines with a color corresponding to their state.
I | : The image. |
Definition at line 643 of file vpMbtDistanceCylinder.cpp.
References meline1, and meline2.
Referenced by vpMbEdgeTracker::displayFeaturesOnImage(), and vpMbEdgeKltTracker::postTracking().
|
inline |
Get the camera paramters.
camera | : The vpCameraParameters used to store the camera parameters. |
Definition at line 158 of file vpMbtDistanceCylinder.h.
|
inline |
Get the index of the cylinder.
Definition at line 165 of file vpMbtDistanceCylinder.h.
|
inline |
Get the mean weight of the first line. The mean weight is computed thanks to the weight of each moving edge. Those weights are computed by the robust estimation method used during the virtual visual servoing.
Definition at line 174 of file vpMbtDistanceCylinder.h.
|
inline |
Get the mean weight of the second line. The mean weight is computed thanks to the weight of each moving edge. Those weights are computed by the robust estimation method used during the virtual visual servoing.
Definition at line 183 of file vpMbtDistanceCylinder.h.
|
inline |
Get the name of the cylinder.
Definition at line 190 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::removeCylinder().
void vpMbtDistanceCylinder::initInteractionMatrixError | ( | ) |
Initialize the size of the interaction matrix and the error vector.
Definition at line 656 of file vpMbtDistanceCylinder.cpp.
References error, isvisible, L, meline1, meline2, nbFeature, nbFeaturel1, nbFeaturel2, vpArray2D< Type >::resize(), and vpColVector::resize().
Referenced by vpMbEdgeKltTracker::initMbtTracking(), and vpMbEdgeTracker::initMbtTracking().
bool vpMbtDistanceCylinder::initMovingEdge | ( | const vpImage< unsigned char > & | I, |
const vpHomogeneousMatrix & | cMo | ||
) |
Initialize the moving edge thanks to a given pose of the camera. The 3D model is projected into the image to create moving edges along the lines.
I | : The image. |
cMo | : The pose of the camera used to initialize the moving edges. |
Definition at line 182 of file vpMbtDistanceCylinder.cpp.
References c, cercle1, cercle2, vpPoint::changeFrame(), vpCircle::changeFrame(), vpCylinder::changeFrame(), vpCircle::computeIntersectionPoint(), vpMeterPixelConversion::convertLine(), vpImagePoint::get_i(), vpImagePoint::get_j(), vpCylinder::getRho1(), vpCylinder::getRho2(), vpCylinder::getTheta1(), vpCylinder::getTheta2(), isvisible, meline1, meline2, p1, p2, vpCircle::projection(), vpPoint::projection(), vpCylinder::projection(), and vpImagePoint::set_ij().
Referenced by vpMbEdgeTracker::initMovingEdge(), reinitMovingEdge(), and vpMbEdgeTracker::trackMovingEdge().
|
inline |
Return if the cylinder is used for tracking.
Definition at line 201 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeProjectionError(), vpMbEdgeTracker::displayFeaturesOnImage(), vpMbEdgeTracker::getNbPoints(), vpMbEdgeKltTracker::initMbtTracking(), vpMbEdgeTracker::initMbtTracking(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTracking(), vpMbEdgeTracker::testTracking(), and vpMbEdgeTracker::trackMovingEdge().
|
inline |
Check if the cylinder is visible in the image or not.
Definition at line 208 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeProjectionError(), vpMbEdgeTracker::displayFeaturesOnImage(), vpMbEdgeTracker::getNbPoints(), vpMbEdgeTracker::reinitMovingEdge(), vpMbEdgeTracker::testTracking(), vpMbEdgeTracker::trackMovingEdge(), and vpMbEdgeTracker::updateMovingEdge().
void vpMbtDistanceCylinder::reinitMovingEdge | ( | const vpImage< unsigned char > & | I, |
const vpHomogeneousMatrix & | cMo | ||
) |
Reinitialize the cylinder if it is required.
A line is reinitialized if the 2D lines do not match enough with the projected 3D lines.
I | : the image. |
cMo | : The pose of the camera. |
Definition at line 483 of file vpMbtDistanceCylinder.cpp.
References initMovingEdge(), meline1, meline2, and Reinit.
Referenced by vpMbEdgeTracker::reInitLevel(), and vpMbEdgeTracker::reinitMovingEdge().
|
inline |
Set the camera paramters.
camera | : The camera parameters. |
Definition at line 216 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder().
|
inline |
Set the index of the cylinder.
i | : The index number |
Definition at line 230 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder().
|
inline |
Set the mean weight of the first line.
wmean | : The mean weight of the first line. |
Definition at line 237 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeKltTracker::postTrackingMbt(), and vpMbEdgeTracker::updateMovingEdgeWeights().
|
inline |
Set the mean weight of the second line.
wmean | : The mean weight of the second line. |
Definition at line 244 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeKltTracker::postTrackingMbt(), and vpMbEdgeTracker::updateMovingEdgeWeights().
void vpMbtDistanceCylinder::setMovingEdge | ( | vpMe * | _me | ) |
Set the moving edge parameters.
_me | : an instance of vpMe containing all the desired parameters |
Definition at line 162 of file vpMbtDistanceCylinder.cpp.
References meline1, and meline2.
Referenced by vpMbEdgeTracker::addCylinder(), and vpMbEdgeTracker::setMovingEdge().
|
inline |
Set the name of the cylinder.
cyl_name | : The name of the cylinder. |
Definition at line 253 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder().
|
inline |
Set the name of the cylinder.
cyl_name | : The name of the cylinder |
Definition at line 260 of file vpMbtDistanceCylinder.h.
|
inline |
Set if the cylinder has to considered during tracking phase.
track | : True if the cylinder has to be tracked, False otherwise. |
Definition at line 223 of file vpMbtDistanceCylinder.h.
|
inline |
Set a boolean parameter to indicates if the cylinder is visible in the image or not.
_isvisible | : Set to true if the cylinder is visible |
Definition at line 268 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::initMovingEdge().
void vpMbtDistanceCylinder::trackMovingEdge | ( | const vpImage< unsigned char > & | I, |
const vpHomogeneousMatrix & | cMo | ||
) |
Track the moving edges in the image.
I | : the image. |
cMo | : The pose of the camera. |
Definition at line 318 of file vpMbtDistanceCylinder.cpp.
References isvisible, meline1, meline2, nbFeature, nbFeaturel1, nbFeaturel2, and Reinit.
Referenced by vpMbEdgeTracker::trackMovingEdge().
void vpMbtDistanceCylinder::updateMovingEdge | ( | const vpImage< unsigned char > & | I, |
const vpHomogeneousMatrix & | cMo | ||
) |
Update the moving edges internal parameters.
I | : the image. |
cMo | : The pose of the camera. |
Definition at line 349 of file vpMbtDistanceCylinder.cpp.
References c, cercle1, cercle2, vpPoint::changeFrame(), vpCircle::changeFrame(), vpCylinder::changeFrame(), vpCircle::computeIntersectionPoint(), vpMeterPixelConversion::convertLine(), vpImagePoint::get_i(), vpImagePoint::get_j(), vpCylinder::getRho1(), vpCylinder::getRho2(), vpCylinder::getTheta1(), vpCylinder::getTheta2(), isvisible, meline1, meline2, nbFeature, nbFeaturel1, nbFeaturel2, p1, p2, vpCircle::projection(), vpPoint::projection(), vpCylinder::projection(), Reinit, and vpImagePoint::set_ij().
Referenced by vpMbEdgeTracker::updateMovingEdge().
vpCylinder* vpMbtDistanceCylinder::c |
The cylinder.
Definition at line 111 of file vpMbtDistanceCylinder.h.
Referenced by buildFrom(), computeInteractionMatrixError(), display(), initMovingEdge(), updateMovingEdge(), and ~vpMbtDistanceCylinder().
vpCircle* vpMbtDistanceCylinder::cercle1 |
The upper circle limiting the cylinder.
Definition at line 86 of file vpMbtDistanceCylinder.h.
Referenced by buildFrom(), computeInteractionMatrixError(), display(), initMovingEdge(), updateMovingEdge(), and ~vpMbtDistanceCylinder().
vpCircle* vpMbtDistanceCylinder::cercle2 |
The lower circle limiting the cylinder.
Definition at line 88 of file vpMbtDistanceCylinder.h.
Referenced by buildFrom(), computeInteractionMatrixError(), display(), initMovingEdge(), updateMovingEdge(), and ~vpMbtDistanceCylinder().
vpColVector vpMbtDistanceCylinder::error |
The error vector.
Definition at line 101 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), vpMbEdgeTracker::computeVVSFirstPhase(), vpMbEdgeTracker::computeVVSInteractionMatrixAndResidu(), initInteractionMatrixError(), and vpMbEdgeKltTracker::trackSecondLoop().
vpMbHiddenFaces<vpMbtPolygon>* vpMbtDistanceCylinder::hiddenface |
Pointer to the list of faces.
Definition at line 114 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder(), and vpMbEdgeTracker::initMovingEdge().
int vpMbtDistanceCylinder::index_polygon |
Index of the face which contains the cylinder.
Definition at line 116 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder(), and vpMbEdgeTracker::initMovingEdge().
bool vpMbtDistanceCylinder::isvisible |
Indicates if the cylinder is visible or not.
Definition at line 118 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), display(), initInteractionMatrixError(), initMovingEdge(), trackMovingEdge(), and updateMovingEdge().
vpMatrix vpMbtDistanceCylinder::L |
The interaction matrix.
Definition at line 99 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), vpMbEdgeTracker::computeVVSFirstPhase(), vpMbEdgeTracker::computeVVSInteractionMatrixAndResidu(), initInteractionMatrixError(), and vpMbEdgeKltTracker::trackSecondLoop().
vpMbtMeLine* vpMbtDistanceCylinder::meline1 |
The moving edge containers (first line of the cylinder)
Definition at line 81 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), vpMbEdgeTracker::computeProjectionError(), vpMbEdgeTracker::computeVVSFirstPhase(), vpMbEdgeTracker::computeVVSFirstPhaseFactor(), displayMovingEdges(), vpMbEdgeTracker::getNbPoints(), initInteractionMatrixError(), initMovingEdge(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), reinitMovingEdge(), setMovingEdge(), vpMbEdgeTracker::testTracking(), vpMbEdgeKltTracker::trackFirstLoop(), trackMovingEdge(), vpMbEdgeTracker::trackMovingEdge(), updateMovingEdge(), vpMbEdgeTracker::updateMovingEdgeWeights(), and ~vpMbtDistanceCylinder().
vpMbtMeLine* vpMbtDistanceCylinder::meline2 |
The moving edge containers (second line of the cylinder)
Definition at line 83 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), vpMbEdgeTracker::computeProjectionError(), vpMbEdgeTracker::computeVVSFirstPhase(), vpMbEdgeTracker::computeVVSFirstPhaseFactor(), displayMovingEdges(), vpMbEdgeTracker::getNbPoints(), initInteractionMatrixError(), initMovingEdge(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), reinitMovingEdge(), setMovingEdge(), vpMbEdgeTracker::testTracking(), vpMbEdgeKltTracker::trackFirstLoop(), trackMovingEdge(), vpMbEdgeTracker::trackMovingEdge(), updateMovingEdge(), vpMbEdgeTracker::updateMovingEdgeWeights(), and ~vpMbtDistanceCylinder().
unsigned int vpMbtDistanceCylinder::nbFeature |
The number of moving edges.
Definition at line 103 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVSFirstPhase(), vpMbEdgeTracker::computeVVSFirstPhaseFactor(), vpMbEdgeTracker::computeVVSInteractionMatrixAndResidu(), initInteractionMatrixError(), vpMbEdgeKltTracker::initMbtTracking(), vpMbEdgeTracker::initMbtTracking(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), vpMbEdgeKltTracker::trackFirstLoop(), trackMovingEdge(), vpMbEdgeKltTracker::trackSecondLoop(), updateMovingEdge(), and vpMbEdgeTracker::updateMovingEdgeWeights().
unsigned int vpMbtDistanceCylinder::nbFeaturel1 |
The number of moving edges on line 1.
Definition at line 105 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVSFirstPhase(), initInteractionMatrixError(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), trackMovingEdge(), updateMovingEdge(), vpMbEdgeTracker::updateMovingEdge(), and vpMbEdgeTracker::updateMovingEdgeWeights().
unsigned int vpMbtDistanceCylinder::nbFeaturel2 |
The number of moving edges on line 2.
Definition at line 107 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVSFirstPhase(), initInteractionMatrixError(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), trackMovingEdge(), updateMovingEdge(), vpMbEdgeTracker::updateMovingEdge(), and vpMbEdgeTracker::updateMovingEdgeWeights().
vpPoint* vpMbtDistanceCylinder::p1 |
The first extremity on the axe.
Definition at line 94 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder(), buildFrom(), display(), initMovingEdge(), updateMovingEdge(), and ~vpMbtDistanceCylinder().
vpPoint* vpMbtDistanceCylinder::p2 |
The second extremity on the axe.
Definition at line 96 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder(), buildFrom(), display(), initMovingEdge(), updateMovingEdge(), and ~vpMbtDistanceCylinder().
double vpMbtDistanceCylinder::radius |
The radius of the cylinder.
Definition at line 91 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder(), and buildFrom().
bool vpMbtDistanceCylinder::Reinit |
Indicates if the line has to be reinitialized.
Definition at line 109 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeKltTracker::postTrackingMbt(), reinitMovingEdge(), vpMbEdgeTracker::reinitMovingEdge(), trackMovingEdge(), updateMovingEdge(), vpMbEdgeTracker::updateMovingEdge(), and vpMbEdgeTracker::updateMovingEdgeWeights().