Go to the documentation of this file.00001 #ifndef __fovis_feature_match_hpp__
00002 #define __fovis_feature_match_hpp__
00003
00004 #include <vector>
00005
00006 #include <Eigen/Dense>
00007 #include <Eigen/Geometry>
00008
00009 #include "keypoint.hpp"
00010
00011 namespace fovis
00012 {
00013
00014 class PyramidLevel;
00015
00019 enum MatchStatusCode {
00023 MATCH_NEEDS_DEPTH_REFINEMENT,
00027 MATCH_REFINEMENT_FAILED,
00031 MATCH_OK
00032 };
00033
00041 class FeatureMatch
00042 {
00043 public:
00044 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
00045
00046 public:
00050 FeatureMatch() :
00051 target_keypoint(NULL),
00052 ref_keypoint(NULL),
00053 compatibility_degree(0),
00054 in_maximal_clique(false),
00055 inlier(false),
00056 reprojection_error(0),
00057 track_id(-1)
00058 {
00059 }
00060
00064 FeatureMatch(KeypointData* target_keypoint, KeypointData* ref_keypoint) :
00065 target_keypoint(target_keypoint),
00066 ref_keypoint(ref_keypoint),
00067 compatibility_degree(0),
00068 in_maximal_clique(false),
00069 inlier(false),
00070 reprojection_error(0),
00071 track_id(-1)
00072 {
00073 refined_target_keypoint.copyFrom(*target_keypoint);
00074 }
00075
00079 KeypointData* target_keypoint;
00080
00084 KeypointData* ref_keypoint;
00085
00090 KeypointData refined_target_keypoint;
00091
00097 std::vector<int> consistency_vec;
00098
00102 int compatibility_degree;
00103
00107 bool in_maximal_clique;
00108
00112 bool inlier;
00113
00117 int id;
00118
00123 double reprojection_error;
00124
00133 int track_id;
00134
00138 MatchStatusCode status;
00139 };
00140
00141 }
00142
00143 #endif