41 #include <visp3/core/vpDebug.h>
42 #include <visp3/mbt/vpMbEdgeKltTracker.h>
43 #include <visp3/core/vpTrackingException.h>
44 #include <visp3/core/vpVelocityTwistMatrix.h>
46 #if defined(VISP_HAVE_MODULE_KLT) && (defined(VISP_HAVE_OPENCV) && (VISP_HAVE_OPENCV_VERSION >= 0x020100))
49 : compute_interaction(true), lambda(0.8), thresholdKLT(2.), thresholdMBT(2.), maxIter(200)
86 unsigned int i = (
unsigned int)
scales.size();
123 unsigned int i = (
unsigned int)
scales.size();
158 unsigned int nbrow = 0;
159 for(std::list<vpMbtDistanceLine*>::iterator it=
lines[lvl].begin(); it!=
lines[lvl].end(); ++it){
168 for(std::list<vpMbtDistanceCylinder*>::const_iterator it=
cylinders[lvl].begin(); it!=
cylinders[lvl].end(); ++it){
177 for(std::list<vpMbtDistanceCircle*>::const_iterator it=
circles[lvl].begin(); it!=
circles[lvl].end(); ++it){
272 #ifdef VISP_HAVE_XML2
291 std::cout <<
" *********** Parsing XML for Mb Edge Tracker ************ " << std::endl;
292 xmlp.
parse(configFile);
329 xmlp.
getMe(meParser);
345 vpTRACE(
"You need the libXML2 to read the config file %s", configFile);
354 const unsigned int lvl)
363 for(std::list<vpMbtDistanceLine*>::const_iterator it=
lines[lvl].begin(); it!=
lines[lvl].end(); ++it){
371 for(std::list<vpMbtDistanceCylinder*>::const_iterator it=
cylinders[lvl].begin(); it!=
cylinders[lvl].end(); ++it){
379 for(std::list<vpMbtDistanceCircle*>::const_iterator it=
circles[lvl].begin(); it!=
circles[lvl].end(); ++it){
429 for(std::list<vpMbtDistanceLine*>::const_iterator it=
lines[lvl].begin(); it!=
lines[lvl].end(); ++it){
430 if((*it)->isTracked()){
432 unsigned int indexLine = 0;
435 for(
unsigned int a = 0 ; a < l->
meline.size() ; a++)
437 std::list<vpMeSite>::iterator itListLine;
438 if (l->
nbFeature[a] > 0) itListLine = l->
meline[a]->getMeList().begin();
440 for (
unsigned int i=0 ; i < l->
nbFeature[a] ; i++){
441 wmean += w[n+indexLine] ;
443 if (w[n+indexLine] < 0.5){
469 for(std::list<vpMbtDistanceCylinder*>::const_iterator it=
cylinders[lvl].begin(); it!=
cylinders[lvl].end(); ++it){
470 if((*it)->isTracked()){
473 std::list<vpMeSite>::iterator itListCyl1;
474 std::list<vpMeSite>::iterator itListCyl2;
476 itListCyl1 = cy->
meline1->getMeList().begin();
477 itListCyl2 = cy->
meline2->getMeList().begin();
505 for(
unsigned int i=cy->
nbFeaturel1 ; i < cy->nbFeature ; i++){
534 for(std::list<vpMbtDistanceCircle*>::const_iterator it=
circles[lvl].begin(); it!=
circles[lvl].end(); ++it){
535 if((*it)->isTracked()){
538 std::list<vpMeSite>::iterator itListCir;
541 itListCir = ci->
meEllipse->getMeList().begin();
545 for(
unsigned int i=0 ; i < ci->
nbFeature ; i++){
588 if(nbrow < 4 && nbInfos < 4){
596 double residu_1 = -1;
597 unsigned int iter = 0;
614 L_klt.
resize(2*nbInfos,6);
620 vpRobust robust_mbt(0), robust_klt(0);
626 double factorMBT = 1.0;
627 double factorKLT = 1.0;
640 double residuMBT = 0;
641 double residuKLT = 0;
649 while( ((
int)((residu - residu_1)*1e8) !=0 ) && (iter<
maxIter) ){
657 unsigned int shift = 0;
673 kltPolyCylinder = *it;
690 bool reStartFromLastIncrement =
false;
702 reStartFromLastIncrement =
true;
706 if(!reStartFromLastIncrement){
720 robust_klt.
resize(2*nbInfos);
723 w_true.
resize(nbrow + 2*nbInfos);
729 for(
unsigned int i = 0; i < R_mbt.
getRows(); i++)
730 residuMBT += fabs(R_mbt[i]);
733 robust_mbt.setIteration(iter);
742 for(
unsigned int i = 0; i < R_klt.
getRows(); i++)
743 residuKLT += fabs(R_klt[i]);
754 unsigned int cpt = 0;
755 while(cpt< (nbrow+2*nbInfos)){
756 if(cpt<(
unsigned)nbrow){
757 m_w[cpt] = ((w_mbt[cpt] * factor[cpt]) * factorMBT) ;
760 m_w[cpt] = (w_klt[cpt-nbrow] * factorKLT);
770 LVJ_true = ((*L)*cVo*
oJo);
778 for (
unsigned int i = 0; i < static_cast<unsigned int>(R->
getRows()); i++){
785 for (
unsigned int j = 0; j < 6; j += 1){
786 (*L)[i][j] *=
m_w[i];
791 residu = sqrt(num/den);
830 vpMatrix LTLmuI = LVJTLVJ + (LMA*mu);
887 unsigned int nbInfos = 0;
888 unsigned int nbFaceUsed = 0;
952 for(std::list<vpMbtDistanceLine*>::const_iterator it=
lines[lvl].begin(); it!=
lines[lvl].end(); ++it){
953 if((*it)->isTracked()){
959 int index = *itindex;
970 unsigned int indexFeature = 0;
971 for(
unsigned int a = 0 ; a < l->
meline.size(); a++){
972 std::list<vpMeSite>::const_iterator itListLine;
975 itListLine = l->
meline[a]->getMeList().begin();
977 for (
unsigned int i=0 ; i < l->
nbFeature[a] ; i++){
990 for(std::list<vpMbtDistanceCylinder*>::const_iterator it=
cylinders[lvl].begin(); it!=
cylinders[lvl].end(); ++it){
991 if((*it)->isTracked()){
996 std::list<vpMeSite>::const_iterator itCyl1;
997 std::list<vpMeSite>::const_iterator itCyl2;
999 itCyl1 = cy->
meline1->getMeList().begin();
1000 itCyl2 = cy->
meline2->getMeList().begin();
1003 for(
unsigned int i=0 ; i < cy->
nbFeature ; i++){
1006 if(i<cy->nbFeaturel1) {
1021 for(std::list<vpMbtDistanceCircle*>::const_iterator it=
circles[lvl].begin(); it!=
circles[lvl].end(); ++it){
1022 if((*it)->isTracked()){
1027 std::list<vpMeSite>::const_iterator itCir;
1029 itCir = ci->
meEllipse->getMeList().begin();
1032 for(
unsigned int i=0 ; i < ci->
nbFeature ; i++){
1054 unsigned int n = 0 ;
1055 for(std::list<vpMbtDistanceLine*>::const_iterator it=
lines[lvl].begin(); it!=
lines[lvl].end(); ++it){
1056 if((*it)->isTracked()){
1060 for (
unsigned int j=0; j < 6 ; j++){
1061 L[n+i][j] = l->
L[i][j];
1062 error[n+i] = l->
error[i];
1069 for(std::list<vpMbtDistanceCylinder*>::const_iterator it=
cylinders[lvl].begin(); it!=
cylinders[lvl].end(); ++it){
1070 if((*it)->isTracked()){
1073 for(
unsigned int i=0 ; i < cy->
nbFeature ; i++){
1074 for(
unsigned int j=0; j < 6 ; j++){
1075 L[n+i][j] = cy->
L[i][j];
1076 error[n+i] = cy->
error[i];
1082 for(std::list<vpMbtDistanceCircle*>::const_iterator it=
circles[lvl].begin(); it!=
circles[lvl].end(); ++it){
1083 if((*it)->isTracked()){
1086 for(
unsigned int i=0 ; i < ci->
nbFeature ; i++){
1087 for(
unsigned int j=0; j < 6 ; j++){
1088 L[n+i][j] = ci->
L[i][j];
1089 error[n+i] = ci->
error[i];
1148 const int idFace,
const std::string &name)
1165 const std::string &name)
1183 const vpColor& col,
const unsigned int thickness,
const bool displayFullModel)
1185 for (
unsigned int i = 0; i <
scales.size(); i += 1){
1188 (*it)->display(I,cMo_, camera, col, thickness, displayFullModel);
1192 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1196 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1204 for(std::list<vpMbtDistanceKltPoints*>::const_iterator it=
kltPolygons.begin(); it!=
kltPolygons.end(); ++it){
1213 kltPolyCylinder = *it;
1218 #ifdef VISP_HAVE_OGRE
1236 const vpColor& col ,
const unsigned int thickness,
const bool displayFullModel)
1238 for (
unsigned int i = 0; i <
scales.size(); i += 1){
1241 (*it)->display(I,cMo_, camera, col, thickness, displayFullModel);
1245 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1249 (*it)->display(I, cMo_, camera, col, thickness, displayFullModel);
1257 for(std::list<vpMbtDistanceKltPoints*>::const_iterator it=
kltPolygons.begin(); it!=
kltPolygons.end(); ++it){
1266 kltPolyCylinder = *it;
1271 #ifdef VISP_HAVE_OGRE
1307 #if (VISP_HAVE_OPENCV_VERSION < 0x020408)
1309 cvReleaseImage(&
cur);
1316 for(std::list<vpMbtDistanceKltPoints*>::const_iterator it=
kltPolygons.begin(); it!=
kltPolygons.end(); ++it){
1327 kltPolyCylinder = *it;
1328 if (kltPolyCylinder!=NULL){
1329 delete kltPolyCylinder ;
1331 kltPolyCylinder = NULL ;
1353 for (
unsigned int i = 0; i <
scales.size(); i += 1){
1355 for(std::list<vpMbtDistanceLine*>::const_iterator it=
lines[i].begin(); it!=
lines[i].end(); ++it){
1357 if (l!=NULL)
delete l ;
1361 for(std::list<vpMbtDistanceCylinder*>::const_iterator it=
cylinders[i].begin(); it!=
cylinders[i].end(); ++it){
1363 if (cy!=NULL)
delete cy;
1367 for(std::list<vpMbtDistanceCircle*>::const_iterator it=
circles[i].begin(); it!=
circles[i].end(); ++it){
1369 if (ci!=NULL)
delete ci;
1395 #elif !defined(VISP_BUILD_SHARED_LIBS)
1397 void dummy_vpMbEdgeKltTracker() {};
1398 #endif //VISP_HAVE_OPENCV
void setWindowName(const Ogre::String &n)
void trackSecondLoop(const vpImage< unsigned char > &I, vpMatrix &L, vpColVector &_error, vpHomogeneousMatrix &cMo, const unsigned int lvl=0)
virtual void initCircle(const vpPoint &, const vpPoint &, const vpPoint &, const double r, const int idFace=0, const std::string &name="")
std::list< vpMbtDistanceKltPoints * > kltPolygons
bool computeProjError
Flag used to specify if the gradient error criteria has to be computed or not.
double lambda
The gain of the virtual visual servoing stage.
unsigned int ncylinder
Index of the cylinder to add, and total number of cylinders extracted so far.
unsigned int getMaskBorder() const
void setQuality(const double &q)
void postTrackingMbt(vpColVector &w, const unsigned int level=0)
Implementation of a matrix and operations on matrices.
void displayMovingEdges(const vpImage< unsigned char > &I)
vpMatrix covarianceMatrix
Covariance matrix.
void displayPrimitive(const vpImage< unsigned char > &_I)
void setMovingEdge(const vpMe &me)
double getHarrisParam() const
static vpMatrix computeCovarianceMatrixVVS(const vpHomogeneousMatrix &cMo, const vpColVector &deltaS, const vpMatrix &Ls, const vpMatrix &W)
Parse an Xml file to extract configuration parameters of a mbtConfig object.Data parser for the model...
unsigned int nbFeature
The number of moving edges.
unsigned int nbFeatureTotal
The number of moving edges.
void upScale(const unsigned int _scale)
void parse(const char *filename)
virtual void initFaceFromCorners(vpMbtPolygon &polygon)
void MEstimator(const vpRobustEstimatorType method, const vpColVector &residues, vpColVector &weights)
Compute the weights according a residue vector and a PsiFunction.
void setHarrisFreeParameter(double harris_k)
bool isAppearing(const unsigned int i)
unsigned int getWidth() const
void stack(const double &d)
void resize(const unsigned int nrows, const unsigned int ncols, const bool flagNullify=true)
void getCameraParameters(vpCameraParameters &_cam) const
vpMbHiddenFaces< vpMbtPolygon > faces
Set of faces describing the object.
bool Reinit
Indicates if the line has to be reinitialized.
void setMeanWeight2(const double wmean)
Implementation of an homogeneous matrix and operations on such kind of matrices.
unsigned int scaleLevel
Current scale level used. This attribute must not be modified outside of the downScale() and upScale(...
std::list< int > Lindex_polygon
Index of the faces which contain the line.
vpMatrix L
The interaction matrix.
Performs search in a given direction(normal) for a given distance(pixels) for a given 'site'...
virtual void initFaceFromCorners(vpMbtPolygon &polygon)
std::vector< std::list< vpMbtDistanceCircle * > > circles
Vector of the tracked circles.
Class to define colors available for display functionnalities.
void setMaxFeatures(const int maxCount)
virtual void initCylinder(const vpPoint &, const vpPoint &, const double, const int, const std::string &name="")
vpHomogeneousMatrix cMo
The current pose.
bool postTracking(const vpImage< unsigned char > &I, vpColVector &w)
unsigned int getBlockSize() const
void stack(const vpMatrix &A)
bool hasEnoughPoints() const
void displayMovingEdges(const vpImage< unsigned char > &I)
double getNearClippingDistance() const
unsigned int ncircle
Index of the circle to add, and total number of circles extracted so far.
double thresholdKLT
The threshold used in the robust estimation of KLT.
vpColVector error
The error vector.
void getMe(vpMe &_ecm) const
void setMinDistance(double minDistance)
error that can be emited by ViSP classes.
vpMbtMeEllipse * meEllipse
The moving edge containers.
Manage a cylinder used in the model-based tracker.
vpMbScanLine & getMbScanLineRenderer()
unsigned int getMaxFeatures() const
Manage the line of a polygon used in the model-based tracker.
unsigned int nbFeature
The number of moving edges.
virtual void setClipping(const unsigned int &flags)
std::vector< const vpImage< unsigned char > * > Ipyramid
Pyramid of image associated to the current image. This pyramid is computed in the init() and in the t...
bool useOgre
Use Ogre3d for visibility tests.
unsigned int getCols() const
Return the number of columns of the 2D array.
virtual void setCameraParameters(const vpCameraParameters &camera)
void reInitModel(const vpImage< unsigned char > &I, const std::string &cad_name, const vpHomogeneousMatrix &cMo_, const bool verbose=false)
Definition of the vpSubMatrix vpSubMatrix class provides a mask on a vpMatrix all properties of vpMat...
bool computeCovariance
Flag used to specify if the covariance matrix has to be computed or not.
bool firstInitialisation
Flag to specify whether the init method is called the first or not (specific calls to realize in this...
vpMe me
The moving edges parameters.
void updateMovingEdge(const vpImage< unsigned char > &I)
std::vector< std::list< vpMbtDistanceLine * > > lines
Vector of list of all the lines tracked (each line is linked to a list of moving edges). Each element of the vector is for a scale (element 0 = level 0 = no subsampling).
void initInteractionMatrixError()
virtual void reinit(const vpImage< unsigned char > &I)
virtual void setFarClippingDistance(const double &dist)
virtual ~vpMbEdgeKltTracker()
void downScale(const unsigned int _scale)
Implementation of a polygon of the model containing points of interest. It is used by the model-based...
bool hasNearClippingDistance() const
Class that defines what is a point.
vpMatrix L
The interaction matrix.
vpMeSiteState getState() const
vpCameraParameters cam
The camera parameters.
void computeClippedPolygons(const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam)
void setQuality(double qualityLevel)
virtual void init(const vpImage< unsigned char > &I)
vpHomogeneousMatrix ctTc0
The estimated displacement of the pose between the current instant and the initial position...
double getFarClippingDistance() const
unsigned int nbFeaturel1
The number of moving edges on line 1.
void computeJTR(const vpMatrix &J, const vpColVector &R, vpColVector &JTR) const
bool hasFarClippingDistance() const
Implementation of an homography and operations on homographies.
vpAROgre * getOgreContext()
std::vector< vpMbtMeLine * > meline
The moving edge container.
void setPyramidLevels(const unsigned int &pL)
virtual void setMinPolygonAreaThresh(const double minPolygonAreaThresh, const std::string &name="")
Manage a circle used in the model-based tracker.
vpMatrix oJo
The Degrees of Freedom to estimate.
std::vector< bool > scales
Vector of scale level to use for the multi-scale tracking.
bool Reinit
Indicates if the circle has to be reinitialized.
unsigned int getWindowSize() const
Error that can be emited by the vpTracker class and its derivates.
double getAngleDisappear() const
Implementation of a polygon of the model used by the model-based tracker.
void initMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &_cMo)
void computeInteractionMatrixAndResidu(const vpHomogeneousMatrix &cMc0, vpColVector &_R, vpMatrix &_J)
void displayPrimitive(const vpImage< unsigned char > &_I)
void setWindowSize(const unsigned int &w)
void diag(const double &val=1.0)
bool useScanLine
Use Scanline for visibility tests.
vpVelocityTwistMatrix buildFrom(const vpTranslationVector &t, const vpRotationMatrix &R)
static double sqr(double x)
double minLineLengthThresholdGeneral
Minimum line length threshold for LOD mode (general setting)
void setAngleDisappear(const double &adisappear)
double getMinPolygonAreaThreshold() const
vpColVector error
The error vector.
virtual void initFaceFromCorners(vpMbtPolygon &polygon)
virtual void setPose(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cdMo)
vpColVector m_error
Error s-s*.
virtual void track(const vpImage< unsigned char > &I)
unsigned int maskBorder
Erosion of the mask.
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)
Generic class defining intrinsic camera parameters.
void computeInteractionMatrixError(const vpHomogeneousMatrix &cMo)
Implementation of a polygon of the model containing points of interest. It is used by the model-based...
void initPyramid(const vpImage< unsigned char > &_I, std::vector< const vpImage< unsigned char > * > &_pyramid)
void cleanPyramid(std::vector< const vpImage< unsigned char > * > &_pyramid)
vpMbtMeLine * meline1
The moving edge containers (first line of the cylinder)
bool compute_interaction
If true, compute the interaction matrix at each iteration of the minimization. Otherwise, compute it only on the first iteration.
void setHarrisParam(const double &hp)
bool hasEnoughPoints() const
Implementation of a velocity twist matrix and operations on such kind of matrices.
vpMbtOptimizationMethod m_optimizationMethod
Optimization method used.
unsigned int getRows() const
Return the number of rows of the 2D array.
void setMinDistance(const double &mD)
void loadConfigFile(const char *configFile)
void setCameraParameters(const vpCameraParameters &_cam)
double angleAppears
Angle used to detect a face appearance.
vpKltOpencv tracker
Points tracker.
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 >())
void setPyramidLevels(const int pyrMaxLevel)
void setState(const vpMeSiteState &flag)
std::list< vpMbtDistanceKltCylinder * > kltCylinders
void reinitMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &_cMo)
void displayMovingEdges(const vpImage< unsigned char > &I)
static double rad(double deg)
virtual void setMinLineLengthThresh(const double minLineLengthThresh, const std::string &name="")
void setMeanWeight1(const double wmean)
virtual void setCameraParameters(const vpCameraParameters &cam)
virtual void setMaxIter(const unsigned int max)
void computeProjectionError(const vpImage< unsigned char > &_I)
void preTracking(const vpImage< unsigned char > &I, unsigned int &nbInfos, unsigned int &nbFaceUsed)
cv::Mat cur
Temporary OpenCV image for fast conversion.
virtual void initFaceFromLines(vpMbtPolygon &polygon)
unsigned int maxIter
The maximum iteration of the virtual visual servoing stage.
double getMinLineLengthThreshold() const
void setMaxFeatures(const unsigned int &mF)
void computeHomography(const vpHomogeneousMatrix &_cTc0, vpHomography &cHc0)
virtual void initCylinder(const vpPoint &p1, const vpPoint &p2, const double radius, const int idFace=0, const std::string &name="")
bool closeToImageBorder(const vpImage< unsigned char > &I, const unsigned int threshold)
void setWindowSize(const int winSize)
double getQuality() const
std::list< vpMbtDistanceCircle * > circles_disp
Vector of the circles used here only to display the full model.
double minPolygonAreaThresholdGeneral
Minimum polygon area threshold for LOD mode (general setting)
static double deg(double rad)
void initInteractionMatrixError()
bool displayFeatures
If true, the features are displayed.
virtual void loadModel(const char *modelFile, const bool verbose=false)
virtual void initCylinder(const vpPoint &, const vpPoint &, const double r, const int idFace, const std::string &name="")
void setCameraParameters(const vpCameraParameters &cam)
bool applyLodSettingInConfig
True if the CAO model is loaded before the call to loadConfigFile, (deduced by the number of polygons...
Implementation of column vector and the associated operations.
std::vector< std::list< vpMbtDistanceCylinder * > > cylinders
Vector of the tracked cylinders.
void setAngleAppear(const double &aappear)
void computeInteractionMatrixError(const vpHomogeneousMatrix &cMo)
virtual void initCircle(const vpPoint &p1, const vpPoint &p2, const vpPoint &p3, const double radius, const int idFace=0, const std::string &name="")
unsigned int initMbtTracking(const unsigned int level=0)
vpHomogeneousMatrix inverse() const
unsigned int trackFirstLoop(const vpImage< unsigned char > &I, vpColVector &factor, const unsigned int lvl=0)
vpMbHiddenFaces< vpMbtPolygon > * hiddenface
Pointer to the list of faces.
void setBlockSize(const int blockSize)
static vpHomogeneousMatrix direct(const vpColVector &v)
void setMeanWeight(const double _wmean)
Contains an M-Estimator and various influence function.
unsigned int nbvisiblepolygone
Number of polygon (face) currently visible.
double angleDisappears
Angle used to detect a face disappearance.
virtual unsigned int getNbPolygon() const
virtual void initFaceFromLines(vpMbtPolygon &polygon)
vpMbtPolygon * polygon
Pointer to the polygon that define a face.
bool postTracking(const vpImage< unsigned char > &I, vpColVector &w_mbt, vpColVector &w_klt, const unsigned int lvl=0)
unsigned int getHeight() const
void setMeanWeight(const double w_mean)
vpColVector error
The error vector.
vpMatrix pseudoInverse(double svThreshold=1e-6) const
Compute the pseudo inverse of the matrix using the SVD.
bool Reinit
Indicates if the line has to be reinitialized.
virtual void init(const vpImage< unsigned char > &I)
unsigned int getCurrentNumberPoints() const
void setBlockSize(const unsigned int &bs)
unsigned int clippingFlag
Flags specifying which clipping to used.
unsigned int nline
Index of the polygon to add, and total number of polygon extracted so far.
void trackMovingEdge(const vpImage< unsigned char > &I)
void displayOgre(const vpHomogeneousMatrix &cMo)
double getAngleAppear() const
unsigned int nbFeaturel2
The number of moving edges on line 2.
virtual void initFaceFromLines(vpMbtPolygon &polygon)
unsigned int getCurrentNumberPoints() const
void setThreshold(const double noise_threshold)
double getMinDistance() const
void resize(unsigned int n_data)
Resize containers for sort methods.
vpMbtMeLine * meline2
The moving edge containers (second line of the cylinder)
bool getFovClipping() const
void setIteration(const unsigned int iter)
Set iteration.
bool useLodGeneral
True if LOD mode is enabled.
vpMatrix L
The interaction matrix.
void computeScanLineRender(const vpCameraParameters &cam, const unsigned int &w, const unsigned int &h)
void computeVVS(const unsigned int &nbInfos, vpColVector &w)
std::vector< unsigned int > nbFeature
The number of moving edges.
void computeInteractionMatrixError(const vpHomogeneousMatrix &cMo, const vpImage< unsigned char > &I)
void initInteractionMatrixError()
void setMovingEdge(const vpMe &_ecm)
bool isoJoIdentity
Boolean to know if oJo is identity (for fast computation)
void setMaskBorder(const unsigned int &mb)
void computeInteractionMatrixAndResidu(vpColVector &_R, vpMatrix &_J)
vpHomogeneousMatrix c0Mo
Initial pose.
unsigned int getPyramidLevels() const
double thresholdMBT
The threshold used in the robust estimation of MBT.
virtual void setNearClippingDistance(const double &dist)
virtual void setPose(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cdMo)
void resize(const unsigned int i, const bool flagNullify=true)
vpColVector m_w
Weights used in the robust scheme.
virtual void setLod(const bool useLod, const std::string &name="")
void computeVVS(const vpImage< unsigned char > &I, const unsigned int &nbInfos, vpColVector &w_mbt, vpColVector &w_klt, const unsigned int lvl=0)
void computeFov(const unsigned int &w, const unsigned int &h)