<div dir="ltr"><font><div><span style="font-family:verdana,sans-serif">I think I have discovered a bug in </span><font face="courier new, monospace">WatershedImageFilter</font><font face="verdana, sans-serif">. Below is MWE which reproduces the problem. Input, output and expected image attached.</font></div>

<div style="font-family:verdana,sans-serif"><br></div><div><font face="verdana, sans-serif">The problem is that watershed lines are wrongly placed and rough (see attached error highlights). I first discovered it while working with 3D images, where the problem is more pronounced. I can also supply 3D float images (1.3MB). </font><font face="courier new, monospace">MorphologicalWatershedFromMarkersImageFilter </font><font face="verdana, sans-serif">suffers from the same problem.</font></div>

</font><font><div style="font-family:verdana,sans-serif"><br></div><div><font face="courier new, monospace">#include &lt;itkImageFileReader.h&gt;</font></div><div><font face="courier new, monospace">#include &lt;itkImageFileWriter.h&gt;</font></div>

<div><font face="courier new, monospace">#include &lt;itkWatershedImageFilter.h&gt;</font></div><div><font face="courier new, monospace">#include &lt;itkCastImageFilter.h&gt;</font></div><div><font face="courier new, monospace"><br>

</font></div><div><font face="courier new, monospace">typedef itk::Image&lt;unsigned char, 2&gt; VisualizingImageType;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">void main()</font></div>

<div><font face="courier new, monospace">{</font></div><div><font face="courier new, monospace">    typedef itk::ImageFileReader&lt;VisualizingImageType&gt; rType;</font></div><div><font face="courier new, monospace">    rType::Pointer reader=rType::New();</font></div>

<div><font face="courier new, monospace">    reader-&gt;SetFileName(&quot;image2D.png&quot;);</font></div><div><font face="courier new, monospace">    reader-&gt;Update();</font></div><div><font face="courier new, monospace">    VisualizingImageType::Pointer dm=reader-&gt;GetOutput();</font></div>

<div><font face="courier new, monospace">    typedef itk::WatershedImageFilter&lt;VisualizingImageType&gt; wsType;</font></div><div><font face="courier new, monospace">    wsType::Pointer ws2=wsType::New();</font></div><div>

<font face="courier new, monospace">    ws2-&gt;SetThreshold(0);</font></div><div><font face="courier new, monospace">    ws2-&gt;SetLevel(0);</font></div><div><font face="courier new, monospace">    ws2-&gt;SetInput(dm);</font></div>

<div><font face="courier new, monospace">    ws2-&gt;Update();</font></div><div><font face="courier new, monospace">    typedef itk::CastImageFilter&lt;wsType::OutputImageType, VisualizingImageType&gt; castType;</font></div>

<div><font face="courier new, monospace">    castType::Pointer caster=castType::New();</font></div><div><font face="courier new, monospace">    caster-&gt;SetInput(ws2-&gt;GetOutput());</font></div><div><font face="courier new, monospace">    caster-&gt;Update();</font></div>

<div><font face="courier new, monospace">    typedef itk::ImageFileWriter&lt;VisualizingImageType&gt; wType;</font></div><div><font face="courier new, monospace">    wType::Pointer writer=wType::New();</font></div><div><font face="courier new, monospace">    writer-&gt;SetFileName(&quot;imageWSint.png&quot;);</font></div>

<div><font face="courier new, monospace">    writer-&gt;SetInput(caster-&gt;GetOutput());</font></div><div><font face="courier new, monospace">    writer-&gt;Update();</font></div><div><font face="courier new, monospace">}</font></div>

</font></div>