00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkGrayscaleMorphologicalClosingImageFilter.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) Insight Software Consortium. All rights reserved. 00008 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notices for more information. 00013 00014 =========================================================================*/ 00015 #ifndef __itkGrayscaleMorphologicalClosingImageFilter_h 00016 #define __itkGrayscaleMorphologicalClosingImageFilter_h 00017 00018 #include "itkImageToImageFilter.h" 00019 00020 namespace itk { 00021 00043 template<class TInputImage, class TOutputImage, class TKernel> 00044 class ITK_EXPORT GrayscaleMorphologicalClosingImageFilter : 00045 public ImageToImageFilter<TInputImage, TOutputImage> 00046 { 00047 public: 00049 typedef GrayscaleMorphologicalClosingImageFilter Self; 00050 typedef ImageToImageFilter<TInputImage, TOutputImage> Superclass; 00051 typedef SmartPointer<Self> Pointer; 00052 typedef SmartPointer<const Self> ConstPointer; 00053 00055 itkNewMacro(Self); 00056 00058 itkTypeMacro(GrayscaleMorphologicalClosingImageFilter, 00059 ImageToImageFilter); 00060 00061 typedef TInputImage InputImageType; 00062 typedef TOutputImage OutputImageType; 00063 typedef typename InputImageType::Pointer InputImagePointer; 00064 typedef typename OutputImageType::RegionType OutputImageRegionType; 00065 00067 typedef typename TInputImage::PixelType PixelType ; 00068 00070 typedef TKernel KernelType; 00071 00073 itkSetMacro(Kernel, KernelType); 00074 00076 itkGetConstReferenceMacro(Kernel, KernelType); 00077 00078 protected: 00079 GrayscaleMorphologicalClosingImageFilter(); 00080 ~GrayscaleMorphologicalClosingImageFilter() {}; 00081 void PrintSelf(std::ostream& os, Indent indent) const; 00082 00086 void GenerateInputRequestedRegion() ; 00087 00089 void EnlargeOutputRequestedRegion(DataObject *itkNotUsed(output)); 00090 00093 void GenerateData (); 00094 00095 private: 00096 GrayscaleMorphologicalClosingImageFilter(const Self&); //purposely not implemented 00097 void operator=(const Self&); //purposely not implemented 00098 00100 KernelType m_Kernel ; 00101 } ; // end of class 00102 00103 } // end namespace itk 00104 00105 #ifndef ITK_MANUAL_INSTANTIATION 00106 #include "itkGrayscaleMorphologicalClosingImageFilter.txx" 00107 #endif 00108 00109 #endif 00110 00111