# 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