4

点群があり、平面検出を実行しました。次に、シーンを三角測量したいと思います。

私はすでに次のように見える各平面の三角測量を持っています: 平面三角測量

Point Cloud Library GreedyProjectionTriangulationシーンを再構築するために使いたい。そのため、再構築に介入するさまざまな機能を適応させたいと考えています。

gp3.handのコードgp3.hpp( にあります)を掘り下げpcl/surface/include/pcl/surface、関連する出版物を読みました。これまでのところ、私はこれに来ました:

  • 平面のすべてのポイントは、最初にフリンジとしてマークする必要があります。ベクトルを使用すると簡単に行うことができstate_ます。
  • 関数 で平面の三角形を追加しますがaddTriangles、これで問題ありません。
  • エッジを強制する方法がわかりません。ベクトルはありますが、doubleEdgesそれがどのように機能するのかよくわかりませんでした。ポイントの反復ごとにリセットされるようです。
  • 平面のポイントをfringe_queue_ベクトルにプッシュする必要がありaddFringeますが、2 つの引数を要求し、その理由が理解できないため、関数は奇妙です。
  • ベクトルの意味がわかりませんでしpart_た。

私の現在の結果はこれです: 現在の結果

画像ではあまり明確ではありませんが、エッジを強制する方法がわからないため、三角形が重なるという問題があります。

編集

コードを掘り続けます。重要な部分が何であるかを特定しました。コードの壁を避けるために、ここで興味深い部分を見つけることができます。これは、gp3.hpp のおよそ 180 行目と 285 行目の間にあります。

sfn_とが何のためにあるのか理解できませんffn_。私の直感ではsfn_[R_]、 の2 番目のフリンジ ネイバーが返され、 のR_最初のフリンジ ネイバーが返されます。だからこのようなもの: ffn_[R_]R_sfn & ffn

私が正しければ、平面の輪郭が正しい順序でソートされているので、これを簡単に行うことができます。

平面に属する三角形のエッジを強制する方法がまだわかりません。コードを見ると、キーはdoubleEdgesベクトルにあると思いますが、この部分を変更して問題に関連させる方法がわかりません。

4

0 に答える 0