設定
タイプのPCLポイントクラウドがありPointXYZ
ます。タイプのグリッドマップに変換する必要があります。少なくとも1つのポイントがある場合はtrueである必要がありますvector<vector<bool> >
。map[x][y]
マップは、点群の特定の領域を表す必要があります(たとえば、x = [-10,10]、y=[-15,15]の点群の寸法をカバーする20x30セル。
私が今持っているもの
現在、私には2つのアプローチがあります。
- すべてのポイントをスキャンし、マップ内の対応するセルをtrueに設定します。
- ポイントを平面に投影し、Kdツリーを作成してから、マップ内のセルごとにツリーに最も近いポイントを照会し、セルに該当する場合はセルをtrueに設定します。
ここで、最初のアプローチは小さな点群に適しています。O(n)で、nは点群内の点の数です。
2番目のアプローチは大きな雲に適していると思います。最終的なクエリはO(m)のみです。ここで、mはマップのサイズです。ただし、Kdツリーの構築と平面へのクラウドの投影は、どちらも約O(n)である必要があります。
2番目のアプローチは常に悪いと思いますが、テストを実行して確認します。
質問
より良いアプローチはありますか?たぶん、OctreeまたはVoxel-Grid(2D)で何か?アプローチ1の問題は、関心領域外のポイントを不必要に見ていることです。
私がこの問題を最初に抱えることはできないようですよね?