資源簡介
利用灰度共生矩陣,對紋理圖像進行分割,里面有代碼和測試圖像

代碼片段和文件信息
clear?
clc;
%%?讀取圖像
tic;
%?I?=?imread(‘Texture_mosaic_2.jpg‘);
I?=?imread(‘18.bmp‘);
%?[MN]?=?size(I);
%?%?為了減少計算量,對原始圖像灰度級壓縮,將灰度量化成16級
%?%--------------------------------------------------------------------------
%?for?i?=?1:M
%?????for?j?=?1:N
%?????????for?n?=?1:256/16
%?????????????if?(n-1)*16<=I(ij)&I(ij)<=(n-1)*16+15
%?????????????????I(ij)?=?n-1;
%?????????????end
%?????????end
%?????end
%?end
%%?利用灰度共生矩陣提取紋理特征
w?=?15;?%基準窗口大小
I1?=?wextend(‘2D‘‘sym‘I(w-1)/2);%掃描窗口的大小15*15,為之后程序方便找中心點可以將窗口設置成4*4-32*32之間的任何奇數窗口
%掃描窗口的移動方向
%?offsets1=[0?1];??%水平單步
offsets1?=?[01;-11;-10;-1-1];%選取0°,45°,90°135°四個方向
%定義4個矩陣用于存放由graycomatrix產生的灰度共生矩陣的4個二次統計特征量
[mn]?=?size(I1);???????
I_GLCM_con?=?zeros(mn);???????????????%對比度Contrast??????
I_GLCM_hom?=?zeros(mn);???????????????%同質度Homogeneity
I_GLCM_cor?=?zeros(mn);???????????????%相關性Correlation
I_GLCM_ene?=?zeros(mn);???????????????%能量Energy
I_GLCM?=?zeros(mn);
for?i?=?(w+1)/2:m-(w-1)/2??????????
????for?j?=?(w+1)/2:n-(w-1)/2???????????
????????W?=?zeros();??????
????????W?=?I1(i-(w-1)/2:i+(w-1)/2j-(w-1)/2:j+(w-1)/2);????????
????????[glcmsSI]?=?graycomatrix(W‘NumLevels‘8‘G‘[]‘offset‘offsets1);
????????stats?=?graycoprops(glcms‘all‘);
????????Con?=?[stats.Contrast];
????????H?=?[stats.Homogeneity];
????????Cor?=?[stats.Correlation];
????????Ee?=?[stats.Energy];
????????I_GLCM_con(ij)?=?mean(Con);
????????I_GLCM_hom(ij)?=?mean(H);
????????I_GLCM_cor(ij)?=?mean(Cor);
????????I_GLCM_ene(ij)?=?mean(Ee);
????????I_GLCM(ij)?=?(I_GLCM_con(ij)+I_GLCM_hom(ij)+I_GLCM_cor(ij)+I_GLCM_ene(ij))/4;
????end
end
%
I2_con?=?I_GLCM_con((w+1)/2:m-(w-1)/2(w+1)/2:n-(w-1)/2);??%得到原始圖像大小的特征矩陣
I2_hom?=?I_GLCM_hom((w+1)/2:m-(w-1)/2(w+1)/2:n-(w-1)/2);?
I2_ene?=?I_GLCM_ene((w+1)/2:m-(w-1)/2(w+1)/2:n-(w-1)/2);?
I2_cor?=?I_GLCM_cor((w+1)/2:m-(w-1)/2(w+1)/2:n-(w-1)/2);?
I2_glcm?=?I_GLCM((w+1)/2:m-(w-1)/2(w+1)/2:n-(w-1)/2);
[nrowsncols]?=?size(I);
%%?用K均值聚類法對特征空間中的點進行聚類,分割圖像
%?k?=?round((rDims*cDims)/(100*100));?k?=?max(k8);?k?=?min(k16);
I3(:1)?=?reshape(I2_connrows*ncols1);
I3(:2)?=?reshape(I2_homnrows*ncols1);
I3(:3)?=?reshape(I2_enenrows*ncols1);
I3(:4)?=?reshape(I2_cornrows*ncols1);
%I3?=?reshape(I2_glcmnrows*ncols1);
%類別數可根據具體圖像中的紋理類數來定特征矩陣可以選擇I3的任意一列或整體,由分割效果來定
[map?centroids]?=?kmeans(I3?3);??
%?I4?=?reshape(mapnrowsncols);
%%?對不同的類賦值
I_show?=?zeros(nrowsncols);
a?=?find(map==1);
I_show(a)?=?255;??????????%可以改變
b?=?find(map==2);
I_show(b)?=?0;????????????%可以改變
c?=?find(map==3);
I_show(c)?=?125;???????????%可以改變
%?d?=?find(map==4);
%?I_show(d)?=?200;??????????%可以改變
%?e?=?find(map==4);
%?I_show(e)?=?60;??????????%可以改變
I_show?=?uint8(I_show);
figure;
subplot(121);imshow(I);title(‘原圖‘)
subplot(122);imshow(I_show);title(‘結果圖像‘)
toc;
time?=?toc-tic;%計算運行時間
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????65078??2017-05-10?13:13??灰度共生矩陣圖像分割_紋理\18.bmp
?????文件???????3126??2017-05-11?15:37??灰度共生矩陣圖像分割_紋理\Texture_mosaic.m
?????文件??????49708??2012-11-28?15:07??灰度共生矩陣圖像分割_紋理\Texture_mosaic_1.jpg
?????文件??????43587??2012-11-28?15:08??灰度共生矩陣圖像分割_紋理\Texture_mosaic_2.jpg
?????文件??????41155??2012-11-28?15:11??灰度共生矩陣圖像分割_紋理\Texture_mosaic_3.jpg
?????文件??????47552??2012-11-28?15:13??灰度共生矩陣圖像分割_紋理\Texture_mosaic_4.jpg
?????目錄??????????0??2017-08-14?17:10??灰度共生矩陣圖像分割_紋理
-----------?---------??----------?-----??----
???????????????250206????????????????????7
- 上一篇:PeMS部分公共數據集
- 下一篇:支付寶小程序 富文本解析插件
評論
共有 條評論