im{1} = rgb2gray(imread('http://i.imgur.com/TMyflBl.png'));
im{2} = rgb2gray(imread('http://i.imgur.com/ozygW2g.png'));
im{3} = rgb2gray(imread('http://i.imgur.com/dGj8FNE.png'));
im{4} = rgb2gray(imread('http://i.imgur.com/VbTLPjG.png'));
im{5} = rgb2gray(imread('http://i.imgur.com/huj2El9.png'));
detectFeatures = @(in) {detectSURFFeatures(in)};
regions = cellfun(detectFeatures,im);
extractAndTransposeFeatures = @(in,pts) extractFeatures(in,pts)';
features = cellfun(extractAndTransposeFeatures,im,regions,'UniformOutput',false);
figure;
for i = 1 : 5
subplot(2,3,i);
imshow(im{i});
hold on;
plot(regions{i});
end
nWords = 20;
[idx,centers] = kmeans([features{:}]',nWords);
histFtrs = cell(5,1);
for i = 1 : 5
start = 1;
histFtrs{i} = hist(idx(start:start+size(features{i},2)),nWords)';
histFtrs{i} = histFtrs{i}./sum(hisFtrs{i});
end
figure;
for i = 1 : 5;
subplot(2,3,i);
bar(histFtrs{i});
end
idx = kmeans([histFtrs{:}]',2)
Best Answer