UAV Project
Introduction
這個專案展示了使用無人機來進行建築結構檢查的創新方法。傳統的檢查方式不僅昂貴且耗時,還存在風險。通過使用無人機,我們可以捕捉高解析度的影像並收集數據,有效檢查建築結構中的潛在問題。
核心技術概述
Point Cloud 處理:
- 使用 Point Cloud Library (PCL) 去噪原始 3D Point Cloud,並應用濾波器去除雜訊,獲得更平滑、真實的表面。
- 根據 Point Cloud 的密度,將距離小於某個閾值的點連成線,形成多邊形(Site)。
- 去除過近的 Site 邊界,避免無人機進入無法飛行的狹窄區域。
Voronoi Diagram 應用:
- 利用 Voronoi Diagram 將建築結構劃分為不同區域,每個區域內的點與相應障礙物 (Site) 距離最短。
- 這可以讓無人機保持與障礙物的安全距離,進行有效路徑規劃。
Delaunay Triangulation:
- 由 Voronoi Diagram 生成 Delaunay Triangulation,並利用其垂直特性,使無人機鏡頭保持面向建築物。
檔案和操作流程
讀取 Point Cloud 檔案
- 查看點雲:下載並使用 CloudCompare 來查看點雲數據的樣貌。
- 連接實驗室 Ubuntu Server:
- 進入
Desktop/project
,所有相關的檔案都在這個資料夾。
- 進入
程式編寫與執行
寫程式:
- 使用以下指令打開編輯器:
1
code vicky.cpp
- 將會自動開啟 Visual Studio Code 進行程式編輯。
- 使用以下指令打開編輯器:
執行程式:
- 進入
build
資料夾:1
cd Desktop/Project/build
- 生成與編譯:
1
2cmake ..
make - 執行程式:
1
./vicky
- 進入
TODO
2024-10-04
- Obj 轉為點雲檔案並過濾非表面數據:
- 補洞:處理點雲中的空隙,使表面完整。
- 消除內部點(變空心):保留物體表面點,將內部點排除,形成空心結構。
Desktop/point cloud model 直接處理pcd
減少點數的程式碼有了(vicky.cpp)
現在只要弄 POCO: Point Convolution for Surface Reconstruction 找表面的程式碼
2024-10-15
進度更新:補洞與資料清理
補洞進行方式:
- 使用 RANSAC (Random Sample Consensus) 偵測並排除點雲中的平面部分。
- 排除牆面上的點,模擬封閉門窗,避免無人機誤入室內。
- 剩餘的點雲保留非平面區域(如邊緣與開口)。
操作步驟:
- 使用 RANSAC 移除主要平面點。
- 保留非平面區域作為無人機飛行參考。
- 接下來將進一步優化補洞,嘗試使用
.las
格式數據進行測試。
2024-10-22
本週進度報告主要集中在解決點雲的浮動點與門窗補洞問題。我們完成了以下幾個主要步驟:
進度更新:補洞與資料清理
- Poisson表面重建:生成建築物表面的缺失點(如門窗等),成功應用Poisson技術進行補洞。
- 距離過濾:使用KdTree對新生成的點進行距離檢查,過濾掉與原始點雲距離超過10公分的浮動點,確保生成的點與建築物表面相符。
- 合併點雲:最終將經過篩選的Poisson重建點與原始點雲合併,生成完整的點雲,並成功填補了建築物表面的空隙。
補洞與過濾
Poisson表面重建:首先使用Poisson表面重建生成缺失區域的點(如門窗等)。這是一種插值技術,會基於現有的點雲生成一個連續的表面。
距離過濾:之後,為避免出現不相關的浮動點,使用KdTree來檢查新生成的點與原始點雲的距離。如果生成的點距離原始建築物點雲過遠(超過指定的閾值,例如10公分),則將其過濾掉。
合併點雲:最後將經過篩選的Poisson重建點與原始點雲合併,保存完整的點雲,並且補齊建築物表面中的洞。