天天看點

TSDF學習記錄TSDFMarching Cubes等值面算法

【唐宇迪】三維重建-TSDF通俗解讀 人工智能入門教程

水泡動畫模拟(Marching Cubes) - 算法小醜 - 部落格園 (cnblogs.com)

TSDF

流程分析

  1. 首先需要建構一大塊空區域
  2. 采用體素網格來存儲該區域
  3. 需要計算每個體素的TSDF值及其權重

原理簡述

SDF值:它到最近的表面的距離

TSDF學習記錄TSDFMarching Cubes等值面算法
  • X是其中一個體素,綠色是離它最近的平面
  • P點是平面上離X最近的一點
  • PX的模即為SDF
  • 其中T表示為截斷的意思,例如大于1記為1,小于-1記為-1。

計算流程:如何計算TSDF呢?

  • 面到相機的深度是ds,相機采集到的深度是dv,則d(x) = ds - dv;
  • d(x) > 0說明該體素在真實的面的前面;反之則說明在真實的面的後面。
    TSDF學習記錄TSDFMarching Cubes等值面算法

坐标轉換

  1. 周遊每一個體素,計算其在世界坐标系中的位置
  2. 根據初始“大塊”時設定的極點位置和體素大小決定
  3. 再将其在世界坐标中的值轉換成其在相機坐标系中的位置(其到相機坐标原點的距離就是dv)
  4. 再根據相機内參,轉換到像素坐标(因為我們由深度圖,得到像素坐标就能得到其深度值)

TSDF組合

每個體素的值是增量更新的,每一幀圖像都會更新體素的TSDF值。

例如第二幀是由其結果與第一幀組合得到,第三幀是組合了第二幀。

t s d f ( t ) = g ( t s d f ( t − 1 ) , t s d f ( t ) ) , t ≥ 1 tsdf(t) = g(tsdf(t - 1),tsdf(t)),t ≥ 1 tsdf(t)=g(tsdf(t−1),tsdf(t)),t≥1

Marching Cubes等值面算法

TSDF學習記錄TSDFMarching Cubes等值面算法

繼續閱讀