Files
cDNA-image-processing/docs/两版差异说明.md
T

102 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 简化版 vs 原版 差异说明
> 写给以后的自己:简化版只是课堂演示用的,生产环境用原版。
---
## 一句话总结
| | 功能 | 用途 |
|---|---|---|
| 简化版 | 只画网格线 | 课堂讲解 |
| 原版 | 网格 + 去噪 + 分割 + 后处理 + 可视化 | 完整作业 |
---
## 简化版缺少的模块
### 1. TV全变分去噪
**位置**`cDNA_segmentation.py` 第 78-102 行,`tv_denoise()`
**干什么**:对每个子块做 Chambolle 投影去噪,去除荧光噪点。简化版完全没有这一步。
**实现**Rudin-Osher-Fatemi 模型,`min TV(u) + λ/2||f-u||²`,迭代对偶变量 p1、p2 直到收敛。
### 2. 三种阈值分割
**位置**`cDNA_segmentation.py` 第 35-71 行
| 函数 | 原理 |
|------|------|
| `manual_threshold()` | 灰度 > 固定值 T |
| `otsu_threshold()` | 最大类间方差自动求 T |
| `iterative_threshold()` | 初始 T=均值,迭代 T=(μ_fg+μ_bg)/2 直到收敛 |
简化版完全没有分割这一步。
### 3. 全图逐块分割
**位置**`cDNA_segmentation.py` 第 374-411 行
**做什么**:对网格划分出的每个子块:
1. 如果太暗(均值<5或<30),先增强
2. TV 去噪
3. Otsu 阈值二值化
4. 保留最大连通域
5. 拼接回全局二值图
简化版只画线,不处理子块。
### 4. 后处理
**位置**`cDNA_segmentation.py` 第 206-226 行
| 函数 | 作用 |
|------|------|
| `remove_small_objects()` | 去掉面积 < 20 的连通域(噪声) |
| `keep_largest_object()` | 每个子块只保留最大的那块(斑点) |
简化版不需要后处理(因为没生成二值图)。
### 5. 可视化差异
**简化版输出**1张):
| 文件 | 内容 |
|------|------|
| `gridding_simple.png` | 灰度图 + 绿色网格线 |
**原版输出**6张):
| 文件 | 内容 |
|------|------|
| `result_gridding.png` | 4合1:网格叠加 + 列投影 + 行投影 + 灰度直方图 |
| `result_gridding_overlay.png` | 网格线叠在原图上 |
| `result_threshold_compare.png` | 2×2:原图 + 人工/Otsu/迭代三种分割对比 |
| `result_iterative_convergence.png` | 迭代阈值收敛曲线 |
| `result_full_segmentation.png` | 全图逐块分割二值结果 |
| `result_I_bw.png` | 单独的二值图 |
### 6. 网格划分算法不同
| 步骤 | 简化版 | 原版 |
|------|--------|------|
| 投影 | `np.sum` 求和 | `np.mean` 求均值 |
| 估间距 | 无 | 自相关 `np.correlate` |
| 去背景 | 无 | `ndimage.white_tophat` |
| 找斑点 | 减10%阈值 → 过零点 | Otsu + 连通域质心 |
结果一致(误差 0 像素),但算法完全不同。
---
## 什么时候用哪个
| 场景 | 用哪个 |
|------|--------|
| 课堂讲算法思路 | 简化版 |
| 实际做图像处理 | 原版 |
| 对比阈值方法对同一张图的效果 | 原版 |
| 只画网格线 | 都可以 |