簡體   English   中英

3D地圖可視化范圍(使用vtk?)

[英]range 3D map visualization (with vtk?)

我們有一個用激光和相機從3D三角剖分獲得的ZMap(又稱深度圖)圖片。 我們知道每個像素的深度值和相機的分辨率(每個像素與以mm為單位的3d坐標相關聯)。 我們的目標是將Zmap可視化為2d曲面,因此我們考慮創建點雲,生成網格並使用一些3D庫顯示它。我們認為vtk是正確的選擇,但遇到了一些問題。

首先,我們嘗試使用無組織結構(vtkPolyData),通過3dDalaunay三角剖分生成網格。 但是,當點數<50k時,代碼可以正常工作。 我們的3D重構由480k點組成,計算時間確實太長了。

然后,我們切換到有條理(連接點)。 恕我直言,這些附加信息應減少創建網格的計算時間,但是我們無法理解如何創建“ vtkStructuredGrid”並將其Z值輸入以獲得2D網格化表面。

這是正確的方法嗎? 有沒有人嘗試過?

提前致謝

如果您的點以2D網格組織(在掃描時),則不需要復雜而緩慢的三角剖分算法

  1. 將點組織到2D表/網格中

    • 像這樣的東西:
    • 點格
    • 灰色方塊是重點
    • 所以點x,y軸平行於表格/網格u,v索引
    • 如果您的數據尚未以這種方式組織,則對點進行排序,以便
    • 存儲在類似: double pnt[maxU][maxV][3];
    • 如果x,y直接與網格對齊,那么您只需要存儲Z坐標即可節省一些內存
  2. segmentate

    • 在3D掃描的點雲中這樣組織起來很容易
    • 只需將Z坐標差小於閾值的所有相鄰點連接在一起
    • 我圖像中的彩色方形點
    • 灰色點現在是超出Z坐標范圍的背景
    • 因此添加如下結構: int obj[maxU][maxV];
    • 將所有背景/超出范圍的點設置為obj [u] [v] =-1;
    • 設置其余的唯一obj索引,例如(u*maxV+v)
    • 現在處理每條線,如果附近的點的Z坐標附近,則重新索引其中之一(因此對象正在增長)
    • 完成后,處理所有行並嘗試合並重新索引相鄰對象
    • 循環直到沒有合並發生
    • 這比基於洪水填充的分段要快得多(如果使用了適當的加速線合並結構)
  3. 三角

    • 逐個處理選項卡
    • 如果所有4個點都屬於分割對象,則將四邊形添加到網格
    • 如果僅3個添加三角形(4個組合)
    • 如果1或2不添加任何內容
    • 結果是彩色區域

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM