Visual Servoing Platform  version 3.6.1 under development (2024-06-22)

#include <visp3/me/vpMeEllipse.h>

+ Inheritance diagram for vpMeEllipse:

Public Member Functions

 vpMeEllipse ()
 
 vpMeEllipse (const vpMeEllipse &me_ellipse)
 
virtual ~vpMeEllipse () vp_override
 
void display (const vpImage< unsigned char > &I, const vpColor &col, unsigned int thickness=1)
 
vpColVector get_nij () const
 
vpColVector get_ABE () const
 
double getArea () const
 
vpImagePoint getCenter () const
 
unsigned int getExpectedDensity () const
 
unsigned int getNumberOfGoodPoints () const
 
vpImagePoint getFirstEndpoint () const
 
double getHighestAngle () const
 
vpImagePoint getSecondEndpoint () const
 
double getSmallestAngle () const
 
void initTracking (const vpImage< unsigned char > &I, bool trackCircle=false, bool trackArc=false)
 
void initTracking (const vpImage< unsigned char > &I, std::optional< std::vector< vpImagePoint >> &opt_ips, bool trackCircle=false, bool trackArc=false)
 
void initTracking (const vpImage< unsigned char > &I, const std::vector< vpImagePoint > &iP, bool trackCircle=false, bool trackArc=false)
 
void initTracking (const vpImage< unsigned char > &I, const vpColVector &param, vpImagePoint *pt1=nullptr, const vpImagePoint *pt2=nullptr, bool trackCircle=false)
 
void printParameters () const
 
void setEndpoints (const vpImagePoint &pt1, const vpImagePoint &pt2)
 
void setThresholdRobust (double threshold)
 
void track (const vpImage< unsigned char > &I)
 
Public Member Functions Inherited from vpTracker
vpColVector get_p () const
 
vpColVector get_cP () const
 

Static Public Member Functions

static void displayEllipse (const vpImage< unsigned char > &I, const vpImagePoint &center, const double &A, const double &B, const double &E, const double &smallalpha, const double &highalpha, const vpColor &color=vpColor::green, unsigned int thickness=1)
 
static void displayEllipse (const vpImage< vpRGBa > &I, const vpImagePoint &center, const double &A, const double &B, const double &E, const double &smallalpha, const double &highalpha, const vpColor &color=vpColor::green, unsigned int thickness=1)
 
static vp_deprecated void display (const vpImage< unsigned char > &I, const vpImagePoint &center, const double &A, const double &B, const double &E, const double &smallalpha, const double &highalpha, const vpColor &color=vpColor::green, unsigned int thickness=1)
 
static vp_deprecated void display (const vpImage< vpRGBa > &I, const vpImagePoint &center, const double &A, const double &B, const double &E, const double &smallalpha, const double &highalpha, const vpColor &color=vpColor::green, unsigned int thickness=1)
 
Deprecated functions
static vp_deprecated bool inMask (const vpImage< bool > *mask, unsigned int i, unsigned int j)
 

Public Attributes

Public Attributes Inherited from vpTracker
vpColVector p
 
vpColVector cP
 
bool cPAvailable
 

Protected Member Functions

void computeAbeFromNij ()
 
double computeAngleOnEllipse (const vpImagePoint &pt) const
 
void computeKiFromNij ()
 
void computeNijFromAbe ()
 
void computePointOnEllipse (const double angle, vpImagePoint &iP)
 
double computeTheta (const vpImagePoint &iP) const
 
double computeTheta (double u, double v) const
 
void getParameters ()
 
void leastSquare (const vpImage< unsigned char > &I, const std::vector< vpImagePoint > &iP)
 
unsigned int leastSquareRobust (const vpImage< unsigned char > &I)
 
void leastSquareRobustCircle (const double &um, const double &vm, unsigned int &k, vpColVector &w)
 
void leastSquareRobustEllipse (const double &um, const double &vm, unsigned int &k, vpColVector &w)
 
unsigned int plugHoles (const vpImage< unsigned char > &I)
 
virtual void sample (const vpImage< unsigned char > &I, bool doNotTrack=false) vp_override
 
void updateTheta ()
 

Protected Attributes

vpColVector m_K
 
vpImagePoint m_iPc
 
double m_a
 
double m_b
 
double m_e
 
vpImagePoint m_iP1
 
vpImagePoint m_iP2
 
double m_alpha1
 
double m_alpha2
 
double m_ce
 
double m_se
 
std::list< double > m_angleList
 
double m_m00
 
double m_thresholdWeight
 
double m_alphamin
 
double m_alphamax
 
double m_uc
 
double m_vc
 
double m_n20
 
double m_n11
 
double m_n02
 
unsigned int m_expectedDensity
 
unsigned int m_numberOfGoodPoints
 
bool m_trackCircle
 
bool m_trackArc
 
double m_arcEpsilon
 
Protected Attributes Inherited from vpMeTracker
std::list< vpMeSitem_meList
 
vpMem_me
 
unsigned int m_init_range
 
int m_nGoodElement
 
const vpImage< bool > * m_mask
 
const vpImage< bool > * m_maskCandidates
 
vpMeSite::vpMeSiteDisplayType m_selectDisplay
 

Public Member Functions Inherited from vpMeTracker

void display (const vpImage< unsigned char > &I)
 
void display (const vpImage< vpRGBa > &I)
 
void display (const vpImage< unsigned char > &I, vpColVector &w, unsigned int &index_w)
 
unsigned int getInitRange ()
 
vpMegetMe ()
 
std::list< vpMeSite > & getMeList ()
 
std::list< vpMeSitegetMeList () const
 
int getNbPoints () const
 
void init ()
 
void initTracking (const vpImage< unsigned char > &I)
 
unsigned int numberOfSignal ()
 
bool outOfImage (int i, int j, int border, int nrows, int ncols)
 
bool outOfImage (const vpImagePoint &iP, int border, int nrows, int ncols)
 
void reset ()
 
void setDisplay (vpMeSite::vpMeSiteDisplayType select)
 
void setInitRange (const unsigned int &r)
 
virtual void setMask (const vpImage< bool > &mask)
 
virtual void setMaskCandidates (const vpImage< bool > *maskCandidates)
 
void setMe (vpMe *me)
 
void setMeList (const std::list< vpMeSite > &meList)
 
unsigned int totalNumberOfSignal ()
 
static bool inRoiMask (const vpImage< bool > *mask, unsigned int i, unsigned int j)
 
static bool inMeMaskCandidates (const vpImage< bool > *meMaskCandidates, unsigned int i, unsigned int j)
 

Detailed Description

Class that tracks an ellipse using moving edges.

In this class, an ellipse is defined as the set of image points $ (u,v) $ (for more information about the image frame see the vpImagePoint documentation) that satisfy the homogeneous equation:

\[ K_0 u^2 + K_1 v^2 + 2K_2 u v + 2K_3 u + 2K_4 v + K5 = 0 \]

with $K_0 = n_{02}$, $K_1 = n_{20}$, $K_2 = -n_{11}$, etc. (see Eq. (25) of Chaumette TRO 2004 paper [6])

