[Insight-users] Questions about the fast marching and level set filters

Bjorn Hanch Sollie bhs at pvv . org
Sun, 2 Jun 2002 00:10:29 +0200 (CEST)


I have some questions I will really, really appreciate to get some
answers to:

I have been doing some level set filtering using the
ShapeDetectionLevelSetFilter.  The filter works fine and has given me
great results so far, except I haven't quite figured out how to
properly use narrow-banding yet (code below), so the filter takes very
long to run. How can I do, say, 5-10 iterations with a narrow band of
5 each time, rather than a single iteration with a narrow band of 35?
Do I use the ReinitializeLevelSetImageFilter for this, and if so how?

Also, do you recommend that I rather switch to the more recent(?) code
instead (SparseFieldLevelSetImageFilter/LevelSet3DFunction for
example)?  I'm slightly confused by the different level set filters
present in ITK, I'm unsure of which one is preferable to use, and I'll
be happy for some advice here.

Finally, a question about the FastMarchingImageFilter: I have been
using this for shape detection as well, growing a shape from a user
selected seed point.  The problem I have here is that if the potential
image has pixel values zero (if only infinitesimally), the region
doesn't expand (even over time) to include these pixels in the region.
This means that if I have a well defined region, with sharp edges
around it, and some very small variations in the (practically)
monotonous region inside, the fast marching filter fails to detect the
entire region.  Is there a remedy for this, or is a limitation of this
filter?

Here is my current (working) ShapeDetectionLevelSetFilter code:

  // Begin level set shape detection
  std::cout << "Shape Detection filtering..." << std::endl;
  typedef itk::ShapeDetectionLevelSetFilter<ImageType, ImageType> ShapeDetectorType;
  ShapeDetectorType::Pointer shaper = ShapeDetectorType::New();
  shaper->SetInput(initiallevelset);
  shaper->SetEdgeImage(edgepotentialimage);
  shaper->SetLengthPenaltyStrength(0.01);
  shaper->SetNumberOfIterations(175);
  shaper->SetNarrowBanding(true);
  shaper->SetNarrowBandwidth(35.0);
  shaper->SetTimeStepSize(3.0);
  shaper->Update();
  // End level set shape detection

-Bjorn
-- 
The History of the Universe
Chapter 1: Bang!  Chapter 2: Sss...  Chapter 3: Crunch!
The End