场景识别描述子Gist代码
Gist描述子主要用于场景识别,是由MIT的Antonio Torralba提出的。文章发表在IJCV,题目:Modeling the shape of the scene: a holistic representation of the spatial envelope
GIST Descriptor (Matlab code)
Download:
Download all the matlab code and examples here:Computing the gist descriptor:
To compute the gist descriptor on an image use the function
% Load image
img = imread('demo2.jpg');
% GIST Parameters:
clear param
param.orientationsPerScale = [8 8 8 8]; % number of orientations per scale (from HF to LF)
param.numberBlocks = 4;
param.fc_prefilt = 4;
% Computing gist:
[gist, param] = LMgist(img, '', param);
Visualization:
To visualize the gist descriptor use the function
% Visualization
figure
subplot(121)
imshow(img)
title('Input image')
subplot(122)
showGist(gist, param)
title('Descriptor')
Image similarities:
When computing image similarities, it might be important to normalize the image size before computing the GIST descriptor. This can be achieved by setting the image size inside the param struct (using the field
% Load images
img1 = imread('demo1.jpg');
img2 = imread('demo2.jpg');
% GIST Parameters:
clear param
param.imageSize = [256 256]; % it works also with non-square images (use the most common aspect ratio in your set)
param.orientationsPerScale = [8 8 8 8]; % number of orientations per scale
param.numberBlocks = 4;
param.fc_prefilt = 4;
% Computing gist:
gist1 = LMgist(img1, '', param);
gist2 = LMgist(img2, '', param);
% Distance between the two images:
D = sum((gist1-gist2).^2)
Image collections:
The first call to LMgist will precompute the filters in the frequency domain and store them in param.G, subsequent calls will be faster.
% GIST Parameters:
clear param
param.imageSize = [256 256]; % set a normalized image size
param.orientationsPerScale = [8 8 8 8]; % number of orientations per scale (from HF to LF)
param.numberBlocks = 4;
param.fc_prefilt = 4;
% Pre-allocate gist:
Nfeatures = sum(param.orientationsPerScale)*param.numberBlocks^2;
gist = zeros([Nimages Nfeatures]);
% Load first image and compute gist:
img = imread(file{1});
[gist(1, :), param] = LMgist(img, '', param); % first call
% Loop:
for i = 2:Nimages
end
The script
project page: