點雲的球面投影理解

前言

球面投影或正視圖投影是將3D點雲數據表示爲2D圖像數據的一種方式,因此從本質上講,它還充當降維方法。球形投影方法正越來越多地用於處理點雲深度學習解決方案中。應用最廣泛的領域是對點雲中對象進行分類和分割任務,這個投影方法在多個工作中使用,例如:PointSeg,SqueezeSeg, SalsaNet等,以及在上一篇總結到的最新的語義分割網絡3D-MiniNet也用到了球面投影。
將點雲表示爲2D圖像的最大優點是,它打通了過去十年中從2D圖像到3D點雲的研究。例如,各種不同的SoTA深度學習網絡,如FCN,U-Net,Mask-RCNN,以及Faster-RCNN,這些優秀的分割/檢測網絡現在都可以擴展到點雲數據中使用,這也是很多研究人員試圖完成的目標,尤其是面對自動駕駛領域,每秒接收大量的點雲信息,點雲數據的計算是龐大耗時的工程。
球面投影的原理實際很簡單,我們可能早已經學到過球座標系,但是可能都沒有思考過如何使用,點雲的球面投影表示略有不同,現在本文將討論如何使用球形投影將3D點雲投影到圖像中。

點雲掃描過程

首先我們利用簡圖瞭解一下點雲的掃描過程,
以16線激光雷達爲例:
16lasers
激光雷達的第一個與最後一個激光器形成的最大視場和最小視場分別表示爲FOV_Up和FOV_Down。右邊的矩形是將激光雷達形成的空心圓柱投影(投影不是將曲面進行簡單地展開,而是一個基座標系變換的過程)後在2D平面上表示的情況。

根據垂直角分辨率FOV_Up(上部視場)和FOV_Down(下部視場),這16個激光器中的每一個都以固定角度定向。每個激光雷達都有一個發射器和一個接收單元。這些點是通過計算每個激光從物體反射後的飛行時間而形成的。當旋轉360度時,這16個激光器形成一個點雲。
因此,激光雷達掃描後的點雲其幾何形狀將是一個空心圓柱體,此時激光雷達位於一個座標系的中心。當我們從垂直於圓柱主軸的軸上看這個空心圓柱時,可將其投影到一個平面上。該圖像稱爲球面投影圖像。

變換過程

座標表示

首先我們再來看一個三維點的簡圖,只取一個點進行投影演示:
在這裏插入圖片描述
對於上圖(左)中的點Point(x1y2z3x_1,y_2,z_3),我們需要將其投影到一個2D圖像上,來獲得新的2D座標表示。首先左圖中假設XX軸是激光雷達的正視圖,即汽車前進的方向,該點與原點的連線將與xy平面(理解爲地面)形成一個角度,術語爲俯仰角(pitch),該點在xyxy平面的投影與原點的連線與中心線xxxzxz平面形成一個偏轉角(yaw)。通過使用三角函數,我們可以獲得每個點用x1y2z3x_1,y_2,z_3表示的俯仰和偏航值。由於原點位於圖像的中心,因此這些偏航和俯仰值構成了投影圖像的每個像素位置。因此,通過計算每個點的偏航角和俯仰角,我們可以完全形成投影圖像。在這一點上,我還要指出,俯仰角的值在[FOV_Up,FOV_Down ]範圍內,因爲它是激光指向的最大和最小視角,而偏航值的範圍是[π-\piπ\pi]。
我們得出在舊座標系中俯仰角和偏航角的表示方式:
 pitch =sin1(z1/R)=arcsin(z1/R) yaw =tan1(y1/x1)=arcsin(y1/(x12+y12))\begin{array}{l} \text { pitch }=\sin ^{-1}(z 1 / \mathrm{R})=\operatorname{arcsin}(z_1 / \mathrm{R}) \\ \text { yaw }=\tan ^{-1}(y 1 / x 1)=\operatorname{arcsin} (y_1 / \sqrt{(x_1^2+y_1^2)}) \end{array}對所有的點都可以使用這個公式進行轉化,現在的情況是我們可以很容易的將一個本來用xy2zx,y_2,z表示出來的點經過一步計算,獲得它的(pitch, yaw)值,有趣的是,現在已經獲得了點的2D表示。但是需要注意的是,雖然我們現在有了投影圖像,由於兩個問題,我們仍然無法使用它。首先,我們需要將原點平移到圖像的左上角,這是因爲在計算機視覺中,規範的原點應位於圖像的左上角。其次,我們需要根據所使用的激光雷達的類型來縮放圖像。這兩個步驟如下所示:
在這裏插入圖片描述
1. 座標原點變換
首先我們要將激光雷達作爲新座標的原點轉移到左上角,如果將激光雷達移動到左上角,其他投影點都需要根據點和激光雷達的相對位置關係(上圖中間一幅簡圖)進行變換,新的等式座標變爲:
 yaw =yaw1+π pitch =FOVUp - pitch1 \begin{array}{l} \text { yaw }=\mathrm{yaw1}+\pi\\ \text { pitch }=\mathrm{FOV}_{-} \mathrm{Up} \text { - pitch1 } \end{array}

