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 warp_back_seg(self, path_warp): # get 3D images from list of slices im_dest = self.get_im_from_list(np.array([target_slice.im for target_slice in self.target_im])) im_src_gm = self.get_im_from_list(np.array([target_slice.gm_seg_M for target_slice in self.target_im])) im_src_wm = self.get_im_from_list(np.array([target_slice.wm_seg_M for target_slice in self.target_im])) # fname_dic_space2slice_space = slash_at_the_end(path_warp, slash=1)+'warp_dic2target.nii.gz' interpolation = 'nn' if self.param_seg.type_seg == 'bin' else 'linear' # warp GM im_src_gm_reg = apply_transfo(im_src_gm, im_dest, fname_dic_space2slice_space, interp=interpolation, rm_tmp=self.param.rm_tmp) # warp WM im_src_wm_reg = apply_transfo(im_src_wm, im_dest, fname_dic_space2slice_space, interp=interpolation, rm_tmp=self.param.rm_tmp) for i, target_slice in enumerate(self.target_im): # set GM and WM for each slice target_slice.set(gm_seg=im_src_gm_reg.data[i], wm_seg=im_src_wm_reg.data[i])
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 warp_back_seg(self, path_warp): # get 3D images from list of slices im_dest = self.get_im_from_list(np.array([target_slice.im for target_slice in self.target_im])) im_src_gm = self.get_im_from_list(np.array([target_slice.gm_seg_M for target_slice in self.target_im])) # fname_dic_space2slice_space = slash_at_the_end(path_warp, slash=1) + 'warp_dic2target.nii.gz' interpolation = 'linear' # warp GM im_src_gm_reg = apply_transfo(im_src_gm, im_dest, fname_dic_space2slice_space, interp=interpolation, rm_tmp=self.param.rm_tmp) for i, target_slice in enumerate(self.target_im): # set GM for each slice target_slice.set(gm_seg=im_src_gm_reg.data[i])
def warp_back_seg(self, path_warp): # get 3D images from list of slices im_dest = self.get_im_from_list(np.array([target_slice.im for target_slice in self.target_im])) im_src_gm = self.get_im_from_list(np.array([target_slice.gm_seg_M for target_slice in self.target_im])) # fname_dic_space2slice_space = os.path.join(path_warp, 'warp_dic2target.nii.gz') interpolation = 'linear' # warp GM im_src_gm_reg = apply_transfo(im_src_gm, im_dest, fname_dic_space2slice_space, interp=interpolation, rm_tmp=self.param.rm_tmp) for i, target_slice in enumerate(self.target_im): # set GM for each slice target_slice.set(gm_seg=im_src_gm_reg.data[i])