3D重建模的初步瞭解

3D重建模的初步瞭解

相關學習資料如下:

cousera課程: https://www.coursera.org/learn/robotics-perception

youtube課程: https://www.youtube.com/watch?v=RDkwklFGMfo

Tutorial:  https://www.cse.wustl.edu/~furukawa/papers/fnt_mvs.pdf

 

分清楚 3D 重建 vs.  3D 建模   

這裏一般指的是用多張2D圖片加上額外的信息,進行重建 3D

 

 

@知乎問題:三維重建 3D reconstruction有哪些使用算法

以下爲知乎中的相關回答

用一組圖片來做3D reconstruction需要的算法: SFM(Structure from motion),也就是從時間系列的2D圖像中推算3D信息。

使用這種方法的軟件有: Pix4Dmapper, Autodesk 123D Catch, PhotoModeler, VisualSFM

 

大多數三維重建的數據源是RGB圖像,或者RGBD這種帶有圖像深度信息的圖像(用kinect之類的特殊特備拍出來的)。

SFM是最經典的三維重建方案:

1.特徵提取(SIFT, SURF, FAST等一堆方法)

2.配準(主流是RANSAC和它的改進版)

3.全局優化bundle adjustment   用來估計相機參數

4.數據融合

SFM算法是一種基於各種收集到的無序圖片進行三維重建的離線算法。在進行核心的算法structure-from-motion之前需要一些準備工作,挑選出合適的圖片。

 

三維重構算法得看試用的是什麼傳感器,如果是雙目相機,一般是極線幾何加視覺特徵配準的算法,優化就是bundle adjustment; 如果是單目相機,較早的有PTAM,DTAM,, 近幾年就是SFM比較火,如果是Kinect之類的RGBD相機,比較好的就是微軟的KinectFusion, PCL的開源KinFu,以及MIT加強版Kintinuous; 如果是用激光,一般就是SLAM做了。

基於rgb單目主要就是基於multiview geometry(SFM) ,比較經典的是DTAM和微軟的monofusion, 缺點是沒法做稍大場景的重建以及重建精度不高。 

雙目的話就認爲是rgbd相機的重建,底層可以得到深度圖的原理就是結構光,雙目,激光,或者tof(結構光方法適合室內高精度重建,商業產品較多, sfm方法比結構光方法更方便,無需事先標定相機,但精度差些,很多無人機對大型建築建模就是用的sfm方法)

 

 

知乎-劉銳

參考文章 :  https://zhuanlan.zhihu.com/p/30445504

3D重構算法可以描述爲當給定某個物體或場景的一組照片時,在一些假定條件下,比如物體材料,觀測視角和光照環境等,通過估計一個最相似的3D shape來解釋這組照片。一個完整的3D重構流程通常包含以下幾個步驟:

1. 收集場景圖片

2. 計算每張圖片的相機參數

3. 通過圖組來重構場景的3D shape以及對應的相機參數

4. 有選擇的重構場景的材料等 

最核心步驟就是第三步: 3D shape的重構算法

常規的3D shape representation主要有四種: 深度圖(depth), 點雲(point cloud), 體素(voxel), 網格(mesh)

今年來也出現了很多基於deep learning的方法:

David Eigen NIPS2014:   Depth Map Prediction from a Single Image using a Multi-Scale Deep Network

Fayao Liu CVPR2015  Deep Convolutional Neural Fields for Depth Estimation from a Single Image

這兩篇論文都是利用CNN網絡結構預測 a single image與其對應的depth map之間的關係。

但是depth image還不足以解釋重構原始input的信息,它只能作爲3D scene understanding的一個輔助信息。所以開始研究利用一組二維圖來重構3D點雲圖或voxel以及mesh圖。

基於deep learning的3D點雲和mesh重構是較難以實施的,因爲DL學習一個物體完整的架構需要大量數據的支持。然後傳統的3D模型是由vertices和trangulation mesh組成的,因此不一樣的data size造成了training的困難。所以後續大家都用voxelization(Voxel)的方法把所有CAD model轉成binary voxel模式(有值爲1, 空缺爲0)這樣保證了每個模型都是相同的大小。最近的一篇論文: Choy ECCV2016:    3D-R2N2:A Unified Approach for Single and Multi-view 3D Object Reconstruction

