我已经读取了所有这些图像,我将使用它们进行二进制分类,并将它们存储在两个不同的NumPy数组中。现在,我需要对这些图像进行编码,然后将其输入神经网络。
我不明白我怎么能同时编码两个不同的numpy数组,然后把它们输入神经网络。
array_1包含所有将被标记为1的图像,array_2包含所有将被标记为0的图像。
Python包platipy具有编码(多值)标签映射的功能。
安装:
pip install -U pip
pip install platipy
下面是一个简短的例子:
import SimpleITK as sitk
from platipy.imaging.label.utils import binary_encode_structure_list
img_label_1 = sitk.ReadImage("img_label_1.nii.gz")
img_label_2 = sitk.ReadImage("img_label_2.nii.gz")
img_label_3 = sitk.ReadImage("img_label_3.nii.gz")
# etc., for however many labels you have
label_list = [img_label_1, img_label_2, img_label_3]
img_encoded = binary_encode_structure_list(label_list)
如果您需要使用numpy,那么您可以将此SimpleITK图像转换为3D numpy数组:
arr_encoded = sitk.GetArrayFromImage(img_encoded)
注意:您还可以使用platipy中的工具解码编码的标签映射(例如NN的输出):
from platipy.imaging.label.utils import binary_decode_image
label_list = binary_decode_image(img_prediction_encoded)
希望这对你有帮助!