<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 9pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
Dear ALL,<BR>
I want to convert DICOM image into raw format,I use amide to display my image. Before the format transformation, the DICOM image can be displayed in amide correctly, but after the format transformation, the patient's head will be in bottom in&nbsp;raw data displyed in amide. The following are the source codes:<BR>
&nbsp;<BR>
#if defined(_MSC_VER)<BR>#pragma warning ( disable : 4786 )<BR>#pragma warning ( disable : 4996)<BR>#endif<BR>
&nbsp;<BR>
#include "itkImage.h"<BR>
#include "itkOrientedImage.h"<BR>#include "itkGDCMImageIO.h"<BR>#include "itkGDCMSeriesFileNames.h"<BR>#include "itkImageSeriesReader.h"<BR>#include "itkImageFileWriter.h"<BR>
<BR>int main( int argc, char *argv[] )<BR>{<BR>&nbsp;&nbsp;&nbsp; const&nbsp;&nbsp;&nbsp; unsigned int&nbsp;&nbsp;&nbsp; ImageDimension = 3;<BR>&nbsp;&nbsp;&nbsp; typedef&nbsp; signed short&nbsp;&nbsp;&nbsp; PixelType;<BR>
&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; PixelType, ImageDimension &gt;&nbsp; ImageType;<BR>
&nbsp;&nbsp;&nbsp; typedef itk::OrientedImage&lt; PixelType, ImageDimension&nbsp; &gt; ImageReaderType;<BR>
&nbsp;&nbsp;&nbsp; typedef itk::ImageSeriesReader&lt; ImageReaderType &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReaderType;<BR>
&nbsp;&nbsp;&nbsp; ReaderType::Pointer&nbsp; ImageReader&nbsp; = ReaderType::New();<BR>
&nbsp;&nbsp;&nbsp; typedef itk::GDCMImageIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIOType;<BR>&nbsp;&nbsp;&nbsp; ImageIOType::Pointer dicomIO = ImageIOType::New();<BR>
&nbsp;&nbsp;&nbsp; ImageReader-&gt;SetImageIO( dicomIO );<BR>
&nbsp;&nbsp;&nbsp; typedef itk::GDCMSeriesFileNames NamesGeneratorType;<BR>&nbsp;&nbsp;&nbsp; NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();<BR>
&nbsp;&nbsp;&nbsp; nameGenerator-&gt;SetUseSeriesDetails( true );<BR>&nbsp;&nbsp;&nbsp; nameGenerator-&gt;AddSeriesRestriction("0008|0021" );<BR>
&nbsp;&nbsp;&nbsp; nameGenerator-&gt;SetDirectory( argv[1] );<BR>
&nbsp;&nbsp;&nbsp; typedef std::vector&lt; std::string &gt;&nbsp;&nbsp;&nbsp; SeriesIdContainer;<BR>
&nbsp;&nbsp;&nbsp; const SeriesIdContainer &amp; seriesUID = nameGenerator-&gt;GetSeriesUIDs();<BR>
&nbsp;&nbsp;&nbsp; SeriesIdContainer::const_iterator seriesItr = seriesUID.begin();<BR>&nbsp;&nbsp;&nbsp; SeriesIdContainer::const_iterator seriesEnd = seriesUID.end();<BR>&nbsp;&nbsp;&nbsp; while( seriesItr != seriesEnd )<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "input image series:" &lt;&lt; std::endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; seriesItr-&gt;c_str() &lt;&lt; std::endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seriesItr++;<BR>&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp; std::string seriesIdentifier;<BR>
&nbsp;&nbsp;&nbsp; seriesIdentifier = seriesUID.begin()-&gt;c_str();<BR>
&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<BR>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Now reading series: " &lt;&lt; std::endl &lt;&lt; std::endl;<BR>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; seriesIdentifier &lt;&lt; std::endl;<BR>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp; typedef std::vector&lt; std::string &gt;&nbsp;&nbsp; FileNamesContainer;<BR>&nbsp;&nbsp;&nbsp; FileNamesContainer ImagefileNames;<BR>
&nbsp;&nbsp;&nbsp; ImagefileNames = nameGenerator-&gt;GetFileNames( seriesIdentifier );<BR>
&nbsp;&nbsp;&nbsp; ImageReader-&gt;SetFileNames(ImagefileNames);<BR>
&nbsp;&nbsp;&nbsp; ImageType::ConstPointer inputImage = ImageReader-&gt;GetOutput();<BR>
&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageReader-&gt;Update();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; catch (itk::ExceptionObject &amp;err)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "ExceptionObject caught !" &lt;&lt; std::endl; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; err &lt;&lt; std::endl; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return EXIT_FAILURE;<BR>&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp; typedef itk::ImageFileWriter&lt; ImageType &gt; ImageFileWriterType;<BR>
&nbsp;&nbsp;&nbsp; ImageFileWriterType::Pointer writer = ImageFileWriterType::New();<BR>
&nbsp;&nbsp;&nbsp; writer-&gt;SetInput( inputImage );<BR>
&nbsp;&nbsp;&nbsp; writer-&gt;SetFileName( argv[2] );<BR>
&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer-&gt;Update();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; catch (itk::ExceptionObject &amp;err)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "ExceptionObject caught !" &lt;&lt; std::endl; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; err &lt;&lt; std::endl; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return EXIT_FAILURE;<BR>&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp; return EXIT_SUCCESS;<BR>}<BR><br /><hr />MSN上小游戏,工作休闲两不误! <a href='http://im.live.cn/minigame' target='_new'>马上就开始玩!</a></body>
</html>