Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches

#include <vpMeNurbs.h>

Inheritance diagram for vpMeNurbs:

Public Member Functions

 vpMeNurbs ()
 vpMeNurbs (const vpMeNurbs &menurbs)
void setNbControlPoints (unsigned int nb_point)
void setEnableCannyDetection (const bool enable_canny)
void setCannyThreshold (float th1, float th2)
void initTracking (const vpImage< unsigned char > &I)
void initTracking (const vpImage< unsigned char > &I, const std::list< vpImagePoint > &ptList)
void track (const vpImage< unsigned char > &I)
virtual void sample (const vpImage< unsigned char > &I, bool doNotTrack=false)
void reSample (const vpImage< unsigned char > &I)
void updateDelta ()
void seekExtremities (const vpImage< unsigned char > &I)
void seekExtremitiesCanny (const vpImage< unsigned char > &I)
void suppressPoints ()
void supressNearPoints ()
void localReSample (const vpImage< unsigned char > &I)
vpNurbs getNurbs () const
void display (const vpImage< unsigned char > &I, const vpColor &color, unsigned int thickness=1)
Public Member Functions Inherited from vpTracker
vpColVector get_p () const
vpColVector get_cP () const

Static Public Member Functions

static void display (const vpImage< unsigned char > &I, vpNurbs &n, const vpColor &color=vpColor::green, unsigned int thickness=1)
static void display (const vpImage< vpRGBa > &I, vpNurbs &n, 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

vpNurbs nurbs
Public Attributes Inherited from vpTracker
vpColVector p
vpColVector cP
bool cPAvailable

Protected Attributes

Protected Attributes Inherited from vpMeTracker
std::list< vpMeSitem_meList
vpMem_me
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)
vpMegetMe ()
std::list< vpMeSite > & getMeList ()
std::list< vpMeSitegetMeList () const
int getNbPoints () const
void init ()
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)
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 in an image a edge defined by a Nurbs.

The advantage of this class is that it enables to track an edge whose equation is not known in advance. At each iteration, the Nurbs corresponding to the edge is computed.

It is possible to have a direct access to the nurbs. It is indeed a public parameter.

The code below shows how to use this class.

#include <visp3/core/vpImage.h>
#include <visp3/core/vpImagePoint.h>
#include <visp3/me/vpMeNurbs.h>
#ifdef ENABLE_VISP_NAMESPACE
using namespace VISP_NAMESPACE_NAME;
#endif
int main()
{
// Fill the image with a black rectangle
I = 0u;
for (int i = 100; i < 180; i ++) {
for (int j = 0; j < 320; j ++) {
I[i][j] = 255;
}
}
// Set the moving-edges tracker parameters
vpMe me;
me.setRange(25);
me.setThreshold(20);
me.setSampleStep(10);
// Initialize the moving-edges tracker parameters
vpMeNurbs meNurbs;
meNurbs.setNbControlPoints(4);
meNurbs.setMe(&me);
// Initialize the location of the edge to track (here a horizontal line
std::list<vpImagePoint> ipList; //List of points belonging to the edge
ipList.push_back(vpImagePoint(110,119));
ipList.push_back(vpImagePoint(140,119));
ipList.push_back(vpImagePoint(160,119));
ipList.push_back(vpImagePoint(170,119));
meNurbs.initTracking(I, ipList);
while ( 1 )
{
// ... Here the code to read or grab the next image.
// Track the line.
meNurbs.track(I);
}
return 0;
}
Definition of the vpImage class member functions.
Definition vpImage.h:131
void track(const vpImage< unsigned char > &I)
void initTracking(const vpImage< unsigned char > &I)
void setNbControlPoints(unsigned int nb_point)
Definition vpMeNurbs.h:184
void setMe(vpMe *me)
void setPointsToTrack(const int &points_to_track)
Definition vpMe.h:431
void setRange(const unsigned int &range)
Definition vpMe.h:438
void setLikelihoodThresholdType(const vpLikelihoodThresholdType likelihood_threshold_type)
Definition vpMe.h:531
void setThreshold(const double &threshold)
Definition vpMe.h:489
void setSampleStep(const double &sample_step)
Definition vpMe.h:445
@ NORMALIZED_THRESHOLD
Definition vpMe.h:154
Note
It is possible to display the nurbs as an overlay. For that you must use the display function of the class vpMeNurbs.
In case of an edge which is not smooth, it can be interesting to use the canny detection to find the extremities. In this case, use the method setEnableCannyDetection to enable it.
Warning
: This function requires OpenCV.

