如何导入图像并放样成实体

2025年 3月 21日

不规则形状有很多不同的格式。在模拟不规则形状系列博客中,我们探讨了在 COMSOL Multiphysics® 软件中处理不规则形状的不同方法。这篇博客,我们将对该系列进行补充,讨论如何获取一组图像并将其放样成实体。

编者注:这篇博客最初发布于 2017 年 9 月 20 日。现在对其进行更新,以反映 COMSOL Multiphysics® 中的新特征和新功能。

一个不规则形状的示例:人类头部

在处理扫描数据时,我们可能会遇到一些由核磁共振成像或 CT 扫描生成的切面图。关于这种数据格式的处理,我们来看一个人类头部的切面图示例。

该图像的处理步骤可简单概括为:

  • 通过在 Java Shell 中运行代码创建工作平面
  • 使用内置插件创建每一个图像的曲线对象
  • 将曲线放样为实体
  • 隐藏不必要的边以生成一致的形状

现在,让我们更详细地了解每一个步骤。

创建工作平面图

在这个示例中,我们有 19 幅头部切面图像,这表示需要创建 19 个 工作平面 特征,以正确设置 z 坐标。在 COMSOL 软件中,您只需在 Java Shell 中运行以下代码,即可轻松实现这一操作:

double[] zValues = {-0.128, -0.12, -0.1, -0.08, -0.07, -0.06, -0.05, -0.04, -0.03, -0.02, -0.01, 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.124};
for (int k = 0; k < zValues.length; k++) { String newWpTag = model.geom("geom1").feature().uniquetag("wp"); model.component("comp1").geom("geom1").create(newWpTag, "WorkPlane"); model.component("comp1").geom("geom1").feature(newWpTag).label("z "+toString(zValues[k])); model.component("comp1").geom("geom1").feature(newWpTag).set("unite", true); model.component("comp1").geom("geom1").feature(newWpTag).set("quickz", zValues[k]); }

请注意,在文末提供的可下载模型中,此代码已被保存在一个方法中。在示例模型中,从 开发工具 功能区选项卡运行一个方法,就会产生与从 Java Shell 运行代码相同的结果。

导入图像和创建曲线

通过在每幅图像上使用内置的 图像到曲线 插件,您可以在每个工作平面上添加一个 插值曲线 特征,从而生成总共 19 个曲线对象。要了解有关此插件的更多信息,请阅读博客:如何使用插件将图像转换为几何模型

图像到曲线插件设置窗口的屏幕截图。 图像到曲线 插件的设置窗口。

人类头部的切面图。 人类头部的切面图,用绿色显示轮廓阈值为 0.6 时的曲线。

轮廓阈值 固定为 0.6,以确保所有轮廓的缩放比例相同。 封闭曲线 设置用于确保创建的曲线对象封闭,并且一阶和二阶导数是处处连续的。在 COMSOL Multiphysics® 中,放样封闭曲线会生成实体对象,而放样开放曲线会生成曲面。本例中,所有曲线都使用默认的 相对容差 0.001,仅最后一条曲线(z 0.124)的 相对容差 被】增加到 0.01,用于生成一个相对平滑的曲线。最后,在头部顶端添加一个点。如果您的数据为曲线坐标而不是图像,可以直接将这些数据导入 插值曲线 功能,而无需使用此插件。

屏幕截图显示了插值曲线功能的设置窗口(左)以及代表头部外壳的所有曲线和点。
插值曲线 功能的 设置 窗口(左)以及代表头部外壳的所有曲线和点(右)。灰色面代表 Z 坐标在 -0.04 处的工作平面,位于工作平面内的曲线用黄色突出显示。

放样成实体的注意事项

有了定义头部各切面轮廓的曲线对象,我们就可以使用 放样 操作创建实体形状。放样 操作是设计模块中的几何建模工具之一。在设置 放样 操作前,我们需要确保曲线对象适合作为 放样 的轮廓。将曲线或曲面放样到实体需要不同的轮廓具有相同数量的边和点。如下所述,可以使用 分割边 操作来确保相同数量的边和点。第一个和最后一个对象(起点和终点轮廓)是个例外,它们可以是与中间轮廓的边数不同的曲线对象,也可以是点。

封闭的插值曲线有两个顶点。因此,上述中间对象的边和点数量相同的标准已经满足,因为所有创建的曲线都有两条边。不过,这些点在轮廓对象上的位置也很重要。当放样穿过曲线时,它会沿着放样的方向连接所有带边的点。如果这些点没有在一条相对直线的位置,生成的曲面可能会变形。您可以手动分割这些边,以更好地表现所有曲面。本例中不需要这样做,但如果需要,可以添加 分割边 操作,通过投影选定的顶点来分割边。

为了验证几何对象的边和点数是否相同,您可以单击图形窗口上方的 选择对象 按钮,在图形窗口中选择一个曲线对象,然后单击 几何网格 选项卡中的 测量 按钮。测量结果将写入 信息 日志。

放样成实体

本示例中的点已经大致对齐,是时候创建实体了。放样 功能包含多个选项,但此处只使用最简单的步骤:在 轮廓对象 列表中添加点和头部的所有曲线对象。起点和终点轮廓由 放样 操作自动确定。放样 设置窗口有许多折叠部分,可用于对放样进行微调。例如,指定放样的方向或使用引导曲线进一步控制形状。本例中不使用折叠部分中的设置。

屏幕截图显示了 COMSOL Multiphysics® 中放样操作的设置窗口,以及执行放样操作后生成的实体头部模型。 放样 操作的设置窗口(左),显示了输入的 轮廓对象,这是本文示例中使用的唯一输入。右图显示的是生成的实体头部几何。

面分割

由封闭的连续轮廓曲线放样的表面或实体对象至少有两个接缝,这些接缝穿过轮廓曲线的顶点,形成两个或两个以上的边界。根据不同曲线顶点的对齐方式,此操作可能会引入更多的接缝。如果轮廓曲线的切线不连续,则会通过这些点引入其他接缝。使用默认的 面分割 设置:在 放样 操作中使用 最小化(见上图)不会引入其他接缝,本文示例就是这种情况。

如果我们希望对放样表面进行更多分割,可以使用 格栅 分割选项。前一个选项是沿轮廓曲线的每个顶点划分曲面,后者还添加了轮廓曲线选项。还有另一种方法是使用布尔操作和分割将曲面与其他几何对象进行分割。此操作可以创建边界,用于施加边界条件。另外,如果我们希望获得更简洁的外观,可以使用 虚拟操作 创建复合面。形成复合面 是实现此目标的功能之一,忽略边 功能也可以得到相同的最终结果。

COMSOL Multiphysics® 中形成复合面操作设置窗口的屏幕截图,进行平滑边处理后的人头部模型的最终几何和最终几何的网格。 通过将上图中的边添加到 形成复合面 操作(左),最终几何图形变得更加平滑美观(中)。右侧为划分网格后的头部模型。

下一步

这篇博客讨论了由图像创建曲线,以及将这些曲线放样为实体对象的可能性。请点击下方按钮,下载文中示例的 MPH 文件。

延伸阅读

博客分类


评论 (0)

正在加载...
浏览 COMSOL 博客
Baidu
map