|
|
(One intermediate revision by one other user 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(int, char *[])
| | [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, resultingIndex);
| |
|
| |
| 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 EXIT_SUCCESS;
| |
| }
| |
| </source>
| |
| | |
| {{ITKCMakeLists|{{SUBPAGENAME}}}}
| |