Skip to content
Snippets Groups Projects
Commit 4309e066 authored by Angel Santamaria-Navarro's avatar Angel Santamaria-Navarro
Browse files

added matcher bruteforce l1

parent ac79257c
No related branches found
No related tags found
No related merge requests found
...@@ -56,7 +56,9 @@ SET(sources ...@@ -56,7 +56,9 @@ SET(sources
matchers/flannbased/matcher_flannbased.cpp matchers/flannbased/matcher_flannbased.cpp
matchers/flannbased/matcher_flannbased_load_yaml.cpp matchers/flannbased/matcher_flannbased_load_yaml.cpp
matchers/bruteforce/matcher_bruteforce.cpp matchers/bruteforce/matcher_bruteforce.cpp
matchers/bruteforce/matcher_bruteforce_load_yaml.cpp ) matchers/bruteforce/matcher_bruteforce_load_yaml.cpp
matchers/bruteforce_l1/matcher_bruteforce_l1.cpp
matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp)
# application header files # application header files
SET(headers SET(headers
...@@ -95,7 +97,8 @@ SET(headers ...@@ -95,7 +97,8 @@ SET(headers
matchers/matcher_factory.h matchers/matcher_factory.h
matchers/matcher_base.h matchers/matcher_base.h
matchers/flannbased/matcher_flannbased.h matchers/flannbased/matcher_flannbased.h
matchers/bruteforce/matcher_bruteforce.h) matchers/bruteforce/matcher_bruteforce.h
matchers/bruteforce_l1/matcher_bruteforce_l1.h)
# locate the necessary dependencies # locate the necessary dependencies
FIND_PACKAGE(Eigen3 REQUIRED) FIND_PACKAGE(Eigen3 REQUIRED)
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
// Matchers // Matchers
#include "../matchers/flannbased/matcher_flannbased.h" #include "../matchers/flannbased/matcher_flannbased.h"
#include "../matchers/bruteforce/matcher_bruteforce.h" #include "../matchers/bruteforce/matcher_bruteforce.h"
#include "../matchers/bruteforce_l1/matcher_bruteforce_l1.h"
int main(void) int main(void)
{ {
...@@ -117,7 +118,7 @@ int main(void) ...@@ -117,7 +118,7 @@ int main(void)
std::cout << "\n================ MATCHER TEST =================" << std::endl; std::cout << "\n================ MATCHER TEST =================" << std::endl;
std::string def_matcher = "BRUTEFORCE"; std::string def_matcher = "BRUTEFORCEL1";
std::cout << std::endl << "Which MATCHER do you want to test? Type one of the registered names [default: " << def_matcher << "]: "; std::cout << std::endl << "Which MATCHER do you want to test? Type one of the registered names [default: " << def_matcher << "]: ";
std::string mat_name = readFromUser(def_matcher); std::string mat_name = readFromUser(def_matcher);
...@@ -127,6 +128,8 @@ int main(void) ...@@ -127,6 +128,8 @@ int main(void)
mat_ptr = std::static_pointer_cast<MatcherFLANNBASED>(mat_ptr); mat_ptr = std::static_pointer_cast<MatcherFLANNBASED>(mat_ptr);
if (mat_name.compare("BRUTEFORCE") == 0) if (mat_name.compare("BRUTEFORCE") == 0)
mat_ptr = std::static_pointer_cast<MatcherBRUTEFORCE>(mat_ptr); mat_ptr = std::static_pointer_cast<MatcherBRUTEFORCE>(mat_ptr);
if (mat_name.compare("BRUTEFORCEL1") == 0)
mat_ptr = std::static_pointer_cast<MatcherBRUTEFORCEL1>(mat_ptr);
std::cout << std::endl << "... Testing " << det_ptr->getName() << " with " << des_ptr->getName() << " and " << mat_ptr->getName() << " ..." << std::endl; std::cout << std::endl << "... Testing " << det_ptr->getName() << " with " << des_ptr->getName() << " and " << mat_ptr->getName() << " ..." << std::endl;
......
sensor:
type: "USB_CAM"
matcher:
type: "BRUTEFORCEL1"
match type: 1 # Match type. MATCH = 1, KNNMATCH = 2, RADIUSMATCH = 3
\ No newline at end of file
#include "matcher_bruteforce_l1.h"
namespace vision_utils {
MatcherBRUTEFORCEL1::MatcherBRUTEFORCEL1(void)
{}
MatcherBRUTEFORCEL1::~MatcherBRUTEFORCEL1(void)
{}
} /* namespace vision_utils */
// Register in the MatchersFactory
namespace vision_utils
{
VU_REGISTER_MATCHER("BRUTEFORCEL1", MatcherBRUTEFORCEL1);
} /* namespace vision_utils */
#ifndef _MATCHER_BRUTEFORCEL1_H_
#define _MATCHER_BRUTEFORCEL1_H_
#include "../matcher_base.h"
#include "../matcher_factory.h"
// yaml-cpp library
#ifdef USING_YAML
#include <yaml-cpp/yaml.h>
#endif
namespace vision_utils {
// Create all pointers
VU_PTR_TYPEDEFS(MatcherBRUTEFORCEL1);
VU_PTR_TYPEDEFS(MatcherParamsBRUTEFORCEL1);
/** \brief Class parameters
*
*/
struct MatcherParamsBRUTEFORCEL1: public MatcherParamsBase
{
// TODO: Add possible parameters
};
/** \brief DETECTOR class
*
*/
class MatcherBRUTEFORCEL1 : public MatcherBase {
public:
MatcherBRUTEFORCEL1();
virtual ~MatcherBRUTEFORCEL1(void);
// Factory method
static MatcherBasePtr create(const std::string& _unique_name, const ParamsBasePtr _params);
private:
void defineMatcher(const ParamsBasePtr _params);
};
/*
* brief Define detector
*/
inline void MatcherBRUTEFORCEL1::defineMatcher(const ParamsBasePtr _params)
{
params_base_ptr_ = std::static_pointer_cast<MatcherParamsBase>(_params);
MatcherParamsBRUTEFORCEL1Ptr params_ptr = std::static_pointer_cast<MatcherParamsBRUTEFORCEL1>(_params);
matcher_ = cv::DescriptorMatcher::create("BruteForce-L1");
}
/*
* brief Create object in factory
*/
inline MatcherBasePtr MatcherBRUTEFORCEL1::create(const std::string& _unique_name, const ParamsBasePtr _params)
{
MatcherBRUTEFORCEL1Ptr mat_ptr = std::make_shared<MatcherBRUTEFORCEL1>();
mat_ptr->setName(_unique_name);
mat_ptr->defineMatcher(_params);
return mat_ptr;
}
} /* namespace vision_utils */
#endif /* _MATCHER_BRUTEFORCEL1_H_ */
#include "matcher_bruteforce_l1.h"
#ifdef USING_YAML
// yaml-cpp library
#include <yaml-cpp/yaml.h>
namespace vision_utils
{
namespace
{
static ParamsBasePtr createParamsBRUTEFORCEL1Matcher(const std::string & _filename_dot_yaml)
{
MatcherParamsBRUTEFORCEL1Ptr params_ptr = std::make_shared<MatcherParamsBRUTEFORCEL1>();
using std::string;
using YAML::Node;
Node yaml_params = YAML::LoadFile(_filename_dot_yaml);
if (!yaml_params.IsNull())
{
Node d_yaml = yaml_params["matcher"];
if(d_yaml["type"].as<string>() == "BRUTEFORCEL1")
{
params_ptr->match_type = d_yaml["match type"].as<int>();
// TODO: Add possible parameters
}else
{
std::cerr << "Bad configuration file. Wrong type " << d_yaml["type"].as<string>() << std::endl;
return nullptr;
}
}
return params_ptr;
}
// Register in the SensorFactory
const bool registered_matBRUTEFORCEL1_params = ParamsFactory::get().registerCreator("BRUTEFORCEL1 MAT", createParamsBRUTEFORCEL1Matcher);
} /* namespace [unnamed] */
} /* namespace vision_utils */
#endif /* IF USING_YAML */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment