基于k-均值聚類的圖像分割

1.知識(shí)儲(chǔ)備

1.0 window系統(tǒng)截圖(當(dāng)前窗口)

Alt + PrintScreen

1.1 Matlab中 K-means聚類函數(shù)

[Idx,Ctrs,SumD,D] = kmeans(X,K,'Replicates',3,'Options',opts);
%調(diào)用Kmeans函數(shù)
%X N*P的數(shù)據(jù)矩陣
% K:  聚類數(shù)目
%Idx N*1的向量,存儲(chǔ)的是每個(gè)點(diǎn)的聚類標(biāo)號(hào)
%Ctrs K*P的矩陣,存儲(chǔ)的是K個(gè)聚類質(zhì)心位置
%SumD 1*K的和向量,存儲(chǔ)的是類間所有點(diǎn)與該類質(zhì)心點(diǎn)距離之和
%D N*K的矩陣祸挪,存儲(chǔ)的是每個(gè)點(diǎn)與所有質(zhì)心的距離;
 
[Idx,Ctrs,SumD,D] = kmeans(X,K,'Replicates',3,'Options',opts);

1.2 注釋

在MATLAB中可以在行首部加%來進(jìn)行注釋,加%%+空格來進(jìn)行劃分不同的程序段粉臊。

但在進(jìn)行多行注釋時(shí)睬魂,針對(duì)單行進(jìn)行操作過于麻煩,可以利用快捷鍵進(jìn)行多行注釋糠馆。

可以先選中需要注釋的行擦盾,然后按“ctrl+R”進(jìn)行注釋窗怒,

如果要取消多行注釋,則在選中的基礎(chǔ)上吏恭,按“ctrl+T”拗小。

1.3 matlab判斷數(shù)據(jù)的類型

用class(var)指令獲取矩陣類型

1.4 matlab 讀取.mat文件 matlab將struct和cell轉(zhuǎn)換成matrices

之前將數(shù)組或者矩陣保存為一個(gè)mat格式的文件,在進(jìn)行l(wèi)oad命令讀取時(shí):
bank = load('filterBank.mat');
得到的bank是struct類型的數(shù)據(jù)樱哼,而想要的是一個(gè)矩陣或者數(shù)組哀九。
將命令:
bank = load('filterBank.mat');
改寫為:
bank = cell2mat(struct2cell(load('filterBank.mat')));
得到的bank即為矩陣。

1.5 matlab清空控制臺(tái)

命令語句: clc

1.6 matlab二維矩陣輸出彩色圖像

imagesc(colorLabelIm)
colorbar

1.7 matlab畫圖

data = randn(4,100);
figure(1);
subplot(221);plot(data(1,:));
subplot(222);plot(data(2,:));
subplot(223);plot(data(3,:));
subplot(224);plot(data(4,:));
suptitle('總圖標(biāo)題');

2. segmentMain.m

origIm4 =imread('E:\桌面\1研究生相關(guān)\研一上\機(jī)器視覺基礎(chǔ)\Proj1-Texture\Texture\a2-code-data\dress.jpg');
origIm1 =imread('E:\桌面\1研究生相關(guān)\研一上\機(jī)器視覺基礎(chǔ)\Proj1-Texture\Texture\a2-code-data\circle-im-1.jpg');
origIm2 =imread('E:\桌面\1研究生相關(guān)\研一上\機(jī)器視覺基礎(chǔ)\Proj1-Texture\Texture\a2-code-data\butterfly.jpg');
origIm3 =imread('E:\桌面\1研究生相關(guān)\研一上\機(jī)器視覺基礎(chǔ)\Proj1-Texture\Texture\a2-code-data\circle-im-2.jpg');
origIm =imread('E:\桌面\1研究生相關(guān)\研一上\機(jī)器視覺基礎(chǔ)\Proj1-Texture\Texture\a2-code-data\gumballs.jpg');

%[width,height] = size(origIm);
[height,width] = size(origIm);
subplot(1,3,1);
imshow(origIm)
title('原圖像');
%bank = load('filterBank.mat');
bank = cell2mat(struct2cell(load('filterBank.mat'))); 
str =class(bank);  %判斷bank類型  disp(str);
imStack = {rgb2gray(origIm)} ;    %
%imStack = {rgb2gray(origIm),rgb2gray(origIm1),rgb2gray(origIm2),rgb2gray(origIm3),rgb2gray(origIm4)};  

