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

wordon m9421001 at gmail.com
Mon Sep 19 18:02:05 EDT 2005


Hi,Bill:

I need this code so immediately.
Can you send me this code?

                                        Thank you very much.   ; - )
                                                                      
            Wordon


2005/9/19, Lorensen, William E (Research) <lorensen at crd.ge.com>:
> I have an Example that creates a valid dicom from a meta file. I still want to refine it before checking it into itk. If you have a need immediately, I can e-mail the code. It populates the meta dictionary with enough dicom to be acceptable for a GE Advantage Windows workstation. It also accepts tag/value pairs on the command line.
> 
> Bill
> 
> -----Original Message-----
> From: insight-users-bounces+lorensen=crd.ge.com at itk.org
> [mailto:insight-users-bounces+lorensen=crd.ge.com at itk.org]On Behalf Of
> Andinet Enquobahrie
> Sent: Monday, September 19, 2005 10:10 AM
> To: m9421001 at gmail.com
> Cc: insight-users at itk.org
> Subject: Re: [Insight-users] read a meta image and write a volume to
> DICOM
> 
> 
> Hello Wordon,
> 
> >1)if I want to read image using ImageFileReader<> directly,the
> >GetMetaDataDictionaryArray can't use in writer.In this situation,how
> >should I write the meta image to DICOM series as Luis said previously?
> >
> >
> GetMetaDataDictionaryArray() function is not available for image readers
> "not" pointing to an ImageIO class with MetaDataDictionary handling
> capability. For example, if you had a DICOM input image and you were
> using ImageSeriesReader pointing to GDCMImageIO, then you can access the
> MetaData array using GetMetaDataDictionaryArray function.
> 
> Anyways, for your situation, one thing you can do is to define an array
> of MetaDataDicitionary containing all DICOM relevant data and pass it to
> the ImagSeries writer using
> 
> ImageSeriesWriter::SetMetaDataDictionaryArray(YourMetaDataArray)
> 
> 
> >2)If I can get the DICOM series,can I use the code as
> >DicomSeriesReadImageWrite2.cxx to read series and write it to DICOM
> >volume?
> >
> >
> >
> Yes, you can use the example with a small modifcation to the image
> writing part of the code. "DicomSeriesReadImgeWrite2" writes out the
> image in a different format other than DICOM. All you need to do is to
> use an image series file writer with a pointer to GDCMImageIO.
> 
> typedef itk::ImageSeriesWriter< ImageType, Image2DType > WriterType;
> WriterType::Pointer writer = WriterType::New();
> 
> typedef itk::GDCMImageIO        ImageIOType;
> ImageIOType::Pointer gdcmImageIO=ImageIOType::New();
> 
> writer->SetImageIO(gdcmImageIO);
> writer->SetInput( reader->GetOutput() );
> 
> ...then specify filenames to the image series writer...
> 
> 
> -Andinet
> 
> 
> 
> 
> 
> typedef itk::Image
> 
> >
> >
> >
> 
> 
> 
> 
> -Andinet
> 
> >
> >2005/9/16, Luis Ibanez <luis.ibanez at kitware.com>:
> >
> >
> >>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
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>------------------------------------------------------------------------
> >>
> >>_______________________________________________
> >>Insight-users mailing list
> >>Insight-users at itk.org
> >>http://www.itk.org/mailman/listinfo/insight-users
> >>
> >>
> 
> 
> _______________________________________________
> 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