共生矩阵法在图像的纹理特征分析中具有广泛的应用,常用的共生矩阵有灰度共生矩阵、灰度—梯度共生矩阵、灰度—平滑共生矩阵。其中灰度共生矩阵有利于反映了图像纹理的方向性;灰度—梯度共生适于刻画图像的细纹理、对旋转性不敏感;灰度—平滑共生矩阵图图像旋转也不敏感,利于描述较粗纹理。下面以灰度—平滑共生矩阵为例编写相应的纹理特征分析的程序。
该方法将原始图像灰度直方图和平滑图像灰度直方图相结合,研究二者的联合统计分布。对于归一化的共生矩阵,可以定义反差、熵、逆差距、灰度相关、能量、集群荫、集群突出等特征统计量。程序如下:
a=double(a); %
a表示原始图像灰度矩阵
hw=2; %
hw为平滑窗口的大小
[m n]=size(a);
b=zeros(m-2*hw,n-2*hw,2);
for i=1+hw:m-hw %求平滑矩阵
for j=1+hw:n-hw
wi=a(i-hw:i+hw,j-hw:j+hw);
b(i-hw,j-hw,1)=mean2(wi);
end
end
b(:,:,2)=a(1+hw:m-hw,1+hw:n-hw);
b=uint8(b);
[m n l]=size(b);
h=zeros(256,256);
for i=1:m
%求联合分布直方图
for j=1:n
h(b(i,j,1)+1,b(i,j,2)+1)=h(b(i,j,1)+1,b(i,j,2)+1)+1;
end
end
h=h./m./n; %归一化
entr64=zeros(1,6); %entr64为纹理特征矢量
h0=h;
%%
求方差
for i=1:256
for j=1:256
h0(i,j)=(abs(i-j))^5*h(i,j);
end
end
entr64(1,1)=mean2(h0);
%%
求熵
for i=1:256
for j=1:256
if h(i,j)>0
h0(i,j)=-h(i,j)*log2(h(i,j));
end
end
end
entr64(1,2)=sum(sum(h0));
%%
求逆差距
for i=1:256
for j=1:256
h0(i,j)=h(i,j)/((abs(i-j))^2+1);
end
end
entr64(1,3)=sum(sum(h0));
%%
求能量
for i=1:256
for j=1:256
h0(i,j)=h(i,j)^2;
end
end
entr64(1,4)=sum(sum(h0));
%%求集群荫
h0=h;
i=1:256;
ux=mean2(i*sum(h0,2));
uy=mean2(sum(h0,1)*i');
for
i=1:256
for j=1:256
h0(i,j)=((i-ux)+(j-uy))^3*h(i,j);
end
end
entr64(1,5)=mean2(h0);
%%求集群突出
for i=1:256
for j=1:256
h0(i,j)=((i-ux)+(j-uy))^4*h(i,j);
end
end
entr64(1,6)=mean2(h0);
加载中,请稍候......