![]() |
Visual Servoing Platform
version 3.0.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 65 of file vpMbtDistanceCylinder.h.
vpMbtDistanceCylinder::vpMbtDistanceCylinder | ( | ) |
Basic constructor
Definition at line 63 of file vpMbtDistanceCylinder.cpp.
vpMbtDistanceCylinder::~vpMbtDistanceCylinder | ( | ) |
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 112 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 624 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::computeVVS(), 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 459 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 523 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 588 of file vpMbtDistanceCylinder.cpp.
References meline1, and meline2.
Referenced by vpMbEdgeKltTracker::postTracking(), and vpMbEdgeTracker::track().
|
inline |
Get the camera paramters.
camera | : The vpCameraParameters used to store the camera parameters. |
Definition at line 153 of file vpMbtDistanceCylinder.h.
|
inline |
Get the index of the cylinder.
Definition at line 160 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 168 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 176 of file vpMbtDistanceCylinder.h.
|
inline |
Get the name of the cylinder.
Definition at line 183 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 604 of file vpMbtDistanceCylinder.cpp.
References error, isvisible, L, meline1, meline2, nbFeature, nbFeaturel1, nbFeaturel2, vpArray2D< Type >::resize(), and vpColVector::resize().
Referenced by vpMbEdgeTracker::computeVVS(), and vpMbEdgeKltTracker::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 178 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 194 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeProjectionError(), vpMbEdgeTracker::computeVVS(), vpMbEdgeTracker::getNbPoints(), vpMbEdgeKltTracker::initMbtTracking(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTracking(), vpMbEdgeTracker::testTracking(), vpMbEdgeTracker::track(), and vpMbEdgeTracker::trackMovingEdge().
|
inline |
Check if the cylinder is visible in the image or not.
Definition at line 201 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeProjectionError(), vpMbEdgeTracker::computeVVS(), vpMbEdgeTracker::getNbPoints(), vpMbEdgeKltTracker::initMbtTracking(), vpMbEdgeTracker::reinitMovingEdge(), vpMbEdgeTracker::testTracking(), vpMbEdgeTracker::track(), 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 431 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 209 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder().
|
inline |
Set the index of the cylinder.
i | : The index number |
Definition at line 223 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 230 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVS(), and vpMbEdgeKltTracker::postTrackingMbt().
|
inline |
Set the mean weight of the second line.
wmean | : The mean weight of the second line. |
Definition at line 237 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVS(), and vpMbEdgeKltTracker::postTrackingMbt().
void vpMbtDistanceCylinder::setMovingEdge | ( | vpMe * | _me | ) |
Set the moving edge parameters.
_me | : an instance of vpMe containing all the desired parameters |
Definition at line 156 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 246 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 253 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 216 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 260 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 289 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 328 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 110 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 85 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 87 of file vpMbtDistanceCylinder.h.
Referenced by buildFrom(), computeInteractionMatrixError(), display(), initMovingEdge(), updateMovingEdge(), and ~vpMbtDistanceCylinder().
vpColVector vpMbtDistanceCylinder::error |
The error vector.
Definition at line 100 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), vpMbEdgeTracker::computeVVS(), initInteractionMatrixError(), and vpMbEdgeKltTracker::trackSecondLoop().
vpMbHiddenFaces<vpMbtPolygon>* vpMbtDistanceCylinder::hiddenface |
Pointer to the list of faces.
Definition at line 113 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 115 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 117 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), display(), initInteractionMatrixError(), initMovingEdge(), trackMovingEdge(), and updateMovingEdge().
vpMatrix vpMbtDistanceCylinder::L |
The interaction matrix.
Definition at line 98 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), vpMbEdgeTracker::computeVVS(), initInteractionMatrixError(), and vpMbEdgeKltTracker::trackSecondLoop().
vpMbtMeLine* vpMbtDistanceCylinder::meline1 |
The moving edge containers (first line of the cylinder)
Definition at line 80 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), vpMbEdgeTracker::computeProjectionError(), vpMbEdgeTracker::computeVVS(), displayMovingEdges(), vpMbEdgeTracker::getNbPoints(), initInteractionMatrixError(), initMovingEdge(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), reinitMovingEdge(), setMovingEdge(), vpMbEdgeTracker::testTracking(), vpMbEdgeKltTracker::trackFirstLoop(), trackMovingEdge(), vpMbEdgeTracker::trackMovingEdge(), updateMovingEdge(), and ~vpMbtDistanceCylinder().
vpMbtMeLine* vpMbtDistanceCylinder::meline2 |
The moving edge containers (second line of the cylinder)
Definition at line 82 of file vpMbtDistanceCylinder.h.
Referenced by computeInteractionMatrixError(), vpMbEdgeTracker::computeProjectionError(), vpMbEdgeTracker::computeVVS(), displayMovingEdges(), vpMbEdgeTracker::getNbPoints(), initInteractionMatrixError(), initMovingEdge(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), reinitMovingEdge(), setMovingEdge(), vpMbEdgeTracker::testTracking(), vpMbEdgeKltTracker::trackFirstLoop(), trackMovingEdge(), vpMbEdgeTracker::trackMovingEdge(), updateMovingEdge(), and ~vpMbtDistanceCylinder().
unsigned int vpMbtDistanceCylinder::nbFeature |
The number of moving edges.
Definition at line 102 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVS(), initInteractionMatrixError(), vpMbEdgeKltTracker::initMbtTracking(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), vpMbEdgeKltTracker::trackFirstLoop(), trackMovingEdge(), vpMbEdgeKltTracker::trackSecondLoop(), and updateMovingEdge().
unsigned int vpMbtDistanceCylinder::nbFeaturel1 |
The number of moving edges on line 1.
Definition at line 104 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVS(), initInteractionMatrixError(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), trackMovingEdge(), updateMovingEdge(), and vpMbEdgeTracker::updateMovingEdge().
unsigned int vpMbtDistanceCylinder::nbFeaturel2 |
The number of moving edges on line 2.
Definition at line 106 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVS(), initInteractionMatrixError(), vpMbEdgeTracker::initMovingEdge(), vpMbEdgeKltTracker::postTrackingMbt(), trackMovingEdge(), updateMovingEdge(), and vpMbEdgeTracker::updateMovingEdge().
vpPoint* vpMbtDistanceCylinder::p1 |
The first extremity on the axe.
Definition at line 93 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 95 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 90 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::addCylinder(), and buildFrom().
bool vpMbtDistanceCylinder::Reinit |
Indicates if the line has to be reinitialized.
Definition at line 108 of file vpMbtDistanceCylinder.h.
Referenced by vpMbEdgeTracker::computeVVS(), vpMbEdgeKltTracker::postTrackingMbt(), reinitMovingEdge(), vpMbEdgeTracker::reinitMovingEdge(), trackMovingEdge(), updateMovingEdge(), and vpMbEdgeTracker::updateMovingEdge().