def main(gt, method): # read gt image addresses gt_names = utils.all_files_under(os.path.join('../', gt), extension='.jpg') # read prediction image addresses filenames = utils.all_files_under(os.path.join('../', method), extension='.jpg') # print(methods[idx_method]) mae_method, rmse_method, psnr_method, ssim_method, pcc_method = [], [], [], [], [] for idx_name in range(len(gt_names)): # read gt and prediction image gt_img = cv2.imread(gt_names[idx_name], cv2.IMREAD_GRAYSCALE).astype(np.float32) pred_img = cv2.imread(filenames[idx_name], cv2.IMREAD_GRAYSCALE).astype(np.float32) # check gt and prediction image name if gt_names[idx_name].split('p0')[-1] != filenames[idx_name].split( 'p0')[-1]: sys.exit(' [!] Image name can not match!') # calcualte mae and psnr mae = utils.mean_absoulute_error(pred_img, gt_img) rmse = utils.root_mean_square_error(pred_img, gt_img) psnr = utils.peak_signal_to_noise_ratio(pred_img, gt_img) ssim = utils.structural_similarity_index(pred_img, gt_img) pcc = utils.pearson_correlation_coefficient(pred_img, gt_img) if np.mod(idx_name, 300) == 0: print('Method: {}, idx: {}'.format(method, idx_name)) # collect each image results mae_method.append(mae) rmse_method.append(rmse) psnr_method.append(psnr) ssim_method.append(ssim) pcc_method.append(pcc) # list to np.array mae_method = np.asarray(mae_method) rmse_method = np.asarray(rmse_method) psnr_method = np.asarray(psnr_method) ssim_method = np.asarray(ssim_method) pcc_method = np.asarray(pcc_method) print(' MAE - mean: {:.3f}, std: {:.3f}'.format(np.mean(mae_method), np.std(mae_method))) print('RMSE - mean: {:.3f}, std: {:.3f}'.format(np.mean(rmse_method), np.std(rmse_method))) print('PSNR - mean: {:.3f}, std: {:.3f}'.format(np.mean(psnr_method), np.std(psnr_method))) print('SSIM - mean: {:.3f}, std: {:.3f}'.format(np.mean(ssim_method), np.std(ssim_method))) print(' PCC - mean: {:.3f}, std: {:.3f}'.format(np.mean(pcc_method), np.std(pcc_method))) data_list = [mae_method, rmse_method, psnr_method, ssim_method, pcc_method] write_to_csv(method, data_list, gt_names)
def read_imgs_and_measurement(): slice_list = [] # read gt image addresses gt_names = utils.all_files_under('../gt', extension='.jpg') for idx in range(len(gt_names)): if np.mod(idx, 300) == 0: print('Method: {}, Measure: {}, idx: {}'.format( args.method, args.measure, idx)) img_name = os.path.basename(gt_names[idx]) # read gt and prediction image gt_img = cv2.imread(gt_names[idx], cv2.IMREAD_GRAYSCALE).astype(np.float32) pred_img = cv2.imread( os.path.join('../{}'.format(args.method), img_name), cv2.IMREAD_GRAYSCALE).astype(np.float32) # calculate measurement measure_value = 0. if args.measure.lower() == 'mae': measure_value = utils.mean_absoulute_error(pred_img, gt_img) elif args.measure.lower() == 'rmse': measure_value = utils.root_mean_square_error(pred_img, gt_img) elif args.measure.lower() == 'psnr': measure_value = utils.peak_signal_to_noise_ratio(pred_img, gt_img) elif args.measure.lower() == 'ssim': measure_value = utils.structural_similarity_index(pred_img, gt_img) slice_list.append(SliceExample(img_name, args.method, measure_value)) return slice_list
def cal_meausre(methods, measure, case_dict, num_cases_require): mean_bar = np.zeros((len(methods), num_cases_require), dtype=np.float32) var_bar = np.zeros((len(methods), num_cases_require), dtype=np.float32) case_idx = 0 for key_idx in sorted(case_dict.keys()): if case_idx < num_cases_require: print('key_idx: {}'.format(key_idx)) img_paths = case_dict[key_idx] measure_result = [] for method in methods: method_measure = [] for _, img_path in enumerate(img_paths): gt_img = cv2.imread(os.path.join('../gt', img_path), cv2.IMREAD_GRAYSCALE).astype( np.float32) pred_img = cv2.imread( os.path.join('../{}'.format(method), img_path), cv2.IMREAD_GRAYSCALE).astype(np.float32) if measure.lower() == 'mae': measure_val = utils.mean_absoulute_error( pred_img, gt_img) elif measure.lower() == 'rmse': measure_val = utils.root_mean_square_error( pred_img, gt_img) elif measure.lower() == 'psnr': measure_val = utils.peak_signal_to_noise_ratio( pred_img, gt_img) elif measure.lower() == 'ssim': measure_val = utils.structural_similarity_index( pred_img, gt_img) elif measure.lower() == 'pcc': measure_val = utils.pearson_correlation_coefficient( pred_img, gt_img) else: raise NotImplementedError # Save one slice results method_measure.append(measure_val) # Save whole slice results measure_result.append(method_measure) measure_array = np.asarray(measure_result) mean_bar[:, case_idx] = np.mean(measure_array, axis=1) var_bar[:, case_idx] = np.std(measure_array, axis=1) case_idx += 1 else: break return mean_bar, var_bar
def read_imgs_and_measurement(target=None): slice_list = [] # read gt image addresses gt_names = all_files_under('../gt', extension='.jpg') for idx in range(len(gt_names)): if np.mod(idx, 300) == 0: print('idx: {}'.format(idx)) img_name = os.path.basename(gt_names[idx]) # read gt and prediction image gt_img = cv2.imread(gt_names[idx], cv2.IMREAD_GRAYSCALE).astype(np.float32) pred_img = cv2.imread(os.path.join('../{}'.format(target), img_name), cv2.IMREAD_GRAYSCALE).astype(np.float32) # calculate measurement measure_value = structural_similarity_index(pred_img, gt_img) slice_list.append(SliceExample(img_name, measure_value)) return slice_list
def main(gt, methods, display_names): # read gt image addresses gt_names = utils.all_files_under(os.path.join('../', gt), extension='.jpg') # read prediction image addresses filenames_list = [] for method in methods: filenames = utils.all_files_under(os.path.join('../', method), extension='.jpg') filenames_list.append(filenames) mae_overall, rmse_overall, psnr_overall, ssim_overall, pcc_overall = [], [], [], [], [] for idx_method in range(len(methods)): # print(methods[idx_method]) mae_method, rmse_method, psnr_method, ssim_method, pcc_method = [], [], [], [], [] for idx_name in range(len(gt_names)): # read gt and prediction image gt_img = cv2.imread(gt_names[idx_name], cv2.IMREAD_GRAYSCALE).astype(np.float32) pred_img = cv2.imread(filenames_list[idx_method][idx_name], cv2.IMREAD_GRAYSCALE).astype(np.float32) # check gt and prediction image name if gt_names[idx_name].split('p0')[-1] != filenames_list[ idx_method][idx_name].split('p0')[-1]: sys.exit(' [!] Image name can not match!') # calcualte mae and psnr mae = utils.mean_absoulute_error(pred_img, gt_img) rmse = utils.root_mean_square_error(pred_img, gt_img) psnr = utils.peak_signal_to_noise_ratio(pred_img, gt_img) ssim = utils.structural_similarity_index(pred_img, gt_img) pcc = utils.pearson_correlation_coefficient(pred_img, gt_img) if np.mod(idx_name, 300) == 0: print('Method: {}, idx: {}'.format(methods[idx_method], idx_name)) # collect each image results mae_method.append(mae) rmse_method.append(rmse) psnr_method.append(psnr) ssim_method.append(ssim) pcc_method.append(pcc) # list to np.array mae_method = np.asarray(mae_method) rmse_method = np.asarray(rmse_method) psnr_method = np.asarray(psnr_method) ssim_method = np.asarray(ssim_method) pcc_method = np.asarray(pcc_method) # collect all methods results mae_overall.append(mae_method) rmse_overall.append(rmse_method) psnr_overall.append(psnr_method) ssim_overall.append(ssim_method) pcc_overall.append(pcc_method) # list to np.array mae_overall = np.asarray(mae_overall) rmse_overall = np.asarray(rmse_overall) psnr_overall = np.asarray(psnr_overall) ssim_overall = np.asarray(ssim_overall) pcc_overall = np.asarray(pcc_overall) # draw boxplot utils.draw_box_plot( [mae_overall, rmse_overall, psnr_overall, ssim_overall, pcc_overall], display_names) # write to csv file utils.write_to_csv( [mae_overall, rmse_overall, psnr_overall, ssim_overall, pcc_overall], methods, gt_names)