估计点云中的曲面法线
曲面法線是幾何表面的重要屬性,并且在諸如計算機圖形應用的許多領域中被大量使用,應用在矯正光源產生的陰影和其他的視覺效果。
給定幾何表面,通常用垂直于曲面的向量來推斷曲面上某一點法線的方向是很簡單的。然而,由于我們獲取的點云數據集代表真實表面上的一組點樣本,因此有兩種方法:
? 利用曲面網格劃分技術,從獲取的點云數據集中獲取潛在面,然后從網格中計算曲面法線
? 使用近似法直接從點云數據集中推斷曲面法線
本教程將針對后者,即給定點云數據集,直接計算點云中每個點的曲面法線
理論入門
盡管存在許多不同的常規估計方法,但我們將在本教程中重點介紹的方法是最簡單的方法之一,其公式如下。確定曲面上某一點法線的問題近似于估計與曲面相切的平面法線的問題,進而成為一個最小二乘平面擬合估計問題。
因此,估計表面法線的解決方案被簡化為對由查詢點的最近鄰創建的協方差矩陣的特征向量和特征值(或PCA主成分分析)進行分析。具體地說,對于每個點Pi,我們如下構成協方差矩陣:
其中k是點鄰域點的數量,表示最近鄰的三維質心,是協方差矩陣的第j個特征值,表示第j個特征向量。
使用PCL從一組點中估計協方差矩陣,代碼示例:
通常,由于沒有表示法向量符號的數學方式,因此通過主成分分析(PCA)計算出的法線方向是模糊的,并且在整個點云數據集上的方向并不一致。下圖顯示了在較大數據集廚房一部分環境中的兩部分上的效果。圖的右側是擴展高斯圖像(Extended Gaussian Image, EGI),又稱法向球,用來描述點云法線方向的基準。由于數據集是2.5D的,而且是從單一的角度獲取的,因此在EGI中法線只會在球體的一半上出現。然而,由于方向不一致,它們分布在整個球面上。
如果已知,那么可以很容易的解決這個問題。為了使所有法線始終朝向視點,它們需要滿足這個等式
下圖顯示的結果是,來自上圖的數據集中的所有法線都一致指向視點之后的結果。
適當比例的選擇
如前所述,估計點處的表面法線需要周圍點的信息 (也稱為k鄰域)。
最近鄰問題的特性面臨適當尺度因子的問題。對于給定的點云數據集,需要選擇合適的最近的k個點數量(pcl::Feature::setKSearch),或者適當的鄰域半徑r(pcl::Feature::setRadiusSearch)。
如果用戶沒有確定相應閾值,在點特征表示的自動估計中會構成一個限制因素。為了更好地說明這個問題,下圖展示了選擇較小尺度(小r或k)與大尺度(大r或k)。圖左半部分展示了一個合理的精心選擇的比例因子,兩個平面的估計表面法線近似垂直,整個圖中小的邊緣全部顯示出。如果縮放系數太大(圖右半部分),即從相鄰范圍覆蓋更大的點集,估計特征點表達失真,得到兩個平面邊緣上的旋轉曲面法線,和模糊的邊緣與細節。
目前必須根據應用程序所需的詳細程度來選擇確定點鄰域的范圍。簡單地說,如果杯子把手和圓柱形部分之間的邊緣曲率很重要,那么比例因子需要足夠小才能捕捉到這些細節,否則就需要足夠大。
使用OpenMP加速法線估計
對于速度敏感的用戶,PCL提供了一個額外的表面法線估計實現,它使用使用OpenMP的多核/多線程范例來加速計算。類名為:pcl::NormalEstimationOMP ,與pcl::NormalEstimation類完全兼容。在8內核的系統上,可以獲得6-8倍的計算速度。
掃描二維碼
? ? ? ? ? ? ? ? ? ?關注我們
讓我們一起分享一起學習吧!期待有想法,樂于分享的小伙伴加入免費星球注入愛分享的新鮮活力。分享的主題包含但不限于三維視覺,點云,高精地圖,自動駕駛,以及機器人等相關的領域。
分享及合作:微信“920177957”(需要按要求備注) 聯系郵箱:dianyunpcl@163.com,歡迎企業來聯系公眾號展開合作。
點一下“在看”你會更好看耶
總結
以上是生活随笔為你收集整理的估计点云中的曲面法线的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CMRNet++:一种相机在激光雷达构建
- 下一篇: LIC Fusion 2.0:滑动窗口法