[Insight-developers] level sets: curvature term and time step

Paul Yushkevich pauly at cognitica . com
Thu, 10 Jul 2003 16:23:15 -0400


I agree, in SNAP we use the curvature speed, so it would be better if it 
were taken into consideration.

Paul

Lydia Ng wrote:

>Hi Josh,
>
>I think it is possible (but may not be likely) that all the level set
>filters (ie. using itk::LevelSetFunction) are affected not just the
>spatially varying curvature ones. 
>
>We have,
>Curvature_term = curvature * CurvatureWeight * CurvatureSpeed();
>
>
>Say for example, there is no advection term then in
>ComputeGlobalTimeStep
>
>dt = m_DT / vnl_math_abs( m_CurvatureWeight );
>
>
>By default, CurvatureSpeed() returns 1 - so things might go wrong if
>curvature is much larger than 1 / m_DT  ( > 4 for 2D ).
>
>But I don't know how likely this scenario is.
>
>________________
>
>The problem Nils ( email attached ) is having is because his
>CurvatureSpeed() returns 1000 and he has a CurvatureWeight of 1.
>
>Say if curvature is approx 1 then curvature_term is 1000
>But dt = m_DT = 0.25 (2D) and hence the algorithm takes to big a step.
>
>While if he had it the other way around: CurvatureSpeed() = 1 and
>CurvatureWeight = 1000 then dt = 0.25/1000 and the algorithm remains
>stable.
>
>So I think the time step calculation to be general it needs to take into
>account the whole curvature_term rather than just the CurvatureWeight.
>
>- Lydia
>
>  
>
>>-----Original Message-----
>>From: Joshua Cates [mailto:cates at sci . utah . edu]
>>Sent: Thursday, July 10, 2003 10:32 AM
>>To: Lydia Ng
>>Cc: Insight-Developers (E-mail)
>>Subject: Re: [Insight-developers] level sets: curvature term and time
>>    
>>
>step
>  
>
>>Hi Lydia,
>>
>>Just to clarify: you are talking about the spatially varying curvature
>>term, and not the curvature calculation itself? So only filters
>>which use this term should be affected, right?
>>
>>Josh.
>>
>>______________________________
>> Josh Cates
>> School of Computer Science
>> University of Utah
>> Email: cates at sci . utah . edu
>> Phone: (801) 587-7697
>> URL:   http://www . sci . utah . edu/~cates
>>
>>
>>On Thu, 10 Jul 2003, Lydia Ng wrote:
>>
>>    
>>
>>>Question for those interested in level sets:
>>>
>>>Currently the itk::LevelSetFunction class does not take the
>>>      
>>>
>curvature
>  
>
>>>term into account when computing the time step to meet the CFL
>>>      
>>>
>criterion
>  
>
>>>to ensure numerical stability.
>>>
>>>This is causing some grief with users playing around with the
>>>      
>>>
>scaling
>  
>
>>>parameter in each of the term in particular when they set the
>>>      
>>>
>curvature
>  
>
>>>scaling to be high relative to the propagation and advection terms.
>>>
>>>Can someone point me to a paper/book that talks about have to
>>>      
>>>
>compute
>  
>
>>>the CFL time step for the curvature term?
>>>
>>>Alternatively, (hacking versus mathematically sound) could we just
>>>restrict the time step such that the change in level set value due
>>>      
>>>
>to
>  
>
>>>the curvature term is no larger that half a pixel? Would this have
>>>      
>>>
>the
>  
>
>>>desired affect?
>>>
>>>The second alternative is for me to change my filters
>>>ShapeDetectionLevelSetImageFilter and
>>>GeodesicActiveContourLevelSetImageFilter just to use a constant time
>>>step - making it the user's problem to ensure they choose the time
>>>      
>>>
>step
>  
>
>>>small enough. This is how it was before, when I got complaints from
>>>other users about how it was difficult to set this parameter...
>>>
>>>Cheers,
>>>Lydia
>>>_______________________________________________
>>>Insight-developers mailing list
>>>Insight-developers at itk . org
>>>http://www . itk . org/mailman/listinfo/insight-developers
>>>
>>>      
>>>
>
>  
>
>
> ------------------------------------------------------------------------
>
> Subject:
> RE: [Insight-users] Crash in ShapeDetectionLevelSetImageFilter
> From:
> "Nils Hanssen" <hanssen at caesar . de>
> Date:
> Thu, 10 Jul 2003 00:16:22 -0700
> To:
> "Luis Ibanez" <luis . ibanez at kitware . com>
>
>
>Hi Luis,
>
>thank you for the detailed answer.
>
>
>My initial level set conforms to the "negative inside" convention.
>Now, I am using a curvature weighting of 1000 (just to see what happens in
>the extreme case) and a propagation weighting of 0.001. When running the
>ShapeDetectionLSIF, the contour is not collapsing at all. Maybe that's
>because of the feature image that dictates the curvature speed (==
>propagation speed in the ShapeDetectionLSIF)?
>
>Since the curvature speed in the ShapeDetectionLSF equals the propagation
>speed, I derived my own classes called "TubularLevelSetFunction" and
>"TubularLevelSetImageFilter". These are basically clones of the
>ShapeDetection* classes, but with the difference that I set the curvature
>speed to (constant) one in the Level-set function.
>Now, the contour is collapsing according to the mean curvature but all this
>happens _very_ slowly (the curvature weighting is 1000!).
>
>In itk::LevelSetFunction::ComputeUpdate(...) I see the following:
>---
>  curvature_term = curve;
>  curvature_term *= m_CurvatureWeight * this->CurvatureSpeed(it, offset);
>---
>so it should make no difference when I set the curvature weight to 1 and the
>curvature speed to (constant) 1000 (and not vice versa), right? But when I
>do this, I get numerical instabilities during the evolution. What is wrong
>with my assumption?
>
>Luis, what was the curvature weighting and curvature speed when you tested
>the collapsing contour with the syntethic sphere image? Was the curvature
>speed constant or dependent on the image?
>
>For now, I do all calculations in 2D. Could that be a problem? I have
>installed a observer that shows me the progress of the contour after each
>update event.
>
>
>Regards,
>Nils
>
>
>  
>
>>-----Original Message-----
>>From: Luis Ibanez [mailto:luis . ibanez at kitware . com]
>>Sent: Wednesday, July 09, 2003 6:14 PM
>>To: Nils Hanssen
>>Cc: Insight-users at public . kitware . com
>>Subject: Re: [Insight-users] Crash in
>>ShapeDetectionLevelSetImageFilter
>>
>>
>>
>>Hi Nils,
>>
>>You are right in your interpretation of the
>>behavior for the ShapeDetectionLevelSetFilter.
>>
>>Increasing the curvature scaling while decreasing
>>the propagation scaling should make the contour
>>collapse (contract).
>>
>>I just verified this behavior using a syntethic
>>image of a sphere.
>>
>>Note that in version 1.2 this filter is expecting
>>the input level set to conform to the convention
>>of "negative inside" which means that the level
>>set has negative values 'inside' the contour and
>>positive values outside the contour.
>>
>>You may have to push the curvature scaling to
>>a value higher than 1.0. (e.g. 5.0 or so).
>>
>>I would avoid to use 0.0 for the propagation
>>scaling ( in part just for superstition  against
>>zeros values as parameters). You may want to
>>try something like 0.1 for the propagation
>>scaling.
>>
>>Please verify the convention used by your initial
>>level set. That may be the cause for the contour
>>not behaving as expected.
>>
>>
>>Regards,
>>
>>
>>    Luis
>>
>>
>>
>>---------------------
>>Nils Hanssen wrote:
>>    
>>
>>>Hi Luis,
>>>
>>>I am using the 1.2.0 web release.
>>>
>>>Regards,
>>>Nils
>>>
>>>
>>>      
>>>
>>>>-----Original Message-----
>>>>From: insight-users-admin at itk . org
>>>>[mailto:insight-users-admin at itk . org]On
>>>>Behalf Of Luis Ibanez
>>>>Sent: Tuesday, July 08, 2003 3:55 PM
>>>>To: Nils Hanssen
>>>>Cc: Insight-users at public . kitware . com
>>>>Subject: Re: [Insight-users] Crash in
>>>>ShapeDetectionLevelSetImageFilter
>>>>
>>>>
>>>>
>>>>Hi Nils,
>>>>
>>>>Are you using a very recent checkout of ITK  ?
>>>>
>>>>The level set filters have been reworked in
>>>>recent days, so it will help us to know if you
>>>>are experiencing this behavior with the current
>>>>version or with the version as it was two weeks
>>>>ago (or before that).
>>>>
>>>>Please let us know,
>>>>
>>>>   Thanks
>>>>
>>>>
>>>>     Luis
>>>>
>>>>
>>>>------------------------
>>>>Nils Hanssen wrote:
>>>>
>>>>        
>>>>
>>>>>Hi,
>>>>>
>>>>>I am trying to understand the behaviour of the ShapeDetectionLSIF.
>>>>>Therefore, I set the propagation-weighting to zero. By setting the
>>>>>curvature-weighting to a value of one I would expect that
>>>>>          
>>>>>
>>>>the inital
>>>>
>>>>        
>>>>
>>>>>surface is shrinking to a point (I set the MaxRMSError to
>>>>>          
>>>>>
>>>>zero) and the
>>>>
>>>>        
>>>>
>>>>>number of iterations very high.
>>>>>
>>>>>The filter is crashing in
>>>>>SegmentationLevelSetFunction<TImageType, TFeatureImageType>
>>>>>::PropagationSpeed(const NeighborhoodType &neighborhood, const
>>>>>FloatOffsetType &offset) const
>>>>>[...]
>>>>>-->  else return (
>>>>>          
>>>>>
>>>>static_cast<ScalarValueType>(m_SpeedImage->GetPixel(idx)) );
>>>>// crashing here
>>>>
>>>>        
>>>>
>>>>>[...]
>>>>>
>>>>>When I set the propagation-weighting to - for instance -
>>>>>          
>>>>>
>>0.0001 the
>>    
>>
>>>>>filter is not crashing, but the contour is not shrinking
>>>>>          
>>>>>
>>>>according to
>>>>
>>>>        
>>>>
>>>>>the mean curvature.
>>>>>
>>>>>Is that the correct behaviour of the filter?
>>>>>
>>>>>I would appreciate any suggestions. Thanks!
>>>>>
>>>>>
>>>>>Regards,
>>>>>Nils
>>>>>
>>>>>
>>>>>-------------------------
>>>>>Nils Hanssen
>>>>>Surgical Systems Laboratory
>>>>>research center c ae sa r
>>>>>Ludwig-Erhard-Allee 2
>>>>>53175 Bonn
>>>>>fon: +49-228-9656-197
>>>>>fax: +49-228-9656-117
>>>>>___http://www . caesar . de/ssl_
>>>>>
>>>>>
>>>>>
>>>>>          
>>>>>
>>>>
>>>>_______________________________________________
>>>>Insight-users mailing list
>>>>Insight-users at itk . org
>>>>http://www . itk . org/mailman/listinfo/insight-users
>>>>
>>>>        
>>>>
>>>_______________________________________________
>>>Insight-users mailing list
>>>Insight-users at itk . org
>>>http://www . itk . org/mailman/listinfo/insight-users
>>>
>>>      
>>>
>>
>>
>>    
>>
>
>_______________________________________________
>Insight-users mailing list
>Insight-users at itk . org
>http://www . itk . org/mailman/listinfo/insight-users
>
>
>  
>


-- 
--------------------------------
Paul A. Yushkevich, Ph.D.
President, Cognitica Corporation

17 Flemington Rd
Chapel Hill, NC 27517
Tel: 1-919-929-7652
--------------------------------