Purpose

The module GaussHessian calculates the Laplacian or full Hessian matrix of a scalar 2D or 3D image.

Usage

Connect a scalar volume to input0. An optional mask volume can be connected to input1.

The scale is given by Gauss Sigma of the Gaussian filter kernel that is applied as:

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussHessian007.gif

Details

The Hessian matrix is represented as a vec3 or vec6 for 2D and 3D data respectively.

The Hessian components are stored in the following order.

In 2D:

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussHessian008.gif

In 3D:

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussHessian009.gif

A separable filtering approach is used to calculate the gradient. 1D filter kernels are calculated by sampling the 1D Gaussian:

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussHessian001.gif

at the points

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussHessian002.gif

The filter kernel is subsequently scaled so that the kernel elements sum to 1. The derivative kernels are found as:

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussHessian003.gif

and

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussHessian004.gif

where voxelSize is the size of a voxel in millimeters. With this scaling, the Hessian components can be interpreted as:

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussHessian005.gif

or

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/GaussGradient005.gif

depending on the unit chosen by the user.

The x-axis runs from left to right, the y-axis from top to bottom and z-axis into the screen. That is, the standard image coordinate system in MeVisLab is used.

Multi-scale normalization: In some applications it important to combine Hessian-based information over many spatial scales (many different sigmas). This can be done using several GaussHessian modules.

To get comparable values across scales, the option Apply scale normalization should be used. The 1D derivative filters above are then multiplied with sigma (first derivative) or sigma2 (second derivative) to obtain the normalization described in T. Lindeberg: “Principles for Automatic Scale Selection”. For anisotropic voxel sizes, the filter in each of the directions x, y, z will get a different normalization factor.

Masking: When no mask is supplied, the Hessian components are calculated using a separable filtering approach. When a mask is supplied, a regular convolution with full 2D or 3D filters is applied because of the difficulties in applying a separable filtering to an irregular domain. Therefore, the use of a mask to avoid unnecessary computations is only recommended when the mask covers less than 50% of the voxels in the volume.

Windows

Default Panel

../../../Modules/ML/MLGaussFiltersStable/mhelp/Images/Screenshots/GaussHessian._default.png

Input Fields

input0

name: input0, type: Image

Scalar image data

input1

name: input1, type: Image

Scalar mask

Output Fields

output0

name: output0, type: Image

Laplacian or Hessian (scalar, vec3 or vec6)

Parameter Fields

Field Index

2D calculation: Bool Update: Trigger
Apply scale normalization: Bool  
Auto update: Bool  
Calculate laplacian: Bool  
Gauss Sigma: Double  
padding: Vector3  
reportSigmaTooSmallAsWarning: Bool  
Sigma Unit: Enum  

Visible Fields

Gauss Sigma

name: sigma, type: Double, default: 2

Sigma

Sigma Unit

name: unit, type: Enum, default: voxel

Defines the used unit for sigma.

Values:

Title Name
voxel voxel
mm mm

2D calculation

name: calc2D, type: Bool, default: FALSE

If checked, a slice-wise 2D calculation is forced, even if the input is a 3D image.

Calculate laplacian

name: calcLaplacian, type: Bool, default: FALSE

If checked, the Laplacian is calculated, i.e., the sum of the diagonal of the Hessian, instead of the full Hessian.

Apply scale normalization

name: applyScaleNormalization, type: Bool, default: FALSE

If checked, a scale normalization for multi-scale integration of Hessian-based information is applied.

Update

name: update, type: Trigger, deprecated name: calcButton

If pressed, the module computes anew.

Auto update

name: autoUpdate, type: Bool, default: FALSE

If checked, the module computes anew on input or field changes.

Hidden Fields

reportSigmaTooSmallAsWarning

name: reportSigmaTooSmallAsWarning, type: Bool, default: TRUE

flag whether the “sigma too small” should come as info or warning message

padding

name: padding, type: Vector3, default: 0 0 0

output internal page padding (indicates maximal radii of employed 1D kernels)