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
00122 PermuteOrderArrayType m_Order;
00123 PermuteOrderArrayType m_InverseOrder;
00124
00125 };
00126
00127 }
00128
00129
#ifndef ITK_MANUAL_INSTANTIATION
00130
#include "itkPermuteAxesImageFilter.txx"
00131
#endif
00132
00133
#endif
00134