itk数据表达之 创建图像
来源:互联网 发布:mac python include 编辑:程序博客网 时间:2024/06/07 23:32
ITK 支持任何像素类型和空间维的图像。
创建图像:(源代码在 Examples/DataRepresentation/Image/Image.cxx )
这个例子阐述了如何人为地创建一个 itk::Image 类,下面是对图像类进行实例化、声明和创建的最简单程序代码:
实际上,很少直接给图像分配内存和对图像进行初始化,图像通常都是从一个源文件直接读取的。
在 ITK 中,图像以一个或多个区域组合的形式存在。一个区域是图像的一个子集,并有可能是系统中其他类所占有的图像的一部分。一个比较普遍的区域是 LargePossibleRegion它是一个以完整部分定义的图像。其他重要的区域还有 BufferedRegion 它是内存中图像的一部分,和 RequestedRegion 它是在对图像进行操作时被滤波器或其他类要求的一部分。
如上所述,在 ITK 中人为的创建图像需要对图像进行实例化,并将描述图像的区域与图像结合起来。一个区域是有两个类来定义的:itk::Index 和 itk::Size 类。与图像结合的图像中的原始区域是有 Index 来定义的。区域的延伸或大小是有 Size 来定义的。Index 是有一个 n 维数列来表示的,在拓扑图像结构中这些表示图像最初的像素的数列的元素都是整数。当人为创建图像时,用户就需要定义图像的大小和图像的起始位置。有了这两个参数,就可以选择处理的区域。图像的起始点是有一个 Index 类定义的,这个类中存放了一个 n 维数列,数列中的元素都是整数,表示图像中各维上最初的像素值。
#include “itkImage.h”int main(int, char *argv[]){typedef itk::Image< unsigned short, 3 > ImageType;ImageType::Pointer image = ImageType::New();//然后就可以调用 New()操作创建图像并将结果分配到 itk::SmartPointer.ImageType::IndexType start;start[0] = 0; // first index on Xstart[1] = 0; // first index on Ystart[2] = 0; // first index on Z//区域大小是有一个相同大小的图像数列来表示的(使用 Size 类),数列中的元素是无符号整数表示图像像素在各个方向上的延伸。ImageType::SizeType size;size[0] = 200; // size along Xsize[1] = 200; // size along Ysize[2] = 200; // size along Z//定义了起始地址和图像大小这两个参数就可以创建一个 ImageRegion 对象,这个区域是有图像的起始地址和大小来初始化的。ImageType::RegionType region;region.SetSize( size );region.SetIndex( start );//最后,这个区域传递给图像对象来定义他的延伸和初始地址。SetRegion 方法同时设定了 LargePossibleRegion、BufferedRegion 和 RequestedRegion。注意到并未执行//任何操作来给图像像素数据分配内存,调用 Allocate()来进行分配内存。直到给区域分配了足够的内存来存放信息分配都不需要任何指令。image->SetRegions( region );image->Allocate(); return 0; }
#include <iostream>#include "itkImage.h"#include "itkImageFileWriter.h"int main(){typedef itk::Image< unsigned char, 2 > ImageType;ImageType::Pointer image = ImageType::New();ImageType::IndexType start;start[0] = 0; // first index on Xstart[1] = 0; // first index on YImageType::SizeType size;size[0] = 100; // size along Xsize[1] = 100; // size along YImageType::RegionType region; region.SetSize( size ); region.SetIndex( start );image->SetRegions( region );image->Allocate();ImageType::PixelType initialValue = 0;image->FillBuffer( initialValue );for (int i = 0; i < size[0]; i++){for (int j = 0; j< size[1]; j++){ImageType::IndexType pixelIndex;pixelIndex[0] = i;pixelIndex[1] = j;ImageType::PixelType pixelValue = image->GetPixel( pixelIndex );if (pixelIndex[0]*pixelIndex[0] + pixelIndex[1]*pixelIndex[1] < 90 * 90 ){image->SetPixel( pixelIndex, 100); } }}typedef itk::ImageFileWriter< ImageType > WriterType;WriterType::Pointer writer = WriterType::New();// Or other file format, such as mhd/mha, png, jpg etc.writer->SetFileName("output.jpg"); writer->SetInput(image);writer->Update();return 0;}
- itk数据表达之 创建图像
- ITK数据表达
- itk中创建一个图像数据
- ITK: 读序列图像和裸数据
- 图像数据在ITK和VTK之间转换
- ITK IOBase 图像属性
- 利用ITK旋转图像
- itk中的图像归一化
- CMake创建ITK程序
- ITK读DICOM数据
- ITK图像配准介绍
- ITK图像分割三个示例
- ITK学习笔记:图像FFT
- ITK的图像配准
- 医学图像处理工具包ITK
- ITK resample图像重采样
- ITK图像读写及显示
- itk中的基本图像操作
- 文件系统-- 虚拟文件系统介绍
- Chapter 1 Arrays and Strings - 1.4
- 《算法导论》 算法导论2.2.1插入排序
- java.lang.NoClassDefFoundError orgapachecommonslangStringUtils
- 文件系统-- 虚拟文件系统相关数据结构
- itk数据表达之 创建图像
- jquery.validate插件的(-)
- 沈懿 - 马超他妈的炒码面(终极三国里的)
- YQMA.net(你问我答---做最纯的技术问答社区)上线啦!!!
- php HTTP协议详解(2)
- 数据库中replicate、cast的简介
- 佛曰——做人的道理
- tomcat的版本不兼容的错误
- Ajax和JSP传值乱码问题