aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp/gra/FeaturePointsMatch.h
blob: 8b05632dc92913c76bcdbb855a2214deef336588 (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
#ifndef   gra_FeaturePointsMatch_H__
#define   gra_FeaturePointsMatch_H__

#include "FeaturePoint.h"

#include "../oo/ObjBase.h"

#include <utility>
#include <cstdlib>

namespace meow {

struct FeaturePointIndexPair {
  std::pair<size_t, size_t> from;
  std::pair<size_t, size_t> to;
  
  FeaturePointIndexPair() {
  }
  FeaturePointIndexPair(size_t ff, size_t fs,
                        size_t tf, size_t ts) {
    from.first  = ff;
    from.second = fs;
    to.first    = tf;
    to.second   = ts;
  }
  bool operator==(FeaturePointIndexPair const& p) const {
    return (from == p.from && to == p.to);
  }
};

typedef std::vector<FeaturePointIndexPair> FeaturePointIndexPairs;

template<class Scalar, class Description>
class FeaturePointsMatch: public ObjBase {
protected:
  FeaturePointsMatch() {
  }
public:
  typedef std::vector<FeaturePoint<Scalar, Description> > FeaturePoints;
  typedef std::vector<FeaturePoints                     > FeaturePointss;

  virtual ~FeaturePointsMatch() {
  }

  virtual FeaturePointIndexPairs match(size_t dimension,
                                       FeaturePoints const& from,
                                       FeaturePoints const& to) const = 0;

  virtual FeaturePointIndexPairs match(size_t dimension,
                                       FeaturePoints const& from,
                                       FeaturePointss const& to) const = 0;

  virtual FeaturePointIndexPairs match(size_t dimension,
                                       FeaturePointss const& from,
                                       FeaturePointss const& to) const = 0;
  
  virtual FeaturePointIndexPairs match(size_t dimension,
                                       FeaturePointss const& fpss) const = 0;
};

}

#endif // gra_FeaturePointsMatch_H__