Ejemplo n.º 1
0
    def _run_single_scan(self, idx):
        test_mask = ScanWrapper(self._in_data_folder.get_file_path(idx))
        effective_mask = ScanWrapper(
            self._effective_mask_folder_obj.get_file_path(idx))

        dice_val = get_dice_with_effective_mask(self._gt_mask.get_data(),
                                                test_mask.get_data(),
                                                effective_mask.get_data())

        result = {'Scan': test_mask.get_file_name(), 'Dice': dice_val}

        return result
    def _run_single_scan(self, idx):
        test_mask = ScanWrapper(self._in_data_folder.get_file_path(idx))
        effective_mask = ScanWrapper(self._effective_mask_folder_obj.get_file_path(idx))
        effective_data = effective_mask.get_data()

        test_data = test_mask.get_data()
        gt_data = self._gt_mask.get_data()

        edt_test, surf_test = self._get_edt_full(test_data)
        edt_gt, surf_gt = self._get_edt_full(gt_data)

        effective_surf_test = surf_test * effective_data
        effective_surf_gt = surf_gt * effective_data

        # For debug the effective surface.
        # effective_surf_combine_output_path = test_mask.get_path() + '_effsur.nii.gz'
        # combine_effective = effective_surf_test
        # np.copyto(combine_effective, 2 * effective_surf_gt, where=effective_surf_gt > 0.5)
        # test_mask.save_scan_same_space(effective_surf_combine_output_path, combine_effective)

        surf_dist_map_gt2test = effective_surf_gt * edt_test
        surf_dist_map_test2gt = effective_surf_test * edt_gt

        num_surface_test = effective_surf_test.sum()
        num_surface_gt = effective_surf_gt.sum()

        msd_sym = (surf_dist_map_gt2test.sum() / num_surface_gt) + \
                  (surf_dist_map_test2gt.sum() / num_surface_test)
        msd_sym /= 2
        hd_sym = np.amax(surf_dist_map_gt2test) + np.amax(surf_dist_map_test2gt)
        hd_sym /= 2

        result = {
            'Scan': test_mask.get_file_name(),
            'MSD': msd_sym,
            'HD': hd_sym,
            'effective surface points (test)': effective_surf_test.sum(),
            'effective ratio (test)': effective_surf_test.sum() / surf_test.sum(),
            'effective surface points (gt)': effective_surf_gt.sum(),
            'effective ratio (gt)': effective_surf_gt.sum() / surf_gt.sum()
        }

        return result