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

=?BIG5?B?s6+sRt5t?= m9421001 at gmail.com
Sun Sep 11 15:44:48 EDT 2005


Thanks for your help.
But I don't know how to rescale my input data to fit within the range
of the WriteType
Have any example about this?

appreciate your kindness.
                          
                                                     Wordon

2005/9/12, Bill Lorensen <wlorens1 at nycap.rr.com>:
> You can specify any integral type for dicom. The problem is your input and
> output types are not consistent.
> 
> You can:
> 
> 1) Declare the ImageType for the reader to be short. However if your input
> range exceeds that which a short can hold you will have problems.
> 
> 2) Declare the WriteType to be signed int. However, most dicom images are
> with short or unsigned short.
> 
> 3) Insert a CastImageFilter<ImageType,WriteType>. Here you will have the
> same problems as 1).
> 
> 4) Rescale your input data to fit within the range of the WriteType.
> Several options are available.
> 
> Bill
> 
> At 01:21 PM 9/11/2005, =?BIG5?B?s6+sRt5t?= wrote:
> >Hi,all ITK user:
> >
> >I want to read a meta image(.mhd) and write it to DICOM format.
> >
> >This is my code for this question:
> >
> >========================================================
> >#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<signed int, 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<short, 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;
> >
> >}
> >
> >========================================================
> >I get a error message as follows:
> >
> >error C2664: 'SetInput' : cannot convert parameter 1 from 'class
> >itk::Image<int,3> *' to 'const class itk::Image<short,3> *'
> >Types pointed to are unrelated; conversion requires reinterpret_cast,
> >C-style cast or function-style cast
> >
> >
> >My question is:
> >
> >what format can specify when I  read a META image and write it to DICOM?
> >_______________________________________________
> >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