如何使用Python检查NIFTI图像是否处于正确的方向/位置

2024-09-14 11:29:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的。目前正在学习Python上的医学成像数据,并想知道是否有可能确定NIFti图像的方向是否正确,以及如何进行转换。我在网上查了一下,发现了一些通过仿射变换以一定角度“旋转”成像数据(主要是JPG格式)的算法,但没有关于如何在nifti图像上进行旋转并通过nibabel将其保存为新的nifti图像的文档

来说明我的意思。我想学习如何将这个image 1更改为this image


Tags: 数据文档图像image算法格式this方向
1条回答
网友
1楼 · 发布于 2024-09-14 11:29:18

对于第一个问题,您应该检查NIfTI图像的方向,然后按您想要的方向旋转

为了检查方向,我们使用nibabel aff2axcodeshttps://nipy.org/nibabel/reference/nibabel.orientations.html#nibabel.orientations.aff2axcodes

对于旋转,我们将使用nibabel.orientations.flip_axishttps://nipy.org/nibabel/reference/nibabel.orientations.html#nibabel.orientations.flip_axis

'''

def check_orientation(ct_image, ct_arr):
"""
Check the NIfTI orientation, and flip to  'RPS' if needed.
:param ct_image: NIfTI file
:param ct_arr: array file
:return: array after flipping
"""
x, y, z = nib.aff2axcodes(ct_image.affine)
if x != 'R':
    ct_arr = nib.orientations.flip_axis(ct_arr, axis=0)
if y != 'P':
    ct_arr = nib.orientations.flip_axis(ct_arr, axis=1)
if z != 'S':
    ct_arr = nib.orientations.flip_axis(ct_arr, axis=2)
return ct_arr

'''

请注意,在您的情况下,您只需要翻转z轴,尝试使用上述功能并根据您的情况进行更改,以便检查数据

最后一件事是将新的NIfTI扫描(NumPy阵列)保存为nii图像。 为此,请使用Nifti1Image创建nii对象,然后使用nibabel.save将其保存到文件中

'''

    new_nifti = nib.Nifti1Image(***ct_arr***.astype(np.float), nii_original_scan.affine)
    nib.save(new_nifti, f'***path to new scan***.nii.gz')

'''

ct_arr-是您的numpy数组(确保为浮点型)。 第二个参数是加载后的原始NIfTI扫描

在save函数中,确保在文件名中添加后缀.nii或.nii.gz

希望清楚:)

相关问题 更多 >