# Otsu Calculator And Filter Normalization

Gaëtan Lehmann
2011-09-05
The Otsu filters and calculators have been modified to use the architecture of the other threshold calculators. The histogram is no more computed by the calculator; it is delegated to another filter, such as ImageToHistogramFilter. As a consequence, the template parameter used for the Otsu calculator is the histogram type. The Otsu filter is using the usual maximum pixel value inside the objects and the minimum pixel values outside the objects. The values were swapped before this change. The Otsu filter doesn't let the user choose the number of bins in the histogram anymore. This choice is delegated to the ImageToHistogramFilter used internally, and is available by reconstructing the minipipeline ImageToHistogramFilter -> OtsuThresholdCalculator -> BinaryThresholdImageFilter.
I697873136fbca86258626284eae5df7b552c6241
Modules/Filtering/Thresholding/include/itkHuangThresholdCalculator.h Modules/Filtering/Thresholding/include/itkHuangThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkHuangThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkHuangThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkIntermodesThresholdCalculator.h Modules/Filtering/Thresholding/include/itkIntermodesThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkIntermodesThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkIntermodesThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkIsoDataThresholdCalculator.h Modules/Filtering/Thresholding/include/itkIsoDataThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkIsoDataThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkIsoDataThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkKittlerIllingworthThresholdCalculator.h Modules/Filtering/Thresholding/include/itkKittlerIllingworthThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkKittlerIllingworthThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkKittlerIllingworthThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkLiThresholdCalculator.h Modules/Filtering/Thresholding/include/itkLiThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkLiThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkLiThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkMaximumEntropyThresholdCalculator.h Modules/Filtering/Thresholding/include/itkMaximumEntropyThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkMaximumEntropyThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkMaximumEntropyThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkMomentsThresholdCalculator.h Modules/Filtering/Thresholding/include/itkMomentsThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkMomentsThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkMomentsThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkOtsuThresholdCalculator.h Modules/Filtering/Thresholding/include/itkOtsuThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkOtsuThresholdImageCalculator.h Modules/Filtering/Thresholding/include/itkOtsuThresholdImageCalculator.hxx Modules/Filtering/Thresholding/include/itkOtsuThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkOtsuThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkRenyiEntropyThresholdCalculator.h Modules/Filtering/Thresholding/include/itkRenyiEntropyThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkRenyiEntropyThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkRenyiEntropyThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkShanbhagThresholdCalculator.h Modules/Filtering/Thresholding/include/itkShanbhagThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkShanbhagThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkShanbhagThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkThresholdCalculator.h Modules/Filtering/Thresholding/include/itkTriangleThresholdCalculator.h Modules/Filtering/Thresholding/include/itkTriangleThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkTriangleThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkTriangleThresholdImageFilter.hxx Modules/Filtering/Thresholding/include/itkYenThresholdCalculator.h Modules/Filtering/Thresholding/include/itkYenThresholdCalculator.hxx Modules/Filtering/Thresholding/include/itkYenThresholdImageFilter.h Modules/Filtering/Thresholding/include/itkYenThresholdImageFilter.hxx Modules/Filtering/Thresholding/test/Baseline/itkHuangThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkIsoDataThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkLiThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkMaximumEntropyThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkRenyiEntropyThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkTriangleThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/Baseline/itkYenThresholdImageFilterTest.png.md5 Modules/Filtering/Thresholding/test/CMakeLists.txt Modules/Filtering/Thresholding/test/itkHuangThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkIntermodesThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkIsoDataThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkKittlerIllingworthThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkLiThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkMaximumEntropyThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkMomentsThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkOtsuMultipleThresholdsImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkOtsuThresholdImageCalculatorTest.cxx Modules/Filtering/Thresholding/test/itkOtsuThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkRenyiEntropyThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkShanbhagThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkTriangleThresholdImageFilterTest.cxx Modules/Filtering/Thresholding/test/itkYenThresholdImageFilterTest.cxx Modules/Nonunit/IntegratedTest/test/itkAlgorithmsPrintTest2.cxx Modules/Nonunit/Review/test/itkN4MRIBiasFieldCorrectionImageFilterTest.cxx Modules/Numerics/Statistics/include/itkHistogram.h Modules/Numerics/Statistics/include/itkHistogram.hxx Modules/Numerics/Statistics/include/itkImageToHistogramFilter.hxx Wrapping/WrapITK/Libraries/ITKThresholding/CMakeLists.txt Wrapping/WrapITK/Libraries/ITKThresholding/itkHuangThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkHuangThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkIntermodesThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkIntermodesThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkIsoDataThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkIsoDataThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkKittlerIllingworthThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkKittlerIllingworthThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkLiThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkLiThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkMaximumEntropyThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkMaximumEntropyThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkMomentsThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkMomentsThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkOtsuThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkOtsuThresholdImageCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkOtsuThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkRenyiEntropyThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkRenyiEntropyThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkShanbhagThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkShanbhagThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkTriangleThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkTriangleThresholdImageFilter.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkYenThresholdCalculator.wrap Wrapping/WrapITK/Libraries/ITKThresholding/itkYenThresholdImageFilter.wrap