If $ K_0 = K1 $ and $ K_2 = 0 $, the ellipse is a circle.

The six parameters are stored in the private attribute K.

An ellipse is also represented thanks to five parameters that are the center $ (uc,vc) $ of the ellipse and either:

  • three normalized moments $ n_{ij} $ of order 2,
  • or the semi major axis $ A $, the semi minor axis $ B $ and the ellipse orientation $ E \in [-\pi/2;\pi/2] $ defined by the angle between the major axis and the u axis of the image frame.

For more details, see [6]. The following figure illustrates these parameters.

The example below available in tutorial-me-ellipse-tracker.cpp and described in Tutorial: Moving-edges tracking, section Ellipse tracking shows how to use this class.

#include <visp3/core/vpConfig.h>
#ifdef VISP_HAVE_MODULE_SENSOR
#include <visp3/sensor/vp1394CMUGrabber.h>
#include <visp3/sensor/vp1394TwoGrabber.h>
#include <visp3/sensor/vpV4l2Grabber.h>
#endif
#include <visp3/gui/vpDisplayGDI.h>
#include <visp3/gui/vpDisplayOpenCV.h>
#include <visp3/gui/vpDisplayX.h>
#include <visp3/me/vpMeEllipse.h>
#if defined(HAVE_OPENCV_VIDEOIO)
#include <opencv2/videoio.hpp>
#endif
int main()
{
#if (defined(VISP_HAVE_DC1394) || defined(VISP_HAVE_CMU1394) || defined(VISP_HAVE_V4L2) || defined(HAVE_OPENCV_VIDEOIO))
#ifdef ENABLE_VISP_NAMESPACE
using namespace VISP_NAMESPACE_NAME;
#endif
try {
#if defined(VISP_HAVE_DC1394)
vp1394TwoGrabber g(false);
#elif defined(VISP_HAVE_CMU1394)
#elif defined(VISP_HAVE_V4L2)
#elif defined(HAVE_OPENCV_VIDEOIO)
cv::VideoCapture g(0); // open the default camera
if (!g.isOpened()) { // check if we succeeded
std::cout << "Failed to open the camera" << std::endl;
return EXIT_FAILURE;
}
cv::Mat frame;
#endif
#if defined(VISP_HAVE_DC1394) || defined(VISP_HAVE_V4L2) || defined(VISP_HAVE_CMU1394)
g.acquire(I);
#elif defined(HAVE_OPENCV_VIDEOIO)
g >> frame; // get a new frame from camera
#endif
#if defined(VISP_HAVE_X11)
vpDisplayX d(I, 0, 0, "Camera view");
#elif defined(VISP_HAVE_GDI)
vpDisplayGDI d(I, 0, 0, "Camera view");
#elif defined(HAVE_OPENCV_HIGHGUI)
vpDisplayOpenCV d(I, 0, 0, "Camera view");
#else
std::cout << "No image viewer is available..." << std::endl;
#endif
vpMe me;
me.setRange(25);
me.setThreshold(20);
me.setSampleStep(10);
vpMeEllipse ellipse;
ellipse.setMe(&me);
ellipse.initTracking(I);
while (1) {
#if defined(VISP_HAVE_DC1394) || defined(VISP_HAVE_V4L2) || defined(VISP_HAVE_CMU1394)
g.acquire(I);
#elif defined(HAVE_OPENCV_VIDEOIO)
g >> frame;
#endif
ellipse.track(I);
ellipse.display(I, vpColor::red);
}
}
catch (const vpException &e) {
std::cout << "Catch an exception: " << e << std::endl;
}
#endif
}
Firewire cameras video capture based on CMU 1394 Digital Camera SDK.
void acquire(vpImage< unsigned char > &I)
Class for firewire ieee1394 video devices using libdc1394-2.x api.
static const vpColor red
Definition: vpColor.h:213
Display for windows using GDI (available on any windows 32 platform).
Definition: vpDisplayGDI.h:126
The vpDisplayOpenCV allows to display image using the OpenCV library. Thus to enable this class OpenC...
Use the X11 console to display images on unix-like OS. Thus to enable this class X11 should be instal...
Definition: vpDisplayX.h:131
static void display(const vpImage< unsigned char > &I)
static void flush(const vpImage< unsigned char > &I)
error that can be emitted by ViSP classes.
Definition: vpException.h:60
static void convert(const vpImage< unsigned char > &src, vpImage< vpRGBa > &dest)
Class that tracks an ellipse using moving edges.
Definition: vpMeEllipse.h:96
void display(const vpImage< unsigned char > &I, const vpColor &col, unsigned int thickness=1)
void initTracking(const vpImage< unsigned char > &I, bool trackCircle=false, bool trackArc=false)
void track(const vpImage< unsigned char > &I)
@ RANGE_RESULT
Definition: vpMeSite.h:78
void setDisplay(vpMeSite::vpMeSiteDisplayType select)
Definition: vpMeTracker.h:232
void setMe(vpMe *me)
Definition: vpMeTracker.h:260
Definition: vpMe.h:130
void setRange(const unsigned int &range)
Definition: vpMe.h:411
void setLikelihoodThresholdType(const vpLikelihoodThresholdType likelihood_threshold_type)
Definition: vpMe.h:501
void setThreshold(const double &threshold)
Definition: vpMe.h:462
void setSampleStep(const double &sample_step)
Definition: vpMe.h:418
@ NORMALIZED_THRESHOLD
Definition: vpMe.h:141
Class that is a wrapper over the Video4Linux2 (V4L2) driver.
Examples
trackMeCircle.cpp, trackMeEllipse.cpp, and tutorial-me-ellipse-tracker.cpp.

Definition at line 95 of file vpMeEllipse.h.

Constructor & Destructor Documentation

◆ vpMeEllipse() [1/2]

BEGIN_VISP_NAMESPACE vpMeEllipse::vpMeEllipse ( )

Basic constructor that calls the constructor of the class vpMeTracker.

Definition at line 48 of file vpMeEllipse.cpp.

References m_alpha2, m_iP1, m_iP2, m_K, vpColVector::resize(), and vpImagePoint::set_ij().

◆ vpMeEllipse() [2/2]

vpMeEllipse::vpMeEllipse ( const vpMeEllipse me_ellipse)

Copy constructor.

Definition at line 63 of file vpMeEllipse.cpp.

◆ ~vpMeEllipse()

vpMeEllipse::~vpMeEllipse ( )
virtual

Destructor.

Definition at line 74 of file vpMeEllipse.cpp.

References m_angleList, and vpMeTracker::m_meList.

Member Function Documentation

◆ computeAbeFromNij()

void vpMeEllipse::computeAbeFromNij ( )
protected

Computes the length of the semi major axis $ a $, the length of the semi minor axis $ b $, and $ e $ that is the angle made by the major axis and the u axis of the image frame $ (u,v) $. They are computed from the normalized moments $ $ n_{ij} $.

Definition at line 188 of file vpMeEllipse.cpp.

References m_a, m_b, m_ce, m_e, m_n02, m_n11, m_n20, and m_se.

Referenced by getParameters(), and initTracking().

◆ computeAngleOnEllipse()