Tutorials & Examples

Tutorials
If you are interested in using a ME tracker in your application, you may have a look at:

Examples
trackMeNurbs.cpp.

Definition at line 139 of file vpMeNurbs.h.

Constructor & Destructor Documentation

◆ vpMeNurbs() [1/2]

vpMeNurbs::vpMeNurbs ( )

Basic constructor that calls the constructor of the class vpMeTracker.

Definition at line 186 of file vpMeNurbs.cpp.

References nurbs.

Referenced by vpMeNurbs().

◆ vpMeNurbs() [2/2]

vpMeNurbs::vpMeNurbs ( const vpMeNurbs & menurbs)

Copy constructor.

Definition at line 191 of file vpMeNurbs.cpp.

References nurbs, vpMeNurbs(), and vpMeTracker::vpMeTracker().

Member Function Documentation

◆ display() [1/6]

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

Display edge.

Warning
To effectively display the edge a call to vpDisplay::flush() is needed.
Parameters
I: Image in which the edge appears.
color: Color of the displayed line.
thickness: Drawings thickness.
Examples
trackMeNurbs.cpp.

Definition at line 860 of file vpMeNurbs.cpp.

References display(), and nurbs.

Referenced by display().

◆ display() [2/6]

void vpMeNurbs::display ( const vpImage< unsigned char > & I,
vpNurbs & n,
const vpColor & color = vpColor::green,
unsigned int thickness = 1 )
static

Display of a moving nurbs.

Parameters
I: The image used as background.
n: Nurbs to display
color: Color used to display the nurbs.
thickness: Drawings thickness.

Definition at line 1079 of file vpMeNurbs.cpp.

References vpNurbs::computeCurvePoint(), and vpDisplay::displayCross().

◆ display() [3/6]

void vpMeNurbs::display ( const vpImage< vpRGBa > & I,
vpNurbs & n,
const vpColor & color = vpColor::green,
unsigned int thickness = 1 )
static

Display of a moving nurbs.

Parameters
I: The image used as background.
n: Nurbs to display
color: Color used to display the nurbs.
thickness: Drawings thickness.

Definition at line 1090 of file vpMeNurbs.cpp.

References vpNurbs::computeCurvePoint(), and vpDisplay::displayCross().