採用深度學習從2D圖像到其對應的3D voxel模型的映射:首先利用一個標準的CNN結構對原始input image進行編碼,然後用Deconv進行解碼,最後用3D LSTM的每個單元重構output voxel.

3D voxel是三維的,它的resolution成指數增長,所以它的計算相對複雜,目前的工作主要採用32*32*3以下的分辨率以防止過多的佔用內存。但是也使得最終重構的3D model分辨率並不高。所以科研道路道阻且長。

mesh和point cloud是不規則的幾何數據形式,因此直接使用CNN是不可行的。但是可以考慮將3D mesh data轉化成graphs形式,再對3D曲面上的2D參數進行卷積。具體有Spatial construction(Geodesic CNN)和Spectral construction(Spectral CNN)

基於point cloud的方法,看Hao Su的CVPR2017論文 PointNet: Deep learning on Point Sets for 3D Classification and Segmentation以及 A Point Set Generation Network for 3D Object Reconstruction from a Single Image.

基於mesh和point cloud的方法總的來講數學東西多,而且細節回覆上效果欠佳。不過可以考慮voxel來提高重構精度。

 

 


 

 

知乎問題:計算機圖形學與機器學習(深度學習)怎麼結合起來?

以下爲MSRA相關回答

隨着深度學習尤其是卷積神經網絡(CNN)這一利器在各領域裏的卓越表現,如何將CNN運用到三維數據上成爲計算機視覺和圖形學一個焦點課題。

分析與處理三維形體是計算機圖形學中的一個基本任務與研究方向。近年來隨着三維數據獲取的便捷和三維數據集的迅猛增長,這個研究方向也面臨新的挑戰和契機。一方面,在新的數據形勢下,傳統算法的一些前提假設不再成立,研發新型算法的需求迫在眉睫。另一方面,大數據的出現,可以使得傳統的三維分析和機器學習更加有機地結合起來,從而幫助人們加深對三維世界的認知,有效地理解現實三維幾何世界並構建虛擬數字世界。

 

“三維去噪”

由於Kinect設備的低精度,三維網格存在着大量的噪聲。如圖(b)

去噪問題本質上是求解一個病態的逆問題:在噪聲的類型和程度未知、真實模型的幾何特性未知的前提下,如果要把噪聲從輸入中完美剝離,必然需要引入各種假設來輔助求解。

真實噪聲是與數據以及設備相關的,簡單的噪聲模型不可能刻畫出真實的噪聲。

忽略真實數據去研發一個放之四海而皆準的去噪算法是不可行的。噪聲來自數據,我們應該從數據中探究其中的奧祕。我們的工作也體現了數據的威力.Siggraph Asia 2016發表的文章,Mesh Denoising via Cascaded Normal Regression

 

“形狀空間與3D CNN”

三維形狀在數字世界裏可以有不同的表達,如三角網格、點雲、體素、參數曲面、隱式曲面等。不同的表達和CNN也有着不同的結合方式。有的方法將網格參數化到二維空間,在二維空間編碼幾何特徵,並利用CNN在二維定義域上類似圖像空間進行卷積;有的將曲面局部處理成測地圓盤域並在其上編碼幾何信號,然後在圓盤上進行CNN卷積;也有的以三維空間的體素作爲定義域,示性函數作爲信號(即物體形狀內部信號編碼爲1,外部爲0)進行3D卷積,將CNN直接拓展到三維空間;還有一大類方法是利用空間投影將物體變爲多個視圖下的二維影像,然後當作圖像來處理。在近年的視覺、機器學習、計算機圖形學的會議上,如CVPR/ICCV/NIPS/SIGGRAPH,針對三維形狀的深度學習網絡已開始大放光彩。但這些方法各有利弊,對輸入也各有不同的要求。

