NGTDM_global_features - cerr/CERR GitHub Wiki

The feature definitions are available in IBSI section 3.10

List of available features

1. Coarseness is an inverse measure of the level of the spatial rate of change in intensity (Amadasun and King, 1989). A higher value indicates a lower spatial change rate and a locally more uniform texture.


2. Contrast depends on the dynamic range of the grey levels as well as the spatial frequency of intensity changes (Amadasun and King, 1989). Higher value indicates large changes between voxels and their neighborhood.


3. Busyness measures changes in grey levels between neighboring voxels. A higher value indicates rapid changes of intensity between pixels and its neighborhood.


4. Complexity measures non-uniformity and rapid changes in grey levels. A higher value indicates non-uniform and rapid changes in grey levels.


5. Strength [Aetrs et al 2014] measures the primitives in an image. Its value is high when the primitives are easily defined and visible, i.e. an image with slow change in intensity but more large coarse differences in gray level intensities.


where

is the number of voxels with gray level i.

is the number of voxels with a valid region; at least 1 neighbor.

is the the gray level probability.

is the sum of absolute differences for gray level i.

is the number of gray levels where

Calculation details

Let quantizedM be the discretized scan matrix. The number of voxels in the region of interest is calculated as

numVoxels = sum(~isnan(quantizedM(:)));

Now, let's build the neighborhood gray tone difference (NGTDM) matrix. The NGTDM can be built using 2-d or 3-d neighborhoods. The patchRadius3dV argument to the calcNGTDM function controls this.

patchRadius3dV= [1 1 1]; % [1 1 1]: 3d, [1 1 0]: 2d

The NGTDM is computed as follows:

[s,p] = calcNGTDM(quantizedM, patchRadius3dV, numGrLevels);

Generate flags for individual features

szmFeatC = {'sae',    'lae',    'gln',    'glv',    'szv',    'glnNorm',    'szn',    'sznNorm',...
    'zp',    'lglze',    'hglze',    'salgle',    'sahgle',    'lalgle',    'larhgle'};
szmFlagS = cell2struct(num2cell(ones(size(szmFeatC ))),szmFeatC,2);

Finally, the scalar features from the NGTDM matrix are obtained as follows:

featureS = ngtdmToScalarFeatures(s,p,numVoxels);
⚠️ **GitHub.com Fallback** ⚠️