2.規範化和縮放
該步驟是必需的,因爲對於不同類型的激光雷達,投影圖像的大小將有所不同,主要目的是在投影圖像中儘可能多地適應點。
正如在上面觀察到的那樣,球面投影的整個過程實際是種降維,因此,這是我們會丟失原始點雲數據中的空間信息。這裏的想法是所形成投影圖像的尺寸能夠幫助我們從圖像中的點雲中捕獲最相關的點。
因此可以看出,激光雷達的激光數量應等於投影圖像的寬度。圖像的每一行會是從激光雷達的每個激光器獲得的點。此記爲row_scale,並乘以歸一化的俯仰軸。舉個例子,Velodyne HDL 64-E激光雷達具有64個激光器,因此,上面變換得到的座標值值乘以俯仰軸,將投影圖像的寬度設置爲64。
而圖像的長度構成了偏航角上的分辨率。可以調整此參數以使其得到儘可能多的點。投影圖像的長度稱爲col_scale,並與標準化偏航軸相乘以獲得最終圖像尺寸。同樣,對於HDL 64-E,最大水平分辨率爲0.35度。因此,在最壞的情況下,每個激光至少可以得到(360 / 0.35 = 1028)點。在深度學習和卷積網絡中,圖像大小習慣設置爲2的倍數。因此,長度爲1024的圖像將適合圖像中的最大點數,並將此值乘以偏航軸。
最終得出,64X1024的圖像尺寸非常適合HDL 64-E。對於Velodyne VLP-16可以進行類似的計算,其中最佳圖像尺寸爲16x1024。現在可以將規範化方程式重寫爲:

 normalized_yaw =(yaw+π)/2π normalized_pitch =(FOVUp pitch )/(FOVUpFOVDown )\begin{array}{l} \text { normalized\_yaw } = \mathrm({yaw}+\pi )/ 2 \pi\\ \text { normalized\_pitch }=\left(\mathrm{FOV}_{-} \mathrm{Up}-\text { pitch }\right) /\left(\mathrm{FOV}_{-} \mathrm{Up}-\mathrm{FOV}_{-} \text {Down }\right) \\ \end{array}
注意這裏認爲FOV_DownFOV_\_{Down}爲負數,實際上FOV=FOV_Up+abs(FOV_Down)=2×FOV_UpFOV=FOV_\_Up+abs(FOV_\_Down)=2\times FOV_\_Up
因此,將第一個等式帶入上式,可以得到原3D點雲在最終(u,vu,v)座標系下的最終表示爲:
(uv)=([1(arcsin(zR1)+FOVup)FOV1]×row_scale12[1arctan(y,x)π1]×col_scale)\left(\begin{array}{c} u \\v \end{array}\right)=\left(\begin{array}{c} {\left[1-\left(\arcsin \left(zR^{-1}\right)+\mathrm{FOV}_{\mathrm{up}}\right) \mathrm{FOV}^{-1}\right]\times row\_scale}\\ \frac{1}{2}\left[1-\arctan (y, x) \pi^{-1}\right]\times col\_scale \end{array}\right)
對於Velodyne HDL 64-E激光雷達,只需要將col_scalerow_scalecol\_scale,row\_scale,分別賦值64和1024就可以了。
注意最後這個等式和上一篇中提到的3D-MiniNet使用的公式表示形式略有不同,但實際上一樣,上一篇論文中使用W×HW\times H分別對應於投影圖像的寬和高,我們的推導過程是使用了col_scale×row_scalecol\_scale\times row\_scale,我們將圖片的用長度和寬度表示,本質上是一致的,使用的時候注意統一格式就行。
因此,藉助上述方程式,我們可以將雲的每個點(xyzx,y,z)投影到其相應的球形投影(uvu,v)中。
在對點雲的實際使用中,在獲得投影表示後不是單單使用這個投影的2維特徵信息,實際上我們會加入原始座標(x,y,zx,y,z)以RR表示歐式點與激光器原點的歐氏距離或則範圍值,II表示點雲的強度大小,事實上(x,y,z,Ix,y,z,I)都是激光雷達直接測得的數據,唯一需要計算的是RR,這樣我們的投影圖像的真實維度爲:5(5)激光雷達線程數*投影圖像的寬度* 5(加入的5個通道)。
可以使用PCL和OpenCV可視化球面投影的圖像。

總結

點雲的球面投影是和很好的點雲降維處理工具,以圖片的方式表示點雲的數據,一旦這樣表示我們就可以利用很多成熟的二維圖片的處理方法進行擴展,且計算量較少,適合實時系統的要求,這種方式在以後的工程上會有廣泛的應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章