Truncated Signed Distance Function_Experiments on Voxel Size

摘要

  實時三維重建是當前研究的熱門話題。幾種流行的方法基於截斷的帶符號距離函數(TSDF),這是一種體積場景表示,允許對從不同視點獲取的多個深度圖像進行集成。爲了更深入地瞭解TSDF,我們討論了它的參數,對體素大小對重建精度的影響進行了實驗,並得出了實用的建議。

1 介紹

  實時精確的3D重建在娛樂,虛擬現實,增強現實和機器人技術方面有很多應用。微軟低成本RGB-D相機Kinect[5]的推出使每個人都可以使用3D感應技術。因此,它也促了3D重建及其應用的研究和商業活動。幾種流行且廣泛使用的方法,如KinectFusion[4,6],Kintinious[11,10],點雲庫(PCL)[12]或KinFu Large Scale[1]中KinectFusion的開源實現基於截斷的有符號距離函數(TSDF)。
  TSDF是用於整合具有若干益處的深度圖像的場景的體積表示,例如,時間和空間的效率,不確定性的表示或增量更新[2]。它也非常適用於數據並行算法,即用於GPU上的實現。所獲得的加速促進了高幀率的實時處理。
  已經對孔填充進行了一些研究以產生更自然的重建,這部分是使用TSDF方法自動完成的[2],並且可以以節能的方式完成[7]。然而,就我們的知識而言,沒有仔細研究具有多個對象的場景以及關於對象大小和分辨率的其他重要問題。例如:到哪一點,一個真正的洞被重建成一個洞?與攝像機位置和方向相比:重建是否受到距離或角度的影響?從特定方向看到的物體的左邊界或右邊界是否存在問題?世界網格中使用的體素大小對重建有何影響?
  在本文中,我們分析了距離,物體大小和角度對相機觀察方向的影響。我們將結合幾種世界網格體素大小來看。
  此篇文章的結構如下。第2節詳細描述了TSDF。顯示了在感測環境之後如何從深度圖生成該函數以及如何在給定TSDF的情況下計算3D重建。第3節描述了爲改進結果而需要考慮的參數和算法選項。在第4節中,我們描述了實驗並討論了我們的結果。第5節總結了本文。

2 TSDF

  符號距離函數(SDF)被提出用於從多個深度圖像重構三維模型[2]。d維環境表示爲具有相同大小的體素的d維網格。體素x的位置由其中心定義。對於每個體素,有兩個相關值。首先,sdfi(x)sdf_i(x)是體素中心與當前測量方向上最近的物體表面之間的符號距離。在對象(自由空間)前面,值被定義爲正數。在表面後面(在物體內)距離是負的。其次,每個體素都有一個權重wi(x)w_i(x)來評估相應sdfi(x)sdf_i(x)的不確定性。下標i表示第i個觀察。圖1a和下面的等式精確地定義了sdfi(x)sdf_i(x)

sdfi(x)=depthi(pic(x))camz(x)(1) sdf_i(x) = depth_i(pic(x)) - cam_z(x) \qquad(1)

pic(x)pic(x)是體素中心x在深度圖像上的投影。因此,depthi(pic(x))depth_i(pic(x))是攝像機與觀察光線交叉x上最近的物體表麪點p之間的測量深度。因此,camz(x)cam_z(x)是體素和相機之間沿光軸的距離。因此,sdfi(x)sdf_i(x)也是沿光軸的距離。
圖1
圖1. 2D TSDF示例。(a)固體物體(綠色),具有視野的攝像機,光軸和光線(藍色),以及TSDF網格(看不見的體素是白色的,其他看顏色條)。體素x的帶符號距離值由對應表面點p的深度和體素的相機距離camz(x)cam_z(x)確定。(b)1D TSDF沿光線通過p採樣,t=1000 mm。物體表面處於零交叉。
  在[4,6]中,SDF被截斷爲±t。這是有益的,因爲大的距離值與表面重建無關,並且可以利用值範圍的限制來佔用內存。sdfi(x)sdf_i(x)的截斷變體由tsdfi(x)tsdf_i(x)表示。

tsdfi(x)=max(1,min(1,sdfi(z)t))(2) tsdf_i(x) = max(-1, min(1, \frac{sdf_i(z)}{t})) \qquad(2)

在圖1a中,體素網格的tsdfi(x)tsdf_i(x)由顏色編碼。圖1b顯示了沿觀察射線採樣的TSDF。
  如上所述,可以在一個TSDF中組合多個觀測值,以整合來自不同視點的信息,以提高準確度或添加表面缺失的斑塊。這通過加權求和來完成,通常通過TSDF的迭代更新。TSDFi(x)TSDF_i(x)表示1ji1≤j≤i的所有觀測值tsdfj(x)tsdf_j(x)的集成。Wi(x)W_i(x)評估TSDFi(x)TSDF_i(x)的不確定性。通過對網格中的所有體素x應用以下更新步驟來集成新觀察。用TSDF0(x)=0TSDF_0(x)=0W0(x)=0W_0(x)=0初始化網格。

