Files
Head_CT_Morph/工程分析/实现方案-2026-05-08-03-57-51.md

59 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现方案 - 2026-05-08-03-57-51
## 方案路径
将右侧“Mask 展示”从 STL/3D 几何结果展示改为真实 DICOM Segmentation Mask 的二维实心切片展示。模型切分操作只决定需要展示的切分位置和上下端点;实际像素内容必须来自与当前 DICOM 数据配准的语义分割 mask 体数据。
## 涉及文件
- `web_backend.py`
- 新增 segmentation mask 数据发现、读取、缓存和切片渲染逻辑。
- 新增或扩展 mask 预览接口,返回切分上侧/下侧两张二维实心 mask 图片。
- 保留 STL 切分用于确定范围或几何参考,但不再用 STL Cap 作为最终 mask 图像数据源。
- `WebSite/src/App.tsx`
- 调整模型切分触发后的“Mask 展示”请求和渲染逻辑。
- 右侧面板固定展示两张二维实心 Segmentation Mask 图片。
- 对无 segmentation 数据、无交集、加载失败分别给出状态。
- `工程分析/经验记录.md`
- 完成后追加本轮关键问题、原因、解决方案和后续避免方式。
## 执行步骤
1. 数据源梳理:
- 检查 `web_library/` 和现有接口中是否已有 DICOM SEG、RTSTRUCT、NIfTI、NRRD、PNG mask 序列或其他语义分割文件。
- 当前未发现现成 segmentation 数据源,因此新增“上传/关联 Segmentation Mask”的后端入口和前端入口避免继续从 STL 伪造 mask。
2. 后端 mask 体数据读取:
- 优先支持 DICOM SEG / DICOM label-map 文件。
- 将 mask 读取为与 CT 体数据对齐的三维 label map。
- 使用缓存避免每次切分重复读取整套 mask。
3. 后端二维实心截面渲染:
- 根据当前模型切分范围计算上侧/下侧两张目标切片。
- 从 Segmentation Mask label map 中取对应切片。
- 生成二维实心 mask-only PNG而不是 CT 叠加图、STL Cap 或点云投影。
- 多标签情况下保留标签差异,可按固定颜色表渲染。
4. 前端“Mask 展示”调整:
- 点击“模型切分”后,右侧面板请求新的 segmentation mask 双图接口。
- 面板标题保持“Mask 展示”,内容为两张二维图片:上侧切面、下侧切面。
- 移除或隐藏任何 3D 外壳/点云/半透明模型展示路径。
5. 错误与降级处理:
- 若没有绑定 segmentation mask 数据,提示需要上传或关联 DICOM Segmentation Mask。
- 若某一切面 mask 为空,显示“该切面无分割区域”,但不生成假 mask。
6. 验证通过后更新经验记录、提交 Gitea并重新部署。
## 回滚思路
若新接口或前端展示出现问题,可回滚 `web_backend.py` 中新增 segmentation mask 读取/渲染逻辑和 `WebSite/src/App.tsx` 中“Mask 展示”的请求渲染改动,恢复当前 STL mask-only 双图逻辑。
## 风险控制
- 不将 STL Cap、封闭面或几何填充作为最终 mask 数据源。
- 对 segmentation 数据缺失做显式错误提示,不用临时绘制图形代替。
- DICOM SEG 坐标对齐需严格参考 CT 的方向、间距、原点和切片顺序。
- 若缺少测试数据,只做接口和类型验证不足以证明医学对齐正确,必须标注残余风险。
## 需要用户确认
- 用户已确认方案,允许新增 Segmentation Mask 上传/关联入口。
- “上、下两个视角”本次按当前切分范围的起点帧/终点帧实现。
- 如果已有真实 segmentation mask 数据,请提供其所在目录或文件格式说明。