特征描述子提取公用接口

OpenCV封装了一些特征描述子提取算法,使得用户能够解决该问题时候方便使用各种算法。这章用来计算的描述子提取被表达成一个高维空间的向量 vector.所有实现 vector 特征描述子子提取的部分继承了 DescriptorExtractor 接口.

DescriptorExtractor

class  DescriptorExtractor

抽象基类 for 对图像关键点计算特征描述子.

class CV_EXPORTS DescriptorExtractor
{
public:
    virtual ~DescriptorExtractor();

    void compute( const Mat& image, vector& keypoints,
                  Mat& descriptors ) const;
    void compute( const vector& images, vector >& keypoints,
                  vector& descriptors ) const;

    virtual void read( const FileNode& );
    virtual void write( FileStorage& ) const;

    virtual int descriptorSize() const = 0;
    virtual int descriptorType() const = 0;

    static Ptr create( const string& descriptorExtractorType );

protected:
    ...
};

在这个接口中, 一个关键点的特征描述子可以被表达成密集(dense),固定维数的向量。 大部分特征描述子按照这种模式每隔固定个像素计算。特征描述子的集合被表达成 Mat , 其中每一行是一个关键的特征描述子.

DescriptorExtractor::compute

根据检测到的图像(第一种情况)或者图像集合(第二种情况)中的关键点(检测子)计算描述子.

C++:  void  DescriptorExtractor:: compute (const Mat&  image, vectorkeypoints, Mat&  descriptors )  const
C++:  void  DescriptorExtractor:: compute (const vectorimages, vector>&  keypoints, vectordescriptors )  const
Parameters:
  • image – 图像.
  • images – 图像集.

:param keypoints:输入的特征关键点. 不能被计算特征描述子的关键点被略过. 另外一些情况新的特征关键点增加进来, 比如: SIFT 增加了几个主方向上的特征关键点.

Parameters:
  • descriptors – 计算特征描述子. In the second variant of the method descriptors[i] are descriptors computed for a keypoints[i]`. Row ``j is the keypoints(or keypoints[i]) is the descriptor for keypoint j-th keypoint.

DescriptorExtractor::read

从文件点中读取特征描述子提取的对象.

C++:  void  DescriptorExtractor:: read (const FileNode&  fn )
Parameters:
  • fn – 读取的文件点.

DescriptorExtractor::write

写入特征描述子的提取的对象到文件.

C++:  void  DescriptorExtractor:: write (FileStorage&  fs )  const
Parameters:
  • fs – 写入的文件.

DescriptorExtractor::create

根据名字创建特征描述子提取.

C++:  Ptr  DescriptorExtractor:: create (const string&  descriptorExtractorType )
Parameters:
  • descriptorExtractorType – Descriptor extractor type.

现有实现支持以下几个类型的特征描述子提取方法:

  • "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)