当前位置:网站首页>itk 多分辨率图像 itk::RecursiveMultiResolutionPyramidImageFilter
itk 多分辨率图像 itk::RecursiveMultiResolutionPyramidImageFilter
2022-06-12 12:25:00 【4月16!】
itk::RecursiveMultiResolutionPyramidImageFilter
最后获得多个分辨率图像:

#include "itkImage.h"
#include "itkImageFileWriter.h"
#include "itkRescaleIntensityImageFilter.h"
#include "itkRecursiveMultiResolutionPyramidImageFilter.h"
using UnsignedCharImageType = itk::Image<unsigned char, 2>;
static void
CreateImage(UnsignedCharImageType::Pointer image);
int
main(int, char *[])
{
UnsignedCharImageType::Pointer image = UnsignedCharImageType::New();
CreateImage(image);
using FloatImageType = itk::Image<float, 2>;
unsigned int numberOfLevels = 4;
using RecursiveMultiResolutionPyramidImageFilterType =
itk::RecursiveMultiResolutionPyramidImageFilter<UnsignedCharImageType, FloatImageType>;
RecursiveMultiResolutionPyramidImageFilterType::Pointer recursiveMultiResolutionPyramidImageFilter =
RecursiveMultiResolutionPyramidImageFilterType::New();
recursiveMultiResolutionPyramidImageFilter->SetInput(image);
recursiveMultiResolutionPyramidImageFilter->SetNumberOfLevels(numberOfLevels);
recursiveMultiResolutionPyramidImageFilter->Update();
// This outputs the levels (0 is the lowest resolution)
for (unsigned int i = 0; i < numberOfLevels; ++i)
{
// Scale so we can write to a PNG
using RescaleFilterType = itk::RescaleIntensityImageFilter<FloatImageType, UnsignedCharImageType>;
RescaleFilterType::Pointer rescaleFilter = RescaleFilterType::New();
rescaleFilter->SetInput(recursiveMultiResolutionPyramidImageFilter->GetOutput(i));
rescaleFilter->SetOutputMinimum(0);
rescaleFilter->SetOutputMaximum(255);
rescaleFilter->Update();
using FileWriterType = itk::ImageFileWriter<UnsignedCharImageType>;
FileWriterType::Pointer writer = FileWriterType::New();
std::stringstream ss;
ss << "output_" << i << ".png";
std::cout << "Writing " << ss.str() << std::endl;
writer->SetFileName(ss.str());
writer->SetInput(rescaleFilter->GetOutput());
writer->Update();
}
return EXIT_SUCCESS;
}
void
CreateImage(UnsignedCharImageType::Pointer image)
{
// Create a black image with a white region
UnsignedCharImageType::IndexType start;
start.Fill(0);
UnsignedCharImageType::SizeType size;
size.Fill(200);
UnsignedCharImageType::RegionType region(start, size);
image->SetRegions(region);
image->Allocate();
image->FillBuffer(0);
// Make a square
for (unsigned int r = 20; r < 80; r++)
{
for (unsigned int c = 30; c < 100; c++)
{
UnsignedCharImageType::IndexType pixelIndex;
pixelIndex[0] = r;
pixelIndex[1] = c;
image->SetPixel(pixelIndex, 255);
}
}
}
边栏推荐
猜你喜欢

轻量化---Project

Invalid date of moment conversion timestamp

Left and right cases + rotating pictures of small dots + no time

安装canvas遇到的问题和运行项目遇到的报错

JS built in object

C语言深度解剖篇——关键字&&补充内容

VS2019 设置 CTRL+/ 为注释和取消注释快捷键

Influxdb2.x benchmark tool - influxdb comparisons

golang的channel和条件变量在单生产单消费场景下的性能对比测试

【Leetcode】79. Word search
随机推荐
Video speed doubling in PC browser
Conversion between ROS map picture pixels and map coordinate system coordinates
Matlab install license manager error -8
JS how to convert a string into an array object
深度剖析指针的进阶——C语言的进阶篇
VGG小卷积代替大卷积 VS 深度可分离卷积
Bank layout meta universe: digital collections, digital employees become the main track!
JS将DOM导出为图片的方法
[JS] some handwriting functions: deep copy, bind, debounce, etc
Macro compilation preprocessing header Win32_ LEAN_ AND_ MEAN
Click to generate 4-bit random number and verify code setting
Open source project - (erp+ Hotel + e-commerce) background management system
For in and object The difference between keys()
Kotlin扩展函数实现原理
Beyondcompare 4 uses PJ
Vim,Gcc,Gdb
什么是模块化?模块化的好处
用cloneNode 克隆,解决id问题/方法 深复制和浅复制修改id的方法
Invalid date of moment conversion timestamp
WebStorage