Generalizing vesselness with respect to dimensionality and shape

Luca Antiga1*
1.Mario Negri Institute
Abstract

Abstract

In this paper we present a generalization of Frangi's vesselness measure \cite{Frangi1998} for the enhacement of M-dimensional shapes in N-dimensional images, together with the implementation of the corresponding Insight Toolkit (ITK) filter \cite{ITKSoftwareGuide}. Inspired by the implementation of a multiscale vesselness measure recently presented on the Insight Journal \cite{Enquobahrie2007}, we also propose a unified framework for the evaluation of generic multiscale Hessian-based measures. The manuscript is accompanied by source code and examples.

Keywords

MultiscaleImage enhancementVesselnessHessian
Manuscript
Source Code and Data

Source Code and Data

Antiga-IJ-ObjectnessMeasureObjectnessMeasure.DS_Store6 KBCMakeLists.txt1.4 KBCMakeTemplate.txt1.9 KBCroppedWholeLungCTScan.mhd350 BCroppedWholeLungCTScan.raw54.1 KBDSA_5_10_10_0.png38 KBDSA.png168 KBDSA_5_10_10_0_scales.png33.6 KBDSA_5_10_10_1.png80.6 KBDSA_5_10_10_1_scales.png54.4 KBIJMacros.txt3.1 KBImageCompare.cxx8 KBMultiScaleObjectnessExample2D.cxx4.1 KBMultiScaleObjectnessExample3D.cxx3.9 KBMultiScaleVesselnessExample3D.cxx3.7 KBitkHessianToObjectnessMeasureImageFilter.h6.5 KBObjectnessEnhanced_baseline.mha108.6 KBitkMultiScaleHessianBasedMeasureImageFilter.h5.6 KBitkHessianToObjectnessMeasureImageFilter.txx6.3 KBitkMultiScaleHessianBasedMeasureImageFilter.txx5.9 KBitkMultiScaleHessianBasedMeasureImageFilterTest.cxx3.6 KB__MACOSXAntiga-IJ-ObjectnessMeasureObjectnessMeasure._.DS_Store82 B._DSA.png82 B

Select a file to preview

Reviews

Reviews

Hauke Heibel

Monday 8 October 2007

Summary:
The paper describes a generalization of the vesselness measure introduced by Frangi which holds for multi-dimensional objects. The author introduces a closed form solution for the computation of N-dimensional objectness.

The idea to apply the vesselness measure to other structures (noise, plate-like, tubular, blob-like) has already been proposed by Frangi et al. (Multiscale vessel enhancement filtering, Table 1) but the generalized mathematical formulation is to my best knowledge new.

The author offers a well designed and implemented class to compute a general objectiveness measure as well as a class to compute the objectiveness on multiple scales.

Hypothesis:
"Non Applicable".

Evidence:
The author provides examples for two and three dimensional image data as well as objects of the first two dimensions (blobs, vessels). Furthermore evidence can be found in the mathematical derivation of the general objectiveness measure.

Open Science:
The paper and its addendums fully adhere to the concept of Open Science. The authors provide the test data, all parameters and sample programs being fully functional.

Reproducibility:
I did not reproduce the data though I used the author's classes and applied them to my own datasets which was working as expected.

Use of Open Source Software:
The authors used ITK and thus used Open Source Software. Their implementation is not depending on any additional third party libraries and can be used out of the box within the ITK framework.

Open Source Contributions:
The code is completely available. It was possible to setup a working and running project in about 10 minutes.

Code Quality:
The source code quality is high. No obviously non-portable mechanisms have been used the code is well documented.

Applicability to other problems:
n/a

Suggestions for future work:
Probably some users might be interested in equidistant sigma steps. I would love to see this as an option in a future implementation. I am not yet sure whether something like this should be implemented in terms of an additional template parameter of in terms of an enum and setter and getter methods to switch between different methods.

Requests for additional information from authors:
n/a

Additional Comments:
It took me a moment to get the difference between examples A and C, since I was assuming that objectness M=1 is actually vesselness...

I am not yet fully familiar with the ITK coding guidelines but I think using constructor initialization lists might be preferred to initialization of member variables within the constructors body.

The m_UpdateBuffer should be reset at each call to generate data, e.g. to itk::NumericTraits::NonpositiveMin().

The second output, i.e. the scales output should be reset at each call to generate data, e.g. to 0.

Besides those small remarks a nice work!