<br><br><div class="gmail_quote">On Mon, Mar 1, 2010 at 4:34 PM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Richard,<br>
<br>
Thanks for letting us know what was wrong.<br>
<br>
--<br>
<br>
In general, you may find useful the &quot;ReferenceImage&quot;<br>
functionality of the ResampleImageFitler.<br>
<br></blockquote><div></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
It takes care of using the Origin, Spacing, Direction<br>
and number of pixels from a given image, instead<br>
of you having to specify all of them one by one.<br>
<br>
Providing a reference image is typically what you<br>
want to use after an image registration process.<br>
<br></blockquote><div><br><br>Oh, this is interesting.  Something like the following is common practice:<br><br><span style="font-family: courier new,monospace;">        typedef itk::ResampleImageFilter&lt; iImgType, oImgType &gt; ResampleFilterType;</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        ResampleFilterType::Pointer Resampler = ResampleFilterType::New();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        Resampler-&gt;SetTransform( transform );</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        Resampler-&gt;SetInterpolator( interpolator );</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        Resampler-&gt;SetInput( MovReader-&gt;GetOutput() );</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        Resampler-&gt;SetSize( FixInfo.size ); // assume this struct works</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        Resampler-&gt;SetOutputOrigin( FixReader-&gt;GetOutputOrigin() );</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        Resampler-&gt;SetOutputSpacing( FixReader-&gt;GetOutputSpacing() );</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        Resampler-&gt;SetOutputDirection( FixReader-&gt;GetOutputDirection() );</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        Resampler-&gt;SetDefaultPixelValue( 100 ); // highlight outside regions</span><br style="font-family: courier new,monospace;"><br>So that could be replaced with (?):<br>
<br><span style="font-family: courier new,monospace;">        typedef 
itk::ResampleImageFilter&lt; iImgType, oImgType &gt; ResampleFilterType;</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        
ResampleFilterType::Pointer Resampler = ResampleFilterType::New();</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        
Resampler-&gt;SetTransform( transform );</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        
Resampler-&gt;SetInterpolator( interpolator );</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        
Resampler-&gt;SetInput( MovReader-&gt;GetOutput() );</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"></span><span style="font-family: courier new,monospace;">        Resampler-&gt;SetUseReferenceImage( true );</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">        Resampler-&gt;SetReferenceImage( FixReader-&gt;GetOutput() );</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;"></span><span style="font-family: courier new,monospace;"></span><span style="font-family: courier new,monospace;">        
Resampler-&gt;SetDefaultPixelValue( 100 ); // highlight outside regions</span><br style="font-family: courier new,monospace;">
<br><span style="font-family: courier new,monospace;"></span><br>Is that right?  This would resample the moving image from MovReader into the fixed image (based on size, origin, spacing, direction from the FixReader reference).<br>
<br>TIA,<br>Darren<br><br><br><br><br><br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
    Regards,<br>
<br>
<br>
          Luis<br>
