예제 #1
0
 def load_nii_file(self, path):
     img = self.__read_nii_file(path)  #读取3D源文件
     # img = self.__cut_nii_file(img)#去除文件周围无意义的区域 3D去黑边
     #缩放到目标大小 最近邻插值
     if len(self.target_size) == 2:
         # temp_targer_size = self.target_size[:]+[self.target_size[-1]]
         temp_targer_size = self.target_size[:] + [155]
     else:
         temp_targer_size = self.target_size[:]
     # ratio = [temp_targer_size[x]/img.shape[x] for x in range(3)]
     # resize_image = ndimage.interpolation.zoom(img,ratio, mode='nearest')
     # assert resize_image.shape==tuple(temp_targer_size)
     # resize_image[resize_image<0]=0#去除插值后出现的负像素
     resize_image = CutPadding.center_crop_3D(img=img,
                                              target_size=temp_targer_size)
     if self.dims == 3:
         resize_image = resize_image
     elif self.dims == 2:
         resize_image = resize_image[:, :, temp_targer_size[-1] // 2]
     else:
         raise ValueError
     img_norm = self.__normalize(resize_image, dtype=np.float32)  #归一化
     img_saved = self.__save_nii2npy(img_norm,
                                     path)  #保存 并且返回保存的文件 将对2D 3D区别对待
     return img_saved
 def __read_nii_file(self,path):
     temp_path = path[:-3]+"npy"
     if os.path.exists(temp_path)==True:
         if self.update==False:
             self.get_saved = True
             return np.load(temp_path)
     img = nib.load(path)
     img = np.array(img.dataobj[:,:,:])
     # print("*****")
     # print(img.shape,img.dtype)
     # print(img.min(),img.max())
     # print("*****")
     img = CutPadding.cut_img_3D(img)
     # print("*****")
     # print(img.shape,img.dtype)
     # print(img.min(),img.max())
     # print("*****")
     return img
예제 #3
0
 def __cut_nii_file(self, img):
     return CutPadding.cut_img_3D(img)