Visual Servoing Platform  version 3.3.0
vpFeatureMomentCentered Class Reference

#include <vpFeatureMomentCentered.h>

+ Inheritance diagram for vpFeatureMomentCentered:

Public Types

enum  { FEATURE_ALL = 0xffff }
 
enum  vpBasicFeatureDeallocatorType { user, vpServo }
 

Public Member Functions

 vpFeatureMomentCentered (vpMomentDatabase &moments, double A, double B, double C, vpFeatureMomentDatabase *featureMoments=NULL)
 
void compute_interaction ()
 
vpMatrix interaction (unsigned int select_one, unsigned int select_two) const
 
const char * momentName () const
 
const char * name () const
 
Inherited functionalities from vpFeatureMoment
vpBasicFeatureduplicate () const
 
void display (const vpCameraParameters &cam, const vpImage< unsigned char > &I, const vpColor &color=vpColor::green, unsigned int thickness=1) const
 
void display (const vpCameraParameters &cam, const vpImage< vpRGBa > &I, const vpColor &color=vpColor::green, unsigned int thickness=1) const
 
int getDimension (unsigned int select=FEATURE_ALL) const
 
void init (void)
 
vpMatrix interaction (unsigned int select=FEATURE_ALL)
 
void linkTo (vpFeatureMomentDatabase &featureMoments)
 
void print (unsigned int select=FEATURE_ALL) const
 
virtual void printDependencies (std::ostream &os) const
 
void update (double A, double B, double C)
 

Static Public Attributes

static const unsigned int FEATURE_LINE [32]
 

Protected Member Functions

vpMatrix compute_Lmu_pq (const unsigned int &p, const unsigned int &q, const double &xg, const double &yg, const vpMatrix &L_xg, const vpMatrix &L_yg, const vpMomentBasic &m, const vpFeatureMomentBasic &feature_moment_m) const
 
const vpMomentgetMoment () const
 

Protected Attributes

unsigned int order
 
const vpMomentmoment
 
vpMomentDatabasemoments
 
vpFeatureMomentDatabasefeatureMomentsDataBase
 
std::vector< vpMatrixinteraction_matrices
 
double A
 
double B
 
double C
 
char _name [255]
 
vpColVector s
 
unsigned int dim_s
 
bool * flags
 
unsigned int nbParameters
 

Friends

VISP_EXPORT std::ostream & operator<< (std::ostream &os, const vpFeatureMomentCentered &v)
 

Inherited functionalities from vpBasicFeature

vpBasicFeatureDeallocatorType deallocate
 
void resetFlags ()
 
unsigned int dimension_s ()
 
virtual vpColVector error (const vpBasicFeature &s_star, unsigned int select=FEATURE_ALL)
 
vpColVector get_s (unsigned int select=FEATURE_ALL) const
 
vpBasicFeatureDeallocatorType getDeallocate ()
 
virtual double operator[] (unsigned int i) const
 
void setDeallocate (vpBasicFeatureDeallocatorType d)
 
void setFlags ()
 
static unsigned int selectAll ()
 

Detailed Description

Functionality computation for centered moment feature. Computes the interaction matrix associated with vpMomentCentered.

The interaction matrix for the feature is defined in [Tahri05z], equation (17). This vpFeatureMoment, as well as it's corresponding moment primitive is double-indexed. The interaction matrix $ L_{\mu_{ij}} $ is obtained by calling vpFeatureMomentBasic::interaction (i,j) and is associated to $ \mu_{ij} $ obtained by vpFeatureMomentCentered::get (i,j).

vpFeatureMomentCentered computes interaction matrices all interaction matrices up to vpMomentObject::getOrder()-1.

Attention
The maximum order reached by vpFeatureMomentBasic is NOT the maximum order of the vpMomentObject, it is one unit smaller. For example if you define your vpMomentObject up to order n then vpFeatureMomentBasic will be able to compute interaction matrices up to order n-1 that is $ L_{m_{ij}} $ with $ i+j<=n-1 $.

This feature depends on:

Definition at line 77 of file vpFeatureMomentCentered.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
inherited
Enumerator
FEATURE_ALL 

Definition at line 81 of file vpBasicFeature.h.

◆ vpBasicFeatureDeallocatorType

Indicates who should deallocate the feature.

Enumerator
user 
vpServo 

