Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::OrientImageFilter< TInputImage, TOutputImage > Class Template Reference

Permute axes and then flip images as needed to obtain agreement in coordinateOrientation codes. More...

#include <itkOrientImageFilter.h>

Inheritance diagram for itk::OrientImageFilter< TInputImage, TOutputImage >:

Inheritance graph
[legend]
Collaboration diagram for itk::OrientImageFilter< TInputImage, TOutputImage >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef OrientImageFilter Self
typedef ImageToImageFilter<
TInputImage, TOutputImage > 
Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const
Self
ConstPointer
typedef TInputImage InputImageType
typedef TOutputImage OutputImageType
typedef InputImageType::Pointer InputImagePointer
typedef InputImageType::ConstPointer InputImageConstPointer
typedef InputImageType::RegionType InputImageRegionType
typedef InputImageType::PixelType InputImagePixelType
typedef OutputImageType::Pointer OutputImagePointer
typedef OutputImageType::ConstPointer OutputImageConstPointer
typedef OutputImageType::RegionType OutputImageRegionType
typedef OutputImageType::PixelType OutputImagePixelType
typedef SpatialOrientation::ValidCoordinateOrientationFlags CoordinateOrientationCode
typedef PermuteAxesImageFilter<
TInputImage > 
PermuterType
typedef PermuterType::PermuteOrderArrayType PermuteOrderArrayType
typedef FlipImageFilter< TInputImage > FlipperType
typedef FlipperType::FlipAxesArrayType FlipAxesArrayType

Public Member Functions

virtual const char * GetClassName () const
virtual const PermuteOrderArrayTypeGetPermuteOrder ()
virtual const FlipAxesArrayTypeGetFlipAxes ()
virtual void GenerateOutputInformation ()
 itkStaticConstMacro (InputImageDimension, unsigned int, TInputImage::ImageDimension)
 itkStaticConstMacro (OutputImageDimension, unsigned int, TOutputImage::ImageDimension)
virtual CoordinateOrientationCode GetGivenCoordinateOrientation ()
void SetGivenCoordinateOrientation (CoordinateOrientationCode newCode)
virtual CoordinateOrientationCode GetDesiredCoordinateOrientation ()
void SetDesiredCoordinateOrientation (CoordinateOrientationCode newCode)

Static Public Member Functions

Pointer New ()

Protected Member Functions

 OrientImageFilter ()
 ~OrientImageFilter ()
void PrintSelf (std::ostream &os, Indent indent) const
void GenerateInputRequestedRegion ()
void EnlargeOutputRequestedRegion (DataObject *)
void GenerateData ()
void DeterminePermutationsAndFlips (const SpatialOrientation::ValidCoordinateOrientationFlags fixed_orient, const SpatialOrientation::ValidCoordinateOrientationFlags moving_orient)
bool NeedToPermute ()
bool NeedToFlip ()

Detailed Description

template<class TInputImage, class TOutputImage>
class itk::OrientImageFilter< TInputImage, TOutputImage >

Permute axes and then flip images as needed to obtain agreement in coordinateOrientation codes.

This class satisfies a common requirement in medical imaging, which is to properly orient a 3 dimensional image with respect to anatomical features. Due to the wide variety of hardware used to generate 3D images of human anatomy, and the even wider variety of image processing software, it is often necessary to re-orient image volume data.

OrientImageFilter depends on a set of constants that describe all possible permutations of Axes. These reside in itkSpatialOrientation.h. These are labeled according to the following scheme: Directions are labeled in terms of following pairs:

The initials of these directions are used in a 3 letter code in the enumerated type itk::SpatialOrientation::ValidCoordinateOrientationFlags. The initials are given fastest moving index first, second fastest second, third fastest third. Examples:

In order to use this filter, you need to supply an input image, the current orientation of the input image (set with SetGivenCoordinateOrientation) and the desired orientation (set with SetDesiredCoordinateOrientation).

When reading image files that define the coordinate orientation of the image, the current orientation is stored in the MetadataDictionary for the itk::Image object created from the file.

