资源简介
利用灰度共生矩阵,对纹理图像进行分割,里面有代码和测试图像
代码片段和文件信息
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部分公共数据集
- 下一篇:支付宝小程序 富文本解析插件
评论
共有 条评论