I believe using vtkImageChangeInformation is the correct way to propagate changes of image spacing in a pipeline. See <a href="http://www.vtk.org/doc/nightly/html/classvtkImageChangeInformation.html" target="_blank">http://www.vtk.org/doc/nightly/html/classvtkImageChangeInformation.html</a>. If you just update the output of the reader, your changes will be overwritten when the object downstream from the reader requests data.<br>

<br>Plug a vtkImageChangeInformation object into your pipeline right after your reader. It&#39;ll look something like:<br><br>vtkImageChangeInformation *changer = vtkImageChangeInformation::New();<br>changer-&gt;SetOutputSpacing(xSpacing, ySpacing, zSpacing);<br>
changer-&gt;SetInputConnection(reader-&gt;GetOutputPort());<br>...<br>&nbsp;vtkImageReslice *reslice = vtkImageReslice::New();<br>
 &nbsp;reslice-&gt;SetInputConnection(changer-&gt;GetOutputPort());<br><br>Hope that helps,<br>Cory<br><br><div class="gmail_quote">On Mon, Nov 24, 2008 at 5:58 PM, Bartosz Wiklak <span dir="ltr">&lt;<a href="mailto:bwiklak@gmail.com">bwiklak@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Ok, I did it, and then:<br>
<br>
vtkImageReslice *reslice = vtkImageReslice::New();<br>
<br>
 &nbsp;reslice-&gt;SetInput(image);<br>
<br>
 &nbsp;reslice-&gt;SetOutputDimensionality(2);<br>
<br>
 &nbsp;reslice-&gt;SetResliceAxes(resliceAxes);<br>
<br>
 &nbsp;reslice-&gt;SetInterpolationModeToNearestNeighbor();<br>
<br>
Still my resulting image is stretched.<br>
<br>
(almost) the whole code:<br>
<div class="Ih2E3d"><br>
 &nbsp;vtkGDCMImageReader *reader = vtkGDCMImageReader::New();<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;std::string&gt; filenames;<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;gdcm::Directory d;<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;d.Load( &quot;/home/basiek/Dokumenty/dcms/testGLOWA/1&quot;, false );<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;filenames = d.GetFilenames();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;gdcm::IPPSorter s;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;s.SetComputeZSpacing( true );<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;s.SetZSpacingTolerance( 1e-2 );<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;bool b = s.Sort( filenames );<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if( !b )<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cerr &lt;&lt; &quot;Failed to sort:&quot; &lt;&lt; &quot;s&quot; &lt;&lt; std::endl;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return 1;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; &quot;Sorting succeeded:&quot; &lt;&lt; s.GetZSpacing() &lt;&lt; std::endl;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;//s.Print( std::cout );<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;const std::vector&lt;std::string&gt; &amp; sorted = s.GetFilenames();<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;vtkStringArray *files = vtkStringArray::New();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt; std::string &gt;::const_iterator it = sorted.begin();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;for( ; it != sorted.end(); ++it)<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;const std::string &amp;f = *it;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;files-&gt;InsertNextValue( f.c_str() );<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;reader-&gt;SetFileNames( files );<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;reader-&gt;Update();<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</div> &nbsp;// Calculate the center of the volume<br>
<br>
 &nbsp;reader-&gt;GetOutput()-&gt;UpdateInformation();<br>
<br>
 &nbsp;int extent[6];<br>
<br>
 &nbsp;double spacing[3];<br>
<br>
 &nbsp;double origin[3];<br>
<br>
 &nbsp;reader-&gt;GetOutput()-&gt;GetWholeExtent(extent);<br>
<br>
 &nbsp;reader-&gt;GetOutput()-&gt;GetSpacing(spacing);<br>
<br>
 &nbsp;reader-&gt;GetOutput()-&gt;GetOrigin(origin);<br>
<br>
<br>
<br>
 &nbsp;spacing[2] = 1.5;<br>