TSDFi(x)=Wi1(x)TSDFi1(x)+wi(x)tsdfi(x)Wi1(x)+wi(x)(3) TSDF_i(x) = \frac{W_{i-1}(x)TSDF_{i-1}(x) + w_i(x)tsdf_i(x)}{W_{i-1}(x) + w_i(x)} \qquad(3)
Wi(x)=Wi1(x)+wi(x)(4) W_i(x) = W_{i-1}(x) + w_i(x) \qquad(4)

對於所有更新的體素,大多數方法將不確定性權重設置爲wi(x)=1w_i(x)=1,並且對於攝像機視野外的所有體素,將不確定性權重設置爲wi(x)=0w_i(x)=0[4,6,12,9]。這簡單地平均了測量的TSDF觀測值隨時間的變化。
  對於表面重建,人們可以將TSDF視爲水平集。要找到對象表面,您需要查找零級別。這通常通過從給定攝像機視角進行光線投射來完成。對於每個考慮的光線,逐步讀取TSDF,直到有符號切換。然後對周圍TSDF值的信息進行插值以估計沿着射線的零交叉的重新確定的點。該點作爲對象表面點返回。

3 參數和算法選擇

  TSDF表示需要選擇幾個參數。
  網格體積大小決定了TSDF網格的尺寸,即,要在像mm這樣的物理單位中重建的場景的最大尺寸。在實踐中,它受GPU上可用的隨機存取存儲器的限制。然而,之前的一些工作建議通過在攝像機的視野離開網格[11,10,1,8]時移動TSDF網格來克服這種限制。在恆定的存儲器佔用空間中,網格尺寸隨着體素尺寸的增加而增加,但是以重建精度爲代價。
  體素尺寸v是一個關鍵參數,因爲它會影響記憶要求和表面重建精度。如果固定3D網格的尺寸,則加倍體素尺寸意味着將體素數量減少到八分之一。這與內存佔用量的減少相關。此外,它降低了更新TSDF和光線跟蹤的計算成本。相反,增加的體素尺寸有助於增加場景體積而不需要更多存儲器或增加計算成本。然而,體素大小的增加伴隨着可表示細節水平的降低。降低了重建精度。因此,值得考慮特定應用的最佳體素大小。在第4章我們進行實驗以評估該參數對精度的影響。
  距離表示和截斷距離t,即,距離值的編碼TSDFi(x)TSDF_i(x)對於重建精度至關重要。直觀地說,應該有儘可能多的量化步驟,以最小化由舍入引起的信息損失並保持TSDFi(x)TSDF_i(x)的準確性。特別地,這在零水平附近是重要的,因爲TSDFi(x)TSDF_i(x)的0值用於表面估計。所以浮點數是合適的。就內存佔用而言,每個體素使用兩個字節的整數是有益的,如PCL的實現[12]。但是,這裏選擇的t影響了重建精度。兩字節整數具有65536個量化步長來表示距離,即-32768和32767之間的整數值。使用固定點數編碼和給定截斷距離t,範圍±t中的有符號距離映射到±32767。因此,有符號距離的量化步長爲t32767\frac{t}{32767},即量化誤差與t成正比,較低的t應該更好。例如,當t=1000mm時,編碼每個距離約爲0.03mm的倍數,而對於t=10mm,它將舍入到0.0003mm的倍數。另一方面,t應大於長度d·v和噪聲水平。對體素對角線參數的詳細分析超出了範圍,但將在未來的工作中得到解決。
  在參數旁邊有一些變異的算法選項。
  TSDF更新,即在一個TSDF中集成多個觀測值可以以不同的方式完成。上面,我們介紹了經典的等加權和更新。最近,[3]提出基於測量的不確定性爲每個體素單獨選擇wi(x)w_i(x)。作者模型wi(x)w_i(x)取決於相應的深度值,因爲使用的Kinect傳感器提供的深度估計在近距離內更準確。他們進一步提出了兩種修改更新方法,並評估了它們對模型重建精度的好處。他們的TSDF更新變體(其考慮了傳感硬件的特性)優於所提出的實驗中的經典更新步驟。
  表面重建通過射線追蹤完成。您從光線上的一個點開始儘可能接近相機,但是在TSDF體積中。從這裏你可以選擇一個單獨選擇的步長到下一個光點,依此類推。您必須決定是否查看與光線點相關的體素x的值tsdfi(x)tsdf_i(x),或者是否從周圍的體素中插入TSDF值。您還必須決定插值方法。在PCL[12]和[4]等其他作品中,使用了三線性插值。在從正位置到負位置的兩個射線點之間檢測到零交叉後,您可以通過所選插值計算表面點。您還可以決定是否在計算一個曲面點後停止光線跟蹤,以僅重建從相機看到的曲面點。

