1

リアルタイムで表面をスキャンできるリアルタイムスキャナーを開発しています。今までは、表面の 1 つのパッチをスキャンして保存することができました。1 つのパッチは、表面 (点群または三角形) の 1 回のスキャンのみを意味します。

私が欲しいのは、複数のパッチをリアルタイムでスキャンしたいということです。この目的のために、以前のパッチを現在のパッチとマージする必要があります。しかし、2 つのパッチをマージするための標準的な方法またはアルゴリズムが何であるかはわかりません。また、たとえば、三角形分割の前 (点群のマージ)、または三角形分割の後 (メッシュ合併)。マージとは、重なっているポイントまたは三角形を削除することを意味します

私の考え: ソースとターゲットの 2 つの点群がある場合、VTK を使用して、ターゲット点群から最も近い点を見つけ、一方の点を選択してもう一方を破棄します。これはマージする方法ですか?これは私の考えですか?しかし問題は、ソースとターゲットのポイント数が異なることです。

VTK を使用して 2 つのパッチをマージするにはどうすればよいですか?

また、リアルタイム スキャン タスクを達成するための標準的かつ最適な方法を教えてください。

ケース # 1:
i) 点群取得

ii) 登録

iii) マージ

iv) 三角測量

ケース # 2:

i) 点群取得

ii) 登録

iii) 三角測量

iv) マージ

ケース # 3:

i) 点群取得

ii) 三角測量

iii) 登録

iv) マージ

私を案内してください。ありがとう。

4

1 に答える 1

4

ちょうど似たようなことを考えていたのでここにメモしておきます。

提案された方法(マージ中に最近傍検索を行う)は可能だと思われます。マージされる 2 つの雲の間でサイズが異なるという問題は、1 つの近隣を検索するのではなく、望ましい解像度に基づいて半径検索を行う場合には問題にならないようです。

ケース 1 を管理するには、すべてのクラウドをマージしてから、三角形分割の前に pcl::VoxelGrid などのボクセル グリッドでダウンサンプリングすることができます (これが最も簡単な方法ですが、希望する方法ではない可能性があります)。

pcl::GreedyProjectionTriangulation にカプセル化されたアルゴリズムは、主に以下の論文 [1] で説明されているようです。その論文では、アルゴリズムの小さな変更である増分メッシュ更新手順についても説明しています (新しい点に近い三角形を削除し、貪欲な三角形分割を再度開始します)。私の知る限り、これは PCL では実装されていませんが、それほど難しくはないはずです。これはケース 2 に対応します。ただし、得られるメッシュは、雲をマージした順序によって異なります。時間のかかる投資なので、最初にポイントベースのマージを試すことをお勧めします。

[1] マートン、ZC、RB ルス、および M. ビーツ。2009.「大きくてノイズの多い点群の高速表面再構成法について」。ロボティクスとオートメーションに関するIEEE国際会議、3218–3223。http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5152628

于 2013-02-09T06:05:20.673 に答える