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 typedef typename Superclass::PointType PointType;
00062 typedef typename Superclass::PointTypeDeque PointTypeDeque;
00063 typedef typename Superclass::PointIdIterator PointIdIterator;
00064 typedef typename Superclass::CellAutoPointer CellAutoPointer;
00065 typedef typename Superclass::EdgeIterator EdgeIterator;
00066 typedef typename Superclass::NeighborIdIterator NeighborIdIterator;
00067
00069 virtual void MakeSegmentBoundary(void);
00070 virtual void MakeSegmentObject(void);
00072
00077 itkSetMacro(SigmaThreshold, double);
00078 itkGetMacro(SigmaThreshold, double);
00080
00082 itkStaticConstMacro(InputImageDimension, unsigned int,
00083 TInputImage::ImageDimension );
00084 itkStaticConstMacro(OutputImageDimension, unsigned int,
00085 TOutputImage::ImageDimension );
00087
00088 #ifdef ITK_USE_CONCEPT_CHECKING
00089
00090 itkConceptMacro(SameDimensionCheck,
00091 (Concept::SameDimension<InputImageDimension, OutputImageDimension>));
00092 itkConceptMacro(IntConvertibleToOutputCheck,
00093 (Concept::Convertible<int, OutputPixelType>));
00094
00096 #endif
00097
00098 protected:
00099 VoronoiPartitioningImageFilter();
00100 ~VoronoiPartitioningImageFilter();
00101 void PrintSelf(std::ostream &os, Indent indent) const;
00102
00103
00104 virtual void ClassifyDiagram(void);
00105
00106
00107 virtual void GenerateAddingSeeds(void);
00108
00109
00110 virtual bool TestHomogeneity(IndexList &Plist);
00111
00112
00113 double m_SigmaThreshold;
00114
00115 private:
00116 VoronoiPartitioningImageFilter(const Self&);
00117 void operator=(const Self&);
00118 };
00119
00120 }
00121
00122
00123 #ifndef ITK_MANUAL_INSTANTIATION
00124 #include "itkVoronoiPartitioningImageFilter.txx"
00125 #endif
00126
00127 #endif
00128
00129
00130
00131
00132