Visual Servoing Platform  version 3.0.1
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
vpXmlConfigParserKeyPoint Class Reference

#include <visp3/vision/vpXmlConfigParserKeyPoint.h>

+ Inheritance diagram for vpXmlConfigParserKeyPoint:

Public Types

enum  vpNodeIdentifier {
  conf, detector, extractor, matcher,
  name, matching_method, constant_factor_distance_threshold, std_distance_threshold,
  ratio_distance_threshold, std_and_ratio_distance_threshold, no_filter_matching, matching_factor_threshold,
  matching_ratio_threshold, ransac, use_ransac_vvs, use_ransac_consensus_percentage,
  nb_ransac_iterations, ransac_reprojection_error, nb_ransac_min_inlier_count, ransac_threshold,
  ransac_consensus_percentage
}
 
enum  vpMatchingMethodEnum {
  constantFactorDistanceThreshold, stdDistanceThreshold, ratioDistanceThreshold, stdAndRatioDistanceThreshold,
  noFilterMatching
}
 

Public Member Functions

 vpXmlConfigParserKeyPoint ()
 
virtual ~vpXmlConfigParserKeyPoint ()
 
std::string getDetectorName () const
 
std::string getExtractorName () const
 
std::string getMatcherName () const
 
double getMatchingFactorThreshold () const
 
vpMatchingMethodEnum getMatchingMethod () const
 
double getMatchingRatioThreshold () const
 
int getNbRansacIterations () const
 
int getNbRansacMinInlierCount () const
 
double getRansacConsensusPercentage () const
 
double getRansacReprojectionError () const
 
double getRansacThreshold () const
 
bool getUseRansacConsensusPercentage () const
 
bool getUseRansacVVSPoseEstimation () const
 
void parse (const std::string &filename)
 
Public Member Functions Inherited from vpXmlParser
void save (const std::string &filename, const bool append=false)
 
void setMap (const std::map< std::string, int > &_map)
 
void setMainTag (const std::string &tag)
 

Static Public Member Functions

Static Public Member Functions Inherited from vpXmlParser
static void cleanup ()
 

Protected Member Functions

Protected Member Functions Inherited from vpXmlParser
bool xmlReadBoolChild (xmlDocPtr doc, xmlNodePtr node)
 
char * xmlReadCharChild (xmlDocPtr doc, xmlNodePtr node)
 
double xmlReadDoubleChild (xmlDocPtr doc, xmlNodePtr node)
 
float xmlReadFloatChild (xmlDocPtr doc, xmlNodePtr node)
 
int xmlReadIntChild (xmlDocPtr doc, xmlNodePtr node)
 
std::string xmlReadStringChild (xmlDocPtr doc, xmlNodePtr node)
 
unsigned int xmlReadUnsignedIntChild (xmlDocPtr doc, xmlNodePtr node)
 
void xmlWriteBoolChild (xmlNodePtr node, const char *label, const bool value)
 
void xmlWriteCharChild (xmlNodePtr node, const char *label, const char *value)
 
void xmlWriteDoubleChild (xmlNodePtr node, const char *label, const double value)
 
void xmlWriteFloatChild (xmlNodePtr node, const char *label, const float value)
 
void xmlWriteIntChild (xmlNodePtr node, const char *label, const int value)
 
void xmlWriteStringChild (xmlNodePtr node, const char *label, const std::string &value)
 
void xmlWriteUnsignedIntChild (xmlNodePtr node, const char *label, const unsigned int value)
 

Protected Attributes

std::map< std::string, int > nodeMap
 
std::string main_tag
 

Detailed Description

Warning
This class is only available if libxml2 is installed and detected by ViSP. Installation instructions are provided here https://visp.inria.fr/3rd_xml2.

Definition at line 67 of file vpXmlConfigParserKeyPoint.h.

Member Enumeration Documentation

Enumerator for the different filtering matching method.

Enumerator
constantFactorDistanceThreshold 

Keep all the points below a constant factor threshold.

stdDistanceThreshold 

Keep all the points below a minimal distance + the standard deviation.

