文章目录
- nii基础
nii基础
大部分医学领域导出dicom格式,但是太复杂了。很多时候,将dicom转换为nifti格式也就是nii格式。
一个NIFTI格式主要包含三部分:hdr,ext,img。
hdr/header
这部分数据长度是固定的,当然不同版本可能规定的长度不同,但是同一版本的多个nii文件是相同的。
header里包含的信息有:
- 维度,x,y,z,单位是毫米。还有第四个维度,就是时间。这部分储存的主要是四个数字。
- voxel size(体素大小):毫米单位的x,y,z大小。
- 数据类型,一般是int16,这个精度不够,最好使用double类型。
- Form和转换矩阵,每一个Form都对应一个转换矩阵。暂时不知道Form是什么。
Extension
是自己可以随意定义数据的部分,可以自己用。但是通用的软件公司都无法使用这部分。
Image
储存3D或者4D的图像数据
坐标
dicom和nii格式定义了不同的方向,对于nii格式,坐标原点在大脑中某个部位上,方向可以从图上看出。
体素
转换矩阵
转换矩阵可以轻松分清图像的左右。转换矩阵是一个4X4的矩阵,作用是将体素索引(i,j,k)转换为空间位置(x,y,z)。具体使用方法是转换矩阵乘以一个包含(i,j,k)的矩阵,就可以得到一个包含(x,y,z)的矩阵。
转换矩阵用到了一些概念,在dicom格式上也是一样的。
转换矩阵内部参数概念
通过下图来理解这几个概念:
Related DICOM tags:
- ImageOrientionPatient:[1 0 0 0 1 0]
- 这个ImageOrientionPatient是一个行向量,主要有6个元素。前三个元素[1 0 0]是图中的c向量,后三个元素[0 1 0]图中的r向量,定义了这个切片图的长和宽的方向。对应于转换矩阵的顺序是[r_x r_y r_z v_x v_y v_z]
- ImagePositionPatient:[-100 -120 -40.2]
- 三个元素,x,y,z定义了切片图的坐标顶点。
ImageOrientionPatient和ImagePositionPatient定义了这个图的位置。
- PixelSpacing:[3 3]
- ImageOrientionPatient定义了长宽的方向,但是没有定义大小。对应于转换矩阵的顺序是[v_c v_r]
- SpaceBetweenSlices(SliceThickness):3
- 厚度,这个切片总共有多厚。
转换矩阵组成
通过上面参数的介绍,我们知道了转换矩阵的第一,二列的参数来源,第三列中的n表示切片厚度,x_n就表示第n个切片的顶点的空间坐标。这个矩阵最后一行是[0 0 0 1]的常数。
转换矩阵应用
转换矩阵乘以一个包含(i,j,k)的矩阵,就可以得到一个包含(x,y,z)的矩阵。
将体素坐标[i j k]转换为[x y z]
资源
nii格式
后缀名为.nii的文件格式又叫NIfTI-1
,它改编自广泛使用的ANALYZE™7.5
格式。一些比NIfTI-1
发展早的老软件也可以兼容NIfTI-1
。 比ANALYZE 7.5
新的特性如下:
- 将体素索引(i,j,k)与空间位置(x,y,z)相关的仿射坐标定义
- 表示FMRI(核磁共振)的时空切片顺序的代码;
- “完整”的8-128位数据类型集;
- 在1-4维域上存储矢量值数据集的标准化方法;
- 表示数据“含义”的代码;
- 向标头添加“扩展”数据的标准化方法;
- 双文件(.hdr和.img)或单文件(.nii)存储;
还有很多。 目的是在FMRI数据分析软件包之间的文件交换级别上促进互操作性。 AFNI,BrainVoyager,FSL和SPM的作者都致力于支持这种格式的输入和输出。
注意:该规范现在称为NIfTI-1.1。
最后
做医学影像开发的人没那么多,学习的路上难免遇到困难,如果看到文章的你希望有伙伴陪你一起行动!
请大胆来找我,让我们一起交流!
公众号名称:三丰杂货铺