matlab纹理特征提取代码

function [t]=statxture(f,scale)
if nargin==1
    scale(1:6)=1;
else
    scale=scale(1:6)';
end
p=imhist(f);                  %p是256*1的列向量
p=p./numel(f);
L=length(p);
[v,mu]=statmoments(p,3);
%计算六个纹理特征
t(1)=mu(1);                   %平均值
t(2)=mu(2).^0.5;              %标准差 
varn=mu(2)/(L-1)^2;     
t(3)=1-1/(1+varn);            %平滑度首先为(0~1)区间通过除以(L-1)^2将变量标准化
t(4)=mu(3)/(L-1)^2;           %三阶矩(通过除以(L-1)^2将变量标准化)
t(5)=sum(p.^2);               %一致性
t(6)=-sum(p.*(log2(p+eps)));  %熵
T=[t(1) t(2) t(3) t(4) t(5) t(6)]
%缩放值,默认为1
t=t.*scale;
end

function [v,unv]=statmoments(p,n)
Lp=length(p);
if (Lp~=256)&(Lp~=65536)
    error('p must be a 256- or 65536-element vector.');
end
G=Lp-1;
p=p/sum(p);p=p(:);
z=0:G;
z=z./G;
m=z*p;
z=z-m;
v=zeros(1,n);
v(1)=m;
for j=2:n
    v(j)=(z.^j)*p;
end
if nargout>1
    unv=zeros(1,n);
    unv(1)=m.*G;
    for j=2:n
        unv(j)=((z*G).^j)*p
    end
end
end

f为输入的图片,必须是灰度图像。

因为纹理特征提取是灰度的纹理特征。

matlab中建立一个function的M文件

拷贝上面的代码运行就可以了。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值