00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkAdaptiveHistogramEqualizationImageFilter_h
00018 #define __itkAdaptiveHistogramEqualizationImageFilter_h
00019
00020
00021 #include <itkImageToImageFilter.h>
00022 #include <itkImage.h>
00023
00024 namespace itk
00025 {
00059 template <class TImageType>
00060 class ITK_EXPORT AdaptiveHistogramEqualizationImageFilter :
00061 public ImageToImageFilter< TImageType, TImageType >
00062 {
00063 public:
00065 typedef AdaptiveHistogramEqualizationImageFilter Self;
00066 typedef ImageToImageFilter< TImageType, TImageType > Superclass;
00067 typedef SmartPointer<Self> Pointer;
00068 typedef SmartPointer<const Self> constPointer;
00069
00070 itkStaticConstMacro(ImageDimension, unsigned int,
00071 TImageType::ImageDimension );
00072
00074 itkNewMacro(Self);
00075
00077 itkTypeMacro(AdaptiveHistogramEqualizationImageFilter, ImageToImageFilter);
00078
00080 typedef TImageType ImageType;
00081 typedef typename ImageType::SizeType ImageSizeType;
00082
00086 itkSetMacro(Alpha, float);
00087 itkGetMacro(Alpha, float);
00088
00093 itkSetMacro(Beta, float);
00094 itkGetMacro(Beta, float);
00095
00099 itkSetMacro(Radius, ImageSizeType);
00100 itkGetConstReferenceMacro(Radius, ImageSizeType);
00101
00104 itkSetMacro(UseLookupTable, bool);
00105 itkGetMacro(UseLookupTable, bool);
00106 itkBooleanMacro(UseLookupTable);
00107
00108 protected:
00109 AdaptiveHistogramEqualizationImageFilter()
00110 {
00111 m_Alpha = .3;
00112 m_Beta = .3;
00113 m_Radius.Fill( 5 );
00114 m_UseLookupTable = false;
00115 }
00116 virtual ~AdaptiveHistogramEqualizationImageFilter(){}
00117 void PrintSelf(std::ostream& os, Indent indent) const;
00118
00120 void GenerateData();
00121
00126 void GenerateInputRequestedRegion();
00127
00128 private:
00129 AdaptiveHistogramEqualizationImageFilter(const Self&);
00130 void operator=(const Self&);
00131
00133 float m_Alpha;
00134
00136 float m_Beta;
00137
00140 ImageSizeType m_Radius;
00141
00144 bool m_UseLookupTable;
00145
00147 float CumulativeFunction(float u, float v);
00148
00149 };
00150
00151 }
00152
00153 #ifndef ITK_MANUAL_INSTANTIATION
00154 #include "itkAdaptiveHistogramEqualizationImageFilter.txx"
00155 #endif
00156
00157 #endif