[Insight-users] Sparse vs Dense ChanAndVeseLevelSetImageFilter

Sgouritsa, Eleni esgourit at Central.UH.EDU
Thu Sep 17 12:46:41 EDT 2009


Hello Kishore,
thank you very much for your help.

1. So, in the case of my example how can I explain why the sparse result is even bigger than the dense?
Concerning the smoothness, I do not use any curvature smoothing in either of the cases (levelSetFilter->GetDifferenceFunction(0)->SetCurvatureWeight( 0 );)
So, why the dense result is smoother than the sparse?

2. For the sparse case, is it correct that in all iterations (apart from the first) the old value is always 1e-06?

3. For the moment I wrote the method in my code. Just if you would like to add it in the next itk release.

Best regards,
Eleni





-----Original Message-----
From: Kishore Mosaliganti [mailto:kishoreraom at gmail.com]
Sent: Thu 9/17/2009 10:08 AM
To: Sgouritsa, Eleni ; insight-users at itk.org
Subject: Re: Sparse vs Dense ChanAndVeseLevelSetImageFilter
 
Hi Eleni,

1. You will *NOT* get the  same segmentation result from the Sparse and
Dense filter case. For example, in the dense case, we can segment any
structure throughout the image irrespective of the 0 levelset location. In
the sparse case, we only look at a band of values around the 0 levelset. If
the levelset converges, then it does not segment far-off objects. Did you
use any curvature based smoothing in the dense filter in your example?

2.  In the first and any iteration, the old value is always the distance of
the active layer voxel from the 0 levelset. The "change" is computed and
scaled by the time-step "dt" to compute the new value.

When a 0 levelset cuts through a voxel, we compute its normal and based on
that, we estimate a voxel's distance from the surface. This is in the method
InitializeActiveLayerValues().

3. I will make the method in the dense case as well, for your convenience
and check it into ITK later today after making suitable tests.

Kishore

On Wed, Sep 16, 2009 at 7:19 PM, Sgouritsa, Eleni
<esgourit at central.uh.edu>wrote:

>  Hello Kishore,
> this is an example of what I mean. (The ground truth for this dataset is
> closer to a smoothed version of the sparse result)
>
> Best regards,
> Eleni
>
>
>
> -----Original Message-----
> From: Sgouritsa, Eleni
> Sent: Wed 9/16/2009 6:14 PM
> To: kishoreraom at gmail.com
> Cc: insight-users at itk.org
> Subject: Sparse vs Dense ChanAndVeseLevelSetImageFilter
>
> Hello Kishore,
>
> I have some questions on the sparse and dense chan&vese level set filters.
>
> 1. I would expect getting the same segmentation result for a given volume
> using sparse and dense filters with the same parameters. However the result
> using the sparse filter is "bigger" (the level set evolved more) and
> non-smooth compared with the one using the dense. Is this acceptable?
>
> 2. Debugging the sparse filter code in the place where is the
> CalculateUpdateValue function, we compute for the level set update:
> ValueType new_value = old_value + dt * change;
> In this place the old value is always 0 in the first iteration and 1e-06 in
> the next iterations. Is this correct? I would expect as old_values positive
> and negative values near zero depending on the distance from the zero level
> set.
> I tried increasing the number of layers used in the narrow band, but it is
> still the same.
>
> 3. Could it be possible in the future to have this function
> virtual ValueType CalculateUpdateValue (const IndexType &, const
> TimeStepType &dt, const ValueType &value, const ValueType &change)
> in the protected members of the dense filter as it is in the sparse right
> now?
> ( Currently, for the dense filter this calculation is embedded in the
> ApplyUpdate function )
>
> Thank you very much,
> Eleni
>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090917/10e6d2a3/attachment.htm>


More information about the Insight-users mailing list