def show(): """经过显示发现图像并不是很好,可能需要配准一下""" root_path = r"Y:\DYB\2020832DATA\doctor_gao\pet_ct_egfr\EGFR-" for case in os.listdir(root_path): ct_path = os.path.join(root_path, case, "ct.nii") pet_path = os.path.join(root_path, case, "pet.nii") roi_path = os.path.join(root_path, case, "no_name.nii") ct_array = get_array_from_path(ct_path) pet_array = get_array_from_path(pet_path) roi_array = get_array_from_path(roi_path) Imshow3DArray(standard(ct_array), roi_array) Imshow3DArray(standard(pet_array), roi_array)
def check_data(): case_path = r"Y:\DYB\PETCT_EGFR\EGFR+\004+" ct_path = os.path.join(case_path, "ct.nii") pet_path = os.path.join(case_path, "pet_Resize.nii") roi_path = os.path.join(case_path, "ct_roi.nii") ct_array = get_array_from_path(ct_path) pet_array = get_array_from_path(pet_path) roi_array = get_array_from_path(roi_path) ct_array = standard(ct_array) pet_array = standard(pet_array) pet_array = np.flipud(pet_array) Imshow3DArray(ct_array, roi_array)
def check_roi(): """检查之前ROI中的数值""" case_path = r"Y:\DYB\data_and_result\doctor_xie\knee_data\CAI NAI JI-20140605" data_path = os.path.join(case_path, "data_1.nii") roi_path = os.path.join(case_path, "roi.nii.gz") data_array = standard(get_array_from_path(data_path)) data_array = np.flipud(data_array) roi_array = get_array_from_path(roi_path) roi_1 = np.where(roi_array == 1, 1, 0) # 上软骨后面的层 roi_2 = np.where(roi_array==2, 1, 0) # 上软骨前面的层 roi_3 = np.where(roi_array==3, 1, 0) # 下软骨后面的层 roi_4 = np.where(roi_array==4, 1, 0) roi_5 = np.where(roi_array==5, 1, 0) roi_6 = np.where(roi_array==6, 1, 0) Imshow3DArray(standard(data_array), [roi_1, roi_2, roi_3, roi_4])
def get_result(): data_path = r"Y:\DYB\shidaoai_vibenii\649302\BLADE42_256_3mm\026_BLADE42_256_3mm.nii" roi_path = r"Y:\DYB\shidaoai_vibenii\649302\BLADE42_256_3mm\026_BLADE42_256_3mm_ROI.mha" data_array = standard(get_array_from_path(data_path)) roi_array = get_array_from_path(roi_path) new_roi = binary_dilation(roi_array) Imshow3DArray(data_array, [roi_array, new_roi*1])
def get_data_array(self): for file in os.listdir(self.case_path): if file.split("_")[-1] == "src.nii": data_path = os.path.join(self.case_path, file) data_array = get_array_from_path(data_path) data_array = standard(data_array) return data_array
def show(self): for file in os.listdir(self.case_path): if file.split("_")[-1] == "src.nii": data_path = os.path.join(self.case_path, file) data_array = standard(get_array_from_path(data_path)) roi_array_list = self.get_roi_list() Imshow3DArray(data_array, roi_array_list)
def get_roi(): root_path = r"Y:\DYB\2020832DATA\doctor_xie\Normal_data_nii_and_T2" for case in os.listdir(root_path)[4:]: case_path = os.path.join(root_path, case) data_path = os.path.join(case_path, "data.nii") data = sitk.ReadImage(data_path) data_array = get_array_from_path(data_path) data_array = standard(data_array) data_array = np.flipud(data_array) roi_name = ["roi_" + str(i) + ".npy"for i in range(1, 5)] roi_path = [os.path.join(case_path, i) for i in roi_name] roi_array_list = [np.load(i) for i in roi_path] # roi_array_list = [get_big_roi(i) for i in roi_array_list] roi_1 = np.where(roi_array_list[0] == 1, 1, 0) roi_2 = np.where(roi_array_list[1] == 1, 2, 0) roi_3 = np.where(roi_array_list[2] == 1, 3, 0) roi_4 = np.where(roi_array_list[3] == 1, 4, 0) # roi_1 = get_big_roi(roi_1) # roi_2 = get_big_roi(roi_2) # roi_3 = get_big_roi(roi_3) # roi_4 = get_big_roi(roi_4) # big_roi = roi_1 + roi_2 + roi_3 + roi_4 # print(np.sum(roi_1), np.sum(roi_2), np.sum(roi_3), np.sum(roi_4)) Imshow3DArray(data_array, roi_array_list) # SaveArrayToNiiByRef(store_path = os.path.join(case_path, "roi.nii.gz"), # array=big_roi, # ref_image=data) print(case)
def show_origin_roi(self, value): """展示最原始的ROI,并去掉半月板""" for case in os.listdir(self.root_path): data_path = os.path.join(self.root_path, case, "new_data.nii") data_array = standard(get_array_from_path(data_path)) roi_path = os.path.join(self.root_path, case, "roi.nii.gz") """展示原始ROI""" roi_array = get_array_from_path(roi_path) roi_list = self.get_single_roi(roi_array) # Imshow3DArray(data_array, roi_list) """展示软骨和下骨ROI""" bone_roi_path = os.path.join(self.root_path, case, "moved_new_roi.nii.gz") # 整数 bone_roi_array = get_array_from_path(bone_roi_path) bone_roi_list = self.get_single_roi(bone_roi_array) Imshow3DArray(data_array, bone_roi_list[value]) Imshow3DArray(data_array, roi_list[value]) print(np.unique(bone_roi_array)) """展示计算图像""" four_array = os.path.join(self.root_path, case, "four_T2_array", "T2_3D_array.npy") four_array = np.load(four_array) img_mean = cv2.blur(four_array, (5, 5)) # for i in range(four_array.shape[-1]): # sns.set() # ax = sns.heatmap(img_mean[...,i]) # plt.show() break
def get_croped_data_roi(data_path, roi_path, store_path=None): data_array = get_array_from_path(data_path) # data_array = np.flipud(data_array) # 注意这里的数据要进行翻转的 roi_array = get_array_from_path(roi_path) data_array = standard(data_array) crop_array = crop_data_array(roi_array, data_array) def resize_data(data_array, resized_shape): resized_data = cv2.resize(data_array, resized_shape, interpolation=cv2.INTER_NEAREST) return resized_data roi_new = crop_data_array(roi_array, roi_array) new_array = resize_data(crop_array, (224, 224)) roi_new = resize_data(roi_new, (224, 224)) # 选择只含有roi的层进行保存 index = [] for i in range(roi_new.shape[-1]): if np.sum(roi_new[..., i]) != 0: index.append(i) roi_new = roi_new[..., index] data_new = new_array[..., index] Imshow3DArray(data_new, roi_new)
def get_image(): data_path = r"Y:\DYB\chang\BAO CAI ZHEN_2769351_sag_Resample.nii" data_array = get_array_from_path(data_path) data_array = standard(data_array) th = filters.threshold_otsu(data_array) roi_array = np.where(data_array > th / 6.1, 1, 0) roi_array = cv2.blur(roi_array, (12, 12)) Imshow3DArray(data_array, roi_array)
def show_T2(root_path): """查看一下图像""" for case in os.listdir(root_path): T2_array = get_array_from_path(os.path.join(root_path, case, "T2.nii")) roi_array = get_array_from_path( os.path.join(root_path, case, "ruan_gu_up_1.nii")) T2_array = standard(T2_array) Imshow3DArray(T2_array, roi_array)
def get_new_pet(root_path): for case in os.listdir(root_path): pet_path = os.path.join(root_path, case, "pet.nii") ct_path = os.path.join(root_path, case, "ct.nii") roi_path = os.path.join(root_path, case, "no_name.nii") roi_array = get_array_from_path(roi_path) reg, result = Registrator_image(fix_path=ct_path, moving_path=pet_path) Imshow3DArray(standard(reg), roi_array)
def check_resample_result(self): """检查重采样的结果""" resample_result = os.path.join(self.case_path, "pet_Resize.nii") pet_array = get_array_from_path(resample_result) sum_array = np.sum(pet_array) pet_array = standard(pet_array) roi_path = os.path.join(self.case_path, "no_name.nii") roi_array = get_array_from_path(roi_path) pet_array = np.flipud(pet_array) Imshow3DArray(pet_array, roi_array) print(sum_array)
def get_roi(self): for group in self.normal_and_instability: for case in os.listdir(os.path.join(self.root_path, group)): data_path = os.path.join(self.root_path, group, case, "data.nii") data_array = standard(get_array_from_path(data_path)) data = sitk.ReadImage(data_path) big_roi = 0 for i in range(1, 9): roi_path = os.path.join(self.root_path, group, case, "roi_" + str(i) + ".nii") roi_array = get_array_from_path(roi_path) big_roi += roi_array Imshow3DArray(data_array, big_roi)
def show_T2_and_ROI(self): T2_path = os.path.join(self.case_path, "T2.nii") roi_list = [ "xia_gu_down_1.nii", "xia_gu_down_2.nii", "xia_gu_up_1.nii", "xia_gu_up_2.nii" ] T2_array = standard(get_array_from_path(T2_path)) T2_array = cv2.blur(T2_array, (5, 5)) for roi in roi_list: roi_path = os.path.join(self.case_path, roi) roi_array = get_array_from_path(roi_path) Imshow3DArray(T2_array, roi_array)
def show_resample_image(): data_path = r"Y:\DYB\PETCT_EGFR\EGFR-\001-\pet_Resize.nii" roi_path = r"Y:\DYB\PETCT_EGFR\EGFR-\001-\no_name.nii" roi_array = get_array_from_path(roi_path) data_array = get_array_from_path(data_path) data_array = np.flipud(data_array) ct_path = r"Y:\DYB\PETCT_EGFR\EGFR-\001-\ct.nii" ct_array = get_array_from_path(ct_path) ct_pet_array = ct_array + data_array ct_pet_array = standard(ct_pet_array) ct_pet_array = np.flipud(ct_pet_array) ct_array = np.flipud(ct_array) # Imshow3DArray(standard(ct_array), roi_array) Imshow3DArray(ct_pet_array, roi_array)
def get_3D_array(self): # T_2_array = [] # file_list = self.sort_file(self.store_folder_path) # for file in file_list: # file_path = os.path.join(self.store_folder_path, file) # image_2D_array = np.load(file_path) # T_2_array.append(image_2D_array[0, ...]) # plt.imshow(image_2D_array[0, ...]) # plt.show() # T_2_array = np.array(T_2_array) # T_2_array = np.transpose(T_2_array, (1, 2, 0)) # print(T_2_array.shape) data_path = r"Y:\DYB\2020832DATA\doctor_xie\normal_control\case0\nii_folder\T2MAPPING_anatomical_LEFT_e1.nii" data_array = get_array_from_path(data_path) data_array = np.flipud(data_array) Imshow3DArray(standard(data_array))
def check_data_roi(): """检查数据和ROI""" root_path = r"Y:\DYB\data_and_result\doctor_xie\knee_data" store_path = r"Y:\DYB\data_and_result\doctor_xie\knn_segment_all_roi" for case in os.listdir(root_path): case_path = os.path.join(root_path, case) store_case_path = make_folder(os.path.join(store_path, case)) # 选择分割的数据是的一个回波的数据 data_path = os.path.join(case_path, "data_1.nii") roi_path = os.path.join(case_path, "roi.nii.gz") data_array = standard(get_array_from_path(data_path)) data_array = np.flipud(data_array) roi_array = get_array_from_path(roi_path) roi_array_list = [ np.where(roi_array == i, 1, 0) for i in np.unique(roi_array)[1:] ] np.save(os.path.join(store_case_path, "data.npy"), data_array) np.save(os.path.join(store_case_path, "all_roi.npy"), roi_array_list) print(case, " is finished!")
def get_croped_data_roi(data_path, roi_path, store_path): data_array = get_array_from_path(data_path) # data_array = np.flipud(data_array) # 注意这里的数据要进行翻转的 roi_array = get_array_from_path(roi_path) data_array = standard(data_array) crop_array = crop_data_array(roi_array, data_array) def resize_data(data_array, resized_shape): resized_data = cv2.resize(data_array, resized_shape, interpolation=cv2.INTER_NEAREST) return resized_data roi_new = crop_data_array(roi_array, roi_array) new_array = resize_data(crop_array, (224, 224)) roi_new = resize_data(roi_new, (224, 224)) # Imshow3DArray(standard(new_array), roi_new) np.save(os.path.join(store_path, "croped_pet.npy"), new_array) np.save(os.path.join(store_path, "croped_roi.npy"), roi_new)
def get_ROI(self, value, store_name): # value用来选择 ruangu_roi = os.path.join(self.case_path, "roi.nii.gz") # 软骨路径 xiagu_roi = os.path.join(self.case_path, "moved_new_roi.nii.gz") # 下骨路径 data_path = os.path.join(self.case_path, "data_1.nii") data_array = standard(np.flipud(get_array_from_path(data_path))) data = sitk.ReadImage(data_path) ruangu_roi_array = get_array_from_path(ruangu_roi) single_ruangu_array = np.where(ruangu_roi_array == value, 1, 0) # 软骨 xiagu_roi_array = get_array_from_path(xiagu_roi) single_xiagu_array = np.where(xiagu_roi_array == value, 1, 0) # 下骨 # 显示检查 # Imshow3DArray(data_array, [single_ruangu_array, single_xiagu_array]) SaveArrayToNiiByRef( os.path.join(self.case_path, "ruan_gu_" + store_name + ".nii"), single_ruangu_array, data) SaveArrayToNiiByRef( os.path.join(self.case_path, "xia_gu_" + store_name + ".nii"), single_xiagu_array, data)
def show_roi(self): """检查数据展示几个ROI""" ct_array = standard(self.pet_array) Imshow3DArray(ct_array, self.roi_array)
import os from MeDIT.Visualization import Imshow3DArray from Tool.DataProcress import get_array_from_path, standard import numpy as np data = get_array_from_path( r"Y:\DYB\data_and_result\doctor_xie\knee_data\CAI NAI JI-20140605\data_1.nii" ) data = standard(data) data = np.flipud(data) roi = get_array_from_path( r"Y:\DYB\data_and_result\doctor_xie\knee_data\CAI NAI JI-20140605\xia_gu_down_2.nii" ) roi_2 = get_array_from_path( r"Y:\DYB\data_and_result\doctor_xie\knee_data\CAI NAI JI-20140605\ruan_gu_down_2.nii" ) Imshow3DArray(data, [roi, roi_2]) Imshow3DArray(data, roi_2) Imshow3DArray(data, roi)