double vpMeEllipse::computeAngleOnEllipse ( const vpImagePoint pt) const
protected

Compute the angle of a point on the ellipse wrt the ellipse major axis.

Parameters
pt: Image point on the ellipse.
Returns
The computed angle.

Definition at line 146 of file vpMeEllipse.cpp.

References vpImagePoint::get_u(), vpImagePoint::get_v(), m_a, m_b, m_ce, m_e, m_se, m_uc, and m_vc.

Referenced by initTracking(), leastSquareRobust(), leastSquareRobustCircle(), leastSquareRobustEllipse(), plugHoles(), and track().

◆ computeKiFromNij()

void vpMeEllipse::computeKiFromNij ( )
protected

Computes the parameters $ K = {K_0, ..., K_5} $ from the center of the ellipse and the normalized moments $ n_{ij} $. The parameters $ K $ are such that $ K0 = n02, K1 = n20 $, etc. as in Eq (25) of Chaumette 2004 TRO paper.

Definition at line 210 of file vpMeEllipse.cpp.

References m_K, m_n02, m_n11, m_n20, m_uc, and m_vc.

Referenced by initTracking().

◆ computeNijFromAbe()

void vpMeEllipse::computeNijFromAbe ( )
protected

Computes the normalized moments $ n_{ij} $ from the $ A, B, E $ parameters as in Eq (24) of Chaumette 2004 TRO paper after simplifications to deal with the case cos(e) = 0.0

Definition at line 226 of file vpMeEllipse.cpp.

References m_a, m_b, m_ce, m_n02, m_n11, m_n20, and m_se.

◆ computePointOnEllipse()

void vpMeEllipse::computePointOnEllipse ( const double  angle,
vpImagePoint iP 
)
protected

Compute the coordinates of a point on an ellipse from its angle with respect to the main orientation of the ellipse.

Parameters
angle: Angle on the ellipse with respect to its major axis.
iP: Image point on the ellipse.

Definition at line 114 of file vpMeEllipse.cpp.

References m_a, m_b, m_ce, m_se, m_uc, m_vc, vpImagePoint::set_u(), vpImagePoint::set_uv(), and vpImagePoint::set_v().

Referenced by initTracking(), leastSquareRobustCircle(), leastSquareRobustEllipse(), plugHoles(), sample(), and track().

◆ computeTheta() [1/2]

double vpMeEllipse::computeTheta ( const vpImagePoint iP) const
protected

Computes the $ \theta $ angle that represents the angle between the tangent to the curve and the u axis. This angle is used for tracking the vpMeSite.

Parameters
iP: The point belonging to the ellipse where the angle is computed.

Definition at line 80 of file vpMeEllipse.cpp.

References vpImagePoint::get_u(), and vpImagePoint::get_v().

Referenced by plugHoles(), sample(), and updateTheta().

◆ computeTheta() [2/2]

double vpMeEllipse::computeTheta ( double  u,
double  v 
) const
protected

Computes the $ \theta $ angle that represents the angle between the tangent to the curve and the u axis. This angle is used for tracking the vpMeSite.

Parameters
u,v: The point belonging to the ellipse where the angle is computed.

Definition at line 88 of file vpMeEllipse.cpp.

References m_K.

◆ display() [1/6]

void vpMeTracker::display ( const vpImage< unsigned char > &  I)
inherited

Display the moving edge sites with a color corresponding to their state.

  • If green : The vpMeSite is a good point.
  • If blue : The point is removed because of the vpMeSite tracking phase (contrast problem).
  • If purple : The point is removed because of the vpMeSite tracking phase (threshold problem).
  • If red : The point is removed because of the robust method in the virtual visual servoing (M-Estimator problem).
  • If cyan : The point is removed because it's too close to another.
  • Yellow otherwise.
Parameters
I: The image.

Definition at line 254 of file vpMeTracker.cpp.

References vpMeSite::display(), and vpMeTracker::m_meList.

Referenced by vpMeTracker::display(), initTracking(), and vpMeLine::track().

◆ display() [2/6]

void vpMeEllipse::display ( const vpImage< unsigned char > &  I,
const vpColor col,
unsigned int  thickness = 1 
)

Display the ellipse or arc of ellipse

Warning
To effectively display the ellipse a call to vpDisplay::flush() is needed.
Parameters
I: Image in which the ellipse appears.
col: Color of the displayed ellipse.
thickness: Thickness of the drawing.
Examples
trackMeCircle.cpp, trackMeEllipse.cpp, and tutorial-me-ellipse-tracker.cpp.

Definition at line 1049 of file vpMeEllipse.cpp.

References displayEllipse(), m_a, m_alpha1, m_alpha2, m_b, m_e, and m_iPc.

◆ display() [3/6]

void vpMeEllipse::display ( const vpImage< unsigned char > &  I,
const vpImagePoint center,
const double &  A,
const double &  B,
const double &  E,
const double &  smallalpha,
const double &  highalpha,
const vpColor color = vpColor::green,
unsigned int  thickness = 1 
)
static
Deprecated:
Use rather displayEllipse().
Deprecated:
This static function is deprecated. Use rather vpMeEllipse::displayEllipse().

Display the ellipse or the arc of ellipse thanks to the ellipse parameters.

Parameters
I: The image used as background.
center: Center of the ellipse.
A: Semi major axis of the ellipse.
B: Semi minor axis of the ellipse.
E: Angle made by the major axis and the u axis of the image frame $ (u,v) $ (in rad).
smallalpha: Smallest $ alpha $ angle in rad (0 for a complete ellipse).
highalpha: Highest $ alpha $ angle in rad (2 $ \Pi $ for a complete ellipse).
color: Color used to display the ellipse.
thickness: Thickness of the drawings.

Definition at line 1312 of file vpMeEllipse.cpp.

References displayEllipse().

◆ display() [4/6]

void vpMeTracker::display ( const vpImage< unsigned char > &  I,
vpColVector w,
unsigned int &  index_w 
)
inherited

Displays the status of moving edge sites

Parameters
I: The image.
w: vector
index_w: index

Definition at line 272 of file vpMeTracker.cpp.

References vpMeTracker::display(), vpMeSite::getState(), vpMeTracker::m_meList, vpMeSite::NO_SUPPRESSION, and vpMeSite::setWeight().

◆ display() [5/6]

void vpMeTracker::display ( const vpImage< vpRGBa > &  I)
inherited

Display the moving edge sites with a color corresponding to their state.

  • If green : The vpMeSite is a good point.
  • If blue : The point is removed because of the vpMeSite tracking phase (contrast problem).
  • If purple : The point is removed because of the vpMeSite tracking phase (threshold problem).
  • If red : The point is removed because of the robust method in the virtual visual servoing (M-Estimator problem).
  • If cyan : The point is removed because it's too close to another.
  • Yellow otherwise.
Parameters
I: The image.

Definition at line 263 of file vpMeTracker.cpp.

References vpMeSite::display(), and vpMeTracker::m_meList.

◆ display() [6/6]

