ITK 支持任何像素类型和空间维的图像
一:图像类进行实例化、声明和创建的最简单程序代码。
//1.首先,必须包含图像类的头文件:
include “itkImage.h”
//2.其次,必须图像类进行实例化:像素类型和图像维
//创建一个二维、像素是无符号短字符数据类型图像:
typedef itk::Image< unsigned short, 2 > ImageType;
//3.最后, 调用 New( )操作创建图像,并将结果分配到 itk::SmartPointer。
ImageType::Pointer image = ImageType::New( );
二:图像区域ImageRegion
在 ITK 中,图像以一个或多个区域组合的形式存在。一个区域是图像的一个子集
LargePossibleRegion是一个完全定义的图像。
BufferedRegion 是内存中图像的一部分
RequestedRegion 是在对图像进行操作时被滤波器或其他类要求的一部分
一个区域是由两个类来定义的:itk::Index 和 itk::Size 类
与图像结合的图像中的 原始区域 是由 Index 来定义的。区域的延伸或大小是由 Size 来定义的。Index 是由一个 n 维数列来表示的,在拓扑图像结构中这些表示图像最初的像素的数列的元素都是整数。当人为创建图像时,用户就需要定义图像的大小和图像的起始位置
用图像的起始地址和大小来初始化的。
ImageType::IndexType start;//起点位置,需要赋初值
ImageType::SizeType size;//各方向尺寸,需要赋初值
ImageType::RegionType region;//这个区域是用图像的起始地址和大小来初始化的。
region.SetSize( size );
region.SetIndex( start );
这个区域传递给图像对象来定义其延伸和初始地址。SetRegion 方法同时设定LargePossibleRegion、 BufferedRegion 和 RequestedRegion
image->SetRegions( region );
image->Allocate( );
三:从文件中读取图像
ImageType::Pointer image = reader->GetOutput( );
四:访问像素数据
1)SetPixel( ) 和 GetPixel( )方法的用法。这两个方法可以直接访问图像中包含的像素数据。
SetPixel( ) 和 GetPixel( ) 这两种方法都是低效率的,只能用来调试或支持交互,例如点击鼠标查询像素值。
2)图像迭代器是有效访问图像像素数据的合适机制
五:定义原点和间距
图像原点和间距一经初始化,就会以物理空间坐标来正确映射到图像像素
GetOrigin( ) SetOrgin() 图像原点
GetSpacing( ) SetSpacing( ) 间距信息