私は新しい Kinect v2 を使用しており、Kinect の深度マップを取得しています。深度マップを取得したら、深度データを深度空間からカメラ空間に変換します。私が理解している限り、これは、各ピクセルのすべての X、Y 座標をカメラ空間に変換し、深度値を Z 座標として追加することによって行われます (また、Kinect は深度値をミリメートル単位で提供するため、保持メートルにも変換されます)。このため、点群は実際には深度値で拡張された 2D グリッド上にあります。上記の会話により、ポイントがグリッド内で順序付けられていることが簡単にわかるため、視覚化でもこれが確認されます。
視覚化のために、私は昔ながらの方法で OpenGL を使用しています (glBegin(...) および glEnd())。ポイントからメッシュを作成したい。私は GL_TRIANGLES で何とかそれを行うことができましたが、重複した頂点とエッジがたくさんあります。だから私はGL_TRIANGLE_STRIPでより良い三角形分割を作成するべきだと思ったが、GL_TRIANGLE_STRIPに供給して素敵な表面。
問題点:
各三角形の頂点について、Z 座標をチェックしています。特定のしきい値を超えると、三角形を無視します => これにより、2D グリッドに穴が開く可能性があります。
一部の深度値は NaN です。これは、Kinect が何も「見る」ことができないためです (たとえば、オブジェクトが遠すぎたり近すぎたり) => これにより、2D グリッドにも穴が作成されます。
この問題を解決するための最良の方法は何か提案はありますか?