Definition at line 87 of file vpBasicFeature.h.

Constructor & Destructor Documentation

◆ vpFeatureMomentCentered()

vpFeatureMomentCentered::vpFeatureMomentCentered ( vpMomentDatabase moments_,
double  A_,
double  B_,
double  C_,
vpFeatureMomentDatabase featureMoments = NULL 
)

Default constructor

Parameters
moments_: Database of moment primitives.
A_: First plane coefficient for a plane equation of the following type Ax+By+C=1/Z.
B_: Second plane coefficient for a plane equation of the following type Ax+By+C=1/Z.
C_: Third plane coefficient for a plane equation of the following type Ax+By+C=1/Z.
featureMoments: Database of features.

Definition at line 60 of file vpFeatureMomentCentered.cpp.

Member Function Documentation

◆ compute_interaction()

void vpFeatureMomentCentered::compute_interaction ( void  )
virtual

Interface to the interaction matrix computation for centered moments. Called internally. Calls compute_Lmu_pq() for main computation moments (upto order-1) Dependencies: Moment classes

Reimplemented from vpFeatureMoment.

Definition at line 143 of file vpFeatureMomentCentered.cpp.

◆ compute_Lmu_pq()

vpMatrix vpFeatureMomentCentered::compute_Lmu_pq ( const unsigned int &  p,
const unsigned int &  q,
const double &  xg,
const double &  yg,
const vpMatrix L_xg,
const vpMatrix L_yg,
const vpMomentBasic m,
const vpFeatureMomentBasic feature_moment_m 
) const
protected

Core computation of interaction matrix for moment m_pq

Core function for the interaction matrix computation for moment m_pq Given its dependent moment and interaction matrices, computes the interaction matrix of centred moments

Definition at line 86 of file vpFeatureMomentCentered.cpp.

◆ dimension_s()

unsigned int vpBasicFeature::dimension_s ( )
inlineinherited

Return the dimension of the feature vector $\bf s$.

Definition at line 109 of file vpBasicFeature.h.

◆ display() [1/2]

void vpFeatureMoment::display ( const vpCameraParameters cam,
const vpImage< unsigned char > &  I,
const vpColor color = vpColor::green,
unsigned int  thickness = 1 
) const
virtualinherited

Not implemented since visual representation of a moment doesn't often make sense.

Implements vpBasicFeature.

Definition at line 113 of file vpFeatureMoment.cpp.

◆ display() [2/2]

void vpFeatureMoment::display ( const vpCameraParameters cam,
const vpImage< vpRGBa > &  I,
const vpColor color = vpColor::green,
unsigned int  thickness = 1 
) const
virtualinherited

Not implemented since visual representation of a moment doesn't often make sense.

Implements vpBasicFeature.

Definition at line 127 of file vpFeatureMoment.cpp.

◆ duplicate()

vpBasicFeature * vpFeatureMoment::duplicate ( ) const
virtualinherited

Duplicates the feature into a vpGenericFeature harbouring the same properties. The resulting feature is of vpMomentGenericFeature type. While it still can compute interaction matrices and has acces to it's moment primitive, it has lost all precise information about its precise type and therefore cannot be used in a feature database.

Returns
The corresponding feature.

Implements vpBasicFeature.

Definition at line 219 of file vpFeatureMoment.cpp.

◆ error()

vpColVector vpBasicFeature::error ( const vpBasicFeature s_star,
unsigned int  select = FEATURE_ALL 
)
virtualinherited

◆ get_s()

vpColVector vpBasicFeature::get_s ( unsigned int  select = FEATURE_ALL) const
inherited

Get the feature vector $\bf s$.

Examples
servoAfma6Ellipse2DCamVelocity.cpp.

Definition at line 113 of file vpBasicFeature.cpp.

◆ getDeallocate()

vpBasicFeatureDeallocatorType vpBasicFeature::getDeallocate ( )
inlineinherited

Definition at line 122 of file vpBasicFeature.h.

◆ getDimension()

int vpFeatureMoment::getDimension ( unsigned int  select = FEATURE_ALL) const
inherited

Feature's dimension according to selection.

Definition at line 84 of file vpFeatureMoment.cpp.

◆ getMoment()

const vpMoment& vpFeatureMoment::getMoment ( ) const
inlineprotectedinherited

