added OpponentColorDescriptorExtractor

This commit is contained in:
Maria Dimashova
2010-09-23 10:53:36 +00:00
parent 1a2fee0d56
commit 9e9d4b9e49
5 changed files with 194 additions and 33 deletions

View File

@@ -1394,7 +1394,6 @@ protected:
virtual void detectImpl( const Mat& image, const Mat& mask, vector<KeyPoint>& keypoints ) const;
};
CV_EXPORTS Mat windowedMatchingMask( const vector<KeyPoint>& keypoints1, const vector<KeyPoint>& keypoints2,
float maxDeltaX, float maxDeltaY );
@@ -1429,6 +1428,9 @@ public:
virtual void read( const FileNode& ) {};
virtual void write( FileStorage& ) const {};
virtual int descriptorSize() const = 0;
virtual int descriptorType() const = 0;
protected:
/*
* Remove keypoints within border_pixels of an image edge.
@@ -1451,6 +1453,9 @@ public:
virtual void read( const FileNode &fn );
virtual void write( FileStorage &fs ) const;
virtual int descriptorSize() const { return sift.descriptorSize(); }
virtual int descriptorType() const { return CV_32FC1; }
protected:
SIFT sift;
};
@@ -1465,6 +1470,9 @@ public:
virtual void read( const FileNode &fn );
virtual void write( FileStorage &fs ) const;
virtual int descriptorSize() const { return surf.descriptorSize(); }
virtual int descriptorType() const { return CV_32FC1; }
protected:
SURF surf;
};
@@ -1479,6 +1487,9 @@ public:
virtual void read( const FileNode &fn );
virtual void write( FileStorage &fs ) const;
virtual int descriptorSize() const { return classifier_.classes(); }
virtual int descriptorType() const { return DataType<T>::type; }
protected:
RTreeClassifier classifier_;
static const int BORDER_SIZE = 16;
@@ -1518,6 +1529,30 @@ template<typename T>
void CalonderDescriptorExtractor<T>::write( FileStorage& ) const
{}
/*
* Adapts a descriptor extractor to compute descripors in Opponent Color Space
* (refer to van de Sande et al., CGIV 2008 "Color Descriptors for Object Category Recognition").
* Input RGB image is transformed in Opponent Color Space. Then unadapted descriptor extractor
* (set in constructor) computes descriptors on each of the three channel and concatenate
* them into a single color descriptor.
*/
class OpponentColorDescriptorExtractor : public DescriptorExtractor
{
public:
OpponentColorDescriptorExtractor( const Ptr<DescriptorExtractor>& dextractor );
virtual void compute( const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors ) const;
virtual void read( const FileNode& );
virtual void write( FileStorage& ) const;
virtual int descriptorSize() const { return 3*dextractor->descriptorSize(); }
virtual int descriptorType() const { return dextractor->descriptorType(); }
protected:
Ptr<DescriptorExtractor> dextractor;
};
CV_EXPORTS Ptr<DescriptorExtractor> createDescriptorExtractor( const string& descriptorExtractorType );
/****************************************************************************************\