• 图像表示与描述


    一、实验目的:利用灰度共生矩阵的二次统计量特征和最近邻法对纹理图像进行分类

    二、实验内容:8类纹理图像利用灰度共生矩阵的二次统计量特征和最近邻法进行分类,其中每类纹理图像有8幅,总共64幅,每幅图像的大小为200x200。实验中将各类纹理图像样本按数量随机等分成两部分作为训练、测试样本集,按照这种方式运行10 次对结果求平均平均分类正确率。观察不同的灰度共生矩阵对分类正确率的影响。用到的matlab函数为strcatrandpermint2strgraycomatrixgraycoprops

    四、实验方法

    (1)计算训练样本集中每幅图像的共生矩阵; 

    (2)根据训练样本集中每幅图像的共生矩阵计算对比度、相关性、能量、均匀度和熵的值,把这些值形成一个特征向量xii=1,2, …,NN是训练样本个数; 

    (3)对于测试图像计算其共生矩阵; 

    (4)根据测试图像的共生矩阵计算对比度、相关性、能量、均匀度和熵的值,把这些值形成一个特征向量x 

    (5)采用最近邻法对测试图像进行分类; 

    (6)输出分类结果。 

    实验图片说明:实验图片名称的第一个数字表示类别,第二个数字表示该类的第几幅图像

    六、实验报告要求:

    1)写出实现本次实验内容的程序

    2)对程序作出注释

    3)写出实验中灰度共生矩阵的量化级数,d的取值,方向的取值及所得到的纹理图像的识别率

     1 clc,clear,close all;
     2 percent=[];%正确率数组
     3 for n=1:10
     4 train=[];test=[];
     5 index=0;%测试集下标
     6 for i=1:8
     7     P=randperm(8);%随机序列
     8     for j=1:4
     9         train{i,j}=strcat(int2str(i),int2str(P(j)),'.jpg');%随机训练集
    10     end   
    11     for j=5:8
    12         index=index+1;
    13         test{index}=strcat(int2str(i),int2str(P(j)),'.jpg');  %随机测试集     
    14     end
    15 end
    16 [M,N]=size(train);%训练集大小
    17 X=[];
    18 for i=1:M
    19     for j=1:N
    20         name=char(train(i,j));
    21         img_train=imread(name);%读取训练集图片
    22         glcm=graycomatrix(img_train,'Offset',[-1 -1],'NumLevels',4);%计算灰度共生矩阵,135度方向,d=1,量化级数4
    23         stats = graycoprops(glcm, 'all');%计算对比度、相关、能量、均匀度
    24         out= entropy(img_train); %计算出整幅图的熵
    25         X(i,j,:)=[stats.Contrast,stats.Correlation,stats.Energy,stats.Homogeneity,out];%训练集特征向量
    26     end
    27 end
    28 truenum=0;
    29 for i=1:index
    30     x=[];
    31     name=char(test(i));
    32     img_test=imread(name);%读取测试集图片
    33     glcm=graycomatrix(img_test,'Offset',[-1 -1],'NumLevels',4);%计算灰度共生矩阵,135度方向,d=1,量化级数4
    34     stats = graycoprops(glcm, 'all');%计算对比度、相关、能量、均匀度
    35     out= entropy(img_train); %计算出整幅图的熵
    36     x=[stats.Contrast,stats.Correlation,stats.Energy,stats.Homogeneity,out];%测试集特征向量
    37     gix=[];
    38     for j=1:M
    39         odist=[];%第j类的欧式距离数组
    40         for k=1:N
    41             a=X(j,k,:);
    42             a=a(:)';%训练集特征向量
    43             odist(k)=norm(a-x);%求欧氏距离
    44         end
    45         gix(j)=min(odist);%第j类中最小欧氏距离
    46     end
    47     [gjx,mindex]=min(gix);%最小欧氏距离及其类别
    48     fprintf('%s属于第%d类    ',name,mindex);
    49     if mod(i,4)==0
    50         fprintf('
    ');%每四个换一次行
    51     end
    52     num=str2num(name(1));%正确的类别
    53     if num==mindex
    54         truenum=truenum+1;%求分类正确的数量
    55     end
    56 end
    57 percent(n)=truenum/32;%求分类正确率
    58 fprintf('正确率为:%f
    ',percent(n));
    59 end
    60 fprintf('10次平均正确率为:%f
    ',mean(percent));%求平均分类正确率
  • 相关阅读:
    asp.net core 3.1 CreateDefaultBuilder默认启动解析
    VS2019安装扩展成功后,扩展不显示(未启用,也找不到选项)
    Redis持久化必知必会
    调试错误,请回到请求来源地,重新发起请求
    复制DataRow行 插入DataTabel
    mysql查看被锁住的表
    RedisHelper帮助类(转)
    C#接口的作用实例解析
    ASP.NET CORE 启动过程及源码解读(转)
    医疗行业&产品/技术交流群
  • 原文地址:https://www.cnblogs.com/henuliulei/p/11166342.html
Copyright © 2020-2023  润新知