Definition at line 162 of file vpFeatureMoment.h.

◆ init()

void vpFeatureMoment::init ( void  )
virtualinherited

Initialize common parameters for moment features.

Implements vpBasicFeature.

Definition at line 55 of file vpFeatureMoment.cpp.

◆ interaction() [1/2]

vpMatrix vpFeatureMoment::interaction ( unsigned int  select = FEATURE_ALL)
virtualinherited

Retrieves the interaction matrix. No computation is done.

Parameters
select: Feature selector.
Returns
The corresponding interaction matrix.

There is no rule about the format of the feature selector. It may be different for different features. For example, for vpFeatureMomentBasic or vpFeatureMomentCentered features, select may refer to the $ (i,j) $ couple in the $ j \times order + i $ format, but for vpFeatureMomentCInvariant the selector allows to select couples $ (i,j,k,l...) $ in the following format: 1 << i

  • 1 << j + 1 << k + 1 << l.

Implements vpBasicFeature.

Definition at line 198 of file vpFeatureMoment.cpp.

◆ interaction() [2/2]

vpMatrix vpFeatureMomentCentered::interaction ( unsigned int  select_one,
unsigned int  select_two 
) const

Interaction matrix corresponding to $ \mu_{ij} $ moment

Parameters
select_one: first index (i)
select_two: second index (j)
Returns
Interaction matrix corresponding to the moment

Definition at line 72 of file vpFeatureMomentCentered.cpp.

◆ linkTo()

void vpFeatureMoment::linkTo ( vpFeatureMomentDatabase featureMoments)
inherited

Links the feature to the feature's database. NB: The feature's database is different from the moment's database.

Parameters
featureMoments: database in which the moment features are stored.

Definition at line 243 of file vpFeatureMoment.cpp.

◆ momentName()

const char* vpFeatureMomentCentered::momentName ( ) const
inlinevirtual

associated moment name

Implements vpFeatureMoment.

Definition at line 112 of file vpFeatureMomentCentered.h.

◆ name()

const char* vpFeatureMomentCentered::name ( ) const
inlinevirtual

feature name

Implements vpFeatureMoment.

Definition at line 116 of file vpFeatureMomentCentered.h.

◆ operator[]()

virtual double vpBasicFeature::operator[] ( unsigned int  i) const
inlinevirtualinherited

Return element i in the state vector (usage : x = s[i] )

Definition at line 129 of file vpBasicFeature.h.

◆ print()

void vpFeatureMoment::print ( unsigned int  select = FEATURE_ALL) const
virtualinherited

Outputs the content of the feature: it's corresponding selected moments.

Implements vpBasicFeature.

Definition at line 98 of file vpFeatureMoment.cpp.

◆ printDependencies()

void vpFeatureMoment::printDependencies ( std::ostream &  os) const
virtualinherited

Interface function to display the moments and other interaction matrices on which a particular vpFeatureMoment is dependent upon Not made pure to maintain compatibility Recommended : Types inheriting from vpFeatureMoment should implement this function

Definition at line 280 of file vpFeatureMoment.cpp.

◆ resetFlags()

void vpBasicFeature::resetFlags ( )
protectedinherited

Definition at line 130 of file vpBasicFeature.cpp.

References vpBasicFeature::flags, and vpBasicFeature::nbParameters.

◆ selectAll()

static unsigned int vpBasicFeature::selectAll ( )
inlinestaticinherited

Select all the features.

Definition at line 141 of file vpBasicFeature.h.

◆ setDeallocate()

void vpBasicFeature::setDeallocate ( vpBasicFeatureDeallocatorType  d)
inlineinherited

Definition at line 136 of file vpBasicFeature.h.

◆ setFlags()

void vpBasicFeature::setFlags ( )
inherited

Set feature flags to true to prevent warning when re-computing the interaction matrix without having updated the feature.

Definition at line 140 of file vpBasicFeature.cpp.

◆ update()

void vpFeatureMoment::update ( double  A_,
double  B_,
double  C_ 
)
inherited

Updates the interaction matrices with the image plane the camera is facing. The plane must be in the format: $ \frac{1}{Z}=Ax+By+C $ . The moment primitives MUST be updated before calling this function.

This method also computes the interaction matrix. Therefore, you must call vpFeatureMoment::update before calling vpFeatureMoment::interaction.

