Wavelet filter - cerr/CERR GitHub Wiki

CERR provides undecimated three dimensional Wavelet filtering as described in Aerts et al. The original image is decomposed into 8 components by directional low-pass (scaling) and high-pass (wavelet) filtering. The 8 images resulting from filtering along L-R, A-P and S-I directions are LLL, LLH, LHL, LHH, HLL, HLH, HHL, HHH; where L refers to scaling and H refers to wavelet filtering.

Note: This implementation requires access to Matlab's Wavelet toolbox.

Filter parameters

Wavelets Supported wavelet types include Daybechies, Haar, Coiflets, FejerKorovkin, Symlets, Discrete meyer, Biorthogonal, and Reverse biorthogonal.

  • Required
    Wavelets : 'db','haar','coif','fk','sym','dmey','bior','rbio'
    Index : See wfilters.m for supported subtypes
    Direction : ''HHH','LHH','HLH','HHL','LLH','LHL','HLL','LLL', 'All'
    Normalize : 'Yes','No'

  • Optional
    Level : Decomposition levels (1,2,3,...). Default:1 Warning: Levels other than 1 have not been tested for IBSI compatibility
    Index : See wfilters.m for supported subtypes

Usage

Filters can be applied by manually creating a dictionary of parameters or passing them via JSON-format configuration files.

  • Dictionaries are created using the syntax:
paramS.<parameter_name>.val = <value>;

where parameter_name is one of the supported filter parameters listed above and value, one of the associated arguments.

  • Sample filter configuration
    The following settings can be used to (1) obtain the LLH decomposition using the daubechies-3 wavelet filter after cropping around the specified structure and padding by 3 voxel widths, and (2) calculate first-order statistics from the filtered image.
{

"structures": ["ROI"],

"imageType": {
  		   "Wavelets": {
			    	    "Direction": "LLH",
				    "Wavelets":"db",
				    "Index": "3",
                                    "Level": 1,             #Warning: Levels other than 1 have not been tested for IBSI compliance.
			        }
	    },

"settings": {		   

                   "padding": {
                                "cropToMaskBounds": "yes",
                                "method": "mirror",  
                                "size": [3,3,3]
                              },

                   "firstOrder": { 
				       "offsetForEnergy": 0,
                                       "binNumEntropy":64
                                 }

	    }

}

Configurations are parsed and converted to parameter dictionaries using

paramFile = 'Path/to/config_file.json'
paramS = getRadiomicsParamTemplate(paramFile);

Generating filtered images

global planC
strNum = 1;
scanNum = [];  % leave empty when passing structNum to automatically identify associated scan index
planC = generateTextureMapFromPlanC(planC,scanNum,strNum,paramS)

Extracting radiomic features

global planC
scanNum  = 1;
strNum = 2; 
featureS = calcGlobalRadiomicsFeatures(scanNum, structNum, paramS, planC);
⚠️ **GitHub.com Fallback** ⚠️