点群からボリューム補間によって面を作成する(ParaView)

ParaViewを使用して、点群データからボリューム(画像データ)上に点の位置を補間してから、マーチングキューブス法で面を作成する方法を説明します。

点群の読み込み

ここで使用するサンプルデータは、horse.particles(このページの一番下からダウンロード)です。

この点群データは、比較的密でノイズもないきれいな馬のデータで、horse.particlesをテキストエディターなどで開くと、(x,y,z)の座標とスカラー値(全て1.0)が1行ずつ並んでいることを確認できます。なお、「*.particles」はVTK particle filesという点群用のデータ形式です。

まず、馬の点群データを読み込みます。ParaViewを起動し、ツールバーから

 File > Open...

と進み、ファイルの指定ダイアログから、"horse.particles"を指定して読み込みますと、下のような馬の点群が表示されます。

馬の点群

点群のボリューム補間

次に、馬の表面を取り出す前準備として、点群をボリュームデータ(画像データ)上に補間します。これには、"Point Volume Interpolator"を使用します。

 File >> Filters >> Alphabetical >> Point Volume Interpolator

この例の設定では、"Properties"タブにおいて、

 Kernel: GaussinKernel
 Kernel Footprint: Radius
 Radius: 0.007

と設定し、"Apply"します。Radiusはデータ毎に調整する必要がありますが、を大きくすると、影響範囲が大きくなり、計算が終わらなくなるので注意ください。

ガウシアンカーネルの設定

これで、点群からボリュームへの補間が完了しました。

等値面

次に、マーチングキューブス法によって、等値面を作成します。

通常は、等値面の作成には"Contour"を使用しますが、ここでは、クリップを使用します。ツールバーの"Clip"アイコンをクリックし、

 Clip Type: Scalar
 Scalars: Scalar
 Value: 0.99
 Invert: チェックを外す

と設定してから、"Apply"します。以下のように馬が出てこない場合は、Invertにチェックを入れ、抽出する領域を反転させます。

コンター図の設定

スムージング

馬の等値面が抽出されましたが、表面がデコボコしていますので、スムージングを掛けます。

まず、スムージングを掛けるためには、データ形式をpoly dataに変換する必要があるので、

 Filters >> Alphabetical >> Extract Syrface

から"Apply"をします。

ポリゴンデータ形式に変換

続けて、

 Filters >> Alphabetical >> Smooth

として、200回くらいスムージングします。

スムージング

これで、滑らかな馬の面が抽出できました。

注意

実は、上で抽出した面は、2重になっています。それは、抽出した面の不透明度"Opacity"を下げると、確認できます。

面が2重

この2重面を1面にするのは、難しいです。以下のような方法が考えられますが、汎用性はないかもしれません。

まず、

 Filters >> Alphabetical >> Generate Surface Normals

で、鋭角な面で分断します。

面の分断

次に、Connectivityフィルターにより、ひとつながりの面を抽出します。

 Filters >> Alphabetical >> Connectivity
connectivity

最期に、Thresholdフィルターでつながった面の中から、馬の内側の面を抽出します。

 Filters >> Alphabetical >> threshold

から、

 Scalars: RegionId
 Minimum: 1
 Maximum: 1

と設定し、"Apply"します。(この例では、内側の面のRegionIdは1でしたが、いつもそうではありません)。

threshold

これで、一枚の表面を抽出できました。

1枚面

ダウンロード

馬の点群データ


添付ファイル: filethreshold.png 94件 [詳細] filesplitting_surface.png 108件 [詳細] filenon_duplicate.png 102件 [詳細] fileconnectivity.png 87件 [詳細] filesmoothing.png 108件 [詳細] fileduplicate_surface.png 139件 [詳細] fileload_points.png 123件 [詳細] fileisosurface.png 126件 [詳細] filegaussian_kernel.png 118件 [詳細] fileextract_surface.png 101件 [詳細] filehorse.zip 140件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-05-05 (土) 23:48:59 (197d)