|
|
(4 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| ==Histogram.cxx== | | {{warning|1=The media wiki content on this page is no longer maintained. The examples presented on the https://itk.org/Wiki/* pages likely require ITK version 4.13 or earlier releases. In many cases, the examples on this page no longer conform to the best practices for modern ITK versions. |
| <source lang="cpp">
| | }} |
| #include "itkHistogram.h"
| |
|
| |
|
| int main()
| | [https://itk.org/ITKExamples[ITK Sphinx Examples]] |
| {
| |
| typedef float MeasurementType ;
| |
| typedef itk::Statistics::Histogram< MeasurementType,
| |
| itk::Statistics::DenseFrequencyContainer2 > HistogramType;
| |
| HistogramType::Pointer histogram = HistogramType::New() ;
| |
| | |
| unsigned int dimension = 3;
| |
| HistogramType::SizeType size(dimension);
| |
|
| |
| unsigned int binsPerDimension = 30;
| |
| size.Fill(binsPerDimension);
| |
|
| |
| HistogramType::MeasurementVectorType lowerBound ;
| |
| lowerBound.SetSize(binsPerDimension);
| |
| lowerBound.Fill(1.1);
| |
|
| |
| HistogramType::MeasurementVectorType upperBound ;
| |
| upperBound.SetSize(binsPerDimension);
| |
| upperBound.Fill(6.2) ;
| |
|
| |
| histogram->SetMeasurementVectorSize(dimension);
| |
| histogram->Initialize(size, lowerBound, upperBound ) ;
| |
| | |
| histogram->SetFrequency(0UL, 0.0) ;
| |
| histogram->SetFrequency(1UL, 2.0) ;
| |
| histogram->SetFrequency(2UL, 3.0) ;
| |
| histogram->SetFrequency(3UL, 2.0) ;
| |
| histogram->SetFrequency(4UL, 0.5) ;
| |
| histogram->SetFrequency(5UL, 1.0) ;
| |
| histogram->SetFrequency(6UL, 5.0) ;
| |
| histogram->SetFrequency(7UL, 2.5) ;
| |
| histogram->SetFrequency(8UL, 0.0) ;
| |
| | |
| HistogramType::IndexType index(dimension) ;
| |
| index[0] = 0 ;
| |
| index[1] = 2 ;
| |
| index[1] = 4 ;
| |
| std::cout << "Frequency of the bin at index " << index
| |
| << " is " << histogram->GetFrequency(index) << std::endl ;
| |
| | |
|
| |
| std::cout << "Measurement vector at bin " << index << " is "
| |
| << histogram->GetMeasurementVector(index) << std::endl ;
| |
|
| |
| HistogramType::MeasurementVectorType mv(dimension) ;
| |
| mv[0] = 4.1 ;
| |
| mv[1] = 5.6 ;
| |
| mv[2] = 3.6 ;
| |
| | |
| HistogramType::IndexType resultingIndex = histogram->GetIndex(mv);
| |
|
| |
| std::cout << "Index of the measurement vector " << mv
| |
| << " is " << resultingIndex << std::endl ;
| |
| | |
| index.Fill(100) ;
| |
| if ( histogram->IsIndexOutOfBounds(index) )
| |
| {
| |
| std::cout << "Index " << index << " is out of bounds." << std::endl ;
| |
| }
| |
| | |
| std::cout << "Number of bins = " << histogram->Size()
| |
| << " Total frequency = " << histogram->GetTotalFrequency()
| |
| << " Dimension sizes = " << histogram->GetSize() << std::endl ;
| |
| | |
| std::cout << "50th percentile along the first dimension = "
| |
| << histogram->Quantile(0, 0.5) << std::endl ;
| |
| | |
| return 0 ;
| |
| }
| |
| | |
| </source>
| |
| | |
| {{ITKCMakeLists|Histogram}}
| |