www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I2_09_4_5_mySuperPixel.m
%% SLIC 僗乕僷乕僺僋僙儖傪梡偄偨僙僌儊儞僥乕僔儑儞(椞堟暘妱) % SLIC丗simple linear iterative clustering clc;clear;close all;imtool close all;rng('default'); %% 夋憸偺撉崬傒丒昞帵丒L*a*b*怓嬻娫傊偺曄姺 I = imread('lighthouse.png'); figure; imshow(I); Ilab = rgb2lab(I); % 嬒摍怓嬻娫 %% 僗乕僷乕僺僋僙儖傪梡偄彫椞堟偵暘妱 % 栚昗丗偱偒傞偩偗摨偠僒僀僘偺丄600屄偺椶帡怓椞堟偵側傞傛偆偵暘妱 [Ls, N] = superpixels(Ilab, 600, 'IsInputLab',true); % 僨僼僅儖僩偱偼撪晹偱L*a*b*傊曄姺 N % N :寢壥揑偵惗惉偝傟偨僗乕僷乕僺僋僙儖悢 imtool(Ls, []); % Ls:夋慺抣傪尒偰丄儔儀儖夋憸偵側偭偰偄傞偺傪妋擣 %% 僗乕僷乕僺僋僙儖偺昞帵 Bmask = boundarymask(Ls); % 儔儀儖嫬奅傪僩儗乕僗乮2抣夋憸乯 I1 = imoverlay(I, Bmask,'cyan'); % 夋憸拞偵丄2抣夋憸傪巜掕怓偱忋彂偒 figure;imshow(I1); shg; %% 僗乕僷乕僺僋僙儖枅偵暯嬒抣傪嶼弌偟丄偦偺椞堟偺怓傪抲姺偊\帵 pixIdxList = label2idx(Ls); % 奺儔儀儖椞堟偺峴楍僀儞僨僢僋僗傪庢摼 sz = numel(Ls); % 夋慺悢 for i = 1:N % 奺僗乕僷乕僺僋僙儖枅偵寁嶼 superLab(i,1) = mean(Ilab(pixIdxList{i} )); % L*惉暘暯嬒抣 superLab(i,2) = mean(Ilab(pixIdxList{i}+ sz)); % a*惉暘暯嬒抣 superLab(i,3) = mean(Ilab(pixIdxList{i}+ 2*sz)); % b*惉暘暯嬒抣 end I2 = label2rgb(Ls, lab2rgb(superLab)); figure; imshowpair(I, imoverlay(I2, boundarymask(Ls),'cyan'), 'montage'); truesize; %% K-means偱偝傜偵丄怓偺椶帡搙傪梡偄僋儔僗僞儕儞僌 numColors = 3; % 3偮偵暘椶 Lc = imsegkmeans(I2,numColors,'NormalizeInput',false); I3 = label2rgb(Lc); % 儔儀儖夋憸傪RGB夋憸偵曄姺 % 夋憸拞偵丄2抣夋憸傪巜掕怓偱忋彂偒 imshow(I3); shg; %% 摂戜晹暘傪拪弌 % 夋憸抂偵愙偟偰偄傞椞堟傪彍嫀乮儔儀儖枅偵張棟乯 Lm = imclearborder(Lc==1); for i = 2:numColors Lm = [Lm imclearborder(Lc==i)]; end % 柺愊偺戝偒偄忋埵2偮偺椞堟傪拪弌 maskA = bwareafilt(Lm, 2); % 儅僗僋偺惗惉媺蕚虝\帵 maskA1 = reshape(maskA, [size(Ls), numColors]); maskA2 = sum(maskA1, 3); maskA3 = imfill(maskA2, 'holes'); % 儅僗僋偺寠傪杽傔傞 Iout = imoverlay(I, ~maskA3, 'green'); figure; imshow(Iout); % 昞帵 %% Copyright 2018 The MathWorks, Inc.