VLFeat工具包Sift相关函数的学习与使用


论文:ImageClassification with Fisher Vector: Theory and Practice

数据集:Calthch256

 

主要查看了VLFeat主页上关于SIFT和DENSESIFT的Tutorials。

 

运行了VLFeat中的demo,对于Calthch256中001.ak47类的第一张图片001_0001.jpg(图片大小499×278)使用vl_sift函数对整张图片提取特征,得到421个特征点,而对于vl_dsift函数,通过调整patch size和step size可以控制得到的特征点的坐标和个数。对同一张图片001_0001.jpg,当patch size是24×24,step size取为4时,结果得到了7865个特征点。对于其他图像,也是如此,得到的特征点数大大提高。

 

从vl_sift函数说明中,可以知道检测到的所有特征点以F表示(4×numkeypoints),每个特征点被分配了坐标位置x、y,尺度s和方向th。F中的每一列代表了一个特征点,而每一个descriptor都是128维的,因为:

在高斯尺度图像上,以特征点为中心,将附近邻域划分为 d×d 个子区域(Lowe取d = 4),每个子区域都是一个正方形;

用直方图统计邻域像素的梯度方向,每π/2设置为一个方向,共有8个方向;

在每个子区域上计算8个方向的梯度方向直方图,这样就可以对每个特征点形成一个4*4*8=128维的描述符。

所有特征点的描述符构成D(128×numkeypoints)。

 

对于vl_dsift函数来说,需要确定的主要参数为binSize(bin size)、step(sampling step)、bounds(bounding box)。各参数的含义如下图所示:

                               VLFeat工具包Sift相关函数的学习与使用_第1张图片

(摘自http://www.vlfeat.org/api/dsift.html)

 

根据论文中所提:extract 10K descriptors per image from 24×24 patches on a regulargrid every 4 pixels at 5 scale。参数的设置如下:

binSize= 24/4 =6 (patch size = 24×24);

step= 4;

bounds为输入图像的大小。


        

 

你可能感兴趣的:(汇报)