diff --git a/src/feature_detector/feature_detector.cpp b/src/feature_detector/feature_detector.cpp index e20a67ed1c58c8af4a799afb3e6f3376d52800fd..7535472f9fcd27c552f8035fffa0716019d4f6ff 100644 --- a/src/feature_detector/feature_detector.cpp +++ b/src/feature_detector/feature_detector.cpp @@ -81,18 +81,20 @@ int CFeature_Detector::getKeyPointsLimit(void) } CFeature_Detector::KeyPointVector CFeature_Detector::detectKeyPoints(const cv::Mat& _image) +{ + cv::Mat mask = cv::Mat::ones(_image.size(), CV_8U); + return detectKeyPoints(_image, mask); +} + +CFeature_Detector::KeyPointVector CFeature_Detector::detectKeyPoints(const cv::Mat& _image, const cv::Mat& _mask) { if (!is_init_) std::cerr << "[CFeature_Detector::detectKeyPoints]: Detector non initialized." << std::endl; - // TODO: Set a clever mask to reduce image search - if (mask_.empty()) - mask_ = cv::Mat::ones(_image.size(), CV_8U); - KeyPointVector kpts; clock_t tStart = clock(); - feature_detector_->detect(_image, kpts, mask_); + feature_detector_->detect(_image, kpts, _mask); detect_time_ = (double)(clock() - tStart) / CLOCKS_PER_SEC; if (isLimited()) @@ -105,6 +107,12 @@ CFeature_Detector::KeyPointVector CFeature_Detector::detectKeyPoints(const cv::M } CFeature_Detector::KeyLineVector CFeature_Detector::detectKeyLines(const cv::Mat& _image) +{ + cv::Mat mask = cv::Mat::ones(_image.size(), CV_8U); + return detectKeyLines(_image, mask); +} + +CFeature_Detector::KeyLineVector CFeature_Detector::detectKeyLines(const cv::Mat& _image, const cv::Mat& _mask) { if (!is_init_) std::cerr << "[CFeature_Detector::detectKeyLines]: Detector non initialized." << std::endl; @@ -112,15 +120,11 @@ CFeature_Detector::KeyLineVector CFeature_Detector::detectKeyLines(const cv::Mat KeyLineVector kls; KeyLineVector kls2; - // TODO: Set a clever mask to reduce image search - if (mask_.empty()) - mask_ = cv::Mat::ones(_image.size(), CV_8U); - clock_t tStart = clock(); if (type_ == detector::LSD) - lsd_detector_->detect(_image, kls, SCALE_FACTOR_LINE_DETECTOR, NUM_OCTAVE_LINE_DETECTOR, mask_); + lsd_detector_->detect(_image, kls, SCALE_FACTOR_LINE_DETECTOR, NUM_OCTAVE_LINE_DETECTOR, _mask); else - ed_detector_->detect(_image, kls2, mask_); + ed_detector_->detect(_image, kls2, _mask); detect_time_ = (double)(clock() - tStart) / CLOCKS_PER_SEC; kls.insert(kls.end(), kls2.begin(), kls2.end()); diff --git a/src/feature_detector/feature_detector.h b/src/feature_detector/feature_detector.h index 7c07945f18a831f7c039c4b9d9469b57b419b3f6..fb283a10ec27d070a6f9acb6562d76ab879d6394 100644 --- a/src/feature_detector/feature_detector.h +++ b/src/feature_detector/feature_detector.h @@ -125,8 +125,10 @@ class CFeature_Detector /** * \brief Detect features (points or lines) */ - KeyPointVector detectKeyPoints(const cv::Mat&); - KeyLineVector detectKeyLines(const cv::Mat&); + KeyPointVector detectKeyPoints(const cv::Mat& _image); + KeyPointVector detectKeyPoints(const cv::Mat& _image, const cv::Mat& _mask); + KeyLineVector detectKeyLines(const cv::Mat& _image); + KeyLineVector detectKeyLines(const cv::Mat& _image, const cv::Mat& _mask); /** * \brief Draw detected features @@ -147,8 +149,6 @@ class CFeature_Detector double detect_time_; // Detection time - cv::Mat mask_; // Mask to reduce image search - FeatureDetectorPtr feature_detector_; // Feature point detectors LSDDetector lsd_detector_; // Feature line detector EDDetector ed_detector_; // Feature line detector diff --git a/src/vision_utils.cpp b/src/vision_utils.cpp index 228863a0124b60bfbd2e0a31a67f136bccb2cf47..26e6254853aa5de9f4bc6d2a3cd695c5ad49f4c3 100644 --- a/src/vision_utils.cpp +++ b/src/vision_utils.cpp @@ -1,10 +1,8 @@ #include "vision_utils.h" -CVision_Utils::CVision_Utils() -{ +CVision_Utils::CVision_Utils() { } - -CVision_Utils::~CVision_Utils() -{ + +CVision_Utils::~CVision_Utils() { } diff --git a/src/vision_utils.h b/src/vision_utils.h index ec7555fcb2497c3d1a85d0748efd2d9b3a50edba..ec36cf19ba3564d8a3822bcd504fbe9f3b178a4f 100644 --- a/src/vision_utils.h +++ b/src/vision_utils.h @@ -5,11 +5,13 @@ #include "feature_detector/feature_detector.h" #include "feature_descriptor/feature_descriptor.h" -class CVision_Utils -{ - public: - CVision_Utils(); - ~CVision_Utils(); +#include <functional> +#include <set> + +class CVision_Utils { +public: + CVision_Utils(); + ~CVision_Utils(); }; #endif