灰度图像特征提取之统计方式详解

时间:2024-04-03 19:07:08

灰度图像特征提取之统计方式详解

统计方法的优势: 具有较强的适应能力和鲁棒性。
统计方法的不足 : 与人类视觉模型脱节,缺少全局信息的利用,难以研究纹理尺度间像素的遗传或依赖关系;缺乏理论支撑;计算复杂度高,实际应用受制约。

统计方式的特征提取原理

构造灰度共生矩阵,分别从水平、竖直、斜45°来考察图像灰度值的位置关系(纹理特征)。斜45°指的是+/-45°。得出灰度共生矩阵后,利用灰度共生矩阵(GLCM)计算四类不相关的特征值,即:纹理角二阶矩、纹理熵、对比度、均匀性。

灰度共生矩阵原理:

下图显示了如何求解灰度共生矩阵,以水平方向,一个单位进行考察,对于(1,1)点,GLCM(1,1)值为1说明只有一对灰度为1的像素水平相邻。GLCM(1,2)值为2,是因为有两对灰度为1和2的像素水平相邻。(MatLab说明文档)
这里写图片描述
灰度图像特征提取之统计方式详解

纹理特征提取Matlab实现

function Data=wenlitezheng(Image)
[M,N]=size(Image);
Gray=Image;
% Gray=rgb2gray(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 = 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度,180度
P(m,n,1) = P(m,n,1)+1;
P(n,m,1) = P(m,n,1);
end
if i>1&&j<N&&Gray(i,j)==m-1&&Gray(i-1,j+1)==n-1%45度,-135度
P(m,n,2) = P(m,n,2)+1;
P(n,m,2) = P(m,n,2);
end
if i<M&&Gray(i,j)==m-1&&Gray(i+1,j)==n-1%正负90度
P(m,n,3) = P(m,n,3)+1;
P(n,m,3) = P(m,n,3);
end
if i<M&&j<N&&Gray(i,j)==m-1&&Gray(i+1,j+1)==n-1%负45度 135度
P(m,n,4) = P(m,n,4)+1;
P(n,m,4) = P(m,n,4);
end
end
end
if m=n%由于书写原因,少写一个“=”,应用该程序时再加上一个等号
P(m,n,:) = P(m,n,:)*2;
end
end
end

%%---------------------------------------------------------
% 对共生矩阵归一化
%%---------------------------------------------------------
for n = 1:4
P(:,:,n) = P(:,:,n)/sum(sum(P(:,:,n)));
end

%%---------------------------------------------------------
% 纹理角二阶矩Wm 能量
%%---------------------------------------------------------
Wm=zeros(1,4);
for nn=1:4
Wm(nn)=sum(sum(P(:,:,nn).^2));%表明图像灰度分布均匀程度及纹理粗细程度
end
%%---------------------------------------------------------
% 纹理熵We
%%---------------------------------------------------------
We=zeros(1,4);
for nn=1:4
for i=1:16
for j=1:16
if P(i,j,nn)~=0
We(nn)=-P(i,j,nn)log(P(i,j,nn))+We(nn);%图像复杂程度
end
end
end
end
%%---------------------------------------------------------
% 纹理对比度Wc 惯性矩
%%---------------------------------------------------------
Wc=zeros(1,4);
for nn=1:4
for i=1:16
for j=1:16
Wc(nn)=Wc(nn)+(i-j)^2
P(i,j,nn);
end
end
end
%%---------------------------------------------------------
% 纹理均匀性Wh 逆差分距
%%---------------------------------------------------------
Wh=zeros(1,4);
for nn=1:4
for i=1:16
for j=1:16
Wh(nn)= Wh(nn)+P(i,j,nn)/((i-j)^2+1);
end
end
end
Data=[Wm,Wh,Wc,We];%四类特征数据
end