HessianFilter

MLModule
genre Kernel
author MeVis Medical Solutions AG
package MeVisLab/Standard
dll MLFilter2
definition mlFilter2.def
keywords Kernel, vessel, Frangi

Purpose

The module HessianFilter calculates the 3x3 Hessian matrix H of second derivatives of the input image.

Details

Eigenvalues EV0, EV1, EV2 of H are analyzed and used to define a ‘vesselness’ (likeliness of a voxel to be part of a line shape) by sorting EV0 < EV1 < EV2 and postulating EV0=0, EV1=EV2 < 0 for the center-line voxels of an ideal vessel structure. The degree of accordance with this condition is assessed by a criteria introduced by Frangi et al., introducing the three measures Asymmetry A, Blobness B and Structure S as functions

fA,B,S (EV0,EV1,EV2; x) -> [0,1]

defining the vesselness

v = fA * fB * fS

with weight parameters x=alpha, beta, Structure for A, B, S, respectively.

v=1 holds for center line voxels of an ideal vessel structure.

The filter is scale dependent as it is folding the input with the second derivatives of a Gaussian.

Windows

_defaultWindow

../../../Modules/ML/MLFilter2/mhelp/Images/Screenshots/HessianFilter._defaultWindow.png

Input Fields

input0

name: input0, type: Image

Input image for vesselness computation.

input1

name: input1, type: Image

Optional mask image. Vesselness values are only computed for voxels corresponding to a mask voxel with a value different than 0.

Output Fields

output0

name: output0, type: Image

Vesselness image.

Parameter Fields

Field Index

adjustKernelSize: Trigger exampleStartSlice: Integer Order: Enum
adjustSigma: Trigger Filter Select: Enum Sigma/mm: Float
adjustValue: Trigger Gauss Range/Sigma: Float Structure: Float
Alpha: Float getCurrentValues: Trigger Use (useVesselnessCrit): Bool
Apply: Trigger isBright: Bool Use (useAlpha): Bool
Auto Apply: Bool Isotrop: Bool Use (useBeta): Bool
Beta: Float isotropKernelSize: Integer Use (useC): Bool
Degree: Float maxValue: Double Vessel Mode: Enum
Edge Mode: Enum minMaxAdjust: Bool x: Integer
enhancementMax: Float minValue: Double y: Integer
enhancementMin: Float Mode: Enum z: Integer

Visible Fields

Edge Mode

name: edgeMode, type: Enum, default: PadSrcClamp, deprecated name: EdgeMode

Defines how image border should be handled.

See Border Handling in Kernel Operations

Values:

Title Name
NoPad NoPad
PadSrcFill PadSrcFill
PadDstFill PadDstFill
PadDstFillWithOrig PadDstFillWithOrig
PadSrcUndefined PadSrcUndefined
PadDstUndefined PadDstUndefined
PadSrcClamp PadSrcClamp

Filter Select

name: filterSelect, type: Enum, default: Eigenvalues, deprecated name: FilterSelect

Defines the applied filter.

Values:

Title Name Description
Eigenvalues Eigenvalues Writes the eigenvalues for each voxel into the t-dimension of the output image.
LoG LoG Writes the trace of H, i.e. (d2/dx2)+(d2/dy2)+(d2/dz2) into the output image.
Vesselness Vesselness Writes the vesselness value into the output image.
Filter Vesselness FilterVesselness Writes an enhance / damped value with respect to the vesselness into the output image.

x

name: xExtension, type: Integer, default: 1

Sets the x-extent of the kernel (real size is 2x-1).

y

name: yExtension, type: Integer, default: 1

Sets the y-extent of the kernel (real size is 2y-1).

z

name: zExtension, type: Integer, default: 1

Sets the z-extent of the kernel (real size is 2z-1).

Isotrop

name: isotropKernel, type: Bool, default: TRUE

If checked, all values in x, y and z are set to the same value, resulting in an isotrop kernel extent.

Note that if this option is unchecked, the kernel extent seems to be isotrop as well. This might be a bug.

Sigma/mm

name: sigma, type: Float, default: 1, minimum: 0.01

Sets the sigma scale value of the Gaussian filter in mm.

Gauss Range/Sigma

name: gaussRange, type: Float, default: 1, minimum: 0.1