ratioDistanceThreshold 

Keep all the points enough discriminated.

stdAndRatioDistanceThreshold 

Keep all the points which fall with the two conditions.

noFilterMatching 

No filtering.

Definition at line 97 of file vpXmlConfigParserKeyPoint.h.

Predefined xml node identifier.

Enumerator
conf 

Identifier associated to the root tag.

detector 

Identifier associated to the detector tag.

extractor 

Identifier associated to the extractor tag.

matcher 

Identifier associated to the matcher tag.

name 

Identifier associated to the name tag.

matching_method 

Identifier associated to the matching_method tag.

constant_factor_distance_threshold 

Identifier associated to the constant_factor_distance_threshold tag.

std_distance_threshold 

Identifier associated to the std_distance_threshold tag.

ratio_distance_threshold 

Identifier associated to the ratio_distance_threshold tag.

std_and_ratio_distance_threshold 

Identifier associated to the std_and_ratio_distance_threshold tag.

no_filter_matching 

Identifier associated to the no_filter_matching tag.

matching_factor_threshold 

Identifier associated to the matching_factor_threshold tag.

matching_ratio_threshold 

Identifier associated to the matching_ratio_threshold tag.

ransac 

Identifier associated to the ransac tag.

use_ransac_vvs 

Identifier associated to the use_ransac_vvs tag.

use_ransac_consensus_percentage 

Identifier associated to the use_ransac_consensus_percentage tag.

nb_ransac_iterations 

Identifier associated to the nb_ransac_iterations tag.

ransac_reprojection_error 

Identifier associated to the ransac_reprojection_error tag.

nb_ransac_min_inlier_count 

Identifier associated to the nb_ransac_min_inlier_count tag.

ransac_threshold 

Identifier associated to the ransac_threshold tag.

ransac_consensus_percentage 

Identifier associated to the ransac_consensus_percentage tag.

Definition at line 72 of file vpXmlConfigParserKeyPoint.h.

Constructor & Destructor Documentation

vpXmlConfigParserKeyPoint::vpXmlConfigParserKeyPoint ( )

Definition at line 51 of file vpXmlConfigParserKeyPoint.cpp.

virtual vpXmlConfigParserKeyPoint::~vpXmlConfigParserKeyPoint ( )
inlinevirtual

Default destructor.

Definition at line 139 of file vpXmlConfigParserKeyPoint.h.

Member Function Documentation

static void vpXmlParser::cleanup ( )
inlinestaticinherited

As stated in http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser to clean up memory allocated by the xml2 library itself, the user should call xmlCleanupParser() only when the process has finished using the xml2 library. In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind ! That's why in ViSP the destructor doesn't call xmlCleanupParser(). Rather we provide the static function vpXmlParser::cleanup() that calls xmlCleanupParser() that could be called just before exit().

Examples:
mbtEdgeKltMultiTracking.cpp, mbtEdgeKltTracking.cpp, mbtEdgeMultiTracking.cpp, mbtEdgeTracking.cpp, mbtKltMultiTracking.cpp, mbtKltTracking.cpp, testXmlParser.cpp, tutorial-detection-object-mbt.cpp, tutorial-detection-object-mbt2.cpp, tutorial-mb-edge-tracker.cpp, tutorial-mb-hybrid-tracker.cpp, tutorial-mb-klt-tracker.cpp, and tutorial-mb-tracker-full.cpp.

Definition at line 308 of file vpXmlParser.h.

std::string vpXmlConfigParserKeyPoint::getDetectorName ( ) const
inline

Get the detector name.

Returns
The detector name.

Definition at line 146 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

std::string vpXmlConfigParserKeyPoint::getExtractorName ( ) const
inline

Get the extractor name.

Returns
The extractor name.

Definition at line 155 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

std::string vpXmlConfigParserKeyPoint::getMatcherName ( ) const
inline

Get the matcher name.

Returns
The detector name.

Definition at line 163 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

double vpXmlConfigParserKeyPoint::getMatchingFactorThreshold ( ) const
inline

