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
enum  { SameDimension = 0 }
enum  { DimensionShouldBe3 = 0 }

Public Member Functions

virtual const char * GetNameOfClass () 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)
virtual void UseImageDirectionOn ()
virtual void UseImageDirectionOff ()
virtual bool GetUseImageDirection ()
virtual void SetUseImageDirection (bool _arg)
void SetDesiredCoordinateOrientationToAxial ()
void SetDesiredCoordinateOrientationToCoronal ()
void SetDesiredCoordinateOrientationToSagittal ()

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). You may explicitly set the DesiredOrientation with SetDesiredCoordinateOrientation (if UseImageDirection is "off") or you can use the image's direction cosines to set the DesiredOrientation (if UseImageDirection is "on"). 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 and the Image.Direction direction cosine matrix 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;
 }   

Or, using the direction cosines of the image,

 #include "itkAnalyzeImageIO.h"
 #include "itkImage.h"
 #include "itkOrientImageFilter.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::OrientImageFilter<ImageType,ImageType>::Pointer orienter =
     itk::OrientImageFilter<ImageType,ImageType>::New();
   orienter->UseImageDirectionOn();
   orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RIP);
   orienter->SetInput(rval);
   orienter->Update();
   rval = orienter->GetOutput();
   return rval;
 }   

Definition at line 139 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 148 of file itkOrientImageFilter.h.

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

Definition at line 162 of file itkOrientImageFilter.h.

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

Definition at line 170 of file itkOrientImageFilter.h.

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

Axes flipper type.

Definition at line 169 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 154 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 156 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 153 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 155 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 151 of file itkOrientImageFilter.h.

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

Definition at line 158 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 160 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 157 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 159 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 152 of file itkOrientImageFilter.h.

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

Definition at line 166 of file itkOrientImageFilter.h.

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

Axes permuter type.

Definition at line 165 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 147 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 144 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 146 of file itkOrientImageFilter.h.


Member Enumeration Documentation

template<class TInputImage, class TOutputImage>
anonymous enum
 

The dimensions of the input image must equal those of the output image.

Enumeration values:
SameDimension 

Definition at line 183 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
anonymous enum
 

The dimension of the input image must be 3.

Enumeration values:
DimensionShouldBe3 

Definition at line 187 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 258 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 CoordinateOrientationCode itk::OrientImageFilter< TInputImage, TOutputImage >::GetDesiredCoordinateOrientation  )  [virtual]
 

Set/Get the orientation 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 orientation codes to define the coordinate transform.

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

Runtime information support.

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

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

Get axes permute order.

template<class TInputImage, class TOutputImage>
virtual bool itk::OrientImageFilter< TInputImage, TOutputImage >::GetUseImageDirection  )  [virtual]
 

Controls how the GivenCoordinateOrientation is determined. If "on", the direction cosines determine the coordinate orientation. If "off", the user must use the SetGivenCoordinateOrientation method to establis the orientation. For compatbility with the original API, the default if "off".

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 orientation codes to define the coordinate transform.

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::SetDesiredCoordinateOrientationToAxial  )  [inline]
 

Convenience methods to set desired slice orientation These methods allow a limited selection of slice orientations without having to specify the SpatialOrientation.

SetDesiredCoordinateOrientationToAxial is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_RAI).

SetDesiredCoordinateOrientationToCoronal is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_RSA).

SetDesiredCoordinateOrientationToSagittal is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_ASL).

Definition at line 233 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::SetDesiredCoordinateOrientationToCoronal  )  [inline]
 

Convenience methods to set desired slice orientation These methods allow a limited selection of slice orientations without having to specify the SpatialOrientation.

SetDesiredCoordinateOrientationToAxial is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_RAI).

SetDesiredCoordinateOrientationToCoronal is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_RSA).

SetDesiredCoordinateOrientationToSagittal is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_ASL).

Definition at line 237 of file itkOrientImageFilter.h.

template<class TInputImage, class TOutputImage>
void itk::OrientImageFilter< TInputImage, TOutputImage >::SetDesiredCoordinateOrientationToSagittal  )  [inline]
 

Convenience methods to set desired slice orientation These methods allow a limited selection of slice orientations without having to specify the SpatialOrientation.

SetDesiredCoordinateOrientationToAxial is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_RAI).

SetDesiredCoordinateOrientationToCoronal is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_RSA).

SetDesiredCoordinateOrientationToSagittal is equivalent to SetDesiredCoordinateOrientation (ITK_COORDINATE_ORIENTATION_ASL).

Definition at line 241 of file itkOrientImageFilter.h.

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

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

template<class TInputImage, class TOutputImage>
virtual void itk::OrientImageFilter< TInputImage, TOutputImage >::SetUseImageDirection bool  _arg  )  [virtual]
 

Controls how the GivenCoordinateOrientation is determined. If "on", the direction cosines determine the coordinate orientation. If "off", the user must use the SetGivenCoordinateOrientation method to establis the orientation. For compatbility with the original API, the default if "off".

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

Controls how the GivenCoordinateOrientation is determined. If "on", the direction cosines determine the coordinate orientation. If "off", the user must use the SetGivenCoordinateOrientation method to establis the orientation. For compatbility with the original API, the default if "off".

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

Controls how the GivenCoordinateOrientation is determined. If "on", the direction cosines determine the coordinate orientation. If "off", the user must use the SetGivenCoordinateOrientation method to establis the orientation. For compatbility with the original API, the default if "off".


The documentation for this class was generated from the following file:
Generated at Thu May 25 02:00:42 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000