00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _itkPermuteAxesImageFilter_h
00018 #define _itkPermuteAxesImageFilter_h
00019
00020 #include "itkImageToImageFilter.h"
00021 #include "itkFixedArray.h"
00022
00023 namespace itk
00024 {
00025
00045 template <class TImage>
00046 class ITK_EXPORT PermuteAxesImageFilter :
00047 public ImageToImageFilter<TImage,TImage>
00048 {
00049
00050 public:
00052 typedef PermuteAxesImageFilter Self;
00053 typedef ImageToImageFilter<TImage,TImage> Superclass;
00054 typedef SmartPointer<Self> Pointer;
00055 typedef SmartPointer<const Self> ConstPointer;
00056
00058 itkNewMacro(Self);
00059
00061 itkTypeMacro(PermuteAxesImageFilter, ImageToImageFilter);
00062
00064 itkStaticConstMacro(ImageDimension, unsigned int,
00065 TImage::ImageDimension );
00066
00068 typedef typename Superclass::InputImagePointer InputImagePointer;
00069 typedef typename Superclass::OutputImagePointer OutputImagePointer;
00070 typedef typename Superclass::OutputImageRegionType OutputImageRegionType;
00071
00073 typedef FixedArray<unsigned int, itkGetStaticConstMacro(ImageDimension)> PermuteOrderArrayType;
00074
00077 void SetOrder( const PermuteOrderArrayType& order );
00078
00080 itkGetConstReferenceMacro( Order, PermuteOrderArrayType );
00081
00083 itkGetConstReferenceMacro( InverseOrder, PermuteOrderArrayType );
00084
00085
00093 virtual void GenerateOutputInformation();
00094
00100 virtual void GenerateInputRequestedRegion();
00101
00102 protected:
00103 PermuteAxesImageFilter();
00104 ~PermuteAxesImageFilter() {};
00105 void PrintSelf(std::ostream& os, Indent indent) const;
00106
00117 void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread,
00118 int threadId );
00119
00120 private:
00121 PermuteAxesImageFilter(const Self&);
00122 void operator=(const Self&);
00123
00124
00125 PermuteOrderArrayType m_Order;
00126 PermuteOrderArrayType m_InverseOrder;
00127
00128 };
00129
00130 }
00131
00132 #ifndef ITK_MANUAL_INSTANTIATION
00133 #include "itkPermuteAxesImageFilter.txx"
00134 #endif
00135
00136 #endif
00137