diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 387a6db6f21eed67f02b5ac56f7273d54cafdf3f..46028f0600b458c4b7818ca8597ed074aebcbb0d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -53,15 +53,17 @@ SET(sources
 	descriptors/lucid/descriptor_lucid.cpp
 	descriptors/lucid/descriptor_lucid_load_yaml.cpp	
 	matchers/matcher_base.cpp 
-	matchers/flannbased/matcher_flannbased.cpp
-	matchers/flannbased/matcher_flannbased_load_yaml.cpp
 	matchers/bruteforce/matcher_bruteforce.cpp
 	matchers/bruteforce/matcher_bruteforce_load_yaml.cpp
 	matchers/bruteforce_l1/matcher_bruteforce_l1.cpp
 	matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp
 	matchers/bruteforce_hamming/matcher_bruteforce_hamming.cpp
-	matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp	)
-
+	matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp
+	matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.cpp
+	matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2_load_yaml.cpp
+	matchers/flannbased/matcher_flannbased.cpp
+	matchers/flannbased/matcher_flannbased_load_yaml.cpp)
+	
 # application header files
 SET(headers 
 	vision_utils.h 
@@ -98,10 +100,11 @@ SET(headers
 	descriptors/lucid/descriptor_lucid.h
 	matchers/matcher_factory.h
 	matchers/matcher_base.h
-	matchers/flannbased/matcher_flannbased.h
 	matchers/bruteforce/matcher_bruteforce.h
 	matchers/bruteforce_l1/matcher_bruteforce_l1.h
-	matchers/bruteforce_hamming/matcher_bruteforce_hamming.h)
+	matchers/bruteforce_hamming/matcher_bruteforce_hamming.h
+	matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.h
+	matchers/flannbased/matcher_flannbased.h)
 
 # locate the necessary dependencies
 FIND_PACKAGE(Eigen3 REQUIRED)
diff --git a/src/examples/test_matcher.cpp b/src/examples/test_matcher.cpp
index 592976c48707459fd73948c32945d8b11c5d0724..18e09bff60a08f7011ab54593da158e62aefa6aa 100644
--- a/src/examples/test_matcher.cpp
+++ b/src/examples/test_matcher.cpp
@@ -39,6 +39,7 @@
 #include "../matchers/bruteforce/matcher_bruteforce.h"
 #include "../matchers/bruteforce_l1/matcher_bruteforce_l1.h"
 #include "../matchers/bruteforce_hamming/matcher_bruteforce_hamming.h"
+#include "../matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.h"
 
 int main(void)
 {
@@ -119,7 +120,7 @@ int main(void)
 
     std::cout << "\n================ MATCHER TEST  =================" << std::endl;
 
-    std::string def_matcher = "BRUTEFORCE_HAMMING";
+    std::string def_matcher = "BRUTEFORCE";
     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);
 
@@ -133,6 +134,8 @@ int main(void)
     	mat_ptr = std::static_pointer_cast<MatcherBRUTEFORCE_L1>(mat_ptr);
     if (mat_name.compare("BRUTEFORCE_HAMMING") == 0)
     	mat_ptr = std::static_pointer_cast<MatcherBRUTEFORCE_HAMMING>(mat_ptr);
+    if (mat_name.compare("BRUTEFORCE_HAMMING_2") == 0)
+    	mat_ptr = std::static_pointer_cast<MatcherBRUTEFORCE_HAMMING_2>(mat_ptr);
 
     std::cout << std::endl << "... Testing " << det_ptr->getName() << " with " <<  des_ptr->getName() << " and " <<  mat_ptr->getName() << " ..." << std::endl;
 
