點雲概念與點雲處理

2021-09-19 11:46:23 字數 3779 閱讀 1165

點雲概念

點雲與三維影象的關係:三維圖像是一種特殊的資訊表達形式,其特徵是表達的空間中三個維度的資料,表現形式包括:深度圖(以灰度表達物體與相機的距離),幾何模型(由cad軟體建立),點雲模型(所有逆向工程裝置都將物體取樣成點雲)。和二維影象相比,三維影象借助第三個維度的資訊,可以實現天然的物體——背景解耦。點雲資料是最為常見也是最基礎的三維模型。點雲模型往往由測量直接得到,每個點對應乙個測量點,未經過其他處理手段,故包含了最大的資訊量。這些資訊隱藏在點雲中需要以其他提取手段將其萃取出來,提取點雲中資訊的過程則為三維影象處理。

點雲的概念:點雲是在同一空間參考係下表達目標空間分布和目標表面特性的海量點集合,在獲取物體表面每個取樣點的空間座標後,得到的是點的集合,稱之為「點雲」(point cloud)。

**點雲的獲取裝置:**rgbd裝置是獲取點雲的裝置,比如primesense公司的primesensor、微軟的kinect、華碩的xtionpro。

點雲的內容:根據雷射測量原理得到的點雲,包括三維座標(xyz)和雷射反射強度(intensity),強度資訊與目標的表面材質、粗糙度、入射角方向,以及儀器的發射能量,雷射波長有關。

根據攝影測量原理得到的點雲,包括三維座標(xyz)和顏色資訊(rgb)。

結合雷射測量和攝影測量原理得到點雲,包括三維座標(xyz)、雷射反射強度(intensity)和顏色資訊(rgb)。

*點雲的屬性:**空間解析度、點位精度、表面法向量等。

點雲儲存格式:.pts; *.asc ; *.dat; .stl ; [1] .imw;.xyz;.las。las格式檔案已成為lidar資料的工業標準格式,las檔案按每條掃瞄線排列方式存放資料,包括雷射點的三維座標、多次回波資訊、強度資訊、掃瞄角度、分類資訊、飛行航帶資訊、飛行姿態資訊、專案資訊、gps資訊、資料點顏色資訊等。

c–class(所屬類)

f一flight(航線號)

t一time(gps時間)

i一intensity(回波強度)

r一return(第幾次回波)

n一number of return(回波次數)

a一scan angle(掃瞄角)

rgb一red green blue(rgb顏色值)

點雲的資料型別:

(1)pcl::pointcloudpcl::pointxyz

pointxyz 成員:float x,y,z;表示了xyz3d資訊,可以通過points[i].data[0]或points[i].x訪問點x的座標值

(2)pcl::pointcloudpcl::pointxyzi

pointxyzi成員:float x, y, z, intensity; 表示xyz資訊加上強度資訊的型別。

(3)pcl::pointcloudpcl::pointxyzrgb

pointxyzrgb 成員:float x,y,z,rgb; 表示xyz資訊加上rgb資訊,rgb儲存為乙個float。

(4)pcl::pointcloudpcl::pointxyzrgba

pointxyzrgba 成員:float x , y, z; uint32_t rgba; 表示xyz資訊加上rgba資訊,rgba用32bit的int型儲存的。

(5) pointxy 成員:float x,y;簡單的二維x-y點結構

(6)normal結構體:表示給定點所在樣本曲面上的法線方向,以及對應曲率的測量值,用第四個元素來佔位,相容sse和高效計算。

點雲的處理

點雲處理的三個層次:marr將影象處理分為三個層次,低層次包括影象強化,濾波,關鍵點/邊緣檢測等基本操作。中層次包括連通域標記(label),影象分割等操作。高層次包括物體識別,場景分析等操作。工程中的任務往往需要用到多個層次的影象處理手段。

pcl官網對點雲處理方法給出了較為明晰的層次劃分,如圖所示。

此處的common指的是點雲資料的型別,包括xyz,xyzc,xyzn,xyzg等很多態別點雲,歸根結底,最重要的資訊還是包含在pointpcl::point::xyz中。可以看出,低層次的點雲處理主要包括濾波(filters),關鍵點(keypoints)/邊緣檢測。點雲的中層次處理則是特徵描述(feature),分割(segmention)與分類。高層次處理包括配準(registration),識別(recognition)。可見,點雲在分割的難易程度上比影象處理更有優勢,準確的分割也為識別打好了基礎。

