/*! Track the line in the image I. \param I : Image in which the line appears. */ void vpMeLine::track(const vpImage<unsigned char> &I) { vpCDEBUG(1) <<"begin vpMeLine::track()"<<std::endl ; // 1. On fait ce qui concerne les droites (peut etre vide) { } // 2. On appelle ce qui n'est pas specifique { vpMeTracker::track(I) ; } // 3. On revient aux droites { // supression des points rejetes par les ME suppressPoints() ; setExtremities() ; // Estimation des parametres de la droite aux moindres carre try { leastSquare() ; } catch(...) { vpERROR_TRACE("Error caught") ; throw ; } // recherche de point aux extremite de la droites // dans le cas d'un glissement seekExtremities(I) ; setExtremities() ; try { leastSquare() ; } catch(...) { vpERROR_TRACE("Error caught") ; throw ; } // suppression des points rejetes par la regression robuste suppressPoints() ; setExtremities() ; //reechantillonage si necessaire reSample(I) ; // remet a jour l'angle delta pour chaque point de la liste updateDelta() ; // Remise a jour de delta dans la liste de site me if (vpDEBUG_ENABLE(2)) { display(I,vpColor::red) ; vpMeTracker::display(I) ; vpDisplay::flush(I) ; } } computeRhoTheta(I) ; vpCDEBUG(1) <<"end vpMeLine::track()"<<std::endl ; }
/*! Track the ellipse in the image I. \param I : Image in which the ellipse appears. */ void vpMeEllipse::track(const vpImage<unsigned char> &I) { vpCDEBUG(1) <<"begin vpMeEllipse::track()"<<std::endl ; static int iter =0 ; // 1. On fait ce qui concerne les ellipse (peut etre vide) { } //vpDisplay::display(I) ; // 2. On appelle ce qui n'est pas specifique { try{ vpMeTracker::track(I) ; } catch(...) { vpERROR_TRACE("Error caught") ; throw ; } // std::cout << "number of signals " << numberOfSignal() << std::endl ; } // 3. On revient aux ellipses { // Estimation des parametres de la droite aux moindres carre suppressPoints() ; setExtremities() ; try{ leastSquare() ; } catch(...) { vpERROR_TRACE("Error caught") ; throw ; } seekExtremities(I) ; setExtremities() ; try { leastSquare() ; } catch(...) { vpERROR_TRACE("Error caught") ; throw ; } // suppression des points rejetes par la regression robuste suppressPoints() ; setExtremities() ; //reechantillonage si necessaire reSample(I) ; // remet a jour l'angle delta pour chaque point de la liste updateTheta() ; computeMoments(); // Remise a jour de delta dans la liste de site me if (vpDEBUG_ENABLE(2)) { display(I,vpColor::red) ; vpMeTracker::display(I) ; vpDisplay::flush(I) ; } // computeAngle(iP1, iP2) ; // // if (iter%5==0) // { // sample(I) ; // try{ // leastSquare() ; } // catch(...) // { // vpERROR_TRACE("Error caught") ; // throw ; // } // computeAngle(iP1, iP2) ; // } // seekExtremities(I) ; // // vpMeTracker::display(I) ; // // vpDisplay::flush(I) ; // // // remet a jour l'angle theta pour chaque point de la liste // updateTheta() ; } iter++ ; vpCDEBUG(1) << "end vpMeEllipse::track()"<<std::endl ; }