点群があり、平面検出を実行しました。次に、シーンを三角測量したいと思います。
私はすでに次のように見える各平面の三角測量を持っています:
Point Cloud Library
GreedyProjectionTriangulation
シーンを再構築するために使いたい。そのため、再構築に介入するさまざまな機能を適応させたいと考えています。
gp3.h
andのコード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_
私が正しければ、平面の輪郭が正しい順序でソートされているので、これを簡単に行うことができます。
平面に属する三角形のエッジを強制する方法がまだわかりません。コードを見ると、キーはdoubleEdges
ベクトルにあると思いますが、この部分を変更して問題に関連させる方法がわかりません。