<div class="Ih2E3d"><br>
<br>
<br>
 &nbsp;vtkImageData* image = reader-&gt;GetOutput();<br>
<br>
 &nbsp;image-&gt;SetSpacing(spacing);<br>
<br>
<br>
<br>
<br>
<br>
</div>std::cout &lt;&lt; &quot;Sorting succeeded:&quot; &lt;&lt; spacing[2] &lt;&lt; std::endl;<br>
<br>
<br>
<br>
 &nbsp;double center[3];<br>
<br>
 &nbsp;center[0] = origin[0] + spacing[0] * 0.5 * (extent[0] + extent[1]);<br>
<br>
 &nbsp;center[1] = origin[1] + spacing[1] * 0.5 * (extent[2] + extent[3]);<br>
<br>
 &nbsp;center[2] = origin[2] + spacing[2] * 0.5 * (extent[4] + extent[5]);<br>
<br>
<br>
<br>
 &nbsp;// Matrices for axial, coronal, sagittal, oblique view orientations<br>
<br>
 &nbsp;static double axialElements[16] = {<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1, 0, 0, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, 1, 0, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, 0, 1, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, 0, 0, 1 };<br>
<br>
<br>
<br>
 &nbsp;static double coronalElements[16] = {<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1, 0, 0, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, 0, 1, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,-1, 0, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, 0, 0, 1 };<br>
<br>
<br>
<br>
 &nbsp;static double sagittalElements[16] = {<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, 0,-1, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1, 0, 0, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,-1, 0, 0,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, 0, 0, 1 };<br>
<br>
<br>
<br>
 &nbsp;//static double obliqueElements[16] = {<br>
<br>
 &nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; 1, 0, 0, 0,<br>
<br>
 &nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; 0, 0.866025, -0.5, 0,<br>
<br>
 &nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; 0, 0.5, 0.866025, 0,<br>
<br>
 &nbsp;// &nbsp; &nbsp; &nbsp; &nbsp; 0, 0, 0, 1 };<br>
<br>
<br>
<br>
 &nbsp;// Set the slice orientation<br>
<br>
 &nbsp;vtkMatrix4x4 *resliceAxes = vtkMatrix4x4::New();<br>
<br>
 &nbsp;resliceAxes-&gt;DeepCopy(coronalElements);<br>
<br>
 &nbsp;// Set the point through which to slice<br>
<br>
 &nbsp;resliceAxes-&gt;SetElement(0, 3, center[0]);<br>
<br>
 &nbsp;resliceAxes-&gt;SetElement(1, 3, center[1]);<br>
<br>
 &nbsp;resliceAxes-&gt;SetElement(2, 3, center[2]);<br>
<br>
<br>
<br>
 &nbsp;// Extract a slice in the desired orientation<br>
<br>
 &nbsp;vtkImageReslice *reslice = vtkImageReslice::New();<br>
<br>
 &nbsp;reslice-&gt;SetInput(image);<br>
<br>
 &nbsp;reslice-&gt;SetOutputDimensionality(2);<br>
<br>
 &nbsp;reslice-&gt;SetResliceAxes(resliceAxes);<br>
<br>
 &nbsp;reslice-&gt;SetInterpolationModeToNearestNeighbor();<br>
<br>
<br>
<br>
 &nbsp;// Create a greyscale lookup table<br>
<br>
 &nbsp;vtkLookupTable *table = vtkLookupTable::New();<br>
<br>
 &nbsp;table-&gt;SetRange(0, 200); // image intensity range<br>
<br>
 &nbsp;table-&gt;SetValueRange(0.0, 1.0); // from black to white<br>
<br>
 &nbsp;table-&gt;SetSaturationRange(0.0, 0.0); // no color saturation<br>
<br>
 &nbsp;table-&gt;SetRampToLinear();<br>
<br>
 &nbsp;table-&gt;Build();<br>
