2

Kinect Fusion を使用してシーンをキャプチャし、そこから頂点、頂点法線、面を含む .OBJ ファイルを取得しました。次に、これらの情報に基づいて大きな平面を検出する必要があります。これにより、壁や床などの平面を検出できる可能性があります (これらは大きな平面であるため)。これらの情報を格納する独自のデータ構造を作成し、C# を使用してコーディングしました。これらの平らな面を見つける方法を知っている人はいますか?

どうもありがとうございました!

4

1 に答える 1

1

これは完全な答えではありませんが、いくつかのアイデアが得られるかもしれません。

個人的には、いくつかの画像処理アルゴリズムを試してみます。1 つ目は、地域の拡大です。2番目はシードフィルです。セグメンテーションに適した他のアルゴリズムも見つかると思います。

この方法が機能するための鍵は、顔の法線を主要な特徴と見なすことです。隣接する 2 つの面の法線が十分に類似している (同じ) 場合、それらを同じサーフェスの一部と見なすことができます。

ここでの類推は、ピクセル強度を顔の法線に置き換えてから、画像処理セグメンテーション アルゴリズムを実装することです。

たぶん、しかしすべてのケースでうまくいくとは思えません。法線にインデックスを付けることができます。したがって、各法線にインデックスを割り当てて、ピクセル強度を置き換えます。

編集:

私の考えは、シーンのスナップショットを取り、それをアンラップしてフラットにするというものです。アンラップされたメッシュから、法線に基づいて各面の色を割り当てることにより、「カラー マップ」を作成できます。たぶん、法線を直接色に変換することができます-法線(1,0,0)はRGBで明るい赤になります。このカラー マップは通常のテクスチャと呼ばれるグラフィックスにあります。通常のテクスチャは kinect から直接取得できます。

次に、このカラーマップで、類似/同じ色の接続された領域を見つけます。この領域は同じ平面の一部であるため、目的の床または壁です。

私は 3D データを処理した経験がないので、これは私の推測にすぎませんが、うまくいくと思います。少なくとも紙の上では。:)

アンラップまたは通常のテクスチャの取得にどのアルゴリズムが機能するかは実際にはわかりません。しかし、それはあなたにいくつかの方向性を与えるはずです。

于 2013-06-07T11:00:06.807 に答える