Нормализация данных 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
Другие вопросы по тегам