You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CBIS-DDSM乳腺钼靶图像去除胸肌后仅保留乳腺区域的裁剪方法咨询

裁剪逻辑优化方案

核心思路

原有代码会将所有非零像素纳入裁剪范围,左上角的零星残留噪点会直接拉高裁剪边界,最终保留多余区域。正确逻辑是先过滤无效小区域,仅保留乳腺对应的主连通域后再执行裁剪。

实现代码

依赖scikit-image库做连通域分析,你也可以替换为OpenCV的connectedComponentsWithStats接口实现相同逻辑:

import numpy as np
from skimage.measure import label, regionprops
from skimage.morphology import opening, square

def crop_breast_region(image, min_area_ratio=0.01, morph_open_size=3):
    # 生成非零像素二值掩码
    binary_mask = (image > 0).astype(np.uint8)
    # 可选:形态学开运算,提前去除微小噪点
    if morph_open_size > 0:
        binary_mask = opening(binary_mask, square(morph_open_size))
    # 标记所有连通域
    labeled_mask = label(binary_mask)
    regions = regionprops(labeled_mask)
    # 处理无有效区域的极端情况
    if not regions:
        return image
    # 按连通域面积降序排序,取最大的主区域(乳腺)
    regions.sort(key=lambda x: x.area, reverse=True)
    max_area = regions[0].area
    # 过滤面积小于阈值的无效残留,可根据实际残留大小调整比例
    valid_regions = [r for r in regions if r.area >= max_area * min_area_ratio]
    # 计算所有有效区域的合并外接矩形
    min_row = min(r.bbox[0] for r in valid_regions)
    max_row = max(r.bbox[2] for r in valid_regions)
    min_col = min(r.bbox[1] for r in valid_regions)
    max_col = max(r.bbox[3] for r in valid_regions)
    # 执行裁剪
    return image[min_row:max_row, min_col:max_col]

参数调整说明

  • min_area_ratio:过滤小区域的阈值,默认0.01代表面积小于主区域1%的连通域都会被过滤,若残留区域较大可适当调高到0.05-0.1
  • morph_open_size:形态学运算的卷积核大小,默认3用于过滤散点噪点,无细小噪点可设为0关闭该步骤

针对CBIS-DDSM数据集的预处理场景,该方案可以完全排除胸肌残留、设备标记等无效区域的干扰,仅保留完整乳腺区域。


内容的提问来源于stack exchange,提问作者user574362

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 15:39:03