尽管ITK可用于执行一般图像处理任务,但该工具包的主要目的是处理医学图像数据。在这方面,关于图像的附加信息被认为是必须的。特别是与像素之间的物理间距和图像在空间中的位置有关的信息在某些世界坐标系中是极其重要的。
图4.1说明了与itk::Image相关的主要几何概念。在这个图中,圆圈被用来代表像素的中心。假设像素的值存在为一个
位于像素中心的狄拉克函数。像素间距是在像素中心之间测量的,可以在每个维度上是不同的。图像原点与图像中第一个像素的坐标相关联。对于这个简化的示例,体素格与物理空间方向完全对齐,因此图像方向是一个恒等映射。如果立体像素点阵样本相对于物理空间进行旋转,则图像的方向将包含一个旋转矩阵。
图像间距用一个固定数组表示,其大小与图像的维数相匹配。为了手动设置图像的间距,必须创建相应类型的数组。
然后,数组中的元素应该用相邻像素中心之间的间距进行初始化。下面的代码演示了itk::Image类中处理间距和原点的可用方法。
#include "ItkImage.h"
static itk::Image<unsigned short, 3>::IndexType GetIndexFromMouseClick()
{
itk::Image<unsigned short, 3>::IndexType LeftEyeIndex;
LeftEyeIndex[0] = 60;
LeftEyeIndex[1] = 127;
LeftEyeIndex[2] = 93;
return LeftEyeIndex;
}
int main(int, char* [])
{
constexpr unsigned int Dimension = 3;
using ImageType = itk::Image<unsigned short, Dimension>;
ImageType::Pointer image = ImageType::New();
//初始化图片区域
const ImageType::SizeType size = { {200,200,200} };
const ImageType::IndexType start = { {0,0,0} };
/*以上两句话可以写成如下来初始化图片区域
Im