void vpMeEllipse::display ( const vpImage< vpRGBa > &  I,
const vpImagePoint center,
const double &  A,
const double &  B,
const double &  E,
const double &  smallalpha,
const double &  highalpha,
const vpColor color = vpColor::green,
unsigned int  thickness = 1 
)
static
Deprecated:
Use rather displayEllipse().
Deprecated:
This static function is deprecated. Use rather vpMeEllipse::displayEllipse().

Display the ellipse or the arc of ellipse thanks to the ellipse parameters.

Parameters
I: The image used as background.
center: Center of the ellipse
A: Semi major axis of the ellipse.
B: Semi minor axis of the ellipse.
E: Angle made by the major axis and the u axis of the image frame $ (u,v) $ (in rad)
smallalpha: Smallest $ alpha $ angle in rad (0 for a complete ellipse)
highalpha: Highest $ alpha $ angle in rad ( $ 2 \Pi $ for a complete ellipse)
color: Color used to display th lines.
thickness: Thickness of the drawings.
See also
vpDisplay::displayEllipse()

Definition at line 1346 of file vpMeEllipse.cpp.

References displayEllipse().

◆ displayEllipse() [1/2]

void vpMeEllipse::displayEllipse ( const vpImage< unsigned char > &  I,
const vpImagePoint center,
const double &  A,
const double &  B,
const double &  E,
const double &  smallalpha,
const double &  highalpha,
const vpColor color = vpColor::green,
unsigned int  thickness = 1 
)
static

Display the ellipse or the arc of ellipse thanks to the ellipse parameters.

Parameters
I: The image used as background.
center: Center of the ellipse.
A: Semi major axis of the ellipse.
B: Semi minor axis of the ellipse.
E: Angle made by the major axis and the u axis of the image frame $ (u,v) $ (in rad).
smallalpha: Smallest $ alpha $ angle in rad (0 for a complete ellipse).
highalpha: Highest $ alpha $ angle in rad (2 $ \Pi $ for a complete ellipse).
color: Color used to display the ellipse.
thickness: Thickness of the drawings.
See also
vpDisplay::displayEllipse()

Definition at line 1355 of file vpMeEllipse.cpp.

References vpDisplay::displayEllipse().

Referenced by display().

◆ displayEllipse() [2/2]

void vpMeEllipse::displayEllipse ( const vpImage< vpRGBa > &  I,
const vpImagePoint center,
const double &  A,
const double &  B,
const double &  E,
const double &  smallalpha,
const double &  highalpha,
const vpColor color = vpColor::green,
unsigned int  thickness = 1 
)
static

Display the ellipse or the arc of ellipse thanks to the ellipse parameters.

Parameters
I: The image used as background.
center: Center of the ellipse
A: Semi-major axis of the ellipse.
B: Semi-minor axis of the ellipse.
E: Angle made by the major axis and the u axis of the image frame $ (u,v) $ (in rad)
smallalpha: Smallest $ alpha $ angle in rad (0 for a complete ellipse)
highalpha: Highest $ alpha $ angle in rad ( $ 2 \Pi $ for a complete ellipse)
color: Color used to display th lines.
thickness: Thickness of the drawings.
See also
vpDisplay::displayEllipse()

Definition at line 1362 of file vpMeEllipse.cpp.

References vpDisplay::displayEllipse().

◆ get_ABE()

vpColVector vpMeEllipse::get_ABE ( ) const
inline

Gets the ellipse parameters as a 3-dim vector containing $ A, B, E $.

Returns
The 3-dim vector containing $ A, B, E $ corresponding respectively to the semi major axis, the semi minor axis and the angle in rad made by the major axis and the u axis of the image frame $ (u,v) $, $ e \in [-\pi/2;pi/2] $.
See also
getCenter(), get_nij(), getArea()

Definition at line 156 of file vpMeEllipse.h.

◆ get_cP()

vpColVector vpTracker::get_cP ( ) const
inlineinherited

Return object parameters expressed in the 3D camera frame.

Definition at line 95 of file vpTracker.h.

◆ get_nij()

vpColVector vpMeEllipse::get_nij ( ) const
inline

Gets the second order normalized centered moment $ n_{ij} $ as a 3-dim vector containing $ n_{20}, n_{11}, n_{02} $ such as $ n_{ij} = \mu_{ij}/m_{00} $

Returns
The 3-dim vector containing $ n_{20}, n_{11}, n_{02} $.
See also
getCenter(), get_ABE(), getArea()

Definition at line 134 of file vpMeEllipse.h.

Referenced by vpFeatureBuilder::create().

◆ get_p()

vpColVector vpTracker::get_p ( ) const
inlineinherited

Return object parameters expressed in the 2D image plane computed by perspective projection.

Definition at line 93 of file vpTracker.h.

◆ getArea()

double vpMeEllipse::getArea ( ) const
inline

Gets the area of the ellipse corresponding also to the zero order moment of the ellipse.

Returns
The ellipse area.
See also
getCenter(), get_nij(), get_ABE()

Definition at line 177 of file vpMeEllipse.h.

◆ getCenter()

vpImagePoint vpMeEllipse::getCenter ( ) const
inline

Gets the center of the ellipse.

See also
get_nij(), get_ABE(), getArea()

Definition at line 184 of file vpMeEllipse.h.

Referenced by vpFeatureBuilder::create().

◆ getExpectedDensity()

unsigned int vpMeEllipse::getExpectedDensity ( ) const
inline
Returns
Expected number of moving edges to track along the ellipse.

Definition at line 189 of file vpMeEllipse.h.

◆ getFirstEndpoint()

vpImagePoint vpMeEllipse::getFirstEndpoint ( ) const
inline

Gets the first endpoint of the ellipse arc (corresponding to alpha1, not alphamin) when an arc is tracked.

See also
getSecondEndpoint()

Definition at line 202 of file vpMeEllipse.h.

◆ getHighestAngle()

double vpMeEllipse::getHighestAngle ( ) const
inline

Gets the highest $ alpha $ angle of the moving edges tracked $ \alpha_{max} \in [\alpha_min;\alpha_2] $.

See also
getSmallestAngle()

Definition at line 210 of file vpMeEllipse.h.

◆ getInitRange()

unsigned int vpMeTracker::getInitRange ( )
inlineinherited

Return the initial range.

Returns
Value of init_range.

Definition at line 146 of file vpMeTracker.h.

◆ getMe()

vpMe* vpMeTracker::getMe ( )
inlineinherited

Return the moving edges initialisation parameters.

Returns
Moving Edges.
Examples
trackMeCircle.cpp, and trackMeEllipse.cpp.

Definition at line 153 of file vpMeTracker.h.

◆ getMeList() [1/2]

std::list<vpMeSite>& vpMeTracker::getMeList ( )
inlineinherited

Return the list of moving edges

Returns
List of Moving Edges.

Definition at line 160 of file vpMeTracker.h.

◆ getMeList() [2/2]

std::list<vpMeSite> vpMeTracker::getMeList ( ) const
inlineinherited

Return the list of moving edges

Returns
List of Moving Edges.

Definition at line 167 of file vpMeTracker.h.

◆ getNbPoints()

int vpMeTracker::getNbPoints ( ) const
inlineinherited

Return the number of points that has not been suppressed.

Returns
Number of good points.

Definition at line 174 of file vpMeTracker.h.

