40 #include <visp3/core/vpConfig.h>
50 #include <visp3/core/vpMeterPixelConversion.h>
51 #include <visp3/core/vpPixelMeterConversion.h>
52 #include <visp3/core/vpPlane.h>
53 #include <visp3/mbt/vpMbtDistanceCircle.h>
54 #include <visp3/vision/vpPose.h>
55 #include <visp3/visual_features/vpFeatureBuilder.h>
56 #include <visp3/visual_features/vpFeatureEllipse.h>
62 : name(), index(0), cam(), me(NULL), wmean(1), featureEllipse(), isTrackedCircle(true), meEllipse(NULL), circle(NULL),
63 radius(0.), p1(NULL), p2(NULL), p3(NULL), L(), error(), nbFeature(0), Reinit(false), hiddenface(NULL),
64 index_polygon(-1), isvisible(false)
158 std::cout <<
"Problem when projecting circle\n";
172 double mu20_p, mu11_p, mu02_p;
174 meEllipse->initTracking(I, ic, mu20_p, mu11_p, mu02_p, doNotTrack);
222 std::cout <<
"Problem when projecting circle\n";
228 double mu20_p, mu11_p, mu02_p;
230 meEllipse->updateParameters(I, ic, mu20_p, mu11_p, mu02_p);
274 bool displayFullModel)
279 double mu20_p = params[2];
280 double mu11_p = params[3];
281 double mu02_p = params[4];
298 bool displayFullModel)
303 double mu20_p = params[3];
304 double mu11_p = params[4];
305 double mu02_p = params[5];
315 std::vector<std::vector<double> > features;
318 for (std::list<vpMeSite>::const_iterator it =
meEllipse->getMeList().begin(); it !=
meEllipse->getMeList().end(); ++it) {
320 #if (VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11)
321 std::vector<double> params = {0,
324 static_cast<double>(p_me.
getState())};
326 std::vector<double> params;
330 params.push_back(static_cast<double>(p_me.
getState()));
332 features.push_back(params);
350 bool displayFullModel)
352 std::vector<double> params;
354 if ((
isvisible && isTrackedCircle) || displayFullModel) {
361 std::cout <<
"Cannot project the circle";
365 double mu20_p, mu11_p, mu02_p;
368 params.push_back(center.
get_i());
369 params.push_back(center.
get_j());
370 params.push_back(mu20_p);
371 params.push_back(mu11_p);
372 params.push_back(mu02_p);
432 std::cout <<
"Problem projection circle\n";
451 for (std::list<vpMeSite>::const_iterator it =
meEllipse->getMeList().begin(); it !=
meEllipse->getMeList().end();
454 H[0] = 2 * (mu11 * (y - yg) + mu02 * (xg - x));
455 H[1] = 2 * (mu20 * (yg - y) + mu11 * (x - xg));
457 H[3] = 2 * (yg * (x - xg) + y * xg + mu11 - x * y);
460 for (
unsigned int k = 0; k < 6; k++)
461 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];
465 2 * mu11 * xg * yg +
vpMath::sqr(mu11) - mu20 * mu02;