注釈
Go to the end to download the full example code
再サンプリング#
PyVistaでターゲットメッシュからデータを補間またはサンプリングするには,主に2つの方法があります. pyvista.DataSetFilters.interpolate()
は距離重み付けカーネルを使って,ターゲットメッシュの近くの点から目的の点に点データを補間します. pyvista.DataSetFilters.sample()
は,ターゲットメッシュのセルを囲むセルの補間スキームを使ってデータを補間します.
ターゲットメッシュが点群である場合,つまりセル構造に連結性がない場合は,一般的に pyvista.DataSetFilters.interpolate()
が推奨されます.ターゲットメッシュのセル内で補間を行いたい場合は,一般的に pyvista.DataSetFilters.sample()
を使用します.
この例では pyvista.DataSetFilters.sample()
を使用しています. pyvista.DataSetFilters.interpolate()
については, 補間 を参照してください.
メッシュのポイント/セル配列を別のメッシュのノードにリサンプルします.
この例では,ボリュームメッシュのスカラーデータを,そのボリュームに含まれる球体の表面にリサンプルします.
import pyvista as pv
from pyvista import examples
簡易リサンプル#
球上のグリッドポイントを照会する
mesh = pv.Sphere(center=(4.5, 4.5, 4.5), radius=4.5)
data_to_probe = examples.load_uniform()
2つのデータセットをプロットする
p = pv.Plotter()
p.add_mesh(mesh, color=True)
p.add_mesh(data_to_probe, opacity=0.5)
p.show()
アルゴリズムを実行し,結果をプロットします.
複雑なリサンプル#
大量のデータを取得し,解像度の低いグリッドを作成してリサンプルします.
data_to_probe = examples.download_embryo()
mesh = pv.create_grid(data_to_probe, dimensions=(75, 75, 75))
result = mesh.sample(data_to_probe)
threshold = lambda m: m.threshold(75.0, scalars='SLCImage')
cpos = [
(468.9075585873713, -152.8280322856109, 152.13046602188035),
(121.65121514580106, 140.29327609542105, 112.28137570357188),
(-0.10881224951051659, 0.006229357618166009, 0.9940428006178236),
]
dargs = dict(clim=[0, 200], cmap='rainbow')
p = pv.Plotter(shape=(1, 2))
p.add_mesh(threshold(data_to_probe), **dargs)
p.subplot(0, 1)
p.add_mesh(threshold(result), **dargs)
p.link_views()
p.view_isometric()
p.show(cpos=cpos)
Total running time of the script: (0 minutes 6.681 seconds)