/**\param init_thresh the initial threshold to start with, default = 20
* \param nonmax whether to use non max or not for fast feature detection
*/
- FastAdjuster(int init_thresh = 20, bool nonmax = true);
+ FastAdjuster(int init_thresh=20, bool nonmax=true, int min_thresh=1, int max_thresh=200);
virtual void tooFew(int min, int n_detected);
virtual void tooMany(int max, int n_detected);
int thresh_;
bool nonmax_;
- int init_thresh_;
+ int init_thresh_, min_thresh_, max_thresh_;
};
class CV_EXPORTS StarAdjuster: public AdjusterAdapter
{
public:
- StarAdjuster(double initial_thresh = 30.0);
+ StarAdjuster(double initial_thresh=30.0, double min_thresh=2., double max_thresh=200.);
virtual void tooFew(int min, int n_detected);
virtual void tooMany(int max, int n_detected);
protected:
virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
- double thresh_, init_thresh_;
+ double thresh_, init_thresh_, min_thresh_, max_thresh_;
CvStarDetectorParams params_; //todo use these instead of thresh_
};
class CV_EXPORTS SurfAdjuster: public AdjusterAdapter
{
public:
- SurfAdjuster( double initial_thresh=400.f );
+ SurfAdjuster( double initial_thresh=400.f, double min_thresh=2, double max_thresh=1000 );
virtual void tooFew(int min, int n_detected);
virtual void tooMany(int max, int n_detected);
protected:
virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
- double thresh_, init_thresh_;
+ double thresh_, init_thresh_, min_thresh_, max_thresh_;
};
CV_EXPORTS Mat windowedMatchingMask( const vector<KeyPoint>& keypoints1, const vector<KeyPoint>& keypoints2,
}
-FastAdjuster::FastAdjuster(int init_thresh, bool nonmax) :
- thresh_(init_thresh), nonmax_(nonmax), init_thresh_(init_thresh)
+FastAdjuster::FastAdjuster( int init_thresh, bool nonmax, int min_thresh, int max_thresh ) :
+ thresh_(init_thresh), nonmax_(nonmax), init_thresh_(init_thresh),
+ min_thresh_(min_thresh), max_thresh_(max_thresh)
{}
void FastAdjuster::detectImpl(const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask) const
//a useful point
bool FastAdjuster::good() const
{
- return (thresh_ > 1) && (thresh_ < 200);
+ return (thresh_ > min_thresh_) && (thresh_ < max_thresh_);
}
Ptr<AdjusterAdapter> FastAdjuster::clone() const
{
- Ptr<AdjusterAdapter> cloned_obj = new FastAdjuster( init_thresh_, nonmax_ );
+ Ptr<AdjusterAdapter> cloned_obj = new FastAdjuster( init_thresh_, nonmax_, min_thresh_, max_thresh_ );
return cloned_obj;
}
-StarAdjuster::StarAdjuster(double initial_thresh) :
- thresh_(initial_thresh), init_thresh_(initial_thresh)
+StarAdjuster::StarAdjuster(double initial_thresh, double min_thresh, double max_thresh) :
+ thresh_(initial_thresh), init_thresh_(initial_thresh),
+ min_thresh_(min_thresh), max_thresh_(max_thresh)
{}
void StarAdjuster::detectImpl(const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask) const
bool StarAdjuster::good() const
{
- return (thresh_ > 2) && (thresh_ < 200);
+ return (thresh_ > min_thresh_) && (thresh_ < max_thresh_);
}
Ptr<AdjusterAdapter> StarAdjuster::clone() const
{
- Ptr<AdjusterAdapter> cloned_obj = new StarAdjuster( init_thresh_ );
+ Ptr<AdjusterAdapter> cloned_obj = new StarAdjuster( init_thresh_, min_thresh_, max_thresh_ );
return cloned_obj;
}
-SurfAdjuster::SurfAdjuster( double initial_thresh ) :
- thresh_(initial_thresh), init_thresh_(initial_thresh)
+SurfAdjuster::SurfAdjuster( double initial_thresh, double min_thresh, double max_thresh ) :
+ thresh_(initial_thresh), init_thresh_(initial_thresh),
+ min_thresh_(min_thresh), max_thresh_(max_thresh)
{}
void SurfAdjuster::detectImpl(const Mat& image, vector<KeyPoint>& keypoints, const cv::Mat& mask) const
//a useful point
bool SurfAdjuster::good() const
{
- return (thresh_ > 2) && (thresh_ < 1000);
+ return (thresh_ > min_thresh_) && (thresh_ < max_thresh_);
}
Ptr<AdjusterAdapter> SurfAdjuster::clone() const
{
- Ptr<AdjusterAdapter> cloned_obj = new SurfAdjuster( init_thresh_ );
+ Ptr<AdjusterAdapter> cloned_obj = new SurfAdjuster( init_thresh_, min_thresh_, max_thresh_ );
return cloned_obj;
}