Sets to which range the kernel samples a Gaussian in untis of Sigma/mm.

Apply

name: apply, type: Trigger

If pressed, the module computes the output image anew.

Auto Apply

name: autoApply, type: Bool, default: FALSE

If checked, the module computes on changes of any field anew.

Use (useVesselnessCrit)

name: useVesselnessCrit, type: Bool, default: FALSE

If checked, the vesselness filter can be calibrated with the parameters Mode, Order and Degree.

Note that this option does not seem to have any effect. Might be a bug.

Degree

name: enhancement, type: Float, default: 0.1, minimum: :field:`enhancementMin`, maximum: :field:`enhancementMax`

Sets the degree of enhancement/dampening, see Order.

Mode

name: enhanceMode, type: Enum, default: Enhance

Defines the vesselness filter mode.

Values:

Title Name Description
Enhance Enhance Enhances the input gray values if a voxel has a full vesselness value of 1000.
Damp Damp Dampens the input gray values if a voxel has a minimum vesselness value of 0.

Order

name: enhanceOrder, type: Enum, default: Exponential

Defines the order of the enhancement/dampening function.

Values:

Title Name Description
Linear Linear
Mode Function
Enhance output(v) = input(v) + Degree * (vesselness - 1000)
Damp output(v) = input(v) + vesselness * Degree
Exponential Exponential
Mode Function
Enhance output(v) = input(v) * exp(vesselness / ( Degree * 1000))
Damp output(v) = input(v) * (1 - exp( -vesselness / ( Degree * 1000 )))

Alpha

name: alpha, type: Float, default: 0.5, minimum: 0.001, maximum: 1

Sets a weightening parameter for taking into account the asymetry of eigenvalues (or structure).

The asymmetry measures the ratio EV1 / EV2. For plate like structures holds EV1 << EV2, for blob like and vessel like structures EV1 equals EV2 approximatively.

  • Alpha = 0 : no consideration of asymmetry
  • Alpha = 1 : maximum consideration of asymmetry

Use (useAlpha)

name: useAlpha, type: Bool, default: TRUE

If checked, the Alpha factor is being used.

Beta

name: beta, type: Float, default: 0.5, minimum: 0.001, maximum: 1, deprecated name: betha

Sets a weightening parameter for taking into account the blobness of eigenvalues (or structure).

The blobness measures the ratio EV02 / (EV1*EV2). For vessel like structures holds EV0 << EV1 = EV2, for blob like structures holds EV0 = EV1 = EV2 approximatively.

  • Beta = 1 : no consideration of blobness
  • Beta = 0 : maximum consideration of blobness

Use (useBeta)

name: useBeta, type: Bool, default: FALSE, deprecated name: useBetha

If checked, the Beta factor is being used.

Structure

name: c, type: Float, default: 0.001, minimum: 0.001, maximum: 100

Sets a weightening parameter for taking into account the overall structure at an image voxel.

Structure measures the amount of EVs in terms of

S = sqr(EV02 + EV12 + EV2 2)
  • Structure = 0 : no consideration of structure
  • Structure > 0 : consideration of structure

The amount of the parameter Structure has to be chosen empirically, in a way that noisy structure computes to zero vesselness.

Use (useC)

name: useC, type: Bool, default: TRUE

If checked, the Structure factor is being used.

Vessel Mode

name: vesselMode, type: Enum, default: Bright

Defines if the algorithm should detect dark or bright structures.

Values:

Title Name
Dark Dark
Bright Bright

Hidden Fields

isotropKernelSize

name: isotropKernelSize, type: Integer, default: 1, minimum: 1

adjustKernelSize

name: adjustKernelSize, type: Trigger

adjustSigma

name: adjustSigma, type: Trigger

minMaxAdjust

name: minMaxAdjust, type: Bool, default: FALSE

minValue

name: minValue, type: Double, default: 0

maxValue

name: maxValue, type: Double, default: 0

getCurrentValues

name: getCurrentValues, type: Trigger

adjustValue

name: adjustValue, type: Trigger

enhancementMax

name: enhancementMax, type: Float, default: 0.1

enhancementMin

name: enhancementMin, type: Float, default: 0

isBright

name: isBright, type: Bool, default: TRUE

exampleStartSlice

name: exampleStartSlice, type: Integer, default: 8