<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hello I ran the following commands in SimpleITK with the attached output:<div><br></div><div><div>img = sitk.ReadImage( "/Users/blowekamp/Downloads/image2D.png" )</div><div>img = sitk.VectorIndexSelectionCast( img , 0 )</div><div>ws = sitk.MorphologicalWatershed( img )</div><div><br></div><div><div style="margin: 0px; font-size: 12px; "><img alt="unknown.png" id="d51a522d-e5ce-41b1-91de-1c1325085d68" height="465" width="215" apple-width="yes" apple-height="yes" src="cid:1A418824-5E2B-4895-AA4E-D6376FCD14B8"></div></div><div><br></div><div><br></div><div>These are the default arguments for the morphological watershed function:</div><div><br></div><div><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; font-family: monospace, sans-serif; white-space: pre-wrap; line-height: 15px; background-color: rgb(255, 255, 255); position: static; z-index: auto; ">Image itk::simple::MorphologicalWatershed(const Image &amp;image1, double level=0.0, bool markWatershedLine=true,
bool fullyConnected=false)</pre><div><br></div></div><div>I am suspicious&nbsp;there there is some integer type used for a distance filed someplace in your code or other subtle misuse. Also I have generally plug a gradient image into the classic itk::WatershedImagefilter and not a distance filed.</div><div><br></div><div>Brad</div><div><br></div><div><div>On Feb 13, 2013, at 7:19 PM, Dženan Zukić &lt;<a href="mailto:dzenanz@gmail.com">dzenanz@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="ltr"><font><font face="verdana,sans-serif">I also suspected that at first, but the deviations are a lot bigger than what can be explained by discretization. Also, this should not be that much a problem for float images, but problem appears there as well. Most importantly of all, detected watershed lines do not lie where visual inspection expects them to be. One one slice I examined, the watershed line was shifted about 10 voxels!</font></font></div>

<div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 13, 2013 at 6:35 PM, Richard Beare <span dir="ltr">&lt;<a href="mailto:richard.beare@gmail.com" target="_blank">richard.beare@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'll attempt to check this out over the next couple of days.<br>
<br>
I suspect that you have run into issues with discrete nature of<br>
images, rather than a bug as such. Suppose that you are applying a<br>
watershed to a flat control surface. If the seed points are an odd<br>
number of voxels apart, and you chose the algorithm marking the<br>
watershed line, then the split will appear nicely down the middle. If<br>
you don't chose to mark the line then there will be a probably random<br>
choice of which voxels along the midpoint get assigned to which<br>
region. Conversely, if the seeds are an even number of voxels apart<br>
and you chose to mark the watershed line, then the line should lie<br>
between the pixels, but it can't. Hence it is likely to be jaggedly<br>
jumping between the two sides of the plateau. Similar things can<br>
happen with distance map control functions, as adjacent voxels can be<br>
equidistant from seeds, producing a plateau.<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On Thu, Feb 14, 2013 at 9:13 AM, Dženan Zukić &lt;<a href="mailto:dzenanz@gmail.com">dzenanz@gmail.com</a>&gt; wrote:<br>
&gt; I think I have discovered a bug in WatershedImageFilter. Below is MWE which<br>
&gt; reproduces the problem. Input, output and expected image attached.<br>
&gt;<br>
&gt; The problem is that watershed lines are wrongly placed and rough (see<br>
&gt; attached error highlights). I first discovered it while working with 3D<br>
&gt; images, where the problem is more pronounced. I can also supply 3D float<br>
&gt; images (1.3MB). MorphologicalWatershedFromMarkersImageFilter suffers from<br>
&gt; the same problem.<br>
&gt;<br>
&gt; #include &lt;itkImageFileReader.h&gt;<br>
&gt; #include &lt;itkImageFileWriter.h&gt;<br>
&gt; #include &lt;itkWatershedImageFilter.h&gt;<br>
&gt; #include &lt;itkCastImageFilter.h&gt;<br>
&gt;<br>
&gt; typedef itk::Image&lt;unsigned char, 2&gt; VisualizingImageType;<br>
&gt;<br>
&gt; void main()<br>
&gt; {<br>
&gt; &nbsp; &nbsp; typedef itk::ImageFileReader&lt;VisualizingImageType&gt; rType;<br>
&gt; &nbsp; &nbsp; rType::Pointer reader=rType::New();<br>
&gt; &nbsp; &nbsp; reader-&gt;SetFileName("image2D.png");<br>
&gt; &nbsp; &nbsp; reader-&gt;Update();<br>
&gt; &nbsp; &nbsp; VisualizingImageType::Pointer dm=reader-&gt;GetOutput();<br>
&gt; &nbsp; &nbsp; typedef itk::WatershedImageFilter&lt;VisualizingImageType&gt; wsType;<br>
&gt; &nbsp; &nbsp; wsType::Pointer ws2=wsType::New();<br>
&gt; &nbsp; &nbsp; ws2-&gt;SetThreshold(0);<br>
&gt; &nbsp; &nbsp; ws2-&gt;SetLevel(0);<br>
&gt; &nbsp; &nbsp; ws2-&gt;SetInput(dm);<br>
&gt; &nbsp; &nbsp; ws2-&gt;Update();<br>
&gt; &nbsp; &nbsp; typedef itk::CastImageFilter&lt;wsType::OutputImageType,<br>
&gt; VisualizingImageType&gt; castType;<br>
&gt; &nbsp; &nbsp; castType::Pointer caster=castType::New();<br>
&gt; &nbsp; &nbsp; caster-&gt;SetInput(ws2-&gt;GetOutput());<br>
&gt; &nbsp; &nbsp; caster-&gt;Update();<br>
&gt; &nbsp; &nbsp; typedef itk::ImageFileWriter&lt;VisualizingImageType&gt; wType;<br>
&gt; &nbsp; &nbsp; wType::Pointer writer=wType::New();<br>
&gt; &nbsp; &nbsp; writer-&gt;SetFileName("imageWSint.png");<br>
&gt; &nbsp; &nbsp; writer-&gt;SetInput(caster-&gt;GetOutput());<br>
&gt; &nbsp; &nbsp; writer-&gt;Update();<br>
&gt; }<br>
</div></div></blockquote></div><br></div>
_____________________________________<br>Powered by <a href="http://www.kitware.com">www.kitware.com</a><br><br>Visit other Kitware open-source projects at<br><a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br><br>Kitware offers ITK Training Courses, for more information visit:<br>http://www.kitware.com/products/protraining.php<br><br>Please keep messages on-topic and check the ITK FAQ at:<br>http://www.itk.org/Wiki/ITK_FAQ<br><br>Follow this link to subscribe/unsubscribe:<br>http://www.itk.org/mailman/listinfo/insight-users<br></blockquote></div><br></div></body></html>