2026-05-20-00-38-39 对齐FOV并强化网格截面填充
This commit is contained in:
36
工程分析/经验记录.md
36
工程分析/经验记录.md
@@ -919,3 +919,39 @@ C. 解决问题方案
|
||||
D. 后续如何避免问题
|
||||
|
||||
多层或多构件 Canvas 叠加时,优先使用离屏画布或单次合并后的 ImageData;只有在明确要替换整张图时才使用主 canvas 的 `putImageData`。涉及透明叠加的渲染改动,必须检查“前一层是否会被透明像素擦除”。
|
||||
|
||||
## 2026-05-20-00-38-39 多视图 FOV 对齐必须使用同源物理尺度
|
||||
|
||||
A. 具体问题
|
||||
|
||||
右侧“逆向分割映射视图”此前使用独立归一化 `viewExtent` 映射 STL 截面,左侧三维融合视图则根据 DICOM 物理尺寸和 `baseExtent` 计算显示尺寸;两侧视场和缩放来源不同,容易出现同一层切片下解剖结构和 Overlay Mask 大小不一致。
|
||||
|
||||
B. 产生问题原因
|
||||
|
||||
右侧算法只使用 STL bounds 做归一化,没有读取 DICOM `physicalSize`、`Pixel Spacing` 和 slice spacing;同时左侧三维视图过去按当前可见 STL 构件计算 bounds,构件显隐还可能改变左侧模型缩放。
|
||||
|
||||
C. 解决问题方案
|
||||
|
||||
右侧新增 `getPreviewPhysicalSize`、`getFovCanvasSize` 和同源 `getModelSceneMetrics`,用 DICOM 物理宽高、层厚、总层数和左侧 `baseExtent=4.6` 推导 `dicomWidth/dicomHeight/dicomDepth`、slice Z 与 `modelBaseScale`。左侧三维视图改为始终用全部 STL bounds 建立全局模型尺度,构件显隐只影响 Mesh 是否渲染。
|
||||
|
||||
D. 后续如何避免问题
|
||||
|
||||
新增任何二维/三维联动视图前,先明确使用哪套物理坐标系和 FOV;DICOM Base Layer、STL Overlay、slice Z 和模型缩放必须从同一组 spacing、physicalSize 与全局 bounds 推导,不能在不同视图中各自定义归一化范围。
|
||||
|
||||
## 2026-05-20-00-38-39 实体 Mask 填充需要补齐内部空洞
|
||||
|
||||
A. 具体问题
|
||||
|
||||
仅依赖扫描线交点配对填充时,复杂 STL 截面或抽样边界可能产生小孔洞,视觉上仍会像漏隙,不符合“闭合实体区域”Mask 的审查预期。
|
||||
|
||||
B. 产生问题原因
|
||||
|
||||
Mesh-Plane Intersection 得到的是离散截面线段,浏览器端再进行像素级光栅化;线段精度、重复交点、边界浮点误差和抽样上限都可能让填充区域内部残留透明像素。
|
||||
|
||||
C. 解决问题方案
|
||||
|
||||
在每个构件的离屏 Mask ImageData 中完成扫描线填充后,从画布四边对透明区域做 flood fill 标记外部背景;任何未被外部连通到的透明像素都视为内部孔洞并填为当前构件颜色,再合成回主 Overlay。
|
||||
|
||||
D. 后续如何避免问题
|
||||
|
||||
所有实体 Mask 光栅化都应包含“内部孔洞填补”或等价的连通域后处理;验证时不能只看边界是否有线,还要检查内部是否连续饱满。若后续接入后端体素化,也应保留连通域清理策略作为质量检查。
|
||||
|
||||
Reference in New Issue
Block a user