1、nMax = data.max() nMin = data.min() nDis = nMax-nMin data = (data-nMin)/nDis
Refimg = sitk.ReadImage(os.path.join(NII_DIR, 'first_follow_up_T1.nii.gz'))
data = sitk.GetArrayFromImage(Refimg)
nMax = data.max()
nMin = data.min()
nDis = nMax-nMin
data = (data-nMin)/nDis
#normalize_data_storage(data)
out = sitk.GetImageFromArray(data)
out.SetSpacing(Refimg.GetSpacing())
out.SetOrigin(Refimg.GetOrigin())
sitk.WriteImage(out, os.path.join(NII_DIR, 'first_baseline_NCCT.nii.gz'))
2、data -= mean[:, np.newaxis, np.newaxis, np.newaxis] data /= std[:, np.newaxis, np.newaxis, np.newaxis]
def normalize_data(data, mean, std):
# data:[4,144,144,144]
data -= mean[:, np.newaxis, np.newaxis, np.newaxis]
data /= std[:, np.newaxis, np.newaxis, np.newaxis]
return data
def normalize_data_storage(data_storage):
means = list()
stds = list()
# [n_example,4,144,144,144]
for index in range(data_storage.shape[0]):
# [4,144,144,144]
data = data_storage[index]
# 分别求出每个模态的均值和标准差
means.append(data.mean(axis=(1, 2, 3)))
stds.append(data.std(axis=(1, 2, 3)))
# 求每个模态在所有样本上的均值和标准差[n_example,4]==>[4]
mean = np.asarray(means).mean(axis=0)
std = np.asarray(stds).mean(axis=0)
for index in range(data_storage.shape[0]):
# 根据均值和标准差对每一个样本归一化
data_storage[index] = normalize_data(data_storage[index], mean, std)
return data_storage