00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkMaximumImageFilter_h
00018 #define __itkMaximumImageFilter_h
00019
00020 #include "itkBinaryFunctorImageFilter.h"
00021
00022 namespace itk
00023 {
00024
00037 namespace Function {
00038
00039 template< class TInput1, class TInput2, class TOutput>
00040 class Maximum
00041 {
00042 public:
00043 Maximum() {}
00044 ~Maximum() {}
00045 inline TOutput operator()( const TInput1 & A, const TInput2 & B)
00046 { return static_cast<TOutput>( (A > B)? A : B ); }
00047 };
00048 }
00049
00050 template <class TInputImage1, class TInputImage2, class TOutputImage>
00051 class ITK_EXPORT MaximumImageFilter :
00052 public
00053 BinaryFunctorImageFilter<TInputImage1,TInputImage2,TOutputImage,
00054 Function::Maximum<
00055 typename TInputImage1::PixelType,
00056 typename TInputImage2::PixelType,
00057 typename TOutputImage::PixelType> >
00058 {
00059 public:
00061 typedef MaximumImageFilter Self;
00062 typedef BinaryFunctorImageFilter<TInputImage1,TInputImage2,TOutputImage,
00063 Function::Maximum<
00064 typename TInputImage1::PixelType,
00065 typename TInputImage2::PixelType,
00066 typename TOutputImage::PixelType>
00067 > Superclass;
00068 typedef SmartPointer<Self> Pointer;
00069 typedef SmartPointer<const Self> ConstPointer;
00070
00072 itkNewMacro(Self);
00073
00074 protected:
00075 MaximumImageFilter() {}
00076 virtual ~MaximumImageFilter() {}
00077
00078 private:
00079 MaximumImageFilter(const Self&);
00080 void operator=(const Self&);
00081
00082 };
00083
00084 }
00085
00086
00087 #endif