Files
cDNA-image-processing/README.md
T
Serendipity 249779ae72 docs: 重写README突出作业实现,新增CLAUDE.md
README: 以"我的Python实现"为中心,对比原版与简化版
CLAUDE.md: 项目概述、算法要点、文件结构
2026-05-06 20:23:21 +08:00

2.8 KiB
Raw Blame History

cDNA 微阵列图像处理作业

作者: 刘航宇 | 河南理工大学计算机学院 | 2026


作业内容

本作业来自《图像处理实例1:cDNA图像分析》,完成以下三个任务:

任务 内容 实现状态
1 分析涉及的图像处理技术 见PPTX
2 编写阈值分割代码(人工阈值 / 迭代阈值 / Otsu) src/cDNA_segmentation.py
3 选取cDNA图像进行分割 对cDNA.png完成网格划分+分割

我的Python实现

文件结构

src/
├── cDNA_segmentation.py      # 原版:完整流程(网格划分 + 阈值分割 + 可视化)
└── cDNA_gridding_simple.py   # 简化版:仅划线,适合课堂讲解

results/           ← 原版输出
results_simple/    ← 简化版输出

原版 (cDNA_segmentation.py)

完整实现,参照MATLAB代码 NewGridAndCV/

模块 方法
网格划分 投影 → 自相关估间距 → 白顶帽去背景 → Otsu → 质心提取
阈值分割 人工固定阈值、Otsu自动阈值、迭代阈值
去噪 TV全变分去噪(Chambolle投影算法)
后处理 去小连通域 + 保留最大连通域

简化版 (cDNA_gridding_simple.py) ★ 课堂主讲

算法3步即可理解,与原版误差为 0像素

1. 灰度图 → 每列/行灰度值求和 → 投影曲线
2. 阈值 X = (max - min) × 10%,曲线减 X
3. 正=斑点,负=空隙 → 过零点配对 → 中点即划线位置

运行

# 原版(需要 numpy, scipy, skimage, PIL, matplotlib
python src/cDNA_segmentation.py

# 简化版(依赖同上)
python src/cDNA_gridding_simple.py

Python 环境:my_envAnaconda),路径 D:\ProgramData\anaconda3\envs\my_env


参考资料

参考论文

论文 作者 来源
高污染基因芯片图像的网格划分 芦碧波 河南理工大学学报, 2019
低对比度cDNA图像分割的局部水平集方法 芦碧波等 中国图象图形学报, 2014

MATLAB参考代码

参考资料/NewGridAndCV/ — MathWorks官方示例改编版,含网格划分与Chan-Vese水平集分割。

数据来源

cDNA图像处理实例/数据/cDNA/ — 源自GEO数据库(GSM16390),Cy3/Cy5双通道荧光标记。


结果对比

原版(自相关+白顶帽) 简化版(投影+阈值+过零点)
算法复杂度 高(须懂自相关/形态学) 低(加减乘除即可理解)
网格线数量 22×22 22×22
线条位置 42, 77, 112, … 42, 77, 112, …
误差 0像素

简化版虽算法极简,但精度与原版完全一致,非常适合课堂讲解和教学演示。