<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><DIV><BR></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Hi, Luis:</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Thanks for your reply. I am sorry for my missleading letter.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">I did not give the whole main() in the letter. Actually, my code can be run and got propoer output. The only thing is it shows&nbsp; "warning RTTI symbol not found &nbsp;FileReader&lt;itk::Image&lt;short, 3u&gt;, itk::DefaultConvertPixelTraits&lt;short&gt; &gt;, and the program catch exception when I use KDE to debug it. Also the content of smart pointer can not be displayed when debuging. If I run it as comman line,&nbsp; nothing wrong.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">1,&nbsp;you suggest not to&nbsp;compose the outputtype but got it as a trait from the inputfiler. But I want to&nbsp;do many things in the template fucntion. Such as isotropic resampling, is it possible for me to get many kinds of filters such as resampling filtering, recursive Gaussian filtering all from the template inputfilter.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">2, I am actually want to do muti-scale active contour sementation. So&nbsp; I dont want to make the main program too long. Thus I want to have template function, but I try to avoid claim so many filters in my main program. Do you have any suggestions? I know ITK has mutiresolutionregistration filtering, is there anything similar&nbsp;for level set?</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Thanks and best regards</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Baoyun</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif"><BR><BR>&nbsp;</DIV>
<DIV style="FONT-SIZE: 13px; FONT-FAMILY: arial, helvetica, sans-serif"><FONT face=Tahoma size=2>
<HR SIZE=1>
<B><SPAN style="FONT-WEIGHT: bold">From:</SPAN></B> Luis Ibanez &lt;luis.ibanez@kitware.com&gt;<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> Baoyun Li &lt;baoyun_li123@yahoo.com&gt;<BR><B><SPAN style="FONT-WEIGHT: bold">Cc:</SPAN></B> insight-users@itk.org<BR><B><SPAN style="FONT-WEIGHT: bold">Sent:</SPAN></B> Saturday, February 21, 2009 7:56:16 AM<BR><B><SPAN style="FONT-WEIGHT: bold">Subject:</SPAN></B> Re: weird thing happen when I try to write template function<BR></FONT><BR><BR>Hi Baoyun,<BR><BR>Your function has a misleading argument name.<BR><BR>It should probably be:<BR><BR><BR>&gt; template &lt;class TInputFilter&gt;<BR>&gt; void IsotropicResample( TInputFilter* inputFilter )<BR>&gt; {<BR><BR><BR>instead of the current:<BR><BR><BR>&gt; template &lt;class TInputImage&gt;<BR>&gt; void IsotropicResample( TInputImage* inputimage )<BR>&gt; {<BR><BR><BR>Also, the OutputImageType, you should get it as<BR>a trait from the InputFilter type,
 instead of<BR>composing it on your own.<BR><BR>You should do:<BR><BR>&gt; typedef typename TInputFilter::OutputImageType OutputImageType;<BR><BR>Instead of the current:<BR><BR>&gt; const unsigned int Dimension=3;<BR>&gt; typedef&nbsp; short&nbsp; OutputPixelType;<BR>&gt; typedef itk::Image&lt; OutputPixelType,&nbsp; Dimension &gt;&nbsp; OutputImageType;<BR><BR><BR><BR>However,<BR>these are not the reasons why your program fails at run time.<BR><BR><BR>The problem is that you missed to pass the input filename<BR>to the reader.<BR><BR><BR>You should do this in the main() before you invoke your<BR>templated function.<BR><BR><BR>Something like<BR><BR>main()<BR>&gt; {<BR>&gt;&nbsp; typedef itk::ImageFileReader&lt; InputImageType&nbsp; &gt;&nbsp; ReaderType;<BR>&gt;&nbsp; ReaderType::Pointer reader = ReaderType::New();<BR><BR>&nbsp; &nbsp; reader-&gt;SetFileName("myInputImageFile.mhd"); //&nbsp; &lt;&lt;&lt;&lt;&lt; THIS<BR><BR>&gt;&nbsp; &nbsp;
 IsotropicResample &lt;ReaderType&gt; (reader );<BR>&gt; }<BR>&gt;<BR><BR><BR><BR>&nbsp; Regards,<BR><BR><BR>&nbsp; &nbsp; &nbsp; Luis<BR><BR><BR>----------------<BR>Baoyun Li wrote:<BR>&gt; Dear All:<BR>&gt;&nbsp; I am trying to write some template function.<BR>&gt;&nbsp; Here is&nbsp; my function, it just passed ReaderType::Pointer from the main program<BR>&gt;&nbsp; template &lt;class TInputImage&gt;<BR>&gt; void IsotropicResample( TInputImage* inputimage )<BR>&gt; {<BR>&gt;&nbsp; &nbsp; &nbsp; const unsigned int Dimension=3;<BR>&gt;&nbsp; &nbsp; typedef&nbsp; short&nbsp; OutputPixelType;<BR>&gt;&nbsp; &nbsp; typedef itk::Image&lt; OutputPixelType,&nbsp; Dimension &gt;&nbsp; OutputImageType;<BR>&gt;&nbsp; &nbsp; typedef itk::ImageFileWriter&lt; OutputImageType &gt;&nbsp; WriterType;<BR>&gt;&nbsp; &nbsp; WriterType::Pointer writer = WriterType::New();<BR>&gt;&nbsp; &nbsp; writer-&gt;SetFileName("../data/test.hdr");<BR>&gt;&nbsp; &nbsp;
 writer-&gt;SetInput( inputimage-&gt;GetOutput() );<BR>&gt;&nbsp; &nbsp; try<BR>&gt;&nbsp; &nbsp; &nbsp; {<BR>&gt;&nbsp; &nbsp; &nbsp; writer-&gt;Update();<BR>&gt;&nbsp; &nbsp; &nbsp; }<BR>&gt;&nbsp; &nbsp; catch( itk::ExceptionObject &amp; excep )<BR>&gt;&nbsp; &nbsp; &nbsp; {<BR>&gt;&nbsp; &nbsp; &nbsp; std::cerr &lt;&lt; "Exception caught !" &lt;&lt; std::endl;<BR>&gt;&nbsp; &nbsp; &nbsp; std::cerr &lt;&lt; excep &lt;&lt; std::endl;<BR>&gt;&nbsp; &nbsp; &nbsp; }<BR>&gt; ;<BR>&gt; <BR>&gt; };<BR>&gt;&nbsp; ////// in the main function, we call the function as following<BR>&gt;&nbsp; main()<BR>&gt; {<BR>&gt;&nbsp; typedef itk::ImageFileReader&lt; InputImageType&nbsp; &gt;&nbsp; ReaderType;<BR>&gt;&nbsp; ReaderType::Pointer reader = ReaderType::New();<BR>&gt;&nbsp; &nbsp; IsotropicResample &lt;ReaderType&gt; (reader );<BR>&gt; }<BR>&gt;&nbsp; When I run the program through command line, everything is ok, I got the test.hdr as output.<BR>&gt;&nbsp; But
 when I debug program, the program catch error and goes to the catch branch..<BR>&gt;&nbsp; warning RTTI symbol not found,<BR>&gt; FileReader&lt;itk::Image&lt;short, 3u&gt;, itk::DefaultConvertPixelTraits&lt;short&gt; &gt;'<BR>&gt;&nbsp; &nbsp; try<BR>&gt;&nbsp; &nbsp; &nbsp; {<BR>&gt;&nbsp; &nbsp; &nbsp; writer-&gt;Update();<BR>&gt;&nbsp; &nbsp; &nbsp; }<BR>&gt;&nbsp; &nbsp; catch( itk::ExceptionObject &amp; excep )<BR>&gt;&nbsp; &nbsp; &nbsp; {<BR>&gt;&nbsp; &nbsp; &nbsp; std::cerr &lt;&lt; "Exception caught !" &lt;&lt; std::endl;<BR>&gt;&nbsp; &nbsp; &nbsp; std::cerr &lt;&lt; excep &lt;&lt; std::endl;<BR>&gt;&nbsp; &nbsp; &nbsp; }<BR>&gt;&nbsp; However, the result is still there?<BR>&gt;&nbsp; Can sombody teach me how to solve this problem??<BR>&gt;&nbsp; Thanks<BR>&gt;&nbsp; Baoyun<BR>&gt; <BR>&gt;&nbsp; <BR></DIV></div><br>



      </body></html>