I have a program that uses ITK to read in a 3D Analyze format (.hdr, .img) image, uses the itkImageToVTKImageFilter, and writes two images out, one using a vtkXMLImageDataWriter, and the other using a vtkPolyDataWriter (after the image was passed through a vtkContourFilter).  The code snippet is pasted below.
<br><br>I then use another program to display these images.&nbsp; The polydata is surface rendered and the XML image is rendered as 3 orthogonal images (transverse, sagittal, and coronal).&nbsp; I have noticed that the polydata (X, Y, Z) locations returned from picking do not correspond to the same X, Y, Z locations in the orthogonal views.
<br><br>Is there a way that I can retrieve the transformation that has taken place somewhere between reading in the image and writing it back out as vtkPolyData so that I have a 2D-3D correspondence?<br><br>Any help is greatly appreciated, Thanks a bunch!
<br>-Jake<br><br>========================<br>...<br>&nbsp; typedef unsigned char PixelType;<br>&nbsp; const unsigned int Dimension = 3;<br><br>&nbsp; typedef itk::Image&lt; PixelType, Dimension &gt; ImageType;<br>&nbsp; typedef itk::ImageFileReader&lt; ImageType &gt; ReaderType;
<br>&nbsp; typedef itk::ImageToVTKImageFilter&lt; ImageType &gt;&nbsp; ConnectorFilterType;<br><br>&nbsp; ReaderType::Pointer reader&nbsp; = ReaderType::New();<br>&nbsp; ConnectorFilterType::Pointer connector = ConnectorFilterType::New();<br><br>
&nbsp; reader-&gt;SetFileName( argv[1] );<br>&nbsp; reader-&gt;Update();<br><br>&nbsp; connector-&gt;SetInput( reader-&gt;GetOutput() );<br><br>&nbsp; vtkXMLImageDataWriter * writer = vtkXMLImageDataWriter::New();<br>&nbsp; writer-&gt;SetInput( connector-&gt;GetOutput() );
<br>&nbsp; writer-&gt;SetFileName( argv[2] );<br>&nbsp; writer-&gt;Write();<br>&nbsp; writer-&gt;Delete();<br><br>&nbsp; vtkContourFilter * filter = vtkContourFilter::New();<br>&nbsp; filter-&gt;SetInput( connector-&gt;GetOutput() );<br>&nbsp; filter-&gt;SetValue( 0, 1 );
<br><br>&nbsp; vtkPolyDataWriter * pwriter = vtkPolyDataWriter::New();<br>&nbsp; pwriter-&gt;SetFileName( argv[3] );<br>&nbsp; pwriter-&gt;SetInput( filter-&gt;GetOutput() );<br>&nbsp; pwriter-&gt;Write();<br>&nbsp; pwriter-&gt;Delete();<br><br>&nbsp; filter-&gt;Delete();
<br>...<br>========================<br>