00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkCompose3DCovariantVectorImageFilter_h
00018 #define __itkCompose3DCovariantVectorImageFilter_h
00019
00020 #include "itkTernaryFunctorImageFilter.h"
00021 #include "itkCovariantVector.h"
00022
00035 namespace itk
00036 {
00037
00038 namespace Function {
00039
00040 template< class TInput >
00041 class Compose3DCovariantVector
00042 {
00043 public:
00044 typedef CovariantVector<TInput,3> OutputType;
00045 Compose3DCovariantVector() {}
00046 ~Compose3DCovariantVector() {}
00047 bool operator!=( const Compose3DCovariantVector & ) const
00048 {
00049 return false;
00050 }
00051 bool operator==( const Compose3DCovariantVector & 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< CovariantVector< ITK_TYPENAME TInputImage::PixelType,3 >,
00071 ::itk::GetImageDimension<TInputImage>::ImageDimension > >
00072 class ITK_EXPORT Compose3DCovariantVectorImageFilter :
00073 public
00074 TernaryFunctorImageFilter<TInputImage,TInputImage,
00075 TInputImage,TOutputImage,
00076 Function::Compose3DCovariantVector< ITK_TYPENAME TInputImage::PixelType > >
00077 {
00078 public:
00080 typedef Compose3DCovariantVectorImageFilter Self;
00081 typedef TernaryFunctorImageFilter<
00082 TInputImage,TInputImage,TInputImage,
00083 TOutputImage,
00084 Function::Compose3DCovariantVector<
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(Compose3DCovariantVectorImageFilter,
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 Compose3DCovariantVectorImageFilter() {}
00109 virtual ~Compose3DCovariantVectorImageFilter() {}
00110
00111 private:
00112 Compose3DCovariantVectorImageFilter(const Self&);
00113 void operator=(const Self&);
00114
00115
00116 };
00117
00118 }
00119
00120
00121 #endif
00122