相關學習資料以下:html
cousera課程: https://www.coursera.org/learn/robotics-perceptiongit
youtube課程: https://www.youtube.com/watch?v=RDkwklFGMfogithub
Tutorial: https://www.cse.wustl.edu/~furukawa/papers/fnt_mvs.pdf算法
分清楚 3D 重建 vs. 3D 建模 網絡
這裏通常指的是用多張2D圖片加上額外的信息,進行重建 3D架構
@知乎問題:三維重建 3D reconstruction有哪些使用算法app
如下爲知乎中的相關回答iview
用一組圖片來作3D reconstruction須要的算法: SFM(Structure from motion),也就是從時間系列的2D圖像中推算3D信息。iphone
使用這種方法的軟件有: 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
ToF是測飛行時間,Time of Flight, 最開始求取深度的,是激光雷達,可是成本很高,軍用較多
TOF是3D深度攝像技術中的一種方案。目前主流的3D深度攝像方案有三種: 結構光,TOF, 雙目成像
雙目測距成像由於效率低,算法難,精度差,容易受到環境因素干擾;TOF方案一樣有精度缺陷,傳感器體積小型化後對分辨率贏你選哪一個很大。
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深度攝像頭勢必會大力推進機器視覺領域的發展,助力機器人產業實現完美「智能化轉型」