Get the factor value.

Returns
The factor value for the filtering method: constantFactorDistanceThreshold.

Definition at line 171 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

vpMatchingMethodEnum vpXmlConfigParserKeyPoint::getMatchingMethod ( ) const
inline

Get the filtering method.

Returns
The filtering method.

Definition at line 180 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

double vpXmlConfigParserKeyPoint::getMatchingRatioThreshold ( ) const
inline

Get the ratio value.

Returns
The factor value for the filtering method: ratioDistanceThreshold.

Definition at line 189 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

int vpXmlConfigParserKeyPoint::getNbRansacIterations ( ) const
inline

Get the maximum number of iterations for the Ransac method.

Returns
The maximum number of iterations for the Ransac method.

Definition at line 198 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

int vpXmlConfigParserKeyPoint::getNbRansacMinInlierCount ( ) const
inline

Get the minimum number of inliers for the Ransac method.

Returns
The minimum number of inliers for the Ransac method.

Definition at line 207 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

double vpXmlConfigParserKeyPoint::getRansacConsensusPercentage ( ) const
inline

Get the percentage value of inliers for the Ransac method.

Returns
The percentage value of inliers for the Ransac method.

Definition at line 216 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

double vpXmlConfigParserKeyPoint::getRansacReprojectionError ( ) const
inline

Get the maximum reprojection error for a candidate inlier for the Ransac method.

Returns
The maximum reprojection error for the Ransac method.

Definition at line 225 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

double vpXmlConfigParserKeyPoint::getRansacThreshold ( ) const
inline

Get the maximum error for a candidate inlier for the Ransac method.

Returns
The maximum error for the Ransac method.

Definition at line 234 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

bool vpXmlConfigParserKeyPoint::getUseRansacConsensusPercentage ( ) const
inline

Get the flag state to choose between a percentage of inliers or a fixed number.

Returns
True to use a percentage value for inliers, false otherwise.

Definition at line 243 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

bool vpXmlConfigParserKeyPoint::getUseRansacVVSPoseEstimation ( ) const
inline

Get the flag state to choose between OpenCV Ransac pose estimation or ViSP Ransac VVS pose estimation.

Returns
True to use ViSP method, false otherwise.

Definition at line 253 of file vpXmlConfigParserKeyPoint.h.

Referenced by vpKeyPoint::loadConfigFile().

void vpXmlConfigParserKeyPoint::parse ( const std::string &  filename)

Parse an XML file to get configuration value for vpKeyPoint class.

Parameters
filename: filename of the XML file to parse

Parse an XML file to load configuration for vpKeyPoint class.

Parameters
filename: filename of the XML file to parse.

Definition at line 96 of file vpXmlConfigParserKeyPoint.cpp.

References vpXmlParser::parse().

Referenced by vpKeyPoint::loadConfigFile().

void vpXmlParser::save ( const std::string &  filename,
const bool  append = false 
)
inherited

Save the content of the class in the file given in parameters. The data of the class are in the child class. This method calls the write_main_class method which has to be implemented for every class depending on the data to save.

Parameters
filename: the name of the file used to record the data
append: if true and if the file exists, the data will be added to the data already in the file

Definition at line 469 of file vpXmlParser.cpp.

References vpException::ioError, vpXmlParser::main_tag, vpERROR_TRACE, and vpXmlParser::writeMainClass().

void vpXmlParser::setMainTag ( const std::string &  tag)
inlineinherited

set the name of the main tag

The main tag corresponds to the name of the root node

Parameters
tag: name of the root node of the document

Definition at line 293 of file vpXmlParser.h.

Referenced by vpMbXmlParser::init().

void vpXmlParser::setMap ( const std::map< std::string, int > &  _map)
inlineinherited

Set the map describing the data to parse. This map stores the name of each node and an associated key used to simplify the parsing of the file.

If the following file want to be parsed:

<config>
<range>5</range>
<step>7</step>
<size_filter>3</size_filter>
</config>

The following map has to be declared:

