www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I5_05_2_ImageRetrieval_med.m

    %% Bag-of-Visual-Words傪梡偄偨椶帡夋憸専嶕
clc;clear;close all;imtool close all;

%% 夋憸僨乕僞偺弨旛
%  僇僥僑儕枅偵夋憸僼傽僀儖柤傪丄Image Set 僋儔僗傊奿擺丒夋憸椺昞帵
%              夋憸偺僜乕僗丗 http://www.cdc.gov/dpdx/index.html    (Centers for Disease Control and Prevention)
if ~exist('classifyBloodSmearImages','dir')
    websave('classifyBloodSmearImages.zip','https://jp.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/66881/versions/3/download/zip')
    unzip('classifyBloodSmearImages.zip');
end
imgFolder = 'classifyBloodSmearImages\BloodSmearImages';              % 夋憸傊偺僷僗偺巜掕

%% 夋憸僨乕僞偺撉傒崬傒
% 僼僅儖僟傪巜掕偡傞偙偲偱丄夋憸僼傽僀儖柤傪Image Set 僋儔僗傊奿擺 (48枃)
%         夋憸偺僜乕僗丗 http://www.cdc.gov/dpdx/index.html    (Centers for Disease Control and Prevention)
bImageDS = imageDatastore(imgFolder,...
    'IncludeSubfolders',true,...
    'FileExtensions',{'.jpg','.tif','.png'})   % 48枃偺僨乕僞
% 昞帵
figure;montage([bImageDS.Files], 'Size',[6 8]); truesize;

%% Visual Words (嬊強揑側柾條)偺廤崌傪丄惗惉乮僨僼僅儖僩愝掕丗500屄乯
%   慡僇僥僑儕乕偵懳偟丄廲墶偦傟偧傟8僺僋僙儖娫妘偺僌儕僢僪忋偺揰偱丄奺[32 64 96 128]偺4偮偺椞堟僒僀僘偱摿挜検傪拪弌
%   儚乕僪悢 2000屄偵丄K-means偱僌儖乕僾壔
% Parallel Computing Toolbox 僆僾僔儑儞偁傟偽丄暲楍寁嶼傕壜擻  (愝掕儊僯儏乕撪偺Computer Vision System Toolbox愝掕撪偱愝掕)
% 僇僗僞儉偺摿挜検拪弌娭悢偺巜掕傕壜擻 (R2015a)
%    load('I5_05_Parasitology_img\I5_05_2_bag_med.mat');      % 偁傜偐偠傔惗惉偟偨傕偺傪巊偆応崌
bBag = bagOfFeatures(bImageDS, 'VocabularySize', 2000, 'Upright',false)

%% 慡偰偺夋憸偵丄専嶕梡偺僀儞僨僢僋僗傪晅偗傞
% 奺夋憸偐傜摿挜検傪拪弌偟丄VisualWords偵懳墳偯偗傞:  invertedImageIndex 僋儔僗
bImageIndex = indexImages(bImageDS, bBag);
%% Visual Words偑尰傟偨夋憸偺妱崌
figure; plot(bImageIndex.WordFrequency); 
%% 弌尰昿搙偺彫偝側傕偺偐傜弴偵暲傋傞
plot(sort(bImageIndex.WordFrequency)); shg;
%% 偳偺夋憸偵傕娷傑傟嬫暿偵栶偵棫偨側偄傕偺偼彍偔
bImageIndex.WordFrequencyRange = [0.01 0.85]    %default:[0.01 0.9]

%% 椶帡夋憸偺専嶕 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
queryImage = readimage(bImageDS, 19);   % 専嶕懳徾夋憸偺撉崬傒
figure; imshow(queryImage);         % 夋憸偺昞帵

%% Visual Words偺僸僗僩僌儔儉傪昞帵
figure; histogram(bImageIndex.ImageWords(19).WordIndex, [1:bBag.VocabularySize])

%% 僗僐傾傪晅偗丄帡偰偄傞傕偺忋埵16屄偺昞帵
[imageIDs, scores] = retrieveImages(queryImage, bImageIndex);

% 寢壥偺昞帵
for i = 1:9      % 忋埵9屄偺昞帵
  I  = readimage(bImageDS, imageIDs(i));            % 夋憸偺撉崬傒
  Ir1(:,:,:,i) = insertText(I, [1 1], num2str(scores(i)), 'FontSize',32); % 4師尦曽岦偵偮側偘傞
end
figure; montage(Ir1); truesize;


%% 暿偺夋憸偺専嶕 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
queryImage = readimage(bImageDS, 48);   % 専嶕懳徾夋憸
figure; imshow(queryImage);

%% 帡偰偄傞傕偺忋埵9屄偺拪弌丒昞帵
[imageIDs, scores] = retrieveImages(queryImage, bImageIndex);
% 寢壥偺昞帵
for i = 1:9
  I  = readimage(bImageDS, imageIDs(i));            % 夋憸偺撉崬傒
  Ir2(:,:,:,i) = insertText(I, [1 1], num2str(scores(i)), 'FontSize',32); % 4師尦曽岦偵偮側偘傞
end
figure; montage(Ir2); truesize;


%% Copyright 2015 The MathWorks, Inc.