python nibabelとsitkを使ってnii.gzファイルの保存例を読み込みます。
ni.gz形式は医学画像でよく使われる圧縮形式で、pythonではnibabelとsitkで読み取り保存できます。
nibabelを使う
nibabelを使うとイメージが90度回転しますので、読み込んで保存する場合はマッピング情報を保存します。3次元のイメージフォーマットは(z,y,x)です。
nii.gzファイルを読みだします
nib.Nifti 1 Imageaffine).to_filename('xxxx.nii.gz')
sitkを使う
sitkを使ってniiを読む時、読み取ったのはやはりピクチャーのフォーマットで、彼の持っている関数を使って処理することができますが、速度は比較的に遅いので、GetArayFroomImageを使ってnumpy形式に変換して処理することを提案します。3次元の画像のフォーマットは(x,y,z)です。
nii.gzファイルを読みだします
img=sitk.ReadImage('xxxx.nii.gz')
img=sitk.GetArayFroomImage(img)
nii.gzファイルを保存します
out=sitk.GetImageFroomAray(img)
sitk.WriteImage(out、'xxxx.nii.gz')
numpy配列とnibabelまたはsitkで相互に変換する場合、データのフォーマットに注意して、一般的にintまたはuintタイプとして保存します。たとえばniiを入力して16桁の符号がある場合、0~255階調図に変換する必要があります。次のコードが使えます。
Reason:
処理した分割結果をniiファイルに保存し、ITKsnapで読み込むと次のようなエラーが発生します。
SimpleITK Niiファイルの読み込みと保存
1.読み取り
以上のpythonはnibabelとsitkを使ってnii.gzファイルを読み込んで保存しています。例は小編集で皆さんに共有している内容です。参考にしてもらいたいです。どうぞよろしくお願いします。
nibabelを使う
nibabelを使うとイメージが90度回転しますので、読み込んで保存する場合はマッピング情報を保存します。3次元のイメージフォーマットは(z,y,x)です。
nii.gzファイルを読みだします
img = nib.load('xxxxx.nii.gz')
img_affine = img.affine
img = img.get_data()
nii.gzファイルを保存しますnib.Nifti 1 Imageaffine).to_filename('xxxx.nii.gz')
sitkを使う
sitkを使ってniiを読む時、読み取ったのはやはりピクチャーのフォーマットで、彼の持っている関数を使って処理することができますが、速度は比較的に遅いので、GetArayFroomImageを使ってnumpy形式に変換して処理することを提案します。3次元の画像のフォーマットは(x,y,z)です。
nii.gzファイルを読みだします
img=sitk.ReadImage('xxxx.nii.gz')
img=sitk.GetArayFroomImage(img)
nii.gzファイルを保存します
out=sitk.GetImageFroomAray(img)
sitk.WriteImage(out、'xxxx.nii.gz')
numpy配列とnibabelまたはsitkで相互に変換する場合、データのフォーマットに注意して、一般的にintまたはuintタイプとして保存します。たとえばniiを入力して16桁の符号がある場合、0~255階調図に変換する必要があります。次のコードが使えます。
img = sitk.ReadImage('xxxxx.nii.gz')
img = sitk.Cast(sitk.RescaleIntensity(img),sitk.sitkUInt8)
img = sitk.GetArrayFromImage(img)
追加知識:SimpleITK Niiファイルとエラー処理方式を保存するReason:
処理した分割結果をniiファイルに保存し、ITKsnapで読み込むと次のようなエラーが発生します。
SimpleITK Niiファイルの読み込みと保存
1.読み取り
import SimpleITK as sitk
filename = './xxx.nii'
ct = sitk.ReadImage(filename)
ct_array = sitk.GetArrayFromImage(ct)
origin =ct.GetOrigin()
direction = ct.GetDirection()
space = ct.GetSpacing()
2.保存
savedImg = sitk.GetImageFromArray(ct_array)
savedImg.SetOrigin(origin)
savedImg.SetDirection(direction)
savedImg.SetSpacing(space)
sitk.WriteImage(savedImg, saved_name)
ノート:保存されたct_array配列は必ずndarryで、floatタイプの才能はITKsnapに正確に読み取られます。intタイプの場合、上の図のエラーが発生します。以上のpythonはnibabelとsitkを使ってnii.gzファイルを読み込んで保存しています。例は小編集で皆さんに共有している内容です。参考にしてもらいたいです。どうぞよろしくお願いします。