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")
 
         
         
         
         
         
         
         
         
         
         
         
        