Jian,<br>Can you please try the same program with itkNiftiImageIO instead of itkAnalyzeImageIO? The nifti reader/writer should produce valid analyze files. We are looking at replacing itkAnalyzeImageIO&#39;s implementation with itkNiftiImageIO. Nifti is a file format with a substantial and active community. If we do this, we will keep the Analyze API.<br>
<br>Thanks,<br><br>Bill<br><br><div class="gmail_quote">On Thu, Feb 7, 2008 at 2:25 PM, Jian Wu &lt;<a href="mailto:eewujian@yahoo.com">eewujian@yahoo.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br>
I&#39;m doing image format conversion from other image types to Analyze 7.5. The program did not give me any error message. However I doubt it may not handle the image header information properly. The images I generated in Analyze 7.5 format can be viewed using MRIcro image viewer. But when I tried to opened it using Matlab function analyze75read, it gave me an error message &quot;Reference to non-existent field &#39;ImgDataType&#39;.&quot; I studies the ITK source code and found out the line 1128 of itkAnalyzeImageIO.cxx states:<br>

 &nbsp; &nbsp;switch( this-&gt;m_Hdr.dime.datatype)<br>
Here &quot;this-&gt;m_Hdr&quot; has not been filled with proper image information yet when the input image is not in Analyze image format. I think &quot;this-&gt;m_ComponentType&quot; should be referred instead. My test code is attached here. I used &quot;brainweb1e1a10f20.mha&quot; as the input image.<br>

<br>
Jian<br>
<br>
Command line:<br>
ImageReadWriteAnalyze brainweb1e1a10f20.mha brainweb1e1a10f20.img<br>
<br>
Source Code:<br>
<br>
/*=========================================================================<br>
<br>
 &nbsp;Program: &nbsp; Insight Segmentation &amp; Registration Toolkit<br>
 &nbsp;Module: &nbsp; &nbsp;$ ImageReadWriteAnalyze.cxx $<br>
 &nbsp;Language: &nbsp;C++<br>
 &nbsp;Date: &nbsp; &nbsp; &nbsp;$Date: 2008/02/07 $<br>
 &nbsp;Version: &nbsp; $Revision: 1.0 $<br>
 &nbsp;Author: &nbsp; &nbsp; Jian Wu<br>
<br>
=========================================================================*/<br>
#if defined(_MSC_VER)<br>
#pragma warning ( disable : 4786 )<br>
#endif<br>
<br>
#ifdef __BORLANDC__<br>
#define ITK_LEAN_AND_MEAN<br>
#endif<br>
<br>
#include &quot;itkImageFileReader.h&quot;<br>
#include &quot;itkImageFileWriter.h&quot;<br>
#include &quot;itkAnalyzeImageIO.h&quot;<br>
<br>
#include &quot;itkImage.h&quot;<br>
<br>
<br>
int main( int argc, char ** argv )<br>
{<br>
 &nbsp;if( argc &lt; 3 )<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp;std::cerr &lt;&lt; &quot;Usage: &quot; &lt;&lt; std::endl;<br>
 &nbsp; &nbsp;std::cerr &lt;&lt; argv[0] &lt;&lt; &quot; inputImageFile &nbsp;outputImageFile &quot; &lt;&lt; std::endl;<br>
 &nbsp; &nbsp;return EXIT_FAILURE;<br>
 &nbsp; &nbsp;}<br>
<br>
 &nbsp;typedef unsigned short &nbsp; &nbsp; &nbsp;PixelType;<br>
 &nbsp;const &nbsp; unsigned int &nbsp; &nbsp; &nbsp; &nbsp;Dimension = 3;<br>
 &nbsp;typedef itk::Image&lt; PixelType, Dimension &gt; &nbsp; &nbsp;ImageType;<br>
<br>
 &nbsp;typedef itk::ImageFileReader&lt; ImageType &gt; &nbsp;ReaderType;<br>
 &nbsp;typedef itk::ImageFileWriter&lt; ImageType &gt; &nbsp;WriterType;<br>
 &nbsp;typedef itk::AnalyzeImageIO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ImageIOType;<br>
<br>
<br>
 &nbsp;ReaderType::Pointer reader = ReaderType::New();<br>
 &nbsp;WriterType::Pointer writer = WriterType::New();<br>
 &nbsp;ImageIOType::Pointer analyzeIO = ImageIOType::New();<br>
<br>
 &nbsp;const char * inputFilename &nbsp;= argv[1];<br>
 &nbsp;const char * outputFilename = argv[2];<br>
<br>
 &nbsp;reader-&gt;SetFileName( inputFilename &nbsp;);<br>
 &nbsp;writer-&gt;SetFileName( outputFilename );<br>
<br>
 &nbsp;writer-&gt;SetInput( reader-&gt;GetOutput() );<br>
 &nbsp;writer-&gt;SetImageIO( analyzeIO );<br>
<br>
 &nbsp;try<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp;writer-&gt;Update();<br>
 &nbsp; &nbsp;}<br>
 &nbsp;catch( itk::ExceptionObject &amp; err )<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp;std::cerr &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;<br>
 &nbsp; &nbsp;std::cerr &lt;&lt; err &lt;&lt; std::endl;<br>
 &nbsp; &nbsp;return EXIT_FAILURE;<br>
 &nbsp; &nbsp;}<br>
<br>
 &nbsp;return EXIT_SUCCESS;<br>
}<br>
<div class="WgoR0d"><br>
<br>
<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp;____________________________________________________________________________________<br>
Looking for last minute shopping deals?<br>
Find them fast with Yahoo! Search. &nbsp;<a href="http://tools.search.yahoo.com/newsearch/category.php?category=shopping" target="_blank">http://tools.search.yahoo.com/newsearch/category.php?category=shopping</a><br>
_______________________________________________<br>
Insight-users mailing list<br>
<a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
</div></blockquote></div><br>