C++ 探测器、提取器和匹配器的分类

C++ 探测器、提取器和匹配器的分类,c++,image-processing,opencv,computer-vision,feature-detection,C++,Image Processing,Opencv,Computer Vision,Feature Detection,我是opencv新手,正在尝试实现两个图像之间的图像匹配。为此,我试图理解特征描述符、描述符提取器和描述符匹配器之间的区别。我遇到了很多术语,并试图在opencv文档网站上阅读它们,但我似乎无法理解这些概念。我理解这里的基本区别 但我在研究这个话题时遇到了以下术语: 快速、GFTT、筛选、冲浪、MSER、星星、球体、轻快、畸形、简短 我知道SIFT和SURF的工作速度有多快,但似乎无法确定上面哪一个只是检测器,哪一个是提取器 然后是配对者 弗兰贝斯、布鲁特福、肯尼马特和其他一些人 经过一些阅读,

我是opencv新手,正在尝试实现两个图像之间的图像匹配。为此,我试图理解特征描述符、描述符提取器和描述符匹配器之间的区别。我遇到了很多术语,并试图在opencv文档网站上阅读它们,但我似乎无法理解这些概念。我理解这里的基本区别

但我在研究这个话题时遇到了以下术语:

快速、GFTT、筛选、冲浪、MSER、星星、球体、轻快、畸形、简短

我知道SIFT和SURF的工作速度有多快,但似乎无法确定上面哪一个只是检测器,哪一个是提取器

然后是配对者

弗兰贝斯、布鲁特福、肯尼马特和其他一些人

经过一些阅读,我认为某些匹配器只能与某些提取器一起使用,如这里所解释的。 给出的分类非常清楚,但它只适用于少数提取器,我不理解float和uchar之间的区别

所以基本上,有人能请你吗

  • 根据浮点数和uchar(如上所述)或其他类型的分类,对探测器、提取器和匹配器的类型进行分类
  • 解释浮动和uchar分类之间的区别,或使用哪种分类
  • 提及如何初始化(编码)各种类型的检测器、提取器和匹配器
  • 我知道这要求很多,但我将非常感激。 多谢各位

    我知道,筛选、冲浪的速度有多快,但我似乎不明白 上面哪一个只是探测器,哪一个是提取器

    基本上,从功能检测器/提取器列表(链接到文章:,,,,,,)中,其中一些只是功能检测器(FAST,GFTT),另一些是功能检测器和描述符提取器(SIFT,SURF,ORB,FRANK

    如果我没记错的话,BRIEF只是一个描述符提取器,所以它需要一些其他算法(如FAST或ORB)检测到的特征

    为了确定哪个是哪个,您必须浏览与算法相关的文章或浏览opencv文档,以查看哪个是为
    FeatureDetector
    类实现的,或者哪个是为
    DescriptorExtractor
    类实现的

    Q1:根据以下内容对检测器、提取器和匹配器的类型进行分类 如前所述,浮动和uchar,还是其他类型的分类

    问题2:解释浮动和uchar分类之间的区别 或者使用哪种分类

    关于问题1和问题2,将它们分为float和uchar,这是我所知道的最好的参考资料,也许有人能够完成它

    问题3:提及如何初始化(编码)各种类型的探测器, 提取器和匹配器

    在回答问题3时,OpenCV使使用各种类型的代码完全相同——主要是您必须选择一个特征检测器。最大的区别在于选择匹配器的类型,您已经提到了OpenCV的3种类型。您最好阅读文档和相关的堆栈溢出问题。此外,一些博客文章也是一个很好的信息来源,比如这些(博客不再可用,所以我不得不从它的谷歌缓存中创建一个原始文本副本)

    匹配器用于查找一个描述符是否与列表中的另一个描述符相似。您可以将查询描述符与列表中的所有其他描述符进行比较(BruteForce),或者使用更好的启发式(flannbase,knnMatch)。问题是,启发式算法并不适用于所有类型的描述符。例如,基于法兰的实现仅用于
    float
    描述符,而不用于
    uchar
    (但自2.4.0以来,基于法兰的LSH索引可应用于uchar描述符)

    引用有关
    描述符的信息
    类型:

    描述符有“法兰基”两种类型, “蛮力匹配器”、“蛮力L1”和“蛮力哈明路德”。这个 “FlannBase”匹配器使用flann(快速库)进行近似匹配 最近邻居)引擎盖下的库,执行速度更快,但 近似匹配。“BruteForce-*”版本进行了详尽的搜索 用于查找图像特征与目标最近匹配的词典 字典里的单词

    一些比较流行的组合是:

    特征检测器/描述器提取器/匹配器类型

    • (快速,冲浪)/冲浪/法兰基

    • (快速,筛分)/筛分/法兰基

    • (快速,圆球)/圆球/蛮力

    • (快速,圆球)/简短/暴力

    • (快速、冲浪)/怪胎/蛮力

    您可能还注意到特性检测器有一些适配器(动态、金字塔、网格)。很好地总结了它们的用途:

    (…)还有几个适配器可以用来更改 关键点检测器的行为。例如
    动态
    调整检测器类型特定检测阈值的适配器 直到在图像或
    金字塔
    适配器中找到足够的关键点 它构造了一个高斯金字塔来检测多个平面上的点 规模
    棱锥体
    适配器对于以下特性描述符非常有用: 它们不是尺度不变的

    进一步阅读:

    • 对SIFT、FAST、SURF、BRIEF、ORB、BRISK和FREAK做了很好的概述

    • 这些算法还对其中的几个算法进行了详细的总结(简短、ORB、BRISK和FREAK)


    这不是要求多少,而是要求多少