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
00035 namespace itk
00036 {
00037
00038 namespace Function {
00039
00040 template< class TInput >
00041 class Compose3DVector
00042 {
00043 public:
00044 typedef Vector<TInput,3> OutputType;
00045 Compose3DVector() {}
00046 ~Compose3DVector() {}
00047 bool operator!=( const Compose3DVector & ) const
00048 {
00049 return false;
00050 }
00051 bool operator==( const Compose3DVector & other ) const
00052 {
00053 return !(*this != other);
00054 }
00055 inline OutputType operator()( const TInput & s1,
00056 const TInput & s2,
00057 const TInput & s3)
00058 {
00059 OutputType v;
00060 v[0] = s1;
00061 v[1] = s2;
00062 v[2] = s3;
00063 return v;
00064 }
00065 };
00066 }
00067
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<TInputImage,TInputImage,TInputImage,
00082 TOutputImage,
00083 Function::Compose3DVector<
00084 ITK_TYPENAME TInputImage::PixelType >
00085 > Superclass;
00086 typedef SmartPointer<Self> Pointer;
00087 typedef SmartPointer<const Self> ConstPointer;
00088
00089 typedef typename Superclass::OutputImageType OutputImageType;
00090
00092 itkNewMacro(Self);
00093
00094 #ifdef ITK_USE_CONCEPT_CHECKING
00095
00096 itkConceptMacro(InputHasNumericTraitsCheck,
00097 (Concept::HasNumericTraits<typename TInputImage::PixelType>));
00098
00100 #endif
00101
00102 protected:
00103 Compose3DVectorImageFilter() {}
00104 virtual ~Compose3DVectorImageFilter() {}
00105
00106 private:
00107 Compose3DVectorImageFilter(const Self&);
00108 void operator=(const Self&);
00109
00110
00111 };
00112
00113 }
00114
00115
00116 #endif
00117