Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itkWatershedImageFilter.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkWatershedImageFilter.h,v $ 00005 Language: C++ 00006 Date: $Date: 2003/09/10 14:28:41 $ 00007 Version: $Revision: 1.40 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 #ifndef __itkWatershedImageFilter_h 00018 #define __itkWatershedImageFilter_h 00019 00020 #if defined(_MSC_VER) 00021 #pragma warning ( disable : 4786 ) 00022 #endif 00023 00024 #include "itkImageToImageFilter.h" 00025 #include "itkImage.h" 00026 #include "itkWatershedSegmenter.h" 00027 #include "itkWatershedSegmentTreeGenerator.h" 00028 #include "itkWatershedRelabeler.h" 00029 #include "itkWatershedMiniPipelineProgressCommand.h" 00030 00031 namespace itk 00032 { 00151 template <class TInputImage> 00152 class ITK_EXPORT WatershedImageFilter : 00153 public ImageToImageFilter< TInputImage, Image<unsigned long, 00154 ::itk::GetImageDimension<TInputImage>::ImageDimension> > 00155 { 00156 public: 00158 typedef WatershedImageFilter Self; 00159 00161 typedef TInputImage InputImageType; 00162 00164 itkStaticConstMacro (ImageDimension, unsigned int, 00165 TInputImage::ImageDimension); 00166 00168 typedef Image<unsigned long, itkGetStaticConstMacro(ImageDimension)> OutputImageType; 00169 00171 typedef typename InputImageType::RegionType RegionType; 00172 typedef typename InputImageType::SizeType SizeType; 00173 typedef typename InputImageType::IndexType IndexType; 00174 00176 typedef ImageToImageFilter< InputImageType, OutputImageType > Superclass; 00177 00179 typedef typename InputImageType::PixelType ScalarType; 00180 00182 typedef SmartPointer<Self> Pointer; 00183 00185 itkTypeMacro(WatershedImageFilter, ImageToImageFilter); 00186 00188 itkNewMacro(Self); 00189 00191 void GenerateData(); 00192 00195 void SetInput(const InputImageType *input) 00196 { 00197 // processObject is not const-correct so a const_cast is needed here 00198 this->ProcessObject::SetNthInput(0, 00199 const_cast<InputImageType *>( input ) ); 00200 m_Segmenter->SetInputImage( 00201 const_cast<InputImageType *>( input ) ); 00202 } 00203 00204 virtual void SetInput( unsigned int i, const TInputImage * image) 00205 { 00206 if (i != 0) 00207 { itkExceptionMacro(<< "Filter has only one input."); } 00208 else 00209 { this->SetInput(image); } 00210 } 00213 void SetThreshold(double); 00214 itkGetMacro(Threshold, double); 00215 00218 void SetLevel(double); 00219 itkGetMacro(Level, double); 00220 00222 typename watershed::Segmenter<InputImageType>::OutputImageType * 00223 GetBasicSegmentation() 00224 { 00225 return m_Segmenter->GetOutputImage(); 00226 } 00227 00229 typename watershed::SegmentTreeGenerator<ScalarType>::SegmentTreeType * 00230 GetSegmentTree() 00231 { 00232 return m_TreeGenerator->GetOutputSegmentTree(); 00233 } 00234 00235 // Override since the filter produces all of its output 00236 void EnlargeOutputRequestedRegion(DataObject *data); 00237 00238 protected: 00239 WatershedImageFilter(); 00240 virtual ~WatershedImageFilter() {} 00241 WatershedImageFilter(const Self&) {} 00242 void operator=(const Self&) {} 00243 void PrintSelf(std::ostream& os, Indent indent) const; 00244 00245 private: 00249 double m_Threshold; 00250 00254 double m_Level; 00255 00260 typename watershed::Segmenter<InputImageType>::Pointer m_Segmenter; 00261 typename watershed::SegmentTreeGenerator<ScalarType>::Pointer m_TreeGenerator; 00262 typename watershed::Relabeler<ScalarType, itkGetStaticConstMacro(ImageDimension)>::Pointer m_Relabeler; 00263 00264 unsigned long m_ObserverTag; 00265 bool m_FirstExecution; 00266 }; 00267 00268 } // end namespace itk 00269 00270 #ifndef ITK_MANUAL_INSTANTIATION 00271 #include "itkWatershedImageFilter.txx" 00272 #endif 00273 00274 #endif

Generated at Sat Mar 31 02:35:01 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000