diff --git a/CMakeLists.txt b/CMakeLists.txt
index a31fce829708c2811a2a51be6e3660f14079fae9..93fe002bdb1a70e0e6f6af40a2063d0e1896afd3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,9 +15,10 @@ SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
 SET(CMAKE_INSTALL_PREFIX /usr/local)
 
 IF (NOT CMAKE_BUILD_TYPE)
- SET(CMAKE_BUILD_TYPE "DEBUG") 
+ SET(CMAKE_BUILD_TYPE "RELEASE") 
 ENDIF (NOT CMAKE_BUILD_TYPE)
-
+MESSAGE(STATUS "Compilation type: ${CMAKE_BUILD_TYPE}")
+ 
 if(UNIX)
   # GCC is not strict enough by default, so enable most of the warnings.
   set(CMAKE_CXX_FLAGS
diff --git a/src/algorithms/activesearch/alg_activesearch_load_yaml.cpp b/src/algorithms/activesearch/alg_activesearch_load_yaml.cpp
index 7453e91a64b649847f13037de11f561e7bec6034..c09c4178a8968c2c4ab48d37eff2eacaf9d3a3a9 100644
--- a/src/algorithms/activesearch/alg_activesearch_load_yaml.cpp
+++ b/src/algorithms/activesearch/alg_activesearch_load_yaml.cpp
@@ -43,7 +43,7 @@ static ParamsBasePtr createParamsACTIVESEARCHAlgorithm(const std::string & _file
 }
 
 // Register in the SensorFactory
-const bool registered_matACTIVESEARCH_params = ParamsFactory::get().registerCreator("ACTIVESEARCH ALG", createParamsACTIVESEARCHAlgorithm);
+const bool VU_UNUSED registered_matACTIVESEARCH_params = ParamsFactory::get().registerCreator("ACTIVESEARCH ALG", createParamsACTIVESEARCHAlgorithm);
 
 } /* namespace [unnamed] */
 
diff --git a/src/algorithms/algorithm_factory.h b/src/algorithms/algorithm_factory.h
index c626bfd4d919b58e76cf216897e50209f451628e..9bcaf4b012934a7c21b19d35013f9d83cf213939 100644
--- a/src/algorithms/algorithm_factory.h
+++ b/src/algorithms/algorithm_factory.h
@@ -24,7 +24,7 @@ inline std::string AlgorithmFactory::getClass()
 }
 
 #define VU_REGISTER_ALGORITHM(AlgorithmType, AlgorithmName) \
-  namespace{ const bool AlgorithmName##Registered = \
+  namespace{ const bool VU_UNUSED AlgorithmName##Registered = \
 	AlgorithmFactory::get().registerCreator(AlgorithmType, AlgorithmName::create, true); }\
 
 } /* namespace vision_utils */
diff --git a/src/algorithms/opticalflowpyrlk/alg_opticalflowpyrlk_load_yaml.cpp b/src/algorithms/opticalflowpyrlk/alg_opticalflowpyrlk_load_yaml.cpp
index 17128470a54a5865b283cd18f269289b952ad51a..1da5d9c2b7956d352ffda0c53e4e026f7439d36f 100644
--- a/src/algorithms/opticalflowpyrlk/alg_opticalflowpyrlk_load_yaml.cpp
+++ b/src/algorithms/opticalflowpyrlk/alg_opticalflowpyrlk_load_yaml.cpp
@@ -45,7 +45,7 @@ static ParamsBasePtr createParamsOPTFLOWPYRLKAlgorithm(const std::string & _file
 }
 
 // Register in the SensorFactory
-const bool registered_matOPTFLOWPYRLK_params = ParamsFactory::get().registerCreator("OPTFLOWPYRLK ALG", createParamsOPTFLOWPYRLKAlgorithm);
+const bool VU_UNUSED registered_matOPTFLOWPYRLK_params = ParamsFactory::get().registerCreator("OPTFLOWPYRLK ALG", createParamsOPTFLOWPYRLKAlgorithm);
 
 } /* namespace [unnamed] */
 
diff --git a/src/algorithms/trackfeatures/alg_trackfeatures_load_yaml.cpp b/src/algorithms/trackfeatures/alg_trackfeatures_load_yaml.cpp
index cf4e4ddc6dec543c553c3905b6ff14197f60bd17..d4fdc219e5f16010c576036501eaaabb03c6411e 100644
--- a/src/algorithms/trackfeatures/alg_trackfeatures_load_yaml.cpp
+++ b/src/algorithms/trackfeatures/alg_trackfeatures_load_yaml.cpp
@@ -39,7 +39,7 @@ static ParamsBasePtr createParamsTRACKFEATURESAlgorithm(const std::string & _fil
 }
 
 // Register in the SensorFactory
