[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