4 實驗和討論

  在本節中,我們進行了幾個旨在更深入理解TSDF的實驗,即在網格中空間離散化對重建精度的影響。爲了關注這些影響,我們創建了合成的深度圖,它不受噪聲或其他測量誤差的影響。合成數據的另一個優點是可以獲得完美的真實值。出於簡單說明的目的,使用2D TSDF網格進行實驗,即我們有一維深度圖和二維表面。所有的實驗都證明了測量深度的結果。多個深度圖的集成超出了範圍,將在未來的工作中得到解決。我們將重建精度分解爲兩個組件,並在專門的實驗中進行調查。

4.1 深度誤差

  在該實驗中,我們計算合成深度圖的每個像素的深度誤差ede_d和從TSDF重建的相應深度。合成深度圖包含垂直於光軸的平面物體表面(見圖2a)。我們將物體放置在攝像機位置前方800毫米處,並以0.1毫米的步長從該位置移動直到3100毫米的距離。攝像機如圖1a所示放置,光軸穿過TSDF網格的中間並與其中一個軸對齊。在所有實驗中,世界網格的大小固定爲4096毫米寬度和高度。
圖2
圖2.深度實驗。(a)平面物體及其變化。(b)不同體素尺寸的絕對深度誤差:標準偏差(紅色),最大值和最小值(藍色),t = 255 mm。
  圖2b示出了對於幾個體素尺寸v的測試視野的絕對深度誤差的平均值,標準偏差,最小值和最大值。很明顯,絕對深度誤差隨着體素尺寸而增加。但是,平均誤差增加的速度慢於體素大小。而對於v=2mm(1.9%),平均誤差爲0.04mm,對於v=128mm(0.7%),平均誤差爲0.97mm。最大和最小誤差有類似的效果。
  此外,觀察誤差的空間分佈可以觀察到最嚴重的誤差發生在視野的邊界上(見圖3a),而物體距離似乎對重建精度沒有影響。爲了研究網格軸和光線之間角度的影響,我們計算沿每條觀察光線的絕對誤差的平均值。結果如圖3b所示。這裏顯而易見的是,在視野的邊界上誤差至少大兩個數量級,並且v越高越好。邊界處的高誤差是由三線性插值引起的人爲誤差。我們用於實驗的KinectFusion的PCL實現[12]沒有注意到插入中涉及的一些TSDF體素x可能是看不見的這一事實。對於這些體素,tsdfi(x)=0tsdf_i(x)=0來自初始化。沒有感知這些體素,因此你不能指望在那裏有一個表面,對於看到的具有TSDF值爲0的體素x都是如此。隨着體素尺寸的增加,這個誤差變得明顯,因爲更多的重建3D點是受此問題的影響,因爲插值的影響是一個體素大小。
圖3
圖3.角度深度誤差。(a)跨越TSDF體積的ed圖,體素尺寸v爲64mm。(b)不同體素大小的光線平均誤差v。

4.2 橫向誤差

  通過該實驗,我們研究了體素尺寸v與垂直於光學相機軸的平面物體的長度l的比率如何影響重建精度。 物體在1280毫米至1536毫米的相機距離內移動,其中4個體素的尺寸爲64毫米。我們選擇了在水平方向上8毫米的步長。物體邊界位於觀察區域內,距離邊界128mm。對於爲該實驗生成的相同長度的所有物體,我們計算平均值並查看深度誤差ded_e和長度fpfpfnfncorcor,它們是被錯誤地重建,錯誤地不重建和正確重建的重建對象的長度,以真實物體長度的百分比表示。
  在圖4中,您可以斷言所有這些長度與ede_d一起明顯受到l和v的比率的影響。同樣顯而易見的是,對象的平均重建面積太小。
圖4
圖4.橫向深度誤差。(a)錯誤重建的平均長度(fp),錯誤地不重建(fn)和正確重建(cor)對象的真實物體長度的百分比。(b)與真實物體長度l和體素大小v的比率相關的平均深度誤差。體素尺寸v爲64毫米。

5 結論

  在本文中,我們詳細介紹了TSDF以及參數和算法選項。我們發現,對於PCL的實現,深度誤差在4到64mm的體素尺寸上是相同的。由於插值效應,在觀察場的邊界處誤差大2個量級。對於橫向誤差,物體長度與體素尺寸之比與重建精度之間存在很強的關係,即物體平均值太小。體素尺寸增加的負面影響深度誤差低於橫向誤差。

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