From bad3635f0a56e9b34ad707eed1cecff0622fba26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E8=88=AA=E5=AE=87?= <3364451258@qq.com> Date: Thu, 7 May 2026 22:09:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8E=9F=E7=89=88=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=96=91=E7=82=B9=E6=95=B0=E9=87=8F=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 输出检测到的有效斑点数、面积统计(最小/最大/均值/中位数) --- src/cDNA_segmentation.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/cDNA_segmentation.py b/src/cDNA_segmentation.py index 8d9dc37..80a348d 100644 --- a/src/cDNA_segmentation.py +++ b/src/cDNA_segmentation.py @@ -410,7 +410,23 @@ def main() -> None: bw_img.save(os.path.join(OUTPUT_DIR, 'result_I_bw.png')) print(" 保存: result_I_bw.png") - # ---- 步骤4: 网格叠加图 ---- + # ---- 步骤4: 统计点数 ---- + print("\n[步骤4] 统计斑点数量...") + labeled_spots, num_spots = ndimage.label(bw_full) + # 统计每个斑点的面积 + spot_sizes = [] + for i in range(1, num_spots + 1): + size = int(np.sum(labeled_spots == i)) + spot_sizes.append(size) + spot_sizes = np.array(spot_sizes) + # 过滤极小噪声 + valid_spots = spot_sizes[spot_sizes >= 10] + print(f" 检测到 {len(valid_spots)} 个斑点 (面积≥10像素)") + print(f" 斑点面积: 最小 {valid_spots.min()}, 最大 {valid_spots.max()}, " + f"均值 {valid_spots.mean():.1f}, 中位数 {np.median(valid_spots):.0f}") + print(f" 网格子块数 (理论值): {(len(x_grid)-1) * (len(y_grid)-1)}") + + # ---- 步骤5: 网格叠加图 ---- if img.ndim == 3: overlay = img[:, :, :3].copy() else: