Files
Head_CT_Morph/工程分析/实现方案-2026-05-08-02-36-12.md

2.6 KiB
Raw Permalink Blame History

实现方案

开始时间2026-05-08-02-36-12

本次方案路径

工程分析/实现方案-2026-05-08-02-36-12.md

实现目标

在 DICOM 阅览中实现真实 STL 模型切分 mask并用单个双端点进度条控制起点/终点帧。

涉及文件

  • web_backend.py
  • WebSite/src/App.tsx
  • 工程分析/经验记录.md

执行步骤

  1. 后端新增 STL 模型目录和缓存:
    • MODEL_DIR = web_library/_stl_models
    • STL_MODEL_CACHE
    • 支持 ASCII STL 和 binary STL 解析为三角面数组。
  2. 后端新增 STL 上传接口:
    • POST /api/model/upload
    • 使用请求体保存 STL 文件。
    • 返回 modelIdnametriangleCount
  3. 后端新增 DICOM 几何元数据提取:
    • 基于排序后的 DICOM 文件读取 ImagePositionPatientImageOrientationPatientPixelSpacing
    • 构造 patient 坐标到体素坐标的转换。
    • 元数据不足时降级为 STL 已是体素坐标。
  4. 后端增强 /api/library/reformat-preview
    • 支持 modelId 参数。
    • 当传入模型时,根据 planeindex 计算 STL 三角面与当前 DICOM 切片平面的交线。
    • 将交线栅格化并填充形成 mask叠加到 DICOM PNG 上。
    • 返回 maskPixels,便于前端知道该帧是否有模型穿透。
  5. 前端 DICOM 阅览新增模型切分控制:
    • STL 文件上传按钮。
    • 模型切分开关。
    • 一个双端点进度条控制起点/终点,两个端点允许交叉。
    • 起点/终点数值按当前切片总数约束。
  6. 前端模型切分展示:
    • 模型切分关闭:保留当前单帧 DICOM 阅览。
    • 模型切分开启:显示起点帧、终点帧两张 DICOM 图,并请求后端叠加真实 STL mask。
    • 不再显示无意义的 CT MASK 图片或伪造圆圈 mask。
  7. 执行测试方案。
  8. 更新 工程分析/经验记录.md
  9. 提交并推送 Giteacommit 信息使用 2026-05-08-02-36-12 实现STL模型切分mask
  10. 重新部署到 http://192.168.3.11:3005/

回滚思路

若 STL mask 功能不符合预期,可回滚 web_backend.py 中 STL 上传/解析/mask 叠加逻辑,以及 WebSite/src/App.tsx 中模型切分 UI恢复纯 DICOM 阅览。

风险控制

  • STL 解析结果和 DICOM 体数据都使用缓存,避免高频重复解析。
  • mask 叠加只影响阅览 PNG不修改原始 DICOM 和形变输出。
  • 双端点进度条不影响普通 DICOM 阅览切片滑杆。
  • 若 STL 与 DICOM 空间不匹配,前端仍显示 DICOM 切片,并以 maskPixels=0 表示该帧无交集。

人工审核状态

用户已明确本次不需要人工二次确认,直接执行。