<div dir="ltr"><div><div><div>Thanks Matt,<br><br></div>Your observations were indeed helpful. Grafting the output at all associated filters (especially the one in between resamplers) solved my issue. <br><br></div>Talking about grafting and pipelines, I have two additional questions:<br>
<br></div><div>(1) Is it ok to use grafting if minipipeline filters are constructed at GenerateData() -scope (vs. class members as suggested in the (old) manual). It seems to be.<br><br></div><div>(2) Are both codes below valid alternatives? Latter is not used as is (naturally), but in analogue after some processing of &#39;in.Get()&#39; values.<br>
<br></div><div>Thanks in advance,<br></div><div>-Vaaksiainen<br></div><div><br>void ::GenerateDataA() // AwesomeImageToImageFilter&lt;TImg,TImg&gt;<br>{<br>    itk::MyPrivateImageToImageFilter&lt;TImg,TImg&gt;        FilterType;<br>
    FilterType::Pointer filter = FilterType::New();<br>    filter-&gt;SetInput( this-&gt;GetInput() );<br>    filter-&gt;GraftOutput( this-&gt;GetOutput() );<br>    filter-&gt;Update();<br>    this-&gt;GraftOutput( filter-&gt;GetOutput() );<br>
}<br></div><div><br>void ::GenerateDataB() // AwesomeImageToImageFilter&lt;TImg,TImg&gt;<br>{<br>    itk::MyPrivateImageToImageFilter&lt;TImg,TImg&gt;        FilterType;<br>    FilterType::Pointer filter = FilterType::New();<br>
    filter-&gt;SetInput( this-&gt;GetInput() );<br>    filter-&gt;Update();<br>    <br>    typename TImg::RegionType region = this-&gt;GetOutput()-&gt;GetRequestedRegion();<br>    this-&gt;GetOutput()-&gt;SetBufferedRegion( region );<br>
    this-&gt;Allocate();<br>    <br>    itk::ImageRegionIterator&lt;TImg&gt; out( this-&gt;GetOutput(), region );<br>    itk::ImageRegionConstIterator&lt;TImg&gt; in( filter-&gt;GetOutput(), region );<br>    <br>    for (; !out.IsAtEnd(); ++out, ++in )<br>
    {<br>        out.Set( in.Get() );<br>    }<br>}<br><br><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/9/25 Matt McCormick <span dir="ltr">&lt;<a href="mailto:matt.mccormick@kitware.com" target="_blank">matt.mccormick@kitware.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Vaaksianinen,<br>
<br>
Two observations may be useful.<br>
<br>
  - The resampler is being told to use the reference image but the<br>
parameters of the output image are also being set at the same time.<br>
One or the other should be used -- in this case the reference image<br>
should not be used.<br>
  - When writing a composite filter, it is important to use the Graft<br>
