[Insight-users] about level set methods

Luca Antiga luca.antiga at gmail.com
Tue Sep 11 09:55:20 EDT 2007


Hi,
  in general a surface evolving under the action of its mean  
curvature will collapse. You can counteract this in two ways: making  
the level set inflate with the propagation term, or advecting the  
level set and attracting it to some location.
In implementations like GeodesicActiveContour, in which Z is taken  
equal to the propagation speed, you can weight curvature so it acts  
less when you're closer to features. Ideally, on features the  
propagation would go to zero, and your the action of curvature would  
vanish. In practice, you seldom have a feature image that sharply  
goes to zero at features, so you have to be careful not to use too  
strong a curvature weight. Advection here helps a lot at attracting  
the level set on the feature ridges.
You have a certain freedom in crafting the feature image. If you know  
at what level or where to clamp the feature image to zero, you can  
make your level sets stop. The problem is that very often if you knew  
where to set feature to zero you wouldn't have to use level sets to  
segment your image...

Luca



On Sep 11, 2007, at 3:29 PM, Burak Ozkalayci wrote:

> Thanks for the clarifying reply. I want to ask one more thing about  
> curvature-based term. just think of a sphere whose mean curvature  
> should be a constant. If I only use the curvature term in that  
> equation and start the level set front to evolve will it expand or  
> shrink without stopping. In order to stop the evolution is it  
> common to weight the curvature with some stopping criteria to get  
> the Z(x) in that equation, or do I miss something?
> thanks a lot again.
>
> Burak
>
> Luca Antiga wrote:
>> Hi Burak,
>>
>>> I think
>>> m_AdvectionImage = A(x);
>>> PropagationSpeed = P(x);
>>> CurvatureSpeed = Z(x);
>> correct
>>
>>> 1- According to my understand the m_SpeedImage is expected to be  
>>> calculated from the m_FeatureImage in a desired fashion. that's  
>>> why it is not implemented. However I can not find the connection  
>>> of this m_SpeedImage with the A, P, Z terms?
>> The itk::SegmentationLevelSetFunction is the superclass of all  
>> actual level set functions (see dependency graph here http:// 
>> public.kitware.com/Insight/Doxygen/html/ 
>> classitk_1_1SegmentationLevelSetFunction.html).
>> You have to look at the derived classes for the actual  
>> calculations of the scalar and vector fields.
>> For instance, in itk::GeodesicActiveContourLevelSetFunction the  
>> speed image is computed as the feature image itself,
>> and the advection image is generated using either centered finite  
>> differences or Gaussian derivative convolution.
>> These are not the only possibilities, just take a look at the  
>> various derived classes.
>>
>>> 2- How Z is calculated, I could not find anything about it also?
>>> 3- According to Osher's Level Set Methods book the right hand  
>>> side of the equation
>>> http://www.itk.org/Doxygen32/html/form_149.png
>>> should be calculated by using center differences. Is it  
>>> implemented like that?
>>
>> The computation of the curvature term (actually, the curvature  
>> terms) is implemented in the itk::LevelSetFunction class
>> using centered finite differences. Z is what is called  
>> "CurvatureSpeed", which defaults to 1 in itk::LevelSetFunction,
>> while it is set equal to PropagationSpeed in  
>> itk::GeodesicActiveContourLevelSetFunction.
>>
>>> 4- Are the magnitude of the gradients of Phi same for the right  
>>> and left side of that equation? (since the left side should use  
>>> the upwind methods where the right side should use center  
>>> differences)
>> Actually, I think that curvature has to be computed with centered  
>> finite differences, while |\grad \phi| has to be computed with  
>> upwind finite differences both for left and right hand sides of  
>> the equation, since what you are doing is advecting the level sets  
>> in both cases. What changes is the scaling term, which is equal to  
>> the propagation in one case and depends on the level set curvature  
>> (computed with centered finite differences) in the other.
>>
>> Hope it helped
>>
>> Luca
>>
>>
>>
>> -- 
>> Luca Antiga, PhD
>> Head, Medical Imaging Unit,
>> Bioengineering Department,
>> Mario Negri Institute
>> email: antiga at marionegri.it
>> web: http://villacamozzi.marionegri.it/~luca
>> mail: Villa Camozzi, 24020, Ranica (BG), Italy
>> phone: +39 035 4535-381
>>
>>
>>
>> On Sep 11, 2007, at 12:44 PM, Burak Özkalaycı wrote:
>>
>>> Dear all,
>>>
>>> I am a little bit confused about the level set implementation in  
>>> ITK.
>>> my questions are according to
>>>
>>> http://www.itk.org/Doxygen32/html/itkLevelSetFunction_8h.html and
>>> http://www.itk.org/Doxygen32/html/ 
>>> itkSegmentationLevelSetFunction_8h.html
>>>
>>> There exist m_FeatureImage, m_SpeedImage, m_AdvectionImage,  
>>> PropagationSpeed, CurvatureSpeed. The levelset function to be  
>>> solved is given as :
>>>
>>> http://www.itk.org/Doxygen32/html/form_149.png
>>>
>>> I think
>>> m_AdvectionImage = A(x);
>>> PropagationSpeed = P(x);
>>> CurvatureSpeed = Z(x);
>>>
>>> 1- According to my understand the m_SpeedImage is expected to be  
>>> calculated from the m_FeatureImage in a desired fashion. that's  
>>> why it is not implemented. However I can not find the connection  
>>> of this m_SpeedImage with the A, P, Z terms?
>>> 2- How Z is calculated, I could not find anything about it also?
>>> 3- According to Osher's Level Set Methods book the right hand  
>>> side of the equation
>>> http://www.itk.org/Doxygen32/html/form_149.png
>>> should be calculated by using center differences. Is it  
>>> implemented like that?
>>> 4- Are the magnitude of the gradients of Phi same for the right  
>>> and left side of that equation? (since the left side should use  
>>> the upwind methods where the right side should use center  
>>> differences)
>>>
>>> If anyone can answer my implementation and theory based questions  
>>> I will be so glad. And also any reference to headers or sources  
>>> are welcome.
>>>
>>> Thank you in advance
>>>
>>> Burak
>>>
>>>
>>>
>>> Burak Ozkalayci < burak.ozkalayci at UGent.be>
>>> PhD Student
>>> Electronic and Information Systems (ELIS-MEDISIP)
>>> Ghent University Hospital - IBITECH
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-users
>>> <burak.ozkalayci.vcf>



More information about the Insight-users mailing list