[Insight-developers] GDCM: How to find out the correct pixel type

Bill Lorensen bill.lorensen at gmail.com
Mon Dec 10 10:10:33 EST 2007


Mathieu,

It's not clear from your message how this affects Slicer3.

Bill
On Dec 10, 2007 8:24 AM, Mathieu Malaterre <mathieu.malaterre at gmail.com>
wrote:

> Hi everyone,
>
>  I have finally implemented a fix for the issue with the slicer
> plugin that would instanciate a INT or UINT itk::ImageFileReader where
> a SHORT or USHORT would suffice. The fix was rather trivial
>
> $ cvs ci -m"ENH: Fix feature request: 0006138: Finding proper pixel
> type for DICOM is cumbersome" itkGDCMImageIO.cxx
> /cvsroot/Insight/Insight/Code/IO/itkGDCMImageIO.cxx,v  <--
> itkGDCMImageIO.cxx
> new revision: 1.128; previous revision: 1.127
>
>  At the same time I added a small example that would dump the
> component type / pixel type needed to properly instanciate the
> itk::ImageFileReader so that also ITK user can take advantage of it.
> This should hopefully solve the issue where a user would not be aware
> of the DICOM specification for storing pixel data:
>
> $ cvs ci -m"ENH: Adding a piece of code to dump the correct pixel type
> to instanciate the itk::ImageFileReader" DicomImageReadPrintTags.cxx
> /cvsroot/Insight/Insight/Examples/IO/DicomImageReadPrintTags.cxx,v
> <--  DicomImageReadPrintTags.cxx
> new revision: 1.18; previous revision: 1.17
>
>  So the problem here is that a piece code and a particular dataset in
> Slicer would instanciated a INT itk::ImageFileReader, whereas now it
> will instanciate a SHORT itk::ImageFileReader. Does this violate the
> backwarc compatible policy ?
>
>
> Thanks,
> -Mathieu
>
> On Nov 22, 2007 3:49 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>  > Mathieu,
> >
> > Here is some code we use in Slicer3 plugins to determine pixel and
> component
> > type at run-time:
> >
> > namespace itk
> > {
> >   // Description:
> >   // Get the PixelType and ComponentType from fileName
> >   void GetImageType (std::string fileName,
> >                      ImageIOBase::IOPixelType &pixelType,
> >                      ImageIOBase::IOComponentType &componentType)
> >     {
> >       typedef itk::Image<unsigned char, 3> ImageType;
> >       itk::ImageFileReader<ImageType>::Pointer imageReader =
> >         itk::ImageFileReader<ImageType>::New();
> >       imageReader->SetFileName(fileName.c_str());
> >       imageReader->UpdateOutputInformation();
> >
> >       pixelType = imageReader->GetImageIO()->GetPixelType();
> >       componentType = imageReader->GetImageIO()->GetComponentType();
> >     }
> >
> >   // Description:
> >   // Get the PixelTypes and ComponentTypes from fileNames
> >   void GetImageTypes (std::vector<std::string> fileNames,
> >                       std::vector<ImageIOBase::IOPixelType> &pixelTypes,
> >                       std::vector<ImageIOBase::IOComponentType>
> > &componentTypes)
> >     {
> >     pixelTypes.clear();
> >     componentTypes.clear();
> >
> >     // For each file, find the pixel and component type
> >     for (std::vector<std::string>::size_type i = 0; i < fileNames.size
> ();
> > i++)
> >       {
> >       ImageIOBase::IOPixelType pixelType;
> >       ImageIOBase::IOComponentType componentType;
> >
> >       GetImageType (fileNames[i],
> >                     pixelType,
> >                     componentType);
> >       pixelTypes.push_back(pixelType);
> >       componentTypes.push_back(componentType);
> >       }
> >     }
> >   }
> >
> > Bill
> >
>
>
>
> --
> Mathieu
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.itk.org/mailman/private/insight-developers/attachments/20071210/49ee7bc1/attachment.htm


More information about the Insight-developers mailing list