Attention
The behaviour of this method is not the same as vpMoment::update which only acknowledges the new object. This method also computes the interaction matrices.
Parameters
A_: A coefficient of the plane.
B_: B coefficient of the plane.
C_: C coefficient of the plane.
Examples
mbot-apriltag-ibvs.cpp.

Definition at line 152 of file vpFeatureMoment.cpp.

Friends And Related Function Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const vpFeatureMomentCentered mu 
)
friend

Print all the interaction matrices of visual features

Definition at line 327 of file vpFeatureMomentCentered.cpp.

Member Data Documentation

◆ _name

char vpFeatureMoment::_name[255]
protectedinherited

Definition at line 170 of file vpFeatureMoment.h.

◆ A

double vpFeatureMoment::A
protectedinherited

Definition at line 167 of file vpFeatureMoment.h.

◆ B

double vpFeatureMoment::B
protectedinherited

Definition at line 168 of file vpFeatureMoment.h.

◆ C

double vpFeatureMoment::C
protectedinherited

Definition at line 169 of file vpFeatureMoment.h.

◆ deallocate

vpBasicFeatureDeallocatorType vpBasicFeature::deallocate
protectedinherited

Definition at line 147 of file vpBasicFeature.h.

◆ dim_s

unsigned int vpBasicFeature::dim_s
protectedinherited

Dimension of the visual feature.

Definition at line 93 of file vpBasicFeature.h.

Referenced by vpGenericFeature::duplicate(), vpFeatureEllipse::init(), and vpFeatureLuminance::init().

◆ FEATURE_LINE

const unsigned int vpBasicFeature::FEATURE_LINE
staticinherited
Initial value:
= {
(unsigned int)(1 << 0), (unsigned int)(1 << 1), (unsigned int)(1 << 2), (unsigned int)(1 << 3),
(unsigned int)(1 << 4), (unsigned int)(1 << 5), (unsigned int)(1 << 6), (unsigned int)(1 << 7),
(unsigned int)(1 << 8), (unsigned int)(1 << 9), (unsigned int)(1 << 10), (unsigned int)(1 << 11),
(unsigned int)(1 << 12), (unsigned int)(1 << 13), (unsigned int)(1 << 14), (unsigned int)(1 << 15),
(unsigned int)(1 << 16), (unsigned int)(1 << 17), (unsigned int)(1 << 18), (unsigned int)(1 << 19),
(unsigned int)(1 << 20), (unsigned int)(1 << 21), (unsigned int)(1 << 22), (unsigned int)(1 << 23),
(unsigned int)(1 << 24), (unsigned int)(1 << 25), (unsigned int)(1 << 26), (unsigned int)(1 << 27),
(unsigned int)(1 << 28), (unsigned int)(1 << 29), (unsigned int)(1 << 30), (unsigned int)(1 << 31)}

Definition at line 79 of file vpBasicFeature.h.

Referenced by vpFeatureEllipse::selectMu02(), vpFeatureEllipse::selectMu11(), vpFeatureEllipse::selectMu20(), and vpFeatureEllipse::selectY().

◆ featureMomentsDataBase

vpFeatureMomentDatabase* vpFeatureMoment::featureMomentsDataBase
protectedinherited

Definition at line 164 of file vpFeatureMoment.h.

◆ flags

bool* vpBasicFeature::flags
protectedinherited

◆ interaction_matrices

std::vector<vpMatrix> vpFeatureMoment::interaction_matrices
protectedinherited

Definition at line 165 of file vpFeatureMoment.h.

◆ moment

const vpMoment* vpFeatureMoment::moment
protectedinherited

Definition at line 161 of file vpFeatureMoment.h.

◆ moments

vpMomentDatabase& vpFeatureMoment::moments
protectedinherited

Definition at line 163 of file vpFeatureMoment.h.

◆ nbParameters

unsigned int vpBasicFeature::nbParameters
protectedinherited

Number of parameters needed to compute the interaction matrix.

Definition at line 99 of file vpBasicFeature.h.

Referenced by vpFeatureEllipse::buildFrom(), vpFeatureEllipse::init(), vpBasicFeature::resetFlags(), and vpFeatureEllipse::setABC().

◆ order

unsigned int vpFeatureMomentCentered::order
protected

Definition at line 81 of file vpFeatureMomentCentered.h.

◆ s