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

Luis Ibanez luis.ibanez at kitware.com
Thu Sep 15 22:44:36 EDT 2005


Hi Wordon,

1) Yes, it is correct to read a MetaImage with just an ImageFileReader<>

2) No, it is not right to write a volume as a DICOM file by using only
    the ImageFileWriter.  You MUST use the ImageSeriesWriter as explained
    in detail in the ITK Software Guide

        http://www.itk.org/ItkSoftwareGuide.pdf

    in the Chapter "Reading and Writing Images".

    Note that you must also connect the GDCMImageIO.

    You will find the relevant source code examples in the directory

                 Insight/Examples/IO


3) A Series is when you store an N-Dimensional image by using
    multiple files that have dimensions inferior to N.
    The typical case is to use many 2D files for saving the slices
    of a 3D volume.

    It is also common to have many 3D files for saving a 4D image,
    like for functional MRI, or PET studies, or Cardiac CT

    With ITK you can write an N-Dimensional image as a series of
    files with image of Dimension M, where M < N.


4) If you store a volume (a 3D image) in DICOM, it will be stored
    in a series of 2D images.


Please read the ITK Software Guide,


    Regards,


       Luis


----------------------------
陳政煒 wrote:
> 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
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
> 
> 




More information about the Insight-users mailing list