從點雲到網格(一)綜述

在計算機圖形學中,網格是一種非常基本的表示方法。隨着近些年三維表面重建和Dense SLAM的興起,從海量的三維點雲數據生成單一的網格的方法得到了大量的應用。特別是在AR中,因爲交互的需要,網格生成算法經常是一個必選項。
由於工作中正好涉及到一些這方面的應用,因此想簡單介紹一下這方面的知識。以下僅討論三維情形。
本文很多內容來源於Matthew Bolitho的博士論文1。這位仁兄現在在NVidia做Director of Architecture。

算法的輸入輸出

網格生成算法的輸入一般爲三維點雲,輸出爲三維網格。輸入的點雲一般爲若干個點雲的集合。輸出的網格一般爲單一的網格。

輸入的點雲一般有如下幾種形式:
- 只包含三維座標的點雲
  P={p1,...,pN}P={p1,...,pN}
- 包含三維座標和法向量的點雲
  P={(p1,n1),...,(pn,nN)}P={(p1,n1),...,(pn,nN)}
- 深度圖
  2D 網格R∈RN×MR∈RN×M,實際上包含了三維座標,表面法向量和鄰域信息。

輸入的點雲一般面臨着下面幾個問題,如下圖所示:

- 點雲噪聲

  每個點雲都會帶有噪聲,噪聲有可能和物體表面光學性質、物體深度、傳感器性能等都有關係。

- 點雲匹配誤差

  三維重建中需要將不同幀得到的點雲估計其在世界座標系下的位姿,會引入一定的位置誤差。

- 點雲分佈

  分佈的不均勻性體現在(1)每個小點雲在不同的方向上分佈是不均勻的(雖然傳感器上看是均勻的)如上圖3位置,(2)不同的點雲匹配在一起時,不同位置的點雲密度是不一樣的,如上圖2位置。

- 缺失數據

  掃描中如果碰到不易成像的部位(比如不可見、反光等等),那麼這部分的數據是缺失的,即點雲是不完整的。如上圖1位置所示。

對算法的要求

一般而言,我們對於輸出的網格有一定的要求。除了網格密度和精度以外,我們還希望算法

  • 對點雲噪聲有一定的冗餘度。
  • 能夠重建出曲率變化比較大的曲面。
  • 能夠處理大數據量,算法時間和空間複雜度不會太高。
  • 重建出的網格中包含儘可能少的異常三角片,比如三角片交錯在一起、表面法向量不連續或不一致、同一個位置附近出現多層三角片等。

這些要求也構成了算法的難點。

一般方法

網格生成算法可以分爲離散方法和連續方法兩大類。離散方法利用某些空間劃分方法,直接從點雲數據生成網格。連續方法利用點雲去擬合某類分佈函數,得到表面的函數表示,然後生成網格。總結見下圖。

下面簡單介紹一下兩種重建思想,都是基於連續方法的。

有符號距離函數(signed distance function)

定義SS是待重建的曲面,F:R3−>RF:R3−>R,其中F(x)F(x)定義爲xx到SS中的距離最近的點的距離。如果xx在SS外面,則距離爲正,反之爲負。那麼,
S={x:F(x)=0}S={x:F(x)=0} 
典型的方法有VRIP(Volumetric Range Image Processing)。下圖是實際應用中通過VRIP生成的F(x)F(x)的一個切面。
圖中F(x)F(x)的值被灰度取代後,實際上S={x:F(x)=128}S={x:F(x)=128}

指示函數(indicator function)

對於一個給定的物體MM,定義指示函數
χM(x)=1 if x∈M and χM(x)=0 if x∉MχM(x)=1 if x∈M and χM(x)=0 if x∉M 
那麼S=∂MS=∂M。
因此把重構SS的問題轉換爲重構χMχM的問題。而利用Stokes公式,可以將點雲及其法向量(χMχM的表面信息)和χMχM聯繫起來。
典型的方法是FFT重建和Poisson重建。下圖是Poisson重建方法的原理圖。

後續會分別介紹一下VRIP和Poisson,以及他們在SLAM中的應用。


  1. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.210.9637&rep=rep1&type=pdf

轉載請註明作者和出處(http://www.cnblogs.com/luyb),未經允許請勿用於商業用途。 [email protected]/LUYB 聯繫方式:luyanbin7 at gmail.com

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