特征描述子提取公用接口
OpenCV封裝了一些特征描述子提取算法,使得用戶能夠解決該問題時候方便使用各種算法。這章用來計算的描述子提取被表達成一個高維空間的向量?vector.所有實現?vector?特征描述子子提取的部分繼承了?DescriptorExtractor?接口.
DescriptorExtractor
class?DescriptorExtractor抽象基類 for 對圖像關鍵點計算特征描述子.
class CV_EXPORTS DescriptorExtractor { public:virtual ~DescriptorExtractor();void compute( const Mat& image, vector<KeyPoint>& keypoints,Mat& descriptors ) const;void compute( const vector<Mat>& images, vector<vector<KeyPoint> >& keypoints,vector<Mat>& descriptors ) const;virtual void read( const FileNode& );virtual void write( FileStorage& ) const;virtual int descriptorSize() const = 0;virtual int descriptorType() const = 0;static Ptr<DescriptorExtractor> create( const string& descriptorExtractorType );protected:... };在這個接口中, 一個關鍵點的特征描述子可以被表達成密集(dense),固定維數的向量。 大部分特征描述子按照這種模式每隔固定個像素計算。特征描述子的集合被表達成?Mat?, 其中每一行是一個關鍵的特征描述子.
DescriptorExtractor::compute
根據檢測到的圖像(第一種情況)或者圖像集合(第二種情況)中的關鍵點(檢測子)計算描述子.
C++:?void?DescriptorExtractor::compute(const Mat&?image, vector<KeyPoint>&?keypoints, Mat&?descriptors)?const
|
:param keypoints:輸入的特征關鍵點. 不能被計算特征描述子的關鍵點被略過. 另外一些情況新的特征關鍵點增加進來, 比如:?SIFT?增加了幾個主方向上的特征關鍵點.
|
DescriptorExtractor::read
從文件點中讀取特征描述子提取的對象.
C++:?void?DescriptorExtractor::read(const FileNode&?fn)
|
DescriptorExtractor::write
寫入特征描述子的提取的對象到文件.
C++:?void?DescriptorExtractor::write(FileStorage&?fs)?const
|
DescriptorExtractor::create
根據名字創建特征描述子提取.
C++:?Ptr<DescriptorExtractor>?DescriptorExtractor::create(const string&?descriptorExtractorType)
|
現有實現支持以下幾個類型的特征描述子提取方法:
- "SIFT"?–?SiftDescriptorExtractor
- "SURF"?–?SurfDescriptorExtractor
- "ORB"?–?OrbDescriptorExtractor
- "BRIEF"?–?BriefDescriptorExtractor
A combined format is also supported: descriptor extractor adapter name (?"Opponent"?–?OpponentColorDescriptorExtractor?) + descriptor extractor name (see above), for example:?"OpponentSIFT"?.
總結
以上是生活随笔為你收集整理的特征描述子提取公用接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看电脑主板的最大支持内存
- 下一篇: OpenCV中SiftDescripto