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
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)