[Insight-users] strange dicom output file

Ming Chao mingchao2005 at gmail.com
Wed Nov 4 12:59:25 EST 2009


I tried what you suggested, but it didn't work. I got the same result
though.

Ming

On Wed, Nov 4, 2009 at 9:56 AM, Bill Lorensen <bill.lorensen at gmail.com>wrote:

> Try making the InputPIxelType short
>
>  typedef short InputPixelType;
>
>
> On Wed, Nov 4, 2009 at 10:38 AM, Ming Chao <mingchao2005 at gmail.com> wrote:
> > Hi ITKers.
> > Recently I was asking questions here about how to write out an multiframe
> > dicom file. Thanks for all the help.
> > As a matter of fact, it is not so hard to save a 3D volumetric image into
> a
> > multiframe dicom file. Please see the attached code. But I do encounter a
> > problem in the output dicom file. Basically the range of the voxel values
> of
> > the output file  much narrower than expected ( I attached the images from
> > the output dicom and original dicom). I double checked the data types and
> > they seemed fine. Could anyone help? thanks.
> > Ming
> >
> > int main( int argc, char* argv[] ) {
> > // Verify the number of parameters in the command line
> > if( argc < 4 ) {
> > std::cerr << "Usage: " << std::endl;
> > std::cerr << argv[0] << " vtkImage InputDicomImage ";
> > std::cerr << " OutputImage \n";
> > return EXIT_FAILURE;
> >     }
> > // the following is for an input 2D dicom file
> > typedef unsigned short InputPixelType;
> > const unsigned int   InputDimension = 3;
> > typedef itk::Image< InputPixelType, InputDimension > InputImageType;
> > typedef itk::ImageFileReader< InputImageType > InputReaderType;
> > InputReaderType::Pointer reader1 = InputReaderType::New();
> > reader1->SetFileName( argv[1] );
> > typedef itk::GDCMImageIO          InputImageIOType;
> > InputImageIOType::Pointer gdcmImageIO = InputImageIOType::New();
> > reader1->SetImageIO( gdcmImageIO );
> > reader1->Update();
> > std::cout << " (1) first dicom file is read in successfully ...." <<
> > std::endl;
> > // The following is a print out of the tag info
> > typedef itk::MetaDataDictionary   DictionaryType;
> > const  DictionaryType & dictionary =
> gdcmImageIO->GetMetaDataDictionary();
> > typedef itk::MetaDataObject< std::string > MetaDataStringType;
> > DictionaryType::ConstIterator itr = dictionary.Begin();
> > DictionaryType::ConstIterator end = dictionary.End();
> > while( itr != end )
> >     {
> > itk::MetaDataObjectBase::Pointer  entry = itr->second;
> > MetaDataStringType::Pointer entryvalue =
> > dynamic_cast<MetaDataStringType *>( entry.GetPointer() ) ;
> > if( entryvalue )
> > {
> > std::string tagkey   = itr->first;
> > std::string tagvalue = entryvalue->GetMetaDataObjectValue();
> > std::cout << tagkey <<  " = " << tagvalue << std::endl;
> > }
> > ++itr;
> >     }
> > // the following is for a 3D volume file
> > typedef float PixelType;
> > const unsigned int   Dimension = 3;
> > typedef itk::Image< PixelType, Dimension > ImageType;
> > typedef itk::ImageFileReader< ImageType  >  ReaderType;
> >     ReaderType::Pointer reader2 = ReaderType::New();
> >     reader2->SetFileName( argv[2] );
> > reader2->Update();
> > std::cout << " (2) the 3D volume file is read in successfully ...." <<
> > std::endl;
> >     // the following is for an output 3D dicom file
> > typedef float OutputPixelType;
> > const unsigned int   OutputDimension = 3;
> > typedef itk::Image< OutputPixelType, OutputDimension > OutputImageType;
> > typedef itk::ImageSeriesWriter< ImageType, OutputImageType >
> > OutputWriterType;
> > OutputWriterType::Pointer writer = OutputWriterType::New();
> > writer->SetFileName( argv[3] );
> > writer->SetInput( reader2->GetOutput() );
> > writer->SetMetaDataDictionary( reader1->GetMetaDataDictionary() );
> > gdcmImageIO->KeepOriginalUIDOn();
> > writer->SetImageIO( gdcmImageIO );
> > writer->Update();
> > std::cout << " (3) the output dicom file is saved successfully and we are
> > done...." << std::endl;
> >
> > return 0;
> >
> > _____________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Kitware offers ITK Training Courses, for more information visit:
> > http://www.kitware.com/products/protraining.html
> >
> > Please keep messages on-topic and check the ITK FAQ at:
> > http://www.itk.org/Wiki/ITK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.itk.org/mailman/listinfo/insight-users
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20091104/4f389ac2/attachment-0001.htm>


More information about the Insight-users mailing list