3D点群からの表面再構成のための堅牢なアルゴリズム?
-
22-07-2019 - |
質問
3D範囲データから表面再構成を行うためのアルゴリズムを見つけようとしています。一見すると、ボールピボットアルゴリズム( BPA )とポアソンサーフェス再構築がより確立された方法ですか?
- BPAおよびポアソン表面再構成アルゴリズム以外の分野で確立された、より堅牢なアルゴリズムは何ですか?
- 推奨される研究出版物
- 利用可能なソースコードはありますか
解決
私はここ数か月間このジレンマに直面しており、徹底的な研究を行いました。
アルゴリズム
主にアルゴリズムの2つのカテゴリがあります:計算ジオメトリと暗黙のサーフェス。
計算ジオメトリ
既存のポイントにメッシュを合わせます。
おそらくこのグループの最も有名なアルゴリズムは powercrust であり、理論的に確立されているためです-防水メッシュを保証します。
Ball Pivotingは、IBMが特許を取得しています。また、点密度が変化する点群には適していません。
暗黙関数
ポイントクラウドに暗黙的な関数を適合させ、マーチングキューブのようなアルゴリズムを使用して関数のゼロセットをメッシュに抽出します。
このカテゴリのメソッドは、主に使用されるさまざまな暗黙関数によって異なります。
ポアソン、 Hoppe's 、および MPU は、このカテゴリで最も有名なアルゴリズムです。トピックに慣れていない場合は、ホッペの論文を読むことをお勧めします。非常に説明的です。
このカテゴリのアルゴリズムは通常、巨大な入力を非常に効率的に処理できるように実装でき、その品質をスケーリングできます<!> lt;-<!> gt;速度のトレードオフ。それらは、ノイズ、さまざまな点密度、穴に邪魔されません。それらの欠点は、入力ポイントで一貫した向きの表面法線が必要なことです。
実装
少数の無料の実装があります。ただし、それをフリーソフトウェア(この場合はGPLライセンスが許容されます)に統合するか、商用ソフトウェア(この場合はより自由なライセンスが必要です)に統合するかによって異なります。後者は非常にまれです。
1つは VTK にあります。統合するのは難しいと思われます(無料で入手できるドキュメントはありません)。奇妙で複雑なアーキテクチャであり、高性能アプリケーション向けに設計されていません。許可される入力ポイントクラウドにもいくつかの制限があります。
this Poissonの実装、およびその共有後私についてのあなたの経験をお願いします。
また: こちらは、いくつかの高性能アルゴリズムと、それらの間での表面の再構築です。
CGALは有名な3Dライブラリですが、無料のプロジェクトでのみ無料です。 Meshlab はGPLで有名なアプリケーションです。
また(2013年8月追加): ライブラリ PCL には、モジュールは表面の再構成に特化しており、活発に開発されています(そしてGoogleのSummer of Codeの一部です)。表面モジュールには、再構築のためのさまざまなアルゴリズムが含まれています。 PCLは、表面法線を推定する機能を備えています。ポイントデータ、この機能は機能モジュールにあります。 PCLは、BSDライセンスの条件に基づいてリリースされたオープンソースソフトウェアであり、商用および研究での使用は無料です。
他のヒント
さまざまな表面再構成アルゴリズムを使用して直接実験する場合は、 MeshLab 、メッシュ処理システム、これはオープンソースであり、以前に引用された多くの表面再構成アルゴリズムの実装が含まれています。
- ポアソン表面偵察
- MLSベースのアプローチ、
- ボールピボットの実装
- Curlessボリュームベースのアプローチの変形
- ドロネーベースの手法(アルファ形状とボロノイフィルタリング)
- 散布点セットから法線を計算するツール
- および結果のメッシュを比較/測定/クリーニング/単純化する他の多くのツール。
ソースはGPLで保護されているため、商用のクローズドソースプロジェクトでは使用できませんが、さまざまな表面再構成アルゴリズムの特性について適切な感覚を得ることが非常に重要です(ノイズに対する感度、それらの1つを実装する前に、速度、外れ値に対する堅牢性、詳細をどのように保持するかなど)。
この分野の最近の研究を見始めるかもしれません-現在ポイントサンプリングサーフェスの高速低メモリストリーミングMLS再構築、ジャンマウロククル、エンリコゴベッティ、ファビオマートン、レナートパジャローラ、およびルッジェロピンタス。その引用は、あなたが文献を非常に素早く調べることができるようにします。
あなたのケースにぴったりかどうかはわかりません。省略したのは奇妙に思えますが、マーチングキューブは、このような場合によく言及されます。
こちらは、オープンソースのメッシュ処理ライブラリ(博士Hugues Hoppe :表面再構成プログラム Recon は問題に適したオプションです...
Geometric Toolsによる3D Delaunayツールがあります。このツールは、DirecXおよびOpenGLで使用されます。残念ながら、ライブラリの実際のサンプルコードを見るには本を買う必要があるかもしれません。あなたはまだコードを読んで理解します。
Matlabは、Delaunayを使用したサーフェス再構築ツールも導入しました。 delaunayTriangulationクラス 。
私もこの問題を抱えていたため、独自の点群クラストアルゴリズムを開発して実装しました。ソースとドキュメントはgithub.comで見つけることができます: https://github.com/ricebean -net / PointCloudCrust 。アルゴリズムはJavaで実装されています。
たぶん、これはあなたを助けることができます。ライブラリの使用方法を示す短いpythonスクリプトもページにあります。楽しんでください!
アルファ形状に興味があるかもしれません。