灰度共生矩阵(GLCM)并计算能量、熵、惯性矩、相关性(matlab)(待总结...

灰度共⽣矩阵(GLCM)并计算能量、熵、惯性矩相关性(matlab)(待总
结)
关于灰度共⽣矩阵的介绍可参考
理论介绍
下⾯给出不同的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
下⾯给出更多的关于灰度共⽣矩阵的特征

本文发布于:2024-09-22 22:26:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/294558.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   灰度   标记   相关   惯性矩   能量   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议