Skip to content
Snippets Groups Projects
Commit c6d22f7d authored by Angel Santamaria-Navarro's avatar Angel Santamaria-Navarro
Browse files

new constructor to enter mask for the detector

parent 59c9b65d
No related branches found
No related tags found
No related merge requests found
...@@ -81,18 +81,20 @@ int CFeature_Detector::getKeyPointsLimit(void) ...@@ -81,18 +81,20 @@ int CFeature_Detector::getKeyPointsLimit(void)
} }
CFeature_Detector::KeyPointVector CFeature_Detector::detectKeyPoints(const cv::Mat& _image) 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_) if (!is_init_)
std::cerr << "[CFeature_Detector::detectKeyPoints]: Detector non initialized." << std::endl; 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; KeyPointVector kpts;
clock_t tStart = clock(); clock_t tStart = clock();
feature_detector_->detect(_image, kpts, mask_); feature_detector_->detect(_image, kpts, _mask);
detect_time_ = (double)(clock() - tStart) / CLOCKS_PER_SEC; detect_time_ = (double)(clock() - tStart) / CLOCKS_PER_SEC;
if (isLimited()) if (isLimited())
...@@ -105,6 +107,12 @@ CFeature_Detector::KeyPointVector CFeature_Detector::detectKeyPoints(const cv::M ...@@ -105,6 +107,12 @@ CFeature_Detector::KeyPointVector CFeature_Detector::detectKeyPoints(const cv::M
} }
CFeature_Detector::KeyLineVector CFeature_Detector::detectKeyLines(const cv::Mat& _image) 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_) if (!is_init_)
std::cerr << "[CFeature_Detector::detectKeyLines]: Detector non initialized." << std::endl; std::cerr << "[CFeature_Detector::detectKeyLines]: Detector non initialized." << std::endl;
...@@ -112,15 +120,11 @@ CFeature_Detector::KeyLineVector CFeature_Detector::detectKeyLines(const cv::Mat ...@@ -112,15 +120,11 @@ CFeature_Detector::KeyLineVector CFeature_Detector::detectKeyLines(const cv::Mat
KeyLineVector kls; KeyLineVector kls;
KeyLineVector kls2; 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(); clock_t tStart = clock();
if (type_ == detector::LSD) 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 else
ed_detector_->detect(_image, kls2, mask_); ed_detector_->detect(_image, kls2, _mask);
detect_time_ = (double)(clock() - tStart) / CLOCKS_PER_SEC; detect_time_ = (double)(clock() - tStart) / CLOCKS_PER_SEC;
kls.insert(kls.end(), kls2.begin(), kls2.end()); kls.insert(kls.end(), kls2.begin(), kls2.end());
......
...@@ -125,8 +125,10 @@ class CFeature_Detector ...@@ -125,8 +125,10 @@ class CFeature_Detector
/** /**
* \brief Detect features (points or lines) * \brief Detect features (points or lines)
*/ */
KeyPointVector detectKeyPoints(const cv::Mat&); KeyPointVector detectKeyPoints(const cv::Mat& _image);
KeyLineVector detectKeyLines(const cv::Mat&); 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 * \brief Draw detected features
...@@ -147,8 +149,6 @@ class CFeature_Detector ...@@ -147,8 +149,6 @@ class CFeature_Detector
double detect_time_; // Detection time double detect_time_; // Detection time
cv::Mat mask_; // Mask to reduce image search
FeatureDetectorPtr feature_detector_; // Feature point detectors FeatureDetectorPtr feature_detector_; // Feature point detectors
LSDDetector lsd_detector_; // Feature line detector LSDDetector lsd_detector_; // Feature line detector
EDDetector ed_detector_; // Feature line detector EDDetector ed_detector_; // Feature line detector
......
#include "vision_utils.h" #include "vision_utils.h"
CVision_Utils::CVision_Utils() CVision_Utils::CVision_Utils() {
{
} }
CVision_Utils::~CVision_Utils() CVision_Utils::~CVision_Utils() {
{
} }
...@@ -5,11 +5,13 @@ ...@@ -5,11 +5,13 @@
#include "feature_detector/feature_detector.h" #include "feature_detector/feature_detector.h"
#include "feature_descriptor/feature_descriptor.h" #include "feature_descriptor/feature_descriptor.h"
class CVision_Utils #include <functional>
{ #include <set>
public:
CVision_Utils(); class CVision_Utils {
~CVision_Utils(); public:
CVision_Utils();
~CVision_Utils();
}; };
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment