forked from InsightSoftwareConsortium/ITK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
itkOtsuThresholdImageFilter.h
128 lines (98 loc) · 4.32 KB
/
itkOtsuThresholdImageFilter.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: itkOtsuThresholdImageFilter.h
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkOtsuThresholdImageFilter_h
#define __itkOtsuThresholdImageFilter_h
#include "itkImageToImageFilter.h"
#include "itkFixedArray.h"
namespace itk {
/** \class OtsuThresholdImageFilter
* \brief Threshold an image using the Otsu Threshold
*
* This filter creates a binary thresholded image that separates an
* image into foreground and background components. The filter
* computes the threshold using the OtsuThresholdImageCalculator and
* applies that theshold to the input image using the
* BinaryThresholdImageFilter. The NunberOfHistogram bins can be set
* for the Calculator. The InsideValue and OutsideValue can be set
* for the BinaryThresholdImageFilter.
*
* \sa OtsuThresholdImageCalculator
* \sa BinaryThresholdImageFilter
* \ingroup IntensityImageFilters Multithreaded
*/
template<class TInputImage, class TOutputImage>
class ITK_EXPORT OtsuThresholdImageFilter :
public ImageToImageFilter<TInputImage, TOutputImage>
{
public:
/** Standard Self typedef */
typedef OtsuThresholdImageFilter Self;
typedef ImageToImageFilter<TInputImage,TOutputImage> Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Runtime information support. */
itkTypeMacro(OtsuThresholdImageFilter, ImageToImageFilter);
/** Image pixel value typedef. */
typedef typename TInputImage::PixelType InputPixelType;
typedef typename TOutputImage::PixelType OutputPixelType;
/** Image related typedefs. */
typedef typename TInputImage::Pointer InputImagePointer;
typedef typename TOutputImage::Pointer OutputImagePointer;
typedef typename TInputImage::SizeType InputSizeType;
typedef typename TInputImage::IndexType InputIndexType;
typedef typename TInputImage::RegionType InputImageRegionType;
typedef typename TOutputImage::SizeType OutputSizeType;
typedef typename TOutputImage::IndexType OutputIndexType;
typedef typename TOutputImage::RegionType OutputImageRegionType;
/** Image related typedefs. */
itkStaticConstMacro(InputImageDimension, unsigned int,
TInputImage::ImageDimension ) ;
itkStaticConstMacro(OutputImageDimension, unsigned int,
TOutputImage::ImageDimension ) ;
/** Set the "outside" pixel value. The default value
* NumericTraits<OutputPixelType>::Zero. */
itkSetMacro(OutsideValue,OutputPixelType);
/** Get the "outside" pixel value. */
itkGetMacro(OutsideValue,OutputPixelType);
/** Set the "inside" pixel value. The default value
* NumericTraits<OutputPixelType>::max() */
itkSetMacro(InsideValue,OutputPixelType);
/** Get the "inside" pixel value. */
itkGetMacro(InsideValue,OutputPixelType);
/** Set/Get the number of histogram bins. Defaults is 128. */
itkSetClampMacro( NumberOfHistogramBins, unsigned long, 1,
NumericTraits<unsigned long>::max() );
itkGetMacro( NumberOfHistogramBins, unsigned long );
/** Get the computed threshold. */
itkGetMacro(Threshold,InputPixelType);
protected:
OtsuThresholdImageFilter();
~OtsuThresholdImageFilter(){};
void PrintSelf(std::ostream& os, Indent indent) const;
void GenerateInputRequestedRegion();
void GenerateData ();
private:
OtsuThresholdImageFilter(const Self&); //purposely not implemented
void operator=(const Self&); //purposely not implemented
InputPixelType m_Threshold;
OutputPixelType m_InsideValue;
OutputPixelType m_OutsideValue;
unsigned long m_NumberOfHistogramBins;
} ; // end of class
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkOtsuThresholdImageFilter.txx"
#endif
#endif