itkCompose3DVectorImageFilter.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkCompose3DVectorImageFilter_h
00018 #define __itkCompose3DVectorImageFilter_h
00019
00020 #include "itkTernaryFunctorImageFilter.h"
00021 #include "itkVector.h"
00022
00023 namespace itk
00024 {
00025
00026 namespace Function {
00027
00028 template< class TInput >
00029 class Compose3DVector
00030 {
00031 public:
00032 typedef Vector<TInput,3> OutputType;
00033 Compose3DVector() {}
00034 ~Compose3DVector() {}
00035 bool operator!=( const Compose3DVector & ) const
00036 {
00037 return false;
00038 }
00039 bool operator==( const Compose3DVector & other ) const
00040 {
00041 return !(*this != other);
00042 }
00043 inline OutputType operator()( const TInput & s1,
00044 const TInput & s2,
00045 const TInput & s3) const
00046 {
00047 OutputType v;
00048 v[0] = s1;
00049 v[1] = s2;
00050 v[2] = s3;
00051 return v;
00052 }
00053 };
00054 }
00055
00068 template <typename TInputImage,
00069 typename TOutputImage=
00070 Image< Vector< ITK_TYPENAME TInputImage::PixelType,3 >,
00071 ::itk::GetImageDimension<TInputImage>::ImageDimension > >
00072 class ITK_EXPORT Compose3DVectorImageFilter :
00073 public
00074 TernaryFunctorImageFilter<TInputImage,TInputImage,
00075 TInputImage,TOutputImage,
00076 Function::Compose3DVector< ITK_TYPENAME TInputImage::PixelType > >
00077 {
00078 public:
00080 typedef Compose3DVectorImageFilter Self;
00081 typedef TernaryFunctorImageFilter<
00082 TInputImage,TInputImage,TInputImage,
00083 TOutputImage,
00084 Function::Compose3DVector<
00085 ITK_TYPENAME TInputImage::PixelType > >
00086 Superclass;
00087 typedef SmartPointer<Self> Pointer;
00088 typedef SmartPointer<const Self> ConstPointer;
00089
00090 typedef typename Superclass::OutputImageType OutputImageType;
00091
00093 itkNewMacro(Self);
00094
00096 itkTypeMacro(Compose3DVectorImageFilter,
00097 TernaryFunctorImageFilter);
00098
00099 #ifdef ITK_USE_CONCEPT_CHECKING
00100
00101 itkConceptMacro(InputHasNumericTraitsCheck,
00102 (Concept::HasNumericTraits<typename TInputImage::PixelType>));
00103
00105 #endif
00106
00107 protected:
00108 Compose3DVectorImageFilter() {}
00109 virtual ~Compose3DVectorImageFilter() {}
00110
00111 private:
00112 Compose3DVectorImageFilter(const Self&);
00113 void operator=(const Self&);
00114
00115
00116 };
00117
00118 }
00119
00120
00121 #endif
00122