
1. 原始數據的處理
流程和公式如圖2所示。先對原始深度圖\(R_k\)進行濾波降噪,這里選擇雙邊濾波,目的是保持清晰的邊界。一般的濾波是在空間域做加權平均,像素越靠近中心點,權重越高。雙邊濾波是在空間域加權平均的基礎上再對值域加權平均,即像素灰度值越靠近中心像素的灰度值,權重越高。在邊界附近,灰度值差異很大,所以雖然邊界兩邊的像素在空間域靠在一起,但是由於灰度值差別非常大,對於互相的權重很低,所以可以保持清晰的邊界,如圖3所示。


2. 相機位置姿態的估計
相機的位置姿態是用ICP (Iterative Closest Point) 求解的。ICP是處理點雲的常規手段,通過最小化兩塊點雲的差別,迭代求解出拍攝兩塊點雲的相機之間的相對位置。有不同的方式來描述點雲的差別,最常用的是point-to-point和point-to-plane兩種。KinectFusion選擇的是point-to-plane的方式,要把點到點的距離向法向量投影,如圖4所示。2001年的一篇論文[3]詳細比較了point-to-point和point-to-plane的效果,結論是point-to-plane要比point-to-point收斂速度快很多,而且更魯棒。圖5列出了[3]中的Figure15和16,比較了在兩種點雲形貌的情況下不同ICP的收斂速度和殘差。


3. TSDF的更新
先介紹一個概念SDF(Signed Distance Function),SDF描述的是點到面的距離,在面上為0,在面的一邊為正,另一邊為負。TSDF(Truncated SDF)是只考慮面的鄰域內的SDF值,鄰域的最大值是max truncation的話,則實際距離會除以max truncation這個值,達到歸一化的目的,所以TSDF的值在-1到+1之間,如圖6所示。

TSDF的具體算法也在圖6中,利用GPU並行處理各個voxel。首先把每個voxel根據計算出的相機位置姿態投影到相機上,如果在相機的視椎內,則會有一個像素點和它對應,\(D_i(p)\)是這個像素點距離表面的實際測量值,\(t_i-v^g\)則是voxel到相機的距離,兩者的差就是SDF值。然后用max truncation歸一化得到當前TSDF值。接着,用加權平均的方式更新TSDF值。voxel越正對着相機(如圖7所示),越靠近相機,權重越大,用公式表示就是:\(W(p)\propto cos(\theta)/R_k(u)\),\(u\)是\(p\)的像。但論文[1]中也提到把權重全部設為1,對TSDF做簡單的平均,也可以取得很好的效果;而如圖6算法第12行,設置max weight后,可以去除場景中動態物體的影響(這一點沒有特別想明白)。

4. 表面的估計
更新完TSDF值之后,就可以用TSDF來估計voxel/normal map。這樣估計出來的voxel/normal map比直接用RGBD相機得到的深度圖有更少的噪音,更少的孔洞(RGBD相機會有一些無效的數據,點雲上表現出來的就是黑色的孔洞)。估計出的voxel/normal map與新一幀的測量值一起可以估算相機的位置姿態。具體的表面估計方法叫Raycasting。這種方法模擬觀測位置有一個相機,從每個像素按內參\(K\)投射出一條射線,射線穿過一個個voxel,在射線擊中表面時,必然穿過TSDF值為一正一負的兩個緊鄰的voxel(因為射線和表面的交點的TSDF值為0),表面就夾在這兩個voxel里面。然后可以利用線性插值,根據兩個voxel的位置和TSDF值求出精確的交點位置。這些交點的集合就呈現出三維模型的表面。
參考文獻:
[1] Newcombe R A, Izadi S, Hilliges O, et al. KinectFusion: Real-time dense surface mapping and tracking[C]//Mixed and augmented reality (ISMAR), 2011 10th IEEE international symposium on. IEEE, 2011: 127-136.
[2] Izadi S, Kim D, Hilliges O, et al. KinectFusion: real-time 3D reconstruction and interaction using a moving depth camera[C]//Proceedings of the 24th annual ACM symposium on User interface software and technology. ACM, 2011: 559-568.
[3] Rusinkiewicz S, Levoy M. Efficient variants of the ICP algorithm[C]//3-D Digital Imaging and Modeling, 2001. Proceedings. Third International Conference on. IEEE, 2001: 145-152.