我有PointXYZ
類型的PCL點雲。我需要將其轉換爲vector<vector<bool> >
類型的網格地圖,其中map[x][y]
應該是true,如果至少有一個點它。地圖應代表點雲的特定區域(比如20×細胞覆蓋的點雲維度x = [ - 10,10],Y = [ - 15,15]轉換PCL XYZ雲到XY(3D到2D)
我現在有什麼
。目前我有兩個途徑:
- 掃描通過所有點,在地圖的相應單元格設置爲true
- 項目點,以平面,創建一個KD樹,然後在每個單元格。該地圖查詢樹的最近點,並將單元格設置爲真,如果它落入單元格中。
現在,第一種方法適用於小點雲:O(n),其中n是點雲中的點數。
第二種方法對大型雲有好處,我認爲。最後的查詢只有O(m),其中m是地圖的大小。但是,構建Kd樹並將雲投影到飛機上應該都是O(n)左右。
我在想第二種方法總是更糟糕,但我會運行測試看看。
問題
有沒有更好的方法?也許是八叉樹或Voxel-Grid(二維)的東西?方法一的問題是,我不必要地查看感興趣區域之外的點。
在我看來,我不能成爲第一個有這個問題的人吧?