Hi,<br><br>I want to filter some 3D dicom data (512x512, 4 slices, short data) with the WatershedImageFilter, but if I call Update() then there occurs an infinite loop. Is there something wrong with my code?<br>(Maybe it has something to do with 2D vs. 3D image data ?!)<br>
<br>Regards, Michael<br><br><br><br>    typedef itk::Image&lt; short, 3&gt;           ShortImageType;<br>    typedef itk::RGBPixel&lt;unsigned char&gt;    RGBPixelType;<br>    typedef itk::Image&lt;RGBPixelType, 3&gt;     RGBImageType;<br>
    typedef itk::Vector&lt;float, 4&gt;           VectorPixelType;<br>    typedef itk::Image&lt;VectorPixelType, 3&gt;  VectorImageType;<br>    typedef itk::Image&lt;unsigned long, 3&gt;    LabeledImageType;<br>    typedef itk::Image&lt;float, 3&gt;            ScalarImageType;<br>
<br>    typedef itk::CastImageFilter                                &lt;ShortImageType,RGBImageType&gt;                                CastingFilterType0;<br>    typedef itk::VectorCastImageFilter                          &lt;RGBImageType, VectorImageType&gt;                         CastFilterType;<br>
    typedef itk::VectorGradientAnisotropicDiffusionImageFilter  &lt;VectorImageType, VectorImageType&gt;                      DiffusionFilterType;<br>    typedef itk::VectorGradientMagnitudeImageFilter             &lt;VectorImageType&gt;                                       GradientMagnitudeFilterType; <br>
    typedef itk::WatershedImageFilter                           &lt;ScalarImageType&gt;                                       WatershedFilterType;<br>    typedef itk::Functor::ScalarToRGBPixelFunctor               &lt;unsigned long&gt;                                         ColorMapFunctorType;<br>
    typedef itk::UnaryFunctorImageFilter                        &lt;LabeledImageType, RGBImageType, ColorMapFunctorType&gt;   ColorMapFilterType;<br><br>    CastingFilterType0::Pointer             caster0     = CastingFilterType0::New();<br>
    CastFilterType::Pointer                 caster      = CastFilterType::New();<br>    DiffusionFilterType::Pointer            diffusion   = DiffusionFilterType::New();<br>    GradientMagnitudeFilterType::Pointer    gradient    = GradientMagnitudeFilterType::New();<br>
    WatershedFilterType::Pointer            watershed   = WatershedFilterType::New();<br>    ColorMapFilterType::Pointer             colormapper = ColorMapFilterType::New();<br><br>    diffusion-&gt;SetNumberOfIterations( 10 );<br>
    diffusion-&gt;SetConductanceParameter( 2.0 );<br>    diffusion-&gt;SetTimeStep(0.0625);<br><br>    watershed-&gt;SetLevel( 0.05);<br>    watershed-&gt;SetThreshold(0.0 );<br><br>    gradient-&gt;SetUsePrincipleComponents(true);<br>
<br>    caster0-&gt;SetInput(m_Dicomreader-&gt;GetITKOutput());<br>    caster-&gt;SetInput(caster0-&gt;GetOutput());<br>    diffusion-&gt;SetInput(caster-&gt;GetOutput());<br>    gradient-&gt;SetInput(diffusion-&gt;GetOutput());<br>
    watershed-&gt;SetInput(gradient-&gt;GetOutput());<br>    colormapper-&gt;SetInput(watershed-&gt;GetOutput());<br><br>    colormapper-&gt;Update();<br>