1. 程式人生 > >KinectFusion公式推導、理解

KinectFusion公式推導、理解

  “KinectFusion Real-Time Dense Surface Mapping and Tracking”一文於2012年發表,該文章首次實現了實時稠密重建(Real time dense restruction),我認為微軟的Kinect深度相機是其成功的根本,該文章也是首次成功應用了深度相機,是做實時稠密重建(Real time dense restruction)方向的必讀論文。

  系統的主體結構如圖所示:(摘自原文)


這裡寫圖片描述
  1. 深度相機採集資料,對資料做預處理。(Surface measurement)
  2. 使用Prj ICP演算法估計相機位姿。(Sensor pose estimation)
  3. 融合當前幀點雲到模型。(Surface reconstruction update)
  4. 使用光線投射法(投影演算法)將點雲模型投影到下一幀相機位置的影象上供下一幀計算。(Surface prediction)

深度影象預處理(Surface measurement)

  記從感測器獲得的第 k 幀深度影象為 Rk ,記 u=[uv]T為深度圖某個畫素的畫素座標。那麼 Rk(u) 為第 k 幀深度圖的第 (u,v) 畫素的,即深度。對 Rk 進行雙邊濾波得到 Dk

  記 K 為相機的內參矩陣(Intrinsic matrix)u˙=[uT1]Tu 的齊次化向量。通過反投影法由 D

k 計算得到該幀的三維點雲集合 Vk (其中每個點 Vk(u)R3 ):

Vk(u)=RkK1u˙

*注1:雙邊濾波器可以參考雙邊濾波器的原理及實現一文。其作用是保留邊界梯度的情況下,濾除高頻噪聲。


  然後通過 Vk(u) 計算對應畫素點 u 的法向量 Nk(u) :

Nk(u)=ν[(Vk(u,v+1)Vk(u,v))×(Vk(u+1,v)Vk(u,v))]  其中 ν[x] 為向量單位化函式:
ν(x)=x||x||2

  由於深度影象並不是每個畫素點都是有值的,如下圖,深度影象中純黑色的部分就是感測器無法採集深度的區域,原因可能是多種的:探測區域超出了感測器的探測範圍、過於光滑的材質、能夠吸收紅外光的材質等。


這裡寫圖片描述

  因此,需要一個掩碼矩陣Mk來表示該幀深度影象對應的位置是否有值。若對應畫素 u 有值,則 Mk(u)=1 ,否則 Mk(u)=0

  至此,得到了 RkNk 以供後面的投影法 ICP使用。

相機位姿估計(Sensor pose estimation)

  定義相機座標系,取相機光心為原點,取相機光軸為 Z 軸,畫素座標軸 u 與相機座標軸 X 同向。座標系符合右手系法則。

  TSDF(truncated signed distance function),一般譯作“截斷符號距離描述函式”,可以把這個詞拆開看:

  • 一張深度影象反投影變換到三維空間中的每個三維點都對應著原深度影象中的每一個畫素點,當點雲比較稠密時,我們可以將該點雲看成一個三維曲面,也就是function,記作F(x,y,z)=0
  • 所謂signed distance就是帶正負符號的距離,以相機的光軸為Z軸,對於一個三維點(x0,y0,z0),記d=F(x0,y0,z0),如果它在平面前面,則d的值為正,否則為負,(這是《高等數學》空間幾何代數部分的基礎內容)。
  • “truncated”就是截斷,當|d|>t時,則|d|=0,其中t是截斷距離。

這裡寫圖片描述

  ICP演算法(Iterate Closest Points)可以用於計算兩組點雲之間的剛體變換,對於 ICP演算法有多種變種,如點到點 ICP(Point-to-Point)、點到面 ICP(Point-to-Plane)、面到面 ICP(Plane-to-Plane)等。

  傳統的 ICP(Point-to-Point)是需要知道兩組點雲之間,一組點雲的各個點在另一組點雲中的最近點,才能進行計算。顯然,這需要遍歷另一組點雲以尋找最近點,最差會需要 O(N2) 的時間複雜度,即使使用一些資料結構來降低複雜度,(如KD-Tree、Octave-Tree等)也至少需要

相關推薦

KinectFusion公式推導理解

  “KinectFusion Real-Time Dense Surface Mapping and Tracking”一文於2012年發表,該文章首次實現了實時稠密重建(Real time dense restruction),我認為微軟的Kinect深度相

SVM原理公式推導libsvm原始碼分析

恰好翻到了以前記的cs229的筆記, 其實也想了好久要不要跟風去推導公式, 寫寫就當是複習一下了 說到svm, 按套路就要先說說線性分類器, 如圖, 在特徵維數為2時, 可以用一條線將正負樣本分離開

求和(數學公式推導取餘運算)

 1275: 求和 Time Limit:1000MS Memory Limit:65536KB Total Submit:12 Accepted:3 Page View:28 S

線性模型之邏輯迴歸(LR)(原理公式推導模型對比常見面試點)

參考資料(要是對於本文的理解不夠透徹,必須將以下部落格認知閱讀,方可全面瞭解LR): (1).https://zhuanlan.zhihu.com/p/74874291 (2).邏輯迴歸與交叉熵 (3).https://www.cnblogs.com/pinard/p/6029432.html (4).htt

對GAN網路公式推導的一些理解