基於體素的3D CNN是圖像空間CNN的自然推廣,然而從二維推廣到三維,CNN涉及的離散元素(2D是像素,3D是體素)個數是空間格點分辨率的三次方,即 N^{3} 。龐大的存儲量和計算量讓基於體素的3D CNN畏足於高分辨率,徘徊於 32^{3} 這樣低分辨率的數據中,使得該方法在衆多的三維學習任務中飲恨敗北。提出基於八叉樹的CNN O-CNN Siggraph2017上的文章 O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis

 

 


 

ToF是測飛行時間,Time of Flight, 最開始求取深度的,是激光雷達,但是成本很高,軍用較多

TOF是3D深度攝像技術中的一種方案。目前主流的3D深度攝像方案有三種: 結構光,TOF, 雙目成像

雙目測距成像因爲效率低,算法難,精度差,容易受到環境因素干擾;TOF方案同樣有精度缺陷,傳感器體積小型化後對分辨率贏你選哪個很大。

 

 

 

 

應用前景:

百度目前在做基於深度學習的高精度導航模型構建, AR

無人機建築模型重建

iphone X 3D攝像頭

 

 

參考文章: https://zhuanlan.zhihu.com/p/29326039

3D視覺作爲一項激動人心的新技術,早已經出現在微軟Kinect、英特爾RealSense等消費級產品中。近幾年,隨着硬件端技術的不斷進步,算法與軟件層面的不斷優化,3D深度視覺的精度和實用性得到大幅提升,使得“3D深度相機+手勢/人臉識別”具備了大規模進入移動智能終端的基礎。作爲全球手機當之無愧的龍頭,蘋果率先大規模採用3D視覺技術,將徹底激活3D視覺市場,開啓全新時代。

 3D視覺技術不僅僅在識別精度方面大幅提升,更重要的是打開了更加廣闊的人工智能應用空間。隨着機器視覺、人工智能、人機交互等科學技術的發展,各種高智能機器人開始走進現實,3D視覺技術成爲助力製造業實現“智能化”轉型的好幫手。

大家耳熟能詳的深度攝像頭技術和應用有英特爾的RealSense、微軟的 Kinect、蘋果的 PrimeSense、以及谷歌的Project Tango等。不過可以看到這一技術的研究和開發多爲國外公司,國內計算視覺方面的公司或創業團隊屈指可數,技術上的壁壘依舊較大。

關於目前市場上的深度相機的技術方案主要有以下三種: 雙目被動視覺、結構光、TOF。 雙目被動視覺主要是利用兩個光學攝像頭,通過左右立體像對匹配後,再經過三角測量法來得到深度信息。此算法複雜度高,難度很大,處理芯片需要很高的計算性能,同時它也繼承了普通RGB攝像頭的缺點:在昏暗環境下以及特徵不明顯的情況下並不適用。

結構光的原理是通過紅外激光發射相對隨機但又固定的斑點圖案,這些光斑打在物體上後,因爲與攝像頭距離不同,被攝像頭捕捉到的位置也不盡相同。然後先計算拍到的圖的斑點與標定的標準圖案在不同位置的位移,引入攝像頭位置、傳感器大小等參數計算出物體與攝像頭的距離。

微軟在Kinect二代採用的是ToF的技術。ToF是Time of flight的簡寫,直譯爲飛行時間的意思。所謂飛行時間法3D成像,是通過給目標連續發送光脈衝,然後用傳感器接收從物體返回的光,通過探測光脈衝的飛行(往返)時間來得到目標物距離。相比之下,結構光技術的優勢是比ToF更加成熟,成本更低,更加適合用在手機等移動設備上。

深度攝像頭是所有需要三維視覺設備的必需模塊,有了它,設備就能夠實時獲取周圍環境物體三維尺寸和深度信息,更全面的讀懂世界。深度攝像頭給室內導航與定位、避障、動作捕捉、三維掃描建模等應用提供了基礎的技術支持,成爲現今行業研究熱點。如今iPhone X搭載3D深度攝像頭勢必會大力推動機器視覺領域的發展,助力機器人產業實現完美“智能化轉型”

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