aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp.test/src/autostitch_FeaturePointsDetector_Harris.cpp
blob: ebcca5b32915bb5700316e4a6876b1c03ea0f0c8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "autostitch.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 MyFeaturePointsDetector{
  private:
    FeaturePointsDetector_Harris<RGBf_Space> _body;
  public:
    Usage usage() const{
      Usage ret;
      ret.optionAdd('K',
                    "Specify the constant K of 'R = detM - KtraceM'",
                    "<floating point>", stringPrintf("%.10f", _body.paramK()),
                    false);
      ret.optionAdd('R',
                    "Specify the threshold of R to determind whether is "
                    "featuer point or not",
                    "<floating point>", stringPrintf("%.10f", _body.paramR()),
                    false);
      ret.optionAdd('W',
                    "Specify the sigma of the gaussian blur",
                    "<floating point>", stringPrintf("%.10f", _body.paramW()),
                    false);
      ret.optionAdd('N',
                    "Specify the sigma of the gaussian blur to de-noise",
                    "<floating point>", stringPrintf("%.10f", _body.paramN()),
                    false);
      ret.optionAdd('G',
                    "Specify the sigma of the gaussian blur to generate feature",
                    "<floating point>", stringPrintf("%.10f", _body.paramG()),
                    false);
      ret.optionAdd('L',
                    ".........",
                    "<floating point>", stringPrintf("%.10f", _body.paramL()),
                    false);
      ret.optionAdd('B',
                    "Description size",
                    "<number>", stringPrintf("%lu", _body.paramB()),
                    false);
      return ret;
    }
    bool usage(meow::Usage const& usg){
      double K = atof(usg.optionValue('K', 0).c_str());
      double R = atof(usg.optionValue('R', 0).c_str());
      double W = atof(usg.optionValue('W', 0).c_str());
      double N = atof(usg.optionValue('N', 0).c_str());
      double L = atof(usg.optionValue('L', 0).c_str());
      double G = atof(usg.optionValue('G', 0).c_str());
      size_t B = atoi(usg.optionValue('B', 0).c_str());
      _body.paramK(K);
      _body.paramR(R);
      _body.paramW(W);
      _body.paramN(N);
      _body.paramL(L);
      _body.paramG(G);
      _body.paramB(B);
      return true;
    }
    std::vector<meow::FeaturePoint<double, double> >
    detect(meow::Bitmap<RGBf_Space> const& bmp){
      return _body.detect(bmp);
    }

    std::string type() const{ return std::string("Harris"); }
    ObjBase* create() const{ return new Harris(); }
};

static meow::ObjSelector<FPSD_ID> __(new Harris(), true);