结)
关于灰度共⽣矩阵的介绍可参考
理论介绍
下⾯给出不同的NumLevels的例⼦
gray = [1 1 5 6 8
2 3 5 7 1
4 5 7 1 2
8 5 1 2 5];
GLCM = graycomatrix(gray,'GrayLimits',[])
GLCM =
1 2 0 0 1 0 0 0
0 0 1 0 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
1 0 0 0 0 1
直角单向阀2 0
0 0 0 0 0 0 0 1
锁架2 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
GLCM = graycomatrix(gray, 'GrayLimits',[],'offset', [0 1])
GLCM =
1 2 0 0 1 0 0 0
0 0 1 0 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
1 0 0 0 0 1
2 0
0 0 0 0 0 0 0 1
2 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
GLCM = graycomatrix(gray, 'GrayLimits',[],'offset', [0 1],'NumLevels',8)
GLCM =
1 2 0 0 1 0 0 0
0 0 1 0 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
1 0 0 0 0 1
2 0
0 0 0 0 0 0 0 1
2 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
上图显⽰了如何求解灰度共⽣矩阵,以(1,1)点为例,GLCM(1,1)值为1说明只有⼀对灰度为1的像素⽔平相邻。GLCM(1,2)值为2,是因为有两对灰度为1和2的像素⽔平相邻。(1,5)出现⼀次,所以在(1.5)位置上标记1,没出现(1,6)所以为0; 上⾯所有的参数都是默认设置,NumLevels=8, 下⾯考虑NumLevels=3 的情况
gray = [11568
23571
45712
diy电子显微镜
85125];
GL(2) = max(max(gray));
GL(1) = min(min(gray));
if GL(2) == GL(1)
SI = ones(size(gray));
else
slope = NumLevels/(GL(2) - GL(1));
intercept = 1 - (slope*(GL(1)));
SI = floor(imlincomb(slope,gray,intercept,'double'));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SI =
11234
11231
22311
蒸压砖设备42112
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SI(SI > NumLevels) = NumLevels;
SI(SI < 1) = 1;
SI =
11233
11231
22311
32112
上⾯给出了如何将初始矩阵gray变成3阶的灰度级,SI就是gray的3阶灰度级矩阵。
上图显⽰了如何求解3级灰度共⽣矩阵,以(1,1)点为例,GLCM(1,1)值为4说明只有4对灰度为1的像素⽔平相邻。
GLCM(3,1)值为2,是因为有两对灰度为3和1的像素⽔平相邻。(2,1)出现⼀次,所以在(2.1)位置上标记1,没出现(1,3)所以为0;
gray = [1 1 5 6 8
2 3 5 7 1
4 5 7 1 2
8 5 1 2 5];
[GLCM,SI] = graycomatrix(gray,'NumLevels',3,'G',[])
GLCM =
4 3 0
1 1 3
2 1 1
SI =
1 1
2
3 3
监控预警
1 1
2
3 1
2 2
3 1 1
3 2 1 1 2
⽤3阶灰度级去计算四个共⽣矩阵P,取距离为1,⾓度分别为0,45,90,135
gray = [11568
23571
45712
85125];
offsets = [01;-11;-10;-1 -1];
m = 3; % 3阶灰度级
[GLCMS,SI] = graycomatrix(gray,'GrayLimits',[],'Of',offsets,'NumLevels',m);
P = GLCMS;
[kk,ll,mm] = size(P);
% 对共⽣矩阵归⼀化
%---------------------------------------------------------
for n = 1:mm
P(:,:,n) = P(:,:,n)/sum(sum(P(:,:,n)));
end
%-----------------------------------------------------------
%对共⽣矩阵计算能量、熵、惯性矩、相关4个纹理参数
%-----------------------------------------------------------
H = zeros(1,mm);
I = H;
Ux = H; Uy = H;
deltaX= H; deltaY = H;
C =H;
for n = 1:mm
E(n) = sum(sum(P(:,:,n).^2)); %能量
for i = 1:kk
for j = 1:ll
if P(i,j,n)~=0
H(n) = -P(i,j,n)*log(P(i,j,n))+H(n); %熵
end
I(n) = (i-j)^2*P(i,j,n)+I(n); %惯性矩
Ux(n) = i*P(i,j,n)+Ux(n); %相关性中µx
Uy(n) = j*P(i,j,n)+Uy(n); %相关性中µy
end
end
end
for n = 1:mm
for n = 1:mm
for i = 1:kk
for j = 1:ll
deltaX(n) = (i-Ux(n))^2*P(i,j,n)+deltaX(n); %相关性中σx
deltaY(n) = (j-Uy(n))^2*P(i,j,n)+deltaY(n); %相关性中σy
C(n) = i*j*P(i,j,n)+C(n);
end
end
C(n) = (C(n)-Ux(n)*Uy(n))/deltaX(n)/deltaY(n); %相关性
end
%--------------------------------------------------------------------------
%求能量、熵、惯性矩、相关的均值和标准差作为最终8维纹理特征
%--------------------------------------------------------------------------
a1 = mean(E)
b1 = sqrt(cov(E))
a2 = mean(H)
b2 = sqrt(cov(H))
a3 = mean(I)
b3 = sqrt(cov(I))
a4 = mean(C)
b4 = sqrt(cov(C))
sprintf('0,45,90,135⽅向上的能量依次为: %f, %f, %f, %f',E(1),E(2),E(3),E(4)) % 输出数据;
sprintf('0,45,90,135⽅向上的熵依次为: %f, %f, %f, %f',H(1),H(2),H(3),H(4)) % 输出数据;
sprintf('0,45,90,135⽅向上的惯性矩依次为: %f, %f, %f, %f',I(1),I(2),I(3),I(4)) % 输出数据;
sprintf('0,45,90,135⽅向上的相关性依次为: %f, %f, %f, %f',C(1),C(2),C(3),C(4)) % 输出数据;下⾯给出的是默认的设置下求四个⽅向的灰度共⽣矩阵,NumLevels=8.
gray = [1 1 5 6 8
2 3 5 7 1
4 5 7 1 2
8 5 1 2 5];
offsets = [0 1;-1 1;-1 0;-1 -1];
[GLCMS,SI] = graycomatrix(gray,'GrayLimits',[],'Of',offsets)
GLCMS(:,:,1) =
1 2 0 0 1 0 0 0
0 0 1 0 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
1 0 0 0 0 1
2 0
0 0 0 0 0 0 0 1
2 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
GLCMS(:,:,2) =
2 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
茶叶电炒锅0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0
GLCMS(:,:,3) =
0 0 0 0 0 0 2 1
3 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 1 1 0 2 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0
0 0 0 1 0 0 0 0
GLCMS(:,:,4) =
0 0 0 0 2 1 0 0
0 0 0 0 0 0 2 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
2 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 0
SI =
1 1 5 6 8
2 3 5 7 1
4 5 7 1 2
8 5 1 2 5
下⾯给出更多的关于灰度共⽣矩阵的特征