詳見https://blog.csdn.net/mr_tyting/article/details/79336802 這段公式表示,首先固定生成器,也就是G的網路引數,然後判別器D要使V的值儘可能大,也就是真實樣本和造假樣本的區別要儘可能大(故意找茬)。然後關於這個V函式的構造其實也挺好理解的,

GBDTXGBoostLightGBM演算法公式推導

一、GBDT公式推導 1、第一個基函式: (1.1)F0(X)=12log1+y‾1−y‾F_0(X)=\frac{1}{2}log\frac{1+\overline{y}}{1-\overline{y

機器學習筆記之七——邏輯迴歸簡單推導softmax簡單理解以及sklearn中邏輯迴歸常用引數解釋

邏輯迴歸 對邏輯迴歸的理解:對線性迴歸的假設函式的 f(x) 又套上了一層sigmoid函式,即g(f(x)). 然後sigmoid函式是長這樣的: 它的影象長這樣: 對於線性迴歸得到的結果,再經過一層sigmoid函式,以x=0為界限,左邊為0,右邊為1,邏輯迴歸就是這樣一個二分類

全概率公式貝葉斯公式推導過程(在原博文的基礎上有補充)

(1)條件概率公式 設A,B是兩個事件,且P(B)>0,則在事件B發生的條件下,事件A發生的條件概率(conditional probability)為: P(A|B)=P(AB)/P(B) (2)乘法公式 1.由條件概率公式得: P(A

關於最大似然估計和最小二乘法的理解公式推導

最小二乘法可以從Cost/Loss function角度去想,這是統計(機器)學習裡面一個重要概念,一般建立模型就是讓loss function最小,而最小二乘法可以認為是 loss function = (y_hat -y )^2的一個特例,類似的想各位說的還可以用各種距離度量來作為loss functi

Focal Loss 論文理解公式推導

作者: Tsung-Yi, Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollar 團隊: FAIR 精度最高的目標檢測器往往基於 RCNN 的 two-stage 方法,對候選目標位置再採用

全概率公式貝葉斯公式推導過程

(1)條件概率公式         設A,B是兩個事件,且P(B)>0,則在事件B發生的條件下,事件A發生的條件概率(conditional probability)為:                      P(A|B)=P(AB)/P(B) (2)乘法公式          1.由條件概率

POJ 2140 Herd Sums 公式推導

cpp true typedef 因數 固定 ostream highlight ring sum 題意:給出n<=1e7 求有多少個連續數之和等於k x+x+1+....x+k=n (k+1)k/2+(k+1)x=n (k+1)k+(k+1)2x=2*n (k

vijos - P1543極值問題(斐波那契數列 + 公式推導 + python)

找到 span add gin python3 abi pri n) fill P1543極值問題 Accepted 標簽:[顯示標簽] 背景 小銘的數學之旅2。 描寫敘述 已知m、n為整數,且滿足下列兩個條件: ①

vijos - P1302連續自然數和 (公式推導 + python)

.net ble tags ucid stat down bsp z-index fontsize P1302連續自然數和 Accepted 標簽:[顯示標簽] 描寫敘述 對一個給定的自然數M,求出所有的連續的自然數段(連續個數大於1)

解釋一下核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推導過程(轉載)

線性不可分 itl 專註 out center forest 測試 重要 原因 KPCA,中文名稱”核主成分分析“,是對PCA算法的非線性擴展,言外之意,PCA是線性的,其對於非線性數據往往顯得無能為力,例如,不同人之間的人臉圖像,肯定存在非線性關系,自己做的基於ORL數據

[PY3]——過濾數據——列表推導filter()itertools.compress()

規則 return explore 1.7 替換 3.1 作用 工具 取出 問題 你有一個數據序列,想利用一些規則從中提取出需要的值或者是縮短序列 解決方案 最簡單的過濾數據的方法,就是使用列表推導。 使用列表推導的一個潛在缺陷就是如果輸入非常大的時候會

SVM公式推導筆記

svm width org sin .org 參考資料 zhang www http 參考資料: 對偶函數-http://blog.pluskid.org/?p=702 KTT和拉格朗日乘子-http://www.cnblogs.com/zhangchaoyan

反向傳播算法(過程及公式推導

不能 簡化 會有 geo 之前 代碼 求和 不同 eof 一、反向傳播的由來 在我們開始DL的研究之前,需要把ANN—人工神經元網絡以及bp算法做一個簡單解釋。關於ANN的結構,我不再多說,網上有大量的學習資料,主要就是搞清一些名詞:輸入層/輸入神經元,輸出層/輸出神經元,

理解對象

for delet 對象 conf -i 什麽是對象 ava efi style 1 什麽是對象?   無需屬性的集合,其屬性可以包含基本值、對象或者函數。   可以把對象想象為散列表:無非就是一組 名-值對,其值是數據或函數。 1.1 屬性類型   ECMAScript中

機器學習之支持向量機(一):支持向量機的公式推導

根據 監督式 art 通用 利用 哪些 這就是 在線 方法 註:關於支持向量機系列文章是借鑒大神的神作,加以自己的理解寫成的;若對原作者有損請告知,我會及時處理。轉載請標明來源。 序: 我在支持向量機系列中主要講支持向量機的公式推導,第一部分講到推出拉格朗日對偶函數的對偶因