 |
Visual Servoing Platform
version 3.3.0
|
42 #include <visp3/core/vpDebug.h>
43 #include <visp3/core/vpTrackingException.h>
44 #include <visp3/core/vpVelocityTwistMatrix.h>
45 #include <visp3/mbt/vpMbEdgeKltTracker.h>
46 #include <visp3/mbt/vpMbtXmlGenericParser.h>
48 #if defined(VISP_HAVE_MODULE_KLT) && (defined(VISP_HAVE_OPENCV) && (VISP_HAVE_OPENCV_VERSION >= 0x020100))
51 : m_thresholdKLT(2.), m_thresholdMBT(2.), m_maxIterKlt(30), m_w_mbt(), m_w_klt(), m_error_hybrid(), m_w_hybrid()
83 unsigned int i = (
unsigned int)
scales.size();
119 unsigned int i = (
unsigned int)
scales.size();
156 unsigned int i = (
unsigned int)
scales.size();
185 unsigned int nbrow = 0;
186 for (std::list<vpMbtDistanceLine *>::iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
195 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
205 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
281 #ifdef VISP_HAVE_PUGIXML
284 xmlp.setCameraParameters(
m_cam);
290 xmlp.setKltMaxFeatures(10000);
291 xmlp.setKltWindowSize(5);
292 xmlp.setKltQuality(0.01);
293 xmlp.setKltMinDistance(5);
294 xmlp.setKltHarrisParam(0.01);
295 xmlp.setKltBlockSize(3);
296 xmlp.setKltPyramidLevels(3);
300 std::cout <<
" *********** Parsing XML for Mb Edge KLT Tracker ************ " << std::endl;
301 xmlp.parse(configFile.c_str());
303 vpERROR_TRACE(
"Can't open XML file \"%s\"\n ", configFile.c_str());
308 xmlp.getCameraParameters(camera);
314 if (xmlp.hasNearClippingDistance())
317 if (xmlp.hasFarClippingDistance())
320 if (xmlp.getFovClipping()) {
337 xmlp.getEdgeMe(meParser);
353 std::cerr <<
"pugixml third-party is not properly built to read config file: " << configFile << std::endl;
367 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
374 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
382 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
423 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
430 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
438 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
487 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
488 if ((*it)->isTracked()) {
490 unsigned int indexLine = 0;
493 for (
size_t a = 0; a < l->
meline.size(); a++) {
494 std::list<vpMeSite>::iterator itListLine;
496 itListLine = l->
meline[a]->getMeList().begin();
498 for (
unsigned int i = 0; i < l->
nbFeature[a]; i++) {
499 wmean += w[n + indexLine];
501 if (w[n + indexLine] < 0.5) {
527 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
529 if ((*it)->isTracked()) {
532 std::list<vpMeSite>::iterator itListCyl1;
533 std::list<vpMeSite>::iterator itListCyl2;
535 itListCyl1 = cy->
meline1->getMeList().begin();
536 itListCyl2 = cy->
meline2->getMeList().begin();
540 for (
unsigned int i = 0; i < cy->
nbFeaturel1; i++) {
543 if (w[n + i] < 0.5) {
564 for (
unsigned int i = cy->
nbFeaturel1; i < cy->nbFeature; i++) {
567 if (w[n + i] < 0.5) {
593 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
594 if ((*it)->isTracked()) {
597 std::list<vpMeSite>::iterator itListCir;
600 itListCir = ci->
meEllipse->getMeList().begin();
604 for (
unsigned int i = 0; i < ci->
nbFeature; i++) {
607 if (w[n + i] < 0.5) {
646 if (nbrow < 4 && nbInfos < 4) {
648 }
else if (nbrow < 4)
651 unsigned int totalNbRows = nbrow + 2 * nbInfos;
653 double residu_1 = -1;
654 unsigned int iter = 0;
664 L_mbt.
resize(nbrow, 6,
false,
false);
665 R_mbt.
resize(nbrow,
false);
669 L_klt.
resize(2 * nbInfos, 6,
false,
false);
670 R_klt.
resize(2 * nbInfos,
false);
674 vpRobust robust_mbt(0), robust_klt(0);
694 double residuMBT = 0;
695 double residuKLT = 0;
715 robust_klt.
resize(2 * nbInfos);
720 while (((
int)((residu - residu_1) * 1e8) != 0) && (iter <
m_maxIter)) {
725 unsigned int shift = 0;
766 unsigned int cpt = 0;
767 while (cpt < (nbrow + 2 * nbInfos)) {
768 if (cpt < (
unsigned)nbrow) {
776 bool reStartFromLastIncrement =
false;
779 if (reStartFromLastIncrement) {
783 if (!reStartFromLastIncrement) {
787 for (
unsigned int i = 0; i < R_mbt.
getRows(); i++)
788 residuMBT += fabs(R_mbt[i]);
794 L.insert(L_mbt, 0, 0);
799 for (
unsigned int i = 0; i < R_klt.
getRows(); i++)
800 residuKLT += fabs(R_klt[i]);
806 L.insert(L_klt, nbrow, 0);
810 while (cpt < (nbrow + 2 * nbInfos)) {
811 if (cpt < (
unsigned)nbrow) {
824 LVJ_true = (L * cVo *
oJo);
833 for (
unsigned int i = 0; i < weighted_error.getRows(); i++) {
839 for (
unsigned int j = 0; j < 6; j += 1) {
845 residu = sqrt(num / den);
847 computeVVSPoseEstimation(
isoJoIdentity, iter, L, LTL, weighted_error,
m_error_hybrid, m_error_prev, LTR, mu, v,
870 "computeVVSInteractionMatrixAndR"
871 "esidu() should not be called!");
900 unsigned int nbrow = 0;
956 unsigned int nbrow = 0;
1004 factor.
resize(nbrow,
false);
1008 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
1009 if ((*it)->isTracked()) {
1016 int index = *itindex;
1027 unsigned int indexFeature = 0;
1028 for (
size_t a = 0; a < l->
meline.size(); a++) {
1029 std::list<vpMeSite>::const_iterator itListLine;
1030 if (l->
meline[a] != NULL) {
1031 itListLine = l->
meline[a]->getMeList().begin();
1033 for (
unsigned int i = 0; i < l->
nbFeature[a]; i++) {
1034 factor[n + i] = fac;
1037 factor[n + i] = 0.2;
1047 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
1049 if ((*it)->isTracked()) {
1054 std::list<vpMeSite>::const_iterator itCyl1;
1055 std::list<vpMeSite>::const_iterator itCyl2;
1057 itCyl1 = cy->
meline1->getMeList().begin();
1058 itCyl2 = cy->
meline2->getMeList().begin();
1061 for (
unsigned int i = 0; i < cy->
nbFeature; i++) {
1062 factor[n + i] = fac;
1064 if (i < cy->nbFeaturel1) {
1072 factor[n + i] = 0.2;
1079 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
1080 if ((*it)->isTracked()) {
1085 std::list<vpMeSite>::const_iterator itCir;
1087 itCir = ci->
meEllipse->getMeList().begin();
1090 for (
unsigned int i = 0; i < ci->
nbFeature; i++) {
1091 factor[n + i] = fac;
1094 factor[n + i] = 0.2;
1113 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
1114 if ((*it)->isTracked()) {
1118 for (
unsigned int j = 0; j < 6; j++) {
1119 L[n + i][j] = l->
L[i][j];
1120 error[n + i] = l->
error[i];
1127 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
1129 if ((*it)->isTracked()) {
1132 for (
unsigned int i = 0; i < cy->
nbFeature; i++) {
1133 for (
unsigned int j = 0; j < 6; j++) {
1134 L[n + i][j] = cy->
L[i][j];
1135 error[n + i] = cy->
error[i];
1141 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
1142 if ((*it)->isTracked()) {
1145 for (
unsigned int i = 0; i < ci->
nbFeature; i++) {
1146 for (
unsigned int j = 0; j < 6; j++) {
1147 L[n + i][j] = ci->
L[i][j];
1148 error[n + i] = ci->
error[i];
1204 int idFace,
const std::string &name)
1220 const std::string &name)
1239 bool displayFullModel)
1243 for (
size_t i = 0; i < models.size(); i++) {
1250 double mu20 = models[i][3];
1251 double mu11 = models[i][4];
1252 double mu02 = models[i][5];
1265 std::stringstream ss;
1272 #ifdef VISP_HAVE_OGRE
1291 bool displayFullModel)
1295 for (
size_t i = 0; i < models.size(); i++) {
1302 double mu20 = models[i][3];
1303 double mu11 = models[i][4];
1304 double mu02 = models[i][5];
1317 std::stringstream ss;
1324 #ifdef VISP_HAVE_OGRE
1333 bool displayFullModel)
1335 std::vector<std::vector<double> > models;
1337 for (
unsigned int i = 0; i <
scales.size(); i += 1) {
1341 std::vector<std::vector<double> > currentModel =
1342 (*it)->getModelForDisplay(width, height, cMo, cam, displayFullModel);
1343 models.insert(models.end(), currentModel.begin(), currentModel.end());
1346 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[
scaleLevel].begin();
1348 std::vector<std::vector<double> > currentModel =
1349 (*it)->getModelForDisplay(width, height, cMo, cam, displayFullModel);
1350 models.insert(models.end(), currentModel.begin(), currentModel.end());
1353 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[
scaleLevel].begin();
1355 std::vector<double> paramsCircle = (*it)->getModelForDisplay(cMo, cam, displayFullModel);
1356 models.push_back(paramsCircle);
1363 #ifdef VISP_HAVE_OGRE
1388 #if (VISP_HAVE_OPENCV_VERSION < 0x020408)
1390 cvReleaseImage(&
cur);
1396 for (std::list<vpMbtDistanceKltPoints *>::const_iterator it =
kltPolygons.begin(); it !=
kltPolygons.end(); ++it) {
1398 if (kltpoly != NULL) {
1408 if (kltPolyCylinder != NULL) {
1409 delete kltPolyCylinder;
1411 kltPolyCylinder = NULL;
1433 for (
unsigned int i = 0; i <
scales.size(); i += 1) {
1435 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[i].begin(); it !=
lines[i].end(); ++it) {
1442 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[i].begin(); it !=
cylinders[i].end();
1450 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[i].begin(); it !=
circles[i].end(); ++it) {
1479 #elif !defined(VISP_BUILD_SHARED_LIBS)
1482 void dummy_vpMbEdgeKltTracker(){};
1483 #endif // VISP_HAVE_OPENCV
void preTracking(const vpImage< unsigned char > &I)
bool hasEnoughPoints() const
Error that can be emited by the vpTracker class and its derivates.
vpMbtMeLine * meline1
The moving edge containers (first line of the cylinder)
unsigned int trackFirstLoop(const vpImage< unsigned char > &I, vpColVector &factor, unsigned int lvl=0)
void upScale(const unsigned int _scale)
virtual void loadConfigFile(const std::string &configFile)
std::vector< vpMbtMeLine * > meline
The moving edge container.
void downScale(const unsigned int _scale)
virtual void setPose(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cdMo)
bool m_computeInteraction
void setMeanWeight(double _wmean)
static double sqr(double x)
bool Reinit
Indicates if the line has to be reinitialized.
vpMatrix L
The interaction matrix.
std::vector< unsigned int > nbFeature
The number of moving edges.
vpHomogeneousMatrix m_cMo
The current pose.
void setMinDistance(double minDistance)
Manage a cylinder used in the model-based tracker.
static void displayLine(const vpImage< unsigned char > &I, const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color, unsigned int thickness=1, bool segment=true)
std::list< int > Lindex_polygon
Index of the faces which contain the line.
unsigned int nbFeature
The number of moving edges.
void displayOgre(const vpHomogeneousMatrix &cMo)
void setMeanWeight2(double wmean)
vpCameraParameters m_cam
The camera parameters.
Point removed during virtual visual-servoing because considered as an outlier.
void computeClippedPolygons(const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam)
unsigned int nbFeatureTotal
The number of moving edges.
bool useOgre
Use Ogre3d for visibility tests.
virtual void computeVVSCheckLevenbergMarquardt(unsigned int iter, vpColVector &error, const vpColVector &m_error_prev, const vpHomogeneousMatrix &cMoPrev, double &mu, bool &reStartFromLastIncrement, vpColVector *const w=NULL, const vpColVector *const m_w_prev=NULL)
static void convert(const vpImage< unsigned char > &src, vpImage< vpRGBa > &dest)
static double rad(double deg)
Implementation of a polygon of the model containing points of interest. It is used by the model-based...
void setMeanWeight1(double wmean)
Generic class defining intrinsic camera parameters.
void setMovingEdge(const vpMe &me)
void displayMovingEdges(const vpImage< unsigned char > &I)
void trackMovingEdge(const vpImage< unsigned char > &I)
Implementation of a polygon of the model containing points of interest. It is used by the model-based...
bool hasEnoughPoints() const
vpMatrix L
The interaction matrix.
static double deg(double rad)
void initMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &_cMo)
void setQuality(double qualityLevel)
vpColVector error
The error vector.
virtual void initCylinder(const vpPoint &, const vpPoint &, double, int, const std::string &name="")
void setHarrisFreeParameter(double harris_k)
Contains an M-Estimator and various influence function.
void trackSecondLoop(const vpImage< unsigned char > &I, vpMatrix &L, vpColVector &_error, const vpHomogeneousMatrix &cMo, unsigned int lvl=0)
bool computeCovariance
Flag used to specify if the covariance matrix has to be computed or not.
vpMbHiddenFaces< vpMbtPolygon > faces
Set of faces describing the object.
bool Reinit
Indicates if the line has to be reinitialized.
virtual void initCylinder(const vpPoint &p1, const vpPoint &p2, double radius, int idFace=0, const std::string &name="")
virtual void computeVVSInit()
vpKltOpencv tracker
Points tracker.
void computeInteractionMatrixError(const vpHomogeneousMatrix &cMo, const vpImage< unsigned char > &I)
vpMbtMeLine * meline2
The moving edge containers (second line of the cylinder)
void computeInteractionMatrixAndResidu(vpColVector &_R, vpMatrix &_J)
vpMbScanLine & getMbScanLineRenderer()
Manage a circle used in the model-based tracker.
virtual void initFaceFromCorners(vpMbtPolygon &polygon)
vpColVector m_error_hybrid
(s - s*)
void displayMovingEdges(const vpImage< unsigned char > &I)
vpColVector m_w_klt
Robust weights for KLT.
unsigned int getCurrentNumberPoints() const
Point used by the tracker.
double m_thresholdKLT
The threshold used in the robust estimation of KLT.
void setCameraParameters(const vpCameraParameters &cam)
virtual void loadConfigFile(const std::string &configFile)
virtual void display(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, unsigned int thickness=1, bool displayFullModel=false)
void reinitMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &_cMo)
std::vector< bool > scales
Vector of scale level to use for the multi-scale tracking.
virtual void track(const vpImage< unsigned char > &I)
vpColVector error
The error vector.
virtual void setLod(bool useLod, const std::string &name="")
void updateMovingEdge(const vpImage< unsigned char > &I)
virtual void initFaceFromLines(vpMbtPolygon &polygon)
unsigned int nbFeature
The number of moving edges.
virtual void initCircle(const vpPoint &, const vpPoint &, const vpPoint &, double r, int idFace=0, const std::string &name="")
virtual std::vector< std::vector< double > > getFeaturesForDisplayKlt()
double m_lambda
Gain of the virtual visual servoing stage.
Implementation of column vector and the associated operations.
virtual void init(const vpImage< unsigned char > &I)
bool useScanLine
Use Scanline for visibility tests.
Parse an Xml file to extract configuration parameters of a mbtConfig object.
vpMe me
The moving edges parameters.
virtual void reinit(const vpImage< unsigned char > &I)
void cleanPyramid(std::vector< const vpImage< unsigned char > * > &_pyramid)
void setWindowName(const Ogre::String &n)
unsigned int nbFeaturel1
The number of moving edges on line 1.
Implementation of a matrix and operations on matrices.
Implementation of a polygon of the model used by the model-based tracker.
virtual void setCameraParameters(const vpCameraParameters &cam)
void setMeanWeight(double w_mean)
void insert(unsigned int i, const vpColVector &v)
unsigned int getCurrentNumberPoints() const
void reInitModel(const vpImage< unsigned char > &I, const std::string &cad_name, const vpHomogeneousMatrix &cMo, bool verbose=false, const vpHomogeneousMatrix &T=vpHomogeneousMatrix())
double m_initialMu
Initial Mu for Levenberg Marquardt optimization loop.
unsigned int maskBorder
Erosion of the mask.
unsigned int nbvisiblepolygone
Number of polygon (face) currently visible.
vpMbtMeEllipse * meEllipse
The moving edge containers.
virtual ~vpMbEdgeKltTracker()
static void displayText(const vpImage< unsigned char > &I, const vpImagePoint &ip, const std::string &s, const vpColor &color)
void resize(unsigned int nrows, unsigned int ncols, bool flagNullify=true, bool recopy_=true)
virtual void computeVVSPoseEstimation(const bool isoJoIdentity_, unsigned int iter, vpMatrix &L, vpMatrix <L, vpColVector &R, const vpColVector &error, vpColVector &error_prev, vpColVector <R, double &mu, vpColVector &v, const vpColVector *const w=NULL, vpColVector *const m_w_prev=NULL)
virtual void setPose(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cdMo)
bool postTracking(const vpImage< unsigned char > &I, vpColVector &w)
vpMbtPolygon * polygon
Pointer to the polygon that define a face.
vpColVector m_w_mbt
Robust weights for Edge.
bool displayFeatures
If true, the features are displayed.
vpHomogeneousMatrix ctTc0
virtual unsigned int getNbPolygon() const
double m_thresholdMBT
The threshold used in the robust estimation of MBT.
vpMatrix oJo
The Degrees of Freedom to estimate.
virtual void initFaceFromCorners(vpMbtPolygon &polygon)
bool applyLodSettingInConfig
bool isAppearing(unsigned int i)
unsigned int getHeight() const
void computeProjectionError(const vpImage< unsigned char > &_I)
virtual void initFaceFromLines(vpMbtPolygon &polygon)
Definition of the vpSubMatrix vpSubMatrix class provides a mask on a vpMatrix all properties of vpMat...
Performs search in a given direction(normal) for a given distance(pixels) for a given 'site'....
std::list< vpMbtDistanceKltCylinder * > kltCylinders
std::vector< std::list< vpMbtDistanceCylinder * > > cylinders
Vector of the tracked cylinders.
virtual bool isVisible(const vpHomogeneousMatrix &cMo, double alpha, const bool &modulo=false, const vpCameraParameters &cam=vpCameraParameters(), unsigned int width=0, unsigned int height=0)
void setWindowSize(int winSize)
double minLineLengthThresholdGeneral
Minimum line length threshold for LOD mode (general setting)
static bool equal(double x, double y, double s=0.001)
vpMatrix L
The interaction matrix.
Implementation of an homography and operations on homographies.
void setPyramidLevels(int pyrMaxLevel)
double angleAppears
Angle used to detect a face appearance.
double minPolygonAreaThresholdGeneral
Minimum polygon area threshold for LOD mode (general setting)
virtual void setMinPolygonAreaThresh(double minPolygonAreaThresh, const std::string &name="")
virtual void computeVVSInteractionMatrixAndResidu()
void initPyramid(const vpImage< unsigned char > &_I, std::vector< const vpImage< unsigned char > * > &_pyramid)
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
unsigned int initMbtTracking(unsigned int level=0)
std::vector< const vpImage< unsigned char > * > Ipyramid
virtual void initFaceFromLines(vpMbtPolygon &polygon)
static vpHomogeneousMatrix direct(const vpColVector &v)
vpVelocityTwistMatrix buildFrom(const vpTranslationVector &t, const vpRotationMatrix &R)
std::list< vpMbtDistanceCircle * > circles_disp
Vector of the circles used here only to display the full model.
Manage the line of a polygon used in the model-based tracker.
vpColVector m_w_hybrid
Robust weights.
std::vector< std::vector< double > > m_featuresToBeDisplayedKlt
Display features.
unsigned int m_maxIterKlt
The maximum iteration of the virtual visual servoing stage.
void resize(unsigned int i, bool flagNullify=true)
void displayMovingEdges(const vpImage< unsigned char > &I)
virtual void setNearClippingDistance(const double &dist)
void initInteractionMatrixError()
virtual void setCameraParameters(const vpCameraParameters &cam)
bool isoJoIdentity
Boolean to know if oJo is identity (for fast computation)
virtual void setClipping(const unsigned int &flags)
unsigned int m_maxIter
Maximum number of iterations of the virtual visual servoing stage.
vpHomogeneousMatrix c0Mo
Initial pose.
unsigned int nbFeaturel2
The number of moving edges on line 2.
virtual void setMinLineLengthThresh(double minLineLengthThresh, const std::string &name="")
virtual void init(const vpImage< unsigned char > &I)
unsigned int clippingFlag
Flags specifying which clipping to used.
virtual void initCircle(const vpPoint &p1, const vpPoint &p2, const vpPoint &p3, double radius, int idFace=0, const std::string &name="")
void computeInteractionMatrixError(const vpHomogeneousMatrix &cMo)
virtual void setFarClippingDistance(const double &dist)
vpMbHiddenFaces< vpMbtPolygon > * hiddenface
Pointer to the list of faces.
std::vector< std::list< vpMbtDistanceCircle * > > circles
Vector of the tracked circles.
void setState(const vpMeSiteState &flag)
vpMeSiteState getState() const
vpAROgre * getOgreContext()
std::list< vpMbtDistanceKltPoints * > kltPolygons
void postTrackingMbt(vpColVector &w, unsigned int level=0)
static void displayCross(const vpImage< unsigned char > &I, const vpImagePoint &ip, unsigned int size, const vpColor &color, unsigned int thickness=1)
virtual void computeCovarianceMatrixVVS(const bool isoJoIdentity_, const vpColVector &w_true, const vpHomogeneousMatrix &cMoPrev, const vpMatrix &L_true, const vpMatrix &LVJ_true, const vpColVector &error)
vpHomogeneousMatrix inverse() const
void computeInteractionMatrixAndResidu(const vpHomogeneousMatrix &cMc0, vpColVector &_R, vpMatrix &_J)
void computeHomography(const vpHomogeneousMatrix &_cTc0, vpHomography &cHc0)
Class that defines what is a point.
void computeInteractionMatrixError(const vpHomogeneousMatrix &cMo)
void initInteractionMatrixError()
static void displayEllipse(const vpImage< unsigned char > &I, const vpImagePoint ¢er, const double &coef1, const double &coef2, const double &coef3, bool use_centered_moments, const vpColor &color, unsigned int thickness=1)
Class to define colors available for display functionnalities.
bool closeToImageBorder(const vpImage< unsigned char > &I, const unsigned int threshold)
Implementation of an homogeneous matrix and operations on such kind of matrices.
bool postTracking(const vpImage< unsigned char > &I, vpColVector &w_mbt, vpColVector &w_klt, unsigned int lvl=0)
vpColVector error
The error vector.
void computeScanLineRender(const vpCameraParameters &cam, const unsigned int &w, const unsigned int &h)
virtual std::vector< std::vector< double > > getModelForDisplay(unsigned int width, unsigned int height, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, bool displayFullModel=false)
virtual void initCylinder(const vpPoint &, const vpPoint &, double r, int idFace, const std::string &name="")
error that can be emited by ViSP classes.
void computeFov(const unsigned int &w, const unsigned int &h)
void initInteractionMatrixError()
bool Reinit
Indicates if the circle has to be reinitialized.
virtual void loadModel(const std::string &modelFile, bool verbose=false, const vpHomogeneousMatrix &T=vpHomogeneousMatrix())
cv::Mat cur
Temporary OpenCV image for fast conversion.
virtual void initFaceFromCorners(vpMbtPolygon &polygon)
double angleDisappears
Angle used to detect a face disappearance.
vpImage< unsigned char > m_I
Grayscale image buffer, used when passing color images.
std::vector< std::list< vpMbtDistanceLine * > > lines
bool useLodGeneral
True if LOD mode is enabled.
void setBlockSize(int blockSize)
unsigned int getWidth() const
void setMaxFeatures(int maxCount)
unsigned int getRows() const