I found the reason!!!&nbsp;<div><br></div><div><span style="font-family:arial,sans-serif;font-size:14px">(*segment_ptr)</span><span style="font-family:arial,sans-serif;font-size:14px">.second.edge_list.front().</span><span style="font-family:arial,sans-serif;font-size:14px">label</span><br>
</div><div><span style="font-family:arial,sans-serif;font-size:14px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:14px">When the filter can not detect any block, the member edge_list is empty. But without any check of list, going on invoke the .front(). Thus the program crashed.</span></div>
<div><span style="font-family:arial,sans-serif;font-size:14px"><br></span></div><div><font face="arial, sans-serif"><span style="font-size:14px">It can be a BUG !?</span></font></div><div class="gmail_extra"><br><br><div class="gmail_quote">
2012/12/5 ýˆýˆ <span dir="ltr">&lt;<a href="mailto:anjingdelonglong@gmail.com" target="_blank">anjingdelonglong@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Dear All.<div><br></div><div>I&#39;m using Watershed filter on my work about segmentation. But it often crashed and i can not find the reason. Please Help~</div><div><br></div><div>Error message is :&nbsp;&quot;list iterator not dereferencable&quot;</div>

<div><br></div><div>Try my best to explain the problem.</div><div><br></div><div>This is the part of my program</div><div><br></div><div>.....</div><div>//A SigmoidImageFilter&nbsp;executed.</div><div><br></div><div><div>typedef &nbsp;itk::WatershedImageFilter&lt; InternalImageType &gt; WatershedFilterType; //&nbsp;InternalImageType--&gt; image&lt;float, 2&gt;;</div>

<div>WatershedFilterType::Pointer watershedFilter = WatershedFilterType::New();</div><div>watershedFilter-&gt;SetInput( sigmoidFilter-&gt;GetOutput() );</div><div>watershedFilter-&gt;SetThreshold( _threshold );</div><div>

watershedFilter-&gt;SetLevel( _level ); &nbsp;//both threshold and &nbsp;level is between 0~1</div><div>watershedFilter-&gt;Update();</div></div><div><br clear="all"><div>When going to this step:&nbsp;SegmentTreeGenerator&lt;TScalarType&gt;::CompileMergeList(SegmentTableTypePointer segments,&nbsp;</div>

<div>SegmentTreeTypePointer mergeList)</div><div>{</div><div>&nbsp; &nbsp;//.....</div><div>&nbsp; &nbsp;</div><div>&nbsp; &nbsp;for (segment_ptr = segments-&gt;Begin(); segment_ptr != segments-&gt;End();</div><div>&nbsp; &nbsp; &nbsp; &nbsp;++segment_ptr)</div><div>&nbsp; &nbsp; {</div>

<div>&nbsp; &nbsp; labelFROM = (*segment_ptr).first;</div><div>&nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; labelTO</div><div>&nbsp; &nbsp; &nbsp; = m_MergedSegmentsTable-&gt;RecursiveLookup((*segment_ptr).second.edge_list.front().label);</div><div><br></div><div>&nbsp; &nbsp;//.....</div>

<div>}</div><div><br></div><div>then I found that the segment_ptr -&gt; hash_table only have one element. Thus the list crashed.</div><div>the&nbsp;variable segment is copy of the input which is defined &quot; &nbsp;typename SegmentTableType::Pointer input = this-&gt;GetInputSegmentTable(); &quot; in the&nbsp;SegmentTreeGenerator::GenerateData() part.</div>

<div><br></div><div>I&#39;m not clear about the&nbsp;internal implement of this function. Therefore i can&#39;t find the reason why it crashed.</div><div>Please HELP!</div><div>THANKS.</div><span class="HOEnZb"><font color="#888888"><div>
<br></div><div><br></div>-- <br>
Nothing but a MADAO£¡<br><br>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Nothing but a MADAO£¡<br><br>
</div>