<br>
<br>
<br>
 &nbsp;// Map the image through the lookup table<br>
<br>
 &nbsp;vtkImageMapToColors *color = vtkImageMapToColors::New();<br>
<br>
 &nbsp;color-&gt;SetLookupTable(table);<br>
<br>
 &nbsp;color-&gt;SetInputConnection(reslice-&gt;GetOutputPort());<br>
<br>
<br>
<br>
 &nbsp;// Display the image<br>
<br>
 &nbsp;vtkImageActor *actor = vtkImageActor::New();<br>
<br>
 &nbsp;actor-&gt;SetInput(color-&gt;GetOutput());<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// The line definition<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;vtkLineSource *seeds = vtkLineSource::New();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seeds-&gt;SetPoint1(0.0,0.0,0.0);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seeds-&gt;SetPoint2(0.0,50.0,0.0);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seeds-&gt;SetResolution(20);<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// The Line Mapper<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;vtkPolyDataMapper *seedsMapper = vtkPolyDataMapper::New();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seedsMapper-&gt;SetInputConnection(seeds-&gt;GetOutputPort());<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// The line Actor<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;vtkActor *seedsActor = vtkActor::New();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seedsActor-&gt;SetMapper(seedsMapper);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seedsActor-&gt;GetProperty()-&gt;SetColor(1.0,1.0,1.0);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seedsActor-&gt;GetProperty()-&gt;SetRepresentationToPoints();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seedsActor-&gt;GetProperty()-&gt;SetOpacity(0.95);<br>
<br>
<br>
<br>
<br>
<br>
 &nbsp;vtkRenderer *renderer = vtkRenderer::New();<br>
<br>
 &nbsp;renderer-&gt;AddActor(actor);<br>
<br>
 &nbsp;renderer-&gt;AddActor(seedsActor);<br>
<br>
<br>
<br>
 &nbsp;vtkRenderWindow *window = vtkRenderWindow::New();<br>
<br>
 &nbsp;window-&gt;AddRenderer(renderer);<br>
<br>
<br>
<br>
 &nbsp;// Set up the interaction<br>
<br>
 &nbsp;vtkInteractorStyleImage *imageStyle = vtkInteractorStyleImage::New();<br>
<br>
 &nbsp;vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();<br>
<br>
 &nbsp;interactor-&gt;SetInteractorStyle(imageStyle);<br>
<br>
 &nbsp;window-&gt;SetInteractor(interactor);<br>
<br>
 &nbsp;window-&gt;Render();<br>
<br>
<br>
<br>
 &nbsp;vtkImageInteractionCallback *callback = vtkImageInteractionCallback::New();<br>
<br>
 &nbsp;callback-&gt;SetImageReslice(reslice);<br>
<br>
 &nbsp;callback-&gt;SetInteractor(interactor);<br>
<br>
<br>
<br>
 &nbsp;imageStyle-&gt;AddObserver(vtkCommand::MouseMoveEvent, callback);<br>
<br>
 &nbsp;imageStyle-&gt;AddObserver(vtkCommand::LeftButtonPressEvent, callback);<br>
<br>
 &nbsp;imageStyle-&gt;AddObserver(vtkCommand::LeftButtonReleaseEvent, callback);<br>
<br>
<br>
<br>
 &nbsp;// Start interaction<br>
<br>
 &nbsp;// The Start() method doesn&#39;t return until the window is closed by the user<br>
<br>
 &nbsp;interactor-&gt;Start();<br>
<br>
<br>
<br>
 &nbsp;// Clean up<br>
