特征检测和描述符提取有啥区别?
Posted
技术标签:
【中文标题】特征检测和描述符提取有啥区别?【英文标题】:What is the difference between feature detection and descriptor extraction?特征检测和描述符提取有什么区别? 【发布时间】:2011-10-13 13:26:06 【问题描述】:有人知道 OpenCV 2.3 中特征检测和描述符提取之间的区别吗?
我了解使用 DescriptorMatcher 进行匹配需要后者。如果是这样,FeatureDetection 是做什么用的?
【问题讨论】:
【参考方案1】:Feature Detection
和 Feature descriptor extraction
都是 Feature based image registration
的一部分。只有在整个基于特征的图像配准过程的上下文中查看它们才有意义,以了解它们的工作是什么。
基于特征的配准算法
PCL documentation 的下图展示了这样一个注册管道:
数据采集:将输入图像和参考图像输入算法。图像应从稍微不同的视点显示相同的场景。
关键点估计(特征检测):关键点 (interest point) 是点云中具有以下特征的点:
-
它有一个清晰的定义,最好是有充分的数学基础,
它在图像空间中具有明确的位置,
兴趣点周围的局部图像结构具有丰富的局部信息内容。
OpenCV 带有多个
Feature detection
的实现,例如:
图像中的这些显着点非常有用,因为它们的总和可以表征图像并有助于区分图像的不同部分。
特征描述符(描述符提取器):检测关键点后,我们继续为每个关键点计算一个描述符。 “局部描述符是一个点的局部邻域的紧凑表示。与描述完整对象或点云的全局描述符相比,局部描述符试图仅在一个点周围的局部邻域中类似于形状和外观,因此非常适合表示它在匹配方面。” (Dirk Holz et al.)。 OpenCV 选项:
AKAZE BRISK ORB KAZE SURF SIFT FREAK DAISY LATCH LUCID BRIEFCorrespondence Estimation (descriptor matcher):下一个任务是找到两个图像中找到的关键点之间的对应关系。因此,提取的特征被放置在一个可以有效搜索的结构中(例如kd-tree)。通常查找所有本地特征描述符并将它们中的每一个与另一张图像中的对应对应物相匹配就足够了。然而,由于来自相似场景的两个图像不一定具有相同数量的特征描述符,因为一个云可以比另一个云拥有更多的数据,我们需要运行一个单独的对应拒绝过程。 OpenCV 选项:
BF FLANN信件拒绝:执行信件拒绝的最常见方法之一是使用RANSAC(随机样本共识)。
变换估计:计算出两幅图像之间的稳健对应后,Absolute Orientation Algorithm
用于计算变换矩阵,该变换矩阵应用于输入图像以匹配参考图像。有许多不同的算法方法可以做到这一点,常见的方法是:Singular Value Decomposition(SVD)。
【讨论】:
【参考方案2】:特征检测
在计算机视觉和图像处理中,特征检测的概念是指旨在计算图像信息的抽象并在每个图像点进行局部决策的方法,即该点是否存在给定类型的图像特征。生成的特征将是图像域的子集,通常采用孤立点、连续曲线或连接区域的形式。
特征检测 = 如何在图像中找到一些有趣的点(特征)。 (比如找角、找模板等等。)
特征提取
在模式识别和图像处理中,特征提取是一种特殊的降维形式。当算法的输入数据太大而无法处理并且被怀疑是众所周知的冗余(大量数据,但信息不多)时,输入数据将被转换为特征的简化表示集(也称为特征向量) .将输入数据转换为特征集称为特征提取。如果提取的特征经过仔细选择,则预计特征集将从输入数据中提取相关信息,以便使用这种简化表示而不是全尺寸输入来执行所需的任务。
特征提取 = 如何表示我们发现的有趣点,以便将它们与图像中的其他有趣点(特征)进行比较。 (例如,该点的局部区域强度?该点周围区域的局部方向?等等)
实际例子:你可以用哈里斯角方法找到一个角,但你可以用任何你想要的方法来描述它(例如,Histograms、HOG、Local Orientation in the 8th adjacency)
您可以在this Wikipedia article 中查看更多信息。
【讨论】:
以上是关于特征检测和描述符提取有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章