42 #include <visp/vpConfig.h>
52 #include <visp/vpMbtDistanceCircle.h>
53 #include <visp/vpPlane.h>
54 #include <visp/vpMeterPixelConversion.h>
55 #include <visp/vpPixelMeterConversion.h>
56 #include <visp/vpFeatureBuilder.h>
57 #include <visp/vpFeatureEllipse.h>
58 #include <visp/vpPose.h>
64 : name(), index(0), cam(), me(NULL), wmean(1),
65 featureEllipse(), meEllipse(NULL),
66 circle(NULL), radius(0.), p1(NULL), p2(NULL), p3(NULL),
67 L(), error(), nbFeature(0), Reinit(false),
68 hiddenface(NULL), index_polygon(-1), isvisible(false)
79 if (
p1 != NULL)
delete p1;
80 if (
p2 != NULL)
delete p2;
81 if (
p3 != NULL)
delete p3;
163 std::cout<<
"Problem when projecting circle\n";
177 double mu20_p, mu11_p, mu02_p;
179 meEllipse->initTracking(I, ic, mu20_p, mu11_p, mu02_p);
235 catch(...){std::cout<<
"Problem when projecting circle\n";}
241 double mu20_p, mu11_p, mu02_p;
243 meEllipse->updateParameters(I, ic, mu20_p, mu11_p, mu02_p);
291 const bool displayFullModel )
300 catch(...){std::cout<<
"Cannot project the circle";}
303 double mu20_p, mu11_p, mu02_p;
323 const unsigned int thickness,
const bool displayFullModel)
332 catch(...){std::cout<<
"Cannot project the circle";}
335 double mu20_p, mu11_p, mu02_p;
392 catch(...){std::cout<<
"Problem projection circle\n";}
410 for(std::list<vpMeSite>::const_iterator it=
meEllipse->getMeList().begin(); it!=
meEllipse->getMeList().end(); ++it){
412 H[0] = 2*(mu11*(y-yg)+mu02*(xg-x));
413 H[1] = 2*(mu20*(yg-y)+mu11*(x-xg));
415 H[3] = 2*(yg*(x-xg)+y*xg+mu11-x*y);
418 for (
unsigned int k=0; k<6; k++)
419 L[j][k] = H[0]*H1[0][k] + H[1]*H1[1][k] + H[2]*H1[2][k] + H[3]*H1[3][k] + H[4]*H1[4][k];
422 + 2*(mu11*yg-mu02*xg)*x + 2*(mu11*xg-mu20*yg)*y
unsigned int getRange() const
Definition of the vpMatrix class.
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)
void resize(const unsigned int nrows, const unsigned int ncols, const bool nullify=true)
unsigned int nbFeature
The number of moving edges.
vpPoint * p3
An other point on the plane containing the circle.
void changeFrame(const vpHomogeneousMatrix &cMo, vpColVector &cP)
perspective projection of the circle
The class provides a data structure for the homogeneous matrices as well as a set of operations on th...
Definition of the row vector class.
vpMatrix L
The interaction matrix.
Class to define colors available for display functionnalities.
vpColVector error
The error vector.
double get_oY() const
Get the point Y coordinate in the object frame.
void buildFrom(const vpPoint &_p1, const vpPoint &_p2, const vpPoint &_p3, const double r)
vpMbtMeEllipse * meEllipse
Polygon describing the circle bbox.
Contains predetermined masks for sites and holds moving edges tracking parameters.
static void convertPoint(const vpCameraParameters &cam, const double &u, const double &v, double &x, double &y)
Point coordinates conversion from pixel coordinates to normalized coordinates in meter...
#define vpDEBUG_ENABLE(level)
vpPoint * p2
A point on the plane containing the circle.
static void flush(const vpImage< unsigned char > &I)
Class that defines what is a point.
bool Reinit
Indicates if the circle has to be reinitialized.
bool isvisible
Indicates if the circle is visible or not.
static double sqr(double x)
void trackMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
Generic class defining intrinsic camera parameters.
void computeInteractionMatrixError(const vpHomogeneousMatrix &cMo)
double get_oZ() const
Get the point Z coordinate in the object frame.
void updateMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
void reinitMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
vpCircle * circle
The circle to track.
static void convertEllipse(const vpCameraParameters &cam, const vpCircle &circle, vpImagePoint ¢er, double &mu20_p, double &mu11_p, double &mu02_p)
void displayMovingEdges(const vpImage< unsigned char > &I)
bool initMovingEdge(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
void setMovingEdge(vpMe *Me)
double get_oX() const
Get the point X coordinate in the object frame.
void initInteractionMatrixError()
vpMatrix interaction(const unsigned int select=FEATURE_ALL)
compute the interaction matrix from a subset a the possible features
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
This class defines the container for a plane geometrical structure.
static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot &d)
double radius
The radius of the circle.
Class that defines what is a circle.
vpPoint * p1
The center of the circle.
void setWorldCoordinates(const vpColVector &oP)
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 resize(const unsigned int i, const bool flagNullify=true)