Categories: open3d

Open3Dでポリゴンを3D点群に変換するプログラム(Open3DとPythonによる実装)


本日はOpen3Dを用いて、3Dのポリゴンを入力に、3Dの点群に変換してみます。

現在Open3Dには、ポリゴンを点群に変換する方法が2種類実装されていますので、その双方を試して比較も行ってみます。

Open3Dの環境構築に関しては、以前に環境構築の方法を紹介しましたので、以下の記事を参照してください。

今回は3Dデータ処理のためにOpen3Dの環境構築をしてみたいと思います。 このOpen3DはIntel Labsから2018年に論...

PLYファイルの入手

PLYファイルは3D点群データや3Dメッシュを保存するための汎用フォーマットで、広く用いられています。

PLYファイルで保存された3Dメッシュはさまざまなサイトで公開されていますが、今回は以下のサイトで公開されているスタンフォードバニーのPLYファイルを読み込み、実験を行いました。

外部サイト:3D Models

3D点群ダウンサンプリングプログラム

環境

  • OS:Windows 10
  • Python 3.6.10
  • Open3D ver. 0.15.1

ソースコード

コードの解説

ポリゴンから点群への変換(sample_points_uniformly)

ポリゴンから点群への変換を行っています。こちらの方法は、サーフェス上に点を均一にサンプリングする方法のようです。

引数として目標点数を与えることができ、その点数の点群が出力されます。

ポリゴンから点群への変換(sample_points_poisson_disk)

Open3Dにはもう一つポリゴンから点群への方法「ポアソンディスクサンプリング」が実装されていて、該当するコードが上記の箇所になります。

こちらの方法は、サーフェス上の点をより均等に分散できる方法となっています。

実行結果

以下に入力したポリゴンと、各サンプリング結果を示します。いずれの手法も点数を10000点で固定しましたが、「sample_points_poisson_disk」の方がサーフェスに対して綺麗に点が分散しているように見えます。

入力ポリゴン

変換後の点群(sample_points_uniformly)

変換後の点群(sample_points_poisson_disk)

まとめ

本日はOpen3Dを用いて、2種類の方法でポリゴンを点群に変換してみました。

このようにOpen3Dを使うことで、ポリゴンと点群間の変換を容易に実施することができます。点群からポリゴンを生成する方法についても、以下の記事で紹介していますので、もし興味があればご覧ください。

本日はOpen3Dを用いて、3D点群データから面を推定し、メッシュ(ポリゴン)データに変換するプログラムを紹介します。 Open3D...
Haruoka