00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef ABSTRACTFEATURESETMATCHER_H_
00024 #define ABSTRACTFEATURESETMATCHER_H_
00025
00026 #include <feature/InterestPoint.h>
00027 #include <geometry/point.h>
00028 #include <vector>
00029 #include <utility>
00030
00031
00041 class AbstractFeatureSetMatcher {
00042 public:
00048 AbstractFeatureSetMatcher(double acceptanceThreshold);
00049
00059 virtual double matchSets(const std::vector<InterestPoint *> &reference, const std::vector<InterestPoint *> &data, OrientedPoint2D& transformation) const = 0;
00060
00071 virtual double matchSets(const std::vector<InterestPoint *> &reference, const std::vector<InterestPoint *> &data, OrientedPoint2D& transformation,
00072 std::vector< std::pair<InterestPoint *, InterestPoint *> > &correspondences) const = 0;
00073
00075 inline void setAcceptanceThreshold(double acceptanceThreshold)
00076 {m_acceptanceThreshold = acceptanceThreshold;}
00077
00079 inline double getAcceptanceThreshold()
00080 {return m_acceptanceThreshold;}
00081
00088 virtual OrientedPoint2D generateHypothesis(const std::pair< std::pair<InterestPoint *, InterestPoint *>, std::pair<InterestPoint *, InterestPoint *> > &correspondences) const;
00089
00097 virtual double verifyHypothesis(const std::vector<InterestPoint *> &reference, const std::vector<InterestPoint *> &data, const OrientedPoint2D& transformation,
00098 std::vector< std::pair<InterestPoint *, InterestPoint *> > &inlierSet) const;
00099
00100 protected:
00101 double m_acceptanceThreshold;
00102 };
00103
00104 #endif