0%

004-图形相似-特征提取算法概述

摘要:004-图形相似-特征提取算法概述

概述-特征,特征描述,特征匹配

图像处理的基础就是要进行特征点的提取,feature(interest points) detect 的方法也在不断的进步,边检测,角点检测,直线检测,圆检测,SIFT特征点检测,同时描述符也在发展,为了匹配的高效,逐渐从高维特征向量到二进制向量

在一般的图像处理库中(如opencv, VLFeat, Boofcv等)都会实现。

什么是特征,什么是特征描述,什么是特征匹配

要匹配两张图像是否是同一个图像,比较好的方法就是找出图像中特征显著的内容然后来进行比较,如果这些特征都一致,那么就有很高的概率称他们为同一个图像。

  1. 找出图像中特征性强的内容(Feature Detect),特征性强的图案。
  2. 但是只知道有显著特征没用,必须知道两张图像中的特征是不是一致的,如何判断特征是不是一致的,就需要对这个特征进行描述(Feature Descriptor),如果描述非常的相似或者说是相同,那么就可以判断为是同一特征。
  3. 该如何去描述一个特征,什么样的描述是一个好的描述呢。描述一个特征其实就是描述特征与他周围内容的相互关系。那么什么样的描述是一个好的描述呢,就要提到为什么要描述特征了?描述特征是为了能够更好的匹配特征,使得我们认为描述相同的特征是同一个特征的是可信的(概率高的)。所以描述必须是有代表性的,具有排他性的(discriminative),而不是模棱两可泛泛而谈的。
  4. 最后就可以根据描述的相似性来判断这对特征是否是同一个特征。

特征不变性的理解:

常用特征,如Harris Corner、SIFT、SURF、BRIEF、BRISK等,而特征的一个重要特性就是特征不变性,常见的就是旋转不变性和尺度不变性,还有一些具有仿射不变性的特征。而这些特征该怎么理解呢?

旋转不变性:

旋转不变性。只要对特征定义方向,然后在同一个方向上进行特征描述就可以实现旋转不变性。这称之为 Rotation Normalization。

尺度不变性

实现尺度不变性,需要给特征加上尺度因子,在进行描述的时候,将尺度统一就可以实现尺度不变性了。这过程称为Scale Normalization。

不变性小结

所谓的旋转不变性和尺度不变性的原理,就是我们在描述一个特征之前,将两张图像都变换到同一个方向和同一个尺度上,然后再在这个统一标准上来描述这个特征。同样的,如果在描述一个特征之前,将图像变换到同一个仿射尺度或者投影尺度上,那么就可以实现仿射不变性和投影不变性。分别称为Affine Normalization 和 Projected Normalization.

特征提取算法小结

特征匹配的方法是先找出特征显著的特征点(Feature Detect),然后再分别描述两个特征点(Feature Descriptor),最后比较两个描述的的相似程度来判断是否为同一个特征(Feature Match)。

而在特征描述之前如果能够做到确定特征的方向,则可以实现旋转不变性(Rotation invarient),如果能确定尺度,则可以实现尺度不变性(Scale invarient)。

fast

SIFT

提点方法:DoG的最值点位置在通过二次拟合来确定位置

确定方向:特征邻域的梯度直方图的最值方向

确定尺度:通过建立确定尺度空间,尺度空间中DoG最值所在尺度为特征尺度

描述方法:在特征周围取一个region,分成4*4的sub-region,对每个sub-region使用八方向的梯度表示,总共128维

SURF

受SIFT启发,比SIFT快,健壮,64-dim(256B).

提点方法:Hessian矩阵的行列式最值

确定方向:特征邻域对Haar wavelet的最大响应方向

确定尺度:通过建立确定尺度空间,尺度空间中DoG最值所在尺度为特征尺度

描述方法:在特征周围取一个region,分成4*4的sub-region,对每个sub-region计算haar wavelet响应,分别取x方向响应和,x方向响应绝对值之和,y方向响应和,y方向绝对值之和四个值描述,总共64维

BRIEF

提点方法:无

确定方向:无

确定尺度:无

描述方法:在特征点周围随机抽取随机点对,比较两个点的像素强度,根据结果的大小记为1或0,取256组组成256位的二进制字符串

ORB

基于FAST和BRIEF,比SIFT快两个数量级,可作为SIFT的替代(a fusion of FAST keypoint detector and BRIEF descriptor). 32B binary descriptor.

提点方法:使用FAST提点,使用Harris Corner去除非角点

确定方向:使用Intensity centroid方法来确定方向

确定尺度:无

描述方法:通过贪心方法抽取符合正态分布的随机点对,其他同BRIEF

BRISK

提点方法:使用FAST或AGAST提点

确定方向:使用邻域随机抽样点对,对远点对做梯度确定方向

确定尺度:尺度空间中FAST提点最显著的尺度

描述方法:使用短距离点对进行强度匹配,组成512位的二进制字符串

MSER

斑点检测

HARRIS

角点检测方法

其他

GFTT、STAR

需要注意的地方:

  • 链接的时候加上pkg-config opencv –cflags –libs可以加入所有opencv的库
  • SIFT,SURF是nonfree的,使用的时候需要方法initModule_nonfree(),需要头文件opencv2/nonfree/nonfree.hpp
  • FAST只是检测角点,要结合其他extractor如ORB,SIFT.
一分也是爱,两分情更浓【还没有人赞赏,支持一下呗】