Simpleware NURBS 模块中包含可以将分割的图像数据转换为 NURBS(非均匀有理 B 样条) CAD 模型的算法和工具。本教程将演示如何使用 Simpleware NURBS 模块的算法,三个示例旨在说明创建 NURBS 模型、选择最佳 NURBS 贴片拟合算法以及确定需要额外几何预处理位置的过程。
所用数据项目文件:
在 Simpleware ScanIP 中创建 NURBS 模型的过程非常简单,因为算法旨在自动处理 NURBS 拟合。尽管该软件提供了一组高级参数,但通常使用 autosurface algorithm 生成最佳结果。autosurface algorithm 基于结构类型和所需贴片的布局有两种方法可供选择。默认情况下,建议使用 Curvature detection,它适用于大多数的几何形状。当模型来源为 CAD 如具有尖锐和/或圆角边缘参数化特征的制造组件时,Contour detection 方法会更有用。Contour detection 可生成更具结构化和系统化贴片的模型。然而,基于图像的模型很少具有参数化特征,因此 Curvature detection 算法通常是非 CAD 数据的最佳选择。
打开文件 点击 File — Open project,打开 Pre-segmented_LumbarSpine_NURBS.sip 文件。
在 3D 视图中会自动显示体积渲染背景。项目文件中分割掩膜周围有很多空白区域。为节省处理时间和内存,通常建议裁剪图像数据,删除空白的图像空间。使用 Shrink wrap 工具将自动裁剪数据并删除现有掩膜周围的任何空白。
生成 NURBS 模型分为两个步骤。首先通过 General 下方和 Model configuration 对话框中 Surface settings 栏的参数创建三角化表面。该曲面将作为使用 NURBS fitting 栏参数拟合 NURBS 表面的输入。在运行 NURBS 算法前,可以预览第一步生成的三角化表面。
1. 右键点击 Model 1 (NURBS),选择 Model configuration…。
2. 在 Model configuration 对话框,确认 Model type 和 Export type 分别为 NURBS 和 IGES (NURBS patches)。
3. 在 General 栏:
4. 在 Surface settings 栏,保留默认设置。
5. 在 NURBS fitting 栏,点击左下角的 Use recommended settings 确保默认值设置正确。
6. 点击 Close 确认模型设置。
当图像分割结果比较好的时候,点击 Use recommended settings 的默认设置通常会给出最好的结果。默认勾选 Use autosurface algorithm (recommended),Patch construction 方法选择 Curvature detection 并勾选 Auto-estimate patch count。Surface fitting 部分设置网格和控制点,默认为中等。Tolerance distance (mm) 为自动计算图像像素尺寸的一半。
1. 点击 3D 视图上方的扩展视图按钮将其最大化。
2. 点击 NURBS model — General — Model preview,创建按照 Model configuration 对话框中设置的三角化表面。
3. 如果出现 Model preview mode 信息对话框,点击 OK。或者勾选 OK, don't remind me again,避免以后此类信息的出现。
4. 检查表面模型的平滑设置和分割质量。
执行 NURBS 算法前的 STL 预览非常有用,可以检测平滑设置和分割质量。成功拟合 NURBS 表面的关键是输入表面的质量,表面需要没有伪影,且一般是平滑的。任何尖状物或粗糙的贴片可能会造成贴片布局不好或模型生成失败。
点击 NURBS model — General — Export,导出模型。
本部分将演示不同模型可使用的两种自动表面算法。Curvature detection 方法适用于所有的几何形状,而 Contour detection 就贴片组织而言,对于简单的几何形状会有更好的结果。关于两者不同最简单的描述是,Contour 方法的目的是贴片边界沿着模型的轮廓,Curvature 方法则允许贴片溢出边缘。因此,Contour 在处理比较简单和更结构化的几何形状时表现更好。
为展示区别,以下示例采用包含发动机支架 CT 扫描的项目文件。
1. 点击 File — Open project,打开 Bracket_NURBS.sip。
2. 点击 Image processing — Segmentation — Threshold。
3. 在 Threshold 工具面板:
4. 右键点击掩膜 Mask 1,选择 Rename 重命名为 Bracket。
5. 右键点击掩膜,选择 Change colour — Silver。
如果生成了表面渲染(如Fast preview、Model preview 或 Full model),默认是会自动展示体积渲染。可以在 Preferences 对话框(File — Preferencese — Volume rendering)修改设置。
1. 右键点击 Model 1 (NURBS),选择 Model configuration。
2. 确认 Model type 为 NURBS,Export type 为 IGES (NURBS patches)。
3. 在 General 栏保留默认设置。
4. 在 Surface settings 栏,确认勾选 Use triangle smoothing for masks,Number of iterations 设置为 10。
5. 由于本示例中没有表面对象,可以保持不勾选 Use triangle smoothing for surface objects。
6. 在 NURBS fitting 栏:
7. 点击 Close 确认模型设置。
右键点击 Model 1 (NURBS),选择 Model configuration。 在 NURBS fitting 栏: 更换 Patch construction 为 Contour detection。 保留其他设置。 点击 Close 确认新的模型设置。
Contour detection 方法根据边缘特征构建贴片,并以更为结构化的方式排列。
本部分将演示当需要编辑分割后的掩膜以使其更适用于拟合 NURBS 表面。拟合表面的成功和贴片的最终质量在很大程度上依赖于几何形状的表面特征。因此,小的杂散特征或粗糙的贴片将会因贴片尝试显露所有存在的特征而降低 NURBS 贴片的质量。NURBS 表面拟合要保留特征,所以必须在分割中移除任何不需要的区域。像 Recursive Gaussian 这样的图像滤波器就非常擅长轻微地去除分割的特征。此外,Simple 3D editing 和 Advanced 3D editing 是在对分割进行局部平滑或删除区域时的强大工具。
本示例将采用动脉血流项目的血管展示如何通过 3D 编辑改进掩膜。
点击 File — Open project,打开 Blood_Flow_NURBS.sip。
Fast preview 将比 Live 3D 更能精确地可视化掩膜表面。
1. 点击 Image processing — Segmentation — 3D editing — Advanced 3D editing。
2. 将旋转模型到方便查看不平坦区域的角度。
3. 在 Advanced 3D editing 工具面板的 Regions of interest 区域,选择 Frustum 下拉菜单的 Lasso frustum。
4. 在 3D 视图,使用鼠标左键在需要平滑的高亮区域点击并拖拽画出形状。松开鼠标后 Lasso frustum 将沿虚线自动闭合。
5. 勾选 Highlight surfaces 可查看选中区域。
6. 在 Parameters 区域,设置 Operation 为 Smooth,Strength (pixels) 为 2。勾选 Apply on visible surfaces only 和 Update on the fly。
7. 点击 Apply。应用局部平滑,3D 视图将更新展示变化。
8. 平滑后点击 Delete all 按钮,删除 ROI 选项。
当与 Frustum 感兴趣区域(ROI)结合使用时,Apply on visible surfaces only 会非常有用。截锥体对象沿对面方向穿过图像体积,即使模型的另一面不可见,但也是被选中的状态。勾选 Apply on visible surfaces only 意味着 3D 编辑操作将仅应用在 3D 视图中当前可见 ROI 所在的表面。
1. 将旋转模型到方便查看不平坦区域的角度。
2. 在 Advanced 3D editing 工具面板的 Regions of interest 区域,选择 Primitive 下拉菜单的 Ellipsoid 删除左侧的尖峰。
3. 在 3D 视图中,在需要删除的区域点击并拖拽生成椭球体。Regions of interest 区域将显示不同 ROI 创建方法的说明。
4. 现在使用 Primitive 下拉菜单的 Cuboid 选中第二个区域。在 3D 视图保持左键点击并拖拽创建初始区域,然后通过 ROI 操纵小部件重新调整位置。
5. 在 Parameters 区域,设置 Operation 为 Delete。不勾选 Apply on visible surfaces only,勾选 Update on the fly。
6. 点击 Apply。应用删除操作,3D 视图将更新展示变化。
7. 删除尖峰后,建议可以应用局部平滑移除删除处区域的任何伪影。
8. 点击 Regions of interest 列表里的 Ellipsoid1,3D 视图中的ROI 操纵小部件将回到 Ellipsoid1 区域。
9. 将椭球体向血管平移,并将其稍微放大。
10. 点击 Regions of interest 列表里的 Cuboid1,将长方体向血管平移。
11. 在 Parameters 区域,设置 Operation 为 Smooth,Strength (pixels) 为 2。不勾选 Apply on visible surfaces only。
12. 点击 Apply 应用设置。
13. 点击 Delete all 按钮,删除 ROI 选项。
1. 将旋转模型到方便查看不平坦区域的角度。
2. 在 Regions of interest 区域,选择 Primitive 下拉菜单的 Cuboid。
3. 在 3D 视图中,在需要删除的区域点击并拖拽生成长方体。
4. 在 Parameters 区域,设置 Operation 为 Delete。不勾选 Apply on visible surfaces only,勾选 Update on the fly。
5. 点击 Apply。应用删除操作,3D 视图将更新展示变化。
6. 点击 Delete all 按钮,删除 ROI 选项。
7. 再次建议应用局部平滑移除删除区域的任何伪影。
8. 在 Regions of interest 区域,选择 Primitive 下拉菜单的 Ellipsoid。
9. 在 3D 视图,如上同样的流程选中不平坦区域。
10. 在 Parameters 区域,设置 Operation 为 Smooth,Strength (pixels) 为 2。不勾选 Apply on visible surfaces only。
11. 点击 Apply。应用局部平滑操作,3D 视图将更新展示变化。
1. 点击 Models,选择 Create a new NURBS model。
2. 将掩膜 Mask 1 拖拽到新创建的 Model 1 (NURBS)。
3. 右键点击 Model 1 (NURBS),选择 Model configuration。
4. 确认 Model type 为 NURBS,Export type 为 IGES (NURBS patches)。
5. 在 General 栏保留默认设置。
6. 在 Surface settings 栏保留默认设置。
7. 在 NURBS fitting 栏:
8. 点击 Close 确认模型设置。
点击 NURBS model — General — Export,导出模型。