-const bool registered_matTRACKFEATURES_params = ParamsFactory::get().registerCreator("TRACKFEATURES ALG", createParamsTRACKFEATURESAlgorithm);
+const bool VU_UNUSED registered_matTRACKFEATURES_params = ParamsFactory::get().registerCreator("TRACKFEATURES ALG", createParamsTRACKFEATURESAlgorithm);
 
 } /* namespace [unnamed] */
 
diff --git a/src/common_class/frame.h b/src/common_class/frame.h
index 7ca695715e263db1d406202d134415ae71f0595a..0299fdca2ca41c2d159a71e7dfda79ae1f1a3169 100644
--- a/src/common_class/frame.h
+++ b/src/common_class/frame.h
@@ -51,7 +51,7 @@ public:
 	/**
 	 * \brief Return the image
 	 */
-	cv::Mat getImage(void);
+	const cv::Mat& getImage(void) const;
 
 	/**
 	 * \brief Set the image
@@ -61,7 +61,7 @@ public:
 	/**
 	 * \brief Return the frame Keypoints
 	 */
-	KeyPointVector getKeyPoints(void);
+	KeyPointVector& getKeyPoints(void);
 
 	/**
 	 * \brief Set the frame Keypoints
@@ -82,7 +82,7 @@ public:
 	/**
 	 * \brief Return the frame descriptors
 	 */
-	cv::Mat getDescriptors(void);
+	cv::Mat& getDescriptors(void);
 
 	/**
 	 * \brief Set the frame descriptors
@@ -111,7 +111,7 @@ inline void Frame::setId(const int& _id)
 	id_ = _id;
 }
 
-inline cv::Mat Frame::getImage(void)
+inline const cv::Mat& Frame::getImage(void) const
 {
 	return img_;
 }
@@ -121,7 +121,7 @@ inline void Frame::setImage(const cv::Mat& _img)
 	img_ = _img;
 }
 
-inline 	KeyPointVector Frame::getKeyPoints(void)
+inline KeyPointVector& Frame::getKeyPoints(void)
 {
 	return kps_;
 };
@@ -141,7 +141,7 @@ inline void Frame::addKeyPoints(const KeyPointVector& _kps)
 	kps_.insert(kps_.end(), _kps.begin(), _kps.end() );
 }
 
-inline 	PointVector Frame::getPoints(void)
+inline PointVector Frame::getPoints(void)
 {
 	PointVector pvec;
 	for	(auto kp : kps_)
@@ -149,12 +149,12 @@ inline 	PointVector Frame::getPoints(void)
 	return pvec;
 };
 
-inline 	cv::Mat Frame::getDescriptors(void)
+inline cv::Mat& Frame::getDescriptors(void)
 {
 	return desc_;
 };
 
-inline 	void Frame::setDescriptors(const cv::Mat& _desc)
+inline void Frame::setDescriptors(const cv::Mat& _desc)
 {
 	assert( kps_.size() == _desc.rows && "The Number of descriptors must be equal to number of keypoints");
 	desc_ = _desc;
diff --git a/src/descriptors/akaze/descriptor_akaze_load_yaml.cpp b/src/descriptors/akaze/descriptor_akaze_load_yaml.cpp
index 043ceb070a7a93f2cc7e496674afa8495fbe199a..918a983cc03c892daa601dafcd3e335d2a728b8f 100644
--- a/src/descriptors/akaze/descriptor_akaze_load_yaml.cpp
+++ b/src/descriptors/akaze/descriptor_akaze_load_yaml.cpp
@@ -41,7 +41,7 @@ static ParamsBasePtr createParamsAKAZEDescriptor(const std::string & _filename_d
 }
 
 // Register in the SensorFactory
-const bool registered_desAKAZE_params = ParamsFactory::get().registerCreator("AKAZE DES", createParamsAKAZEDescriptor);
+const bool VU_UNUSED registered_desAKAZE_params = ParamsFactory::get().registerCreator("AKAZE DES", createParamsAKAZEDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/brief/descriptor_brief_load_yaml.cpp b/src/descriptors/brief/descriptor_brief_load_yaml.cpp
index 6e79ed44e7edaada9d5ff28b2dc2618e12243ce5..a27e309e47a2149855e842a57eed3d5e68d99e6f 100644
--- a/src/descriptors/brief/descriptor_brief_load_yaml.cpp
+++ b/src/descriptors/brief/descriptor_brief_load_yaml.cpp
@@ -36,7 +36,7 @@ static ParamsBasePtr createParamsBRIEFDescriptor(const std::string & _filename_d
 }
 
 // Register in the SensorFactory
-const bool registered_desBRIEF_params = ParamsFactory::get().registerCreator("BRIEF DES", createParamsBRIEFDescriptor);
+const bool VU_UNUSED registered_desBRIEF_params = ParamsFactory::get().registerCreator("BRIEF DES", createParamsBRIEFDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/brisk/descriptor_brisk_load_yaml.cpp b/src/descriptors/brisk/descriptor_brisk_load_yaml.cpp
index 394084b47ae57956906f96715b10e3f5b258137f..a23428321b586b80980c9fd1f8a26f160556fa4a 100644
--- a/src/descriptors/brisk/descriptor_brisk_load_yaml.cpp
+++ b/src/descriptors/brisk/descriptor_brisk_load_yaml.cpp
@@ -37,7 +37,7 @@ static ParamsBasePtr createParamsBRISKDescriptor(const std::string & _filename_d
 }
 
 // Register in the SensorFactory
-const bool registered_desBRISK_params = ParamsFactory::get().registerCreator("BRISK DES", createParamsBRISKDescriptor);
+const bool VU_UNUSED registered_desBRISK_params = ParamsFactory::get().registerCreator("BRISK DES", createParamsBRISKDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/daisy/descriptor_daisy_load_yaml.cpp b/src/descriptors/daisy/descriptor_daisy_load_yaml.cpp
index b714a9e60a875ba63a429381a2bd238ab856799b..b449fcf956f4b87ce6fb0ff7a8f29df5aff4b174 100644
--- a/src/descriptors/daisy/descriptor_daisy_load_yaml.cpp
+++ b/src/descriptors/daisy/descriptor_daisy_load_yaml.cpp
@@ -43,7 +43,7 @@ static ParamsBasePtr createParamsDAISYDescriptor(const std::string & _filename_d
 }
 
 // Register in the SensorFactory
-const bool registered_desDAISY_params = ParamsFactory::get().registerCreator("DAISY DES", createParamsDAISYDescriptor);
+const bool VU_UNUSED registered_desDAISY_params = ParamsFactory::get().registerCreator("DAISY DES", createParamsDAISYDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/descriptor_factory.h b/src/descriptors/descriptor_factory.h
index 7ecec9c8588d3ea14b57fc96f608870bdf0ce6ef..c2f15532dccad384433b0dfd7bfc650e3dcd2caa 100644
--- a/src/descriptors/descriptor_factory.h
+++ b/src/descriptors/descriptor_factory.h
@@ -24,7 +24,7 @@ inline std::string DescriptorFactory::getClass()
 }
 
 #define VU_REGISTER_DESCRIPTOR(DescriptorType, DescriptorName) \
-  namespace{ const bool DescriptorName##Registered = \
+  namespace{ const bool VU_UNUSED DescriptorName##Registered = \
 	DescriptorFactory::get().registerCreator(DescriptorType, DescriptorName::create, true); }\
 
 } /* namespace vision_utils */
