<DIV>Thanks again julien, the definition is quite simple and obvious I understand why I spend all the last few years with JAVA ;-)</DIV>
<DIV>&nbsp;</DIV>
<DIV>I look in the ImageToImageFilter to understand the strategy used by ITK to return an image after processing. The return type is an OutputTypeImage and not a Pointer, so I confuse because I don't know when and how to return an ImageType and when I have to return a Pointer (as I did in myFunction) ?</DIV>
<DIV>&nbsp;</DIV>
<DIV>Lagaffe</DIV>
<DIV><BR><BR><B><I>Julien Jomier &lt;jjomier@cs.unc.edu&gt;</I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">Hi Lagaffe,<BR><BR>I assume your function is inside the class MyObject.<BR><BR>In your .h:<BR><BR>typedef TImage ImageType;<BR>typedef typename ImageType::Pointer InputImagePointer;<BR>static InputImagePointer myFunction(...);<BR><BR>In your .txx:<BR><BR>template<CLASS TImage><BR>MyObject<TIMAGE>::InputImagePointer<BR>MyObject<TIMAGE><BR>::myFunction(...)<BR>{<BR>....<BR>}<BR><BR>hope that helps,<BR><BR>Julien<BR><BR>Mr Gaffe wrote:<BR>&gt; Thanks jJulien it works,<BR>&gt; <BR>&gt; maybe if I can another question about the implementation of static <BR>&gt; methods in ITK...<BR>&gt; <BR>&gt; myFunction is a static function and it is define in a .h and implemented <BR>&gt; in a .txx<BR>&gt; so if I put everything in my .h like you said it works:<BR>&gt; <BR>&gt; typedef typename ImageType::Pointer InputImagePointer;<BR>&gt; static InputImagePointer::Pointer myFunction(...)<BR>&gt;
 {<BR>&gt; ....<BR>&gt; }<BR>&gt; or if I don't want to use the typedef<BR>&gt; static typename TImage::Pointer myFunction(...)<BR>&gt; {<BR>&gt; ....<BR>&gt; }<BR>&gt; and you guess that My Object is templated using TImage ...<BR>&gt; <BR>&gt; BUT, I don't know how to implement it in my .txx and just define the <BR>&gt; header function in my .h as we do usually (it never compile ....)<BR>&gt; <BR>&gt; .h<BR>&gt; typedef typename ImageType::Pointer InputImagePointer;<BR>&gt; static InputImagePointer::Pointer myFunction(...);<BR>&gt; .txx<BR>&gt; static InputImagePointer::Pointer myFunction(...)<BR>&gt; {<BR>&gt; }<BR>&gt; <BR>&gt; Thanks julien for help,<BR>&gt; Lagaffe<BR>&gt; <BR>&gt; */Julien Jomier <JJOMIER@CS.UNC.EDU>/* wrote:<BR>&gt; <BR>&gt; Hi Lagaffe,<BR>&gt; <BR>&gt; This is an issue with smart pointers.<BR>&gt; As you probably know smart pointers delete themselves when there are<BR>&gt; not<BR>&gt; assigned anymore.<BR>&gt; In your case, in myFunction(), the ImportFilter
 is creating a smart<BR>&gt; pointer as output image, but myFunction() is returning a raw pointer,<BR>&gt; which means that the reference count is not incremented and the output<BR>&gt; pointer is destroyed at the end of the myFunction() scope.<BR>&gt; An easy fix is to make your function return a smart pointer and<BR>&gt; assign a<BR>&gt; smart pointer in your main.<BR>&gt; <BR>&gt; Something like:<BR>&gt; <BR>&gt; ImageType::Pointer myFunction()<BR>&gt; {<BR>&gt; ...<BR>&gt; return ImportFilter-&gt;GetOuput()<BR>&gt; }<BR>&gt; <BR>&gt; and in your program:<BR>&gt; <BR>&gt; typedef int PixelType;<BR>&gt; const int Dimension=2, Lx=7, Ly=5;<BR>&gt; typedef itk::Image &lt; PixelType, Dimension &gt; ImageType;<BR>&gt; ImageType::Pointer inputImage=myFunction(...);<BR>&gt; <BR>&gt; Let us k! now if that was the problem,<BR>&gt; <BR>&gt; Julien<BR>&gt; <BR>&gt; Mr Gaffe wrote:<BR>&gt; &gt; hello,<BR>&gt; &gt;<BR>&gt; &gt; I try to build an itkImage with a function wich use an<BR>&gt; &gt;
 importImageFilter; I can display my image inside my function (so the<BR>&gt; &gt; importation pipeline is ok), but when I try to do the same thing<BR>&gt; in my<BR>&gt; &gt; program using the return itkImage pointer it doesn't work !<BR>&gt; &gt;<BR>&gt; &gt; basically this is my code;<BR>&gt; &gt; function:<BR>&gt; &gt;<BR>&gt; &gt; ImageType* myFunction(...)<BR>&gt; &gt; ... build the image and Import it with itkImportImageFilter<BR>&gt; &gt; ... I did an Update<BR>&gt; &gt; I can display my Image using std::cout &lt;&lt; ImportFilter-&gt;GetOuput()<BR>&gt; &gt; &lt;<BR>&gt; &gt;<BR>&gt; &gt; finally,I return the pointer:<BR>&gt; &gt; return ImportFilter-&gt;GetOuput()<BR>&gt; &gt;<BR>&gt; &gt; In my program:<BR>&gt; &gt; typedef int PixelType;<BR>&gt; &gt; const int Dimension=2, Lx=7, Ly=5;<BR>&gt; &gt; typedef itk::Image &lt; PixelType, Dimensi! on &gt; ImageType;<BR>&gt; &gt; ImageType* inputImage=myFunction(...);<BR>&gt; &gt;<BR>&gt; &gt; When I try to display
 std:cout&lt;<BR>&gt; &lt;&lt;&gt;&gt; pointer value and not all the usual image information .... and<BR>&gt; if I try<BR>&gt; &gt; to use inputImage to do something it crash !<BR>&gt; &gt;<BR>&gt; &gt; I think, I am not using the good return type or something like that?<BR>&gt; &gt;<BR>&gt; &gt; thanks for help<BR>&gt; &gt; lagaffe<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; ------------------------------------------------------------------------<BR>&gt; &gt; Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage<BR>&gt; pour vos<BR>&gt; &gt; mails !<BR>&gt; &gt; Créez votre Yahoo! Mail<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; ------------------------------------------------------------------------<BR>&gt; &gt;<BR>&gt; &gt; _______________________________________________<BR>&gt; &gt; Insight-users mailing list<BR>&gt; &gt; Insight-users@itk.org<BR>&gt; &gt; http://www.itk.org/mailman/listinfo/insight-users<BR>&gt;
 <BR>&gt; ------------------------------------------------------------------------<BR>&gt; Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos <BR>&gt; mails !<BR>&gt; Créez votre Yahoo! Mail <BR>&gt; <HTTP: mail taglines *http: fr.rd.yahoo.com evt="25917/*http://fr.rd.yahoo.com/mail_fr/mail_campaigns/splash/taglines_250/default/*http://fr.promotions.yahoo.com/mail/creer28.html"><BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; ------------------------------------------------------------------------<BR>&gt; <BR>&gt; _______________________________________________<BR>&gt; Insight-users mailing list<BR>&gt; Insight-users@itk.org<BR>&gt; http://www.itk.org/mailman/listinfo/insight-users<BR></BLOCKQUOTE><p>
                <hr size=1> 
Découvrez le nouveau Yahoo! Mail : <font color="red">250 Mo d'espace</font> de stockage pour vos mails !<br><a href="http://fr.rd.yahoo.com/mail/taglines/*http://fr.rd.yahoo.com/evt=25917/*http://fr.rd.yahoo.com/mail_fr/mail_campaigns/splash/taglines_250/default/*http://fr.promotions.yahoo.com/mail/creer28.html">Créez votre Yahoo! Mail</a>