[Insight-users] read a meta image and write a volume to DICOM

=?BIG5?B?s6+sRt5t?= m9421001 at gmail.com
Thu Sep 15 10:29:56 EDT 2005


Hi,Luis and all ITK user:

I want to read a meta image and use the data '
BrainProtonDensity3Slices.mha' & ' BrainProtonDensity3Slices.raw ' in
Insight\Examples\Data.
( I want to read a 3D raw image )

And then wirte the meta image  into a volume of DICOM format.
(.mhd or .mha --> .dcm)


My code as follows :

#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkImage.h"
#include "itkRescaleIntensityImageFilter.h"
#include "itkMetaDataDictionary.h"
#include "itkMetaDataObject.h"
#include "itkGDCMImageIO.h"

#include <list>
#include <fstream>

int main(int ac, char* av[])
{

  if(ac < 3)
    {
    std::cerr << "Usage: " << av[0] << " InputMETAFile OutputDICOM\n";
    return EXIT_FAILURE;
    }

  typedef itk::Image<unsigned char, 3> ImageType;
  
  typedef itk::ImageFileReader< ImageType > VolumeReaderType;
  
  VolumeReaderType::Pointer reader = VolumeReaderType::New();

  reader->SetFileName( av[1] );
  
  try
    {
    reader->Update();	
    }
  catch (itk::ExceptionObject & e)
    {
    std::cerr << "exception in file reader " << std::endl;
    std::cerr << e.GetDescription() << std::endl;
    std::cerr << e.GetLocation() << std::endl;
    return EXIT_FAILURE;
    }


  typedef itk::GDCMImageIO        ImageIOType;	

  ImageIOType::Pointer gdcmImageIO = ImageIOType::New(); 


  typedef itk::Image<unsigned char, 3> WriteType;
  typedef itk::ImageFileWriter<WriteType>	Writer1Type;
  Writer1Type::Pointer writer1=Writer1Type::New();
  
  writer1->SetFileName( av[2] );
  writer1->SetImageIO( gdcmImageIO );
  writer1->SetInput( reader->GetOutput() );

   
  try
    {
    writer1->Update();	
    }
  catch (itk::ExceptionObject & e)
    {
    std::cerr << "exception in file writer " << std::endl;
    std::cerr << e.GetDescription() << std::endl;
    std::cerr << e.GetLocation() << std::endl;
    return EXIT_FAILURE;
    }



  return EXIT_SUCCESS;

}

My code can run,but the DICOM image in output is not correctly.
It has a problem like loss some information in output file.

My questions:
1)Is it right to read the 3D meta image use ImageFileReader directly?
2)Is it right to write the data into a volume of DICOM use
ImageFileWriter directly?
3)What are difference between series and volume?
4)If I want to get a 3D DICOM file in one file.Is it a volume? 
 
Thanks a lot. : -)
                                                              Wordon


More information about the Insight-users mailing list