介紹如何在 Python 中使用 SimpleITK 讀取與寫入 NIfTI 影像檔案。
NIfTI 影像
NIfTI 影像格式全名為 Neuroimaging Informatics Technology Initiative,是一種專門為神經影像資料設計的格式,早期多應用於 fMRI 影像上。
NIfTI 目前有兩種版本,分別為 NIfTI-1 與 NIfTI-2,NIfTI 官方網站上有提供 NIfTI-1 範例影像與 NIfTI-2 範例影像可做為測試使用。
讀取 NIfTI 影像
從 NIfTI 官方網站下載 NIfTI-1 測試影像檔案:
# 下載 NIfTI-1 測試影像檔案
wget https://nifti.nimh.nih.gov/nifti-1/data/avg152T1_LR_nifti.nii.gz
在 Python 中使用 SimpleITK 的 sitk.ReadImage()
函數讀取 NIfTI-1 影像檔案:
import SimpleITK as sitk # 讀取 GZip 壓縮的 NIfTI 影像檔 image = sitk.ReadImage('avg152T1_LR_nifti.nii.gz')
sitk.ReadImage()
函數亦可讀取普通的 NIfTI 影像檔案:
# 讀取 NIfTI 影像檔 image = sitk.ReadImage('avg152T1_LR_nifti.nii')
以 SimpleITK 讀取影像之後,就可以依照 SimpleITK 的處理方式來處理影像:
# 影像維度 print(image.GetDimension())
3
# 影像大小 print(image.GetSize())
(91, 109, 91)
關於更多 SimpleITK 的影像處理方式,可以參考 Python SimpleITK 影像處理教學:基本影像讀取與檢視。
寫入 NIfTI 影像
若要將 SimpleITK 的影像寫入壓縮的 NIfTI 檔案,可以直接使用 sitk.WriteImage()
函數來處理:
# 寫入 GZip 壓縮的 NIfTI 影像檔 sitk.WriteImage(image, "output.nii.gz")
若不想壓縮檔案,亦可以普通的 NIfTI 檔案來儲存:
# 寫入 NIfTI 影像檔 sitk.WriteImage(image, "output.nii")