def test_zscore_normalization(self): from intensity_normalization.normalize import zscore normalized = zscore.zscore_normalize(self.img, self.brain_mask) self.assertAlmostEqual(np.mean( normalized.get_data()[self.brain_mask.get_data() == 1]), 0, places=4)
def main(): #util.generate_nifti_images(util.ORIGINAL_DATA) if the data is already in the nifti folder, unnecessary to call again fols = os.listdir(util.NIFTI_DATA) i = 1 for folname in fols: for fname in os.listdir(os.path.join(util.NIFTI_DATA, folname)): picnift = nib.load(os.path.join(util.NIFTI_DATA, folname, fname)) normalized = zscore.zscore_normalize( picnift) #this is the most basic normalization img_data = normalized.get_fdata() s = img_data.shape img_data = img_data[:, :, util.SKIP_BOTTOM:(s[2] - util.SKIP_TOP)] #img_data is type numpy ndarray s = img_data.shape mat1 = np.zeros((1, s[0], s[1], s[2]), dtype=np.float32) if (i == 1): print(s) i = i + 1 slice_0 = img_data[int(np.floor(s[0] / 2)), :, :] slice_1 = img_data[:, int(np.floor(s[1] / 2)), :] slice_2 = img_data[:, :, int(np.floor(s[2] / 2))] util.show_slices([slice_0, slice_1, slice_2]) plt.suptitle("Center slices for 1st patient") # doctest: +SKIP plt.show() mat1[0] = img_data filename = folname mat_dict = {} mat_dict['data'] = mat1
def process(image_fn, brain_mask_fn, output_dir, logger): img = io.open_nii(image_fn) dirname, base, _ = io.split_filename(image_fn) if output_dir is not None: dirname = output_dir if not os.path.exists(dirname): logger.info('Making output directory: {}'.format(dirname)) os.mkdir(dirname) if brain_mask_fn is None: mask = None else: if brain_mask_fn == 'nomask': mask = 'nomask' else: mask = io.open_nii(brain_mask_fn) normalized = zscore.zscore_normalize(img, mask) outfile = os.path.join(dirname, base + '_zscore.nii.gz') logger.info('Normalized image saved: {}'.format(outfile)) io.save_nii(normalized, outfile, is_nii=True)
def run_intensity_zscore(infile, outfolder): from intensity_normalization.normalize import zscore from intensity_normalization.utilities import io try: filename = infile.split(sep)[-1].split(".")[0] i = io.open_nii(infile) b_mask = io.open_nii( join(outfolder, "robex_masks", filename + "_mask.nii.gz")) if not exists(join(outfolder, "Robex")): makedirs(join(outfolder, "Robex")) print('running intensity zscore...') normalized = zscore.zscore_normalize(i, b_mask) io.save_nii(normalized, join(outfolder, filename + "_zscore.nii.gz")) shutil.move(join(infile), join(outfolder, "Robex")) except: e = sys.exc_info() print("Error: ", str(e[0])) print("Error: ", str(e[1])) print("Error: executing z-score method") sys.exit(2)
def get_T1_data(CV=True, fold=0, foldNBR=10, resample=0): train_MRI = [] test_MRI = [] train_seg = [] test_seg = [] seg = 0 T1 = 0 T2 = 0 T1CE = 0 flair = 0 i = 0 for dirpath, dirnames, filenames in os.walk('D:\BRATS'): for filename in [ f for f in filenames if (f.endswith("t1.nii.gz") or f.endswith("t2.nii.gz") or f.endswith("seg.nii.gz") or f.endswith("t1ce.nii.gz") or f.endswith("flair.nii.gz")) ]: img = nib.load(os.path.join(dirpath, filename)) if (i + fold) % foldNBR == 0 and CV: if filename.endswith("seg.nii.gz"): #On binarise la segmentation, si on veut segmenter les 4 classes ce n'est pas nécessaire seg = nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine) if filename.endswith("flair.nii.gz"): #Le package intensity-normalization fait la normalisation pour nous flair = zscore.zscore_normalize( img, nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine)) if filename.endswith("t1ce.nii.gz"): T1CE = zscore.zscore_normalize( img, nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine)) if filename.endswith("t1.nii.gz"): T1 = zscore.zscore_normalize( img, nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine)) if filename.endswith("t2.nii.gz"): T2 = zscore.zscore_normalize( img, nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine)) #On crop les 5 images de la même façon flair, T1, T1CE, T2, seg = crop(flair.get_fdata(), T1.get_fdata(), T1CE.get_fdata(), T2.get_fdata(), seg.get_fdata()) #On reshape pour avoir le format attendu par le network seg = np.reshape(seg, (155, 194, 148, 1)) T1 = np.reshape(T1, (155, 194, 148, 1)) T2 = np.reshape(T2, (155, 194, 148, 1)) T1CE = np.reshape(T1CE, (155, 194, 148, 1)) flair = np.reshape(flair, (155, 194, 148, 1)) combined = np.concatenate((T1, T2, T1CE, flair), axis=-1) #IMPORTANT On cast le tout en float16 pour limiter l'espace utilisé test_seg.append(seg.astype(np.float16)) test_MRI.append(combined.astype(np.float16)) i += 1 else: if filename.endswith("seg.nii.gz"): seg = nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine) if filename.endswith("flair.nii.gz"): flair = zscore.zscore_normalize( img, nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine)) if filename.endswith("t1ce.nii.gz"): T1CE = zscore.zscore_normalize( img, nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine)) if filename.endswith("t1.nii.gz"): T1 = zscore.zscore_normalize( img, nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine)) if filename.endswith("t2.nii.gz"): T2 = zscore.zscore_normalize( img, nib.Nifti1Image( img.get_fdata().astype(bool).astype(int), img.affine)) flair, T1, T1CE, T2, seg = crop(flair.get_fdata(), T1.get_fdata(), T1CE.get_fdata(), T2.get_fdata(), seg.get_fdata()) seg = np.reshape(seg, (155, 194, 148, 1)) T1 = np.reshape(T1, (155, 194, 148, 1)) T2 = np.reshape(T2, (155, 194, 148, 1)) T1CE = np.reshape(T1CE, (155, 194, 148, 1)) flair = np.reshape(flair, (155, 194, 148, 1)) combined = np.concatenate((T1, T2, T1CE, flair), axis=-1) train_seg.append(seg.astype(np.float16)) train_MRI.append(combined.astype(np.float16)) i += 1 return np.array(train_MRI), np.array(train_seg), np.array( test_MRI), np.array(test_seg)