Files
cDNA-image-processing/README.md
T
Serendipity b8a8ff2bc6 feat: cDNA微阵列图像处理作业 - Python实现
实现内容:
- 网格划分:投影分析 + 自相关估周期 + 白顶帽去背景 + 质心提取
- 三种阈值分割:人工阈值、Otsu自动阈值、迭代阈值
- TV去噪(Chambolle投影算法)
- 后处理:去小连通域 + 保留最大连通域
- 完整可视化:网格叠加、阈值对比、收敛曲线、分割结果

参考MATLAB代码:NewGridAndCV/demo_GriddingAndCV.m
2026-05-06 19:41:26 +08:00

119 lines
3.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.
# 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.