diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 14b44143e84debfc9db3047d3d77d6f0d1caf767..76d33bbb607e15a926ecb4784d7bc80073cb5506 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -46,6 +46,8 @@ SET(sources
 	descriptors/latch/descriptor_latch_load_yaml.cpp
 	descriptors/freak/descriptor_freak.cpp
 	descriptors/freak/descriptor_freak_load_yaml.cpp
+	descriptors/brief/descriptor_brief.cpp
+	descriptors/brief/descriptor_brief_load_yaml.cpp
 	matchers/matcher_base.cpp )
 
 # application header files
@@ -78,7 +80,8 @@ SET(headers
 	descriptors/kaze/descriptor_kaze.h	
 	descriptors/akaze/descriptor_akaze.h
 	descriptors/latch/descriptor_latch.h
-	descriptors/freak/descriptor_freak.h	
+	descriptors/freak/descriptor_freak.h
+	descriptors/brief/descriptor_brief.h	
 	matchers/matcher_factory.h
 	matchers/matcher_base.h)
 
diff --git a/src/descriptors/brief/descriptor_brief.cpp b/src/descriptors/brief/descriptor_brief.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d19b78f3827dc19fdba1f145cf639746d5b72107
--- /dev/null
+++ b/src/descriptors/brief/descriptor_brief.cpp
@@ -0,0 +1,17 @@
+#include "descriptor_brief.h"
+
+namespace vision_utils {
+
+DescriptorBRIEF::DescriptorBRIEF(void)
+{}
+
+DescriptorBRIEF::~DescriptorBRIEF(void)
+{}
+
+} /* namespace vision_utils */
+
+// Register in the DescriptorsFactory
+namespace vision_utils
+{
+VU_REGISTER_DESCRIPTOR("BRIEF", DescriptorBRIEF);
+} /* namespace vision_utils */
diff --git a/src/descriptors/brief/descriptor_brief.h b/src/descriptors/brief/descriptor_brief.h
new file mode 100644
index 0000000000000000000000000000000000000000..a128d4a553bf3cb334f4168256491e7f0025fd02
--- /dev/null
+++ b/src/descriptors/brief/descriptor_brief.h
@@ -0,0 +1,69 @@
+#ifndef _DESCRIPTOR_BRIEF_H_
+#define _DESCRIPTOR_BRIEF_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(DescriptorBRIEF);
+VU_PTR_TYPEDEFS(DescriptorParamsBRIEF);
+
+/** \brief Class parameters
+ *
+ */
+struct DescriptorParamsBRIEF: public ParamsBase
+{
+	int bytes = 32;					// Legth of the descriptor in bytes, valid values are: 16, 32 (default) or 64 .
+	bool use_orientation = false;	// Sample patterns using keypoints orientation, disabled by default.
+};
+
+/** \brief DETECTOR class
+ *
+ */
+class DescriptorBRIEF : public DescriptorBase {
+
+    public:
+		DescriptorBRIEF();
+        virtual ~DescriptorBRIEF(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 DescriptorBRIEF::defineDescriptor(const ParamsBasePtr _params)
+{
+    DescriptorParamsBRIEFPtr params_ptr = std::static_pointer_cast<DescriptorParamsBRIEF>(_params);
+
+    descriptor_ = cv::xfeatures2d::BriefDescriptorExtractor::create(params_ptr->bytes,
+    		params_ptr->use_orientation);
+}
+
+
+/*
+ * brief Create object in factory
+ */
+inline DescriptorBasePtr DescriptorBRIEF::create(const std::string& _unique_name, const ParamsBasePtr _params)
+{
+    DescriptorBRIEFPtr det_ptr = std::make_shared<DescriptorBRIEF>();
+    det_ptr->setName(_unique_name);
+    det_ptr->defineDescriptor(_params);
+    return det_ptr;
+}
+
+} /* namespace vision_utils */
+
+#endif /* _DESCRIPTOR_BRIEF_H_ */
diff --git a/src/descriptors/brief/descriptor_brief_load_yaml.cpp b/src/descriptors/brief/descriptor_brief_load_yaml.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6e79ed44e7edaada9d5ff28b2dc2618e12243ce5
--- /dev/null
+++ b/src/descriptors/brief/descriptor_brief_load_yaml.cpp
@@ -0,0 +1,46 @@
+#include "descriptor_brief.h"
+
+#ifdef USING_YAML
+
+// yaml-cpp library
+#include <yaml-cpp/yaml.h>
+
+namespace vision_utils
+{
+
+namespace
+{
+
+static ParamsBasePtr createParamsBRIEFDescriptor(const std::string & _filename_dot_yaml)
+{
+	DescriptorParamsBRIEFPtr params_ptr = std::make_shared<DescriptorParamsBRIEF>();
+
+    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>() == "BRIEF")
+        {
+        	params_ptr->bytes				= d_yaml["bytes"].as<int>();
+        	params_ptr->use_orientation		= d_yaml["use_orientation"].as<bool>();
+        }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_desBRIEF_params = ParamsFactory::get().registerCreator("BRIEF DES", createParamsBRIEFDescriptor);
+
+} /* namespace [unnamed] */
+
+} /* namespace vision_utils */
+
+#endif /* IF USING_YAML */
+
diff --git a/src/examples/test_descriptor.cpp b/src/examples/test_descriptor.cpp
index 438073dbe6f184b5c52df54dcfe667f20f888e41..3b3046215b7cb1d9150cb19eb93cb527799eb58e 100644
--- a/src/examples/test_descriptor.cpp
+++ b/src/examples/test_descriptor.cpp
@@ -30,7 +30,7 @@
 #include "../descriptors/akaze/descriptor_akaze.h"
 #include "../descriptors/latch/descriptor_latch.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/lucid/descriptor_lucid.h"
 
@@ -106,8 +106,8 @@ int main(void)
     	des_ptr = std::static_pointer_cast<DescriptorLATCH>(des_ptr);
     else if (des_name.compare("FREAK") == 0)
     	des_ptr = std::static_pointer_cast<DescriptorFREAK>(des_ptr);
-//    else if (des_name.compare("BRIEF") == 0)
-//    	des_ptr = std::static_pointer_cast<DescriptorBRIEF>(des_ptr);
+    else if (des_name.compare("BRIEF") == 0)
+    	des_ptr = std::static_pointer_cast<DescriptorBRIEF>(des_ptr);
 //    else if (des_name.compare("DAISY") == 0)
 //    	des_ptr = std::static_pointer_cast<DescriptorDAISY>(des_ptr);
 //    else if (des_name.compare("LUCID") == 0)
diff --git a/src/examples/yaml/BRIEF.yaml b/src/examples/yaml/BRIEF.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..63204a554e958540457ef925b0e4d2d47ef65dd6
--- /dev/null
+++ b/src/examples/yaml/BRIEF.yaml
@@ -0,0 +1,6 @@
+sensor:
+  type: "USB_CAM"
+descriptor:
+  type: "BRIEF"
+  bytes: 32
+  use_orientation: false         
\ No newline at end of file