低層次處理方法:

①濾波方法:雙邊濾波、高斯濾波、條件濾波、直通濾波、隨機取樣一致性濾波。②關鍵點:iss3d、harris3d、narf,sift3d

中層次處理方法:

①特徵描述:法線和曲率的計算、特徵值分析、shot、pfh、fpfh、3d shape context、spin image

②分割與分類:

分割:區域生長、ransac線面提取、全域性優化平面提取

k-means、normalize cut(context based)

3d hough transform(線、面提取)、連通分析

分類:基於點的分類,基於分割的分類,基於深度學習的分類(pointnet,octnet)

高層次處理方法:

①配準:點雲配準分為粗配準(coarse registration)和精配準(fine registration)兩個階段。

精配準的目的是在粗配準的基礎上讓點雲之間的空間位置差別最小化。應用最為廣泛的精配準演算法應該是icp以及icp的各種變種(穩健icp、point to plane icp、point to line icp、mbicp、gicp、nicp)。

粗配準是指在點雲相對位姿完全未知的情況下對點雲進行配準,可以為精配準提供良好的初始值。當前較為普遍的點雲自動粗配準演算法包括基於窮舉搜尋的配準演算法和基於特徵匹配的配準演算法。

基於窮舉搜尋的配準演算法:遍歷整個變換空間以選取使誤差函式最小化的變換關係或者列舉出使最多點對滿足的變換關係。如ransac配準演算法、四點一致集配準演算法(4-point congruent set, 4pcs)、super4pcs演算法等……

基於特徵匹配的配準演算法:通過被測物體本身所具備的形態特性構建點雲間的匹配對應,然後採用相關演算法對變換關係進行估計。如基於點fpfh特徵的sac-ia、fgr等演算法、基於點shot特徵的ao演算法以及基於線特徵的icl等…

②slam圖優化

ceres(google的最小二乘優化庫,很強大), g2o、lum、elch、toro、spa

slam方法:icp、mbicp、idc、likehood field、ndt

③三維重建

泊松重建、 delaunay triangulations、表面重建,人體重建,建築物重建,樹木重建。結構化重建:不是簡單的構建乙個mesh網格,而是為場景進行分割,為場景結構賦予語義資訊。場景結構有層次之分,在幾何層次就是點線面。實時重建:重建植被或者農作物的4d(3d+時間)生長態勢;人體姿勢識別;表情識別;

④點雲資料管理:點雲壓縮,點雲索引(kd、octree),點雲lod(金字塔),海量點雲的渲染

(此帖主要是進行知識點梳理,方便自己與大家的學習進步,大量引用了拜讀過的網友的帖子內容,若有描述不當或引用有爭議的地方,歡迎廣大網友批評指正……每週五晚上更帖,求進步)

下一次更博會介紹一下關於點雲庫pcl的內容

參考部落格:

原文:

點雲概念與點雲處理

點雲與三維影象的關係 三維圖像是一種特殊的資訊表達形式,其特徵是表達的空間中三個維度的資料,表現形式包括 深度圖 以灰度表達物體與相機的距離 幾何模型 由cad軟體建立 點雲模型 所有逆向工程裝置都將物體取樣成點雲 和二維影象相比,三維影象借助第三個維度的資訊,可以實現天然的物體 背景解耦。點雲資料...

利用matlab點雲工具處理點雲

本文主要分享利用matlab點雲工具的相關模組來處理點雲,並通過點雲輪廓對點雲體積進行簡單的估計測量。主要的操作流程圖 2具體流程 假設有乙個名為pointcloud.ply的點雲檔案。ply格式簡介 pc pcread path pointcloud.ply 讀入點雲檔案 pcshow pc 顯示...

點雲平面提取 點雲處理 平面分割與投影

pcl是乙個比較經典的點雲處理庫,目前在工作中用到了一些。這個庫,是乙個模組化比較不錯的模板庫,不過模組間的隔離不太好,還有boost flann vtk等標頭檔案或者庫檔案依賴,使用起來很不友好。還有乙個大問題,模板 編譯太慢了,實在難受。於是我重新封裝了一套 建立了 kpointcloud kp...