示例#1
0
 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)
示例#2
0
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
示例#3
0
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)
示例#5
0
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)