As an example, if you wished to keep all images within your program in the orientation corresponding to the Analyze file format's 'CORONAL' orientation you could do something like the following

 #include "itkAnalyzeImageIO.h"
 #include "itkMetaDataObject.h"
 #include "itkImage.h"
 #include "itkSpatialOrientation.h"
 #include "itkOrientImageFilter.h"
 #include "itkIOCommon.h"
 typedef itk::Image<unsigned char,3> ImageType;
 typedef itk::ImageFileReader< TstImageType > ImageReaderType ;
 ImageType::Pointer ReadAnalyzeFile(const char *path)
 {
   itk::AnalyzeImageIO::Pointer io = itk::AnalyzeImageIO::New();
   ImageReaderType::Pointer fileReader = ImageReaderType::New();
   fileReader->SetImageIO(io);
   fileReader->SetFileName(path);
   fileReader->Update();
   ImageType::Pointer rval = fileReader->GetOutput();
   
   itk::SpatialOrientation::ValidCoordinateOrientationFlags fileOrientation;
   itk::ExposeMetaData<itk::SpatialOrientation::ValidCoordinateOrientationFlags>
     (rval->GetMetaDataDictionary(),itk::ITK_CoordinateOrientation,fileOrientation);
   itk::OrientImageFilter<ImageType,ImageType>::Pointer orienter =
     itk::OrientImageFilter<ImageType,ImageType>::New();
   orienter->SetGivenCoordinateOrientation(fileOrientation);
   orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RIP);
   orienter->SetInput(rval);
   orienter->Update();
   rval = orienter->GetOutput();
   return rval;
 }   

Definition at line 106 of file itkOrientImageFilter.h.


Member Typedef Documentation

template<class TInputImage, class TOutputImage>
typedef SmartPointer<const Self> itk::OrientImageFilter< TInputImage, TOutputImage >::ConstPointer
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 115 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef SpatialOrientation::ValidCoordinateOrientationFlags itk::OrientImageFilter< TInputImage, TOutputImage >::CoordinateOrientationCode
 

Definition at line 129 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef FlipperType::FlipAxesArrayType itk::OrientImageFilter< TInputImage, TOutputImage >::FlipAxesArrayType
 

Definition at line 137 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef FlipImageFilter< TInputImage > itk::OrientImageFilter< TInputImage, TOutputImage >::FlipperType
 

Axes flipper type. Definition at line 136 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef InputImageType::ConstPointer itk::OrientImageFilter< TInputImage, TOutputImage >::InputImageConstPointer
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 121 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef InputImageType::PixelType itk::OrientImageFilter< TInputImage, TOutputImage >::InputImagePixelType
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 123 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef InputImageType::Pointer itk::OrientImageFilter< TInputImage, TOutputImage >::InputImagePointer
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 120 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef InputImageType::RegionType itk::OrientImageFilter< TInputImage, TOutputImage >::InputImageRegionType
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 122 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage itk::OrientImageFilter< TInputImage, TOutputImage >::InputImageType
 

Some convenient typedefs.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 118 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef OutputImageType::ConstPointer itk::OrientImageFilter< TInputImage, TOutputImage >::OutputImageConstPointer
 

Definition at line 125 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef OutputImageType::PixelType itk::OrientImageFilter< TInputImage, TOutputImage >::OutputImagePixelType
 

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 127 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef OutputImageType::Pointer itk::OrientImageFilter< TInputImage, TOutputImage >::OutputImagePointer
 

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 124 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef OutputImageType::RegionType itk::OrientImageFilter< TInputImage, TOutputImage >::OutputImageRegionType
 

Superclass typedefs.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 126 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TOutputImage itk::OrientImageFilter< TInputImage, TOutputImage >::OutputImageType
 

Some convenient typedefs.

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 119 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef PermuterType::PermuteOrderArrayType itk::OrientImageFilter< TInputImage, TOutputImage >::PermuteOrderArrayType
 

Definition at line 133 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef PermuteAxesImageFilter< TInputImage > itk::OrientImageFilter< TInputImage, TOutputImage >::PermuterType
 

Axes permuter type. Definition at line 132 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef SmartPointer<Self> itk::OrientImageFilter< TInputImage, TOutputImage >::Pointer
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 114 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef OrientImageFilter itk::OrientImageFilter< TInputImage, TOutputImage >::Self
 

Standard class typedefs.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 111 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef ImageToImageFilter<TInputImage, TOutputImage> itk::OrientImageFilter< TInputImage, TOutputImage >::Superclass
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 113 of file itkOrientImageFilter.h.


Constructor & Destructor Documentation

