warped segmentation
1st moving image
2nd fixed image
3rd predicted image

voxelmorph中hausdorff计算-LMLPHP


def dice_coef(segmentation1, segmentation2):

    unique_labels1 = np.unique(segmentation1)
    unique_labels2 = np.unique(segmentation2)

    # Exclude background label (usually 0) from calculations
    unique_labels1 = unique_labels1[unique_labels1 != 0]
    unique_labels2 = unique_labels2[unique_labels2 != 0]

    dice_scores = []

    for label1 in unique_labels1:
            # Create binary masks for each pair of labels
          mask1 = (segmentation1 == label1).astype(int)
          mask2 = (segmentation2 == label1).astype(int)

            # Calculate Dice coefficient for the pair
          intersection = np.sum(mask1 * mask2)
          total_voxels = np.sum(mask1) + np.sum(mask2)
          dice_coefficient = 2.0 * intersection / total_voxels if total_voxels > 0 else 0.0

          dice_scores.append(dice_coefficient)

    # Calculate average Dice score
    average_dice_score = np.mean(dice_scores) if len(dice_scores) > 0 else 0.0

    return average_dice_score
     

from scipy.spatial.distance import directed_hausdorff

def hausdorff_distance_fast(segmentation1, segmentation2):

    unique_labels1 = np.unique(segmentation1)
    # Exclude background label (usually 0) from calculations
    unique_labels1 = unique_labels1[unique_labels1 != 0]

    all_distances = []

    for label1 in unique_labels1:

        # Create binary masks for each pair of labels
        mask1 = (segmentation1 == label1).astype(int)
        mask2 = (segmentation2 == label1).astype(int)

        # Find the directed Hausdorff distance for each pair
        distance1 = directed_hausdorff(mask1, mask2)[0]
        distance2 = directed_hausdorff(mask2, mask1)[0]

        # Take the maximum distance for the pair
        max_distance = max(distance1, distance2)
        all_distances.append(max_distance)

    # Calculate the overall Hausdorff distance
    hausdorff_distance = np.mean(all_distances) if len(all_distances) > 0 else 0.0

    return hausdorff_distance

link

04-30 18:13