feat: cDNA微阵列图像处理作业 - Python实现

实现内容:
- 网格划分:投影分析 + 自相关估周期 + 白顶帽去背景 + 质心提取
- 三种阈值分割:人工阈值、Otsu自动阈值、迭代阈值
- TV去噪(Chambolle投影算法)
- 后处理:去小连通域 + 保留最大连通域
- 完整可视化:网格叠加、阈值对比、收敛曲线、分割结果

参考MATLAB代码:NewGridAndCV/demo_GriddingAndCV.m
This commit is contained in:
2026-05-06 19:41:26 +08:00
commit b8a8ff2bc6
63 changed files with 3380 additions and 0 deletions
+118
View File
@@ -0,0 +1,118 @@
# cDNA 微阵列图像处理作业资料
## 作业概述
本次作业涉及 **cDNA 微阵列(基因芯片)图像处理**,主要研究两个核心问题:
1. **网格划分(Gridding** - 定位微阵列图像中每个点的精确位置
2. **图像分割(Segmentation** - 区分前景(基因点)与背景
---
## 资料清单
### 1. 参考论文
| 文件名 | 作者 | 内容简介 |
|--------|------|----------|
| `2019-3-高污染基因芯片图像的网格划分_芦碧波.pdf` | 芦碧波 | 提出针对高污染基因芯片的网格划分方法,利用图像增强、分块处理和自动阈值检测来提高鲁棒性 |
| `封面+低对比度cDNA图像分割的局部水平集方法_芦碧波.pdf` | 芦碧波、刘利群、张霄宏、林忠华 | 提出基于局部信息的水平集方法,解决低对比度cDNA图像分割问题,引入局部图像拟合能量 |
| `显微图像分割.pdf` | - | 显微图像分割相关资料(密码保护,需另存为可读版本) |
### 2. MATLAB 代码
#### `NewGridAndCV/` - 网格划分与C-V分割实现
| 文件名 | 功能说明 |
|--------|----------|
| `demo_GriddingAndCV.m` | **主程序** - 演示网格划分和Chan-Vese分割的完整流程 |
| `GriddingAndCV.m` | 网格划分核心算法,使用自相关估计点间距 |
| `cvseg.m` | Chan-Vese 水平集分割算法 |
| `chenvese.m` | C-V 模型的另一种实现 |
| `tvdenoise.m` | TVTotal Variation)去噪算法 |
| `choice.m` | 剔除面积过小的连通区域 |
| `choosemaxobj.m` | 保留最大连通区域 |
| `contour_bw.m` | 轮廓提取与二值化 |
| `fillingholes.m` | 填充孔洞 |
| `kappa.m` | 曲率计算 |
| `maskcircle2.m` | 圆形掩膜生成 |
| `redcolorcontour.m` | 红色轮廓显示 |
| `showphi.m` | 显示水平集函数 |
#### `cDNA图像处理实例/` - 基础示例
| 文件名 | 功能说明 |
|--------|----------|
| `图像处理实例.pptx` | 实例讲解PPT |
| `数据/cDNA/Demo_cdna.m` | 基础演示代码 |
| `数据/cDNA/*.tif` | 测试图像数据 |
### 3. 图像数据
| 文件名 | 说明 |
|--------|------|
| `GSM16390_CH1.tif` | 通道1原始图像(~26MB |
| `GSM16390_CH2.tif` | 通道2原始图像(~26MB |
| `GSM16390_CH2color.tif` | 彩色合成图像(~79MB |
| `*_small.tif` | 上述图像的缩小版本 |
| `cDNA.png` | 测试用cDNA图像 |
| `I_bw.jpg` | 二值化结果示例 |
| `I_griddingout.tif` | 网格划分输出示例 |
---
## 核心算法简介
### 网格划分算法流程
```
1. 读取图像 → 转灰度
2. 计算行/列投影(均值)
3. 自相关分析 → 估计点间距
4. 形态学滤波 → 去除背景
5. 阈值分割 → 标记峰值区域
6. 提取质心 → 确定网格点位置
```
### Chan-Vese 水平集分割
- **核心思想**:不依赖图像梯度,基于区域统计信息分割
- **能量函数**$E = \mu \cdot Length(C) + \nu \cdot Area(C) + \lambda_1 \int_{inside(C)} |I - c_1|^2 + \lambda_2 \int_{outside(C)} |I - c_2|^2$
- **优势**:对模糊边缘和低对比度图像效果好
### 局部水平集方法(论文贡献)
- 引入局部图像拟合能量 $E^{LIF}$
- 使用高斯核 $K_\sigma$ 提取局部信息
- 能有效处理灰度不均匀的cDNA图像
---
## 运行环境
- **MATLAB** R2016b 或更高版本
- **需要工具箱**
- Image Processing Toolbox
- Signal Processing Toolbox(用于自相关计算)
---
## 快速开始
```matlab
% 1. 进入代码目录
cd NewGridAndCV
% 2. 运行演示
demo_GriddingAndCV
% 3. 或单独运行网格划分
GriddingAndCV
```
---
## 参考文献
1. 芦碧波. 高污染基因芯片图像的网格划分[J]. 河南理工大学学报(自然科学版), 2019.
2. 芦碧波, 刘利群, 张霄宏, 林忠华. 低对比度cDNA图像分割的局部水平集方法[J]. 中国图象图形学报, 2014.