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 {
00047 if(A > B)
00048 {
00049 return static_cast<TOutput>(A);
00050 }
00051 else
00052 {
00053 return static_cast<TOutput>(B);
00054 }
00055 }
00056 };
00057 }
00058
00059 template <class TInputImage1, class TInputImage2, class TOutputImage>
00060 class ITK_EXPORT MaximumImageFilter :
00061 public
00062 BinaryFunctorImageFilter<TInputImage1,TInputImage2,TOutputImage,
00063 Function::Maximum<
00064 typename TInputImage1::PixelType,
00065 typename TInputImage2::PixelType,
00066 typename TOutputImage::PixelType> >
00067 {
00068 public:
00070 typedef MaximumImageFilter Self;
00071 typedef BinaryFunctorImageFilter<TInputImage1,TInputImage2,TOutputImage,
00072 Function::Maximum<
00073 typename TInputImage1::PixelType,
00074 typename TInputImage2::PixelType,
00075 typename TOutputImage::PixelType>
00076 > Superclass;
00077 typedef SmartPointer<Self> Pointer;
00078 typedef SmartPointer<const Self> ConstPointer;
00079
00081 itkNewMacro(Self);
00082
00083 protected:
00084 MaximumImageFilter() {}
00085 virtual ~MaximumImageFilter() {}
00086
00087 private:
00088 MaximumImageFilter(const Self&);
00089 void operator=(const Self&);
00090
00091 };
00092
00093 }
00094
00095
00096 #endif