3D範囲データから表面を再構築するためにどのようなアルゴリズムがあるのかを把握しようとしています。一見、ボールピボットアルゴリズム([〜#〜] bpa [〜#〜])およびポアソン表面再構成はより確立された方法ですか?
私はこの数か月間このジレンマに直面しており、徹底的な研究を行ってきました。
主に、アルゴリズムには2つのカテゴリがあります:計算ジオメトリと暗黙的なサーフェスです。
既存のポイントにメッシュを合わせます。
おそらく、このグループの最も有名なアルゴリズムは powercrust です。これは理論的に確立されているためです-防水メッシュを保証します。
Ball PivotingはIBMが特許を取得しています。また、点密度が変化する点群には適していません。
暗黙的な関数をポイントクラウドに適合させ、マーチングキューブのようなアルゴリズムを使用して、関数のゼロセットをメッシュに抽出します。
このカテゴリのメソッドは、主に使用される暗黙的な関数によって異なります。
Poisson 、 Hoppe's 、および [〜#〜] mpu [〜#〜] は、このカテゴリで最も有名なアルゴリズムです。トピックに慣れていない場合は、ホッペの論文を読むことをお勧めします。非常に説明的です。
通常、このカテゴリのアルゴリズムは、膨大な入力を非常に効率的に処理できるように実装できます。また、品質<->速度のトレードオフを調整できます。それらは、ノイズ、さまざまな点密度、穴に邪魔されません。それらの欠点は、入力ポイントで一貫した向きの表面法線が必要なことです。
少数の無料の実装があります。ただし、それをフリーソフトウェア(この場合はGPLライセンスが許容されます)に統合するか、商用ソフトウェア(この場合はより自由なライセンスが必要です)に統合するかによって異なります。後者は非常にまれです。
1つは [〜#〜] vtk [〜#〜] にあります。統合するのは難しいと思われ(無料のドキュメントはありません)、奇妙で複雑なアーキテクチャを持ち、高性能アプリケーション向けには設計されていません。許可された入力ポイントクラウドにもいくつかの制限があります。
this Poissonの実装を見てください。その後、それについての経験を共有してください。
また、 here は、表面再構成を含むいくつかの高性能アルゴリズムです。
CGALは有名な3Dライブラリですが、無料のプロジェクトでのみ無料です。 Meshlab はGPLで有名なアプリケーションです。
また(2013年8月追加):ライブラリ [〜#〜] pcl [〜#〜] には、表面再構成専用の モジュール があり、活発に開発中です(一部です) GoogleのSummer of Codeをご覧ください)。表面モジュールには、再構築のためのさまざまなアルゴリズムが含まれています。また、PCLは 能力を持っています サーフェス法線を推定します。ポイントデータが提供されていない場合、この機能は機能 モジュール にあります。 PCLはBSDライセンスの条件に基づいてリリースされたオープンソースソフトウェアであり、商用および研究用に無料で使用できます。
さまざまな表面再構成アルゴリズムでいくつかの直接実験を行いたい場合は、MeshLab、メッシュ処理システム、オープンソースであり、以前に引用した多くの表面再構成アルゴリズムの実装が含まれています。
ソースはGPLによって保護されているため、商用のクローズドソースプロジェクトでは使用できませんが、さまざまな表面再構成アルゴリズムの特性(ノイズに対する感度、速度、外れ値に対する堅牢性、詳細の保持方法など)のいずれかを実装する前に)。
現在、フィールドでの最近の研究をご覧になるかもしれません-現在は ポイントサンプリングサーフェスの高速低メモリストリーミングMLS再構築 Gianmauro Cuccuru、Enrico Gobbetti、Fabio Marton、Renato Pajarola、Ruggero Pintusのようなものです。その引用により、文献をかなり迅速に調べることができます。
それを省略するのは奇妙に思えるので、あなたのケースにぴったりかどうかはわかりませんが、 マーチングキューブ はこのようなケースでよく言及されています。
ここ GitHubでは、オープンソースです メッシュ処理ライブラリ C++では Dr。Hugues Hoppe で、表面再構成プログラムReconはあなたの問題に適したオプションです...
私もこの問題を抱えていたため、独自の点群クラストアルゴリズムを開発して実装しました。ソースとドキュメントはgithub.comで見つけることができます: https://github.com/ricebean-net/PointCloudCrust 。このアルゴリズムはJavaで実装されています。
たぶん、これはあなたを助けることができます。ライブラリの使用方法を示す短いpythonスクリプトもあります。楽しんでください!
Geometric Toolsによる3D Delaunayツール があります。このツールは、DirecXおよびOpenGLで使用されます。残念ながら、ライブラリの実際のサンプルコードを見るには本を買う必要があるかもしれません。あなたはまだコードを読んで理解します。
Matlabは、Delaunay、 delaunayTriangulation class を使用した表面再構築ツールも導入しました。
Alpha Shapes に興味があるかもしれません。