◆ display() [4/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
[in]I: The image.

Definition at line 252 of file vpMeTracker.cpp.

References vpMeSite::display(), and m_meList.

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

◆ display() [5/6]

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

Displays the status of moving edge sites

Parameters
[in]I: The image.
[in]w: vector
[in]index_w: index

Definition at line 270 of file vpMeTracker.cpp.

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

◆ display() [6/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
[in]I: The image.

Definition at line 261 of file vpMeTracker.cpp.

References vpMeSite::display(), and m_meList.

◆ 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.

References cP.

◆ 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.

References p.

◆ getMe()

vpMe * vpMeTracker::getMe ( )
inlineinherited

Return the moving edges initialisation parameters.

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

Definition at line 153 of file vpMeTracker.h.

References m_me.

◆ 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.

References m_meList.

◆ 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.

References m_meList.

◆ 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.

References m_nGoodElement.

◆ getNurbs()

vpNurbs vpMeNurbs::getNurbs ( ) const
inline

Gets the nurbs;

Definition at line 306 of file vpMeNurbs.h.

References nurbs.

◆ init()

BEGIN_VISP_NAMESPACE void vpMeTracker::init ( )
inherited

Initialize the tracker.

Definition at line 48 of file vpMeTracker.cpp.

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

Referenced by vpMeTracker(), and vpMeTracker().

◆ initTracking() [1/2]

void vpMeNurbs::initTracking ( const vpImage< unsigned char > & I)

Initialization of the tracking. Ask the user to click left on several points along the edge to track and click right at the end.

Parameters
I: Image in which the edge appears.
Examples
trackMeNurbs.cpp.

Definition at line 204 of file vpMeNurbs.cpp.

References vpMouseButton::button1, vpMouseButton::button3, vpDisplay::displayCross(), vpDisplay::flush(), vpDisplay::getClick(), vpColor::green, initTracking(), and vpException::notInitialized.

Referenced by initTracking().

◆ initTracking() [2/2]

void vpMeNurbs::initTracking ( const vpImage< unsigned char > & I,
const std::list< vpImagePoint > & ptList )

Initialization of the tracking. The Nurbs is initialized thanks to the list of vpImagePoint.

Parameters
I: Image in which the edge appears.
ptList: List of point to initialize the Nurbs.

Definition at line 226 of file vpMeNurbs.cpp.

References vpMeTracker::initTracking(), nurbs, sample(), and track().

◆ inMask()

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
[in]mask: Mask 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.
[in]i: Pixel coordinate along the rows.
[in]j: Pixel coordinate along the columns.

Definition at line 294 of file vpMeTracker.h.

References inRoiMask().

◆ 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
[in]meMaskCandidates: Mask 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.
[in]i: ME coordinate along the rows.
[in]j: ME coordinate along the columns.

Definition at line 113 of file vpMeTracker.cpp.

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

Referenced by vpMeLine::plugHoles(), vpMeEllipse::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
[in]mask: Mask 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.
[in]i: Pixel coordinate along the rows.
[in]j: Pixel coordinate along the columns.

Definition at line 103 of file vpMeTracker.cpp.

References vpImage< Type >::getValue().

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

◆ localReSample()

void vpMeNurbs::localReSample ( const vpImage< unsigned char > & I)

Resample a part of the edge if two vpMeSite are too far from each other. In this case the method try to initialize any vpMeSite between the two points.

Parameters
I: Image in which the edge appears.

Definition at line 703 of file vpMeNurbs.cpp.

References vpMeSite::getState(), vpMeSite::init(), vpMeSite::m_ifloat, vpMeSite::m_jfloat, vpMeTracker::m_me, vpMeTracker::m_meList, vpMeTracker::m_selectDisplay, vpMath::maximum(), vpMeSite::NO_SUPPRESSION, vpMeTracker::numberOfSignal(), nurbs, vpMeTracker::outOfImage(), vpMeSite::setDisplay(), vpMath::sqr(), vpImagePoint::sqrDistance(), vpMeSite::sqrDistance(), and vpMeSite::track().

Referenced by track().

◆ 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: Image number of rows.
[in]ncols: Image number of cols.
Returns
true when the pixel is inside the image minus the border size, false otherwise.

Definition at line 172 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: Pixel coordinate along the image rows.
[in]j: Pixel coordinates along the image columns.
[in]border: Number of pixels along the image border to exclude. When border is set to 0, consider the complete image.
[in]nrows: Image number of rows.
[in]ncols: Image number of cols.
Returns
true when the pixel is inside the image minus the border size, false otherwise.

Definition at line 164 of file vpMeTracker.cpp.

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

◆ reSample()

void vpMeNurbs::reSample ( const vpImage< unsigned char > & I)

Resample the edge if the number of sample is less than 70% of the expected value.

Note
The expected value is computed thanks to the length of the nurbs and the parameter which indicates the number of pixel between two points (vpMe::sample_step).
Parameters
I: Image in which the edge appears.

Definition at line 692 of file vpMeNurbs.cpp.

References vpMeTracker::initTracking(), vpMeTracker::m_me, vpMeTracker::numberOfSignal(), and sample().

Referenced by track().

◆ reset()

void vpMeTracker::reset ( )
inherited

Reset the tracker by removing all the moving edges.

Definition at line 73 of file vpMeTracker.cpp.

References m_meList, and m_nGoodElement.

Referenced by ~vpMeTracker().

◆ sample()

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

Construct a list of vpMeSite moving edges at a particular sampling step between the two extremities of the nurbs.

Parameters
I: Image in which the edge appears.
doNotTrack: Inherited parameter, not used.

Implements vpMeTracker.

Definition at line 236 of file vpMeNurbs.cpp.

References vpMeSite::init(), vpMeTracker::m_me, vpMeTracker::m_meList, vpMeTracker::m_selectDisplay, nurbs, vpMeTracker::outOfImage(), vpMeSite::setDisplay(), vpMath::sqr(), and vpImagePoint::sqrDistance().

Referenced by initTracking(), and reSample().

◆ seekExtremities()

void vpMeNurbs::seekExtremities ( const vpImage< unsigned char > & I)

◆ seekExtremitiesCanny()

void vpMeNurbs::seekExtremitiesCanny ( const vpImage< unsigned char > & I)

Seek the extremities of the edge thanks to a canny edge detection. The edge detection enable to find the points belonging to the edge. The any vpMeSite are initialized at this points.

This method is useful when the edge is not smooth.

Note
To use the canny detection, OpenCV has to be installed.
Parameters
I: Image in which the edge appears.

Definition at line 431 of file vpMeNurbs.cpp.

References vpImageFilter::canny(), vpImageTools::crop(), vpDisplay::displayPoint(), vpDisplay::displayRectangle(), vpImagePoint::get_i(), vpImagePoint::get_j(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), vpColor::green, vpMeSite::init(), vpMeSite::m_ifloat, vpMeSite::m_jfloat, vpMeTracker::m_me, vpMeTracker::m_meList, vpMeTracker::m_selectDisplay, vpMath::maximum(), nurbs, vpColor::orange, vpMeSite::setDisplay(), vpMath::sqr(), vpMeSite::sqrDistance(), and vpMeSite::track().

Referenced by track().

◆ setCannyThreshold()

void vpMeNurbs::setCannyThreshold ( float th1,
float th2 )
inline

Enables to set the two thresholds use by the canny detection.

Parameters
th1: The first threshold;
th2: The second threshold;

Definition at line 200 of file vpMeNurbs.h.

◆ setDisplay()

void vpMeTracker::setDisplay ( vpMeSite::vpMeSiteDisplayType select)
inlineinherited

Set type of moving-edges display.

Parameters
select: Display type selector.
Examples
servoAfma6Line2DCamVelocity.cpp, trackMeCircle.cpp, trackMeEllipse.cpp, trackMeLine.cpp, trackMeNurbs.cpp, tutorial-me-ellipse-tracker.cpp, and tutorial-me-line-tracker.cpp.

Definition at line 234 of file vpMeTracker.h.

References m_selectDisplay.

◆ setEnableCannyDetection()

void vpMeNurbs::setEnableCannyDetection ( const bool enable_canny)
inline

Enables or disables the canny detection used during the extremities search.

Parameters
enable_canny: if true it enables the canny detection.

Definition at line 192 of file vpMeNurbs.h.

◆ setMask()

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

Set the mask.

Parameters
mask: Mask.

Definition at line 241 of file vpMeTracker.h.

References m_mask.

◆ setMaskCandidates()

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

Set the mask of candidates points for initialization.

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

Definition at line 248 of file vpMeTracker.h.

References m_maskCandidates.

◆ setMe()

void vpMeTracker::setMe ( vpMe * me)
inlineinherited

Set the moving edges initialisation parameters.

Parameters
[in]me: Moving Edges.
Examples
servoAfma62DhalfCamVelocity.cpp, servoAfma6Line2DCamVelocity.cpp, trackMeCircle.cpp, trackMeEllipse.cpp, trackMeLine.cpp, trackMeNurbs.cpp, tutorial-me-ellipse-tracker.cpp, and tutorial-me-line-tracker.cpp.

Definition at line 255 of file vpMeTracker.h.

References m_me.

◆ setMeList()

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

Set the list of moving edges.

Parameters
[in]meList: List of Moving Edges.

Definition at line 262 of file vpMeTracker.h.

References m_meList.

◆ setNbControlPoints()

void vpMeNurbs::setNbControlPoints ( unsigned int nb_point)
inline

Sets the number of control points used to compute the Nurbs.

Parameters
nb_point: The number of control points used to compute the Nurbs.
Examples
trackMeNurbs.cpp.

Definition at line 184 of file vpMeNurbs.h.

◆ suppressPoints()

void vpMeNurbs::suppressPoints ( )

Suppression of the points which:

  • belong no more to the edge.
  • which are to closed to another point.

Definition at line 271 of file vpMeNurbs.cpp.

References vpMeTracker::m_meList, and vpMeSite::NO_SUPPRESSION.

Referenced by track().

◆ supressNearPoints()

void vpMeNurbs::supressNearPoints ( )

Suppress vpMeSites if they are too close to each other.

The goal is to keep the order of the vpMeSites in the list.

Definition at line 787 of file vpMeNurbs.cpp.

References vpMeTracker::m_me, vpMeTracker::m_meList, vpMeSite::setState(), vpMath::sqr(), vpMeSite::sqrDistance(), and vpMeSite::TOO_NEAR.

Referenced by track().

◆ totalNumberOfSignal()

unsigned int vpMeTracker::totalNumberOfSignal ( )
inherited

Return the total number of moving-edges.

Definition at line 101 of file vpMeTracker.cpp.

References m_meList.

◆ track()

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

◆ updateDelta()

void vpMeNurbs::updateDelta ( )

Set the alpha value (normal to the edge at this point) of the different vpMeSite to a value computed thanks to the nurbs.

Definition at line 284 of file vpMeNurbs.cpp.

References vpImagePoint::distance(), vpMeTracker::m_meList, and nurbs.

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 init(), operator=(), vpTracker(), and vpTracker().

◆ m_mask

const vpImage<bool>* vpMeTracker::m_mask
protectedinherited

Mask used to disable tracking on a part of image.

Definition at line 312 of file vpMeTracker.h.

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

◆ m_maskCandidates

const vpImage<bool>* vpMeTracker::m_maskCandidates
protectedinherited

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

Definition at line 314 of file vpMeTracker.h.

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

◆ m_me

◆ m_meList

◆ m_nGoodElement

int vpMeTracker::m_nGoodElement
protectedinherited

Number of good moving-edges that are tracked.

Definition at line 310 of file vpMeTracker.h.

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

◆ m_selectDisplay

◆ nurbs

vpNurbs vpMeNurbs::nurbs

The Nurbs which represents the tracked edge.

Definition at line 147 of file vpMeNurbs.h.

Referenced by display(), getNurbs(), initTracking(), localReSample(), sample(), seekExtremities(), seekExtremitiesCanny(), track(), updateDelta(), vpMeNurbs(), and vpMeNurbs().

◆ p

vpColVector vpTracker::p
inherited

Feature coordinates expressed in the image plane p. They correspond to 2D normalized coordinates expressed in meters.

Definition at line 69 of file vpTracker.h.

Referenced by vpCircle::computeIntersectionPoint(), vpMeterPixelConversion::convertEllipse(), vpMeterPixelConversion::convertEllipse(), vpMeterPixelConversion::convertEllipse(), vpMeterPixelConversion::convertEllipse(), vpCircle::display(), vpCircle::display(), vpCylinder::display(), vpCylinder::display(), vpLine::display(), vpLine::display(), vpPoint::display(), vpPoint::display(), vpSphere::display(), vpSphere::display(), vpFeatureDisplay::displayEllipse(), vpFeatureDisplay::displayEllipse(), vpPose::displayModel(), vpPose::displayModel(), vpImageDraw::drawFrame(), vpImageDraw::drawFrame(), vpCircle::get_mu02(), vpSphere::get_mu02(), vpCircle::get_mu11(), vpSphere::get_mu11(), vpCircle::get_mu20(), vpSphere::get_mu20(), vpCircle::get_n02(), vpSphere::get_n02(), vpCircle::get_n11(), vpSphere::get_n11(), vpCircle::get_n20(), vpSphere::get_n20(), get_p(), vpPoint::get_w(), vpCircle::get_x(), vpPoint::get_x(), vpSphere::get_x(), vpCircle::get_y(), vpPoint::get_y(), vpSphere::get_y(), vpLine::getRho(), vpCylinder::getRho1(), vpCylinder::getRho2(), vpLine::getTheta(), vpCylinder::getTheta1(), vpCylinder::getTheta2(), vpCircle::init(), vpCylinder::init(), vpLine::init(), vpMeTracker::init(), vpPoint::init(), vpSphere::init(), vpCircle::operator=(), operator=(), vpForwardProjection::print(), vpPose::printPoint(), vpForwardProjection::project(), vpCircle::projection(), vpCylinder::projection(), vpForwardProjection::projection(), vpLine::projection(), vpPoint::projection(), vpSphere::projection(), vpPoint::set_w(), vpPoint::set_x(), vpPoint::set_y(), vpLine::setRho(), vpLine::setTheta(), vpTracker(), and vpTracker().