• 大小: 133KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: 纹理分割  

资源简介

利用灰度共生矩阵,对纹理图像进行分割,里面有代码和测试图像

资源截图

代码片段和文件信息

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


评论

共有 条评论