3ca079a980
- 中文目录名改为英文:cDNA图像处理实例→examples,参考资料→references - web→app(Flask应用标准命名) - 输出目录平移到 data/output/simple/ 和 data/output/full/ - 输入图像统一到 data/input/ - 构建脚本移到 scripts/ - 源码文件改用 snake_case 命名 - 更新所有文件路径引用和文档
2.6 KiB
2.6 KiB
CLAUDE.md — cDNA微阵列图像处理作业
项目概述
河南理工大学计算机学院图像处理课程作业。用Python实现cDNA微阵列图像的网格划分与阈值分割。
项目结构
src/
├── segmentation.py ← 原版:完整处理流程
└── gridding_simple.py ← 简化版:仅划线,用于课堂讲解 ★
app/ ← Flask Web应用
scripts/ ← 构建脚本
data/
├── input/ ← 输入图像
└── output/
├── simple/ ← 简化版输出(6张图)
└── full/ ← 原版输出(6张图)
examples/数据/cDNA/ ← 课程原始数据 + MATLAB示例
references/matlab/ ← MATLAB参考实现
references/papers/ ← 论文PDF
两个Python实现
简化版 (src/gridding_simple.py) — 课堂主讲
- 算法:投影求和 → (max-min)×10%阈值 → 过零点配对 → 划线
- 约370行,带详细中文注释,适合课堂讲解
- 输出:
data/output/simple/下 6 张图 - 与原版网格线位置完全一致(误差0像素)
原版 (src/segmentation.py) — 完整实现
- 网格划分:自相关+白顶帽+Otsu+质心(参照MATLAB
GriddingAndCV.m) - 三种阈值分割:人工阈值、Otsu、迭代阈值
- TV去噪(Chambolle投影算法,参照
tvdenoise.m) - 输出:
data/output/full/下 6 张图
算法要点
简化版核心逻辑(find_gap_lines函数):
- 减阈值后:正=斑点区域,负=空隙
- 过零点交替出现:+→-(离开斑点),-→+(进入下一个斑点)
- 配对"离开→进入",中点=空隙中央=划线位置
输入数据
cDNA.png:820×820 RGB,23×23斑点阵列,Cy3/Cy5双色荧光- 斑点间距约35px,每斑点约18px宽
- 输入路径:
data/input/cDNA.png
编码规范
- 禁止硬编码绝对路径:所有文件路径必须从
__file__动态计算,确保代码可在任意目录运行 - 使用
os.path.dirname(os.path.abspath(__file__))定位脚本所在目录,再由相对关系推导其他目录
运行环境
Python虚拟环境:项目根目录 .venv/(uv 创建,Python 3.13)
依赖:numpy, scipy, scikit-image, matplotlib, Pillow, flask
安装:uv pip install numpy scipy scikit-image matplotlib Pillow flask --python .venv/Scripts/python.exe
仓库
- 首选(局域网 SSH):
ssh://git@192.168.5.8:2222/Serendipity/cDNA-image-processing.git - 备选(外网 HTTPS):
https://lhy-git.liuhangyv.top/Serendipity/cDNA-image-processing.git - SSH 连不上时自动切换到 HTTPS