diff --git a/src/examples/yaml/BRUTEFORCE_HAMMING_2.yaml b/src/examples/yaml/BRUTEFORCE_HAMMING_2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..86fe6203e9abe3e0db820ccbaa521aa36bde03a8
--- /dev/null
+++ b/src/examples/yaml/BRUTEFORCE_HAMMING_2.yaml
@@ -0,0 +1,5 @@
+sensor:
+  type: "USB_CAM"
+matcher:
+  type: "BRUTEFORCE_HAMMING_2"
+  match type: 1     #  Match type. MATCH = 1, KNNMATCH = 2, RADIUSMATCH = 3
\ No newline at end of file
diff --git a/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.cpp b/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..493f7dcfdb9fbd54930812f3b120e3739dd3f09d
--- /dev/null
+++ b/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.cpp
@@ -0,0 +1,17 @@
+#include "matcher_bruteforce_hamming_2.h"
+
+namespace vision_utils {
+
+MatcherBRUTEFORCE_HAMMING_2::MatcherBRUTEFORCE_HAMMING_2(void)
+{}
+
+MatcherBRUTEFORCE_HAMMING_2::~MatcherBRUTEFORCE_HAMMING_2(void)
+{}
+
+} /* namespace vision_utils */
+
+// Register in the MatchersFactory
+namespace vision_utils
+{
+VU_REGISTER_MATCHER("BRUTEFORCE_HAMMING_2", MatcherBRUTEFORCE_HAMMING_2);
+} /* namespace vision_utils */
diff --git a/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.h b/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.h
new file mode 100644
index 0000000000000000000000000000000000000000..acec6949a938d0b743c551a6150326fcd88bb7c3
--- /dev/null
+++ b/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2.h
@@ -0,0 +1,66 @@
+#ifndef _MATCHER_BRUTEFORCE_HAMMING_2_H_
+#define _MATCHER_BRUTEFORCE_HAMMING_2_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(MatcherBRUTEFORCE_HAMMING_2);
+VU_PTR_TYPEDEFS(MatcherParamsBRUTEFORCE_HAMMING_2);
+
+/** \brief Class parameters
+ *
+ */
+struct MatcherParamsBRUTEFORCE_HAMMING_2: public MatcherParamsBase
+{
+	// TODO: Add possible parameters
+};
+
+/** \brief DETECTOR class
+ *
+ */
+class MatcherBRUTEFORCE_HAMMING_2 : public MatcherBase {
+
+    public:
+		MatcherBRUTEFORCE_HAMMING_2();
+        virtual ~MatcherBRUTEFORCE_HAMMING_2(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 MatcherBRUTEFORCE_HAMMING_2::defineMatcher(const ParamsBasePtr _params)
+{
+	params_base_ptr_ = std::static_pointer_cast<MatcherParamsBase>(_params);
+	MatcherParamsBRUTEFORCE_HAMMING_2Ptr params_ptr = std::static_pointer_cast<MatcherParamsBRUTEFORCE_HAMMING_2>(_params);
+    matcher_ = cv::DescriptorMatcher::create("BruteForce-Hamming(2)");
+}
+
+/*
+ * brief Create object in factory
+ */
+inline MatcherBasePtr MatcherBRUTEFORCE_HAMMING_2::create(const std::string& _unique_name, const ParamsBasePtr _params)
+{
+    MatcherBRUTEFORCE_HAMMING_2Ptr mat_ptr = std::make_shared<MatcherBRUTEFORCE_HAMMING_2>();
+    mat_ptr->setName(_unique_name);
+    mat_ptr->defineMatcher(_params);
+    return mat_ptr;
+}
+
+} /* namespace vision_utils */
+
+#endif /* _MATCHER_BRUTEFORCE_HAMMING_2_H_ */
diff --git a/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2_load_yaml.cpp b/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2_load_yaml.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..41fd170f08bb4bc59d68f945d3e9629f20cdff0c
--- /dev/null
+++ b/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2_load_yaml.cpp
@@ -0,0 +1,46 @@
+#include "matcher_bruteforce_hamming_2.h"
+
+#ifdef USING_YAML
+
+// yaml-cpp library
+#include <yaml-cpp/yaml.h>
+
+namespace vision_utils
+{
+
+namespace
+{
+
+static ParamsBasePtr createParamsBRUTEFORCE_HAMMING_2Matcher(const std::string & _filename_dot_yaml)
+{
+	MatcherParamsBRUTEFORCE_HAMMING_2Ptr params_ptr = std::make_shared<MatcherParamsBRUTEFORCE_HAMMING_2>();
+
+    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>() == "BRUTEFORCE_HAMMING_2")
+        {
+        	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_matBRUTEFORCE_HAMMING_2_params = ParamsFactory::get().registerCreator("BRUTEFORCE_HAMMING_2 MAT", createParamsBRUTEFORCE_HAMMING_2Matcher);
+
+} /* namespace [unnamed] */
+
+} /* namespace vision_utils */
+
+#endif /* IF USING_YAML */
+