<div>Dear All,</div>  <div>I am a new user of ITK. I am trying to read and and write image files using the ITK and Cmakesetup (for configuring).I successfully run the helloWorld code(to test the itk is running properly). </div>  <div>I have copied the <FONT face=Courier size=2></div>  <div align=left>Examples/IO/ImageReadWrite.cxx</FONT><FONT face="Times New Roman" size=2>. </FONT></div>  <div align=left><FONT face="Times New Roman" size=2><FONT size=4>file to another directory "ImageReadWrite". I have created&nbsp;the following &nbsp;'CMakeLists.txt' file in the same directory.</FONT></div></FONT>  <div><BR>PROJECT(ImageReadWrite)<BR># Find ITK.<BR>FIND_PACKAGE(ITK REQUIRED)<BR>IF(ITK_FOUND)<BR>&nbsp; INCLUDE(${ITK_USE_FILE})<BR>ENDIF(ITK_FOUND)<BR>ADD_EXECUTABLE(ImageReadWrite ImageReadWrite.cxx )<BR>TARGET_LINK_LIBRARIES(ImageReadWrite&nbsp; ITKIO)</div>  <div>......</div>  <div>I have modified the ImageReadWrite.cxx code in the following place</div>  <div>&nbsp;</div> 
 <div>reader-&gt;SetFileName( "BrainProtonDensitySlice.png"&nbsp; );<BR>&nbsp; writer-&gt;SetFileName( "BrainProtonDensitySlice_w.png" );</div>  <div>&nbsp;</div>  <div>I have also copied the image file "BrainProtonDensitySlice.png" to the same directory.</div>  <div>&nbsp;</div>  <div>Now using the CMakeSetUp, I configured it (source and binary build directing are same). I got the ImageReadWrite.dsw workspace. I opened this in Visual Studio 6 and built all files successfully. I run the ImageReadWrite.exe file. It gave following output</div>  <div>"</div>  <div>usage:</div>  <div>C:\...\ImageReadWrite\Debug\ImageReadWrite.exe inputImageFile <A>outputImageFile</A>"</div>  <div>&nbsp;</div>  <div>The program is not reading and writing the image. Please suggest what went wrong and help me correcting the problem</div>  <div>Thanks</div>  <div>KPatra</div>  <div>Singapore</div> 
 <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>  <div><B><I></I></B>&nbsp;</div>  <div><B><I></I></B>&nbsp;</div>  <div><B><I></I></B>&nbsp;</div>  <div><B><I>insight-users-request@itk.org</I></B> wrote:</div>  <BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">Send Insight-users mailing list submissions to<BR>insight-users@itk.org<BR><BR>To subscribe or unsubscribe via the World Wide Web, visit<BR>http://www.itk.org/mailman/listinfo/insight-users<BR>or, via email, send a message with subject or body 'help' to<BR>insight-users-request@itk.org<BR><BR>You can reach the person managing the list at<BR>insight-users-owner@itk.org<BR><BR>When replying, please edit your Subject line so it is more specific<BR>than "Re: Contents of Insight-users digest..."<BR><BR><BR>Today's Topics:<BR><BR>1. locally rigid transformations
 (William Am)<BR>2. Re: How to register 2D RGB images (Jinzhong Yang)<BR><BR><BR>----------------------------------------------------------------------<BR><BR>Message: 1<BR>Date: Mon, 14 Jan 2008 08:39:37 -0800 (PST)<BR>From: William Am <MARIAN88@LIVE.CA><BR>Subject: [Insight-users] locally rigid transformations<BR>To: insight-users@itk.org<BR>Message-ID: &lt;14805008.post@talk.nabble.com&gt;<BR>Content-Type: text/plain; charset=us-ascii<BR><BR><BR>Hi all,<BR><BR>How might one begin implementing propagation of locally rigid<BR>transformations as described in the work below?<BR><BR>http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1616288<BR><BR>Thanks,<BR>Will<BR>-- <BR>View this message in context: http://www.nabble.com/locally-rigid-transformations-tp14805008p14805008.html<BR>Sent from the ITK - Users mailing list archive at Nabble.com.<BR><BR><BR><BR>------------------------------<BR><BR>Message: 2<BR>Date: Mon, 14 Jan 2008 11:53:44 -0500<BR>From: "Jinzhong Yang"
 <JINZHONG.YANG@IEEE.ORG><BR>Subject: Re: [Insight-users] How to register 2D RGB images<BR>To: "chunfang wang" <WCHUNFANG@GMAIL.COM><BR>Cc: "insight-users@itk.org" <INSIGHT-USERS@ITK.ORG><BR>Message-ID:<BR>&lt;9190305b0801140853w26f0491tbae43b21fe2051c3@mail.gmail.com&gt;<BR>Content-Type: text/plain; charset="iso-8859-1"<BR><BR>I guess the problem is the metric you used to compare two RGB pixels. You<BR>are not able to use class itkMeanSquaresImageToImageMetric to compare two<BR>pixels in vector format. There is an example to register two RGB images:<BR><BR><BR>http://www.seas.upenn.edu/~jtduda/itkvector.html<BR><BR><BR>Good luck,<BR>Jinzhong<BR><BR><BR>On Jan 14, 2008 9:26 AM, chunfang wang <WCHUNFANG@GMAIL.COM>wrote:<BR><BR>&gt; Hello Luis,<BR>&gt;<BR>&gt; I am a new user of itk, but no one in my lab have used it. So, when some<BR>&gt; problems comes, I am so sad.<BR>&gt; Looking forward of your help~~~<BR>&gt;<BR>&gt; I have some problems in the registration of RGB
 images.<BR>&gt; Now I explain my problems in detail:<BR>&gt;<BR>&gt; my work is to register two RGB images using the CenteredRigid2DTransform<BR>&gt; I have set the VectorResampleFilter and VectorInterpolater<BR>&gt; but still the complier error is<BR>&gt;<BR>&gt; d:\program files\itk\insighttoolkit-3.4.0\code\common\itkCovariantVector.h(75)<BR>&gt; : error C2039: 'RealType' : is not a member of 'itk::NumericTraits<T>'<BR>&gt; 1&gt; with<BR>&gt; 1&gt; [<BR>&gt; 1&gt; T=itk::RGBPixel<DOUBLE><BR>&gt; 1&gt; ]<BR>&gt; 1&gt; D:\program files\itk\InsightToolkit-<BR>&gt; 3.4.0\Code\Common\itkPixelTraits.h(39) : see reference to class template<BR>&gt; instantiation 'itk::CovariantVector<T,NVECTORDIMENSION>' being compiled<BR>&gt; 1&gt; with<BR>&gt; 1&gt; [<BR>&gt; 1&gt; T=itk::RGBPixel<DOUBLE>,<BR>&gt; 1&gt; NVectorDimension=2<BR>&gt; 1&gt; ]<BR>&gt;<BR>&gt; I don't know how to settle this problem, please give me some help!<BR>&gt; thanks very much<BR>&gt;<BR>&gt; my code is just
 refied the examples in itk<BR>&gt;<BR>&gt; #include "itkImageRegistrationMethod.h"<BR>&gt; #include "itkMeanSquaresImageToImageMetric.h"<BR>&gt; #include "itkVectorLinearInterpolateImageFunction.h"<BR>&gt; #include "itkRegularStepGradientDescentOptimizer.h "<BR>&gt; #include "itkImage.h"<BR>&gt; #include "itkRGBPixel.h"<BR>&gt; #include "itkCenteredRigid2DTransform.h"<BR>&gt;<BR>&gt; #include "itkImageFileReader.h"<BR>&gt; #include "itkImageFileWriter.h"<BR>&gt;<BR>&gt; #include "itkVectorResampleImageFilter.h"<BR>&gt; #include "itkSubtractImageFilter.h"<BR>&gt; #include "itkRescaleIntensityImageFilter.h"<BR>&gt;<BR>&gt; int main( int argc, char *argv[] )<BR>&gt; {<BR>&gt; if( argc &lt; 4 )<BR>&gt; {<BR>&gt; std::cerr &lt;&lt; "Missing Parameters " &lt;&lt; std::endl;<BR>&gt; std::cerr &lt;&lt; "Usage: " &lt;&lt; argv[0];<BR>&gt; std::cerr &lt;&lt; " fixedImageFile movingImageFile ";<BR>&gt; std::cerr &lt;&lt; " outputImagefile [differenceAfterRegistration] ";<BR>&gt;
 std::cerr &lt;&lt; " [differenceBeforeRegistration] ";<BR>&gt; std::cerr &lt;&lt; " [initialStepLength] "&lt;&lt; std::endl;<BR>&gt; return EXIT_FAILURE;<BR>&gt; }<BR>&gt;<BR>&gt; const unsigned int Dimension = 2;<BR>&gt; typedef itk::RGBPixel&lt; unsigned char &gt; PixelType;<BR>&gt;<BR>&gt; typedef itk::Image&lt; PixelType, Dimension &gt; FixedImageType;<BR>&gt; typedef itk::Image&lt; PixelType, Dimension &gt; MovingImageType;<BR>&gt; typedef itk::CenteredRigid2DTransform&lt; double &gt; TransformType;<BR>&gt;<BR>&gt; typedef itk::RegularStepGradientDescentOptimizer OptimizerType;<BR>&gt; typedef itk::MeanSquaresImageToImageMetric&lt;<BR>&gt; FixedImageType,<BR>&gt; MovingImageType &gt; MetricType;<BR>&gt; typedef itk:: VectorLinearInterpolateImageFunction&lt;<BR>&gt; MovingImageType,<BR>&gt; double &gt; InterpolatorType;<BR>&gt; typedef itk::ImageRegistrationMethod&lt;<BR>&gt; FixedImageType,<BR>&gt; MovingImageType &gt; RegistrationType;<BR>&gt;<BR>&gt;
 MetricType::Pointer metric = MetricType::New();<BR>&gt; OptimizerType::Pointer optimizer = OptimizerType::New();<BR>&gt; InterpolatorType::Pointer interpolator = InterpolatorType::New();<BR>&gt; RegistrationType::Pointer registration = RegistrationType::New();<BR>&gt;<BR>&gt; registration-&gt;SetMetric( metric );<BR>&gt; registration-&gt;SetOptimizer( optimizer );<BR>&gt; registration-&gt;SetInterpolator( interpolator );<BR>&gt;<BR>&gt;<BR>&gt; TransformType::Pointer transform = TransformType::New();<BR>&gt; registration-&gt;SetTransform( transform );<BR>&gt;<BR>&gt;<BR>&gt; typedef itk::ImageFileReader&lt; FixedImageType &gt; FixedImageReaderType;<BR>&gt; typedef itk::ImageFileReader&lt; MovingImageType &gt; MovingImageReaderType;<BR>&gt;<BR>&gt; FixedImageReaderType::Pointer fixedImageReader =<BR>&gt; FixedImageReaderType::New();<BR>&gt; MovingImageReaderType::Pointer movingImageReader =<BR>&gt; MovingImageReaderType::New();<BR>&gt;<BR>&gt;
 fixedImageReader-&gt;SetFileName( argv[1] );<BR>&gt; movingImageReader-&gt;SetFileName( argv[2] );<BR>&gt;<BR>&gt;<BR>&gt; registration-&gt;SetFixedImage( fixedImageReader-&gt;GetOutput() );<BR>&gt; registration-&gt;SetMovingImage( movingImageReader-&gt;GetOutput() );<BR>&gt; fixedImageReader-&gt;Update();<BR>&gt;<BR>&gt; registration-&gt;SetFixedImageRegion(<BR>&gt; fixedImageReader-&gt;GetOutput()-&gt;GetBufferedRegion() );<BR>&gt; fixedImageReader-&gt;Update();<BR>&gt; movingImageReader-&gt;Update();<BR>&gt;<BR>&gt; typedef FixedImageType::SpacingType SpacingType;<BR>&gt; typedef FixedImageType::PointType OriginType;<BR>&gt; typedef FixedImageType::RegionType RegionType;<BR>&gt; typedef FixedImageType::SizeType SizeType;<BR>&gt; FixedImageType::Pointer fixedImage = fixedImageReader-&gt;GetOutput();<BR>&gt;<BR>&gt; const SpacingType fixedSpacing = fixedImage-&gt;GetSpacing();<BR>&gt; const OriginType fixedOrigin = fixedImage-&gt;GetOrigin();<BR>&gt; const RegionType
 fixedRegion = fixedImage-&gt;GetLargestPossibleRegion();<BR>&gt; const SizeType fixedSize = fixedRegion.GetSize();<BR>&gt;<BR>&gt; TransformType::InputPointType centerFixed;<BR>&gt;<BR>&gt; centerFixed[0] = fixedOrigin[0] + fixedSpacing[0] * fixedSize[0] / 2.0;<BR>&gt; centerFixed[1] = fixedOrigin[1] + fixedSpacing[1] * fixedSize[1] / 2.0;<BR>&gt;<BR>&gt; MovingImageType::Pointer movingImage = movingImageReader-&gt;GetOutput();<BR>&gt;<BR>&gt; const SpacingType movingSpacing = movingImage-&gt;GetSpacing();<BR>&gt; const OriginType movingOrigin = movingImage-&gt;GetOrigin();<BR>&gt; const RegionType movingRegion =<BR>&gt; movingImage-&gt;GetLargestPossibleRegion();<BR>&gt; const SizeType movingSize = movingRegion.GetSize();<BR>&gt;<BR>&gt; TransformType::InputPointType centerMoving;<BR>&gt;<BR>&gt; centerMoving[0] = movingOrigin[0] + movingSpacing[0] * movingSize[0] /<BR>&gt; 2.0;<BR>&gt; centerMoving[1] = movingOrigin[1] + movingSpacing[1] * movingSize[1] /<BR>&gt;
 2.0;<BR>&gt;<BR>&gt; transform-&gt;SetCenter( centerFixed );<BR>&gt; transform-&gt;SetTranslation( centerMoving - centerFixed );<BR>&gt; transform-&gt;SetAngle( 0.0 );<BR>&gt;<BR>&gt;<BR>&gt; registration-&gt;SetInitialTransformParameters( transform-&gt;GetParameters()<BR>&gt; );<BR>&gt;<BR>&gt; // Software Guide : BeginCodeSnippet<BR>&gt; typedef OptimizerType::ScalesType OptimizerScalesType;<BR>&gt; OptimizerScalesType optimizerScales( transform-&gt;GetNumberOfParameters()<BR>&gt; );<BR>&gt; const double translationScale = 1.0 / 1000.0;<BR>&gt;<BR>&gt; optimizerScales[0] = 1.0;<BR>&gt; optimizerScales[1] = translationScale;<BR>&gt; optimizerScales[2] = translationScale;<BR>&gt; optimizerScales[3] = translationScale;<BR>&gt; optimizerScales[4] = translationScale;<BR>&gt;<BR>&gt; optimizer-&gt;SetScales( optimizerScales );<BR>&gt;<BR>&gt; double initialStepLength = 0.1;<BR>&gt; // Software Guide : EndCodeSnippet<BR>&gt;<BR>&gt; if( argc &gt; 6 )<BR>&gt; {<BR>&gt;
 initialStepLength = atof( argv[6] );<BR>&gt; }<BR>&gt;<BR>&gt; // Software Guide : BeginCodeSnippet<BR>&gt; optimizer-&gt;SetRelaxationFactor( 0.6 );<BR>&gt; optimizer-&gt;SetMaximumStepLength( initialStepLength );<BR>&gt; optimizer-&gt;SetMinimumStepLength( 0.001 );<BR>&gt; optimizer-&gt;SetNumberOfIterations( 200 );<BR>&gt; // Software Guide : EndCodeSnippet<BR>&gt;<BR>&gt;<BR>&gt; // Create the Command observer and register it with the optimizer.<BR>&gt; //<BR>&gt; CommandIterationUpdate::Pointer observer = CommandIterationUpdate::New();<BR>&gt; optimizer-&gt;AddObserver( itk::IterationEvent(), observer );<BR>&gt;<BR>&gt; try<BR>&gt; {<BR>&gt; registration-&gt;StartRegistration();<BR>&gt; }<BR>&gt; catch( itk::ExceptionObject &amp; err )<BR>&gt; {<BR>&gt; std::cerr &lt;&lt; "ExceptionObject caught !" &lt;&lt; std::endl;<BR>&gt; std::cerr &lt;&lt; err &lt;&lt; std::endl;<BR>&gt; return EXIT_FAILURE;<BR>&gt; }<BR>&gt;<BR>&gt; OptimizerType::ParametersType finalParameters
 =<BR>&gt; registration-&gt;GetLastTransformParameters();<BR>&gt;<BR>&gt; const double finalAngle = finalParameters[0];<BR>&gt; const double finalRotationCenterX = finalParameters[1];<BR>&gt; const double finalRotationCenterY = finalParameters[2];<BR>&gt; const double finalTranslationX = finalParameters[3];<BR>&gt; const double finalTranslationY = finalParameters[4];<BR>&gt;<BR>&gt; const unsigned int numberOfIterations = optimizer-&gt;GetCurrentIteration();<BR>&gt;<BR>&gt; const double bestValue = optimizer-&gt;GetValue();<BR>&gt;<BR>&gt; typedef itk::VectorResampleImageFilter&lt;<BR>&gt; MovingImageType,<BR>&gt; FixedImageType &gt; ResampleFilterType;<BR>&gt;<BR>&gt; TransformType::Pointer finalTransform = TransformType::New();<BR>&gt;<BR>&gt; finalTransform-&gt;SetParameters( finalParameters );<BR>&gt;<BR>&gt; ResampleFilterType::Pointer resample = ResampleFilterType::New();<BR>&gt;<BR>&gt; resample-&gt;SetTransform( finalTransform );<BR>&gt; resample-&gt;SetInput(
 movingImageReader-&gt;GetOutput() );<BR>&gt;<BR>&gt; resample-&gt;SetSize( fixedImage-&gt;GetLargestPossibleRegion().GetSize() );<BR>&gt; resample-&gt;SetOutputOrigin( fixedImage-&gt;GetOrigin() );<BR>&gt; resample-&gt;SetOutputSpacing( fixedImage-&gt;GetSpacing() );<BR>&gt; resample-&gt;SetDefaultPixelValue( 100 );<BR>&gt;<BR>&gt; typedef itk::ImageFileWriter&lt; FixedImageType &gt; WriterFixedType;<BR>&gt;<BR>&gt; WriterFixedType::Pointer writer = WriterFixedType::New();<BR>&gt;<BR>&gt; writer-&gt;SetFileName( argv[3] );<BR>&gt;<BR>&gt; writer-&gt;SetInput( resample-&gt;GetOutput() );<BR>&gt;<BR>&gt; try<BR>&gt; {<BR>&gt; writer-&gt;Update();<BR>&gt; }<BR>&gt; catch( itk::ExceptionObject &amp; excp )<BR>&gt; {<BR>&gt; std::cerr &lt;&lt; "ExceptionObject while writing the resampled image !" &lt;&lt;<BR>&gt; std::endl;<BR>&gt; std::cerr &lt;&lt; excp &lt;&lt; std::endl;<BR>&gt; return EXIT_FAILURE;<BR>&gt; }<BR>&gt; }<BR>&gt;<BR>&gt;
 _______________________________________________<BR>&gt; Insight-users mailing list<BR>&gt; Insight-users@itk.org<BR>&gt; http://www.itk.org/mailman/listinfo/insight-users<BR>&gt;<BR>&gt;<BR>-------------- next part --------------<BR>An HTML attachment was scrubbed...<BR>URL: http://public.kitware.com/pipermail/insight-users/attachments/20080114/e938b65f/attachment-0001.html<BR><BR>------------------------------<BR><BR>_______________________________________________<BR>Insight-users mailing list<BR>Insight-users@itk.org<BR>http://www.itk.org/mailman/listinfo/insight-users<BR><BR><BR>End of Insight-users Digest, Vol 45, Issue 14<BR>*********************************************<BR></BLOCKQUOTE><BR><p>&#32;


      <!--5--><hr size=1></hr> Now you can chat without downloading messenger. <a href="http://in.rd.yahoo.com/tagline_webmessenger_5/*http://in.messenger.yahoo.com/webmessengerpromo.php">Click here</a> to know how.