当前位置: 首页 > article >正文

语义分割评价指标——95% Hausdorff距离

回顾以下95% Hausdorff距离的概念,一张比较经典直观的图:

一、 最快理解

  • max(d_XY, d_YX):取X=>Y距离 和 Y=>X距离的最大值。

        其中

  • X=>Y =max min x=>y :X所有点都和Y集合计算最小的距离,得到的距离集合再取最大值。

        同理

  • Y=>X =max min y=>x :Y所有点都和X集合计算最小的距离,得到的距离集合再取最大值。

二 选取95%

1.针对二分类将预测出来的二值图像划分为布尔前景/背景

2.所有前景的坐标计算

numpy提供了argwhere 方法筛选数组中非0项,然后返回这些项的坐标。

3. 对坐标进行排序:np.sort()

4. 列表切割(所有坐标数*95%)的数组

三、实现

def hausdorff95(X, Y):
    # 将二值图像转换为布尔数组,True 表示前景
    X_foreground = X.astype(bool)
    Y_foreground = Y.astype(bool)

    # 计算前景点的坐标
    X_coords = np.argwhere(X_foreground)
    Y_coords = np.argwhere(Y_foreground)

    # 计算 X 中每个点到 Y 的所有点的距离
    X_to_Y_dist = distance_matrix(X_coords, Y_coords)

    # 计算 Y 中每个点到 X 的所有点的距离
    Y_to_X_dist = distance_matrix(Y_coords, X_coords)

    # 将 X 到 Y 的距离和 Y 到 X 的距离合并为一个数组
    all_distances = np.concatenate((X_to_Y_dist.flatten(), Y_to_X_dist.flatten()))

    # 排除掉最大的5%的距离
    distances_sorted = np.sort(all_distances)
    num_points = len(all_distances)
    threshold_index = int(num_points * 0.95)

    # 确保至少有一个距离被选中
    if threshold_index == 0:
        threshold_index = 1

    # 计算95% Hausdorff 距离
    distances_filtered = distances_sorted[:threshold_index]
    if len(distances_filtered) > 0:
        hd95_value = np.max(distances_filtered)  # 取最大值,而不是平均值
    else:
        hd95_value = 0  # 如果没有距离被选中,可以返回0或其他合适的值

    return hd95_value


http://www.kler.cn/a/320921.html

相关文章:

  • Python如何获取request response body
  • GitHub Copilot使用指南:助力开发者加速编程创新
  • 猎板PCB罗杰斯板材的应用案例
  • Spring Boot框架:电商系统的技术革新
  • git如何开启SSH?
  • 缓存cache
  • 点餐小程序实战教程11数据源设计
  • Linux本地服务器搭建开源监控服务Uptime Kuma与远程监控实战教程
  • 前端面试题(六)
  • C 语言的编译过程包括四个步骤
  • Flink Task 日志文件隔离
  • ZYNQ:开发环境搭建
  • 面试-设计模式
  • 如何将我的手机模拟成为一个海外设备
  • python全栈学习项目案例(一)atm+购物车
  • 如何排查我的ip有没有被其他人使用
  • Linux文本内容管理命令_2
  • flink kafka sink (scala)
  • 大模型的实践应用30-大模型训练和推理中分布式核心技术的应用
  • layui upload.render 设置文件名
  • GB28181语音对讲协议详解
  • docker - 镜像操作(拉取、查看、删除)
  • Endnote激活码失效
  • Vue3使用hiprint——批次打印条码
  • js判断一个对象里有没有某个属性
  • 细说Flink状态管理