PyVista:PolyData 的 3D 高斯平滑

PyVista: 3D Gaussian Smoothing of PolyData

提问人:Sterling Butters 提问时间:11/16/2023 更新时间:11/16/2023 访问量:28

问:

我想在这里复制这个例子,https://docs.pyvista.org/version/stable/examples/01-filter/gaussian-smoothing.html 使用我自己的数据,但尝试将该方法应用于我的结果(但适用于该示例)。我猜我需要将我的标量字段传递给,但我不确定我用什么属性来执行此操作。gaussian_smooth()ImageDataMissingDataError: 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)

我的问题:我怎样才能成功地在我的gaussian_smoothImageData

Python 3d 表面 gaussianblur pyvista

评论

1赞 Matthew Flamm 11/16/2023
这不是 MRE。它不能运行。但看起来您只是在对网格上的数据进行操作时创建网格。您需要向网格添加数据,例如:gaussian_smoothgrid["mydata"] = data_to_be_smoothed
0赞 Sterling Butters 11/17/2023
@MatthewFlamm我认为这是我问题的本质。应该是什么属性?我以为会起作用,但 PyVista 示例 () 似乎也没有定义这一点(但我可以。mydatafield_databrain.vtkguassian_smooth
1赞 Andras Deak -- Слава Україні 11/17/2023
文档显示“此过滤器仅支持点数据”。因此,您需要与图像中的点相同数量的标量。字段数据是没有空间引用的特定数据,它们只是与网格关联的元数据。但是您在问题标题中谈论的是,因此如果没有最小的可重复示例,这会更加令人困惑。point_dataPolyData
0赞 Matthew Flamm 11/18/2023
grid["mydata"] = array当第一维等于点数时,是等价的。grid.point_data["my_data"] = arrayarray

答: 暂无答案