ViSP  2.6.2
vpMoment Class Referenceabstract

#include <vpMoment.h>

+ Inheritance diagram for vpMoment:

Public Member Functions

vpMomentObjectgetObject ()
 vpMoment ()
std::vector< double > & get ()
void linkTo (vpMomentDatabase &moments)
void update (vpMomentObject &object)
virtual void compute ()=0
virtual const char * name ()=0
virtual ~vpMoment ()

Protected Member Functions

vpMomentDatabasegetMoments ()

Protected Attributes

std::vector< double > values


VISP_EXPORT std::ostream & operator<< (std::ostream &os, const vpMoment &m)

Detailed Description

This class defines shared methods/attributes for 2D moments.

All moments or combination of moments in the moments module are based on this class. A moment uses a vpMomentObject object to access all useful information. Moment values are obtained by a 4-step process common for all moment types:

  • Declaration.
    vpMoment moment;
  • Update with object.
  • Compute the moment value
  • Access the values:
    std::vector<double> values = moment.get();

A moment may also be linked to a vpMomentDatabase. Moments linked to a database are able to access each others values. Some moments can be computed only if they are linked to a a database containing their dependencies. Linking to a database is done using the vpMoment::linkTo(...) method.

There are no constraints about format of the array returned by vpMoment::get: any implementation is fine.

Each moment must have a string name by implementing the char* vpMoment::name() method which allows to identify the moment in the database. Each moment must also implement a compute method describing how to obtain its values from the object.

Order of moment computation DOES matter: when you compute (vpMoment::compute call) a moment, all moment dependencies must be computed. Moments pre-implementes dans ViSP:

Definition at line 104 of file vpMoment.h.

Constructor & Destructor Documentation

vpMoment::vpMoment ( )

Default constructor

Definition at line 55 of file vpMoment.cpp.

virtual vpMoment::~vpMoment ( )

Virtual destructor.

Definition at line 135 of file vpMoment.h.

Member Function Documentation

vpMomentDatabase& vpMoment::getMoments ( )
void vpMoment::linkTo ( vpMomentDatabase moments)

Links the moment to a database of moment primitives. If the moment depends on other moments, these moments must be linked to the same database.

Two moments of the same class cannot be stored in the same database
#include <visp/vpMomentObject.h>
#include <visp/vpPoint.h>
#include <visp/vpMomentGravityCenter.h>
#include <visp/vpMomentDatabase.h>
#include <visp/vpMomentCentered.h>
int main()
std::vector<vpPoint> vec_p;
p.set_x(1); p.set_y(1); // coordinates in meters in the image plane (vertex 1)
p.set_x(2); p.set_y(2); // coordinates in meters in the image plane (vertex 2)
obj.setType(vpMomentObject::DISCRETE); // Discrete mode.
obj.fromVector(vec_p); // Init the dense object with the polygon
vpMomentGravityCenter G; // declaration of gravity center
vpMomentCentered mc; // mc containts centered moments
G.linkTo(db); //add gravity center to database
mc.linkTo(db); //centered moments depend on gravity, add them to the
//database to grant access
G.update(obj); // specify the object for gravity center
mc.update(obj); // and for centered moments
G.compute(); // compute the moment
mc.compute(); //compute centered moments AFTER gravity center
return 0;
moments: database of moment primitives.

Definition at line 104 of file vpMoment.cpp.

References name().

Referenced by vpMomentCommon::getAlpha(), vpMomentCommon::getMu3(), vpMomentCommon::getSurface(), and vpMomentCommon::vpMomentCommon().

virtual const char* vpMoment::name ( )
pure virtual
void vpMoment::update ( vpMomentObject object)

Updates the moment with the current object. This does not compute any values.

object: object descriptor of the current camera vision.

Definition at line 117 of file vpMoment.cpp.

Friends And Related Function Documentation

VISP_EXPORT std::ostream& operator<< ( std::ostream &  os,
const vpMoment m 

Prints the moment contents to a stream

os: a std::stream.
m: a moment instance.

Definition at line 126 of file vpMoment.cpp.

Member Data Documentation