% disp(bank); %打印過濾器
[m,n,l] =size(bank);
bankNum1 = size(bank, 1);
bankNum2 = size(bank, 2);
bankNum = size(bank, 3);
disp(bankNum);
% disp(bankNum1);
% disp(m);
% disp(n);
% disp(l);
winSize = 10;
numColorRegions =10;  % 聚類數(shù)
numTextureRegions = 50 ;   % 聚類數(shù)
%bank =ones(5,6,7);
%textons_x = 600;  
%textons =ones(textons_x,bankNum);   
k = 100;   %紋理基元的紋理編碼集個(gè)數(shù)
textons = createTextons(imStack, bank, k);
%height = 100 ;
%winSize =ones(height,height);


%colorLabelIm = ones(height, width) ;
%textureLabelIm =ones(height, width);
[colorLabelIm, textureLabelIm] = compareSegmentations(origIm, bank, textons, winSize, numColorRegions, numTextureRegions);
% disp(colorLabelIm);
[mc,nc,lc] =size(colorLabelIm);
[mt,nt,lt] =size(textureLabelIm);
fprintf('row is %d,col is %d,%d ',mc,nc,lc);
fprintf('row is %d,col is %d,%d ',mt,nt,lt);
subplot(1,3,2);
%imshow(uint8(colorLabelIm));% 輸出為黑白圖  
x2=[150+width,350+2*width];
y2=[50+height,50+2*height];
imagesc(x2,y2,colorLabelIm)
colorbar
%colorbar('position',[0.32 0.01 0.3 0.5])
title('顏色分割');
subplot(1,3,3);
%imshow(uint8(textureLabelIm));% 輸出為黑白圖
x3=[250+2*width,450+3*width];
y3=[50+2*height,50+3*height];
imagesc(x3,y3,textureLabelIm)
%imagesc(textureLabelIm)
colorbar  %定義圖例位置大小
title('紋理分割');
%suptitle('圖像名:gumballs.jpg  濾波器: filterBank  條件:winSize=%d  nColor=%d  nTexture=%d  texttonsNum=%d ',winSize,numColorRegions,numTextureRegions,k);
suptitle('圖像名:gumballs.jpg  濾波器: filterBank  條件:winSize=  nColor=  nTexture=  texttonsNum= ')
% imshow(colorLabelIm,[]);  % 輸出為黑白圖  


2.1 精簡改良版


3.錯(cuò)誤解析

3.1 Error using conv2 N-D arrays are not supported

For color images, imread returns a 3D array where the 3rd dimension has 3 elements for R, G, B. You need to convert the image to grey-value first. Or do the convolution on the color image using convn.
rgb2gray(origIm);

參考資料

[0] 基于k-均值聚類的圖像分割
[1]MATLAB K-means聚類的介紹與使用
[2] [初學(xué)筆記] matlab中 怎么判斷輸入的數(shù)據(jù)類型

[3]matlab—load命令讀的數(shù)據(jù)為struct類型的數(shù)據(jù)的處理方法
[4] struct2cell
[5] matlab中元胞數(shù)組的創(chuàng)建與內(nèi)容讀取

[6]淺析image,imagesc,imshow的用法
[7] Error using conv2 N-D arrays are not supported

[8]subplot畫圖添加總標(biāo)題
[9] matlab怎么同時(shí)顯示imshow 兩幅圖片
[10] 171103 Matlab subplot 用法
[11] matlab 中imagesc的用法
[12] Matlab的圖像操作——colorbar的各項(xiàng)細(xì)節(jié)操作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搅幅,一起剝皮案震驚了整個(gè)濱河市阅束,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茄唐,老刑警劉巖息裸,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沪编,居然都是意外死亡界牡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門漾抬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宿亡,“玉大人,你說我怎么就攤上這事纳令⊥燔” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵平绩,是天一觀的道長圈匆。 經(jīng)常有香客問我,道長捏雌,這世上最難降的妖魔是什么跃赚? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮性湿,結(jié)果婚禮上纬傲,老公的妹妹穿的比我還像新娘。我一直安慰自己肤频,他們只是感情好叹括,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宵荒,像睡著了一般汁雷。 火紅的嫁衣襯著肌膚如雪净嘀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天侠讯,我揣著相機(jī)與錄音挖藏,去河邊找鬼。 笑死厢漩,一個(gè)胖子當(dāng)著我的面吹牛熬苍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袁翁,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼柴底,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粱胜?” 一聲冷哼從身側(cè)響起柄驻,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焙压,沒想到半個(gè)月后鸿脓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涯曲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年野哭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幻件。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拨黔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绰沥,到底是詐尸還是另有隱情篱蝇,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布徽曲,位于F島的核電站零截,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秃臣。R本人自食惡果不足惜涧衙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奥此。 院中可真熱鬧弧哎,春花似錦、人聲如沸得院。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祥绞。三九已至非洲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜕径,已是汗流浹背两踏。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兜喻,地道東北人梦染。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像朴皆,于是被迫代替她去往敵國和親帕识。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345