template<class TInputImage, class TOutputImage>
itk::OrientImageFilter< TInputImage, TOutputImage >::OrientImageFilter  )  [protected]
 

template<class TInputImage, class TOutputImage>
itk::OrientImageFilter< TInputImage, TOutputImage >::~OrientImageFilter  )  [inline, protected]
 

Definition at line 176 of file itkOrientImageFilter.h.


Member Function Documentation

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::DeterminePermutationsAndFlips const SpatialOrientation::ValidCoordinateOrientationFlags  fixed_orient,
const SpatialOrientation::ValidCoordinateOrientationFlags  moving_orient
[protected]
 

* Member functions used by GenerateData:

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::EnlargeOutputRequestedRegion DataObject  )  [protected, virtual]
 

OrientImageFilter will produce the entire output.

Reimplemented from itk::ProcessObject.

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::GenerateData  )  [protected, virtual]
 

Single-threaded version of GenerateData. This filter delegates to PermuteAxesImageFilter and FlipImageFilter.

Reimplemented from itk::ImageSource< TOutputImage >.

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::GenerateInputRequestedRegion  )  [protected, virtual]
 

OrientImageFilter needs the entire input be available. Thus, it needs to provide an implementation of GenerateInputRequestedRegion().

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual void itk::OrientImageFilter< TInputImage, TOutputImage >::GenerateOutputInformation  )  [virtual]
 

OrientImageFilter produces an image which is a different dimensionality than its input image, in general. As such, OrientImageFilter needs to provide an implementation for GenerateOutputInformation() in order to inform the pipeline execution model. The original documentation of this method is below.

See also:
ProcessObject::GenerateOutputInformaton()

Reimplemented from itk::ProcessObject.

template<class TInputImage, class TOutputImage>
virtual const char* itk::OrientImageFilter< TInputImage, TOutputImage >::GetClassName  )  const [virtual]
 

Runtime information support.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual CoordinateOrientationCode itk::OrientImageFilter< TInputImage, TOutputImage >::GetDesiredCoordinateOrientation  )  [virtual]
 

Set/Get the orienttion codes to define the coordinate transform.

template<class TInputImage, class TOutputImage>
virtual const FlipAxesArrayType& itk::OrientImageFilter< TInputImage, TOutputImage >::GetFlipAxes  )  [virtual]
 

Get flip axes.

template<class TInputImage, class TOutputImage>
virtual CoordinateOrientationCode itk::OrientImageFilter< TInputImage, TOutputImage >::GetGivenCoordinateOrientation  )  [virtual]
 

Set/Get the orienttion codes to define the coordinate transform.

template<class TInputImage, class TOutputImage>
virtual const PermuteOrderArrayType& itk::OrientImageFilter< TInputImage, TOutputImage >::GetPermuteOrder  )  [virtual]
 

Get axes permute order.

template<class TInputImage, class TOutputImage>
itk::OrientImageFilter< TInputImage, TOutputImage >::itkStaticConstMacro OutputImageDimension  ,
unsigned  int,
TOutputImage::ImageDimension 
 

ImageDimension constants

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
itk::OrientImageFilter< TInputImage, TOutputImage >::itkStaticConstMacro InputImageDimension  ,
unsigned  int,
TInputImage::ImageDimension 
 

ImageDimension constants

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
bool itk::OrientImageFilter< TInputImage, TOutputImage >::NeedToFlip  )  [protected]
 

* Member functions used by GenerateData:

template<class TInputImage, class TOutputImage>
bool itk::OrientImageFilter< TInputImage, TOutputImage >::NeedToPermute  )  [protected]
 

* Member functions used by GenerateData:

template<class TInputImage, class TOutputImage>
Pointer itk::OrientImageFilter< TInputImage, TOutputImage >::New  )  [static]
 

Standard New method.

Reimplemented from itk::Object.

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::PrintSelf std::ostream &  os,
Indent  indent
const [protected, virtual]
 

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::SetDesiredCoordinateOrientation CoordinateOrientationCode  newCode  ) 
 

Set/Get the orienttion codes to define the coordinate transform.

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::SetGivenCoordinateOrientation CoordinateOrientationCode  newCode  ) 
 

Set/Get the orienttion codes to define the coordinate transform.


The documentation for this class was generated from the following file:
Generated at Sun Apr 1 02:56:58 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000