利用matlab求图像纹理值
发布网友
发布时间:2022-06-01 04:21
我来回答
共1个回答
热心网友
时间:2023-11-22 18:25
clc
clear
I=imread('lena.jpg');
%I=imread('1.1.jpg');
I1=rgb2gray(I);
imshow(I1);
[counts,x]=imhist(I1);
%h=imhist(I1);
figure
%imshow(h);
stem(x,counts)
h=h/sum(h);
k=length(h);
L=k-1;
%计算1-3阶统计矩
h=h(:);%转化为列向量
rad=0:L;%生成随机数
rad=rad./L;%归一化
m=rad*h;%均值
rad=rad-m;
%计算统计矩
stm=zeros(1,3);
stm(1)=m;
i=L;
for j=2:i
stm(j)=(rad.^j)*h;
end
%获取非归一化的1〜3阶统计矩
usm(1)=stm(1)*L;
usm(2)=stm(2)*L^2;
usm(3)=stm(3)*L^3;
%计算6个统计纹理度量
disp('均值')
st(1)=usm(1)%均值
disp('标准差')
st(2)=usm(2).^0.5%标准差
disp('平滑度')
st(3)=1-1/(1+stm(2))%平滑度
disp('三阶矩')
st(4)=usm(3)/(L^2)%三阶矩
disp('一致性')
st(5)=sum(h.^2)%一致性
disp('熵')
st(6)=-sum(h.*log2(h+eps))%熵