91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

從零開始一起學習SLAM | 點云平滑法線估計

發布時間:2020-08-07 20:16:31 來源:ITPUB博客 閱讀:232 作者:計算機視覺life 欄目:互聯網科技

點云濾波后為什么還需要平滑?

小白:師兄,師兄,上次你說的點云濾波我學會啦,下一步怎么把點云變成網格啊?
師兄:濾波只是第一步,在網格化前我們還需要對濾波后的點云進行平滑(smoothing)
小白:不是已經濾波了嗎?怎么還要平滑啊?濾波和平滑不一樣嗎?
師兄:確實不太一樣。我們用RGB-D,激光掃描儀等設備掃描物體,尤其是比較小的物體時,往往會有測量誤差。這些誤差所造成的不規則數據如果直接拿來曲面重建的話,會使得重建的曲面不光滑或者有漏洞,而且這種不規則數據很難用前面我們提到過的統計分析等濾波方法消除,所以為了建立光滑完整的模型必須對物體表面進行平滑處理和漏洞修復。
你看下面左邊就是原始的掃描數據,右邊就是用最小二乘法進行表面平滑后的結果

從零開始一起學習SLAM | 點云平滑法線估計

小白:從圖上看,平滑確實效果很明顯啊,左邊杯子上黑色的是噪聲吧,右邊的結果來看經過平滑都消失了
師兄:對,除了上面說到的設備測量誤差外,還有一種情況也需要對點云進行平滑。就是后處理過程中,比如我們對同一個物體從不同方向進行了多次掃描,然后把掃描結果進行配準,最后得到一個完整的模型,但是你配準的結果不一定準啊,比如下圖中左側就是配準后未經過處理的結果,同一面墻壁由于配準誤差變成了“兩面墻”,并不能完全重疊,你覺得這個數據可以直接用來進行表面重建嗎?

從零開始一起學習SLAM | 點云平滑法線估計

小白:好坑啊,肯定不行,這樣重建出的結果也是兩面墻了吧
師兄:對,所以我們需要想辦法把“兩面墻”變成“一面墻”,如果這時候,我們沒有條件重新掃描出更精確的結果,或者配準精度也無法提升,可以通過重采樣的方法來實現點云的平滑,從而避免出現這樣的問題。
小白:原來這個平滑這么重要啊!怎么用重采樣來平滑呢?感覺迫不及待想要學習啦!
師兄:(既然胃口已經被吊起來了)那我們趕快開始切入正題吧
如何通過重采樣實現點云平滑?

師兄:點云重采樣,我們實際上是通過一種叫做“移動最小二乘”(MLS, Moving Least Squares )法來實現的,對應的類名叫做:pcl::MovingLeastSquares,你知道怎么用嗎?
小白:不知道,不過我還記得我們上次師兄給我說的方法,在PCL API documentation http://docs.pointclouds.org/trunk/ 上查詢類名稱,就能看到類的定義和用法啦
師兄:活學活用啊,哈哈,那我們現在去查一下看看吧
小白:嗯,我查到了,這個MLS類的定義在這里:
http://docs.pointclouds.org/trunk/classpcl_1_1_moving_least_squares.html#a379330b0b1dacaa668d165f94930749c
成員函數好多啊
師兄:對,看著是很多,但是很多我們不常用的,比如我們常用的一個用于重采樣的示例代碼如下,每行代碼都給你注釋好了,結合上面網址看很容易理解

// 對點云重采樣  
pcl::search::KdTree

小白:師兄,這個代碼里的KD-Tree是干嘛的?
師兄:Kd-Tree是一種數據結構,是空間二分樹的一種特殊情況,可以很方便的用于進行范圍搜索。在這里用KD-Tree就是為了便于管理、搜索點云,這種結構來可以很方便的找到最近鄰點。
小白:原來如此,那上面mls.setSearchRadius (0.05) 的意思是不是就是搜索當前點以5cm為半徑的空間中所有的點?
師兄:對的,然后把這些點用2階多項式擬合~

從零開始一起學習SLAM | 點云平滑法線估計
小白:所以表面就變平滑啦!
如何估計點云的表面法線?

小白:師兄,現在可以網格化了嗎?
師兄:還不行。。。別急,網格化前我們還需要估計一下點云的表面法線(normal)
小白:啊,怎么又冒出來一個法線。。。
師兄:法線好像是中學就學過了,應該還記得平面的法線的定義吧,平面的法線是垂直于該平面的向量,如下圖所示

從零開始一起學習SLAM | 點云平滑法線估計

你看上面右邊那個圖,對于曲面來說,曲面在某點P處的法線為垂直于該點切平面(tangent plane)的向量
小白:記得呢,不過這個法線有什么用?怎么就突然冒出來了
師兄:法線很有用的,尤其是在三維建模中應用非常廣泛,比如在計算機圖形學(computer graphics)領域里,法線決定著曲面與光源(light source)的強弱處理(Flat Shading),對于每個點光源位置,其亮度取決于曲面法線的方向。
小白:原來如此。不過好像平面或曲面的法線比較容易計算,方程 ax + by + cz = d 表示的平面,向量(a, b, c)
就是其法線。而我們這里是點云呢!怎么算呢?
師兄:確實如此。點云的法線計算是稍微麻煩點,一般有兩種方法:
1、使用曲面重建方法,從點云數據中得到采樣點對應的曲面,然后再用曲面模型計算其表面的法線
2、直接使用近似值直接從點云數據集推斷出曲面法線
這里主要用第2種方法來近似估計點云中每個點的表面法線。
具體來說,就是把估計某個點的表面法線問題簡化為:從該點最近鄰計算的協方差矩陣的特征向量和特征值的分析,這里就不多做介紹了。PCL已經幫我們封裝好了函數啦
我們計算出來點云的法線大概是這樣的

從零開始一起學習SLAM | 點云平滑法線估計

小白:那個箭頭就代表法線吧?
師兄:對的,我們前面提到了,需要從該點的周圍點鄰域(也稱為k鄰域)估計一點處的表面法線 ,所以這個K鄰域的選取也很關鍵
小白:這個K鄰域選取會有什么影響嗎?
師兄:有的,而且影響挺大的,K近鄰的取值可以通過選擇k個最近點,或者確定一個以r為半徑的圓內的點集來確定,你看下面這個圖是對同一個點云用不同尺度因子(k和r)進行法線估計的結果。左邊部分表示比例因子選擇的比較合適,估計的表面法線近似垂直于這兩個平面,即使在互相垂直的邊緣部分,也能明顯看到邊沿。而右邊的尺度因子就選的有點大了,這樣臨近點集更大范圍的覆蓋臨近表面的點,兩個平面邊沿處估計的法線就不準了,不能表達真實的情況。
從零開始一起學習SLAM | 點云平滑法線估計

小白:確實是這樣啊,看來編程的時候要格外注意了。
師兄:法線估計的示例如下,我也給你注釋好啦

// 法線估計
pcl::NormalEstimation

本文參考:PCL官網

從零開始一起學習SLAM | 點云平滑法線估計
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永嘉县| 甘德县| 延长县| 石柱| 广平县| 会宁县| 四平市| 凉山| 筠连县| 南城县| 清水县| 民权县| 黄骅市| 鹤峰县| 马边| 乌拉特中旗| 江阴市| 紫金县| 信丰县| 柳州市| 台南县| 江源县| 宜兴市| 高淳县| 连江县| 天台县| 防城港市| 新津县| 清丰县| 云龙县| 临清市| 康马县| 周宁县| 绍兴市| 吴旗县| 长宁县| 静安区| 新建县| 敦煌市| 汝阳县| 桐梓县|