function [glrlm_45, feature_45]= degree_45(SI)
[r,c]=size(SI);
SI=rot90(SI); % ratate the matrix of 90 degree
a=-1*ones(c-1,r+1); % create a zero c-1 by r+1 matrix
for i=1:c-1
a(c-i,1:length((diag(SI,i))'))= (diag(SI,i))';
end
% extract the element in the main diagonal
d=(diag(SI,0))';
% extract the diagonal elements below the main diagonal
a1=-1*ones(c-1,r+1);
for i=1:c-1
a1(i,1:length((diag(SI',i))'))=(diag(SI',i))';
end
SI=[a;[d,-1];a1];
graylevel=16;
glrlm_45 = zeros(graylevel,r); % row represents the number of gray levels, column represents the number of differnt run lengths that occur
for i = 1:2*r-1 % the total numberow of row becomes r+(r-1)
y=SI(i,:); % extract each row of sacled image
% run length Encode of each vector
index = [ find(y(1:end-1) ~= y(2:end)), length(y) ];
len = diff([ 0 index ]); % run lengths
val = y(index); % run values
temp = accumarray([val(1:end-1);len(1:end-1)]',1,[graylevel r]);% compute current numbers (or contribution) for each bin in GLRLM
glrlm_45 = temp + glrlm_45; % accumulate each contribution
end
P=sum(sum(glrlm_45)); % total number of runs
SRE=0; LRE=0; LGRE=0; HGRE=0;SRLGE=0; SRHGE=0; LRLGE=0;LRHGE=0;
for i = 1:graylevel
for j = 1:c
SRE=SRE+glrlm_45(i,j)/j^2 ; % short run emphasis
LRE=LRE+glrlm_45(i,j)*j^2 ; % long run emphasis
LGRE=LGRE+glrlm_45(i,j)/i^2;
HGRE=HGRE+glrlm_45(i,j)*i^2;
SRLGE=SRLGE+glrlm_45(i,j)/(i^2*j^2);
SRHGE=SRHGE+glrlm_45(i,j)*i^2/j^2;
LRLGE=LRLGE+glrlm_45(i,j)*j^2/i^2;
LRHGE=LRHGE+glrlm_45(i,j)*j^2*i^2;
end
end
SRE=SRE/P; LRE=LRE/P; LGRE=LGRE/P; HGRE=HGRE/P; SRLGE=SRLGE/P; SRHGE=SRHGE/P; LRLGE= LRLGE/P;LRHGE=LRHGE/P;
% Gray-level Nonuniformity
GLN=0;
for j=1:c
GLN=GLN+sum(glrlm_45(:,j))^2;
end
GLN=GLN/P;
% Run length nonuniformity
RLN=0;
for i=1:graylevel
RLN=RLN+sum(glrlm_45(i,:))^2;
end
RLN=RLN/P;
RP = P / (graylevel*c); % run percentage
feature_45=[SRE,LRE,GLN,RLN,RP,LGRE,HGRE,SRLGE,SRHGE,LRLGE,LRHGE];
评论0