Pythonの3.7でNIFTIの全体像スライスを変更

Batfly:

私は実際にはPythonを使用したMRI画像上の仕事です。画像フォーマットは、私は、X、YまたはZ斧上のスライスを視覚化する方法を取得NIFTI形式ですが、今、私はTU使用ソーベルは、それらのそれぞれをフィルタリングし、それらのスライスを持つ新しいNIFTIイメージを作成します。

そのために:

  • 私は主.nii.gzイメージをロード(IMG = nib.load(im_path))
  • 私は、新しい名前で再びメイン.nii.gzイメージをロード「img_sobel」(img_sobel = nib.load(im_path))
  • 各スライスのループを作成します。
  • ソーベルは、スライスをフィルタリング
  • img_sobelの対応するスライスにこのスライスを置き換える( "img_sobel_data [:,:、SL] == np.hypot(SX、SY)")
  • ループの後、名前に「image_XXX_Sobel」をimg_sobelを保存

サブプロットを使用して、私は、各スライス上のソーベルフィルタの動作を確認するが、それはライン「img_sobel_dataを[:,:、SL] == np.hypot(SX、SY)」思わない仕事、なぜ?

ここでloppセクションです:

    # Name the interested data
    img_data = img.get_fdata()
    img_sobel_data = img_sobel.get_fdata()

    header = img.header
    nb_img = header.get_data_shape()
    nb_img_h = nb_img[2] #Hauteur

    for sl in range(0,nb_img_h):
            slice_h = img_data[:, :, sl]
            #Sobel
            sx = ndimage.sobel(slice_h, axis=0, mode='constant')
            sy = ndimage.sobel(slice_h, axis=1, mode='constant')
            sobel_h = np.hypot(sx, sy)

            img_sobel_data[:, :, sl] = sobel_h #Change the image slice to the sobel one
# Save Sobel:
nib.save(img_sobel,imSobel_path)

どうしましたか ?私たちは、Pythonで別の1からの画像スライスを交換することができませんか?この問題を解決するためのコツはありますか?

ありがとうございました !

編集:[OK]を、私はもう少し取得なぜ私はそう簡単にtaht行うことはできません:私は、NIFTIイメージのスライスを抽出し、それらを濾過し、私はNIFTI画像自体を変えていませんでした!今、私の質問は、だから:どのようにimg_sobel.get_fdataからNIFTI画像のget()を変更するには?

Belal Homaidan:

あなたがいなかったという理由だけで、適切アフィンとヘッダーで、あなたのimg_sobel_dataを保存あなたはNiftiの画像保存したい場合、あなたはそれを保存する前に、ヘッダーとアフィンを提供する必要がimg_sobel = nib.Nifti1Image(img_sobel_data, affine=img_sobel_affine, header=header)そうしないとCV2ライブラリを使用して他のフォーマットに画像を保存することができcv2.imwrite、あなたの画像を保存しますJPGまたはPNGの拡張子インチ

#======================================
# Importing Necessary Libs
#======================================
import nibabel as nib
import numpy as np 
from scipy import ndimage, misc
import matplotlib.pyplot as plt
#==============================
img  = nib.load(Nifti_img_path)
img_sobel  = nib.load(Nifti_img_sobel_path)
#==============================
if True: 
    # Name the interested data  
    img_data = img.get_fdata()
    img_sobel_data = img_sobel.get_fdata()
    img_sobel_affine = img_sobel.affine
    header = img.header
    nb_img = header.get_data_shape()
    nb_img_h = nb_img[2] #Hauteur

    for sl in range(0,nb_img_h):
            slice_h = img_data[:, :, sl]
            #Sobel
            sx = ndimage.sobel(slice_h, axis=0, mode='constant')
            sy = ndimage.sobel(slice_h, axis=1, mode='constant')
            sobel_h = np.hypot(sx, sy)

            img_sobel_data[:, :, sl] = sobel_h #Change the image slice to the sobel one
# Save Sobel:
img_sobel = nib.Nifti1Image(img_sobel_data, affine=img_sobel_affine, header=header)
nib.save(img_sobel,imSobel_path)
#==============================

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=21581&siteId=1