feat: 原版增加斑点数量统计

输出检测到的有效斑点数、面积统计(最小/最大/均值/中位数)
This commit is contained in:
2026-05-07 22:09:13 +08:00
parent 09d8b9d8fe
commit bad3635f0a
+17 -1
View File
@@ -410,7 +410,23 @@ def main() -> None:
bw_img.save(os.path.join(OUTPUT_DIR, 'result_I_bw.png')) bw_img.save(os.path.join(OUTPUT_DIR, 'result_I_bw.png'))
print(" 保存: 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: if img.ndim == 3:
overlay = img[:, :, :3].copy() overlay = img[:, :, :3].copy()
else: else: