实例2 创建图像(手动创建一个itk::Image类)
#include "itkImage.h"//图像类的头文件
//这个例子阐述了如何人为地创建一个 itk::Image 类,下面是对图像类进行实例化、声明
//和创建的最简单程序代码。
int main(int, char *[])
{
//创建 一个三维、像素是无符号短字符数据类型的图像
typedef itk::Image< unsigned short, 3 > ImageType;
//调用 New( )操作创建图像image,并将结果分配到 itk::SmartPointer
ImageType::Pointer image = ImageType::New();
//图像的起始点是由一个Index类定义的,这个类中存放了一个n维数列
//表示图像中各维上最初的像素值
ImageType::IndexType start;
start[0] = 0; // first index on X 图像X维最初的像素值
start[1] = 0; // first index on Y 图像Y维最初的像素值
start[2] = 0; // first index on Z 图像Z维最初的像素值
//区域大小是用一个相同大小的图像数列来表示的(使用 Size 类),数列中的元素是无符号
//整数,表示图像像素在各个方向上的延伸。
ImageType::SizeType size;
size[0] = 200; // size along X 图像像素在X方向上的大小
size[1] = 200; // size along Y 图像像素在Y方向上的大小
size[2] = 200; // size along Z 图像像素在Z方向上的大小
//创建一个 ImageRegion 对象,这个region区域是用图像的起始地址和大小来初始化的
ImageType::RegionType region;
region.SetSize( size );//初始化图像大小
region.SetIndex( start );//初始化图像起始地址
//这个区域传递给图像对象来定义其延伸和初始地址
image->SetRegions( region );
//调用 Allocate( )来进行分配内存
image->Allocate();
return EXIT_SUCCESS;
}
ITK系列目录:
注:例程配套素材见系列目录