<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">Hi,<br>&nbsp;<br>&nbsp; I am trying to read in a 3D deformationField.vtk file and apply it to a 3D image. To read the deformation field, I use ImageFileReader &lt;deformafieldType&gt;&nbsp; and then connect the output of this to the warper.<br><br>The code for this is available below.&nbsp; It seems to take forever to read the deformation field file.&nbsp; Even after 2 hours, the reading is not complete. What is going on ?&nbsp; Any clues ?<br><br>Thanks,<br>Emma<br><br><br>#if defined(_MSC_VER)<br>#pragma warning ( disable : 4786 )<br>#endif<br><br>#include "itkImageFileReader.h" <br>#include "itkImageFileWriter.h" <br><br>#include "itkImageRegionIterator.h"<br><br><br>#include "itkCastImageFilter.h"<br>#include
 "itkWarpImageFilter.h"<br>#include "itkLinearInterpolateImageFunction.h"<br><br>#include "itkSquaredDifferenceImageFilter.h"<br>#include "itkCheckerBoardImageFilter.h"<br>#include "itkTimeProbe.h"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>#include "itkImageRegionIteratorWithIndex.h"<br>#include "itkPointSet.h"<br>#include &lt;fstream&gt;<br><br><br><br>int main( int argc, char *argv[] )<br>{<br>&nbsp;&nbsp;&nbsp; if( argc &lt; 4 )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "Missing Parameters " &lt;&lt; std::endl;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "Usage: " &lt;&lt; argv[0];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; " fixedImagefile movingImageFile deformField.vtk ";<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; " outputImageFile " &lt;&lt; std::endl;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 1;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;
 <br>&nbsp;&nbsp;&nbsp; const unsigned int Dimension = 3;<br>&nbsp;&nbsp;&nbsp; typedef unsigned char PixelType;<br><br><br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; PixelType, Dimension &gt;&nbsp; FixedImageType;<br>&nbsp;&nbsp;&nbsp; typedef itk::ImageFileReader&lt; FixedImageType &gt; FixedImageReaderType;<br>&nbsp;&nbsp;&nbsp; FixedImageReaderType::Pointer fixedImageReader = FixedImageReaderType::New();<br>&nbsp;&nbsp;&nbsp; fixedImageReader-&gt;SetFileName( argv[1] );<br><br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; PixelType, Dimension &gt;&nbsp; MovingImageType;<br>&nbsp;&nbsp;&nbsp; typedef itk::ImageFileReader&lt; MovingImageType &gt; MovingImageReaderType;<br>&nbsp;&nbsp;&nbsp; MovingImageReaderType::Pointer movingImageReader = MovingImageReaderType::New();<br>&nbsp;&nbsp;&nbsp; movingImageReader-&gt;SetFileName( argv[2] );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef itk::Vector&lt; float, Dimension
 &gt;&nbsp;&nbsp;&nbsp; VectorPixelType;<br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt;&nbsp; VectorPixelType, Dimension &gt; DeformationFieldType;<br><br>&nbsp;&nbsp;&nbsp; typedef itk::ImageFileReader&lt; DeformationFieldType &gt;&nbsp; FieldReaderType;<br>&nbsp;&nbsp;&nbsp; FieldReaderType::Pointer fieldReader = FieldReaderType::New();<br><br>&nbsp;&nbsp;&nbsp; fieldReader-&gt;SetFileName( argv[3] );<br><br>&nbsp;&nbsp; <br>&nbsp;&nbsp; try {<br><br>&nbsp;&nbsp;&nbsp; fieldReader-&gt;Update();<br>&nbsp;&nbsp; }<br><br>&nbsp;&nbsp; catch ( itk::ExceptionObject &amp; err ) <br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "ExceptionObject caught !" &lt;&lt; std::endl; <br>&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; err &lt;&lt; std::endl; <br>&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; } <br><br><br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef itk::WarpImageFilter&lt;MovingImageType, MovingImageType,DeformationFieldType&nbsp;
 &gt;&nbsp;&nbsp;&nbsp;&nbsp; WarperType;<br>&nbsp;&nbsp;&nbsp; typedef itk::LinearInterpolateImageFunction&lt;MovingImageType, double&nbsp; &gt;&nbsp; InterpolatorType;<br>&nbsp;&nbsp;&nbsp; WarperType::Pointer warper = WarperType::New();<br>&nbsp;&nbsp;&nbsp; InterpolatorType::Pointer interpolator = InterpolatorType::New();<br>&nbsp;&nbsp;&nbsp; FixedImageType::Pointer fixedImage = fixedImageReader-&gt;GetOutput();<br><br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; warper-&gt;SetInput( movingImageReader-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; warper-&gt;SetInterpolator( interpolator );<br>&nbsp;&nbsp;&nbsp; warper-&gt;SetOutputSpacing( fixedImage-&gt;GetSpacing() );<br>&nbsp;&nbsp;&nbsp; warper-&gt;SetOutputOrigin( fixedImage-&gt;GetOrigin() );<br><br>&nbsp;&nbsp;&nbsp; warper-&gt;SetDeformationField( fieldReader-&gt;GetOutput() ); <br><br>&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef&nbsp; unsigned char&nbsp; OutputPixelType;<br>&nbsp;&nbsp;&nbsp; typedef
 itk::Image&lt; OutputPixelType, Dimension &gt; OutputImageType;<br>&nbsp;&nbsp;&nbsp; typedef itk::CastImageFilter&lt; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MovingImageType,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; OutputImageType &gt; CastFilterType;<br>&nbsp;&nbsp;&nbsp; typedef itk::ImageFileWriter&lt; OutputImageType &gt;&nbsp; WriterType;<br><br>&nbsp; <br>&nbsp;&nbsp;&nbsp; WriterType::Pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer =&nbsp; WriterType::New();<br>&nbsp;&nbsp;&nbsp; CastFilterType::Pointer&nbsp; caster =&nbsp; CastFilterType::New();<br><br>&nbsp;&nbsp;&nbsp; writer-&gt;SetFileName( argv[4] );<br><br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; caster-&gt;SetInput( warper-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; writer-&gt;SetInput( caster-&gt;GetOutput()&nbsp;&nbsp; );<br>&nbsp;&nbsp;&nbsp; writer-&gt;Update();<br><br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br><br></div></div><br>
      <hr size=1>Looking for last minute shopping deals? <a href="http://us.rd.yahoo.com/evt=51734/*http://tools.search.yahoo.com/newsearch/category.php?category=shopping"> 
Find them fast with Yahoo! Search.</a></body></html>