/* * feature_mathcer implementation * * Copyright (C) HamidReza Houshiar * * Released under the GPL version 3. * */ #include "slam6d/fbr/feature_matcher.h" using namespace std; namespace fbr{ void feature_matcher::init(matcher_method method, int k, double r, matching_filtration_method filtration){ mMethod = method; knn = k; radius = r; nOfMatches = 0; nOfFilteredMatches = 0; mFiltrationMethod = filtration; } feature_matcher::feature_matcher(){ init(RATIO, 0, 0, DISABLE_MATCHING_FILTER); } feature_matcher::feature_matcher(matcher_method method){ if(method == KNN) init(method, 3, 0, DISABLE_MATCHING_FILTER); else if(method == RADIUS) init(method, 0, 1, DISABLE_MATCHING_FILTER); else init(method, 0, 0, DISABLE_MATCHING_FILTER); } feature_matcher::feature_matcher(matcher_method method, double p){ if(method == KNN) init(method, p, 0, DISABLE_MATCHING_FILTER); else if(method == RADIUS) init(method, 0, p, DISABLE_MATCHING_FILTER); else init(method, 0, 0, DISABLE_MATCHING_FILTER); } feature_matcher::feature_matcher(matcher_method method, double p, matching_filtration_method filtration){ if(method == KNN) init(method, p, 0, filtration); else if(method == RADIUS) init(method, 0, p, filtration); else init(method, 0, 0, filtration); } void feature_matcher::findMatches(feature qFeature, feature tFeature){ vector< cv::DMatch > qtInitialMatches; vector > qtInitialMatchesVector; if(qFeature.getFeatures().size() == 0 || tFeature.getFeatures().size() == 0){ cout<<"No features has found in one or both scans!!"<