HISTFEATURES - Textural features derived from (co)occurrence matrices.

Contents

Description

Calculate all together the various textural features defined in [HSD73,Hara79] from (co)occurrence matrices. See formulas in [ST99].

Syntax

   F = HISTFEATURES(Pij, i, j);
   F = HISTFEATURES(Pd, d);

References

[HSD73] R.M. Haralick, K. Shanmugam, and I. Dinstein: "Textural features for image classification", IEEE Trans. Systems, Man and Cybernetics, 3(6):610-621, 1973. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4309314

[Hara79] R.M. Haralick: "Statistical and structural approaches to texture", Proceedings of IEEE, 67:786-804, 1979. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1455597

[ST99] L. Soh and C. Tsatsoulis: "Texture analysis of SAR sea ice imagery using gray level co-occurrence matrices", IEEE Trans. on Geoscience and Remote Sensing, 37(2), 1999. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=752194

See also

Ressembles: HISTCONTRAST, HISTENERGY, HISTHOMOGENEITY, HISTVARIANCE, HISTENTROPY2, HISTENTROPY10, HISTMAXIMUM, HISTMEAN, HISTDISSIMILARITY, HISTIDIFFERENCE, HISTCORRELATION, LOCALGLCM2D, LOCALGLOV2D, LOCALGLSDV2D.

Function implementation

function features = histfeatures(pIJ, I, varargin)
probIJ = pIJ(:);
diffI = I(:);
muI = sum( diffI .* probIJ);
sI = sum((I-muI).^2 .* probIJ);

if nargin>2
    J = varargin{1}; J = J(:);
    diffI = diffI - J;
    muJ = sum(J .* probIJ);
    sJ = sum((J-muJ).^2 .* probIJ);
else % J = I = D
    J = I;
    muJ = muI;
    sJ = sI;
end

% common computations

Con = diffI .* diffI;
Hom = (1 + Con);

Dis = abs(diffI);
Idiff = 1 + Dis;

% maximum
Max = max (probIJ);

% dissimilarity
Dis = sum (probIJ .* Dis);

% contrast
Con = sum (Con .* probIJ);

% inverse difference
Idiff = sum (probIJ ./ Idiff);

% homogeneity
Hom = sum (probIJ ./ Hom);

% energy
Ene = sum(probIJ .* probIJ);

if nargin>2
% correlation
Var = sum ((I - muI) .* (J - muJ) .* probIJ) / sqrt(sI * sJ);
% Var / sqrt(sI * sJ);
else
% variance
Var = sum (I .* J .* probIJ - muI .* muJ);
end

% entropy
probIJ(probIJ==0) = 1;
%Ent10 = - sum(log10(probIJ) .* probIJ);
Ent2 = - sum(log2(probIJ) .* probIJ);

features = [Con Ene Ent2 Hom Var Dis Idiff Max];
end % end of histfeatures