有谁知道 OpenCV 2.3 中特征检测和描述符提取之间的区别?
我知道后者是使用 DescriptorMatcher 进行匹配所必需的。如果是这样,FeatureDetection 是用来做什么的?
有谁知道 OpenCV 2.3 中特征检测和描述符提取之间的区别?
我知道后者是使用 DescriptorMatcher 进行匹配所必需的。如果是这样,FeatureDetection 是用来做什么的?
特征检测
在计算机视觉和图像处理中,特征检测的概念是指旨在计算图像信息的抽象并在每个图像点进行局部决策的方法,即该点是否存在给定类型的图像特征。生成的特征将是图像域的子集,通常以孤立点、连续曲线或连接区域的形式出现。
特征检测=如何在图像中找到一些有趣的点(特征)。(例如,找一个角落,找一个模板,等等。)
特征提取
在模式识别和图像处理中,特征提取是一种特殊的降维形式。当算法的输入数据太大而无法处理并且被怀疑是众所周知的冗余(大量数据,但信息不多)时,输入数据将被转换为特征的简化表示集(也称为特征向量) . 将输入数据转换为特征集称为特征提取。如果仔细选择提取的特征,则预计特征集将从输入数据中提取相关信息,以便使用这种简化的表示而不是全尺寸输入来执行所需的任务。
特征提取=如何表示我们发现的有趣点以将它们与图像中的其他有趣点(特征)进行比较。(例如,该点的局部区域强度?该点周围区域的局部方向?等等)
实际示例:您可以使用 harris 角点方法找到角点,但您可以使用任何您想要的方法来描述它(例如,Histograms、HOG、Local Orientation in the 8th adjacency)
您可以在此 Wikipedia 文章中查看更多信息。
两者,Feature Detection
和Feature descriptor extraction
都是Feature based image registration
. 只有在整个基于特征的图像配准过程的上下文中查看它们以了解它们的工作是什么才有意义。
基于特征的配准算法
PCL 文档中的下图显示了这样一个注册管道:
数据采集:将输入图像和参考图像输入算法。图像应从稍微不同的视点显示相同的场景。
关键点估计(特征检测):关键点(兴趣点)是点云中的一个点,具有以下特征:
Feature detection
,例如:图像中的这些显着点非常有用,因为它们的总和表征了图像并有助于区分图像的不同部分。
特征描述符(描述符提取器):在检测到关键点之后,我们继续为每个关键点计算一个描述符。“局部描述符是一个点的局部邻域的紧凑表示。与描述完整对象或点云的全局描述符相比,局部描述符试图仅在一个点周围的局部邻域中类似于形状和外观,因此非常适合表示它在匹配方面。” (德克霍尔兹等人)。OpenCV 选项:
对应估计(描述符匹配器):下一个任务是找到在两个图像中找到的关键点之间的对应关系。因此,将提取的特征放置在可以有效搜索的结构中(例如kd-tree)。通常查找所有本地特征描述符并将它们中的每一个与另一张图像中的对应对应物相匹配就足够了。然而,由于来自相似场景的两个图像不一定具有相同数量的特征描述符,因为一个云可以比另一个云拥有更多的数据,我们需要运行一个单独的对应拒绝过程。OpenCV 选项:
信函拒绝:执行信函拒绝的最常见方法之一是使用RANSAC(随机样本共识)。
变换估计:计算两幅图像之间的鲁棒对应关系后,Absolute Orientation Algorithm
用于计算变换矩阵,该变换矩阵应用于输入图像以匹配参考图像。有许多不同的算法方法可以做到这一点,一种常见的方法是:奇异值分解(SVD)。