From c6d22f7dfe5669959b462e8b40f3d2e5d8e6eb19 Mon Sep 17 00:00:00 2001 From: asantamaria <asantamaria@iri.upc.edu> Date: Fri, 28 Jul 2017 13:03:15 +0200 Subject: [PATCH] new constructor to enter mask for the detector --- src/feature_detector/feature_detector.cpp | 26 +++++++++++++---------- src/feature_detector/feature_detector.h | 8 +++---- src/vision_utils.cpp | 8 +++---- src/vision_utils.h | 12 ++++++----- 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/feature_detector/feature_detector.cpp b/src/feature_detector/feature_detector.cpp index e20a67e..7535472 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 7c07945..fb283a1 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 228863a..26e6254 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 ec7555f..ec36cf1 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 -- GitLab