如何在python中以Nifti格式编辑和保存体素大小和3D体积的对应仿射?

时间:2019-04-20 14:53:55

标签: python image medical nifti nibabel

我正在更改某些3D体积的体素大小。如何编辑pixdim字段并计算新的affine

我有一些各向异性的MR体积,体素大小为0.5 x 0.5 x 3 mm。而且我有一些代码可以将它们插值成各向同性的体积(例如0.5 x 0.5 x 0.5毫米体素大小)。 问题是当我需要保存文件时,我必须计算仿射来映射ijk空间中现在更密集的体素以引用xyz空间。我该怎么办?

首先,我的想法是使用旧的仿射并计算新的仿射。

例如,如果体积V的形状为具有256 x 256 x 20体素大小的0.5 x 0.5 x 3体素并插值到具有256 x 256 x 120体素大小的体积U 0.5 x 0.5 x 0.5体素中。

旧的仿射将执行[255 255 19]OA = [X Y Z],新的仿射将执行[255 255 119]NA = [X Y Z],我们知道AX=B X=inverse(A)B

因此新的仿射应为inverse([255 255 119])[X Y Z]。 但是,逆矩阵仅对于方矩阵存在。 inverse([255 255 119])不会有这种事情。

似乎在python-nibabel matlab-nifti-toolbox中没有set_voxel_size函数,等等。情况如何?

如何显式更改体素大小?

1 个答案:

答案 0 :(得分:0)

我现在正面临类似的问题。为了解决这个问题,我从头开始创建了一个nifti头,该头具有0.5 mm各向同性体素和所需的形状。您可以使用header.set_zooms()来设置体素大小(毫米)。

Page::ArchitectureScrapingJob