[Insight-users] Reading DICOM in ITK, showing with right orientation in VTK

Luis Ibanez luis.ibanez at kitware.com
Sun Nov 8 12:59:15 EST 2009


Hi Gerald,

The vtkImageData does not have a representation for image orientation.

Therefore, when you convert an itk::Image or an itk::OrientedImage into
a vtkImageData, you are necessarily loosing that orientation information.

You  could manually grab that information from the itk::Image, and use it
in order to setup the Transform of the actor with which you are visualizing
the image in VTK.

For an example on how to correctly display DICOM images with VTK
you may want to look at the "Image Guided Surgery Toolkit" IGSTK:

In particular,
you may want to look at the following IGSTK classes:

* igstkImageSpatialObject
* igstkImageResliceObjectRepresentation


  Regards,


            Luis


---------------------------------------------------
On Wed, Nov 4, 2009 at 3:07 AM, Lodron, Gerald
<Gerald.Lodron at joanneum.at> wrote:
> Hello,
>
> I currently succesfully read a 3D dicom file with itk::ImageSeriesReader and write the image into an itk::OrientedImage< signed short, 3 >. After that i convert the image to VTK using the ImageToVTKImageFilte and visualized it. My problem is that the orientation is wrong (the head in the DICOM image is downside, the feets are on the upside). In the DICOM file there should be a Orientation tag which should refer to left/right etc. How can I connect this information so that an arbitrary DICOM image is always displayed correctly (from front side with the head upside)?     Here is my current code:
>
> PS: Is there a possibility tho get the data type form the DICOM, currently I always read signed short and i am not sure if this is correct for every dicom.
>
> typedef signed short            PixelType;
> const unsigned int              Dimension = 3;
>
>
> Typedef itk::OrientedImage< PixelType, Dimension >                      ImageType;
> typedef itk::ImageSeriesReader< ImageType >                             ReaderType;
> typedef itk::GDCMImageIO                                                        ImageIOType;
> typedef itk::ImageToVTKImageFilter<ImageType>                           ITKVTKConnectorType;
> typedef itk::GDCMSeriesFileNames                                                NamesGeneratorType;
>
> ReaderType::Pointer  m_Reader = ReaderType::New();
> ImageIOType::Pointer m_DicomIO = ImageIOType::New();
> NamesGeneratorType::Pointer m_NameGenerator = NamesGeneratorType::New();
> ITKVTKConnectorTypePointer m_Connector = ITKVTKConnectorType::New();
>
> m_Reader->SetImageIO( m_DicomIO );
> m_NameGenerator->SetUseSeriesDetails( true );
> m_NameGenerator->SetDirectory( path );
>
> Std::vector<std::string> m_strUIDs = m_NameGenerator->GetSeriesUIDs();
> Std::string m_strFileNames = m_NameGenerator->GetFileNames(m_strUIDs.at(0) );
> m_Reader->SetFileNames( m_strFileNames );
> m_Reader->Update();
>
> m_Connector->SetInput(m_Reader->GetOutput());
> m_Connector->Update();
> vtkImageData* vtkIm = m_Connector->GetOutput();
>
> //Visualization, e.g. image plane widget example
> _____________________________________
> 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
>


More information about the Insight-users mailing list