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) ;
d = 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);
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/happyer88/article/details/46691787