2026-05-24-10-45-43 修正分割显示镜像导出与DICOM交互

This commit is contained in:
2026-05-24 11:11:07 +08:00
parent f54dafb83d
commit f279770a0e
12 changed files with 799 additions and 147 deletions

View File

@@ -1657,3 +1657,21 @@ C. 解决问题方案
D. 后续如何避免问题
后续做程序修改时优先阅读核心三文档和当次三件套,不要在目录中长期堆积几十个历史流水文件。若某次需求产生可复用经验,应写入 `经验记录.md`;若只是一时执行细节,则交由 Git commit 历史保存。文档治理提交前必须确认没有混入源码、医学数据或运行态文件。
## 2026-05-24-10-45-43 分割显示、镜像位姿、DICOM 顺序与导出包结构联动修正
A. 具体问题
逆向分割映射中部分 STL 构件在二维 DICOM 切片上显示为线段或横向连接线,不像填充实体;模型位姿缺少以模型中心沿 X/Y/Z 轴镜像翻转的能力;“构件分别导出”需要所有构件 NIfTI 集中在同一目录;项目库 DICOM 首页缺少滚轮缩放、拖拽平移和位置重置;项目库和工作区的 DICOM 切片编号使用了数组索引顺序,初始显示为 `1/300` 而不是用户期望的 `300/300`,滑条也被误读成进度条。
B. 产生问题原因
前端叠加层虽然已有扫描线填充,但在交点稀疏或切面轮廓退化时仍会绘制大量切面线段,视觉上变成“线连接”;服务端导出只保留扫描线交点,缺少稀疏轮廓兜底。`ModelPose` 只包含旋转、平移、缩放保存、预览、导出都没有镜像字段。DICOM 预览使用零基索引直显,未转换为医学查看习惯的反向层号。自写 tar 导出头只写 100 字节 name 字段,长中文路径会被截断,集中目录后更容易暴露。
C. 解决问题方案
`ModelPose``ModelPoseValue` 增加 `flipX/flipY/flipZ`,在默认值、归一化、保存、导入、三维预览、二维映射和服务端 NIfTI 导出中统一生效。二维叠加层改为优先实体填充,稀疏切面用闭合外轮廓兜底,已有填充结果不再叠加粗线段;服务端导出同步增加闭合外轮廓兜底写入。项目库 DICOM 首页新增独立 viewport 状态支持滚轮缩放、拖拽平移和位置重置。DICOM 显示层号统一使用 `total - sliceIndex`,滑条值反向映射且使用菱形非进度条样式。`separate` 导出改到 `segmentation-parts/` 同一目录,并给 tar 生成补充 PAX path 头,保证中文长路径和 `.nii.gz` 扩展完整。Docker Compose 镜像标签和 README 同步到 20260524 能力说明。
D. 后续如何避免问题
凡是新增位姿字段,必须同时检查前端类型、默认状态、保存/导入、三维渲染、二维映射、服务端归一化、导出坐标变换和项目库回放,不能只改一个界面。涉及 DICOM 层号时要明确区分“数组索引”和“对用户显示的医学层号”。导出压缩包如果包含中文或深层路径,必须用 `tar -tzf` 验证路径完整,不要依赖 100 字节 tar name 字段。分割显示的视觉修正也应同步确认导出数据路径,避免 UI 看似实体而 NIfTI 仍是轮廓。