feat: cDNA微阵列图像处理作业 - Python实现
实现内容: - 网格划分:投影分析 + 自相关估周期 + 白顶帽去背景 + 质心提取 - 三种阈值分割:人工阈值、Otsu自动阈值、迭代阈值 - TV去噪(Chambolle投影算法) - 后处理:去小连通域 + 保留最大连通域 - 完整可视化:网格叠加、阈值对比、收敛曲线、分割结果 参考MATLAB代码:NewGridAndCV/demo_GriddingAndCV.m
This commit is contained in:
@@ -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` | TV(Total 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.
|
||||
Reference in New Issue
Block a user