Нормализация данных BraTS
В настоящее время я работаю над алгоритмом сверхвысокого разрешения с использованием набора данных BraTS18. У меня проблема с нормализацией данных между [-1, 1].
from tqdm import tqdm
import os
import numpy as np
import SimpleITK as sitk
def load_data(path, length=32, offset=0):
if length == None:
my_dir = sorted(os.listdir(path))
else:
my_dir = sorted(os.listdir(path)[offset:offset+length])
data = []
gt = []
for p in tqdm(my_dir):
data_list = sorted(os.listdir(path+p))
img_itk = sitk.ReadImage(path + p + '/'+ data_list[0])
flair = sitk.GetArrayFromImage(img_itk)
data.append(flair)
data = np.asarray(data,dtype=np.float32)
data = data[:, 30:120, 30:222, 30:222].reshape([-1, 192, 192])
return data
сначала я подумал, что значения лежат в диапазоне [0, 255], но, как я пытался
data_test = load_data_test(pathHGG, length=None)
np.max(data_test)
Получил значение (32767.0), и теперь меня смущает диапазон значений данных по чутью BraTS. Может ли кто-нибудь сказать мне, как я должен выполнять нормализацию пикселей?
1 ответ
После дальнейших исследований я обнаружил, что каждый объем данных (каждый файл чутья) должен быть нормализован в соответствии с его значениями из-за смещения по контрасту между МРТ и МРТ. Надеюсь, это поможет кому-то, кто наткнется на мой вопрос. Вот мой новый код:
def load_data(path, length=32, offset=0):
if length == None:
my_dir = sorted(os.listdir(path))
else:
my_dir = sorted(os.listdir(path)[offset:offset+length])
data = []
for p in tqdm(my_dir):
data_list = sorted(os.listdir(path+p))
img_itk = sitk.ReadImage(path + p + '/'+ data_list[0])
#flair
data.append(sitk.GetArrayFromImage(img_itk))
#convert to numpy array
data = np.asarray(data, dtype=np.float32)
#Remove what is useless
data = data[:, 30:120, 30:222, 30:222]
#normalize each volume using minmax method
for i in range(data.shape[0]):
data[i, ...] = (data[i, ...] - np.min(data[i, ...]))*2/(np.max(data[i, ...]) - np.min(data[i, ...])) - 1
data = data.reshape([-1, data.shape[2], data.shape[3]])
return data