私は実際に Python を使用して MRI 画像に取り組んでいます。画像形式は、x、y、または z 軸でスライスを視覚化する方法を取得した NIFTI 形式ですが、それぞれにソーベル フィルタリングを使用し、それらのスライスで新しい 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)")
- ループの後、img_sobel を「image_XXX_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 で画像スライスを別のスライスから置き換えることはできませんか? この問題を解決するためのトリックはありますか?
ありがとうございました !
編集:わかりました、なぜそんなに簡単にできないのか、もう少しわかりました:NIFTI画像のスライスを抽出し、それらをフィルタリングしましたが、NIFTI画像自体は変更していません!!! だから私の質問:img_sobel.get_fdata()から取得したNIFTIイメージを変更するにはどうすればよいですか?