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

    %% HOG (Histogram of Oriented Gradient) 摿挜検 偲
%  k暯嬒丗k-Means Clustering 傪巊偭偨丄庤彂偒悢帤偺暘椶
clear;clc;close all;imtool close all

% 庤彂偒悢帤夋憸乮12枃x10暥帤庬乯傊偺愨懳僷僗傪愝掕
pathData = [toolboxdir('vision'), '\visiondata\digits\handwritten']
trainSet  = imageSet(pathData, 'recursive');

%% 庤彂偒悢帤夋憸傪儌儞僞乕僕儏昞帵 (12枃 x 10暥帤庬)
figure;montage([trainSet.ImageLocation], 'Size', [10,12]);

%% 4x4偺僙儖僒僀僘傪巊梡 (324師尦儀僋僩儖)
cellSize = [4 4];
hogFeatureSize = 324;                   % length(hog_4x4)

%% k暯嬒僋儔僗僞儕儞僌
% 10暥帤暘偺trainingFeatures 傪奿擺偡傞攝楍傪偁傜偐偠傔嶌惢
trainingFeatures  = zeros(10*12,hogFeatureSize, 'single');

% HOG摿挜検傪拪弌
for digit = 1:10   % 1=>暥帤'0'
  for i = 1:12         % 奺庤彂偒悢帤偛偲偵12枃偺僩儗乕僯儞僌梡夋憸
    img = read(trainSet(digit), i);  %僩儗乕僯儞僌夋憸偺撉崬傒
    img = im2bw(img,graythresh(img));   % 擇抣壔
             
    trainingFeatures((digit-1)*12+i,:) = extractHOGFeatures(img,'CellSize',cellSize);
  end
end
% K暯嬒僋儔僗僞儕儞僌偺幚峴
result = kmeans(trainingFeatures, 10)    %10屄偺僌儖乕僾偵暘椶

%% 10屄偺僋儔僗僞枅偵丄寢壥偺昞帵
figure; Ir = [];
for k = 1:10
  for digit = 0:9
    for i = 1:12         % 奺悢帤偛偲偵12枃偺庤彂偒暥帤
      if result((digit)*12+i) == k
        img = read(trainSet(digit+1), i);                     
        Ir = [Ir img];
      end
    end
  end
  subplot(10,1,k); imshow(Ir); Ir = [];
end
%% 廔椆













%% 暿宍幃偺寢壥昞帵
Ir = zeros([16,16,3,120], 'uint8');      % 寢壥傪奿擺偡傞攝楍
for digit = 0:9
  for i = 1:12         % 奺悢帤偛偲偵12枃偺庤彂偒暥帤
    img = read(trainSet(digit+1), i);                     
    Ir(:,:,:,(digit)*12+i) = insertText(img,[6 4],char(64+result((digit)*12+i)),'FontSize',10,'TextColor','blue','BoxOpacity',0.4);
  end
end
% 昞帵
figure;montage(Ir, 'Size', [10,12]);

%% Copyright 2013-2014 The MathWorks, Inc.
% 夋憸僨乕僞僙僢僩
% 僩儗乕僯儞僌夋憸丗insertText娭悢偱帺摦嶌惉 (廃埻偵暿偺悢帤桳傝)
% 僥僗僩夋憸丗庤彂偒偺夋憸傪巊梡