...<br>
<br>
What is wrong with it?<br>
<div><div></div><div class="Wj3C7c"><br>
<br>
<br>
On Mon, Nov 24, 2008 at 11:49 PM, Dominik Szczerba &lt;<a href="mailto:dominik@itis.ethz.ch">dominik@itis.ethz.ch</a>&gt; wrote:<br>
&gt; you need something like:<br>
&gt;<br>
&gt; vtkImageData* image = reader-&gt;GetOutput();<br>
&gt; image-&gt;SetSpacing(spacing);<br>
&gt; // check with image-&gt;GetSpacing(spacing);<br>
&gt;<br>
&gt; Dominik<br>
&gt;<br>
&gt; Bartosz Wiklak wrote:<br>
&gt;&gt;<br>
&gt;&gt; Oh, I&#39;m really NEW to VTK (2 weeks of heavy learning and some attempts<br>
&gt;&gt; before), so please be more specific.<br>
&gt;&gt; Why should I get mesh out, ist&#39;t it the same?:<br>
&gt;&gt;<br>
&gt;&gt; reader-&gt;GetOutput()-&gt;SetSpacing(...)<br>
&gt;&gt;<br>
&gt;&gt;&gt; mesh = reader-&gt;GetOutput();<br>
&gt;&gt;&gt; mesh-&gt;SetSpacing(...)<br>
&gt;&gt;<br>
&gt;&gt; ?<br>
&gt;&gt;<br>
&gt;&gt; What I should do further?<br>
&gt;&gt;<br>
&gt;&gt; Really thanks for kind help.<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Nov 24, 2008 at 11:37 PM, Dominik Szczerba &lt;<a href="mailto:dominik@itis.ethz.ch">dominik@itis.ethz.ch</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Fist of all get the mesh out of the reader:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; mesh = reader-&gt;GetOutput();<br>
&gt;&gt;&gt; mesh-&gt;SetSpacing(...)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Dominik<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Bartosz Wiklak wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Hi, thanks for answear<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; If I understand, you suggested to use reader-&gt;Update() or<br>
&gt;&gt;&gt;&gt; reader-&gt;GetOutput()-&gt;Update().<br>
&gt;&gt;&gt;&gt; It doesn&#39;t work for me, I still can see that spacing is wrong.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I&#39;m not sure, but after some actions UpdateInformation is called<br>
&gt;&gt;&gt;&gt; automatically.<br>
&gt;&gt;&gt;&gt; Sample code:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;spacing[2] = 1.5;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;reader-&gt;GetOutput()-&gt;SetSpacing(spacing);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;reader-&gt;Update();<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;reader-&gt;GetOutput()-&gt;UpdateInformation();<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;reader-&gt;GetOutput()-&gt;GetSpacing(spacing);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; or<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;spacing[2] = 1.5;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;reader-&gt;GetOutput()-&gt;SetSpacing(spacing);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;reader-&gt;GetOutput()-&gt;Update();<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;reader-&gt;GetOutput()-&gt;UpdateInformation();<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &nbsp;reader-&gt;GetOutput()-&gt;GetSpacing(spacing);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Gives me spacing[2]==1.0<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; What can I do?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Bartek<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Mon, Nov 24, 2008 at 7:58 PM, Dominik Szczerba &lt;<a href="mailto:dominik@itis.ethz.ch">dominik@itis.ethz.ch</a>&gt;<br>
&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Haha! - see my recent posts.<br>
&gt;&gt;&gt;&gt;&gt; Try updating the pipeline with the correct spacing.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Dominik<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Bartosz Wiklak wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Hello,<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; I&#39;m using GDCM &nbsp;( vtkGDCMImageReader ) to read some MR data.<br>
&gt;&gt;&gt;&gt;&gt;&gt; I switched &nbsp;SetComputeZSpacing on, set SetZSpacingTolerance to 1e-2<br>
&gt;&gt;&gt;&gt;&gt;&gt; and used IPPSorter.<br>
&gt;&gt;&gt;&gt;&gt;&gt; This is my code:<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp;vtkGDCMImageReader *reader = vtkGDCMImageReader::New();<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;std::vector&lt;std::string&gt; filenames;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;gdcm::Directory d;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;d.Load( &quot;/home/basiek/Dokumenty/dcms/testGLOWA/1&quot;, false );<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;filenames = d.GetFilenames();<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;gdcm::IPPSorter s;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;s.SetComputeZSpacing( true );<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;s.SetZSpacingTolerance( 1e-2 );<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;bool b = s.Sort( filenames );<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;if( !b )<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cerr &lt;&lt; &quot;Failed to sort:&quot; &lt;&lt; &quot;s&quot; &lt;&lt; std::endl;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return 1;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; &quot;Sorting succeeded:&quot; &lt;&lt; s.GetZSpacing() &lt;&lt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; std::endl;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;//s.Print( std::cout );<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;const std::vector&lt;std::string&gt; &amp; sorted = s.GetFilenames();<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;vtkStringArray *files = vtkStringArray::New();<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;std::vector&lt; std::string &gt;::const_iterator it = sorted.begin();<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;for( ; it != sorted.end(); ++it)<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;{<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;const std::string &amp;f = *it;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;files-&gt;InsertNextValue( f.c_str() );<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;}<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;reader-&gt;SetFileNames( files );<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp; &nbsp;reader-&gt;Update();<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; I&#39;m getting zspacing 1.5 whitch is ok, but in the<br>
&gt;&gt;&gt;&gt;&gt;&gt; reader-&gt;GetOutput()-&gt;GetSpacing(spacing) I&#39;m getiing spacing[2]==1.0 !<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; What am I doing wrong?<br>
&gt;&gt;&gt;&gt;&gt;&gt; I tried to set pixelspacing manually but after<br>
&gt;&gt;&gt;&gt;&gt;&gt; reader-&gt;GetOutput()-&gt;UpdateInformation() I&#39;m with old, wrong value<br>
&gt;&gt;&gt;&gt;&gt;&gt; again.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; When I make reslice in coronal I have eyes shaped like ellipses. I<br>
&gt;&gt;&gt;&gt;&gt;&gt; tired to set pixelspacing for vtkImageReslice:<br>
&gt;&gt;&gt;&gt;&gt;&gt; reslice-&gt;SetOutputSpacing( spacing[0], spacing[1], 1.5 );<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; but this also makes no difference regardless<br>
&gt;&gt;&gt;&gt;&gt;&gt; reslice-&gt;GetOutput()-&gt;UpdateInformation().<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Can someone point me in the right direction?<br>
&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt; This is the private VTK discussion list.<br>
&gt;&gt;&gt;&gt;&gt;&gt; Please keep messages on-topic. Check the FAQ at:<br>
&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
&gt;&gt;&gt;&gt;&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt; Dominik Szczerba, PhD<br>
&gt;&gt;&gt;&gt;&gt; Computational Physics Group<br>
&gt;&gt;&gt;&gt;&gt; IT&#39;IS Foundation<br>
&gt;&gt;&gt;&gt;&gt; <a href="http://www.itis.ethz.ch" target="_blank">http://www.itis.ethz.ch</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Dominik Szczerba, PhD<br>
&gt;&gt;&gt; Computational Physics Group<br>
&gt;&gt;&gt; IT&#39;IS Foundation<br>
&gt;&gt;&gt; <a href="http://www.itis.ethz.ch" target="_blank">http://www.itis.ethz.ch</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Dominik Szczerba, PhD<br>
&gt; Computational Physics Group<br>
&gt; IT&#39;IS Foundation<br>
&gt; <a href="http://www.itis.ethz.ch" target="_blank">http://www.itis.ethz.ch</a><br>
&gt;<br>
_______________________________________________<br>
This is the private VTK discussion list.<br>
Please keep messages on-topic. Check the FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Cory Quammen<br>Center for Computer Integrated Systems for Microscopy and Manipulation (CISMM)<br>Department of Computer Science<br>University of North Carolina at Chapel Hill<br>
<a href="http://www.cs.unc.edu/~cquammen">http://www.cs.unc.edu/~cquammen</a><br>