從點雲到網格(一)綜述


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

算法的輸入輸出

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

輸入的點雲一般有如下幾種形式: - 只包含三維坐標的點雲   \(P=\{p_1,...,p_N\}\) - 包含三維坐標和法向量的點雲   \(P=\{(p_1,n_1),...,(p_n,n_N)\}\) - 深度圖   2D 網格$R\in\mathbf^{N\times M}$,實際上包含了三維坐標,表面法向量和鄰域信息。

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

- 點雲噪聲

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

- 點雲匹配誤差

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

- 點雲分布

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

- 缺失數據

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

對算法的要求

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

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

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

一般方法

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

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

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

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

指示函數(indicator function)

對於一個給定的物體$M$,定義指示函數 \(\chi_M(x)=1 \text{ if } x\in M \text{ and } \chi_M(x)=0 \text{ if }x\notin M\)  那么$S=\partial M$。 因此把重構$S$的問題轉換為重構$\chi_M$的問題。而利用Stokes公式,可以將點雲及其法向量($\chi_M$的表面信息)和$\chi_M$聯系起來。 典型的方法是FFT重建和Poisson重建。下圖是Poisson重建方法的原理圖。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM