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

3.4 KiB
Raw Permalink Blame History

实现方案 - 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 数据,请提供其所在目录或文件格式说明。