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 inline OutputType operator()( const TInput & s1,
00048 const TInput & s2,
00049 const TInput & s3)
00050 {
00051 OutputType v;
00052 v[0] = s1;
00053 v[1] = s2;
00054 v[2] = s3;
00055 return v;
00056 }
00057 bool operator != (const Compose3DVector&) const
00058 {
00059 return false;
00060 }
00061 };
00062 }
00063
00064 template <typename TInputImage,
00065 typename TOutputImage=
00066 Image< Vector< ITK_TYPENAME TInputImage::PixelType,3 >,
00067 ::itk::GetImageDimension<TInputImage>::ImageDimension > >
00068 class ITK_EXPORT Compose3DVectorImageFilter :
00069 public
00070 TernaryFunctorImageFilter<TInputImage,TInputImage,
00071 TInputImage,TOutputImage,
00072 Function::Compose3DVector< ITK_TYPENAME TInputImage::PixelType > >
00073 {
00074 public:
00076 typedef Compose3DVectorImageFilter Self;
00077 typedef TernaryFunctorImageFilter<TInputImage,TInputImage,TInputImage,
00078 TOutputImage,
00079 Function::Compose3DVector<
00080 ITK_TYPENAME TInputImage::PixelType >
00081 > Superclass;
00082 typedef SmartPointer<Self> Pointer;
00083 typedef SmartPointer<const Self> ConstPointer;
00084
00085 typedef typename Superclass::OutputImageType OutputImageType;
00086
00088 itkNewMacro(Self);
00089
00090 protected:
00091 Compose3DVectorImageFilter() {}
00092 virtual ~Compose3DVectorImageFilter() {}
00093
00094 private:
00095 Compose3DVectorImageFilter(const Self&);
00096 void operator=(const Self&);
00097
00098
00099 };
00100
00101 }
00102
00103
00104 #endif