[VLFeat]Fisher vector提取matlab代码

fisher vector学习笔记:http://blog.csdn.net/happyer88/article/details/46576379
fisher vector改进:http://blog.csdn.net/happyer88/article/details/46625639

使用vlfeat提取fisher vector的matlab 代码

% 读入图片
I = vl_impattern('roofs1') ;
I = single(vl_imdown(rgb2gray(I))) ;

% 设置bin大小
binSize = 8 ;
% sparse sift中bin大小是根据该层的高斯平滑的尺度sigma计算来的
% dense sift这里是设定binSize,反推sigma
magnif = 3 ;
% 对图像做高斯平滑
Is = vl_imsmooth(I, sqrt((binSize/magnif)^2 - .25)) ;

% f中每一列保留每个sift点位置,d中每一列保留每个sift的128维特征向量
[f, d] = vl_dsift(Is, 'size', binSize) ;

siftData = double(d);

% GMM
% GMM中的component个数
numClusters = 20 ;
% means是GMM的均值,大小128*20
% covariances是协方差,大小128*20
% priors是每个component的权重,大小20*1
[means, covariances, priors] = vl_gmm(siftData, numClusters);

% fisher vector
% 这里得到的fisher vector大小是(2*128*20=5120)*1, 其中没有包含对权重的梯度
encoding = vl_fisher(siftData, means, covariances, priors);

你可能感兴趣的:(代码,vector,高斯,VLFeat,Fisher)