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

如何为PyVista的ImageData成功执行gaussian_smooth方法?

问题描述

尝试复现PyVista中3D高斯平滑PolyData的示例,但将gaussian_smooth()方法应用于自定义ImageData时,出现**MissingDataError: No data available.**错误。推测需要给ImageData传入标量字段,但不确定用哪个属性。相关代码如下:

# create a uniform grid to sample the function with
n = 40
x_min, y_min, z_min = [np.min(q) - 0.25*np.absolute(np.min(q)) for q in [tmp[tmp[:,3]==1, 0], tmp[tmp[:,3]==1, 1], tmp[tmp[:,3]==1, 2]]]
x_max, y_max, z_max = [np.max(q) + 0.25*np.absolute(np.max(q)) for q in [tmp[tmp[:,3]==1, 0], tmp[tmp[:,3]==1, 1], tmp[tmp[:,3]==1, 2]]]
grid = pv.ImageData(
    dimensions=(n, n, n),
    spacing=( (x_max - x_min) / n, 
              (y_max - y_min) / n,
              (z_max - z_min) / n),
    origin=(x_min, y_min, z_min),
)

smooth_grid = grid.gaussian_smooth(std_dev=3.0)
解决方案
  • 给ImageData添加标量字段
    PyVista的gaussian_smooth()方法依赖网格上的标量数据才能执行平滑操作,你当前创建的ImageData仅包含空的网格结构,没有任何可用于处理的标量数据,这是报错的核心原因。你需要给网格添加点数据或单元数据,通常点数据更常用:
    示例1:采样外部源点的标量到网格

    # 从tmp中提取源点坐标和对应标量(根据实际需求调整)
    source_points = tmp[tmp[:,3]==1, :3]
    scalars = tmp[tmp[:,3]==1, 3]  # 替换为你要平滑的实际标量字段
    
    # 将标量采样到ImageData的点上,命名为"scalars"
    grid['scalars'] = grid.sample(source_points, scalars)
    

    示例2:生成基于网格坐标的测试标量

    # 获取网格所有点的坐标数组
    points = grid.points
    # 生成距离原点的距离作为测试标量
    scalars = np.linalg.norm(points, axis=1)
    # 将标量添加到网格的点数据中,自定义键名"distance"
    grid['distance'] = scalars
    
  • 执行高斯平滑
    添加完标量字段后,直接调用gaussian_smooth()即可。方法默认使用当前活跃的标量字段,也可以通过scalars参数指定具体要平滑的字段:

    # 使用默认活跃标量进行平滑
    smooth_grid = grid.gaussian_smooth(std_dev=3.0)
    
    # 指定具体字段名执行平滑
    smooth_grid = grid.gaussian_smooth(std_dev=3.0, scalars='distance')
    
  • 验证平滑效果
    可以通过可视化对比原始和平滑后的网格,确认结果:

    p = pv.Plotter(shape=(1, 2))
    p.subplot(0, 0)
    p.add_mesh(grid, scalars='distance', title='Original')
    p.subplot(0, 1)
    p.add_mesh(smooth_grid, scalars='distance', title='Smoothed')
    p.show()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 23:35:23