LOCALGLOV2D - Textural features based on the Grey Level Occurrence Vector.

Contents

Description

Compute local textural features using the 1D histograms of univariate distribution of greylevels as defined in Grey Level Occurrence Vector (GLOV) approach of [GTY02,GTY03].

Syntax

   O = LOCALGLOV2D(I);
   O = LOCALGLOV2D(I, 'Property', propertyvalue, ...);

Inputs

I : input image with dimension C, possibly multispectral (C>1 bands).

Property [propertyname propertyvalues]

See function LOCALGLCM2D for property names and property values. Note that 'dcar' and 'dpol' are irrelevant for the GLOV approach.

Output

O : GLOV-based features.

References

[GTY02] J. Grazzini, A. Turiel, and H. Yahia: "Entropy estimation and multiscale processing in meteorological satellite images", Proc. of ICPR, vol. 3, pp: 764-768, 2002. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1048103

[GTY03] J. Grazzini, A. Turiel, and H. Yahia: "Analysis and comparison of functional dependencies of multiscale textural features on monospectral infrared images", Proc. of IGARSS, vol. 3, pp: 2045-2047, 2003. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1294334

See also

LOCALGLCM2D_BASE, LOCALGLSDV2D. Requires: LOCALGLOV2D_BASE.

Function implementation

function O = localglov2d(I, varargin)

parsing parameters

if ~isnumeric(I)
    disp('a matrix is required in input'); return;
end

% Optional parameters
p = createParser('LOCALGLOV2D');   % create an instance of the inputParser class.
% mandatory (required) variables
%p.addRequired('I', @isnumeric);
p.addParamValue('res', 64, @(x)isscalar(x) && x>=0);
p.addParamValue('win', [], @(x)isscalar(x) && x>=1);
p.addParamValue('wei', 'inv', @(x)ischar(x) && ...
    any(strcmpi(x,{'gaus','ave','inv'})));
p.addParamValue('n', 'global', @(x)ischar(x) && ...
    any(strcmpi(x,{'local','global'})));
p.addParamValue('sig', 2., @(x)isscalar(x) && x>0.1 && x<10);
p.addParamValue('mask', [], @(x)isnumeric(x) && all(x>=0));
p.addParamValue('feat', [], @(x)isnumeric(x));

% parse and validate all input arguments
p.parse(varargin{:});
p = getvarParser(p);

checking

if strcmp(p.wei,'gaus')
    if ~isempty(p.sig) && isempty(p.win)
        p.win = 6*p.sig + 1;
    end
elseif isempty(p.win)
    p.win = 7;
end

% ensure that the window size is odd
if ~isempty(p.win) && mod(p.win,2) == 0
    p.win = p.win + 1;
end

main computation

O = localglov2d_base(I, p.feat, p.res, p.win, p.wei, p.n, p.sig, p.mask );
end % end of localglov2d