00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkVoronoiPartitioningImageFilter_h
00019 #define __itkVoronoiPartitioningImageFilter_h
00020
00021 #include "itkImageToImageFilter.h"
00022 #include "itkVoronoiSegmentationImageFilterBase.h"
00023 #include "itkImage.h"
00024
00025 namespace itk
00026 {
00027
00034 template <class TInputImage, class TOutputImage>
00035 class ITK_EXPORT VoronoiPartitioningImageFilter:
00036 public VoronoiSegmentationImageFilterBase<TInputImage,TOutputImage>
00037 {
00038 public:
00040 typedef VoronoiPartitioningImageFilter Self;
00041 typedef VoronoiSegmentationImageFilterBase<TInputImage,TOutputImage>
00042 Superclass;
00043 typedef SmartPointer <Self> Pointer;
00044 typedef SmartPointer<const Self> ConstPointer;
00045
00047 itkNewMacro(Self);
00048
00050 itkTypeMacro(VoronoiPartitioningImageFilter,
00051 VoronoiSegmentationImageFilterBase);
00052
00054 typedef typename Superclass::BinaryObjectImage BinaryObjectImage;
00055 typedef typename Superclass::IndexList IndexList;
00056 typedef typename Superclass::IndexType IndexType;
00057 typedef typename Superclass::RegionType RegionType;
00058 typedef typename Superclass::InputImageType InputImageType;
00059 typedef typename Superclass::OutputImageType OutputImageType;
00060 typedef typename Superclass::OutputPixelType OutputPixelType;
00061
00062 typedef typename Superclass::PointType PointType;
00063 typedef typename Superclass::PointTypeDeque PointTypeDeque;
00064 typedef typename Superclass::PointIdIterator PointIdIterator;
00065 typedef typename Superclass::CellAutoPointer CellAutoPointer;
00066 typedef typename Superclass::EdgeIterator EdgeIterator;
00067 typedef typename Superclass::NeighborIdIterator NeighborIdIterator;
00068
00070 virtual void MakeSegmentBoundary(void);
00071 virtual void MakeSegmentObject(void);
00073
00078 itkSetMacro(SigmaThreshold, double);
00079 itkGetConstMacro(SigmaThreshold, double);
00081
00083 itkStaticConstMacro(InputImageDimension, unsigned int,
00084 TInputImage::ImageDimension );
00085 itkStaticConstMacro(OutputImageDimension, unsigned int,
00086 TOutputImage::ImageDimension );
00088
00089 #ifdef ITK_USE_CONCEPT_CHECKING
00090
00091 itkConceptMacro(SameDimensionCheck,
00092 (Concept::SameDimension<InputImageDimension, OutputImageDimension>));
00093 itkConceptMacro(IntConvertibleToOutputCheck,
00094 (Concept::Convertible<int, OutputPixelType>));
00095
00097 #endif
00098
00099 protected:
00100 VoronoiPartitioningImageFilter();
00101 ~VoronoiPartitioningImageFilter();
00102 void PrintSelf(std::ostream &os, Indent indent) const;
00103
00104
00105 virtual void ClassifyDiagram(void);
00106
00107
00108 virtual void GenerateAddingSeeds(void);
00109
00110
00111 virtual bool TestHomogeneity(IndexList &Plist);
00112
00113
00114 double m_SigmaThreshold;
00115
00116 private:
00117 VoronoiPartitioningImageFilter(const Self&);
00118 void operator=(const Self&);
00119 };
00120
00121 }
00122
00123
00124 #ifndef ITK_MANUAL_INSTANTIATION
00125 #include "itkVoronoiPartitioningImageFilter.txx"
00126 #endif
00127
00128 #endif
00129