Hi peter:<br><br>Thanks for your reply.<br>I get the error message using try-catch in following.<br><br>itk::ERROR: RecursiveGaussianImageFilter(01766140): The number of pixels along d<br>irection 2 is less than 4. This filter requires a minimum of four pixels along t
<br>he dimension to be processed.<br><br>Therefore, this problem is due to <br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;size[2] = m_ROIzmax-m_ROIzmin+1;<br>this size must greater than four.&nbsp; <br><br>:)<br><br><br><br><div><span class="gmail_quote">2007/3/30, Peter Cech &lt;
<a href="mailto:pcech@vision.ee.ethz.ch">pcech@vision.ee.ethz.ch</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On Fri, Mar 30, 2007 at 00:12:44 +0800, Goo wrote:
<br>&gt; Hi all:<br>&gt;<br>&gt; I am trying to extract a region of interest in a image<br>&gt; and using its output as the input of Gradient Filter.<br>&gt;<br>&gt; Therefore, the RegionOfInterestImageFilter is used to extract region
<br>&gt; and GradientMagnitudeRecursiveGaussianImageFilter used to count gradient.<br>&gt;<br>&gt; but an unknown erorr is occurrence and my program crashed.<br><br>I did not spot anything wrong in the code, but as you did not write
<br>anything more specific about the crash, I&#39;ll assume either unhandled<br>exception or segfault. For unhandled exception, put this around your<br>code (I&#39;m putting it around my code in main, so it catches everything):
<br><br><br>&nbsp;&nbsp;try {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;[your code]<br><br>&nbsp;&nbsp;} catch( std::exception &amp; e ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; &quot;Exception caught: &quot; &lt;&lt; e.what() &lt;&lt; std::endl;<br>&nbsp;&nbsp;} catch( ... ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;std::cout &lt;&lt; &quot;Unknown exception caught!&quot; &lt;&lt; std::endl;
<br>&nbsp;&nbsp;}<br><br><br>It will print out the place and cause of the exception thrown.<br><br>In the case of segfault, I&#39;m afraid the best thing is to run the program<br>in a debugger and try to find what&#39;s going on.<br>
<br>Good luck in solving the problem!<br><br>Regards,<br>Peter<br><br>PS: I&#39;ve just remembered one of my problems with<br>RegionOfInterestImageFilter. The region in question has to be a<br>subregion of input image&#39;s region. Do
<br><br>&nbsp;&nbsp;desiredRegion.Crop( m_Cast1-&gt;GetOutput()-&gt;GetLargestPossibleRegion() );<br><br>before assigning the region for cropping.<br><br><br><br>&gt; My program is following:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InternalPixelType;
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef itk::Image&lt; InternalPixelType, 3&gt;&nbsp;&nbsp;InternalImageType;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;&nbsp;&nbsp;&nbsp;signed short&nbsp;&nbsp;&nbsp;&nbsp;OutputPixelType;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef itk::Image&lt; OutputPixelType, 3&gt;&nbsp;&nbsp;&nbsp;&nbsp;ExternalImageType;
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef itk::RescaleIntensityImageFilter&lt;ExternalImageType,<br>&gt; InternalImageType&gt; InputCastType;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;InputCastType::Pointer m_Cast1;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;m_Cast1-&gt;SetInput(&nbsp;&nbsp;&nbsp;&nbsp;an itk::Image that has ExternalImageType&nbsp;&nbsp; );
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;m_Cast1-&gt;SetOutputMinimum(0);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;m_Cast1-&gt;SetOutputMaximum( 255 );<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;m_Cast1-&gt;Update();<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef itk::RegionOfInterestImageFilter<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt; InternalImageType , InternalImageType &gt; FilterType;
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;FilterType::Pointer ROI1= FilterType::New();<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;InternalImageType::IndexType start;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;start[0] = m_ROIxmin;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;start[1] = m_ROIymin;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;start[2] = m_ROIzmin;<br>
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;InternalImageType::SizeType size;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;size[0] = m_ROIxmax-m_ROIxmin+1;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;size[1] = m_ROIymax-m_ROIymin+1;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;size[2] = m_ROIzmax-m_ROIzmin+1;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;InternalImageType::RegionType desiredRegion;
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;desiredRegion.SetSize(&nbsp;&nbsp;size&nbsp;&nbsp;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;desiredRegion.SetIndex( start );<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;ROI1-&gt;SetRegionOfInterest( desiredRegion );<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;ROI1-&gt;SetInput(m_Cast1-&gt;GetOutput());<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;ROI1-&gt;Update();
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef itk::&lt; InternalImageType,InternalImageType &gt;<br>&gt; GradientFilterType;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;GradientFilterType::Pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gradientMagnitude =<br>&gt; GradientFilterType::New();<br>&gt;
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;gradientMagnitude-&gt;SetSigma(&nbsp;&nbsp;1 );<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;gradientMagnitude-&gt;SetInput( ROI1-&gt;GetOutput() );<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;gradientMagnitude-&gt;Update();<br>&gt;<br>&gt;<br>&gt; Regards :)<br><br>&gt; _______________________________________________
<br>&gt; Insight-users mailing list<br>&gt; <a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br>&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users
</a><br><br></blockquote></div><br>