[Insight-users] Advection in ThresholdLevelSetImageFilter

Dário Oliveira dariodisk at gmail.com
Mon Sep 22 13:43:26 EDT 2008


Thank you Luis!

I have seen it yesterday. I notice that I can also reimplement the
method CalculateAdvectionImage and then the advection term makes
sense. I got confused because the way I understood the method, this
part of calculating the zero-crossing of the Laplacian should be
exactly in the CalculateAdvectionImage method. Actually, as far as I
understood, it modifies the speed image in such a way that the
interface locks at edges. I guess I will modify it to use the
laplacian zero-crossings in the advection term.

Thank you.
Dário Oliveira

2008/9/22 Luis Ibanez <luis.ibanez at kitware.com>:
>
> Hi Dario,
>
> Yes, the EdgeWeight plays in the ThresholdSegmentationLevelSet
> a simlar role to the AdvectionWeight in the GeodesicActiveContour.
>
> When you set the EdgeWeight to non-zero, the filter computes a
> Laplacian and uses it to drive the zero set closer to the
> zero-crossings of the Laplacian.
>
>
> The SmoothingConductance is used as a parameter for the Gradient
> Anisotropic diffusion filter that is used inside of the Threshold
> SegmentationLevelSetFunction, to smooth the image before computing
> the Laplacian on it. Otherwise, the Laplacian will find a large
> number of zero-crossings in all the small details (high spatial
> frequency) of the image.
>
>
> BTW: You can review all this by simply looking at the source code
> of the file:
>
>
>   Insight/Code/Algorithms/
>      itkThresholdSegmentationLevelSetFunction.txx
>
>
> in particular by looking at
>
>
> lines 43-57:
> =============
>
>  if (m_EdgeWeight != 0.0)
>    {
>    diffusion->SetInput(this->GetFeatureImage());
>    diffusion->SetConductanceParameter(m_SmoothingConductance);
>    diffusion->SetTimeStep(m_SmoothingTimeStep);
>    diffusion->SetNumberOfIterations(m_SmoothingIterations);
>
>    laplacian->SetInput(diffusion->GetOutput());
>    laplacian->Update();
>
>    lit = ImageRegionIterator<FeatureImageType>(laplacian->GetOutput(),
>
>    this->GetFeatureImage()->GetRequestedRegion());
>    lit.GoToBegin();
>    }
>
>
> and lines 77-85:
> ================
>
>
>    if ( m_EdgeWeight != 0.0)
>      {
>      sit.Set( static_cast<ScalarValueType>(threshold + m_EdgeWeight *
> lit.Get()) );
>      ++lit;
>      }
>    else
>      {
>      sit.Set( static_cast<ScalarValueType>(threshold) );
>      }
>
>
> ----------------
>
>
>   "Glimpsing at the Source leaves no Doubt"
>
>
>
>   Regards,
>
>
>       Luis
>
>
> -----------------------
> Dário Oliveira wrote:
>>
>> Dear all,
>>
>> I guess I miss something here. Why the advection scaling term is not
>> applied in ThresholdLevelSetImageFilter? I performed some tests, and
>> the value of advection scaling term makes no difference at all in the
>> final result. Does the EdgeWeight term play the role of advection
>> scaling?
>>
>> Another question... What does the smoothing conductance term?
>>
>> Thanks for your attention!
>



-- 
Dário Oliveira


More information about the Insight-users mailing list