35 #include <visp3/core/vpConfig.h> 42 #include <libxml/xmlmemory.h> 44 #include <visp3/mbt/vpMbtXmlGenericParser.h> 51 m_angleAppear(70), m_angleDisappear(80), m_hasNearClipping(false), m_nearClipping(false), m_hasFarClipping(false),
52 m_farClipping(false), m_fovClipping(false),
54 m_useLod(false), m_minLineLengthThreshold(50.0), m_minPolygonAreaThreshold(2500.0),
58 m_kltMaskBorder(0), m_kltMaxFeatures(0), m_kltWinSize(0), m_kltQualityValue(0.), m_kltMinDist(0.),
59 m_kltHarrisParam(0.), m_kltBlockSize(0), m_kltPyramidLevels(0),
62 m_depthNormalPclPlaneEstimationMethod(2), m_depthNormalPclPlaneEstimationRansacMaxIter(200),
63 m_depthNormalPclPlaneEstimationRansacThreshold(0.001), m_depthNormalSamplingStepX(2), m_depthNormalSamplingStepY(2),
65 m_depthDenseSamplingStepX(2), m_depthDenseSamplingStepY(2),
67 m_projectionErrorMe(), m_projectionErrorKernelSize(2)
166 bool camera_node =
false;
167 bool face_node =
false;
168 bool ecm_node =
false;
169 bool klt_node =
false;
170 bool lod_node =
false;
171 bool depth_normal_node =
false;
172 bool depth_dense_node =
false;
173 bool projection_error_node =
false;
175 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
176 if (dataNode->type == XML_ELEMENT_NODE) {
177 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
178 if (iter_data !=
nodeMap.end()) {
179 switch (iter_data->second) {
223 depth_normal_node =
true;
230 depth_dense_node =
true;
237 projection_error_node =
true;
249 if (!projection_error_node) {
256 std::cout <<
"camera : u0 : " <<
m_cam.
get_u0() <<
" (default)" << std::endl;
257 std::cout <<
"camera : v0 : " <<
m_cam.
get_v0() <<
" (default)" << std::endl;
258 std::cout <<
"camera : px : " <<
m_cam.
get_px() <<
" (default)" << std::endl;
259 std::cout <<
"camera : py : " <<
m_cam.
get_py() <<
" (default)" << std::endl;
263 std::cout <<
"face : Angle Appear : " <<
m_angleAppear <<
" (default)" << std::endl;
264 std::cout <<
"face : Angle Disappear : " <<
m_angleDisappear <<
" (default)" << std::endl;
268 std::cout <<
"lod : use lod : " <<
m_useLod <<
" (default)" << std::endl;
274 std::cout <<
"ecm : mask : size : " <<
m_ecm.
getMaskSize() <<
" (default)" << std::endl;
275 std::cout <<
"ecm : mask : nb_mask : " <<
m_ecm.
getMaskNumber() <<
" (default)" << std::endl;
276 std::cout <<
"ecm : range : tracking : " <<
m_ecm.
getRange() <<
" (default)" << std::endl;
277 std::cout <<
"ecm : contrast : threshold : " <<
m_ecm.
getThreshold() <<
" (default)" << std::endl;
278 std::cout <<
"ecm : contrast : mu1 : " <<
m_ecm.
getMu1() <<
" (default)" << std::endl;
279 std::cout <<
"ecm : contrast : mu2 : " <<
m_ecm.
getMu2() <<
" (default)" << std::endl;
280 std::cout <<
"ecm : sample : sample_step : " <<
m_ecm.
getSampleStep() <<
" (default)" << std::endl;
284 std::cout <<
"klt : Mask Border : " <<
m_kltMaskBorder <<
" (default)" << std::endl;
285 std::cout <<
"klt : Max Features : " <<
m_kltMaxFeatures <<
" (default)" << std::endl;
286 std::cout <<
"klt : Windows Size : " <<
m_kltWinSize <<
" (default)" << std::endl;
287 std::cout <<
"klt : Quality : " <<
m_kltQualityValue <<
" (default)" << std::endl;
288 std::cout <<
"klt : Min Distance : " <<
m_kltMinDist <<
" (default)" << std::endl;
289 std::cout <<
"klt : Harris Parameter : " <<
m_kltHarrisParam <<
" (default)" << std::endl;
290 std::cout <<
"klt : Block Size : " <<
m_kltBlockSize <<
" (default)" << std::endl;
291 std::cout <<
"klt : Pyramid Levels : " <<
m_kltPyramidLevels <<
" (default)" << std::endl;
298 <<
" (default)" << std::endl;
300 <<
" (default)" << std::endl;
301 std::cout <<
"depth normal : PCL_plane_estimation : ransac_threshold : " 324 bool u0_node =
false;
325 bool v0_node =
false;
326 bool px_node =
false;
327 bool py_node =
false;
335 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
336 if (dataNode->type == XML_ELEMENT_NODE) {
337 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
338 if (iter_data !=
nodeMap.end()) {
339 switch (iter_data->second) {
370 std::cout <<
"camera : u0 : " <<
m_cam.
get_u0() <<
" (default)" << std::endl;
372 std::cout <<
"camera : u0 : " <<
m_cam.
get_u0() << std::endl;
375 std::cout <<
"camera : v0 : " <<
m_cam.
get_v0() <<
" (default)" << std::endl;
377 std::cout <<
"camera : v0 : " <<
m_cam.
get_v0() << std::endl;
380 std::cout <<
"camera : px : " <<
m_cam.
get_px() <<
" (default)" << std::endl;
382 std::cout <<
"camera : px : " <<
m_cam.
get_px() << std::endl;
385 std::cout <<
"camera : py : " <<
m_cam.
get_py() <<
" (default)" << std::endl;
387 std::cout <<
"camera : py : " <<
m_cam.
get_py() << std::endl;
400 bool feature_estimation_method_node =
false;
401 bool PCL_plane_estimation_node =
false;
402 bool sampling_step_node =
false;
404 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
405 if (dataNode->type == XML_ELEMENT_NODE) {
406 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
407 if (iter_data !=
nodeMap.end()) {
408 switch (iter_data->second) {
412 feature_estimation_method_node =
true;
417 PCL_plane_estimation_node =
true;
422 sampling_step_node =
true;
432 if (!feature_estimation_method_node)
438 if (!PCL_plane_estimation_node) {
440 <<
" (default)" << std::endl;
442 <<
" (default)" << std::endl;
443 std::cout <<
"depth normal : PCL_plane_estimation : ransac_threshold : " 447 if (!sampling_step_node) {
463 bool PCL_plane_estimation_method_node =
false;
464 bool PCL_plane_estimation_ransac_max_iter_node =
false;
465 bool PCL_plane_estimation_ransac_threshold_node =
false;
467 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
468 if (dataNode->type == XML_ELEMENT_NODE) {
469 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
470 if (iter_data !=
nodeMap.end()) {
471 switch (iter_data->second) {
474 PCL_plane_estimation_method_node =
true;
479 PCL_plane_estimation_ransac_max_iter_node =
true;
484 PCL_plane_estimation_ransac_threshold_node =
true;
494 if (!PCL_plane_estimation_method_node)
496 <<
" (default)" << std::endl;
501 if (!PCL_plane_estimation_ransac_max_iter_node)
503 <<
" (default)" << std::endl;
508 if (!PCL_plane_estimation_ransac_threshold_node)
509 std::cout <<
"depth normal : PCL_plane_estimation : ransac_threshold : " 512 std::cout <<
"depth normal : PCL_plane_estimation : ransac_threshold : " 526 bool sampling_step_X_node =
false;
527 bool sampling_step_Y_node =
false;
529 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
530 if (dataNode->type == XML_ELEMENT_NODE) {
531 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
532 if (iter_data !=
nodeMap.end()) {
533 switch (iter_data->second) {
536 sampling_step_X_node =
true;
541 sampling_step_Y_node =
true;
551 if (!sampling_step_X_node)
556 if (!sampling_step_Y_node)
572 bool sampling_step_node =
false;
574 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
575 if (dataNode->type == XML_ELEMENT_NODE) {
576 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
577 if (iter_data !=
nodeMap.end()) {
578 switch (iter_data->second) {
581 sampling_step_node =
true;
591 if (!sampling_step_node) {
607 bool sampling_step_X_node =
false;
608 bool sampling_step_Y_node =
false;
610 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
611 if (dataNode->type == XML_ELEMENT_NODE) {
612 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
613 if (iter_data !=
nodeMap.end()) {
614 switch (iter_data->second) {
617 sampling_step_X_node =
true;
622 sampling_step_Y_node =
true;
632 if (!sampling_step_X_node)
637 if (!sampling_step_Y_node)
653 bool mask_node =
false;
654 bool range_node =
false;
655 bool contrast_node =
false;
656 bool sample_node =
false;
658 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
659 if (dataNode->type == XML_ELEMENT_NODE) {
660 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
661 if (iter_data !=
nodeMap.end()) {
662 switch (iter_data->second) {
675 contrast_node =
true;
691 std::cout <<
"ecm : mask : size : " <<
m_ecm.
getMaskSize() <<
" (default)" << std::endl;
692 std::cout <<
"ecm : mask : nb_mask : " <<
m_ecm.
getMaskNumber() <<
" (default)" << std::endl;
696 std::cout <<
"ecm : range : tracking : " <<
m_ecm.
getRange() <<
" (default)" << std::endl;
699 if (!contrast_node) {
700 std::cout <<
"ecm : contrast : threshold " <<
m_ecm.
getThreshold() <<
" (default)" << std::endl;
701 std::cout <<
"ecm : contrast : mu1 " <<
m_ecm.
getMu1() <<
" (default)" << std::endl;
702 std::cout <<
"ecm : contrast : mu2 " <<
m_ecm.
getMu2() <<
" (default)" << std::endl;
706 std::cout <<
"ecm : sample : sample_step : " <<
m_ecm.
getSampleStep() <<
" (default)" << std::endl;
720 bool edge_threshold_node =
false;
721 bool mu1_node =
false;
722 bool mu2_node =
false;
729 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
730 if (dataNode->type == XML_ELEMENT_NODE) {
731 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
732 if (iter_data !=
nodeMap.end()) {
733 switch (iter_data->second) {
736 edge_threshold_node =
true;
760 if (!edge_threshold_node)
761 std::cout <<
"ecm : contrast : threshold " <<
m_ecm.
getThreshold() <<
" (default)" << std::endl;
766 std::cout <<
"ecm : contrast : mu1 " <<
m_ecm.
getMu1() <<
" (default)" << std::endl;
768 std::cout <<
"ecm : contrast : mu1 " <<
m_ecm.
getMu1() << std::endl;
771 std::cout <<
"ecm : contrast : mu2 " <<
m_ecm.
getMu2() <<
" (default)" << std::endl;
773 std::cout <<
"ecm : contrast : mu2 " <<
m_ecm.
getMu2() << std::endl;
786 bool size_node =
false;
787 bool nb_mask_node =
false;
793 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
794 if (dataNode->type == XML_ELEMENT_NODE) {
795 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
796 if (iter_data !=
nodeMap.end()) {
797 switch (iter_data->second) {
820 "parameter should be different " 821 "from zero in xml file"));
825 std::cout <<
"ecm : mask : size : " <<
m_ecm.
getMaskSize() <<
" (default)" << std::endl;
830 std::cout <<
"ecm : mask : nb_mask : " <<
m_ecm.
getMaskNumber() <<
" (default)" << std::endl;
845 bool tracking_node =
false;
850 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
851 if (dataNode->type == XML_ELEMENT_NODE) {
852 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
853 if (iter_data !=
nodeMap.end()) {
854 switch (iter_data->second) {
857 tracking_node =
true;
870 std::cout <<
"ecm : range : tracking : " <<
m_ecm.
getRange() <<
" (default)" << std::endl;
872 std::cout <<
"ecm : range : tracking : " <<
m_ecm.
getRange() << std::endl;
885 bool step_node =
false;
890 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
891 if (dataNode->type == XML_ELEMENT_NODE) {
892 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
893 if (iter_data !=
nodeMap.end()) {
894 switch (iter_data->second) {
910 std::cout <<
"ecm : sample : sample_step : " <<
m_ecm.
getSampleStep() <<
" (default)" << std::endl;
925 bool angle_appear_node =
false;
926 bool angle_disappear_node =
false;
927 bool near_clipping_node =
false;
928 bool far_clipping_node =
false;
929 bool fov_clipping_node =
false;
933 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
934 if (dataNode->type == XML_ELEMENT_NODE) {
935 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
936 if (iter_data !=
nodeMap.end()) {
937 switch (iter_data->second) {
940 angle_appear_node =
true;
945 angle_disappear_node =
true;
951 near_clipping_node =
true;
957 far_clipping_node =
true;
965 fov_clipping_node =
true;
975 if (!angle_appear_node)
976 std::cout <<
"face : Angle Appear : " <<
m_angleAppear <<
" (default)" << std::endl;
978 std::cout <<
"face : Angle Appear : " <<
m_angleAppear << std::endl;
980 if (!angle_disappear_node)
981 std::cout <<
"face : Angle Disappear : " <<
m_angleDisappear <<
" (default)" << std::endl;
985 if (near_clipping_node)
986 std::cout <<
"face : Near Clipping : " <<
m_nearClipping << std::endl;
988 if (far_clipping_node)
989 std::cout <<
"face : Far Clipping : " <<
m_farClipping << std::endl;
991 if (fov_clipping_node) {
993 std::cout <<
"face : Fov Clipping : True" << std::endl;
995 std::cout <<
"face : Fov Clipping : False" << std::endl;
1009 bool mask_border_node =
false;
1010 bool max_features_node =
false;
1011 bool window_size_node =
false;
1012 bool quality_node =
false;
1013 bool min_distance_node =
false;
1014 bool harris_node =
false;
1015 bool size_block_node =
false;
1016 bool pyramid_lvl_node =
false;
1018 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
1019 if (dataNode->type == XML_ELEMENT_NODE) {
1020 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
1021 if (iter_data !=
nodeMap.end()) {
1022 switch (iter_data->second) {
1025 mask_border_node =
true;
1030 max_features_node =
true;
1035 window_size_node =
true;
1040 quality_node =
true;
1045 min_distance_node =
true;
1055 size_block_node =
true;
1060 pyramid_lvl_node =
true;
1070 if (!mask_border_node)
1071 std::cout <<
"klt : Mask Border : " <<
m_kltMaskBorder <<
" (default)" << std::endl;
1075 if (!max_features_node)
1076 std::cout <<
"klt : Max Features : " <<
m_kltMaxFeatures <<
" (default)" << std::endl;
1080 if (!window_size_node)
1081 std::cout <<
"klt : Windows Size : " <<
m_kltWinSize <<
" (default)" << std::endl;
1083 std::cout <<
"klt : Windows Size : " <<
m_kltWinSize << std::endl;
1086 std::cout <<
"klt : Quality : " <<
m_kltQualityValue <<
" (default)" << std::endl;
1090 if (!min_distance_node)
1091 std::cout <<
"klt : Min Distance : " <<
m_kltMinDist <<
" (default)" << std::endl;
1093 std::cout <<
"klt : Min Distance : " <<
m_kltMinDist << std::endl;
1096 std::cout <<
"klt : Harris Parameter : " <<
m_kltHarrisParam <<
" (default)" << std::endl;
1100 if (!size_block_node)
1101 std::cout <<
"klt : Block Size : " <<
m_kltBlockSize <<
" (default)" << std::endl;
1103 std::cout <<
"klt : Block Size : " <<
m_kltBlockSize << std::endl;
1105 if (!pyramid_lvl_node)
1106 std::cout <<
"klt : Pyramid Levels : " <<
m_kltPyramidLevels <<
" (default)" << std::endl;
1113 bool use_lod_node =
false;
1114 bool min_line_length_threshold_node =
false;
1115 bool min_polygon_area_threshold_node =
false;
1117 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
1118 if (dataNode->type == XML_ELEMENT_NODE) {
1119 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
1120 if (iter_data !=
nodeMap.end()) {
1121 switch (iter_data->second) {
1124 use_lod_node =
true;
1129 min_line_length_threshold_node =
true;
1134 min_polygon_area_threshold_node =
true;
1145 std::cout <<
"lod : use lod : " <<
m_useLod <<
" (default)" << std::endl;
1147 std::cout <<
"lod : use lod : " <<
m_useLod << std::endl;
1149 if (!min_line_length_threshold_node)
1154 if (!min_polygon_area_threshold_node)
1162 bool step_node =
false;
1163 bool kernel_size_node =
false;
1167 std::string kernel_size_str;
1169 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
1170 if (dataNode->type == XML_ELEMENT_NODE) {
1171 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
1172 if (iter_data !=
nodeMap.end()) {
1173 switch (iter_data->second) {
1181 kernel_size_node =
true;
1193 if (kernel_size_str ==
"3x3") {
1195 }
else if (kernel_size_str ==
"5x5") {
1197 }
else if (kernel_size_str ==
"7x7") {
1199 }
else if (kernel_size_str ==
"9x9") {
1201 }
else if (kernel_size_str ==
"11x11") {
1203 }
else if (kernel_size_str ==
"13x13") {
1205 }
else if (kernel_size_str ==
"15x15") {
1208 std::cerr <<
"Unsupported kernel size." << std::endl;
1216 if (!kernel_size_node)
1220 std::cout <<
"projection_error : kernel_size : " << kernel_size_str << std::endl;
1233 bool step_node =
false;
1239 for (xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
1240 if (dataNode->type == XML_ELEMENT_NODE) {
1241 std::map<std::string, int>::const_iterator iter_data =
nodeMap.find((
char *)dataNode->name);
1242 if (iter_data !=
nodeMap.end()) {
1243 switch (iter_data->second) {
1259 std::cout <<
"[DEPRECATED] sample : sample_step : " <<
m_ecm.
getSampleStep() <<
" (default)" << std::endl;
1261 std::cout <<
"[DEPRECATED] sample : sample_step : " <<
m_ecm.
getSampleStep() << std::endl;
1263 std::cout <<
" WARNING : This node (sample) is deprecated." << std::endl;
1264 std::cout <<
" It should be moved in the ecm node (ecm : sample)." << std::endl;
1267 #elif !defined(VISP_BUILD_SHARED_LIBS) 1270 void dummy_vpMbtXmlGenericParser(){};
Used to indicate that a value is not in the allowed range.
unsigned int getRange() const
unsigned int getMaskSize() const
unsigned int m_kltWinSize
Windows size.
unsigned int m_depthDenseSamplingStepX
Sampling step in X.
bool m_hasNearClipping
Is near clipping distance specified?
double m_minLineLengthThreshold
Minimum line length to track a segment when LOD is enabled.
void read_klt(xmlDocPtr doc, xmlNodePtr node)
void setMainTag(const std::string &tag)
unsigned int getMaskNumber() const
virtual void readMainClass(xmlDocPtr doc, xmlNodePtr node)
void setMaskNumber(const unsigned int &a)
int m_depthNormalPclPlaneEstimationMethod
PCL plane estimation method.
void read_depth_normal_sampling_step(xmlDocPtr doc, xmlNodePtr node)
double m_angleDisappear
Angle to determine if a face disappeared.
void setSampleStep(const double &s)
error that can be emited by ViSP classes.
virtual ~vpMbtXmlGenericParser()
bool m_useLod
If true, the LOD is enabled, otherwise it is not.
double xmlReadDoubleChild(xmlDocPtr doc, xmlNodePtr node)
double m_nearClipping
Near clipping distance.
unsigned int m_depthDenseSamplingStepY
Sampling step in Y.
void writeMainClass(xmlNodePtr node)
void read_lod(xmlDocPtr doc, xmlNodePtr node)
void setMu1(const double &mu_1)
void read_depth_normal_PCL(xmlDocPtr doc, xmlNodePtr node)
unsigned int m_kltBlockSize
Block size.
void read_projection_error(xmlDocPtr doc, xmlNodePtr node)
int m_depthNormalPclPlaneEstimationRansacMaxIter
PCL RANSAC maximum number of iterations.
char * xmlReadCharChild(xmlDocPtr doc, xmlNodePtr node)
void initPersProjWithoutDistortion(const double px, const double py, const double u0, const double v0)
void read_ecm_range(xmlDocPtr doc, xmlNodePtr node)
double m_kltMinDist
Minimum distance between klt points.
unsigned int m_depthNormalSamplingStepX
Sampling step in X.
double getThreshold() const
void read_camera(xmlDocPtr doc, xmlNodePtr node)
void read_ecm_sample(xmlDocPtr doc, xmlNodePtr node)
unsigned int m_depthNormalSamplingStepY
Sampling step in Y.
void setMaskSize(const unsigned int &a)
double m_kltQualityValue
Quality of the Klt points.
void read_depth_dense_sampling_step(xmlDocPtr doc, xmlNodePtr node)
bool m_fovClipping
Fov Clipping.
vpMbtFaceDepthNormal::vpFeatureEstimationType m_depthNormalFeatureEstimationMethod
Feature estimation method.
int xmlReadIntChild(xmlDocPtr doc, xmlNodePtr node)
vpCameraParameters m_cam
Camera parameters.
double m_farClipping
Near clipping distance.
double m_minPolygonAreaThreshold
Minimum polygon area to track a face when LOD is enabled.
double m_depthNormalPclPlaneEstimationRansacThreshold
PCL RANSAC threshold.
vpParserType m_parserType
Parser type.
unsigned int m_projectionErrorKernelSize
Kernel size (actual_kernel_size = size*2 + 1) used for projection error computation.
unsigned int xmlReadUnsignedIntChild(xmlDocPtr doc, xmlNodePtr node)
void setMu2(const double &mu_2)
unsigned int m_kltMaskBorder
Border of the mask used on Klt points.
vpMbtXmlGenericParser(const vpParserType &type=EDGE_PARSER)
void setThreshold(const double &t)
unsigned int m_kltPyramidLevels
Number of pyramid levels.
void read_ecm(xmlDocPtr doc, xmlNodePtr node)
void read_sample_deprecated(xmlDocPtr doc, xmlNodePtr node)
double m_kltHarrisParam
Harris free parameters.
void read_ecm_contrast(xmlDocPtr doc, xmlNodePtr node)
void setRange(const unsigned int &r)
void read_ecm_mask(xmlDocPtr doc, xmlNodePtr node)
double getSampleStep() const
unsigned int m_kltMaxFeatures
Maximum of Klt features.
void read_depth_normal(xmlDocPtr doc, xmlNodePtr node)
vpMe m_projectionErrorMe
ME parameters for projection error computation.
double m_angleAppear
Angle to determine if a face appeared.
vpMe m_ecm
Moving edges parameters.
std::map< std::string, int > nodeMap
bool m_hasFarClipping
Is far clipping distance specified?
void read_face(xmlDocPtr doc, xmlNodePtr node)
void read_depth_dense(xmlDocPtr doc, xmlNodePtr node)