Files
cDNA-image-processing/CLAUDE.md
T
Serendipity 3ca079a980 refactor: 项目目录结构重组
- 中文目录名改为英文:cDNA图像处理实例→examples,参考资料→references
- web→app(Flask应用标准命名)
- 输出目录平移到 data/output/simple/ 和 data/output/full/
- 输入图像统一到 data/input/
- 构建脚本移到 scripts/
- 源码文件改用 snake_case 命名
- 更新所有文件路径引用和文档
2026-07-16 20:59:58 +08:00

2.6 KiB
Raw Blame History

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.png820×820 RGB23×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