A. 1.特徵點檢測與匹配
三維模型重建的流程:
三維點雲獲取——幾何結構恢復——場景繪制
三維點雲獲取:
1.激光雷達
2.微軟Kinect
有效距離比較短
3.單目多視角 :幾乎很難實時
4.雙目立體視覺
基於圖像的三維模型重建:
1.輸入圖像
2.基於圖像的點雲生成
3.點雲到模型的重建
4.紋理圖像的創建與編輯
5.紋理模型
相關商業軟體:
Acute3D,Altizure,Agisoft PhotoScan
圖像特徵點應用:
1.相機標定
2.圖像拼接
3.稠密重建
4.場景理解
圖像特徵點的檢測方法:
圖像特徵點的基本要求:
1.差異性——可檢測
特徵點應該呈現出區別於非特徵點的明顯特徵
2.重復性——可匹配
對應同一三維點的特徵點應該在不同視角中被重復檢測到
動機:特徵點具有局部差異性
圖像梯度
Harris矩陣
Harris矩陣H的特徵值分析:
矩陣特徵值反應了兩個垂直方向的變化情況,一個事變化最快的方向,一個事變化最慢的方向
行列式值為特徵值相乘,行列式的跡為特徵值相加
在特徵點附近,其他點的響應也比較大。
所以選取局部響應最大值,避免重復檢測
演算法流程
Harris角點檢測一般用於快速檢測,比如視頻裡面的跟蹤
動機:Harris角點檢測不具有尺度不變性
LoG運算元:Lindeberg(1993)提出Laplacian of Gaussian
(LoG)函數的極值點對應著特徵點
Lindeberg(1993)提出Laplacian of Gaussian
(LoG)函數的極值點對應著特徵點
尺度空間:
對於一幅圖像,用不同大小的濾波核進行濾波,一般用高斯濾波,得到一系列圖像,這些圖像就稱之為尺度空間。然後把這些圖像摞起來
LoG特徵檢測效果好,但是計算量比較大。
工程中也很少用。為了更好地利用LoG的性質,提出了一種近似的演算法:基於DoG的特徵檢測子
LoG可以由DoG近似:
Lowe(2004)提出LoG近似等價於相鄰尺度的高斯差分(DoG)
高斯空間:
高斯差分(DoG)
上圖為3個Octive,每個octive的尺寸都會減小一半。
上圖每個Octive中,左側為高斯空間,相鄰高斯空間做差得到DoG空間
特徵點檢測為在三維空間上做一個極值的比較,(三維空間為圖像的二維空間+尺度的空間),必須需要兩個方向有極值。在高斯差分,邊界上的兩層是無效的,只有中間的紅色區域是有效的。
在Octive,
if 每階有效差分數 S =3,則高斯空間層數為N = S+3
特徵點位置確定:
在位置和尺度空間組成的三維空間中尋找極值點
亞像素特徵點位置確定:
除去邊緣點:
DoG在邊緣處值較大,需要避免檢測到邊緣點
通過統計梯度直方圖的方法確定主方向,使演算法具有旋轉不變性
旋轉 不變性、 尺度 不變性 、亮度 變化 不變性 ,對視角變化、 仿射 變換有一定程度的穩性
SIFT特徵點非常穩定和魯棒,但是計算量很大,對於要求穩定的圖像建模可以採用。
針對實時要求比較高的應用提出了快速特徵檢測。
FAST特徵點(Feature from Accelerated Segment Test)
通過檢測局部像素灰度變化來確認特徵點的位置
速度快,SIFT的一百倍,不具有尺度和旋轉不變性
基於直方圖的描述子
基於不變性的描述子
二進制描述子
以特徵點為中心取一塊區域,有圓形或者矩形,稱之為特徵支持區域
主方向:進行旋轉並重新插值
特徵尺度:影響支持區域的大小
用於微小運動的描述子
以特徵點為中心的矩形區域內所有
像素的灰度值作為描述子,拉成一個向量,計算向量間距離
適用於微小變化的圖像
對圖像存在明顯的旋轉、尺度、光照和透視變換時不穩定
根據主方向對支持區域進行旋轉,並通過雙線性插值重構
減去均值再除以方差
圖像歸一化處理,去除光照變化
描述子形式:
描述向量由N個0或者1組成
N= 128,256,512
生成速度快,匹配效率高,不具有旋轉不變性
最近鄰搜索
最近鄰距離比(lowe-ratio)
最近鄰距離和次近鄰距離比小於一定值
快速最近鄰搜索
哈希表
多維Kd-tree
BFM(Bruce Force Mather)匹配ORB的結果
錯誤的匹配可以通過估計相機模型方式去除
估計 Homography Homography 矩陣之前最好的 50 對匹配對
B. 如何獲取點雲PointCloud數據
一:什麼是點雲數據
點雲數據是指在一個三維坐標系統中的一組向量的集合。這些向量通常以X,Y,Z三維坐標的形式表示,而且一般主要用來代表一個物體的外表面形狀。不經如此,除(X,Y,Z)代表的幾何位置信息之外,點雲數據還可以表示一個點的RGB顏色,灰度值,深度,分割結果等。
Eg..Pi={Xi, Yi, Zi,…….}表示空間中的一個點,
則Point Cloud={P1, P2, P3,…..Pn}表示一組點雲數據。
二:點雲數據的獲得
大多數點雲數據是由3D掃描設備產生的,例如激光雷達(2D/3D),立體攝像頭(stereo camera),越渡時間相機(time-of-flight camera) 。這些設備用自動化的方式測量在物體表面的大量的點的信息,然後用某種數據文件輸出點雲數據。這些點雲數據就是掃描設備所採集到的。
三:點雲數據的用途
作為3D掃描的結果,點雲數據有多方面的用途,包括為製造部件,質量檢查,多元化視覺,卡通製作,三維制圖和大眾傳播工具應用等創建3D CAD模型。
C. 提取平面點雲的輪廓
一. 基於凸包的凹點挖掘演算法:
1. 提取點雲的凸包
2. 計算凸包每條邊的頂點的點密度(即該點 K 個臨近點到該點的距離平均值)
3. 如果頂點點密度大於所在邊的長度的 X 倍,則刪除該邊,並從內部點中選擇出一個滿足夾角最大的點,插入邊界邊,形成兩條新的邊界邊
4. 迭代 2 和 3,一直到全部邊界邊的 X 倍小於其端點的點密度,演算法結束
二. 基於 Delaunay 三角網的輪廓提取演算法:
A. 不使用輔助點:
1. 首先對點雲進行 Delaunay 三角構網
2. 同上,判斷每條網格邊長度的X倍和其端點的點密度之間的大小關系,並刪除長的網格邊
3. 提取只屬於一個三角形的邊界,作為邊界邊
4. 分類排序,得到有順序關系的內外輪廓
B. 使用輔助點:
1. 手動在點雲的邊界附近選點
2. Delaunay構網
3. 判斷每個三角形,如果其中一個點是輔助點,而另外兩個點是點雲中的點,則連接這兩個點做為邊界邊
4. 分類排序,得到有順序關系的內外輪廓
總體來說,由於構網演算法的時間復雜度較高,因此可以有選擇的使用上面兩種演算法,比如只有在確定要提取內輪廓的情況下,可以選擇第二種輪廓提取演算法
D. 點雲概念與點雲處理
點雲概念
點雲與三維圖像的關系 :三維圖像是一種特殊的信息表達形式,其特徵是表達的空間中三個維度的數據,表現形式包括:深度圖(以灰度表達物體與相機的距離),幾何模型(由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(金字塔),海量點雲的渲染
E. 激光點雲預處理研究概述
3D點雲數據的預處理是利用有效點雲信息進行三維重建及障礙物感知的基礎,是3D點雲配准、3D點雲拼接環節的前提。一般的 3D 點雲預處理工作包括地面點雲去除、點雲濾波和點雲分割。在三維點雲數據處理過程中,點雲數據離群點、雜訊點的剔除以及點雲數據的配准不僅是點雲數據處理中的重要環節,也是後期對點雲數據進行特徵提取完成檢測環節的基礎。
在進行目標物體分割時,將離散的三維數據點聚類的判斷依據為點與點之間距離是否接近,而在激光雷達點雲數據中,有很大一部分數據屬於地面點數據,並且地面點雲呈現為紋理狀,這對後續障礙物點雲的分類,識別帶來干擾,如果不將這些地面點數據去除,在進行目標物體分割時會導致分割演算法失效,因此需要先進行過濾。所以,地面點雲數據去除是減少數據量以及提高分割演算法准確度的有效手段。
因此為了提高去除地面點雲演算法的准確性和魯棒性,許多學者提出了大量研究方法,這些方法主要有以下兩類:基於柵格圖方法的地面去除研究、基於三維激光雷達原始掃描線數據的地面去除研究。
通過激光雷達掃描得到的點雲包含大部分地面點,常用的柵格圖方法地面濾除點雲方法有柵格高度差法、法向量方法和高度法。柵格高度法首先根據柵格大小生成網格,計算每個網格最低點與最高點的高度差,比較h與預設高度差閾值大小,對網格進行分類,最後根據網格對網格內的點進行分類。法向量法是基於計算出地面法向量為豎直向下或向上的假設,即地面點法向量值為(0,0,1)或(0,0,-1)。方法過程是計算點法向量並設定點分類的法向量閾值。高度法去除地面點雲,是最常用且耗時最小的方法。根據激光雷達安裝位置與姿態,可以根據設定閾值直接將點雲分為地面點和障礙物點。
基於柵格圖的點雲處理方式是通過將三維點雲數據投影到地面,建立多個柵格單元,採用連通區域標記演算法或者鄰域膨脹策略對目標進行聚類,這類方法被廣泛應用在激光雷達三維建模中。一是因為三維點雲向二維平面投影過程極大地壓縮了數據量,能夠提高演算法處理的實時性;二是因為點雲向柵格圖的映射,將復雜的三維點雲處理問題轉化為圖像處理問題,可以使用成熟的圖像處理相關演算法,提高了演算法處理的時間效率。柵格法簡單可靠、計算效率高,但是柵格單元參數固定且往往憑經驗確定,遠距離目標點雲較為稀疏往往會出現過分割,而近距離目標點雲較為稠密又會出現欠分割,演算法嚴重依賴於閾值參數的選擇,且往往需要逐幀進行分析,必然損失部分實時性。
由於三維激光雷達的原始三維數據包含了詳細的空間信息,所以也可以用來進行相關點雲數據處理。激光掃描線在地面和障礙物形成的角度值存在顯著的不同,可作為分離地面點的重要依據。激光雷達中的多個激光器水平掃描周圍環境中的物體,在兩個相鄰物體之間形成的角度很小,而同一物體的角度值很大。這啟示了我們可以充分利用這一特性,大於角度閾值可認為這兩點是同一物體,較好地處理了相鄰目標欠分割的問題。通過將非地面點雲分割為不同物體,然後進行目標物體的識別,可以為無人車提供更加詳細的車輛、行人等障礙物信息,在運動中避免與不同類型的障礙物發生碰撞並進行及時避讓。地面點雲欠分割會導致目標漏檢,過分割又會對後續的識別等操作帶來影響。利用激光雷達產生點雲的幾何特性,研究人員提出了多種特徵構建的方法,基於三維激光雷達原始掃描線數據的地面去除研究屬於其中較為常用的方法。
激光雷達在採集三維點雲數據的過程中,會受到各類因素的影響,所以在獲取數據時,就會出現一些雜訊。其實在實際工作中除了自身測量的誤差外,還會受到外界環境的影響如被測目標被遮擋,障礙物與被測目標表面材質等影響因素;另外,一些局部大尺度雜訊由於距離目標點雲較遠,無法使用同一種方法對其進行濾波。
雜訊就是與目標信息描述沒有任何關聯的點,對於後續整個三維場景的重建起不到任何用處的點。但是在實際的點雲數據處理演算法中,把雜訊點和帶有特徵信息的目標點區別開來是很不容易的,去噪過程中由於許多外在因素總是不可避免的伴隨著一些特徵信息的丟失。一個好的點雲濾波演算法不僅實時性要求高,而且在去噪的同時也要很好的保留模型的特徵信息[88]。就需要把點雲數據的雜訊點特徵研究透徹,才能夠提出效果更好的去噪演算法。
點雲數據是一種非結構化的數據格式,激光雷達掃描得到的點雲數據受物體與雷達距離的影響,分布具有不均勻性,距離雷達近的物體點雲數據分布密集,距離雷達遠的物體點雲數據分布稀疏。此外,點雲數據具有無序和非對稱的特徵,這就導致點雲數據在數據表徵時缺乏明確統一的數據結構,加劇了後續點雲的分割識別等處理的難度。神經網路作為一種端到端的網路結構,往往處理的數據是常規的輸入數據,如序列、圖像、視頻和3D數據等,無法對點集這樣的無序性數據直接進行處理,在用卷積操作處理點雲數據時,卷積直接將點雲的形狀信息舍棄掉,只對點雲的序列信息進行保留。
點雲濾波是當前三維重建技術領域的研究熱點,同時也是許多無人駕駛應用數據處理過程中至關重要的一步。3D點雲濾波方法主要可以分為以下三類,主要包括基於統計濾波、基於鄰域濾波以及基於投影濾波。
由於統計學概念特別符合點雲的特性,因此,許多國內外學者都將統計學方法引用到點雲濾波技術中,Kalogerakis 等人將一種穩健統計模型框架運用到點雲濾波中,取得了非常好的濾波效果。在這個統計模型框架中,通過使用最小二乘迭代方法來估計曲率張量,並在每次迭代的時候根據每個點周圍的領域來為樣本分配權重,從而細化每個點周圍的每一個鄰域。然後利用計算獲得的曲率以及統計權重來重新校正正態分布。通過全局能量的最小化並通過計算出的曲率和法線來把離群點去掉,並且能較好的保持點雲的紋理特徵。
基於鄰域的點雲濾波技術,就是通過使用一種相似性度量的方法來度量點和其他周圍鄰域對濾波效率與結果影響比較大點的相似性,從而來確定濾波點的位置。一般來說,可以通過點雲的位置、法線和區域位置來度量其相似性。1998年,Tomasi等人將雙邊濾波器擴展到 3D 模型去噪,由於雙邊濾波器具有維持邊緣平滑的特點,所以在除去點雲數據雜訊的同時也能較好的保持細節。但是,由於該方法是通過一個網格生成的過程來去噪的,而在生成網格的過程就會引入額外的雜訊。相比較於規則格網、不規則三角網等數據結構,體元是真3D的結構並且隱含有鄰域關系,能夠有效的防止生成網格的過程中引入雜訊,但該方法的需要設置的參數比較多,不能滿足實際工業運用。
基於投影濾波技術通過不同的投影測量來調整點雲中每個點的位置,從而實現雜訊點雲的去除。但是,如果輸入的點雲特別不均勻,經過局部最優投影處理後的點雲將變得更散亂。孫渡等人提出了一種基於多回波及 Fisher 判別的濾波演算法。首先結合格網劃分思想劃分點雲網格,在每個網格內,通過點雲數據的回波次數和強度進行劃分,分出待定的樣本;其次,利用Fisher判別的分析法將點雲投影到一維空間內,通過判定臨界值將植被點雲與地面點雲分離,實現陡坡點雲的濾波,但是,該方法只針對點雲中含有回波強度的屬性才有效,對於不包含回波強度信息的點雲,該方法失去作用。
為彌補點雲本身的無序性、不對稱性、非結構化和信息量不充分等缺陷,在對點雲進行特徵識別及語義分割等操作之前,需先對點雲進行數據形式的變換操作。常用的點雲形式變換方法有網格化點雲、體素化點雲、將點雲進行球面映射等。
體素化是為了保持點雲表面的特徵點的同時濾除不具備特徵的冗餘的點雲數據。由於常用的法向量計算取決於相鄰點的數量,並且兩個雲點的解析度也不同。所以具有相同體素大小的體素化就是為了在兩個不同解析度的點雲中生成等效的局部區域。在實際進行點雲配准演算法的過程中,由於用於配準的源點雲數據與目標點雲數據的數量比較龐大、點雲密集,並且這些原始點雲數據中含有許多點雲對於描述物體形狀特徵沒有任何作用的點,如果使用演算法直接對源點雲與目標點雲進行配置的話,整個過程將耗費大量時間,所以必須對點雲進行下采樣的同時仍保留住可以體現形狀輪廓特徵的那部分點雲。
由於點雲本身的稀疏性、無序性和非均勻分布的特點,在利用深度全卷積神經網路結構對激光雷達點雲數據進行語義分割時,端到端的卷積神經網路無法直接對無序排布點雲進行操作。為使端到端的神經網路在無序性分布的點雲數據上具有通用性,需先對點雲數據進行映射,常見的投影方式有基於平面的投影、基於圓柱面的投影以及基於球面的點雲投影方式。
參考:
周天添等(基於深度神經網路的激光雷達點雲語義分割演算法研究)
李宏宇(激光雷達的點雲數據處理研究)
范小輝(基於激光雷達的行人目標檢測與識別)
F. 點雲數據處理
三維計算視覺研究內容包括:
(1)三維匹配:兩幀或者多幀點雲數據之間的匹配,因為激光掃描光束受物體遮擋的原因,不可能通過一次掃描完成對整個物體的三維點雲的獲取。因此需要從不同的位置和角度對物體進行掃描。三維匹配的目的就是把相鄰掃描的點雲數據拼接在一起。三維匹配重點關注匹配演算法,常用的演算法有 最近點迭代演算法 ICP 和各種全局匹配演算法。
(2)多視圖三維重建:計算機視覺中多視圖一般利用圖像信息,考慮多視幾何的一些約束,相關研究目前很火,射影幾何和多視圖幾何是視覺方法的基礎。在攝影測量中類似的存在共線方程,光束平差法等研究。這里也將點雲的多視匹配放在這里,比如人體的三維重建,點雲的多視重建不僅強調逐幀的匹配,還需要考慮不同角度觀測產生誤差累積,因此也存在一個優化或者平差的過程在裡面。通常是通過觀測形成閉環進行整體平差實現,多視圖重建強調整體優化。可以只使用圖像,或者點雲,也可以兩者結合(深度圖像)實現。重建的結果通常是Mesh網格。
(3)3D SLAM:點雲匹配(最近點迭代演算法 ICP、正態分布變換方法 NDT)+位姿圖優化( g2o 、LUM、ELCH、Toro、SPA);實時3D SLAM演算法 (LOAM);Kalman濾波方法。3D SLAM通常產生3D點雲,或者Octree Map。基於視覺(單目、雙目、魚眼相機、深度相機)方法的SLAM,比如orbSLAM,lsdSLAM...
(4)目標識別:無人駕駛汽車中基於激光數據檢測場景中的行人、汽車、自行車、以及道路和道路附屬設施(行道樹、路燈、斑馬線等)。
(5)形狀檢測與分類:點雲技術在逆向工程中有很普遍的應用。構建大量的幾何模型之後,如何有效的管理,檢索是一個很困難的問題。需要對點雲(Mesh)模型進行特徵描述,分類。根據模型的特徵信息進行模型的檢索。同時包括如何從場景中檢索某類特定的物體,這類方法關注的重點是模型。
(6)語義分類:獲取場景點雲之後,如何有效的利用點雲信息,如何理解點雲場景的內容,進行點雲的分類很有必要,需要為每個點雲進行Labeling。可以分為基於點的方法,基於分割的分類方法。從方法上可以分為基於監督分類的技術或者非監督分類技術,深度學習也是一個很有希望應用的技術。
(7)立體視覺與立體匹配 ZNCC
(8)SFM(運動恢復結構)
1、點雲濾波方法(數據預處理):
雙邊濾波、高斯濾波、條件濾波、直通濾波、隨機采樣一致性濾波。
VoxelGrid
2、關鍵點
ISS3D、Harris3D、NARF
SIFT3D、
3、特徵和特徵描述
法線和曲率計算 NormalEstimation 、特徵值分析Eigen-Analysis、 EGI
PFH、FPFH、3D Shape Context、Spin Image
4、 點雲匹配
ICP 、穩健ICP、point to plane ICP、Point to line ICP、MBICP、GICP
NDT 3D 、Multil-Layer NDT
FPCS、KFPCS、SAC-IA
Line Segment Matching 、ICL
5、點雲分割與分類
分割:區域生長、Ransac線面提取、NDT-RANSAC、
K-Means、Normalize Cut(Context based)
3D Hough Transform(線、面提取)、連通分析、
分類:基於點的分類,基於分割的分類;監督分類與非監督分類
6、SLAM圖優化
g2o 、LUM、ELCH、Toro、SPA
SLAM方法:ICP、MBICP、IDC、likehood Field、 Cross Correlation 、NDT
7、目標識別、檢索
Hausdorff 距離計算(人臉識別)
8、變化檢測
基於八叉樹的變化檢測
9. 三維重建
泊松重建、Delaunay triangulations
表面重建,人體重建,建築物重建,樹木重建。
實時重建:重建植被或者農作物的4D(3D+時間)生長態勢;人體姿勢識別;表情識別;
10.點雲數據管理
點雲壓縮,點雲索引(KD、Octree),點雲LOD(金字塔),海量點雲的渲染
點雲驅動的計算機圖形學主要研究應用
http://vcc.szu.e.cn/research/2015/Points/
G. CVPR 2020 論文閱讀筆記(三維點雲/三維重建)
論文地址: https://arxiv.org/abs/2003.00410
前置文章:10/16、10/17、10/18
本文提出了Point Fractal Network(PF-Net),旨在從不完整的點雲數據中恢復點雲,克服了之前方法修改現有數據點、引入雜訊和產生幾何損失的缺點。
由前置文章可知,之前的點雲修復方法是輸入不完整的點雲,輸出完整的點雲,但這樣會導致原有信息的缺失。這篇文章提出PF-Net,主要特點有三個:
網路的整體結構如下:
網路詳細推理步驟如下:
損失函數使用完整性損失和對抗損失的加權平均,完整性損失使用L-GAN中提出的CD距離:
對抗損失使用GAN中常見的損失函數
感覺這篇文章對多尺度的運用非常極致,在編碼器、解碼器和CMLP中都應用了這種思想,最後的效果也非常不錯,很值得借鑒。
論文地址: https://arxiv.org/abs/1612.00593
PointNet提出一種基礎的網路結構,可以用於點雲分類、部分分割和語義分割等多種任務。在這篇文章之前,點雲數據的處理方式是將點雲數據轉換為多個二維的視圖或三維的體素形式,然後應用2D/3D CNN進行處理,但這樣引入了多餘的體積,效率不高。本文是第一個直接使用點雲數據的神經網路。(其實可以這樣類比,在二維圖像處理中,假設圖像是二值化的,傳統方法是將這個圖像直接丟到CNN裡面,但如果背景特別多會比較浪費資源。直接使用點雲數據相當於直接將前景像素的坐標輸入到神經網路裡面,對稀疏數據會有比較好的性能,但因為以下三個問題導致直接使用坐標信息比較困難)
由於點雲的排列是無序的(可以想像,點雲中任意一點排在前面對點雲的表達都是相同的)、點雲之間是有相互作用的(相鄰的點雲才能構成形狀)、點雲在某些變換下具有不變性(比如旋轉不會改變點雲的類別)這些特性,要求神經網路既能處理無序的數據,又能捕捉全局的結構特徵,同時對剛性變換不敏感。基於這些條件,作者提出了如下的網路結構:
可以簡要分析一下網路的工作流程,以點雲分類問題為例:
感覺網路的結構雖然簡單,但是卻很好地滿足了點雲數據自身特性對神經網路的要求。而且我覺得在圖像處理中,也有時候必須用到坐標信息或者一些標量特徵,這篇文章的方法對於怎樣將這些特徵融合進CNN裡面也有一定的啟發意義。
論文地址: http://proceedings.mlr.press/v80/achlioptas18a.html
這篇文章的主要工作是:
首先來看衡量兩個點雲相似程度的指標部分,作者首先給出了兩個距離,EMD和CD:
在計算上,CD更為簡便,而且EMD是不可導的。
基於這兩種距離,作者引入了三種衡量兩個點雲相似程度的指標:JSD、Coverage和MMD:
定義了指標後,就可以實現自動編碼器和生成模型了。作者提到了四種結構,分別是:
作者同時驗證了AE的一些其他功能,比如如果給AE的編碼器輸入不完整的點雲數據,即可訓練得到點雲復原的模型。使用SVM對低維表示進行分類,即可進行點雲分類的任務,證明AE在點雲數據形式中的潛在應用較為廣泛。
論文地址: http://papers.nips.cc/paper/7095-pointnet-deep-hierarchical-feature-learning-on-point-se
PointNet++針對PointNet提取局部信息能力不強的弊端,提出了一種層次神經網路,可以更好地提取局部信息。其中心思想是將整個點雲分割成若干個小部分來提取信息,然後將每個小部分整合成較大的部分,提取更高層次的信息。類似於CNN中卷積和下采樣的思想。首先來看網路結構圖:
網路大概可以分為兩個部分,左邊是層次的點雲特徵提取網路,右邊是針對不同任務的解碼網路。
特徵提取分為若干個set abstraction模塊,每個模塊又分為采樣層、分組層和特徵提取層。
得到了較高層次的特徵後,對不同的任務需要不同的解碼網路。對分類網路來說比較簡單,使用全連接即可。對分割網路來說,由於對每個點都需要輸出數值,則需要類似上采樣的操作。具體的實現作者使用了插值的方法,將較少的點插值到較多的點上去。首先找到插值的目標坐標,然後尋找K個距離最近的已知點,以距離的倒數作為權重,將K個點的特徵做加權平均,作為這個點的特徵。然後使用之前特徵提取中得到的該點的特徵與當前特徵做一個拼接,即可得到最終特徵(類似U-Net的skip connection)。公式如下:
感覺這篇文章和PF-Net的思想差不多,都是希望提取多尺度的特徵。但是思路不一樣,都值得借鑒。
H. 點雲數據處理的5個步驟
1.點雲濾波方法(數據預處理): 雙邊濾波、高斯濾波、條件濾波、直通濾波、隨機采樣一致性濾波。 VoxelGrid
2.關鍵點 ISS3D、Harris3D、NARF SIFT3D、
3.特徵和特徵描述 法線和曲率計算NormalEstimation、特徵值分析Eigen-Analysis、EGI PFH、FPFH、3D Shape Context、Spin Image
4.點雲匹配 ICP、穩健ICP、point to plane ICP、Point to line ICP、MBICP、GICP NDT 3D、Multil-Layer NDT FPCS、KFPCS
I. 標題 點雲數據三種採集方法的優缺點
格點采樣、均勻采樣、幾何采樣。
1.格點采樣:優點:效率非常高。采樣點分布比較均勻,但是均勻性沒有均價采樣高,可以通過格點的尺寸控制點間距。缺點:不能精確控制采樣點個數。
2.均勻采樣:優點:采樣點分布均勻。缺點:演算法時間復雜度有些高,因為每次采樣一個點,都要計算集合到集合之間的距離。
3.幾何采樣:優點:計算效率高,采樣點局部分布是均勻的,穩定性高:通過幾何特徵區域的劃分,使得采樣結果抗噪性更強。
點雲數據(point cloud data)是指在一個三維坐標系統中的一組向量的集合。掃描資料以點的形式記錄,每一個點包含有三維坐標,有些可能含有顏色信息(RGB)或反射強度信息。
J. 密集點雲細節好嗎
密集點雲細節好的。密集點雲生成網路
名稱:Dense 3D Point Cloud Reconstruction Using a Deep Pyramid Ne
摘要
本論文提出了一個叫做DensePCR的網路模型,一個對點雲進行重建的深度金字塔網路。首先預測一個低解析度的點雲,然後通過聚合全局特徵和局部特徵,層次性的增加點雲的密度。該模型的亮點之一是分階段的處理點雲,而以往的基於點雲的重建方法,全都是在一個階段預測點雲,這就會導致兩個問題:
這會顯著增加模型的參數。
像EMD這樣的損失函數,會極大的增加計算量。
且此論文解決了單視圖重建的兩個重要問題:
給一張2維圖片,是否有足夠的信息來預測密集點雲?
如何上采樣稀疏點雲,來獲取更加接近物體表面的稠密點雲?
對於第一個問題,文章使用了深度金字塔結構的網路,首先預測一個低密度的稀疏點雲,然後層次的增加點雲的密度。對於第二個問題,提出了一種機制,該機制通過使用鄰域地形信息和全局形狀屬性來「變形」圍繞在每一個點的局部網格。
此論文的貢獻歸納以下2點:
提出了進行點雲重建的叫做DensePCR的深度金字塔網路模型,通過層次化的步驟來逐步的增加點雲的密度。
此模型的參數相比於之前的網路模型,減少了3倍。
該模型的架構如圖所示:
DensePCR的架構圖。訓練管道首先預測一個低解析度的點雲,然後層次化的增加點雲密度。利用多尺度訓練策略對每個中間結構加約束。中間點雲(Xp)通過提取全局(Xg)和局部(Xl)點特徵,並在每個點周圍的坐標網格(Xc)上進行調節,以生成密集的預測,從而實現超解析度。
接下來分別介紹Multi-Stage Training、Global Feature Learning、Local Feature Learning和Feature Aggregation and Grid Conditioning。
Multi-Stage Training
該網路是由多個訓練階段組成的,圖片首先經過編碼器-解碼器(PointNet)來生成低密度的點雲,然後再通過一個密度重建網路(Dense Reconstruction Network)來獲得高密度的點雲。而且在每個階段所用的距離測量損失函數是不一樣的。
如上圖a所示,圖片通過編碼器-解碼器結構的網路生成稀疏的點雲 X^p 。因為點雲是無序的(unordered),所以設計出來的損失函數,一定要能夠避免由於點雲的無序性導致的結果不確定性,接下來介紹兩種損失函數:Chamfer distance(CD)和Earth Mover's Distance(EMD)。
CD的定義如下:
Xp 是真實分布的點雲。對於每一個預測的點,找到 Xp 中距離此點最小距離的那個點,然後算出最小距離,對所有的預測點都執行這種操作。反過來根據 Xp 中的每一個點,在預測的點雲中找出距離此點的最小距離,對所有真實的點都執行這樣的操作,最後把距離加起來,得到的最終距離,就是倒角距離(Chamfer Distance)。(註:雖然這種演算法簡單,計算快速,但是很明顯倒角距離演算法並不能保證兩個點雲分布之間的一致性。)
EMD的定義如下:
EMD可以緩解CD帶來的問題,這里的 ϕ 是一個雙射,由於它可以使一個點集映射到另一個點集,從而可以確保兩個點集之間的一致性,但是EMD有一個顯著的缺點,就是它的時間復雜度太大了。(CD和EMD另外寫篇文章總結一下)鑒於此,文章分階段的使用CD和EMD,首先是第一次產生稀疏點雲之後,利用EMD既可以保持生成的點雲和真實點雲具有分布一致性,又可以減少了計算量。然後後續的密集點雲全部採用CD來計算損失。
這里的稀疏點雲的生成方法是一系列的卷積層、batchnorm層和relu層,以及後續的全連接層。稠密點雲的生成方法等分析了後續的部件之後,再介紹。
Dense Reconstruction Network
稠密點雲的生成,需要全局特徵、局部特徵、特徵聚合以及網格坐標調整。
Global Feature Learning
眾所周知,全局特徵對於3d重建非常重要。為了提取全局特徵,DensePCR採用了和PointNet一樣的處理方式,採用MLP。
通過共享參數的感知機層,MLP可以從點雲中提取出點雲的全局特徵。上圖中的maxpool是一種對稱操作。可以見的,雖然通過MLP+MAXPool的操作可以提取全局特徵,但是由於maxpool的存在,無意中抹去了物體的局部過特徵。
Local Feature Learning
局部特徵在點雲分割和點雲分類領域是極其重要的,對於更好的重建物體的細節,點雲的局部特徵對於重建也非常重要。所以,DensePCR用PointNet++網路模型來提取物體的局部結構(PointNet++的介紹可以參考我的另一篇文章)。
具體來說,DensePCR在每一個點周圍建造一個鄰域球,在每一個鄰域內運用MLP就可以獲得這個鄰域內的全局特徵,相對於整個點雲來說,也就是局部特徵了。然後就可以得到 n×nl 的一個矩陣, n 是輸入點雲的個數, nl 是最後一層MLP的輸出通道。
Feature Aggregation and Coordinate Grid Conditioning
此時的我們已經得到了全局特徵和局部特徵,此時就需要一個機制全局和局部特徵,以及稀疏點雲,來生成稠密點雲。
為了實現這一任務,DensePCR提出了輸出點對應的特徵向量 ,分別由點坐標、全局特徵和局部特徵構成,表示為[Xp,Xg,Xl] ,其維度為 n×(3+ng+nl) 。
n個點是怎麼變成4n個點的吶?
DensePCR利用上采樣因子,把 n×(3+ng+nl) 平鋪成 4n×(3+ng+nl) 。