三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)
???????? KinectFusion算法原理依據(jù)2011年發(fā)表的Fusion重建的論文,主要重建方法為TSDF算法,并在GitHub上開源了相關(guān)代碼,可以直接編譯使用。Github: https://github.com/topics/kinect-fusion
??????? 論文:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/kinectfusion-uist-comp.pdf;
??????? 算法原理請參考此譯文:? kinect fusion 3D重建基本算法-http://log.csdn.net/xiaohu50/article/details/51592503?????
???????? 三維重建為三維空間實體建立適合計算機表示和處理的三維數(shù)學(xué)模型,建立一個相對于真實三維世界坐標系的計算機世界坐標系中的三維映射模型。
????? ?? 三維重建的關(guān)鍵因素為尺度(點的鄰域覆蓋單位)、相對位置(剛體物體的體元相對位置及位置映射)、原點位置/初始化位置 很重要。
???????? 對于尺度問題,通常有兩種解決方法。第一種,直接得到實體到計算機世界坐標系的絕對映射關(guān)系,這就需要一個固定的位置映射系統(tǒng),比如一個多個單目相機固定的攝影臺,或者一個可以運動的雙目攝像機。第二種,直接使用單目相機,使用特征配準或者位置點優(yōu)化的方法,構(gòu)建稀疏點集,進而構(gòu)建模型,此種方法稱為SLAM。
???? ? ? 使用多目或者雙目攝像機系統(tǒng)的系統(tǒng),關(guān)鍵點在于表面重建,局部的表面重建遞進完成可以構(gòu)建最終的完整表面;使用單目相機關(guān)鍵在于稀疏點的構(gòu)建,尋找表面的顯著點,構(gòu)建一個物體的完整網(wǎng)格,再次通過補全網(wǎng)格的方法構(gòu)建模型。
?
一、絕對尺度
???????? 獲得絕對尺度對于模型三維重建是非必須的,但對于一個擴展的三維重建應(yīng)用在某些方面是必須的,比如希望與真實環(huán)境交互的移動機器人(掃地機器人、無人機、無人潛艇)。
???????? 多目系統(tǒng)可以根據(jù)固定的相機位置獲取計算機世界中的度量單位代表的真實世界尺度,雙目相機也可以根據(jù)雙目的基線獲得此意義。單目相機是怎么樣得到這個真實尺度的呢?通過相機的內(nèi)參——焦距的定義。
???????? 尺度的獲取方式:多目和深度相機可以直接根據(jù)得到的深度值,進而由透視關(guān)系得到絕對尺度。對于單目相機,必須完成整個稀疏構(gòu)建過程才能得到相對精確的深度,只有完成整個SLAM過程,才能得到真實尺度。
?
二、相對位置
??????? 相對位置的獲取為表面重建問題,可分為稀疏表面重建和稠密重建。
??????? SFM使用稀疏重建,需要檢測特征:No explicit feature detectionUnlike structure from mo-tion (SfM) systems (e.g. [15]) or RGB plus depth (RGBD)techniques (e.g. [12,13]), which need to robustly and con-tinuously detect sparse scene features, our approach to cam-era tracking avoids an explicit detection step, and directlyworks on the full depth maps acquired from the Kinect sen-sor. Our system also avoids the reliance on RGB (used inrecent Kinect RGBD systems e.g. [12]) allowing use in in-door spaces with variable lighting conditions.
??????? 深度相機根據(jù)雙目視差原理等直接獲得三維表面,這個表面是透視畸變的,可以通過透視校正的方法進行標準化補償,得到 確定 面元,這就做到了表面重建的第一步。再經(jīng)過一系列處理,最后通過ICP方法等逐幀稠密匹配的方法,可以迭代構(gòu)建整個三維模型。
?????? Kinect 關(guān)鍵點:High-quality reconstruction of geometryA core goal ofour work is to capture detailed (ordense) 3D models ofthe real scene. Many SLAM systems (e.g. [15]) focuson real-time tracking, usingsparsemaps for localizationrather than reconstruction. Others have used simple point-based representations (such as surfels [12] or aligned point-clouds [13]) for reconstruction. KinectFusion goes beyondthese point-based representations by reconstructingsurfaces,which more accurately approximate real-world geometry。
??????? 單目相機對于稠密匹配在算法的設(shè)計代價上是得不償失的,而對于稀疏構(gòu)建是合適的。而尺度的未知和深度的未知即是 地圖構(gòu)建和相機同步定位 對于稀疏構(gòu)建則是必須同時進行的,這就是常見的SLAM問題。
??????? KinectFusion流程:點云獲取(2D轉(zhuǎn)3D,由硬件計算得到)、預(yù)處理(降噪、濾波-保邊?去除或者保留超斜面?密度濾波)、相機追蹤(GPU分布式的ICP算法)、密集重建(TSDF算法,即截斷SDF算法,把相機坐標系的點云統(tǒng)一到世界坐標系)、顯示結(jié)果(RGB綁定和表面渲染、構(gòu)建出表面)。
??????? 參考:各種SDF算法 projective TSDF/TSDF/flipped TSDF-比較;Kinect重建的精度嚴重依賴于TSDF的一些參數(shù),比如截斷距離的閾值。
?
三、原點位置
??????? 坐標系原點位置,是在三維表面重建時附帶的一個小的問題,計算機數(shù)據(jù)世界坐標系的原點位置確定與否代表了不同的構(gòu)建方案。
VS2013編譯PCL1.8.0 還是失敗了,沒有編譯成功,修改為KinectFusion的文章吧
?????? VS2013社區(qū)版對個人開發(fā)者免費,終于可以不用該死的盜版了。Win10科技預(yù)覽版X64系統(tǒng)開發(fā)版本下載,與Vs2013可以完美融合。
??????? PCL的源代碼版本已經(jīng)進化到1.8.0,不知道增加了多少新特性,還是拿來編譯一下試一試。對于VS2012無法編譯PCL1.7.2的問題,原因是OpenNI不支持1600以上數(shù)字的編譯器,即最高支持到VC10。
?????? 以下是注意事項:
?????? 1. OpenNI:
?????????? 關(guān)于OpenNI的支持問題,把OpenNI 的包含文件 xxxxxGrab.h里面的 if ...>1600去掉,編譯會完美通過;
?????? 2.Boost:
????????? 關(guān)于Boost的使用問題,Boost不支持CMAKE編譯,支持VC12的最低版本為1.5.6.0,GIT有完整的Win二進制安裝包;
?????? 3.VTK:
?????????? 關(guān)于VTK的問題,使用罪行版本的VTK6.1,注意 源碼里面的一個錯誤 :在58行處找到 宏定義 ,轉(zhuǎn)到聲明處, 補全定義數(shù)字 ,我補全的為 8;
<del> 118> Build all projects========== Build: 118 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========</del>?????? 4.CMAKE:
?????????? 關(guān)于CMAKE,使用CMAKE3.0以上,添加了對VC12的支持。
?
四、深度相機方案對比:
?????? 文章鏈接:深度相機-三種方案對比(結(jié)構(gòu)光、雙目、TOF);文章鏈接:深度相機-TOF總結(jié)? ;
RGB-D方案對比:
關(guān)鍵技術(shù)規(guī)格:
???? 1.檢測范圍;2.檢測精度;3.檢測角度;4.幀率。
???? 5.模塊大小;? 6.功耗
目前主流的深度攝像頭方案在檢測距離上、精度、檢測速度上相差不大,區(qū)別在于:
????? 1、結(jié)構(gòu)光方案優(yōu)勢在于技術(shù)成熟,深度圖像分辨率可以做得比較高,但容易受光照影響,室外環(huán)境基本不能使用;
????? 2、TOF方案抗干擾性能好,視角更寬,不足是深度圖像分辨率較低,做一些簡單避障和視覺導(dǎo)航可以用,不適合高精度場合。受環(huán)境影響小,傳感器芯片并不成熟,成本很高,實現(xiàn)量產(chǎn)困難。
?????? 3、雙目方案,成本相對前面兩種方案最低,但是深度信息依賴純軟件算法得出,此算法復(fù)雜度高,難度很大,處理芯片需要很高的計算性能,同時它也繼承了普通RGB攝像頭的缺點:在昏暗環(huán)境下以及特征不明顯的情況下并不適用。
雙目RGB、結(jié)構(gòu)光、TOF三種主流技術(shù)的詳細的比較:
| 基礎(chǔ)原理 | 雙目匹配,三角測量 | 激光散斑編碼 | 反射時差 |
| 分辨率 | 中高 | 中 | 低 |
| 精度 | 中 | 中高 | 中 |
| 幀率 | 低 | 中 | 高 |
| 抗光照(原理角度) | 高 | 低 | 中 |
| 硬件成本 | 低 | 中 | 高 |
| 算法開發(fā)難度 | 高 | 中 | 低 |
| 內(nèi)外參標定 | 需要 | 需要 | ? |
| ? | ? | ? | ? |
總結(jié):
?????? 1.雙目方案,最大的問題在于實現(xiàn)算法需要很高的計算資源,導(dǎo)致實時性很差,而且基本跟分辨率,檢測精度掛鉤。也就是說,分辨率越高,要求精度越高,則計算越復(fù)雜,同時,純雙目方案受光照,物體紋理性質(zhì)影響。
?????? 2.結(jié)構(gòu)光方案,目的就是為了解決雙目中匹配算法的復(fù)雜度和魯棒性問題而提出,該方案解決了大多數(shù)環(huán)境下雙目的上述問題。但是,在強光下,結(jié)構(gòu)光核心技術(shù)激光散斑會被淹沒。因此,不合適室外。同時,在長時間監(jiān)控方面,激光發(fā)射設(shè)備容易壞,重新?lián)Q設(shè)備后,需要重新標定。
?????? 3.TOF方案,傳感器技術(shù)不是很成熟,因此,分辨率較低,成本高,但由于其原理與另外兩種完全不同,實時性高,不需要額外增加計算資源,幾乎無算法開發(fā)工作量,是未來。
?
總結(jié)
以上是生活随笔為你收集整理的三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3个步骤让您轻松配置路由器-3个步骤让您
- 下一篇: OSPF路由协议基础概念及网络类型