1 /**************************************************************************** 2 * 3 * ViSP, open source Visual Servoing Platform software. 4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved. 5 * 6 * This software is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * See the file LICENSE.txt at the root directory of this source 11 * distribution for additional information about the GNU GPL. 12 * 13 * For using ViSP with software that can not be combined with the GNU 14 * GPL, please contact Inria about acquiring a ViSP Professional 15 * Edition License. 16 * 17 * See http://visp.inria.fr for more information. 18 * 19 * This software was developed at: 20 * Inria Rennes - Bretagne Atlantique 21 * Campus Universitaire de Beaulieu 22 * 35042 Rennes Cedex 23 * France 24 * 25 * If you have questions regarding the use of this file, please contact 26 * Inria at visp@inria.fr 27 * 28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 30 * 31 * Description: 32 * XML parser to load configuration for vpKeyPoint class. 33 * 34 * Authors: 35 * Souriya Trinh 36 * 37 *****************************************************************************/ 38 39 /*! 40 \file vpXmlConfigParserKeyPoint.cpp 41 \brief Definition of the vpXmlConfigParserKeyPoint class member functions. 42 Class vpXmlConfigParserKeyPoint allows to load configuration defined in a 43 XML file for vpKeyPoint class. 44 45 */ 46 47 #ifndef _vpXmlConfigParserKeyPoint_h_ 48 #define _vpXmlConfigParserKeyPoint_h_ 49 50 #include <visp3/core/vpConfig.h> 51 52 #include <string> 53 54 /*! 55 \class vpXmlConfigParserKeyPoint 56 \ingroup group_vision_keypoints 57 58 \warning This class is only available if pugixml is successfully built. 59 60 */ 61 class VISP_EXPORT vpXmlConfigParserKeyPoint 62 { 63 public: 64 /*! Enumerator for the different filtering matching method. */ 65 enum vpMatchingMethodEnum { 66 constantFactorDistanceThreshold, /*!< Keep all the points below a constant 67 factor threshold. */ 68 stdDistanceThreshold, /*!< Keep all the points below a minimal distance + 69 the standard deviation. */ 70 ratioDistanceThreshold, /*!< Keep all the points enough discriminated. */ 71 stdAndRatioDistanceThreshold, /*!< Keep all the points which fall with the 72 two conditions. */ 73 noFilterMatching /*!< No filtering. */ 74 }; 75 76 vpXmlConfigParserKeyPoint(); 77 ~vpXmlConfigParserKeyPoint(); 78 79 std::string getDetectorName() const; 80 std::string getExtractorName() const; 81 std::string getMatcherName() const; 82 83 double getMatchingFactorThreshold() const; 84 vpMatchingMethodEnum getMatchingMethod() const; 85 double getMatchingRatioThreshold() const; 86 87 int getNbRansacIterations() const; 88 int getNbRansacMinInlierCount() const; 89 double getRansacConsensusPercentage() const; 90 double getRansacReprojectionError() const; 91 double getRansacThreshold() const; 92 bool getUseRansacConsensusPercentage() const; 93 bool getUseRansacVVSPoseEstimation() const; 94 95 void parse(const std::string &filename); 96 97 private: 98 vpXmlConfigParserKeyPoint(const vpXmlConfigParserKeyPoint &); // noncopyable 99 vpXmlConfigParserKeyPoint &operator=(const vpXmlConfigParserKeyPoint &); // 100 101 // PIMPL idiom 102 class Impl; 103 Impl *m_impl; 104 }; 105 #endif 106