diff options
Diffstat (limited to 'meowpp.test/src/features_Harris.cpp')
-rw-r--r-- | meowpp.test/src/features_Harris.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/meowpp.test/src/features_Harris.cpp b/meowpp.test/src/features_Harris.cpp new file mode 100644 index 0000000..f3c2c10 --- /dev/null +++ b/meowpp.test/src/features_Harris.cpp @@ -0,0 +1,85 @@ +#include "features__.h" + +#include "meowpp/oo/ObjBase.h" +#include "meowpp/oo/ObjSelector.h" +#include "meowpp/geo/Vectors.h" +#include "meowpp/gra/FeaturePointsDetector_Harris.h" + +using namespace meow; + +class Harris: public FeaturePointsDetectors { + private: + FeaturePointsDetector_Harris<RGBf_Space> detector_; + public: + std::string description() const { + return "Harris-Corner-Detect"; + } + + Usage usage() const { + Usage ret; + ret.optionAdd("harris-k", + "Specify the constant K of 'R = detM - KtraceM'", + "<floating point>", + stringPrintf("%.10f", detector_.paramK()), + false); + ret.optionAdd("harris-r", + "Specify the threshold of R to determind whether is " + "featuer point or not", + "<floating point>", + stringPrintf("%.10f", detector_.paramR()), + false); + ret.optionAdd("harris-w", + "Specify the sigma of the gaussian blur", + "<floating point>", + stringPrintf("%.10f", detector_.paramW()), + false); + ret.optionAdd("harris-n", + "Specify the sigma of the gaussian blur to de-noise", + "<floating point>", + stringPrintf("%.10f", detector_.paramN()), + false); + ret.optionAdd("harris-g", + "Specify sigma of the gaussian blur to generate feature", + "<floating point>", + stringPrintf("%.10f", detector_.paramG()), + false); + ret.optionAdd("harris-l", + ".........", + "<floating point>", + stringPrintf("%.10f", detector_.paramL()), + false); + ret.optionAdd("harris-b", + "Description size", + "<number>", + stringPrintf("%lu", detector_.paramB()), + false); + return ret; + } + + bool usage(meow::Usage const& usg) { + double K = atof(usg.optionValue("harris-k", 0).c_str()); + double R = atof(usg.optionValue("harris-r", 0).c_str()); + double W = atof(usg.optionValue("harris-w", 0).c_str()); + double N = atof(usg.optionValue("harris-n", 0).c_str()); + double L = atof(usg.optionValue("harris-l", 0).c_str()); + double G = atof(usg.optionValue("harris-g", 0).c_str()); + size_t B = atoi(usg.optionValue("harris-b", 0).c_str()); + detector_.paramK(K); + detector_.paramR(R); + detector_.paramW(W); + detector_.paramN(N); + detector_.paramL(L); + detector_.paramG(G); + detector_.paramB(B); + return true; + } + + FeaturePoints detect(Bitmap<RGBf_Space> const& bmp) { + return detector_.detect(bmp); + } + + std::string type() const { return std::string("Harris"); } + ObjBase* create() const { return new Harris(); } +}; + +static meow::ObjSelector<kFPSD_ID> __(new Harris(), true); |