def NiiImageInfoStatistic(root_folder, key_word): case_list = os.listdir(root_folder) case_list.sort() shape_list = [] spacing_list = [] for case in case_list: case_folder = os.path.join(root_folder, case) candidate_file = glob.glob(os.path.join(case_folder, key_word)) if len(candidate_file) != 1: print('Not unique file: ', case) continue image, _, data = LoadNiiData(candidate_file[0]) shape_list.append(image.GetSize()) spacing_list.append(image.GetSpacing()) shape_info = np.array(shape_list) spacing_info = np.array(spacing_list) print('The number of cases is :', len(shape_list)) print('The mean of the size is :', np.mean(shape_info, axis=0)) print('The max of the size is :', np.max(shape_info, axis=0)) print('The min of the size is :', np.min(shape_info, axis=0)) print('The mean of the spacing is :', np.mean(spacing_info, axis=0)) print('The max of the spacing is :', np.max(spacing_info, axis=0)) print('The min of the spacing is :', np.min(spacing_info, axis=0)) import matplotlib.pyplot as plt fig = plt.figure(0, [15, 5]) ax1 = fig.add_subplot(131) ax1.hist(spacing_info[:, 0], bins=50) ax1.set_xlabel('Resolution') ax1.set_ylabel('Spacing/mm') ax1.set_title('Histogram of x-axis spacing') ax2 = fig.add_subplot(132) ax2.hist(spacing_info[:, 1], bins=50) ax2.set_xlabel('Resolution') ax2.set_ylabel('Spacing/mm') ax2.set_title('Histogram of y-axis spacing') ax3 = fig.add_subplot(133) ax3.hist(spacing_info[:, 2], bins=50) ax3.set_xlabel('Resolution') ax3.set_ylabel('Spacing/mm') ax3.set_title('Histogram of z-axis spacing') plt.show()
if os.path.exists(os.path.join(case_path, 'adc.nii')): if os.path.exists(os.path.join(case_path, 'dwi.nii')): bval_path = os.path.join(case_path, 'dwi.bval') bval = open(bval_path, 'r') b_list = bval.read().split() if len(b_list) == 1: new_img, new_dwi, _ = LoadNiiData(os.path.join(case_path, 'dwi.nii')) else: b, index = NearTrueB(b_list) _, dwi, _ = LoadNiiData(os.path.join(case_path, 'dwi.nii')) img, _, _ = LoadNiiData(os.path.join(case_path, 'adc.nii')) new_dwi = dwi[index, ...] new_img = sitk.GetImageFromArray(new_dwi) new_img.SetDirection(img.GetDirection()) new_img.SetSpacing(img.GetSpacing()) new_img.SetOrigin(img.GetOrigin()) elif os.path.exists(os.path.join(case_path, 'dki.nii')): bval_path = os.path.join(case_path, 'dki.bval') bval = open(bval_path, 'r') b_list = bval.read().split() if len(b_list) == 1: new_img, new_dwi, _ = LoadNiiData(os.path.join(case_path, 'dki.nii')) else: b, index = NearTrueB(b_list) img, dki, _ = LoadNiiData(os.path.join(case_path, 'dki.nii')) img, _, _ = LoadNiiData(os.path.join(case_path, 'adc.nii')) new_dwi = dki[index, ...] new_img = sitk.GetImageFromArray(new_dwi) new_img.SetDirection(img.GetDirection())