diff --git a/src/descriptors/freak/descriptor_freak_load_yaml.cpp b/src/descriptors/freak/descriptor_freak_load_yaml.cpp
index 08a869eb443004b074597e7f60e7a60621f06d7c..35c5cb8a1470f96e75afc52030f3151671d6087c 100644
--- a/src/descriptors/freak/descriptor_freak_load_yaml.cpp
+++ b/src/descriptors/freak/descriptor_freak_load_yaml.cpp
@@ -39,7 +39,7 @@ static ParamsBasePtr createParamsFREAKDescriptor(const std::string & _filename_d
 }
 
 // Register in the SensorFactory
-const bool registered_desFREAK_params = ParamsFactory::get().registerCreator("FREAK DES", createParamsFREAKDescriptor);
+const bool VU_UNUSED registered_desFREAK_params = ParamsFactory::get().registerCreator("FREAK DES", createParamsFREAKDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/kaze/descriptor_kaze_load_yaml.cpp b/src/descriptors/kaze/descriptor_kaze_load_yaml.cpp
index 63fd5edd7e2605a0e51bf23fdadbafdc7365de53..29c12af3f0ec22ad7a525f2756d23610f330a1c9 100644
--- a/src/descriptors/kaze/descriptor_kaze_load_yaml.cpp
+++ b/src/descriptors/kaze/descriptor_kaze_load_yaml.cpp
@@ -40,7 +40,7 @@ static ParamsBasePtr createParamsKAZEDescriptor(const std::string & _filename_do
 }
 
 // Register in the SensorFactory
-const bool registered_desKAZE_params = ParamsFactory::get().registerCreator("KAZE DES", createParamsKAZEDescriptor);
+const bool VU_UNUSED registered_desKAZE_params = ParamsFactory::get().registerCreator("KAZE DES", createParamsKAZEDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/latch/descriptor_latch_load_yaml.cpp b/src/descriptors/latch/descriptor_latch_load_yaml.cpp
index b79dd9fd0a9bf5be5cd480635739ed7ed857d801..940981bdba2045a67abbe9f89ea81d470dedbbff 100644
--- a/src/descriptors/latch/descriptor_latch_load_yaml.cpp
+++ b/src/descriptors/latch/descriptor_latch_load_yaml.cpp
@@ -38,7 +38,7 @@ static ParamsBasePtr createParamsLATCHDescriptor(const std::string & _filename_d
 }
 
 // Register in the SensorFactory
-const bool registered_desLATCH_params = ParamsFactory::get().registerCreator("LATCH DES", createParamsLATCHDescriptor);
+const bool VU_UNUSED registered_desLATCH_params = ParamsFactory::get().registerCreator("LATCH DES", createParamsLATCHDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/lucid/descriptor_lucid_load_yaml.cpp b/src/descriptors/lucid/descriptor_lucid_load_yaml.cpp
index 50de9f18392eef12c4def9934cdf86fa170d8431..3e2d9a9a3df28895d196cd156ed34d792032b04c 100644
--- a/src/descriptors/lucid/descriptor_lucid_load_yaml.cpp
+++ b/src/descriptors/lucid/descriptor_lucid_load_yaml.cpp
@@ -36,7 +36,7 @@ static ParamsBasePtr createParamsLUCIDDescriptor(const std::string & _filename_d
 }
 
 // Register in the SensorFactory
-const bool registered_desLUCID_params = ParamsFactory::get().registerCreator("LUCID DES", createParamsLUCIDDescriptor);
+const bool VU_UNUSED registered_desLUCID_params = ParamsFactory::get().registerCreator("LUCID DES", createParamsLUCIDDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/orb/descriptor_orb_load_yaml.cpp b/src/descriptors/orb/descriptor_orb_load_yaml.cpp
index 03b31f79acbe18758efa19c0e3da88bd06a4d319..9567f75ab269dbbef67ec3a8e55a7a5e38a31ddc 100644
--- a/src/descriptors/orb/descriptor_orb_load_yaml.cpp
+++ b/src/descriptors/orb/descriptor_orb_load_yaml.cpp
@@ -42,7 +42,7 @@ static ParamsBasePtr createParamsORBDescriptor(const std::string & _filename_dot
 }
 
 // Register in the SensorFactory
-const bool registered_desORB_params = ParamsFactory::get().registerCreator("ORB DES", createParamsORBDescriptor);
+const bool VU_UNUSED registered_desORB_params = ParamsFactory::get().registerCreator("ORB DES", createParamsORBDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/sift/descriptor_sift_load_yaml.cpp b/src/descriptors/sift/descriptor_sift_load_yaml.cpp
index d18646e1859e87b7bd22c5d2d32b02d907ed80df..5ef1577610c37422339507120aec71abb2eed40b 100644
--- a/src/descriptors/sift/descriptor_sift_load_yaml.cpp
+++ b/src/descriptors/sift/descriptor_sift_load_yaml.cpp
@@ -39,7 +39,7 @@ static ParamsBasePtr createParamsSIFTDescriptor(const std::string & _filename_do
 }
 
 // Register in the SensorFactory
-const bool registered_desSIFT_params = ParamsFactory::get().registerCreator("SIFT DES", createParamsSIFTDescriptor);
+const bool VU_UNUSED registered_desSIFT_params = ParamsFactory::get().registerCreator("SIFT DES", createParamsSIFTDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/descriptors/surf/descriptor_surf_load_yaml.cpp b/src/descriptors/surf/descriptor_surf_load_yaml.cpp
index 8cfb642ed31e728f97e5f26bc8fcb4d9e34249e0..868c8b356b2eee459fd98558348eea847d5c2ec0 100644
--- a/src/descriptors/surf/descriptor_surf_load_yaml.cpp
+++ b/src/descriptors/surf/descriptor_surf_load_yaml.cpp
@@ -39,7 +39,7 @@ static ParamsBasePtr createParamsSURFDescriptor(const std::string & _filename_do
 }
 
 // Register in the SensorFactory
-const bool registered_desSURF_params = ParamsFactory::get().registerCreator("SURF DES", createParamsSURFDescriptor);
+const bool VU_UNUSED registered_desSURF_params = ParamsFactory::get().registerCreator("SURF DES", createParamsSURFDescriptor);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/agast/detector_agast_load_yaml.cpp b/src/detectors/agast/detector_agast_load_yaml.cpp
index e07e11706c0ede2b3aa452ed2973985c66fe7ea2..724ed9d3e3884242a25c83d8e1299745fb29521e 100644
--- a/src/detectors/agast/detector_agast_load_yaml.cpp
+++ b/src/detectors/agast/detector_agast_load_yaml.cpp
@@ -37,7 +37,7 @@ static ParamsBasePtr createParamsAGASTDetector(const std::string & _filename_dot
 }
 
 // Register in the SensorFactory
-const bool registered_detAGAST_params = ParamsFactory::get().registerCreator("AGAST DET", createParamsAGASTDetector);
+const bool VU_UNUSED registered_detAGAST_params = ParamsFactory::get().registerCreator("AGAST DET", createParamsAGASTDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/akaze/detector_akaze_load_yaml.cpp b/src/detectors/akaze/detector_akaze_load_yaml.cpp
index 1f41c7cd508ee3b39d50e89be7a1e6718e7fd4e8..87415c5d7bf38bb491bc3d843b5f9fd4956d77b7 100644
--- a/src/detectors/akaze/detector_akaze_load_yaml.cpp
+++ b/src/detectors/akaze/detector_akaze_load_yaml.cpp
@@ -41,7 +41,7 @@ static ParamsBasePtr createParamsAKAZEDetector(const std::string & _filename_dot
 }
 
 // Register in the SensorFactory
-const bool registered_detAKAZE_params = ParamsFactory::get().registerCreator("AKAZE DET", createParamsAKAZEDetector);
+const bool VU_UNUSED registered_detAKAZE_params = ParamsFactory::get().registerCreator("AKAZE DET", createParamsAKAZEDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/brisk/detector_brisk_load_yaml.cpp b/src/detectors/brisk/detector_brisk_load_yaml.cpp
index dd4317c7a2bae16171614f102f995fb1d23d7462..510adc0f81e49e5afb2e4ae5709da8777e3e4c99 100644
--- a/src/detectors/brisk/detector_brisk_load_yaml.cpp
+++ b/src/detectors/brisk/detector_brisk_load_yaml.cpp
@@ -37,7 +37,7 @@ static ParamsBasePtr createParamsBRISKDetector(const std::string & _filename_dot
 }
 
 // Register in the SensorFactory
-const bool registered_detBRISK_params = ParamsFactory::get().registerCreator("BRISK DET", createParamsBRISKDetector);
+const bool VU_UNUSED registered_detBRISK_params = ParamsFactory::get().registerCreator("BRISK DET", createParamsBRISKDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/detector_factory.h b/src/detectors/detector_factory.h
index 6073115e2223760c6ce4fac2a17f58873a2c89c4..d4fa93a4739adaa30c2ca825eebf9c71ff1374b2 100644
--- a/src/detectors/detector_factory.h
+++ b/src/detectors/detector_factory.h
@@ -24,7 +24,7 @@ inline std::string DetectorFactory::getClass()
 }
 
 #define VU_REGISTER_DETECTOR(DetectorType, DetectorName) \
-  namespace{ const bool DetectorName##Registered = \
+  namespace{ const bool VU_UNUSED DetectorName##Registered = \
 	DetectorFactory::get().registerCreator(DetectorType, DetectorName::create, true); }\
 
 } /* namespace vision_utils */
diff --git a/src/detectors/fast/detector_fast_load_yaml.cpp b/src/detectors/fast/detector_fast_load_yaml.cpp
index 130e717be820c35304e2ae2e41adbc45c8cca2ba..0d379569d085d1496aa66220e1360760acc8f415 100644
--- a/src/detectors/fast/detector_fast_load_yaml.cpp
+++ b/src/detectors/fast/detector_fast_load_yaml.cpp
@@ -37,7 +37,7 @@ static ParamsBasePtr createParamsFASTDetector(const std::string & _filename_dot_
 }
 
 // Register in the SensorFactory
-const bool registered_detfast_params = ParamsFactory::get().registerCreator("FAST DET", createParamsFASTDetector);
+const bool VU_UNUSED registered_detfast_params = ParamsFactory::get().registerCreator("FAST DET", createParamsFASTDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/gftt/detector_gftt_load_yaml.cpp b/src/detectors/gftt/detector_gftt_load_yaml.cpp
index 1b0931131fc2b5f762a5b93aeedae5b83c480cc2..30b0586996cf6ee9146da60a6bcbfb85e9ae0b43 100644
--- a/src/detectors/gftt/detector_gftt_load_yaml.cpp
+++ b/src/detectors/gftt/detector_gftt_load_yaml.cpp
@@ -39,7 +39,7 @@ static ParamsBasePtr createParamsGFTTDetector(const std::string & _filename_dot_
 }
 
 // Register in the SensorFactory
-const bool registered_detGFTT_params = ParamsFactory::get().registerCreator("GFTT DET", createParamsGFTTDetector);
+const bool VU_UNUSED registered_detGFTT_params = ParamsFactory::get().registerCreator("GFTT DET", createParamsGFTTDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/harris/detector_harris_load_yaml.cpp b/src/detectors/harris/detector_harris_load_yaml.cpp
index 41127275b18e0d057445a8a7ddc73c447ad9bcdc..0952147b4c8c5c262eab60e1a2716245bff3d18d 100644
--- a/src/detectors/harris/detector_harris_load_yaml.cpp
+++ b/src/detectors/harris/detector_harris_load_yaml.cpp
@@ -39,7 +39,7 @@ static ParamsBasePtr createParamsHARRISDetector(const std::string & _filename_do
 }
 
 // Register in the SensorFactory
-const bool registered_detHARRIS_params = ParamsFactory::get().registerCreator("HARRIS DET", createParamsHARRISDetector);
+const bool VU_UNUSED registered_detHARRIS_params = ParamsFactory::get().registerCreator("HARRIS DET", createParamsHARRISDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/kaze/detector_kaze_load_yaml.cpp b/src/detectors/kaze/detector_kaze_load_yaml.cpp
index b53d642f4755fa0d2ffe5e86a4889378b487c9d8..687910ac5a249252b6eac1dc0a9cb6bf4b96e4ef 100644
--- a/src/detectors/kaze/detector_kaze_load_yaml.cpp
+++ b/src/detectors/kaze/detector_kaze_load_yaml.cpp
@@ -40,7 +40,7 @@ static ParamsBasePtr createParamsKAZEDetector(const std::string & _filename_dot_
 }
 
 // Register in the SensorFactory
-const bool registered_detKAZE_params = ParamsFactory::get().registerCreator("KAZE DET", createParamsKAZEDetector);
+const bool VU_UNUSED registered_detKAZE_params = ParamsFactory::get().registerCreator("KAZE DET", createParamsKAZEDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/mser/detector_mser_load_yaml.cpp b/src/detectors/mser/detector_mser_load_yaml.cpp
index bbe4960943d2dfe827b196254e93eb4fd437d30b..6f6a892cf231dca57c60daa215c6df31997075bd 100644
--- a/src/detectors/mser/detector_mser_load_yaml.cpp
+++ b/src/detectors/mser/detector_mser_load_yaml.cpp
@@ -43,7 +43,7 @@ static ParamsBasePtr createParamsMSERDetector(const std::string & _filename_dot_
 }
 
 // Register in the SensorFactory
-const bool registered_detMSER_params = ParamsFactory::get().registerCreator("MSER DET", createParamsMSERDetector);
+const bool VU_UNUSED registered_detMSER_params = ParamsFactory::get().registerCreator("MSER DET", createParamsMSERDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/orb/detector_orb_load_yaml.cpp b/src/detectors/orb/detector_orb_load_yaml.cpp
index 84a5ba3fcf5f2fbe434c641f328b49080a17186b..f8cd2dc9006ba4e471172fbc4a06cb875837f8c3 100644
--- a/src/detectors/orb/detector_orb_load_yaml.cpp
+++ b/src/detectors/orb/detector_orb_load_yaml.cpp
@@ -42,7 +42,7 @@ static ParamsBasePtr createParamsORBDetector(const std::string & _filename_dot_y
 }
 
 // Register in the SensorFactory
-const bool registered_detORB_params = ParamsFactory::get().registerCreator("ORB DET", createParamsORBDetector);
+const bool VU_UNUSED registered_detORB_params = ParamsFactory::get().registerCreator("ORB DET", createParamsORBDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/sbd/detector_sbd_load_yaml.cpp b/src/detectors/sbd/detector_sbd_load_yaml.cpp
index c0abc6998abef514d7c02772adb1d2ceb372ef19..8a8546ae00752e3c17cfa0501989d08f0805bf89 100644
--- a/src/detectors/sbd/detector_sbd_load_yaml.cpp
+++ b/src/detectors/sbd/detector_sbd_load_yaml.cpp
@@ -57,7 +57,7 @@ static ParamsBasePtr createParamsSBDDetector(const std::string & _filename_dot_y
 }
 
 // Register in the SensorFactory
-const bool registered_detSBD_params = ParamsFactory::get().registerCreator("SBD DET", createParamsSBDDetector);
+const bool VU_UNUSED registered_detSBD_params = ParamsFactory::get().registerCreator("SBD DET", createParamsSBDDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/sift/detector_sift_load_yaml.cpp b/src/detectors/sift/detector_sift_load_yaml.cpp
index 9e4f7b1aafccd4514d841b134dc0809ff7c6ee8a..feb4cf51e4d218564e4086cdad9069beb2efd476 100644
--- a/src/detectors/sift/detector_sift_load_yaml.cpp
+++ b/src/detectors/sift/detector_sift_load_yaml.cpp
@@ -39,7 +39,7 @@ static ParamsBasePtr createParamsSIFTDetector(const std::string & _filename_dot_
 }
 
 // Register in the SensorFactory
-const bool registered_detSIFT_params = ParamsFactory::get().registerCreator("SIFT DET", createParamsSIFTDetector);
+const bool VU_UNUSED registered_detSIFT_params = ParamsFactory::get().registerCreator("SIFT DET", createParamsSIFTDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/detectors/surf/detector_surf_load_yaml.cpp b/src/detectors/surf/detector_surf_load_yaml.cpp
index 1cd84e8d30d47f8e13b588bccda5dc0214e1cc46..1944efb8e5a1516a143a81ea0d0bef59238abb44 100644
--- a/src/detectors/surf/detector_surf_load_yaml.cpp
+++ b/src/detectors/surf/detector_surf_load_yaml.cpp
@@ -39,7 +39,7 @@ static ParamsBasePtr createParamsSURFDetector(const std::string & _filename_dot_
 }
 
 // Register in the SensorFactory
-const bool registered_detSURF_params = ParamsFactory::get().registerCreator("SURF DET", createParamsSURFDetector);
+const bool VU_UNUSED registered_detSURF_params = ParamsFactory::get().registerCreator("SURF DET", createParamsSURFDetector);
 
 } /* namespace [unnamed] */
 
diff --git a/src/examples/yaml/OPTFLOWPYRLK.yaml b/src/examples/yaml/OPTFLOWPYRLK.yaml
index 7c0d276e6eb11e4656aa262523f05e99c1bb3774..701b2e2befe47abec4f649fe27749500ef53dd88 100644
--- a/src/examples/yaml/OPTFLOWPYRLK.yaml
+++ b/src/examples/yaml/OPTFLOWPYRLK.yaml
@@ -3,7 +3,7 @@ sensor:
 
 detector:
   type: "ORB"         
-  nfeatures: 100
+  nfeatures: 200
   scale factor: 1.2
   nlevels: 8
   edge threshold: 8   # 16
@@ -16,11 +16,11 @@ detector:
 algorithm:
   type: "OPTFLOWPYRLK" 
   draw results: true
-  min features to track: 5
-  window edge: 21
+  min features to track: 10
+  window edge: 30
   max level: 10
   criteria max count: 30
   criteria epsilon: 0.01
   flags: 0
   min eigen threshold: 1e-4    
-  min error kpt match: 4.0    
+  min error kpt match: 10.0    
diff --git a/src/factory.h b/src/factory.h
index 89930ae2065d2b9fa167821ad602d3e0350b5c3b..92f552e478d14001af2808c5acabb8d4a8710bd8 100644
--- a/src/factory.h
+++ b/src/factory.h
@@ -110,6 +110,22 @@ inline std::string ParamsFactory::getClass()
     return "Params Factory";
 }
 
+//#define UNUSED(x) (void)x;
+//#define UNUSED(x) (void)(sizeof((x), 0));
+
+#ifdef __GNUC__
+    #define VU_UNUSED __attribute__((used))
+#elif defined _MSC_VER
+    #pragma warning(disable: Cxxxxx)
+    #define VU_UNUSED
+#elif defined(__LCLINT__)
+# define VU_UNUSED /*@unused@*/
+#elif defined(__cplusplus)
+# define VU_UNUSED
+#else
+# define UNUSED(x) x
+#endif
+
 } /* namespace vision_utils */
 
 #endif
diff --git a/src/matchers/bruteforce/matcher_bruteforce_load_yaml.cpp b/src/matchers/bruteforce/matcher_bruteforce_load_yaml.cpp
index 1749c0f2e035b303be6510bc5e9c8a46e0f95566..2130029bcd923d366d657b88662ef8ec4b797dd6 100644
--- a/src/matchers/bruteforce/matcher_bruteforce_load_yaml.cpp
+++ b/src/matchers/bruteforce/matcher_bruteforce_load_yaml.cpp
@@ -36,7 +36,7 @@ static ParamsBasePtr createParamsBRUTEFORCEMatcher(const std::string & _filename
 }
 
 // Register in the SensorFactory
-const bool registered_matBRUTEFORCE_params = ParamsFactory::get().registerCreator("BRUTEFORCE MAT", createParamsBRUTEFORCEMatcher);
+const bool VU_UNUSED registered_matBRUTEFORCE_params = ParamsFactory::get().registerCreator("BRUTEFORCE MAT", createParamsBRUTEFORCEMatcher);
 
 } /* namespace [unnamed] */
 
diff --git a/src/matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp b/src/matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp
index cae5c2ec08361cb52dcd18fbc799c4cd28c60dc6..d3a3f1d59b1f668404a5dc6bd19c4e648fe9746e 100644
--- a/src/matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp
+++ b/src/matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp
@@ -36,7 +36,7 @@ static ParamsBasePtr createParamsBRUTEFORCE_HAMMINGMatcher(const std::string & _
 }
 
 // Register in the SensorFactory
-const bool registered_matBRUTEFORCE_HAMMING_params = ParamsFactory::get().registerCreator("BRUTEFORCE_HAMMING MAT", createParamsBRUTEFORCE_HAMMINGMatcher);
+const bool VU_UNUSED registered_matBRUTEFORCE_HAMMING_params = ParamsFactory::get().registerCreator("BRUTEFORCE_HAMMING MAT", createParamsBRUTEFORCE_HAMMINGMatcher);
 
 } /* namespace [unnamed] */
 
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
index 41fd170f08bb4bc59d68f945d3e9629f20cdff0c..fc52555dfeaddf6ed645f106f2b67cd8fc460f1e 100644
--- 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
@@ -36,7 +36,7 @@ static ParamsBasePtr createParamsBRUTEFORCE_HAMMING_2Matcher(const std::string &
 }
 
 // Register in the SensorFactory
-const bool registered_matBRUTEFORCE_HAMMING_2_params = ParamsFactory::get().registerCreator("BRUTEFORCE_HAMMING_2 MAT", createParamsBRUTEFORCE_HAMMING_2Matcher);
+const bool VU_UNUSED registered_matBRUTEFORCE_HAMMING_2_params = ParamsFactory::get().registerCreator("BRUTEFORCE_HAMMING_2 MAT", createParamsBRUTEFORCE_HAMMING_2Matcher);
 
 } /* namespace [unnamed] */
 
diff --git a/src/matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp b/src/matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp
index 128ddc54ebb2d4b0e527a9b8c93b78e87d49b136..9683d99ade2c430f8310410daed642db5e9c80bb 100644
--- a/src/matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp
+++ b/src/matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp
@@ -36,7 +36,7 @@ static ParamsBasePtr createParamsBRUTEFORCE_L1Matcher(const std::string & _filen
 }
 
 // Register in the SensorFactory
-const bool registered_matBRUTEFORCE_L1_params = ParamsFactory::get().registerCreator("BRUTEFORCE_L1 MAT", createParamsBRUTEFORCE_L1Matcher);
+const bool VU_UNUSED registered_matBRUTEFORCE_L1_params = ParamsFactory::get().registerCreator("BRUTEFORCE_L1 MAT", createParamsBRUTEFORCE_L1Matcher);
 
 } /* namespace [unnamed] */
 
diff --git a/src/matchers/flannbased/matcher_flannbased_load_yaml.cpp b/src/matchers/flannbased/matcher_flannbased_load_yaml.cpp
index a9f334deb89d1bedebefa1da6bb0ac73682c7940..f993481dc0b235ad2c622ec4dd9c1c81f67bde87 100644
--- a/src/matchers/flannbased/matcher_flannbased_load_yaml.cpp
+++ b/src/matchers/flannbased/matcher_flannbased_load_yaml.cpp
@@ -36,7 +36,7 @@ static ParamsBasePtr createParamsFLANNBASEDMatcher(const std::string & _filename
 }
 
 // Register in the SensorFactory
-const bool registered_matFLANNBASED_params = ParamsFactory::get().registerCreator("FLANNBASED MAT", createParamsFLANNBASEDMatcher);
+const bool VU_UNUSED registered_matFLANNBASED_params = ParamsFactory::get().registerCreator("FLANNBASED MAT", createParamsFLANNBASEDMatcher);
 
 } /* namespace [unnamed] */
 
diff --git a/src/matchers/matcher_factory.h b/src/matchers/matcher_factory.h
index 0f9a126c1a4058431b44fa7ebebd04bfb0e53306..5434e963e5fac2f4b70d4cabfd488155056820b2 100644
--- a/src/matchers/matcher_factory.h
+++ b/src/matchers/matcher_factory.h
@@ -24,7 +24,7 @@ inline std::string MatcherFactory::getClass()
 }
 
 #define VU_REGISTER_MATCHER(MatcherType, MatcherName) \
-  namespace{ const bool MatcherName##Registered = \
+  namespace{ const bool VU_UNUSED MatcherName##Registered = \
 	MatcherFactory::get().registerCreator(MatcherType, MatcherName::create, true); }\
 
 } /* namespace vision_utils */
diff --git a/src/sensors/sensor_factory.h b/src/sensors/sensor_factory.h
index deef102dbd14985cddd809fadbf3793ae4c29ce1..5f1eb4c80f6b15d8b7e6b27dca8a5fd4c164fe0d 100644
--- a/src/sensors/sensor_factory.h
+++ b/src/sensors/sensor_factory.h
@@ -24,7 +24,7 @@ inline std::string SensorFactory::getClass()
 }
 
 #define VU_REGISTER_SENSOR(SensorType, SensorName) \
-  namespace{ const bool SensorName##Registered = \
+  namespace{ const bool VU_UNUSED SensorName##Registered = \
 	SensorFactory::get().registerCreator(SensorType, SensorName::create, true); }\
 
 } /* namespace vision_utils */
diff --git a/src/sensors/usb_cam/usb_cam_load_yaml.cpp b/src/sensors/usb_cam/usb_cam_load_yaml.cpp
index 9fa57b2e3d2e7bd50e3a51110cfaaf3572502103..f81a3446c8aaa9b6cc5b88d7bee9831f9dabc55c 100644
--- a/src/sensors/usb_cam/usb_cam_load_yaml.cpp
+++ b/src/sensors/usb_cam/usb_cam_load_yaml.cpp
@@ -35,7 +35,7 @@ static ParamsBasePtr createParamsUSBCAMSensor(const std::string & _filename_dot_
 }
 
 // Register in the SensorFactory
-const bool registered_usbcam_params = ParamsFactory::get().registerCreator("USB_CAM", createParamsUSBCAMSensor);
+const bool VU_UNUSED registered_usbcam_params = ParamsFactory::get().registerCreator("USB_CAM", createParamsUSBCAMSensor);
 
 } /* namespace [unnamed] */