 |
Visual Servoing Platform
version 3.2.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>
47 #if defined(VISP_HAVE_MODULE_KLT) && (defined(VISP_HAVE_OPENCV) && (VISP_HAVE_OPENCV_VERSION >= 0x020100))
50 : thresholdKLT(2.), thresholdMBT(2.), m_maxIterKlt(30), w_mbt(), w_klt(), m_error_hybrid(), m_w_hybrid()
85 unsigned int i = (
unsigned int)
scales.size();
121 unsigned int i = (
unsigned int)
scales.size();
150 unsigned int nbrow = 0;
151 for (std::list<vpMbtDistanceLine *>::iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
160 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
170 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
251 #ifdef VISP_HAVE_XML2
270 std::cout <<
" *********** Parsing XML for Mb Edge Tracker ************ " << std::endl;
271 xmlp.
parse(configFile.c_str());
273 vpERROR_TRACE(
"Can't open XML file \"%s\"\n ", configFile.c_str());
307 xmlp.
getMe(meParser);
323 vpTRACE(
"You need the libXML2 to read the config file %s", configFile.c_str());
331 const unsigned int lvl)
337 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
344 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
352 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
401 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
402 if ((*it)->isTracked()) {
404 unsigned int indexLine = 0;
407 for (
size_t a = 0; a < l->
meline.size(); a++) {
408 std::list<vpMeSite>::iterator itListLine;
410 itListLine = l->
meline[a]->getMeList().begin();
412 for (
unsigned int i = 0; i < l->
nbFeature[a]; i++) {
413 wmean += w[n + indexLine];
415 if (w[n + indexLine] < 0.5) {
441 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
443 if ((*it)->isTracked()) {
446 std::list<vpMeSite>::iterator itListCyl1;
447 std::list<vpMeSite>::iterator itListCyl2;
449 itListCyl1 = cy->
meline1->getMeList().begin();
450 itListCyl2 = cy->
meline2->getMeList().begin();
454 for (
unsigned int i = 0; i < cy->
nbFeaturel1; i++) {
457 if (w[n + i] < 0.5) {
478 for (
unsigned int i = cy->
nbFeaturel1; i < cy->nbFeature; i++) {
481 if (w[n + i] < 0.5) {
507 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
508 if ((*it)->isTracked()) {
511 std::list<vpMeSite>::iterator itListCir;
514 itListCir = ci->
meEllipse->getMeList().begin();
518 for (
unsigned int i = 0; i < ci->
nbFeature; i++) {
521 if (w[n + i] < 0.5) {
555 const unsigned int lvl)
560 if (nbrow < 4 && nbInfos < 4) {
562 }
else if (nbrow < 4)
565 unsigned int totalNbRows = nbrow + 2 * nbInfos;
567 double residu_1 = -1;
568 unsigned int iter = 0;
578 L_mbt.
resize(nbrow, 6,
false,
false);
579 R_mbt.
resize(nbrow,
false);
583 L_klt.
resize(2 * nbInfos, 6,
false,
false);
584 R_klt.
resize(2 * nbInfos,
false);
588 vpRobust robust_mbt(0), robust_klt(0);
608 double residuMBT = 0;
609 double residuKLT = 0;
629 robust_klt.
resize(2 * nbInfos);
634 while (((
int)((residu - residu_1) * 1e8) != 0) && (iter <
m_maxIter)) {
639 unsigned int shift = 0;
680 unsigned int cpt = 0;
681 while (cpt < (nbrow + 2 * nbInfos)) {
682 if (cpt < (
unsigned)nbrow) {
690 bool reStartFromLastIncrement =
false;
693 if (reStartFromLastIncrement) {
697 if (!reStartFromLastIncrement) {
701 for (
unsigned int i = 0; i < R_mbt.
getRows(); i++)
702 residuMBT += fabs(R_mbt[i]);
708 L.insert(L_mbt, 0, 0);
713 for (
unsigned int i = 0; i < R_klt.
getRows(); i++)
714 residuKLT += fabs(R_klt[i]);
720 L.insert(L_klt, nbrow, 0);
723 unsigned int cpt = 0;
724 while (cpt < (nbrow + 2 * nbInfos)) {
725 if (cpt < (
unsigned)nbrow) {
738 LVJ_true = (L * cVo *
oJo);
747 for (
unsigned int i = 0; i < weighted_error.getRows(); i++) {
753 for (
unsigned int j = 0; j < 6; j += 1) {
759 residu = sqrt(num / den);
761 computeVVSPoseEstimation(
isoJoIdentity, iter, L, LTL, weighted_error,
m_error_hybrid, m_error_prev, LTR, mu, v,
784 "computeVVSInteractionMatrixAndR"
785 "esidu() should not be called!");
814 unsigned int nbrow = 0;
840 const unsigned int lvl)
858 factor.
resize(nbrow,
false);
862 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
863 if ((*it)->isTracked()) {
870 int index = *itindex;
881 unsigned int indexFeature = 0;
882 for (
size_t a = 0; a < l->
meline.size(); a++) {
883 std::list<vpMeSite>::const_iterator itListLine;
884 if (l->
meline[a] != NULL) {
885 itListLine = l->
meline[a]->getMeList().begin();
887 for (
unsigned int i = 0; i < l->
nbFeature[a]; i++) {
901 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
903 if ((*it)->isTracked()) {
908 std::list<vpMeSite>::const_iterator itCyl1;
909 std::list<vpMeSite>::const_iterator itCyl2;
911 itCyl1 = cy->
meline1->getMeList().begin();
912 itCyl2 = cy->
meline2->getMeList().begin();
915 for (
unsigned int i = 0; i < cy->
nbFeature; i++) {
918 if (i < cy->nbFeaturel1) {
933 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
934 if ((*it)->isTracked()) {
939 std::list<vpMeSite>::const_iterator itCir;
941 itCir = ci->
meEllipse->getMeList().begin();
944 for (
unsigned int i = 0; i < ci->
nbFeature; i++) {
967 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[lvl].begin(); it !=
lines[lvl].end(); ++it) {
968 if ((*it)->isTracked()) {
972 for (
unsigned int j = 0; j < 6; j++) {
973 L[n + i][j] = l->
L[i][j];
974 error[n + i] = l->
error[i];
981 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[lvl].begin(); it !=
cylinders[lvl].end();
983 if ((*it)->isTracked()) {
986 for (
unsigned int i = 0; i < cy->
nbFeature; i++) {
987 for (
unsigned int j = 0; j < 6; j++) {
988 L[n + i][j] = cy->
L[i][j];
989 error[n + i] = cy->
error[i];
995 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[lvl].begin(); it !=
circles[lvl].end(); ++it) {
996 if ((*it)->isTracked()) {
999 for (
unsigned int i = 0; i < ci->
nbFeature; i++) {
1000 for (
unsigned int j = 0; j < 6; j++) {
1001 L[n + i][j] = ci->
L[i][j];
1002 error[n + i] = ci->
error[i];
1058 const int idFace,
const std::string &name)
1074 const std::string &name)
1093 const bool displayFullModel)
1095 for (
unsigned int i = 0; i <
scales.size(); i += 1) {
1099 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1102 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[
scaleLevel].begin();
1104 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1107 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[
scaleLevel].begin();
1109 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1116 for (std::list<vpMbtDistanceKltPoints *>::const_iterator it =
kltPolygons.begin(); it !=
kltPolygons.end(); ++it) {
1130 #ifdef VISP_HAVE_OGRE
1149 const bool displayFullModel)
1151 for (
unsigned int i = 0; i <
scales.size(); i += 1) {
1155 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1158 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[
scaleLevel].begin();
1160 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1163 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[
scaleLevel].begin();
1165 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1172 for (std::list<vpMbtDistanceKltPoints *>::const_iterator it =
kltPolygons.begin(); it !=
kltPolygons.end(); ++it) {
1186 #ifdef VISP_HAVE_OGRE
1209 #if (VISP_HAVE_OPENCV_VERSION < 0x020408)
1211 cvReleaseImage(&
cur);
1217 for (std::list<vpMbtDistanceKltPoints *>::const_iterator it =
kltPolygons.begin(); it !=
kltPolygons.end(); ++it) {
1219 if (kltpoly != NULL) {
1229 if (kltPolyCylinder != NULL) {
1230 delete kltPolyCylinder;
1232 kltPolyCylinder = NULL;
1254 for (
unsigned int i = 0; i <
scales.size(); i += 1) {
1256 for (std::list<vpMbtDistanceLine *>::const_iterator it =
lines[i].begin(); it !=
lines[i].end(); ++it) {
1263 for (std::list<vpMbtDistanceCylinder *>::const_iterator it =
cylinders[i].begin(); it !=
cylinders[i].end();
1271 for (std::list<vpMbtDistanceCircle *>::const_iterator it =
circles[i].begin(); it !=
circles[i].end(); ++it) {
1300 #elif !defined(VISP_BUILD_SHARED_LIBS)
1303 void dummy_vpMbEdgeKltTracker(){};
1304 #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)
void upScale(const unsigned int _scale)
virtual void loadConfigFile(const std::string &configFile)
std::vector< vpMbtMeLine * > meline
The moving edge container.
virtual void initCircle(const vpPoint &p1, const vpPoint &p2, const vpPoint &p3, const double radius, const int idFace=0, const std::string &name="")
virtual void setCameraParameters(const vpCameraParameters &camera)
void resize(const unsigned int i, const bool flagNullify=true)
virtual void setLod(const bool useLod, const std::string &name="")
void parse(const std::string &filename)
void downScale(const unsigned int _scale)
virtual void setPose(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cdMo)
bool m_computeInteraction
void reInitModel(const vpImage< unsigned char > &I, const std::string &cad_name, const vpHomogeneousMatrix &cMo_, const bool verbose=false, const vpHomogeneousMatrix &T=vpHomogeneousMatrix())
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.
void setMinDistance(double minDistance)
Manage a cylinder used in the model-based tracker.
bool isAppearing(const unsigned int i)
virtual void computeVVSCheckLevenbergMarquardt(const 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)
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)
unsigned int getWindowSize() const
void setMaxFeatures(const int maxCount)
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 loadModel(const std::string &modelFile, const bool verbose=false, const vpHomogeneousMatrix &T=vpHomogeneousMatrix())
static double rad(double deg)
Parse an Xml file to extract configuration parameters of a mbtConfig object.
vpHomogeneousMatrix cMo
The current pose.
double getMinPolygonAreaThreshold() const
Implementation of a polygon of the model containing points of interest. It is used by the model-based...
unsigned int getMaxFeatures() const
Generic class defining intrinsic camera parameters.
void setMovingEdge(const vpMe &me)
void displayMovingEdges(const vpImage< unsigned char > &I)
void displayPrimitive(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.
double getFarClippingDistance() const
static double deg(double rad)
void initMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &_cMo)
unsigned int getBlockSize() const
void getCameraParameters(vpCameraParameters &_cam) const
void setQuality(double qualityLevel)
void postTrackingMbt(vpColVector &w, const unsigned int level=0)
vpColVector error
The error vector.
void setHarrisFreeParameter(double harris_k)
Contains an M-Estimator and various influence function.
bool postTracking(const vpImage< unsigned char > &I, vpColVector &w_mbt, vpColVector &w_klt, const unsigned int lvl=0)
virtual void initCylinder(const vpPoint &, const vpPoint &, const double r, const int idFace, const std::string &name="")
bool computeCovariance
Flag used to specify if the covariance matrix has to be computed or not.
bool hasFarClippingDistance() const
vpMbHiddenFaces< vpMbtPolygon > faces
Set of faces describing the object.
bool Reinit
Indicates if the line has to be reinitialized.
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)
unsigned int trackFirstLoop(const vpImage< unsigned char > &I, vpColVector &factor, const unsigned int lvl=0)
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 setAngleAppear(const double &aappear)
void displayMovingEdges(const vpImage< unsigned char > &I)
bool getFovClipping() const
unsigned int getCurrentNumberPoints() const
void setCameraParameters(const vpCameraParameters &cam)
virtual void loadConfigFile(const std::string &configFile)
void reinitMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &_cMo)
void displayPrimitive(const vpImage< unsigned char > &_I)
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.
void updateMovingEdge(const vpImage< unsigned char > &I)
virtual void initFaceFromLines(vpMbtPolygon &polygon)
virtual 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)
unsigned int nbFeature
The number of moving edges.
double thresholdMBT
The threshold used in the robust estimation of MBT.
double thresholdKLT
The threshold used in the robust estimation of KLT.
vpCameraParameters cam
The camera parameters.
double getAngleAppear() const
double m_lambda
Gain of the virtual visual servoing stage.
unsigned int getMaskBorder() const
Implementation of column vector and the associated operations.
virtual void init(const vpImage< unsigned char > &I)
bool useScanLine
Use Scanline for visibility tests.
void setWindowSize(const unsigned int &w)
vpMe me
The moving edges parameters.
virtual void reinit(const vpImage< unsigned char > &I)
virtual void initCylinder(const vpPoint &p1, const vpPoint &p2, const double radius, const int idFace=0, const std::string &name="")
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.
void setCameraParameters(const vpCameraParameters &_cam)
Implementation of a matrix and operations on matrices.
void setPyramidLevels(const unsigned int &pL)
void setMovingEdge(const vpMe &_ecm)
virtual void setMinPolygonAreaThresh(const double minPolygonAreaThresh, const std::string &name="")
Implementation of a polygon of the model used by the model-based tracker.
virtual void setMinLineLengthThresh(const double minLineLengthThresh, const std::string &name="")
virtual void setCameraParameters(const vpCameraParameters &cam)
virtual void initCircle(const vpPoint &, const vpPoint &, const vpPoint &, const double r, const int idFace=0, const std::string &name="")
void insert(unsigned int i, const vpColVector &v)
unsigned int getCurrentNumberPoints() const
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()
void setHarrisParam(const double &hp)
void setMinDistance(const double &mD)
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.
bool displayFeatures
If true, the features are displayed.
vpHomogeneousMatrix ctTc0
virtual unsigned int getNbPolygon() const
void setMeanWeight1(const double wmean)
vpMatrix oJo
The Degrees of Freedom to estimate.
virtual void initFaceFromCorners(vpMbtPolygon &polygon)
bool applyLodSettingInConfig
unsigned int getHeight() const
bool hasNearClippingDistance() 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'....
void setBlockSize(const int blockSize)
std::list< vpMbtDistanceKltCylinder * > kltCylinders
std::vector< std::list< vpMbtDistanceCylinder * > > cylinders
Vector of the tracked cylinders.
void setMaxFeatures(const unsigned int &mF)
double minLineLengthThresholdGeneral
Minimum line length threshold for LOD mode (general setting)
vpMatrix L
The interaction matrix.
void setWindowSize(const int winSize)
Implementation of an homography and operations on homographies.
double angleAppears
Angle used to detect a face appearance.
double minPolygonAreaThresholdGeneral
Minimum polygon area threshold for LOD mode (general setting)
virtual void computeVVSInteractionMatrixAndResidu()
void initPyramid(const vpImage< unsigned char > &_I, std::vector< const vpImage< unsigned char > * > &_pyramid)
double getHarrisParam() const
std::vector< const vpImage< unsigned char > * > Ipyramid
virtual void computeVVSPoseEstimation(const bool isoJoIdentity_, const 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 bool isVisible(const vpHomogeneousMatrix &cMo, const double alpha, const bool &modulo=false, const vpCameraParameters &cam=vpCameraParameters(), const vpImage< unsigned char > &I=vpImage< unsigned char >())
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.
unsigned int m_maxIterKlt
The maximum iteration of the virtual visual servoing stage.
double getAngleDisappear() const
void displayMovingEdges(const vpImage< unsigned char > &I)
virtual void setNearClippingDistance(const double &dist)
void initInteractionMatrixError()
bool isoJoIdentity
Boolean to know if oJo is identity (for fast computation)
virtual void setClipping(const unsigned int &flags)
double getMinDistance() const
void setPyramidLevels(const int pyrMaxLevel)
unsigned int m_maxIter
Maximum number of iterations of the virtual visual servoing stage.
vpHomogeneousMatrix c0Mo
Initial pose.
void setMeanWeight2(const double wmean)
unsigned int nbFeaturel2
The number of moving edges on line 2.
void setBlockSize(const unsigned int &bs)
virtual void init(const vpImage< unsigned char > &I)
unsigned int clippingFlag
Flags specifying which clipping to used.
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
virtual void computeCovarianceMatrixVVS(const bool isoJoIdentity_, const vpColVector &w_true, const vpHomogeneousMatrix &cMoPrev, const vpMatrix &L_true, const vpMatrix &LVJ_true, const vpColVector &error)
vpColVector w_mbt
Robust weights for Edge.
void trackSecondLoop(const vpImage< unsigned char > &I, vpMatrix &L, vpColVector &_error, vpHomogeneousMatrix &cMo, const unsigned int lvl=0)
vpHomogeneousMatrix inverse() const
void computeInteractionMatrixAndResidu(const vpHomogeneousMatrix &cMc0, vpColVector &_R, vpMatrix &_J)
void computeHomography(const vpHomogeneousMatrix &_cTc0, vpHomography &cHc0)
double getNearClippingDistance() const
Class that defines what is a point.
void resize(const unsigned int nrows, const unsigned int ncols, const bool flagNullify=true, const bool recopy_=true)
void computeInteractionMatrixError(const vpHomogeneousMatrix &cMo)
void initInteractionMatrixError()
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.
void setMaskBorder(const unsigned int &mb)
vpColVector error
The error vector.
unsigned int getPyramidLevels() const
double getQuality() const
void computeScanLineRender(const vpCameraParameters &cam, const unsigned int &w, const unsigned int &h)
void getMe(vpMe &_ecm) const
error that can be emited by ViSP classes.
void computeFov(const unsigned int &w, const unsigned int &h)
void setMeanWeight(const double _wmean)
void initInteractionMatrixError()
vpColVector w_klt
Robust weights for KLT.
bool Reinit
Indicates if the circle has to be reinitialized.
cv::Mat cur
Temporary OpenCV image for fast conversion.
virtual void initFaceFromCorners(vpMbtPolygon &polygon)
double angleDisappears
Angle used to detect a face disappearance.
void setQuality(const double &q)
std::vector< std::list< vpMbtDistanceLine * > > lines
double getMinLineLengthThreshold() const
bool useLodGeneral
True if LOD mode is enabled.
unsigned int initMbtTracking(const unsigned int level=0)
unsigned int getWidth() const
void setMeanWeight(const double w_mean)
void setAngleDisappear(const double &adisappear)
unsigned int getRows() const
virtual void initCylinder(const vpPoint &, const vpPoint &, const double, const int, const std::string &name="")