methods. -- see the Software Guide on writing a composite filter.<br>
<br>
Hope this helps,<br>
Matt<br>
<div><div class="h5"><br>
On Wed, Sep 25, 2013 at 8:02 AM, Vaaksiainen &lt;<a href="mailto:vaaksiainen@gmail.com">vaaksiainen@gmail.com</a>&gt; wrote:<br>
&gt; Hello yall<br>
&gt;<br>
&gt; I&#39;m suffering with ResampleImageFilter. In particular, upsampling an image<br>
&gt; produces all zero image (or whatever defaultpixelvalue happens to be) and I<br>
&gt; just can&#39;t figure out why?<br>
&gt;<br>
&gt; Basically, I&#39;m writing a composite filter, which downsamples the image for<br>
&gt; some internal purpose as follows (purposely using linear interpolation, not<br>
&gt; Gaussian):<br>
&gt;<br>
&gt; Some times I explicitly added IdentityTransform and<br>
&gt; LinearInterpolateImageFunction, but as far as I know, they are defaults so I<br>
&gt; left them out. If I comment out pyramid up (preprocessor if statement), then<br>
&gt; I get the actual downsampled image from my filter as output. So the only<br>
&gt; problem is upsampling.<br>
&gt;<br>
&gt; I have examined the output from &#39;filter&#39; and it has spacing as expected<br>
&gt; (twice the size of original input), origin at zero, directions following<br>
&gt; cartesian axes and image size half the original. So nothing there... As you<br>
&gt; see, have tried have tried multiple combinations for pyrup parameters, none<br>
&gt; seems working.<br>
&gt;<br>
&gt; Help appreciated.<br>
&gt;<br>
&gt; Best<br>
&gt; -Vaaksiainen<br>
&gt;<br>
&gt; BTW, using ITK 4.4.1, Visual Studio 9, Windows 7 x64.<br>
&gt;<br>
&gt; ******<br>
&gt;<br>
&gt; typedef itk::ResampleImageFilter&lt;<br>
&gt; TImage, TImage, float &gt;        ResamplerType;<br>
&gt; typedef MyOwnImageToImageFilter&lt;TImage,TImage&gt;<br>
&gt; MyOwnImageToImageFilter;<br>
&gt;<br>
&gt; typename TImage::SpacingType spacing = this-&gt;GetInput()-&gt;GetSpacing();<br>
&gt; typename TImage::SizeType size =<br>
&gt; this-&gt;GetOutput()-&gt;GetRequestedRegion().GetSize();<br>
&gt;<br>
&gt; // e.g. m_Decimation = .5<br>
&gt; for ( unsigned int i = 0; i &lt; TImage::ImageDimension; ++i)<br>
&gt; {<br>
&gt;     spacing[i] /= m_Decimation;<br>
&gt;     size[i] = (unsigned int)( (double)size[i] * m_Decimation );<br>
&gt; }<br>
&gt;<br>
&gt; ResamplerType::Pointer pyrdown = ResamplerType::New();<br>
&gt; pyrdown-&gt;SetOutputSpacing( spacing );<br>
&gt; pyrdown-&gt;SetSize( size );<br>
&gt; pyrdown-&gt;SetInput( this-&gt;GetInput() );<br>
&gt;<br>
&gt; MyOwnImageToImageFilter::Pointer filter = MyOwnImageToImageFilter::New();<br>
&gt; // set filter parameters<br>
&gt; filter-&gt;SetInput( pyrdown-&gt;GetOutput() );<br>
&gt;<br>
&gt; #if 1<br>
&gt; ResamplerType::Pointer pyrup = ResamplerType::New();<br>
&gt; //pyrup-&gt;SetOutputSpacing( this-&gt;GetInput()-&gt;GetSpacing() );<br>
&gt; pyrup-&gt;SetUseReferenceImage( 1 );<br>
&gt; pyrup-&gt;SetReferenceImage( this-&gt;GetInput() );<br>
&gt; //pyrup-&gt;SetOutputStartIndex( roi.GetIndex() );<br>
&gt; //pyrup-&gt;SetSize( this-&gt;GetOutput()-&gt;GetRequestedRegion().GetSize() );<br>
&gt; pyrup-&gt;SetInput( filter-&gt;GetOutput() );<br>
&gt; pyrup-&gt;SetDefaultPixelValue( 14.0f );<br>
&gt; #else<br>
&gt; MyOwnImageToImageFilter::Pointer pyrup = filter;<br>
&gt; #endif<br>
&gt;<br>
&gt; pyrup-&gt;Update();<br>
&gt;<br>
&gt; this-&gt;SetNthOutput( 0, pyrup-&gt;GetOutput() );<br>
&gt;<br>
</div></div>&gt; _____________________________________<br>
&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;<br>
&gt; Visit other Kitware open-source projects at<br>
&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;<br>
&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt; <a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
&gt;<br>
&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;<br>
&gt; Follow this link to subscribe/unsubscribe:<br>
&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;<br>
</blockquote></div><br></div>