%基于共生矩阵的纹理特征提取,d=1,θ=0°,45°,90°,135°共四个矩阵
function T=Texture(Image)
%Image=imread('5.JPG');
[M,N,O]=size(Image);
% M = 256;
% N = 256;
%==========================================================================
%将各颜色分量转化为灰度
Gray=rgb2gray(Image);
%Gray=double(0.3*Image(:,:,1)+0.59*Image(:,:,2)+0.11*Image(:,:,3));
% imshow(uint8(Gray))
%==========================================================================
%为了减少计算量,对原始图像灰度级压缩,将Gray量化成16级
for i=1:M
for j=1:N
for n=1:256/16
if (n-1)*16<=Gray(i,j)&&Gray(i,j)<=(n-1)*16+15
Gray(i,j)=n-1;
end
end
end
end
%==========================================================================
%计算四个共生矩阵P,取距离d=1,角度分别为0,45,90,135
P=zeros(16,16,4);
for m=1:16
for n=1:16
for i=1:M
for j=1:N
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if j<N&&Gray(i,j)==m-1&&Gray(i,j+1)==n-1 % 0
P(m,n,1)=P(m,n,1)+1;
end
if j>1&&Gray(i,j)==m-1&&Gray(i,j-1)==n-1 % 0
P(m,n,1)=P(m,n,1)+1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if i<M&&j<N&&Gray(i,j)==m-1&&Gray(i+1,j+1)==n-1
P(m,n,2)=P(m,n,2)+1; % 45
end
if i>1&&j>1&&Gray(i,j)==m-1&&Gray(i-1,j-1)==n-1
P(m,n,2)=P(m,n,2)+1; % 45
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if i<M&&Gray(i,j)==m-1&&Gray(i+1,j)==n-1
P(m,n,3)=P(m,n,3)+1; % 90
end
if i>1&&Gray(i,j)==m-1&&Gray(i-1,j)==n-1
P(m,n,3)=P(m,n,3)+1; % 90
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if i<M&&j>1&&Gray(i,j)==m-1&&Gray(i+1,j-1)==n-1
P(m,n,4)=P(m,n,4)+1; % 135
end
if i>1&&j<N&&Gray(i,j)==m-1&&Gray(i-1,j+1)==n-1
P(m,n,4)=P(m,n,4)+1; % 135
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
end
end
end
%==========================================================================
% 对共生矩阵归一化
for n =1:4
P(:,:,n)=P(:,:,n)/sum(sum(P(:,:,n)));
end
%==========================================================================
%对共生矩阵计算能量、熵、惯性矩、逆差矩、相关5个纹理参数
H=zeros(1,4); I=zeros(1,4);
Ux=zeros(1,4); Uy=zeros(1,4);
deltaX=zeros(1,4); deltaY=zeros(1,4);
C=zeros(1,4); B=zeros(1,4);
for n = 1:4
E(n)=sum(sum(P(:,:,n).^2)); %能量(角二阶矩)
for i=1:16
for j=1:16
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); %惯性矩
B(n)=1/(1+(i-j)^2)*P(i,j,n)+B(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:4
for i=1:16
for j=1:16
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
%==========================================================================
%求能量、熵、惯性矩、逆差矩、相关的标准差作为最终的纹理特征
% T(1)=mean(E); T(2)=mean(H);
% T(3)=mean(I); T(4)=mean(C);
T(1)=sqrt(cov(E)); T(2)=sqrt(cov(H));
T(3)=sqrt(cov(I)); T(4)=sqrt(cov(B));
T(5)=sqrt(cov(C));
- 1
- 2
- 3
- 4
前往页