00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkRegionalMinimaImageFilter_h
00018 #define __itkRegionalMinimaImageFilter_h
00019
00020 #include "itkImageToImageFilter.h"
00021 #include "itkConceptChecking.h"
00022
00023 namespace itk {
00024
00045 template<class TInputImage, class TOutputImage>
00046 class ITK_EXPORT RegionalMinimaImageFilter :
00047 public ImageToImageFilter<TInputImage, TOutputImage>
00048 {
00049 public:
00051 typedef RegionalMinimaImageFilter Self;
00052 typedef ImageToImageFilter<TInputImage, TOutputImage> Superclass;
00053 typedef SmartPointer<Self> Pointer;
00054 typedef SmartPointer<const Self> ConstPointer;
00055
00057 typedef TInputImage InputImageType;
00058 typedef TOutputImage OutputImageType;
00059 typedef typename InputImageType::Pointer InputImagePointer;
00060 typedef typename InputImageType::ConstPointer InputImageConstPointer;
00061 typedef typename InputImageType::RegionType InputImageRegionType;
00062 typedef typename InputImageType::PixelType InputImagePixelType;
00063 typedef typename OutputImageType::Pointer OutputImagePointer;
00064 typedef typename OutputImageType::ConstPointer OutputImageConstPointer;
00065 typedef typename OutputImageType::RegionType OutputImageRegionType;
00066 typedef typename OutputImageType::PixelType OutputImagePixelType;
00067
00069 itkStaticConstMacro(InputImageDimension, unsigned int,
00070 TInputImage::ImageDimension);
00071 itkStaticConstMacro(OutputImageDimension, unsigned int,
00072 TOutputImage::ImageDimension);
00074
00076 itkNewMacro(Self);
00077
00079 itkTypeMacro(RegionalMinimaImageFilter,
00080 ImageToImageFilter);
00081
00088 itkSetMacro(FullyConnected, bool);
00089 itkGetConstReferenceMacro(FullyConnected, bool);
00090 itkBooleanMacro(FullyConnected);
00092
00097 itkSetMacro(ForegroundValue, OutputImagePixelType);
00098 itkGetConstMacro(ForegroundValue, OutputImagePixelType);
00100
00105 itkSetMacro(BackgroundValue, OutputImagePixelType);
00106 itkGetConstMacro(BackgroundValue, OutputImagePixelType);
00108
00113 itkSetMacro(FlatIsMinima, bool);
00114 itkGetConstMacro(FlatIsMinima, bool);
00115 itkBooleanMacro(FlatIsMinima);
00117
00118
00119 #ifdef ITK_USE_CONCEPT_CHECKING
00120
00121 itkConceptMacro(InputHasPixelTraitsCheck,
00122 (Concept::HasPixelTraits<InputImagePixelType>));
00123 itkConceptMacro(InputHasNumericTraitsCheck,
00124 (Concept::HasNumericTraits<InputImagePixelType>));
00125
00127 #endif
00128
00129
00130 protected:
00131 RegionalMinimaImageFilter();
00132 ~RegionalMinimaImageFilter() {};
00133 void PrintSelf(std::ostream& os, Indent indent) const;
00134
00138 void GenerateInputRequestedRegion();
00139
00141 void EnlargeOutputRequestedRegion(DataObject *itkNotUsed(output));
00142
00145 void GenerateData();
00146
00147
00148 private:
00149 RegionalMinimaImageFilter(const Self&);
00150 void operator=(const Self&);
00151
00152 bool m_FullyConnected;
00153 bool m_FlatIsMinima;
00154 OutputImagePixelType m_ForegroundValue;
00155 OutputImagePixelType m_BackgroundValue;
00156
00157 };
00158
00159 }
00160
00161 #ifndef ITK_MANUAL_INSTANTIATION
00162 #include "itkRegionalMinimaImageFilter.txx"
00163 #endif
00164
00165 #endif
00166