www.gusucode.com > 灰度共生矩阵、灰度梯度共生矩阵提取纹理特征 > code6/GrayExitMonentR.m

    function OUT=GrayExitMonentR(IN)
% 灰度共生矩阵为p2;
% 二阶矩 f1;
% 相关度 f2;
% 墒 f3;
% 对比度 f4;
% 逆差矩 f5;
% 和方差 f6;
% close all;
gray=256;




  
[R,C]=size(IN);
%把图象降为32像素
% IN=uint8(IN/8);
% max(IN(:))


p1=zeros(gray);
for M=1:R
    for N=1:(C-1)
        p1(IN(M,N)+1,IN(M,N+1)+1)= p1(IN(M,N)+1,IN(M,N+1)+1)+1;
        p1(IN(M,N+1)+1,IN(M,N)+1)= p1(IN(M,N+1)+1,IN(M,N)+1)+1;
    end
end
 %复制一个共生矩阵
p2=p1;
% figure,imshow(p2);


%归一化
p2=double(p2)/(M*N);

%计算二阶矩 f1
f1=p2.^2;
f1=sum(f1(:));

% 计算相关度 f2
colour=0:gray-1;
m1=sum(p2)*colour(:);
m2=m1;
pp=sum(p2);
v1=((colour-m1).^2)*pp(:);
 v2=v1;
[m,n]=meshgrid(colour,colour);
pp=m.*n.*p2;
f2=(sum(pp(:))-m1*m2)/(v1+eps)*(v2+eps);
%计算墒 f3
pp=(p2.*log2(p2+eps));
f3=-sum(pp(:));
%计算对比度 f4
f4=0;
k_f4=0;
% for k=1:gray-1
%     for i=1:gray
%         for j=1:gray
%             if (abs(i-j)==k)
%                 k_f4=k_f4+p2(i,j);
%             end
%         end
%     end
%     f4=f4+k_f4*k^2;
% end

for k=1:gray-1
    for i=1:gray-1
        if (i+k)<=gray
        k_f4=k_f4+2*p2(i,i+k);
        end
    end
    f4=f4+k_f4*k^2;
end


%计算逆差矩 f5

f5=0;

for k=1:gray
    for j=1:gray
        f5=f5+p2(k,j)/(1+(j-k)^2);
    end
end



%计算和方差 f6
f6=0;
for k=2:2*gray
    for i=1:k-1
        j=k-i;
        if j<=gray&i<gray
        f6=f6+(i-j)^2*p2(i,j);
        end
    end
end


% x=1:50:300;

OUT(1,1)=f1;
OUT(1,2)=f2;
OUT(1,3)=f3;
OUT(1,4)=f4;
OUT(1,5)=f5;
OUT(1,6)=f6;

% if num>2
%     plot(x,OUT,'-');
%     hold on;
% else
%     plot(x,OUT,'-*r');
%     hold on;
% end