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

added lucid descriptor

parent c06006be
No related branches found
No related tags found
No related merge requests found
...@@ -50,6 +50,8 @@ SET(sources ...@@ -50,6 +50,8 @@ SET(sources
descriptors/brief/descriptor_brief_load_yaml.cpp descriptors/brief/descriptor_brief_load_yaml.cpp
descriptors/daisy/descriptor_daisy.cpp descriptors/daisy/descriptor_daisy.cpp
descriptors/daisy/descriptor_daisy_load_yaml.cpp descriptors/daisy/descriptor_daisy_load_yaml.cpp
descriptors/lucid/descriptor_lucid.cpp
descriptors/lucid/descriptor_lucid_load_yaml.cpp
matchers/matcher_base.cpp ) matchers/matcher_base.cpp )
# application header files # application header files
...@@ -85,6 +87,7 @@ SET(headers ...@@ -85,6 +87,7 @@ SET(headers
descriptors/freak/descriptor_freak.h descriptors/freak/descriptor_freak.h
descriptors/brief/descriptor_brief.h descriptors/brief/descriptor_brief.h
descriptors/daisy/descriptor_daisy.h descriptors/daisy/descriptor_daisy.h
descriptors/lucid/descriptor_lucid.h
matchers/matcher_factory.h matchers/matcher_factory.h
matchers/matcher_base.h) matchers/matcher_base.h)
......
#include "descriptor_lucid.h"
namespace vision_utils {
DescriptorLUCID::DescriptorLUCID(void)
{}
DescriptorLUCID::~DescriptorLUCID(void)
{}
} /* namespace vision_utils */
// Register in the DescriptorsFactory
namespace vision_utils
{
VU_REGISTER_DESCRIPTOR("LUCID", DescriptorLUCID);
} /* namespace vision_utils */
#ifndef _DESCRIPTOR_LUCID_H_
#define _DESCRIPTOR_LUCID_H_
#include "../descriptor_base.h"
#include "../descriptor_factory.h"
// yaml-cpp library
#ifdef USING_YAML
#include <yaml-cpp/yaml.h>
#endif
namespace vision_utils {
// Create all pointers
VU_PTR_TYPEDEFS(DescriptorLUCID);
VU_PTR_TYPEDEFS(DescriptorParamsLUCID);
/** \brief Class parameters
*
*/
struct DescriptorParamsLUCID: public ParamsBase
{
int lucid_kernel = 1; // Kernel for descriptor construction, where 1=3x3, 2=5x5, 3=7x7 and so forth
int blur_kernel = 2; // Kernel for blurring image prior to descriptor construction, where 1=3x3, 2=5x5, 3=7x7 and so forth
};
/** \brief DETECTOR class
*
*/
class DescriptorLUCID : public DescriptorBase {
public:
DescriptorLUCID();
virtual ~DescriptorLUCID(void);
// Factory method
static DescriptorBasePtr create(const std::string& _unique_name, const ParamsBasePtr _params);
private:
void defineDescriptor(const ParamsBasePtr _params);
};
/*
* brief Define detector
*/
inline void DescriptorLUCID::defineDescriptor(const ParamsBasePtr _params)
{
DescriptorParamsLUCIDPtr params_ptr = std::static_pointer_cast<DescriptorParamsLUCID>(_params);
descriptor_ = cv::xfeatures2d::LUCID::create(params_ptr->lucid_kernel,
params_ptr->blur_kernel);
}
/*
* brief Create object in factory
*/
inline DescriptorBasePtr DescriptorLUCID::create(const std::string& _unique_name, const ParamsBasePtr _params)
{
DescriptorLUCIDPtr det_ptr = std::make_shared<DescriptorLUCID>();
det_ptr->setName(_unique_name);
det_ptr->defineDescriptor(_params);
return det_ptr;
}
} /* namespace vision_utils */
#endif /* _DESCRIPTOR_LUCID_H_ */
#include "descriptor_lucid.h"
#ifdef USING_YAML
// yaml-cpp library
#include <yaml-cpp/yaml.h>
namespace vision_utils
{
namespace
{
static ParamsBasePtr createParamsLUCIDDescriptor(const std::string & _filename_dot_yaml)
{
DescriptorParamsLUCIDPtr params_ptr = std::make_shared<DescriptorParamsLUCID>();
using std::string;
using YAML::Node;
Node yaml_params = YAML::LoadFile(_filename_dot_yaml);
if (!yaml_params.IsNull())
{
Node d_yaml = yaml_params["descriptor"];
if(d_yaml["type"].as<string>() == "LUCID")
{
params_ptr->lucid_kernel = d_yaml["lucid_kernel"].as<int>();
params_ptr->blur_kernel = d_yaml["blur_kernel"].as<int>();
}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_desLUCID_params = ParamsFactory::get().registerCreator("LUCID DES", createParamsLUCIDDescriptor);
} /* namespace [unnamed] */
} /* namespace vision_utils */
#endif /* IF USING_YAML */
...@@ -32,7 +32,8 @@ ...@@ -32,7 +32,8 @@
#include "../descriptors/freak/descriptor_freak.h" #include "../descriptors/freak/descriptor_freak.h"
#include "../descriptors/brief/descriptor_brief.h" #include "../descriptors/brief/descriptor_brief.h"
#include "../descriptors/daisy/descriptor_daisy.h" #include "../descriptors/daisy/descriptor_daisy.h"
//#include "../descriptors/lucid/descriptor_lucid.h" #include "../descriptors/lucid/descriptor_lucid.h"
//#include "../descriptors/dense/descriptor_dense.h"
int main(void) int main(void)
{ {
...@@ -110,8 +111,10 @@ int main(void) ...@@ -110,8 +111,10 @@ int main(void)
des_ptr = std::static_pointer_cast<DescriptorBRIEF>(des_ptr); des_ptr = std::static_pointer_cast<DescriptorBRIEF>(des_ptr);
else if (des_name.compare("DAISY") == 0) else if (des_name.compare("DAISY") == 0)
des_ptr = std::static_pointer_cast<DescriptorDAISY>(des_ptr); des_ptr = std::static_pointer_cast<DescriptorDAISY>(des_ptr);
// else if (des_name.compare("LUCID") == 0) else if (des_name.compare("LUCID") == 0)
// des_ptr = std::static_pointer_cast<DescriptorLUCID>(des_ptr); des_ptr = std::static_pointer_cast<DescriptorLUCID>(des_ptr);
// else if (des_name.compare("DENSE") == 0)
// des_ptr = std::static_pointer_cast<DescriptorDENSE>(des_ptr);
std::cout << std::endl << "... Testing " << det_ptr->getName() << " with " << des_ptr->getName() << " ..." << std::endl; std::cout << std::endl << "... Testing " << det_ptr->getName() << " with " << des_ptr->getName() << " ..." << std::endl;
......
sensor:
type: "USB_CAM"
descriptor:
type: "LUCID"
lucid_kernel: 1
blur_kernel: 2
\ No newline at end of file
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