◆ getNumberOfGoodPoints()

unsigned int vpMeEllipse::getNumberOfGoodPoints ( ) const
inline
Returns
Number of valid edges tracked along the ellipse.

Definition at line 194 of file vpMeEllipse.h.

◆ getParameters()

void vpMeEllipse::getParameters ( )
protected

Computes the coordinates of the ellipse center, the normalized moments $ n_{ij} $, the length of the semi major axis $ a $, the length of the semi minor axis $ b $, and $ e $ that is the angle made by the major axis and the u axis of the image frame $ (u,v) $.

All those computations are made from the parameters $ K ={K_0, ..., K_5} $ so that $ K_0 u^2 + K1 v^2 + 2 K2 u v + 2 K3 u + 2 K4 v + K5 = 0 $.

Definition at line 233 of file vpMeEllipse.cpp.

References computeAbeFromNij(), vpTrackingException::fatalError, m_iPc, m_K, m_n02, m_n11, m_n20, m_uc, m_vc, vpImagePoint::set_uv(), and vpArray2D< Type >::size().

Referenced by leastSquare(), leastSquareRobustCircle(), and leastSquareRobustEllipse().

◆ getSecondEndpoint()

vpImagePoint vpMeEllipse::getSecondEndpoint ( ) const
inline

Gets the second endpoint of the ellipse arc (corresponding to alpha2, not alphamax) when an arc is tracked.

See also
getFirstEndpoint()

Definition at line 218 of file vpMeEllipse.h.

◆ getSmallestAngle()

double vpMeEllipse::getSmallestAngle ( ) const
inline

Gets the smallest $ alpha $ angle of the moving edges tracked $ \alpha_{min} \in [\alpha_1;\alpha_2] $.

See also
getHighestAngle()

Definition at line 226 of file vpMeEllipse.h.

◆ init()

BEGIN_VISP_NAMESPACE void vpMeTracker::init ( void  )
inherited

Initialize the tracker.

Definition at line 48 of file vpMeTracker.cpp.

References vpTracker::init(), vpMeTracker::m_selectDisplay, vpMeSite::NONE, vpTracker::p, and vpColVector::resize().

Referenced by vpMeTracker::vpMeTracker().

◆ initTracking() [1/5]

◆ initTracking() [2/5]

void vpMeEllipse::initTracking ( const vpImage< unsigned char > &  I,
bool  trackCircle = false,
bool  trackArc = false 
)

Initialize the tracking of an ellipse or an arc of an ellipse when trackArc is set to true. Ask the user to click on five points located on the ellipse to be tracked.

Warning
The points should be selected as far as possible from each other. When an arc of an ellipse is tracked, it is recommended to select the 5 points clockwise.
Parameters
I: Image in which the ellipse appears.
trackCircle: When true, track a circle, when false track an ellipse.
trackArc: When true track an arc of the ellipse/circle. In that case, first and last points specify the extremities of the arc (clockwise). When false track the complete ellipse/circle.
Examples
trackMeCircle.cpp, trackMeEllipse.cpp, and tutorial-me-ellipse-tracker.cpp.

Definition at line 1054 of file vpMeEllipse.cpp.

References vpDisplay::displayCross(), vpDisplay::flush(), vpDisplay::getClick(), m_trackArc, m_trackCircle, and vpColor::red.

◆ initTracking() [3/5]

void vpMeEllipse::initTracking ( const vpImage< unsigned char > &  I,
const std::vector< vpImagePoint > &  iP,
bool  trackCircle = false,
bool  trackArc = false 
)

Initialize the tracking of an ellipse/circle or an arc of an ellipse/circle when trackArc is set to true. The ellipse/circle is defined thanks to a vector of image points.

Warning
It is mandatory to use at least five image points to estimate the ellipse parameters while three points are needed to estimate the circle parameters.
The image points should be selected as far as possible from each other. When an arc of an ellipse/circle is tracked, it is recommended to select the 5/3 points clockwise.
Parameters
I: Image in which the ellipse/circle appears.
iP: A vector of image points belonging to the ellipse/circle edge used to initialize the tracking.
trackCircle: When true, track a circle, when false track an ellipse.
trackArc: When true track an arc of the ellipse/circle. In that case, first and last points specify the extremities of the arc (clockwise). When false track the complete ellipse/circle.

Definition at line 1157 of file vpMeEllipse.cpp.

References computeAngleOnEllipse(), computePointOnEllipse(), vpMeTracker::display(), vpDisplay::flush(), leastSquare(), m_alpha1, m_alpha2, m_arcEpsilon, m_iP1, m_iP2, m_trackArc, m_trackCircle, sample(), and track().

◆ initTracking() [4/5]

void vpMeEllipse::initTracking ( const vpImage< unsigned char > &  I,
const vpColVector param,
vpImagePoint pt1 = nullptr,
const vpImagePoint pt2 = nullptr,
bool  trackCircle = false 
)

Initialize the tracking of an ellipse/circle or an arc of an ellipse/circle when arc extremities are given. The ellipse/circle is defined by the vector containing the coordinates of its center and the three second order centered normalized moments $ n_ij $. Without setting the arc extremities with parameters pt1 and pt2, the complete ellipse/circle is considered. When extremities are set, we consider an ellipse/circle arc defined clockwise from first extremity to second extremity.

Parameters
I: Image in which the ellipse appears.
param: Vector with the five parameters $(u_c, v_c, n_{20}, n_{11}, n_{02})$ defining the ellipse (expressed in pixels).
pt1: Image point defining the first extremity of the arc or nullptr to track a complete ellipse.
pt2: Image point defining the second extremity of the arc or nullptr to track a complete ellipse.
trackCircle: When true enable tracking of a circle, when false the tracking of an ellipse.

Definition at line 1190 of file vpMeEllipse.cpp.

References computeAbeFromNij(), computeAngleOnEllipse(), computeKiFromNij(), computePointOnEllipse(), vpMeTracker::display(), vpDisplay::flush(), m_alpha1, m_alpha2, m_arcEpsilon, m_iP1, m_iP2, m_iPc, m_n02, m_n11, m_n20, m_trackArc, m_trackCircle, m_uc, m_vc, sample(), vpImagePoint::set_uv(), and track().

◆ initTracking() [5/5]

void vpMeEllipse::initTracking ( const vpImage< unsigned char > &  I,
std::optional< std::vector< vpImagePoint >> &  opt_ips,
bool  trackCircle = false,
bool  trackArc = false 
)

Initialize the tracking of an ellipse or an arc of an ellipse when trackArc is set to true. If ips is set, use the contained points to initialize the ME if there are some, or initialize by clicks the ME and ips will contained the clicked points. If ips is not set, call the method vpMeEllipse::initTracking(const vpImage<unsigned char>&, bool, bool).

See also
vpMeEllipse::initTracking()
Warning
The points should be selected as far as possible from each other. When an arc of an ellipse is tracked, it is recommended to select the 5 points clockwise.
Parameters
I: Image in which the ellipse appears.
opt_ipsIf set, either a vector that contains the vpImagePoint to use or will be filled with the clicked points.
trackCircle: When true, track a circle, when false track an ellipse.
trackArc: When true track an arc of the ellipse/circle. In that case, first and last points specify the extremities of the arc (clockwise). When false track the complete ellipse/circle.

Definition at line 1097 of file vpMeEllipse.cpp.

References vpDisplay::displayCross(), vpDisplay::flush(), vpDisplay::getClick(), and vpColor::red.

◆ inMask()

static vp_deprecated bool vpMeTracker::inMask ( const vpImage< bool > *  mask,
unsigned int  i,
unsigned int  j 
)
inlinestaticinherited
Deprecated:
You should rather use inRoiMask(). Test whether the pixel is inside the region of interest mask. Mask values that are set to true are considered in the tracking.
Parameters
maskMask corresponding to the region of interest in the image or nullptr if not wanted. Mask values that are set to true are considered in the tracking. To disable a pixel, set false.
i: Pixel coordinate along the rows.
j: Pixel coordinate along the columns.

Definition at line 299 of file vpMeTracker.h.

◆ inMeMaskCandidates()

bool vpMeTracker::inMeMaskCandidates ( const vpImage< bool > *  meMaskCandidates,
unsigned int  i,
unsigned int  j 
)
staticinherited

Test whether the moving-edge (ME) is inside the mask of ME candidates for the initialization. Mask values that are set to true and their 8 neighbors are considered for the initialization.

Parameters
meMaskCandidatesMask corresponding the ME location in the image or nullptr if not wanted. Mask values that are set to true are considered for the initialization. To disable a pixel, set false.
i: ME coordinate along the rows.
j: ME coordinate along the columns.

Definition at line 115 of file vpMeTracker.cpp.

References vpImage< Type >::getCols(), and vpImage< Type >::getRows().

Referenced by sample(), vpMeLine::sample(), and vpMeLine::seekExtremities().

◆ inRoiMask()

bool vpMeTracker::inRoiMask ( const vpImage< bool > *  mask,
unsigned int  i,
unsigned int  j 
)
staticinherited

Test whether the pixel is inside the region of interest mask. Mask values that are set to true are considered in the tracking.

Parameters
maskMask corresponding to the region of interest in the image or nullptr if not wanted. Mask values that are set to true are considered in the tracking. To disable a pixel, set false.
i: Pixel coordinate along the rows.
j: Pixel coordinate along the columns.

Definition at line 105 of file vpMeTracker.cpp.

References vpImage< Type >::getValue().

Referenced by vpMbtFaceDepthDense::computeDesiredFeatures(), vpMbtFaceDepthNormal::computeDesiredFeatures(), vpMbtDistanceKltPoints::computeNbDetectedCurrent(), vpMbtDistanceKltPoints::init(), plugHoles(), sample(), vpMeLine::sample(), vpMeLine::seekExtremities(), and vpMeTracker::track().

◆ leastSquare()

void vpMeEllipse::leastSquare ( const vpImage< unsigned char > &  I,
const std::vector< vpImagePoint > &  iP 
)
protected

Least squares method to compute the circle/ ellipse to which the points belong.