<br>
<br>
-----------------------------------------------------------------<br>
<div><div></div><div class="h5">On Sun, Feb 28, 2010 at 7:10 PM, Richard Beare &lt;<a href="mailto:richard.beare@gmail.com">richard.beare@gmail.com</a>&gt; wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; I discovered what was missing:<br>
&gt;<br>
&gt; resampler-&gt;SetOutputStartIndex ( input-&gt;GetLargestPossibleRegion().GetIndex() );<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Fri, Feb 19, 2010 at 10:33 AM, Richard Beare &lt;<a href="mailto:richard.beare@gmail.com">richard.beare@gmail.com</a>&gt; wrote:<br>
&gt;&gt; OK,<br>
&gt;&gt; Here&#39;s a series of resampling tests:<br>
&gt;&gt; Test 1 produces the expected result, but tests 2 and 3 produce blank images.<br>
&gt;&gt;<br>
&gt;&gt; Test 1) Upsampling the original image:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Input image:<br>
&gt;&gt;<br>
&gt;&gt; Image (0x2f72570)<br>
&gt;&gt;  RTTI typeinfo:   itk::Image&lt;short, 3u&gt;<br>
&gt;&gt;  Reference Count: 3<br>
&gt;&gt;  Modified Time: 189<br>
&gt;&gt;  Debug: Off<br>
&gt;&gt;  Observers:<br>
&gt;&gt;    none<br>
&gt;&gt;  Source: (none)<br>
&gt;&gt;  Source output index:  0<br>
&gt;&gt;  Release Data: Off<br>
&gt;&gt;  Data Released: False<br>
&gt;&gt;  Global Release Data: Off<br>
&gt;&gt;  PipelineMTime: 0<br>
&gt;&gt;  UpdateMTime: 182<br>
&gt;&gt;  LargestPossibleRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [256, 176, 20]<br>
&gt;&gt;  BufferedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [256, 176, 20]<br>
&gt;&gt;  RequestedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [256, 176, 20]<br>
&gt;&gt;  Spacing: [1.25, 1.25, 6]<br>
&gt;&gt;  Origin: [-165.833, 127.35, 80.3368]<br>
&gt;&gt;  Direction:<br>
&gt;&gt; 0.989374 0 0.145394<br>
&gt;&gt; 0.026043 -0.983827 -0.177216<br>
&gt;&gt; -0.143043 -0.17912 0.973373<br>
&gt;&gt;<br>
&gt;&gt;  IndexToPointMatrix:<br>
&gt;&gt;  1.23672 0 0.872366<br>
&gt;&gt; 0.0325538 -1.22978 -1.0633<br>
&gt;&gt; -0.178804 -0.2239 5.84024<br>
&gt;&gt;<br>
&gt;&gt;  PointToIndexMatrix:<br>
&gt;&gt;  0.791499 0.0208344 -0.114434<br>
&gt;&gt; 1.17893e-08 -0.787062 -0.143296<br>
&gt;&gt; 0.0242324 -0.0295361 0.162229<br>
&gt;&gt;<br>
&gt;&gt;  PixelContainer:<br>
&gt;&gt;    ImportImageContainer (0x2f731b0)<br>
&gt;&gt;      RTTI typeinfo:   itk::ImportImageContainer&lt;unsigned long, short&gt;<br>
&gt;&gt;      Reference Count: 1<br>
&gt;&gt;      Modified Time: 179<br>
&gt;&gt;      Debug: Off<br>
&gt;&gt;      Observers:<br>
&gt;&gt;        none<br>
&gt;&gt;      Pointer: 0x3800000<br>
&gt;&gt;      Container manages memory: true<br>
&gt;&gt;      Size: 901120<br>
&gt;&gt;      Capacity: 901120<br>
&gt;&gt;<br>
&gt;&gt; Output Image:<br>
&gt;&gt;<br>
&gt;&gt; Image (0x2f74750)<br>
&gt;&gt;  RTTI typeinfo:   itk::Image&lt;short, 3u&gt;<br>
&gt;&gt;  Reference Count: 2<br>
&gt;&gt;  Modified Time: 245<br>
&gt;&gt;  Debug: Off<br>
&gt;&gt;  Observers:<br>
&gt;&gt;    none<br>
&gt;&gt;  Source: (none)<br>
&gt;&gt;  Source output index:  0<br>
&gt;&gt;  Release Data: Off<br>
&gt;&gt;  Data Released: False<br>
&gt;&gt;  Global Release Data: Off<br>
&gt;&gt;  PipelineMTime: 0<br>
&gt;&gt;  UpdateMTime: 238<br>
&gt;&gt;  LargestPossibleRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [256, 176, 40]<br>
&gt;&gt;  BufferedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [256, 176, 40]<br>
&gt;&gt;  RequestedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [256, 176, 40]<br>
&gt;&gt;  Spacing: [1.25, 1.25, 3]<br>
&gt;&gt;  Origin: [-165.833, 127.35, 80.3368]<br>
&gt;&gt;  Direction:<br>
&gt;&gt; 0.989374 0 0.145394<br>
&gt;&gt; 0.026043 -0.983827 -0.177216<br>
&gt;&gt; -0.143043 -0.17912 0.973373<br>
&gt;&gt;<br>
&gt;&gt;  IndexToPointMatrix:<br>
&gt;&gt;  1.23672 0 0.436183<br>
&gt;&gt; 0.0325538 -1.22978 -0.531649<br>
&gt;&gt; -0.178804 -0.2239 2.92012<br>
&gt;&gt;<br>
&gt;&gt;  PointToIndexMatrix:<br>
&gt;&gt;  0.791499 0.0208344 -0.114434<br>
&gt;&gt; 1.17893e-08 -0.787062 -0.143296<br>
&gt;&gt; 0.0484648 -0.0590721 0.324458<br>
&gt;&gt;<br>
&gt;&gt;  PixelContainer:<br>
&gt;&gt;    ImportImageContainer (0x2f74290)<br>
&gt;&gt;      RTTI typeinfo:   itk::ImportImageContainer&lt;unsigned long, short&gt;<br>
&gt;&gt;      Reference Count: 1<br>
&gt;&gt;      Modified Time: 236<br>
&gt;&gt;      Debug: Off<br>
&gt;&gt;      Observers:<br>
&gt;&gt;        none<br>
&gt;&gt;      Pointer: 0x39b8000<br>
&gt;&gt;      Container manages memory: true<br>
&gt;&gt;      Size: 1802240<br>
&gt;&gt;      Capacity: 1802240<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Test 2) Upsampling of the extracted image<br>
&gt;&gt;<br>
&gt;&gt; Input Image:Image (0x2f75540)<br>
&gt;&gt;  RTTI typeinfo:   itk::Image&lt;short, 3u&gt;<br>
&gt;&gt;  Reference Count: 2<br>
&gt;&gt;  Modified Time: 220<br>
&gt;&gt;  Debug: Off<br>
&gt;&gt;  Observers:<br>
&gt;&gt;    none<br>
&gt;&gt;  Source: (none)<br>
&gt;&gt;  Source output index:  0<br>
&gt;&gt;  Release Data: Off<br>
&gt;&gt;  Data Released: False<br>
&gt;&gt;  Global Release Data: Off<br>
&gt;&gt;  PipelineMTime: 0<br>
&gt;&gt;  UpdateMTime: 213<br>
&gt;&gt;  LargestPossibleRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [112, 93, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  BufferedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [112, 93, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  RequestedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [112, 93, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  Spacing: [1.25, 1.25, 6]<br>
&gt;&gt;  Origin: [-165.833, 127.35, 80.3368]<br>
&gt;&gt;  Direction:<br>
&gt;&gt; 0.989374 0 0.145394<br>
&gt;&gt; 0.026043 -0.983827 -0.177216<br>
&gt;&gt; -0.143043 -0.17912 0.973373<br>
&gt;&gt;<br>
&gt;&gt;  IndexToPointMatrix:<br>
&gt;&gt;  1.23672 0 0.872366<br>
&gt;&gt; 0.0325538 -1.22978 -1.0633<br>
&gt;&gt; -0.178804 -0.2239 5.84024<br>
&gt;&gt;<br>
&gt;&gt;  PointToIndexMatrix:<br>
&gt;&gt;  0.791499 0.0208344 -0.114434<br>
&gt;&gt; 1.17893e-08 -0.787062 -0.143296<br>
&gt;&gt; 0.0242324 -0.0295361 0.162229<br>
&gt;&gt;<br>
&gt;&gt;  PixelContainer:<br>
&gt;&gt;    ImportImageContainer (0x2f74330)<br>
&gt;&gt;      RTTI typeinfo:   itk::ImportImageContainer&lt;unsigned long, short&gt;<br>
&gt;&gt;      Reference Count: 1<br>
&gt;&gt;      Modified Time: 211<br>
&gt;&gt;      Debug: Off<br>
&gt;&gt;      Observers:<br>
&gt;&gt;        none<br>
&gt;&gt;      Pointer: 0x2eaf000<br>
&gt;&gt;      Container manages memory: true<br>
&gt;&gt;      Size: 32000<br>
&gt;&gt;      Capacity: 32000<br>
&gt;&gt;<br>
&gt;&gt; Output Image:<br>
&gt;&gt;<br>
&gt;&gt; Image (0x2f74890)<br>
&gt;&gt;  RTTI typeinfo:   itk::Image&lt;short, 3u&gt;<br>
&gt;&gt;  Reference Count: 2<br>
&gt;&gt;  Modified Time: 264<br>
&gt;&gt;  Debug: Off<br>
&gt;&gt;  Observers:<br>
&gt;&gt;    none<br>
&gt;&gt;  Source: (none)<br>
&gt;&gt;  Source output index:  0<br>
&gt;&gt;  Release Data: Off<br>
&gt;&gt;  Data Released: False<br>
&gt;&gt;  Global Release Data: Off<br>
&gt;&gt;  PipelineMTime: 0<br>
&gt;&gt;  UpdateMTime: 255<br>
&gt;&gt;  LargestPossibleRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [40, 40, 40]<br>
&gt;&gt;  BufferedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [40, 40, 40]<br>
&gt;&gt;  RequestedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [40, 40, 40]<br>
&gt;&gt;  Spacing: [1.25, 1.25, 3]<br>
&gt;&gt;  Origin: [-165.833, 127.35, 80.3368]<br>
&gt;&gt;  Direction:<br>
&gt;&gt; 0.989374 0 0.145394<br>
&gt;&gt; 0.026043 -0.983827 -0.177216<br>
&gt;&gt; -0.143043 -0.17912 0.973373<br>
&gt;&gt;<br>
&gt;&gt;  IndexToPointMatrix:<br>
&gt;&gt;  1.23672 0 0.436183<br>
&gt;&gt; 0.0325538 -1.22978 -0.531649<br>
&gt;&gt; -0.178804 -0.2239 2.92012<br>
&gt;&gt;<br>
&gt;&gt;  PointToIndexMatrix:<br>
&gt;&gt;  0.791499 0.0208344 -0.114434<br>
&gt;&gt; 1.17893e-08 -0.787062 -0.143296<br>
&gt;&gt; 0.0484648 -0.0590721 0.324458<br>
&gt;&gt;<br>
&gt;&gt;  PixelContainer:<br>
&gt;&gt;    ImportImageContainer (0x2f74a60)<br>
&gt;&gt;      RTTI typeinfo:   itk::ImportImageContainer&lt;unsigned long, short&gt;<br>
&gt;&gt;      Reference Count: 1<br>
&gt;&gt;      Modified Time: 253<br>
&gt;&gt;      Debug: Off<br>
&gt;&gt;      Observers:<br>
&gt;&gt;        none<br>
&gt;&gt;      Pointer: 0x2ebf000<br>
&gt;&gt;      Container manages memory: true<br>
&gt;&gt;      Size: 64000<br>
&gt;&gt;      Capacity: 64000<br>
&gt;&gt;<br>
&gt;&gt; Test 3) Feed extracted image through the same steps but leave spacing the same<br>
&gt;&gt;<br>
&gt;&gt; Image (0x2f75540)<br>
&gt;&gt;  RTTI typeinfo:   itk::Image&lt;short, 3u&gt;<br>
&gt;&gt;  Reference Count: 2<br>
&gt;&gt;  Modified Time: 220<br>
&gt;&gt;  Debug: Off<br>
&gt;&gt;  Observers:<br>
&gt;&gt;    none<br>
&gt;&gt;  Source: (none)<br>
&gt;&gt;  Source output index:  0<br>
&gt;&gt;  Release Data: Off<br>
&gt;&gt;  Data Released: False<br>
&gt;&gt;  Global Release Data: Off<br>
&gt;&gt;  PipelineMTime: 0<br>
&gt;&gt;  UpdateMTime: 213<br>
&gt;&gt;  LargestPossibleRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [112, 93, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  BufferedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [112, 93, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  RequestedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [112, 93, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  Spacing: [1.25, 1.25, 6]<br>
&gt;&gt;  Origin: [-165.833, 127.35, 80.3368]<br>
&gt;&gt;  Direction:<br>
&gt;&gt; 0.989374 0 0.145394<br>
&gt;&gt; 0.026043 -0.983827 -0.177216<br>
&gt;&gt; -0.143043 -0.17912 0.973373<br>
&gt;&gt;<br>
&gt;&gt;  IndexToPointMatrix:<br>
&gt;&gt;  1.23672 0 0.872366<br>
&gt;&gt; 0.0325538 -1.22978 -1.0633<br>
&gt;&gt; -0.178804 -0.2239 5.84024<br>
&gt;&gt;<br>
&gt;&gt;  PointToIndexMatrix:<br>
&gt;&gt;  0.791499 0.0208344 -0.114434<br>
&gt;&gt; 1.17893e-08 -0.787062 -0.143296<br>
&gt;&gt; 0.0242324 -0.0295361 0.162229<br>
&gt;&gt;<br>
&gt;&gt;  PixelContainer:<br>
&gt;&gt;    ImportImageContainer (0x2f74330)<br>
&gt;&gt;      RTTI typeinfo:   itk::ImportImageContainer&lt;unsigned long, short&gt;<br>
&gt;&gt;      Reference Count: 1<br>
&gt;&gt;      Modified Time: 211<br>
&gt;&gt;      Debug: Off<br>
&gt;&gt;      Observers:<br>
&gt;&gt;        none<br>
&gt;&gt;      Pointer: 0x2eaf000<br>
&gt;&gt;      Container manages memory: true<br>
&gt;&gt;      Size: 32000<br>
&gt;&gt;      Capacity: 32000<br>
&gt;&gt;<br>
&gt;&gt; Image (0x2f74890)<br>
&gt;&gt;  RTTI typeinfo:   itk::Image&lt;short, 3u&gt;<br>
&gt;&gt;  Reference Count: 2<br>
&gt;&gt;  Modified Time: 262<br>
&gt;&gt;  Debug: Off<br>
&gt;&gt;  Observers:<br>
&gt;&gt;    none<br>
&gt;&gt;  Source: (none)<br>
&gt;&gt;  Source output index:  0<br>
&gt;&gt;  Release Data: Off<br>
&gt;&gt;  Data Released: False<br>
&gt;&gt;  Global Release Data: Off<br>
&gt;&gt;  PipelineMTime: 0<br>
&gt;&gt;  UpdateMTime: 253<br>
&gt;&gt;  LargestPossibleRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  BufferedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  RequestedRegion:<br>
&gt;&gt;    Dimension: 3<br>
&gt;&gt;    Index: [0, 0, 0]<br>
&gt;&gt;    Size: [40, 40, 20]<br>
&gt;&gt;  Spacing: [1.25, 1.25, 6]<br>
&gt;&gt;  Origin: [-165.833, 127.35, 80.3368]<br>
&gt;&gt;  Direction:<br>
&gt;&gt; 0.989374 0 0.145394<br>
&gt;&gt; 0.026043 -0.983827 -0.177216<br>
&gt;&gt; -0.143043 -0.17912 0.973373<br>
&gt;&gt;<br>
&gt;&gt;  IndexToPointMatrix:<br>
&gt;&gt;  1.23672 0 0.872366<br>
&gt;&gt; 0.0325538 -1.22978 -1.0633<br>
&gt;&gt; -0.178804 -0.2239 5.84024<br>
&gt;&gt;<br>
&gt;&gt;  PointToIndexMatrix:<br>
&gt;&gt;  0.791499 0.0208344 -0.114434<br>
&gt;&gt; 1.17893e-08 -0.787062 -0.143296<br>
&gt;&gt; 0.0242324 -0.0295361 0.162229<br>
&gt;&gt;<br>
&gt;&gt;  PixelContainer:<br>
&gt;&gt;    ImportImageContainer (0x2f74a60)<br>
&gt;&gt;      RTTI typeinfo:   itk::ImportImageContainer&lt;unsigned long, short&gt;<br>
&gt;&gt;      Reference Count: 1<br>
&gt;&gt;      Modified Time: 251<br>
&gt;&gt;      Debug: Off<br>
&gt;&gt;      Observers:<br>
&gt;&gt;        none<br>
&gt;&gt;      Pointer: 0x2ebf000<br>
&gt;&gt;      Container manages memory: true<br>
&gt;&gt;      Size: 32000<br>
&gt;&gt;      Capacity: 32000<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Feb 17, 2010 at 2:04 AM, Luis Ibanez &lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt; wrote:<br>
&gt;&gt;&gt; Hi Richard,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If you set<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;          NewSpacing = inputSpacing,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Do you get as output an image<br>
&gt;&gt;&gt; that looks like the input image ?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; What are the values of<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; * inputSpacing ?<br>
&gt;&gt;&gt; * inputSize ?<br>
&gt;&gt;&gt; * inputOrigin ?<br>
&gt;&gt;&gt; * inputDirection ?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Please let us know,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;    Thanks<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;         Luis<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ------------------------------------------<br>
&gt;&gt;&gt; On Tue, Feb 16, 2010 at 1:21 AM, Richard Beare &lt;<a href="mailto:richard.beare@gmail.com">richard.beare@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt; I&#39;m using an obviously buggy resampling procedure to upsample a small<br>
&gt;&gt;&gt;&gt; image that has been extracted from a larger one, and hence has non<br>
&gt;&gt;&gt;&gt; zero origin information. My result is blank, so I&#39;m missing a setting<br>
&gt;&gt;&gt;&gt; somewhere, but don&#39;t have a clue as to what. Can anyone spot the<br>
&gt;&gt;&gt;&gt; problem?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; template  &lt;class RawIm&gt;<br>
&gt;&gt;&gt;&gt; typename RawIm::Pointer upsampleIm(typename RawIm::Pointer input,<br>
&gt;&gt;&gt;&gt; typename RawIm::SpacingType NewSpacing, int interp=1)<br>
&gt;&gt;&gt;&gt; {<br>
&gt;&gt;&gt;&gt;  const int dim = RawIm::ImageDimension;<br>
&gt;&gt;&gt;&gt;  typedef typename RawIm::PixelType PixelType;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  typedef typename itk::ResampleImageFilter&lt;RawIm, RawIm &gt;  ResampleFilterType;<br>
&gt;&gt;&gt;&gt;  typedef typename itk::IdentityTransform&lt; double, dim &gt;  TransformType;<br>
&gt;&gt;&gt;&gt;  typename ResampleFilterType::Pointer resampler = ResampleFilterType::New();<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  input-&gt;Update();<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  typename TransformType::Pointer transform = TransformType::New();<br>
&gt;&gt;&gt;&gt;  transform-&gt;SetIdentity();<br>
&gt;&gt;&gt;&gt;  resampler-&gt;SetTransform( transform );<br>
&gt;&gt;&gt;&gt;  typedef typename itk::LinearInterpolateImageFunction&lt;RawIm, double &gt;<br>
&gt;&gt;&gt;&gt;  LInterpolatorType;<br>
&gt;&gt;&gt;&gt;  typedef typename itk::NearestNeighborInterpolateImageFunction&lt;RawIm,<br>
&gt;&gt;&gt;&gt; double &gt;  NNInterpolatorType;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  typename ResampleFilterType::InterpolatorPointerType interpolator;<br>
&gt;&gt;&gt;&gt;  switch (interp)<br>
&gt;&gt;&gt;&gt;    {<br>
&gt;&gt;&gt;&gt;    case 0:<br>
&gt;&gt;&gt;&gt;      interpolator = NNInterpolatorType::New();<br>
&gt;&gt;&gt;&gt;      break;<br>
&gt;&gt;&gt;&gt;    case 1:<br>
&gt;&gt;&gt;&gt;      interpolator = LInterpolatorType::New();<br>
&gt;&gt;&gt;&gt;      break;<br>
&gt;&gt;&gt;&gt;    default:<br>
&gt;&gt;&gt;&gt;      std::cout &lt;&lt; &quot;Unsupported interpolator&quot; &lt;&lt; std::endl;<br>
&gt;&gt;&gt;&gt;    }<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  resampler-&gt;SetInterpolator( interpolator );<br>
&gt;&gt;&gt;&gt;  resampler-&gt;SetDefaultPixelValue( 0 );<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  const typename RawIm::SpacingType&amp; inputSpacing = input-&gt;GetSpacing();<br>
&gt;&gt;&gt;&gt;  typename RawIm::SpacingType spacing;<br>
&gt;&gt;&gt;&gt;  typename RawIm::SizeType   inputSize =<br>
&gt;&gt;&gt;&gt; input-&gt;GetLargestPossibleRegion().GetSize();<br>
&gt;&gt;&gt;&gt;  typename RawIm::SizeType   size;<br>
&gt;&gt;&gt;&gt;  typedef typename RawIm::SizeType::SizeValueType SizeValueType;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  for (int i = 0; i &lt; dim; i++)<br>
&gt;&gt;&gt;&gt;    {<br>
&gt;&gt;&gt;&gt;    float factor = inputSpacing[i]/NewSpacing[i];<br>
&gt;&gt;&gt;&gt;    size[i] = static_cast&lt; SizeValueType &gt;( inputSize[i] * factor );<br>
&gt;&gt;&gt;&gt;    }<br>
&gt;&gt;&gt;&gt;   std::cout &lt;&lt; inputSpacing &lt;&lt; NewSpacing &lt;&lt; std::endl;<br>
&gt;&gt;&gt;&gt;   std::cout &lt;&lt; inputSize &lt;&lt; size &lt;&lt; input-&gt;GetOrigin() &lt;&lt; std::endl;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  resampler-&gt;SetSize( size );<br>
&gt;&gt;&gt;&gt;  resampler-&gt;SetOutputSpacing( NewSpacing );<br>
&gt;&gt;&gt;&gt;  resampler-&gt;SetOutputOrigin( input-&gt;GetOrigin() );<br>
&gt;&gt;&gt;&gt;  resampler-&gt;SetOutputDirection(input-&gt;GetDirection());<br>
&gt;&gt;&gt;&gt;  resampler-&gt;SetInput(input);<br>
&gt;&gt;&gt;&gt;  typename RawIm::Pointer result = resampler-&gt;GetOutput();<br>
&gt;&gt;&gt;&gt;  result-&gt;Update();<br>
&gt;&gt;&gt;&gt;  result-&gt;DisconnectPipeline();<br>
&gt;&gt;&gt;&gt;  return(result);<br>
&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; //////////////////////////////////////////////////<br>
&gt;&gt;&gt;&gt; _____________________________________<br>
&gt;&gt;&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt;&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt;&gt;&gt; <a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt;&gt;&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt;&gt;&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
</div></div></blockquote></div><br>