std::map dataToParse;
dataToParse["config"] = 0;
dataToParse["range"] = 1;
dataToParse["step"] = 2;
dataToParse["size_filter"] = 3;

Or, you can use keyzord instead of number as key but it implies to declare in the child class an enumeration type of the name. For example:

typedef enum{
config,
range,
step,
size_filter} data_enum;
std::map dataToParse;
dataToParse["config"] = config;
dataToParse["range"] = range;
dataToParse["step"] = step;
dataToParse["size_filter"] = size_filter;
Parameters
_map: the map describing the data to parse

Definition at line 284 of file vpXmlParser.h.

bool vpXmlParser::xmlReadBoolChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a boolean

Warning
throw a vpException::ioError if the value cannot be parsed to a bool
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the bool value in the node

Definition at line 289 of file vpXmlParser.cpp.

References vpException::fatalError.

char * vpXmlParser::xmlReadCharChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

Read an array of character.

Warning
The array of characters is allocated and must be explicitly freed to avoid memory leak.
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
pointer to an allocated array of character.

Definition at line 106 of file vpXmlParser.cpp.

References vpException::fatalError.

double vpXmlParser::xmlReadDoubleChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a double

Warning
throw a vpException::ioError if the value cannot be parsed to a double
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the double value in the node

Definition at line 219 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by vpMbXmlParser::read_camera(), vpMbtXmlParser::read_contrast(), vpMbXmlParser::read_face(), vpMbtKltXmlParser::read_klt(), and vpMbXmlParser::read_lod().

float vpXmlParser::xmlReadFloatChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a float

Warning
throw a vpException::ioError if the value cannot be parsed to a float
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the float value in the node

Definition at line 252 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

int vpXmlParser::xmlReadIntChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read an int

Warning
throw a vpException::ioError if the value cannot be parsed to an integer
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the integer value in the node

Definition at line 151 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by vpMbXmlParser::read_face(), vpMbXmlParser::read_lod(), vpMbtXmlParser::read_sample(), and vpMbtXmlParser::read_sample_deprecated().

std::string vpXmlParser::xmlReadStringChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

Read an array of character.

Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
std::string representing the value.

Definition at line 127 of file vpXmlParser.cpp.

References vpException::fatalError.

unsigned int vpXmlParser::xmlReadUnsignedIntChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read an int

Warning
throw a vpException::ioError if the value cannot be parsed to an unsigned integer
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the unsigned integer value in the node

Definition at line 185 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by vpMbtKltXmlParser::read_klt(), vpMbtXmlParser::read_mask(), and vpMbtXmlParser::read_range().

void vpXmlParser::xmlWriteBoolChild ( xmlNodePtr  node,
const char *  label,
const bool  value 
)
protectedinherited

write a bool.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: boolean to write (true or false)

Definition at line 414 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteCharChild ( xmlNodePtr  node,
const char *  label,
const char *  value 
)
protectedinherited

write an array of character.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: pointer to the array of character to write

Definition at line 314 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteDoubleChild ( xmlNodePtr  node,
const char *  label,
const double  value 
)
protectedinherited

write a double.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: double to write

Definition at line 380 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteFloatChild ( xmlNodePtr  node,
const char *  label,
const float  value 
)
protectedinherited

write a float.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: float to write

Definition at line 397 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteIntChild ( xmlNodePtr  node,
const char *  label,
const int  value 
)
protectedinherited

write an integer.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: integer to write

Definition at line 345 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteStringChild ( xmlNodePtr  node,
const char *  label,
const std::string &  value 
)
protectedinherited

write an array of character.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: std::string to write;

Definition at line 329 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteUnsignedIntChild ( xmlNodePtr  node,
const char *  label,
const unsigned int  value 
)
protectedinherited

write an unsigned integer.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: unsigned integer to write

Definition at line 362 of file vpXmlParser.cpp.

Member Data Documentation

std::string vpXmlParser::main_tag
protectedinherited

The name of the main tag for the file to parse

Definition at line 229 of file vpXmlParser.h.

Referenced by vpXmlParser::save(), and vpXmlParser::vpXmlParser().