54 lines
2.8 KiB
Markdown
54 lines
2.8 KiB
Markdown
# 需求分析
|
||
|
||
开始时间:2026-05-08-02-36-12
|
||
|
||
## 原始需求
|
||
|
||
用户要求严格使用代码编纂工作流,并在最开始确认整体流程。本次需求分析、实现方案、测试方案和执行修改都不需要人工二次确认。
|
||
|
||
本次具体需求:
|
||
|
||
1. 起点、终点合并到一个进度条里,进度条有两个端点,起点和终点可以调整顺序。
|
||
2. 模型切分启用后,不能只是象征性画圈,而要真正判断 STL 模型穿透 DICOM 的位置,并用颜色标出形成 mask。
|
||
3. 模型切分下方的帧进度栏没有实际意义。模型切分开启后,不需要在最后一张显示 CT,也不需要当前无意义的 CT MASK 图片;应像之前一样用 DICOM 起点帧、终点帧对模型切两刀,并在这两个特定帧上显示 mask。这个 mask 代表重建 STL 模型原始语义分割的大致切片形态。
|
||
|
||
## 目标
|
||
|
||
- 在 DICOM 阅览中新增真实 STL 模型切分能力。
|
||
- 上传 STL 后,后端解析 STL 三角面片,按当前 DICOM 平面和起点/终点帧计算切片相交区域。
|
||
- 模型切分开启时,前端显示起点帧和终点帧两张 DICOM 切片,并叠加真实 STL 切面 mask。
|
||
- 用一个双端点进度条控制起点和终点,允许两个端点交叉,交叉后按数值顺序用于切分。
|
||
- 删除/不再显示无意义的 CT MASK 图片或伪 mask。
|
||
|
||
## 影响范围
|
||
|
||
- `web_backend.py`
|
||
- STL 上传接口。
|
||
- STL 解析、缓存。
|
||
- DICOM 阅览切片接口叠加真实 STL 切面 mask。
|
||
- `WebSite/src/App.tsx`
|
||
- DICOM 阅览弹层新增 STL 上传、模型切分开关、双端点进度条和双帧 mask 展示。
|
||
- 移除模型切分状态下无意义的单帧 CT/MASK 展示。
|
||
- `工程分析/经验记录.md`
|
||
|
||
## 当前定位
|
||
|
||
当前仓库主线中没有已有 `STL/模型切分/MASK` 代码,只有 DICOM 阅览和冠状/矢状重建预览。因此本次不是修补已有“画圈”代码,而是在现有 DICOM 阅览里补上真实 STL 切片 mask 能力。
|
||
|
||
## 约束
|
||
|
||
- 不引入大型前端 3D 库。
|
||
- 不改变真实 DICOM 形变算法。
|
||
- 不提交 STL、DICOM、mask 缓存图片、ZIP 或构建产物。
|
||
- STL 与 DICOM 的空间配准优先按 DICOM `ImagePositionPatient`、`ImageOrientationPatient`、`PixelSpacing` 转换;若元数据不足,则降级假设 STL 坐标已在体素坐标系中。
|
||
|
||
## 风险点
|
||
|
||
- STL 与 DICOM 是否同一坐标系直接决定 mask 是否对齐;若输入 STL 未配准到 DICOM patient 坐标,mask 位置仍会偏。
|
||
- 不同 STL 拓扑可能导致切面轮廓不闭合,mask 填充可能只显示轮廓或局部区域。
|
||
- 大 STL 模型解析和多切片 mask 计算可能耗时,需要缓存解析后的三角面。
|
||
|
||
## 待确认事项
|
||
|
||
用户已明确本次不需要二次人工确认,因此文档写完后直接执行。
|