diff --git a/src/examples/processor_image_ORB.yaml b/src/examples/processor_image_ORB.yaml
index bc0d69a7f9108d1acd5c7cfea34c9b954a5b7e18..c405e4ac0bc78b4403a7f718eba110e8e93162bb 100644
--- a/src/examples/processor_image_ORB.yaml
+++ b/src/examples/processor_image_ORB.yaml
@@ -14,7 +14,8 @@ detector-descriptor:
 
 matcher:
     minimum normalized score: 0.85
-    similarity norm: 6  # enum { NORM_INF=1, NORM_L1=2, NORM_L2=4, NORM_L2SQR=5, NORM_HAMMING=6, NORM_HAMMING2=7, NORM_TYPE_MASK=7, NORM_RELATIVE=8, NORM_MINMAX=32 };
+    similarity norm: 6  # OpenCV 3 enum { BruteForce=1 (it uses L2 ), BruteForce-L1=2, BruteForce-Hamming=3, BruteForce-Hamming(2)=4, FlannBased=5};
+                        # OpenCV 2 enum { NORM_INF=1, NORM_L1=2, NORM_L2=4, NORM_L2SQR=5, NORM_HAMMING=6, NORM_HAMMING2=7, NORM_TYPE_MASK=7, NORM_RELATIVE=8, NORM_MINMAX=32 };
     roi:
         width: 20
         height: 20
diff --git a/src/processor_image_feature.cpp b/src/processor_image_feature.cpp
index 0c6155214f2fd4922452da5932d4851207385582..3a607da1608cbc4e8b5ec4b1267dbb0b2c479a7f 100644
--- a/src/processor_image_feature.cpp
+++ b/src/processor_image_feature.cpp
@@ -56,9 +56,27 @@ ProcessorImageFeature::ProcessorImageFeature(ProcessorParamsImage _params) :
     }
 
     // 2. matcher params
-// TODO: FIX this
-    matcher_ptr_ = cv::DescriptorMatcher::create("BruteForce");
-//    matcher_ptr_ = cv::DescriptorMatcher::create(_params.matcher.similarity_norm);
+    // TODO: FIX this. Problems initializing with int (cv::DescriptorMatcher::create(int matcherType)
+    std::string matcherType = "BruteForce-Hamming"; // Default
+    switch (_params.matcher.similarity_norm)
+    {
+        case 1:
+            matcherType = "BruteForce";
+            break;
+        case 2:
+            matcherType = "BruteForce-L1";
+            break;
+        case 3:
+            matcherType = "BruteForce-Hamming";
+            break;
+        case 4:
+            matcherType = "BruteForce-Hamming(2)";
+            break;
+        case 5:
+            matcherType = "FlannBased";
+            break;
+    }
+    matcher_ptr_ = cv::DescriptorMatcher::create(matcherType);
 }
 #else
 
@@ -108,7 +126,6 @@ ProcessorImageFeature::ProcessorImageFeature(ProcessorParamsImage _params) :
 
     // 2. matcher params
     matcher_ptr_ = std::make_shared<cv::BFMatcher>(_params.matcher.similarity_norm);
-
 }
 
 #endif
diff --git a/src/processor_image_landmark.cpp b/src/processor_image_landmark.cpp
index 7e45c81880352e6cbbfa670eae97132abb348ffc..e9bd3cff8e0109f9e1152f27f46249cf919bcec2 100644
--- a/src/processor_image_landmark.cpp
+++ b/src/processor_image_landmark.cpp
@@ -62,9 +62,28 @@ ProcessorImageLandmark::ProcessorImageLandmark(const ProcessorParamsImage& _para
     }
 
     // 2. matcher params
-    // TODO: FIX this
-        matcher_ptr_ = cv::DescriptorMatcher::create("BruteForce");
-    //    matcher_ptr_ = cv::DescriptorMatcher::create(_params.matcher.similarity_norm);
+    // TODO: FIX this. Problems initializing with int (cv::DescriptorMatcher::create(int matcherType)
+    std::string matcherType = "BruteForce-Hamming"; // Default
+    switch (_params.matcher.similarity_norm)
+    {
+        case 1:
+            matcherType = "FlannBased";
+            break;
+        case 2:
+            matcherType = "BruteForce";
+            break;
+        case 3:
+            matcherType = "BruteForce-L1";
+            break;
+        case 4:
+            matcherType = "BruteForce-Hamming";
+            break;
+        case 5:
+            matcherType = "BruteForce-Hamming(2)";
+            break;
+    }
+
+    matcher_ptr_ = cv::DescriptorMatcher::create(matcherType);
 }
 
 #else
@@ -118,7 +137,6 @@ ProcessorImageLandmark::ProcessorImageLandmark(const ProcessorParamsImage& _para
 
     // 2. matcher params
     matcher_ptr_ = std::make_shared<cv::BFMatcher>(_params.matcher.similarity_norm);
-
 }
 
 #endif