00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _itkVoronoiSegmentationImageFilter_h
00019 #define _itkVoronoiSegmentationImageFilter_h
00020
00021 #include "itkImageToImageFilter.h"
00022 #include "itkVoronoiSegmentationImageFilterBase.h"
00023 #include "itkImage.h"
00024
00025 namespace itk
00026 {
00027
00054 template <class TInputImage, class TOutputImage, class TBinaryPriorImage=Image<unsigned char,2> >
00055 class ITK_EXPORT VoronoiSegmentationImageFilter:
00056 public VoronoiSegmentationImageFilterBase<TInputImage,TOutputImage, TBinaryPriorImage>
00057 {
00058 public:
00060 typedef VoronoiSegmentationImageFilter Self;
00061 typedef VoronoiSegmentationImageFilterBase<TInputImage,TOutputImage
00062 ,TBinaryPriorImage> Superclass;
00063 typedef SmartPointer <Self> Pointer;
00064 typedef SmartPointer<const Self> ConstPointer;
00065
00067 itkNewMacro(Self);
00068
00070 itkTypeMacro(VoronoiSegmentationImageFilter,
00071 VoronoiSegmentationImageFilterBase);
00072
00074 typedef typename Superclass::BinaryObjectImage BinaryObjectImage;
00075 typedef typename Superclass::IndexList IndexList;
00076 typedef typename Superclass::IndexType IndexType;
00077 typedef typename Superclass::RegionType RegionType;
00078 typedef typename Superclass::InputImageType InputImageType;
00079
00081 itkSetMacro(Mean, double);
00082 itkGetMacro(Mean, double);
00084
00087 itkSetMacro(STD, double);
00088 itkGetMacro(STD, double);
00090
00092 itkSetMacro(MeanTolerance, double);
00093 itkGetMacro(MeanTolerance, double);
00095
00097 itkSetMacro(STDTolerance, double);
00098
00100 itkGetMacro(STDTolerance, double);
00101
00103 void SetMeanPercentError(double x);
00104 itkGetMacro(MeanPercentError, double);
00106
00108 itkGetMacro(STDPercentError, double);
00109 void SetSTDPercentError(double x);
00111
00114 void TakeAPrior(const BinaryObjectImage* aprior);
00115
00117 itkStaticConstMacro(InputImageDimension, unsigned int,
00118 TInputImage::ImageDimension );
00119 itkStaticConstMacro(OutputImageDimension, unsigned int,
00120 TOutputImage::ImageDimension );
00122
00123 #ifdef ITK_USE_CONCEPT_CHECKING
00124
00125 itkConceptMacro(SameDimensionCheck,
00126 (Concept::SameDimension<InputImageDimension, OutputImageDimension>));
00127 itkConceptMacro(IntConvertibleToOutputCheck,
00128 (Concept::Convertible<int, typename TOutputImage::PixelType>));
00129
00131 #endif
00132
00133 protected:
00134 VoronoiSegmentationImageFilter();
00135 ~VoronoiSegmentationImageFilter();
00136 virtual void PrintSelf(std::ostream& os, Indent indent) const;
00137
00138 private:
00139 double m_Mean;
00140 double m_STD;
00141 double m_MeanTolerance;
00142 double m_STDTolerance;
00143 double m_MeanPercentError;
00144 double m_STDPercentError;
00145
00146 virtual bool TestHomogeneity(IndexList &Plist);
00147
00148 private:
00149 VoronoiSegmentationImageFilter(const Self&);
00150 void operator=(const Self&);
00151 };
00152
00153 }
00154
00155
00156 #ifndef ITK_MANUAL_INSTANTIATION
00157 #include "itkVoronoiSegmentationImageFilter.txx"
00158 #endif
00159
00160 #endif
00161
00162
00163
00164
00165