Exemple #1
0
    def register_target(self):
        # create dir to store warping fields
        path_warping_fields = 'warp_target'
        if not os.path.exists(path_warping_fields):
            os.mkdir(path_warping_fields)
        # get 3D images from list of slices
        im_dest = self.get_im_from_list(
            np.array(
                [self.model.mean_image for target_slice in self.target_im]))
        im_src = self.get_im_from_list(
            np.array([target_slice.im for target_slice in self.target_im]))
        # register list of target slices on list of model mean image
        im_src_reg, fname_src2dest, fname_dest2src = register_data(
            im_src,
            im_dest,
            param_reg=self.param_data.register_param,
            path_copy_warp=path_warping_fields,
            rm_tmp=self.param.rm_tmp)
        # rename warping fields
        fname_src2dest_save = 'warp_target2dic.nii.gz'
        fname_dest2src_save = 'warp_dic2target.nii.gz'
        shutil.move(os.path.join(path_warping_fields, fname_src2dest),
                    os.path.join(path_warping_fields, fname_src2dest_save))
        shutil.move(os.path.join(path_warping_fields, fname_dest2src),
                    os.path.join(path_warping_fields, fname_dest2src_save))
        #
        for i, target_slice in enumerate(self.target_im):
            # set moved image for each slice
            target_slice.set(im_m=im_src_reg.data[i])

        return path_warping_fields
    def coregister_model_data(self):
        # get mean image
        im_mean = Image(param=self.mean_image)

        # register all slices WM on mean WM
        for dic_slice in self.slices:
            # create a directory to get the warping fields
            warp_dir = 'wf_slice' + str(dic_slice.id)
            if not os.path.exists(warp_dir):
                os.mkdir(warp_dir)

            # get slice mean WM image
            im_slice = Image(param=dic_slice.im)
            # register slice image on mean dic image
            im_slice_reg, fname_src2dest, fname_dest2src = register_data(
                im_src=im_slice,
                im_dest=im_mean,
                param_reg=self.param_data.register_param,
                path_copy_warp=warp_dir)
            shape = im_slice_reg.data.shape

            # use forward warping field to register all slice wm
            list_wmseg_reg = []
            for wm_seg in dic_slice.wm_seg:
                im_wmseg = Image(param=wm_seg)
                im_wmseg_reg = apply_transfo(im_src=im_wmseg,
                                             im_dest=im_mean,
                                             warp=warp_dir + '/' +
                                             fname_src2dest,
                                             interp='nn')

                list_wmseg_reg.append(im_wmseg_reg.data.reshape(shape))

            # use forward warping field to register gm seg
            list_gmseg_reg = []
            for gm_seg in dic_slice.gm_seg:
                im_gmseg = Image(param=gm_seg)
                im_gmseg_reg = apply_transfo(im_src=im_gmseg,
                                             im_dest=im_mean,
                                             warp=warp_dir + '/' +
                                             fname_src2dest,
                                             interp='nn')
                list_gmseg_reg.append(im_gmseg_reg.data.reshape(shape))

            # set slice attributes with data registered into the model space
            dic_slice.set(im_m=im_slice_reg.data)
            dic_slice.set(wm_seg_m=list_wmseg_reg)
            dic_slice.set(gm_seg_m=list_gmseg_reg)

            # remove warping fields directory
            if self.param.rm_tmp:
                shutil.rmtree(warp_dir)
    def register_target(self):
        # create dir to store warping fields
        path_warping_fields = 'warp_target'
        if not os.path.exists(path_warping_fields):
            os.mkdir(path_warping_fields)
        # get 3D images from list of slices
        im_dest = self.get_im_from_list(np.array([self.model.mean_image for target_slice in self.target_im]))
        im_src = self.get_im_from_list(np.array([target_slice.im for target_slice in self.target_im]))
        # register list of target slices on list of model mean image
        im_src_reg, fname_src2dest, fname_dest2src = register_data(im_src, im_dest, param_reg=self.param_data.register_param, path_copy_warp=path_warping_fields, rm_tmp=self.param.rm_tmp)
        # rename warping fields
        fname_src2dest_save = 'warp_target2dic.nii.gz'
        fname_dest2src_save = 'warp_dic2target.nii.gz'
        shutil.move(os.path.join(path_warping_fields, fname_src2dest), os.path.join(path_warping_fields, fname_src2dest_save))
        shutil.move(os.path.join(path_warping_fields, fname_dest2src), os.path.join(path_warping_fields, fname_dest2src_save))
        #
        for i, target_slice in enumerate(self.target_im):
            # set moved image for each slice
            target_slice.set(im_m=im_src_reg.data[i])

        return path_warping_fields
Exemple #4
0
    def coregister_model_data(self):
        # get mean image
        im_mean = Image(param=self.mean_image)

        # register all slices WM on mean WM
        for dic_slice in self.slices:
            # create a directory to get the warping fields
            warp_dir = 'wf_slice'+str(dic_slice.id)
            if not os.path.exists(warp_dir):
                os.mkdir(warp_dir)

            # get slice mean WM image
            im_slice = Image(param=dic_slice.im)
            # register slice image on mean dic image
            im_slice_reg, fname_src2dest, fname_dest2src = register_data(im_src=im_slice, im_dest=im_mean, param_reg=self.param_data.register_param, path_copy_warp=warp_dir)
            shape = im_slice_reg.data.shape

            # use forward warping field to register all slice wm
            list_wmseg_reg = []
            for wm_seg in dic_slice.wm_seg:
                im_wmseg = Image(param=wm_seg)
                im_wmseg_reg = apply_transfo(im_src=im_wmseg, im_dest=im_mean, warp=warp_dir+'/'+fname_src2dest, interp='nn')

                list_wmseg_reg.append(im_wmseg_reg.data.reshape(shape))

            # use forward warping field to register gm seg
            list_gmseg_reg = []
            for gm_seg in dic_slice.gm_seg:
                im_gmseg = Image(param=gm_seg)
                im_gmseg_reg = apply_transfo(im_src=im_gmseg, im_dest=im_mean, warp=warp_dir+'/'+fname_src2dest, interp='nn')
                list_gmseg_reg.append(im_gmseg_reg.data.reshape(shape))

            # set slice attributes with data registered into the model space
            dic_slice.set(im_m=im_slice_reg.data)
            dic_slice.set(wm_seg_m=list_wmseg_reg)
            dic_slice.set(gm_seg_m=list_gmseg_reg)

            # remove warping fields directory
            if self.param.rm_tmp:
                shutil.rmtree(warp_dir)