Parameters
I: Image in which the circle/ellipse appears (useful just to get its number of rows and columns...
iP: A vector of points belonging to the circle/ellipse.

Definition at line 555 of file vpMeEllipse.cpp.

References vpException::dimensionError, vpImage< Type >::getHeight(), getParameters(), vpArray2D< Type >::getRows(), vpImage< Type >::getWidth(), m_K, m_trackCircle, vpMatrix::nullSpace(), vpMatrixException::rankDeficient, and vpMatrix::solveBySVD().

Referenced by initTracking().

◆ leastSquareRobust()

unsigned int vpMeEllipse::leastSquareRobust ( const vpImage< unsigned char > &  I)
protected

Robust least squares method to compute the ellipse to which the vpMeSite belong. Manage also the lists of vpMeSite and corresponding angles, and update the expected density of points.

Parameters
I: Image where tracking is done (useful just to get its number of rows and columns...

Definition at line 874 of file vpMeEllipse.cpp.

References computeAngleOnEllipse(), vpTrackingException::fatalError, vpImage< Type >::getHeight(), vpMe::getSampleStep(), vpMeSite::getState(), vpImage< Type >::getWidth(), leastSquareRobustCircle(), leastSquareRobustEllipse(), m_a, m_alpha1, m_alpha2, m_alphamax, m_alphamin, m_angleList, m_b, m_expectedDensity, vpMeSite::m_ifloat, vpMeSite::m_jfloat, vpMeTracker::m_me, vpMeTracker::m_meList, m_thresholdWeight, m_trackArc, m_trackCircle, vpMeSite::NO_SUPPRESSION, vpMeTracker::numberOfSignal(), and vpImagePoint::set_ij().

Referenced by track().

◆ leastSquareRobustCircle()

void vpMeEllipse::leastSquareRobustCircle ( const double &  um,
const double &  vm,
unsigned int &  k,
vpColVector w 
)
protected

Robust least squares method to compute the ellipse to which the vpMeSite belong, when we track a circle. Manage also the lists of vpMeSite and corresponding angles, and update the expected density of points.

Parameters
umHalf width of the image.
vmHalf height of the image.
kCount the number of tracked MEs.
wWeights computed by robust estimation.

Definition at line 648 of file vpMeEllipse.cpp.

References computeAngleOnEllipse(), computePointOnEllipse(), vpException::dimensionError, vpImagePoint::distance(), vpMeSite::get_ifloat(), vpMeSite::get_jfloat(), vpArray2D< Type >::getCols(), getParameters(), vpMeSite::getState(), m_K, vpMeTracker::m_meList, m_uc, m_vc, vpRobust::MEstimator(), vpMeSite::NO_SUPPRESSION, vpMeTracker::numberOfSignal(), vpImagePoint::set_uv(), vpRobust::setMinMedianAbsoluteDeviation(), vpMatrix::solveBySVD(), and vpRobust::TUKEY.

Referenced by leastSquareRobust().

◆ leastSquareRobustEllipse()

void vpMeEllipse::leastSquareRobustEllipse ( const double &  um,
const double &  vm,
unsigned int &  k,
vpColVector w 
)
protected

Robust least squares method to compute the ellipse to which the vpMeSite belong, when we track an ellipse. Manage also the lists of vpMeSite and corresponding angles, and update the expected density of points.

Parameters
umHalf width of the image.
vmHalf height of the image.
kCount the number of tracked MEs.
wWeights computed by robust estimation.

Definition at line 757 of file vpMeEllipse.cpp.

References computeAngleOnEllipse(), computePointOnEllipse(), vpException::dimensionError, vpImagePoint::distance(), vpMeSite::get_ifloat(), vpMeSite::get_jfloat(), vpArray2D< Type >::getCols(), getParameters(), vpMeSite::getState(), m_K, vpMeTracker::m_meList, m_uc, m_vc, vpRobust::MEstimator(), vpMeSite::NO_SUPPRESSION, vpMatrix::nullSpace(), vpMeTracker::numberOfSignal(), vpMatrixException::rankDeficient, vpImagePoint::set_uv(), vpRobust::setMinMedianAbsoluteDeviation(), and vpRobust::TUKEY.

Referenced by leastSquareRobust().

◆ numberOfSignal()

unsigned int vpMeTracker::numberOfSignal ( )
inherited

◆ outOfImage() [1/2]

bool vpMeTracker::outOfImage ( const vpImagePoint iP,
int  border,
int  nrows,
int  ncols 
)
inherited

Check if a pixel i,j is out of the image.

Parameters
[in]iP: Pixel coordinates.
[in]border: Number of pixels along the image border to exclude. When border is set to 0, consider the complete image.
[in]nrows,ncols: Size of the image.
Returns
true when the pixel is inside the image minus the border size, false otherwise.

Definition at line 174 of file vpMeTracker.cpp.

References vpImagePoint::get_i(), vpImagePoint::get_j(), and vpMath::round().

◆ outOfImage() [2/2]

bool vpMeTracker::outOfImage ( int  i,
int  j,
int  border,
int  nrows,
int  ncols 
)
inherited

Check if a pixel i,j is out of the image.

Parameters
[in]i,j: Pixel coordinates.
[in]border: Number of pixels along the image border to exclude. When border is set to 0, consider the complete image.
[in]nrows,ncols: Size of the image.
Returns
true when the pixel is inside the image minus the border size, false otherwise.

Definition at line 166 of file vpMeTracker.cpp.

Referenced by vpMeNurbs::localReSample(), plugHoles(), vpMeNurbs::sample(), sample(), vpMeLine::sample(), vpMeLine::seekExtremities(), and vpMeNurbs::seekExtremities().

◆ plugHoles()

unsigned int vpMeEllipse::plugHoles ( const vpImage< unsigned char > &  I)
protected

◆ printParameters()

void vpMeEllipse::printParameters ( ) const

Print the parameters $ K = {K_0, ..., K_5} $, the coordinates of the ellipse center, the normalized moments, and the A, B, E parameters.

Definition at line 266 of file vpMeEllipse.cpp.

References vpMath::deg(), m_a, m_b, m_e, m_K, m_n02, m_n11, m_n20, m_uc, m_vc, and vpColVector::t().

◆ reset()

void vpMeTracker::reset ( )
inherited

Reset the tracker by removing all the moving edges.

Definition at line 74 of file vpMeTracker.cpp.

References vpMeTracker::m_meList, and vpMeTracker::m_nGoodElement.

Referenced by vpMeTracker::~vpMeTracker().

◆ sample()

void vpMeEllipse::sample ( const vpImage< unsigned char > &  I,
bool  doNotTrack = false 
)
protectedvirtual

◆ setDisplay()

◆ setEndpoints()

void vpMeEllipse::setEndpoints ( const vpImagePoint pt1,
const vpImagePoint pt2 
)
inline

Set the two endpoints of the ellipse arc when an arc is tracked.

Definition at line 314 of file vpMeEllipse.h.

◆ setInitRange()

void vpMeTracker::setInitRange ( const unsigned int &  r)
inlineinherited

Set the initial range.

Parameters
r: initial range.

Definition at line 239 of file vpMeTracker.h.

◆ setMask()

virtual void vpMeTracker::setMask ( const vpImage< bool > &  mask)
inlinevirtualinherited

Set the mask.

Parameters
mask: Mask.

Definition at line 246 of file vpMeTracker.h.

◆ setMaskCandidates()

virtual void vpMeTracker::setMaskCandidates ( const vpImage< bool > *  maskCandidates)
inlinevirtualinherited

Set the mask of candidates points for initialization.

Parameters
maskCandidates: Pointer towards the mask of candidates points for initialization.

Definition at line 253 of file vpMeTracker.h.

◆ setMe()

◆ setMeList()

void vpMeTracker::setMeList ( const std::list< vpMeSite > &  meList)
inlineinherited

Set the list of moving edges.

Parameters
meList: List of Moving Edges.

Definition at line 267 of file vpMeTracker.h.

◆ setThresholdRobust()

void vpMeEllipse::setThresholdRobust ( double  threshold)
inline

Set the threshold for the weights in the robust estimation of the ellipse parameters. If the weight of a point is below this threshold, this one is removed from the list of tracked meSite. Value must be between 0 (never rejected) and 1 (always rejected).

Parameters
threshold: The new value of the threshold.

Definition at line 329 of file vpMeEllipse.h.

◆ totalNumberOfSignal()

unsigned int vpMeTracker::totalNumberOfSignal ( )
inherited

Return the total number of moving-edges.

Definition at line 103 of file vpMeTracker.cpp.

References vpMeTracker::m_meList.

◆ track()

void vpMeEllipse::track ( const vpImage< unsigned char > &  I)

Track a set of MEs along an ellipse or a circle. The number of valid tracked MEs is obtained from getNumberOfGoodPoints().

Track the ellipse in the image I.

Parameters
I: Image in which the ellipse appears.
Examples
trackMeCircle.cpp, trackMeEllipse.cpp, and tutorial-me-ellipse-tracker.cpp.

Definition at line 1244 of file vpMeEllipse.cpp.

References computeAngleOnEllipse(), computePointOnEllipse(), leastSquareRobust(), m_a, m_alpha1, m_alpha2, m_arcEpsilon, m_b, m_iP1, m_iP2, m_m00, m_numberOfGoodPoints, m_trackArc, vpTrackingException::notEnoughPointError, plugHoles(), sample(), vpMeTracker::track(), and updateTheta().

Referenced by initTracking().

◆ updateTheta()

void vpMeEllipse::updateTheta ( )
protected

Compute the $ theta $ angle for each vpMeSite.

Note
The $ theta $ angle is useful during the tracking part.

Definition at line 100 of file vpMeEllipse.cpp.

References computeTheta(), vpMeSite::m_alpha, vpMeSite::m_ifloat, vpMeSite::m_jfloat, vpMeTracker::m_meList, and vpImagePoint::set_ij().

Referenced by track().

Member Data Documentation

◆ cP

◆ cPAvailable

bool vpTracker::cPAvailable
inherited

Flag used to indicate if the feature parameters cP expressed in the camera frame are available.

Definition at line 79 of file vpTracker.h.

Referenced by vpTracker::init(), and vpTracker::operator=().

◆ m_a

double vpMeEllipse::m_a
protected

◆ m_alpha1

double vpMeEllipse::m_alpha1
protected

The angle $ \alpha_1 \in [-\pi;\pi] $ on the ellipse corresponding to the first endpoint. Its value is 0 for tracking a complete ellipse

Definition at line 432 of file vpMeEllipse.h.

Referenced by display(), initTracking(), leastSquareRobust(), plugHoles(), sample(), and track().

◆ m_alpha2

double vpMeEllipse::m_alpha2
protected

The angle $ \alpha_2 \in [\alpha_1;\alpha_1+2\pi]$ on the ellipse corresponding to the second endpoint. Its value is $ 2 \pi $ for tracking a complete ellipse

Definition at line 437 of file vpMeEllipse.h.

Referenced by display(), initTracking(), leastSquareRobust(), plugHoles(), sample(), track(), and vpMeEllipse().

◆ m_alphamax

double vpMeEllipse::m_alphamax
protected

The highest angle $ \alpha_{max} \in [\alpha_{min};\alpha_2]$ of the current moving edge list

Definition at line 457 of file vpMeEllipse.h.

Referenced by leastSquareRobust(), and plugHoles().

◆ m_alphamin

double vpMeEllipse::m_alphamin
protected

The smallest angle $ \alpha_{min} \in [\alpha_1;\alpha_2]$ of the current moving edge list

Definition at line 453 of file vpMeEllipse.h.

Referenced by leastSquareRobust(), and plugHoles().

◆ m_angleList

std::list<double> vpMeEllipse::m_angleList
protected

Stores the value in increasing order of the $ alpha $ angle on the ellipse for each vpMeSite.

Definition at line 443 of file vpMeEllipse.h.

Referenced by leastSquareRobust(), plugHoles(), sample(), and ~vpMeEllipse().

◆ m_arcEpsilon

double vpMeEllipse::m_arcEpsilon
protected

Epsilon value used to check if arc angles are the same.

Definition at line 477 of file vpMeEllipse.h.

Referenced by initTracking(), and track().

◆ m_b

double vpMeEllipse::m_b
protected

◆ m_ce

double vpMeEllipse::m_ce
protected

Value of cos(e).

Definition at line 439 of file vpMeEllipse.h.

Referenced by computeAbeFromNij(), computeAngleOnEllipse(), computeNijFromAbe(), and computePointOnEllipse().

◆ m_e

double vpMeEllipse::m_e
protected

$ e \in [-\pi/2;\pi/2] $ is the angle made by the major axis and the u axis of the image frame $ (u,v) $.

Definition at line 419 of file vpMeEllipse.h.

Referenced by computeAbeFromNij(), computeAngleOnEllipse(), display(), and printParameters().

◆ m_expectedDensity

unsigned int vpMeEllipse::m_expectedDensity
protected

Expected number of points to track along the ellipse.

Definition at line 469 of file vpMeEllipse.h.

Referenced by leastSquareRobust(), and sample().

◆ m_init_range

unsigned int vpMeTracker::m_init_range
protectedinherited

Initial range.

Definition at line 315 of file vpMeTracker.h.

Referenced by vpMeTracker::initTracking(), vpMeTracker::operator=(), and vpMeTracker::vpMeTracker().

◆ m_iP1

vpImagePoint vpMeEllipse::m_iP1
protected

The coordinates of the first endpoint of the ellipse arc corresponding to angle $ \alpha_1 $

Definition at line 424 of file vpMeEllipse.h.

Referenced by initTracking(), track(), and vpMeEllipse().

◆ m_iP2

vpImagePoint vpMeEllipse::m_iP2
protected

The coordinates of the second endpoint of the ellipse arc corresponding to angle $ \alpha_2 $

Definition at line 428 of file vpMeEllipse.h.

Referenced by initTracking(), track(), and vpMeEllipse().

◆ m_iPc

vpImagePoint vpMeEllipse::m_iPc
protected

The coordinates of the ellipse center.

Definition at line 411 of file vpMeEllipse.h.

Referenced by display(), getParameters(), and initTracking().

◆ m_K

vpColVector vpMeEllipse::m_K
protected

Parameters of the ellipse satisfying the homogeneous equation :

\[ K_0 u^2 + K_1 v^2 + 2K_2 uv + 2K_3u + 2K_4v + K5 = 0 \]

Definition at line 409 of file vpMeEllipse.h.

Referenced by computeKiFromNij(), computeTheta(), getParameters(), leastSquare(), leastSquareRobustCircle(), leastSquareRobustEllipse(), printParameters(), and vpMeEllipse().

◆ m_m00

double vpMeEllipse::m_m00
protected

Ellipse area.

Definition at line 445 of file vpMeEllipse.h.

Referenced by track().

◆ m_mask

const vpImage<bool>* vpMeTracker::m_mask
protectedinherited

Mask used to disable tracking on a part of image.

Definition at line 319 of file vpMeTracker.h.

Referenced by plugHoles(), sample(), vpMeLine::sample(), vpMeLine::seekExtremities(), and vpMeTracker::track().

◆ m_maskCandidates

const vpImage<bool>* vpMeTracker::m_maskCandidates
protectedinherited

Mask used to determine candidate points for initialization in an image.

Definition at line 321 of file vpMeTracker.h.

Referenced by sample(), vpMeLine::sample(), and vpMeLine::seekExtremities().

◆ m_me

◆ m_meList

◆ m_n02

double vpMeEllipse::m_n02
protected

Second order centered and normalized moments $ n_{02} $.

Definition at line 467 of file vpMeEllipse.h.

Referenced by computeAbeFromNij(), computeKiFromNij(), computeNijFromAbe(), getParameters(), initTracking(), and printParameters().

◆ m_n11

double vpMeEllipse::m_n11
protected

Second order centered and normalized moments $ n_{11} $.

Definition at line 465 of file vpMeEllipse.h.

Referenced by computeAbeFromNij(), computeKiFromNij(), computeNijFromAbe(), getParameters(), initTracking(), and printParameters().

◆ m_n20

double vpMeEllipse::m_n20
protected

Second order centered and normalized moments $ n_{20} $.

Definition at line 463 of file vpMeEllipse.h.

Referenced by computeAbeFromNij(), computeKiFromNij(), computeNijFromAbe(), getParameters(), initTracking(), and printParameters().

◆ m_nGoodElement

int vpMeTracker::m_nGoodElement
protectedinherited

Number of good moving-edges that are tracked.

Definition at line 317 of file vpMeTracker.h.

Referenced by vpMeTracker::initTracking(), vpMeTracker::operator=(), vpMeTracker::reset(), vpMeTracker::track(), and vpMeTracker::vpMeTracker().

◆ m_numberOfGoodPoints

unsigned int vpMeEllipse::m_numberOfGoodPoints
protected

Number of correct points tracked along the ellipse.

Definition at line 471 of file vpMeEllipse.h.

Referenced by track().

◆ m_se

double vpMeEllipse::m_se
protected

Value of sin(e).

Definition at line 441 of file vpMeEllipse.h.

Referenced by computeAbeFromNij(), computeAngleOnEllipse(), computeNijFromAbe(), and computePointOnEllipse().

◆ m_selectDisplay

◆ m_thresholdWeight

double vpMeEllipse::m_thresholdWeight
protected

Threshold on the weights for the robust least square.

Definition at line 448 of file vpMeEllipse.h.

Referenced by leastSquareRobust().

◆ m_trackArc

bool vpMeEllipse::m_trackArc
protected

Track an arc of ellipse/circle (true) or a complete one (false).

Definition at line 475 of file vpMeEllipse.h.

Referenced by initTracking(), leastSquareRobust(), sample(), and track().

◆ m_trackCircle

bool vpMeEllipse::m_trackCircle
protected

Track a circle (true) or an ellipse (false).

Definition at line 473 of file vpMeEllipse.h.

Referenced by initTracking(), leastSquare(), and leastSquareRobust().

◆ m_uc

double vpMeEllipse::m_uc
protected

◆ m_vc

double vpMeEllipse::m_vc
protected

◆ p