图像的表示与描述

内容:

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

步骤:

(1)新建程序文件
(2)编写程序如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
percent=[];%正确率数组
for n=1:10
train=[];test=[];
index=0;%测试集下标
for i=1:8
P=randperm(8);%随机序列
for j=1:4
train{i,j}=strcat(int2str(i),int2str(P(j)),'.jpg');%训练集
end
for j=5:8
index=index+1;
test{index}=strcat(int2str(i),int2str(P(j)),'.jpg'); %测试集
end
end
[M,N]=size(train);%训练集大小
X=[];
for i=1:M
for j=1:N
name=char(train(i,j));
img_train=imread(name);%读取训练集图片
glcm=graycomatrix(img_train,'Offset',[-1 -1],'NumLevels',4);%计算灰度共生矩阵,135度方向,d=1,量化级数4
stats = graycoprops(glcm, 'all');%对比度、相关、能量、均匀度
out= entropy(img_train); %整幅图的熵
X(i,j,:)=[stats.Contrast,stats.Correlation,stats.Energy,stats.Homogeneity,out];%训练集特征向量
end
end
truenum=0;
for i=1:index
x=[];
name=char(test(i));
img_test=imread(name);%读取测试集图片
glcm=graycomatrix(img_test,'Offset',[-1 -1],'NumLevels',4);%计算灰度共生矩阵,135度方向,d=1,量化级数4
stats = graycoprops(glcm, 'all');%对比度、相关、能量、均匀度
out= entropy(img_train); %整幅图的熵
x=[stats.Contrast,stats.Correlation,stats.Energy,stats.Homogeneity,out];%测试集特征向量
gix=[];
for j=1:M
odist=[];%第j类的欧式距离数组
for k=1:N
a=X(j,k,:);
a=a(:)';%训练集特征向量
odist(k)=norm(a-x);%求欧氏距离
end
gix(j)=min(odist);%第j类中最小欧氏距离
end
[gjx,mindex]=min(gix);%最小欧氏距离及其类别
fprintf('%s属于第%d类 ',name,mindex);
if mod(i,4)==0
fprintf('\n');%每四个换一次行
end
num=str2num(name(1));%正确的类别
if num==mindex
truenum=truenum+1;%求分类正确的数量
end
end
percent(n)=truenum/32;%求分类正确率
fprintf('正确率为:%f\n',percent(n));
end
fprintf('10次平均正确率为:%f\n',mean(percent));%求平均分类正确率

数据记录:

01

03

04

05

问题讨论:

纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。在图像模式识别的模式匹配时,此类区域性的特征具有一定的优势。可以避 免由手局部的偏差造成匹配失败。作为一种统计特征,纹理特征一般具有旋转不变性,并且 对于噪声有较强的抵抗能力。但是,纹理特征也有其缺点。当图像的分辦率变化时,所计算出来的纹理可能会有较大的偏差,从2D图像反映出来的纹理不一定是3D物体表面真实的纹理。