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