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
00022
00023
00024 #include "itkConfigure.h"
00025
00026 #ifdef ITK_USE_CONSOLIDATED_MORPHOLOGY
00027 #include "itkOptAdaptiveHistogramEqualizationImageFilter.h"
00028 #else
00029
00030
00031 #include <itkImageToImageFilter.h>
00032 #include <itkImage.h>
00033
00034 namespace itk
00035 {
00069 template <class TImageType>
00070 class ITK_EXPORT AdaptiveHistogramEqualizationImageFilter :
00071 public ImageToImageFilter< TImageType, TImageType >
00072 {
00073 public:
00075 typedef AdaptiveHistogramEqualizationImageFilter Self;
00076 typedef ImageToImageFilter< TImageType, TImageType > Superclass;
00077 typedef SmartPointer<Self> Pointer;
00078 typedef SmartPointer<const Self> ConstPointer;
00079
00080 itkStaticConstMacro(ImageDimension, unsigned int,
00081 TImageType::ImageDimension );
00082
00084 itkNewMacro(Self);
00085
00087 itkTypeMacro(AdaptiveHistogramEqualizationImageFilter, ImageToImageFilter);
00088
00090 typedef TImageType ImageType;
00091 typedef typename ImageType::SizeType ImageSizeType;
00092
00096 itkSetMacro(Alpha, float);
00097 itkGetConstMacro(Alpha, float);
00099
00104 itkSetMacro(Beta, float);
00105 itkGetConstMacro(Beta, float);
00107
00111 itkSetMacro(Radius, ImageSizeType);
00112 itkGetConstReferenceMacro(Radius, ImageSizeType);
00114
00117 itkSetMacro(UseLookupTable, bool);
00118 itkGetConstMacro(UseLookupTable, bool);
00119 itkBooleanMacro(UseLookupTable);
00121
00122 protected:
00123 AdaptiveHistogramEqualizationImageFilter()
00124 {
00125 m_Alpha = .3;
00126 m_Beta = .3;
00127 m_Radius.Fill( 5 );
00128 m_UseLookupTable = false;
00129 }
00130 virtual ~AdaptiveHistogramEqualizationImageFilter(){}
00131 void PrintSelf(std::ostream& os, Indent indent) const;
00132
00134 void GenerateData();
00135
00140 void GenerateInputRequestedRegion();
00141
00142 private:
00143 AdaptiveHistogramEqualizationImageFilter(const Self&);
00144 void operator=(const Self&);
00145
00147 float m_Alpha;
00148
00150 float m_Beta;
00151
00154 ImageSizeType m_Radius;
00155
00158 bool m_UseLookupTable;
00159
00161 float CumulativeFunction(float u, float v);
00162
00163 };
00164
00165 }
00166
00167 #ifndef ITK_MANUAL_INSTANTIATION
00168 #include "itkAdaptiveHistogramEqualizationImageFilter.txx"
00169 #endif
00170
00171 #endif
00172
00173 #endif
00174