我想將 .nii 影像轉換為 .tif 以使用 U-Net 訓練我的模型。
1-我遍歷檔案夾中的所有影像。2-我回圈遍歷每個影像中的所有切片。3-我將每個切片保存為 .tif。
訓練影像轉換成功。但是,標簽(蒙版)都保存為黑色影像。我想成功地將這些掩碼從 .nii 轉換為 .tif,但我不知道如何。我讀到它可能是有亮度的東西,但我沒有清楚地理解這個想法,所以直到現在我都無法解決這個問題。
這種轉換的唯一原因是能夠訓練我的模型。如果有人可以直接分享以 .nii 格式為網路提供資料的方法,請隨意提出一個更好的主意。
import nibabel as nib
import matplotlib.pyplot as plt
import imageio
import numpy as np
import glob
import os
import nibabel as nib
import numpy as np
from tifffile import imsave
import tifffile as tiff
for filepath in glob.iglob('data/Task04_Hippocampus/labelsTr/*.nii.gz'):
a = nib.load(filepath).get_fdata()
a = a.astype('int8')
base = Path(filepath).stem
base = re.sub('.nii', '', base)
x,y,z = a.shape
for i in range(0,z):
newimage = a[:, :, i]
imageio.imwrite('data/Task04_Hippocampus/masks/' base '_' str(i) '.tif', newimage)
uj5u.com熱心網友回復:
除非您絕對必須使用 TIFF,否則出于以下幾個重要原因,我強烈建議您使用 NiFTI 格式:
影像值通常不是任意的。例如,在 CT 影像中,這些值對應于 X 射線衰減(查看此Wikipedia 頁面)。可能以某種方式縮放值的 TIFF 不適合這種情況。
NIfTI 還包含一個標題,其中包含正確解釋影像所需的關鍵幾何資訊,例如解析度、切片厚度和方向。
您可以使用SimpleITKnumpy.ndarray直接從 NIfTI 影像中提取 a 。這是一個代碼片段:
import SimpleITK as sitk
import numpy as np
img = sitk.ReadImage("your_image.nii")
arr = sitk.GetArrayFromImage(img)
slice_0 = arr[0,:,:] # this is a 2D axial slice as a np.ndarray
順便說一句:您存盤蒙版的影像看起來是黑色的原因是因為在 NIfTI 格式中,標簽的值為 1(背景為 0)。如果直接轉換為 TIFF,值 1 在解釋為 RGB 值時非常接近黑色 - 避免 TIFF 的另一個原因!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505704.html
標籤:Python 机器学习 图像处理 深度学习 非神经网络
