You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

250 lines
8.5 KiB
C++

/*
* fbr_global implementation
*
* Copyright (C) HamidReza Houshiar
*
* Released under the GPL version 3.
*
*/
#include "slam6d/fbr/fbr_global.h"
#include <stdexcept>
namespace fbr{
string scanFormatToString(IOType format){
return io_type_to_libname(format);
}
IOType stringToScanFormat(string format){
return formatname_to_io_type(format.c_str());
}
string projectionMethodToString(projection_method method){
string sMethod;
switch(method){
case EQUIRECTANGULAR:
sMethod = "EQUIRECTANGULAR";
break;
case CYLINDRICAL:
sMethod = "CYLINDRICAL";
break;
case MERCATOR:
sMethod = "MERCATOR";
break;
case RECTILINEAR:
sMethod = "RECTILINEAR";
break;
case PANNINI:
sMethod = "PANNINI";
break;
case STEREOGRAPHIC:
sMethod = "STEREOGRAPHIC";
break;
case ZAXIS:
sMethod = "ZAXIS";
break;
case CONIC:
sMethod = "CONIC";
break;
default:
throw std::runtime_error(std::string("projection method ") + to_string(method) + std::string(" could not be matched to a projection method"));
}
return sMethod;
}
projection_method stringToProjectionMethod(string method){
if(strcasecmp(method.c_str(), "EQUIRECTANGULAR") == 0) return EQUIRECTANGULAR;
else if(strcasecmp(method.c_str(), "CYLINDRICAL") == 0) return CYLINDRICAL;
else if(strcasecmp(method.c_str(), "MERCATOR") == 0) return MERCATOR;
else if(strcasecmp(method.c_str(), "RECTILINEAR") == 0) return RECTILINEAR;
else if(strcasecmp(method.c_str(), "PANNINI") == 0) return PANNINI;
else if(strcasecmp(method.c_str(), "STEREOGRAPHIC") == 0) return STEREOGRAPHIC;
else if(strcasecmp(method.c_str(), "ZAXIS") == 0) return ZAXIS;
else if(strcasecmp(method.c_str(), "CONIC") == 0) return CONIC;
else throw std::runtime_error(std::string("projection method ") + method + std::string(" is unknown"));
}
string panoramaMapMethodToString(panorama_map_method method){
string sMethod;
switch(method){
case FARTHEST:
sMethod = "FARTHEST";
break;
case EXTENDED:
sMethod = "EXTENDED";
break;
default:
throw std::runtime_error(std::string("panorama map method ") + to_string(method) + std::string(" could not be matched to a panorama map method"));
}
return sMethod;
}
panorama_map_method stringToPanoramaMapMethod(string method){
if(strcasecmp(method.c_str(), "FARTHEST") == 0) return FARTHEST;
else if(strcasecmp(method.c_str(), "EXTENDED") == 0) return EXTENDED;
else throw std::runtime_error(std::string("panorama map method ") + method + std::string(" is unknown"));
}
string featureDetectorMethodToString(feature_detector_method method){
string sMethod;
switch(method){
case SIFT_DET:
sMethod = "SIFT_DET";
break;
case SURF_DET:
sMethod = "SURF_DET";
break;
case ORB_DET:
sMethod = "ORB_DET";
break;
case FAST_DET:
sMethod = "FAST_DET";
break;
case STAR_DET:
sMethod = "STAR_DET";
break;
default:
throw std::runtime_error(std::string("feature detector method ") + to_string(method) + std::string(" could not be matched to a feature detector method"));
}
return sMethod;
}
feature_detector_method stringToFeatureDetectorMethod(string method){
if(strcasecmp(method.c_str(), "SIFT") == 0) return SIFT_DET;
else if(strcasecmp(method.c_str(), "SURF") == 0) return SURF_DET;
else if(strcasecmp(method.c_str(), "ORB") == 0) return ORB_DET;
else if(strcasecmp(method.c_str(), "FAST") == 0) return FAST_DET;
else if(strcasecmp(method.c_str(), "STAR") == 0) return STAR_DET;
else throw std::runtime_error(std::string("feature detector method ") + method + std::string(" is unknown"));
}
string featureDescriptorMethodToString(feature_descriptor_method method){
string sMethod;
switch(method){
case SIFT_DES:
sMethod = "SIFT_DES";
break;
case SURF_DES:
sMethod = "SURF_DES";
break;
case ORB_DES:
sMethod = "ORB_DES";
break;
default:
throw std::runtime_error(std::string("feature descriptor method ") + to_string(method) + std::string(" could not be matched to a feature descriptor method"));
}
return sMethod;
}
feature_descriptor_method stringToFeatureDescriptorMethod(string method){
if(strcasecmp(method.c_str(), "SIFT") == 0) return SIFT_DES;
else if(strcasecmp(method.c_str(), "SURF") == 0) return SURF_DES;
else if(strcasecmp(method.c_str(), "ORB") == 0) return ORB_DES;
else throw std::runtime_error(std::string("feature descriptor method ") + method + std::string(" is unknown"));
}
string matcherMethodToString(matcher_method method){
string sMethod;
switch(method){
case BRUTEFORCE:
sMethod = "BRUTEFORCE";
break;
case FLANN:
sMethod = "FLANN";
break;
case KNN:
sMethod = "KNN";
break;
case RADIUS:
sMethod = "RADIUS";
break;
case RATIO:
sMethod = "RATIO";
break;
default:
throw std::runtime_error(std::string("matcher method ") + to_string(method) + std::string(" could not be matched to a matcher method"));
}
return sMethod;
}
matcher_method stringToMatcherMethod(string method){
if(strcasecmp(method.c_str(), "BRUTEFORCE") == 0) return BRUTEFORCE;
else if(strcasecmp(method.c_str(), "FLANN") == 0) return FLANN;
else if(strcasecmp(method.c_str(), "KNN") == 0) return KNN;
else if(strcasecmp(method.c_str(), "RADIUS") == 0) return RADIUS;
else if(strcasecmp(method.c_str(), "RATIO") == 0) return RATIO;
else throw std::runtime_error(std::string("matcher method ") + method + std::string(" is unknown"));
}
string registrationMethodToString(registration_method method){
string sMethod;
switch(method){
case ALL:
sMethod = "ALL";
break;
case RANSAC:
sMethod = "RANSAC";
break;
case DISABLE:
sMethod = "DISABLE";
break;
default:
throw std::runtime_error(std::string("registration method ") + to_string(method) + std::string(" could not be matched to a registration method"));
}
return sMethod;
}
registration_method stringToRegistrationMethod(string method){
if(strcasecmp(method.c_str(), "ALL") == 0) return ALL;
else if(strcasecmp(method.c_str(), "RANSAC") == 0) return RANSAC;
else if(strcasecmp(method.c_str(), "DISABLE") == 0) return DISABLE;
else throw std::runtime_error(std::string("registration method ") + method + std::string(" is unknown"));
}
string featureFiltrationMethodToString(feature_filtration_method method){
string fFiltrationMethod;
switch(method){
case OCCLUSION:
fFiltrationMethod = "OCCLUSION";
break;
case STANDARD_DEVIATION:
fFiltrationMethod = "STANDARD_DEVIATION";
break;
case DISABLE_FILTER:
fFiltrationMethod = "DISABLE_FILTER";
break;
default:
throw std::runtime_error(std::string("feature filtration method ") + to_string(method) + std::string(" could not be matched to a feature filtration method"));
}
return fFiltrationMethod;
}
feature_filtration_method stringToFeatureFiltrationMethod(string method){
if(strcasecmp(method.c_str(), "OCCLUSION") == 0) return OCCLUSION;
else if(strcasecmp(method.c_str(), "STANDARD_DEVIATION") == 0) return STANDARD_DEVIATION;
else if(strcasecmp(method.c_str(), "DISABLE_FILTER") == 0) return DISABLE_FILTER;
else throw std::runtime_error(std::string("feature filtration method ") + method + std::string(" is unknown"));
}
string matchingFiltrationMethodToString(matching_filtration_method method){
string mFiltrationMethod;
switch(method){
case FUNDEMENTAL_MATRIX:
mFiltrationMethod = "FUNDEMENTAL_MATRIX";
break;
case DISABLE_MATCHING_FILTER:
mFiltrationMethod = "DISABLE_MATCHING_FILTER";
break;
default:
throw std::runtime_error(std::string("matching filtration method ") + to_string(method) + std::string(" could not be matched to a matching filtration method"));
}
return mFiltrationMethod;
}
matching_filtration_method stringToMatchingFiltrationMethod(string method){
if(strcasecmp(method.c_str(), "FUNDEMENTAL_MATRIX") == 0) return FUNDEMENTAL_MATRIX;
else if(strcasecmp(method.c_str(), "DISABLE_MATCHING_FILTER") == 0) return DISABLE_MATCHING_FILTER;
else throw std::runtime_error(std::string("matching filtration method ") + method + std::string(" is unknown"));
}
}