You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在二进制NumPy数组中绘制边界分割簇(3D晶粒边界建模)

3D二进制数组中基于种子点的类球状簇边界生成方案(晶粒边界建模场景)

核心算法思路

1. 距离场等值面法

  • 遍历3D二进制数组中所有值为0的体素,计算每个体素到最近种子点的欧氏距离
  • 设定距离阈值(可按簇的预期大小设定),将距离等于阈值的体素标记为1(边界);对于相邻簇的公共边界,取距离两个种子点相等的体素作为边界(即Voronoi面的体素化实现)
  • 这种方法天然适配类球状簇的需求,因为欧氏距离的等值面就是球面/近似球面

2. 体素化Voronoi胞腔边界提取

  • 先通过3D Voronoi剖分得到每个种子点对应的胞腔
  • 遍历3D数组中的每个体素,判断其所属的胞腔;若某体素的邻域体素属于不同胞腔,则将该体素标记为1(边界)
  • 解决之前Voronoi转平面失败的关键:跳过直接生成平面的步骤,直接在体素网格上判断边界,避免平面与体素网格的适配问题

3. 各向同性区域生长+边界提取

  • 从每个种子点出发,向6/26邻域进行各向同性区域生长(优先选择欧氏距离更接近球面的方向),直到达到预设的簇体积
  • 生长完成后,提取不同簇之间的相邻体素,标记为1作为边界

实用工具包推荐

  • NumPy + SciPy:用scipy.spatial.Voronoi计算3D Voronoi图,结合NumPy的数组遍历操作,手动实现体素的胞腔归属判断与边界标记,适合自定义需求强的场景
  • Open3D:通过create_from_point_cloud_voronoi生成Voronoi胞腔网格,再用VoxelGrid工具将网格表面离散化为体素,直接输出3D二进制数组,边界体素设为1
  • PyVista:支持Voronoi胞腔的快速生成与体素转换,内置的边界提取函数可直接分离簇边界,适配材料科学领域的建模需求

关键注意事项

  • 用欧氏距离而非曼哈顿距离计算体素与种子的距离,保证簇的类球状形态
  • 处理边界重叠时,避免重复标记同一体素为1,可通过先计算所有簇的区域,再取区域间的交集体素作为边界
  • 若目标数组分辨率较低,可先在高分辨率网格上生成边界,再通过下采样得到最终结果,提升边界的平滑度

内容的提问来源于stack exchange,提问作者ogclifford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:27:26