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