Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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)