NIfTIファイルの読み込みと保存 with Python
pythonを使って、医用画像で使われるNIfTIファイルの出力を行います。
Nipyというライブラリを使用します。
NipyとNIfTIファイル
NIfTIファイルは、NipyのImage型で保持されます。
Imageは、dataとcoordmapに分類できます。
また、coordmapはdomainとrange, affineで構成されています。
NIfTIファイルの読み込み
from nipy import load_image img = load_image("読み込みたい.nii") #==== データを取得したい ==== data = img.get_data() #==== 座標情報(coordmap)を取得したい ==== coord = img.coordmap
NIfTIファイルの保存
読み込んだNIfTIと同じcoordmapの場合
from nipy import load_image, save_image from nipy.core.api import Image #==== ファイルの読み込み ==== img = load_image("読み込みたい.nii") #==== Image型 (読み込んだNIfTIのcoordmapを利用)==== new_img = Image(data, img.coordmap) #==== 保存 ==== save_image(new_img, "保存名.nii")
coordmapを書き換える or 作成する
from nipy import load_image, save_image from nipy.core.api import Image from nipy.core.reference.coordinate_map import AffineTransform, CoordinateSystem #==== domainの設定 ==== function_domain = CoordinateSystem(coord_names=('ijkt')) #==== rangeの設定 ==== function_range = CoordinateSystem(coord_names=('xyzt')) #==== affineの設定 ==== affine = np.array([[ -1., 0., 0., 0., 127.], [ 0., 1., 0., 0., -167.], [ 0., 0., 3., 0., -72.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 1.]]) #==== coordmapの作成 ==== coordmap = AffineTransform(function_domain, function_range, affine) #==== Image型 (読み込んだNIfTIのcoordmapを利用)==== new_img = Image(data, img.coordmap) #==== 保存 ==== save_image(new_img, "保存名.nii")