ITK:从测量列表创建直方图
发布时间
阅读量:
阅读量
该文本介绍了如何使用ITK库从测量列表创建直方图,并提供了完整的C++实现代码。主要内容包括:
背景与目的:通过测量数据创建直方图以分析数据分布。
实现步骤:
- 包括必要的头文件(如itkSampleToHistogramFilter.h、itkListSample.h等)。
- 定义了测量向量类型、样本类型和直方图类型。
- 提供了CreateSample函数用于生成测试数据。
代码结构:- 初始化并配置直方图滤波器。
- 设置直方图大小和范围。
- 执行滤波器操作并获取结果。
结果输出:- 显示直方图向量大小及各频率值。
- 输出总计数信息。
该方法通过直观的可视化方式展示了测量数据的分布情况。
ITK:从测量列表创建直方图
- 内容提要
- 输出结果
- C++实现代码
内容提要
从样品测量列表创建直方图。
输出结果
Histogram vector size: 1
Frequency of 0 : (1 to 1.1001) = 2
Frequency of 1 : (1.1001 to 1.2002) = 0
Frequency of 2 : (1.2002 to 1.3003) = 0
Frequency of 3 : (1.3003 to 1.4004) = 0
Frequency of 4 : (1.4004 to 1.5005) = 0
Frequency of 5 : (1.5005 to 1.6006) = 0
Frequency of 6 : (1.6006 to 1.7007) = 0
Frequency of 7 : (1.7007 to 1.8008) = 0
Frequency of 8 : (1.8008 to 1.9009) = 0
Frequency of 9 : (1.9009 to 2.001) = 1
Total count 3
C++实现代码
#include "itkSampleToHistogramFilter.h"
#include "itkListSample.h"
#include "itkHistogram.h"
using MeasurementVectorType = itk::Vector<unsigned char, 1>;
using SampleType = itk::Statistics::ListSample<MeasurementVectorType>;
using HistogramType = itk::Statistics::Histogram<float, itk::Statistics::DenseFrequencyContainer2>;
void CreateSample(SampleType::Pointer sample);
int main(int, char *[])
{
SampleType::Pointer sample = SampleType::New();
CreateSample(sample);
using SampleToHistogramFilterType = itk::Statistics::SampleToHistogramFilter<SampleType, HistogramType>;
SampleToHistogramFilterType::Pointer sampleToHistogramFilter = SampleToHistogramFilterType::New();
sampleToHistogramFilter->SetInput(sample);
SampleToHistogramFilterType::HistogramSizeType histogramSize(1);
histogramSize.Fill(10);
sampleToHistogramFilter->SetHistogramSize(histogramSize);
sampleToHistogramFilter->Update();
const HistogramType * histogram = sampleToHistogramFilter->GetOutput();
std::cout << "Histogram vector size: " << histogram->GetMeasurementVectorSize() << std::endl;
for (unsigned int i = 0; i < histogram->GetSize()[0]; i++)
{
std::cout << "Frequency of " << i << " : (" << histogram->GetBinMin(0, i) << " to " << histogram->GetBinMax(0, i)
<< ") = " << histogram->GetFrequency(i) << std::endl;
}
std::cout << "Total count " << histogram->GetTotalFrequency() << std::endl;
return EXIT_SUCCESS;
}
void CreateSample(SampleType::Pointer sample)
{
MeasurementVectorType mv;
mv[0] = 1.0;
sample->PushBack(mv);
mv[0] = 1.0;
sample->PushBack(mv);
mv[0] = 2.0;
sample->PushBack(mv);
}
全部评论 (0)
还没有任何评论哟~
