二值图 去噪

方法 1:连通域过滤(最干净、最有效)

适合去掉“小白点”、碎片、小块噪声。

def remove_small_regions(mask, min_area=100):
    """
    mask: float32, 0~1
    返回清理后的 mask (float32)
    """
    # 转为 uint8
    mask_u8 = (mask * 255).astype(np.uint8)

    # 连通域分析
    num_labels, labels, stats, _ = cv2.connectedComponentsWithStats(mask_u8)

    # stats[:, cv2.CC_STAT_AREA] 是每个连通域面积
    cleaned = np.zeros_like(mask_u8)

    for i in range(1, num_labels):  # 0 是背景
        area = stats[i, cv2.CC_STAT_AREA]
        if area >= min_area:
            cleaned[labels == i] = 255

    return (cleaned / 255.0).astype(np.float32)

使用:

clean_mask = remove_small_regions(mask, min_area=150)


方法 2:形态学开运算(去孤立白点,非常快)

  • 腐蚀 + 膨胀

  • 小白点直接被去掉

def remove_small_dots(mask, ksize=3):
    mask_u8 = (mask * 255).astype(np.uint8)

    kernel = np.ones((ksize, ksize), np.uint8)
    opened = cv2.morphologyEx(mask_u8, cv2.MORPH_OPEN, kernel)

    return (opened / 255.0).astype(np.float32)

方法 3:开运算 + 连通域(最强组合)

先去小 dot
再把残留小块区域过滤掉

clean = remove_small_dots(mask, ksize=3) clean = remove_small_regions(clean, min_area=150)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值