普通手機攝像頭能獲得深度信息嗎?

普通的手機攝像頭,通過演算法獲得深度信息,比如判斷人臉和攝像頭距離。


一般有兩種方法:機器學習或者是Structure from Motion(運動恢復結構)。

機器學習的方法一般是通過Supervised Learning的方法來學習二維圖像到三維結構的mapping。程序拿到一張未知3D結構的2D圖然後會根據之前習得的先驗知識來infer這張圖的3D結構。

Structure from Motion是根據對同一物體不同視角的2D圖像重建出3D結構的演算法。最基本的演算法是通過找到不同視角里物體上相同的關鍵點(keypoint)建立一個超定組(overdetermined system),然後用秩為3的SVD分解來找到這些點在三維空間里的位置。這個方法有兩個最大的缺點:

1. 相機需要提前通過checkerboard校準來獲取參數。

2. 沒有辦法重構出高密度三維結構,因為自然物體上可靠的關鍵點一般都很少。

現在有些Structure from motion屬於Uncalibrated stereo vision,泛指任何不通過雙目成像原理進行3D重建的演算法。Steve Seitz有一篇很著名的論文就是用在網上爬(crawl)下來的從不同角度拍攝的羅馬斗獸場的照片來重建出羅馬斗獸場的3D結構。


普通的手機攝像頭是無法做到的。不過可以參見前段時間微軟的一個工作,通過改造把普通攝像頭變身深度相機:Learning to be a depth camera for close-range human capture and interaction

另外,像華為榮耀6plus這種雙攝像頭結構,就可以通過雙目恢復深度。


我覺得樓上都沒有回答到樓主的重點,樓主想判斷人臉和攝像頭的距離,這SFM可以做到,但需要有每張照片的三維位置,手機難道用弱爆了的GPS定位嗎?這米級的定位精度不可能做到人臉和攝像頭的距離這樣的精度範圍。

手機只有雙攝像頭是可以做到的,因為雙攝像頭已經標定好距離和姿態,是剛性雙攝,可以獲得深度信息,這種方法是能做到深度測距,但普通手機不是都有雙攝像頭。


可以 但要平移滑動攝像頭 上面已經說的挺詳細了 推薦個代碼 前幾年ptam演算法 效果不錯 可對立體空間建模 還有在ar方面應用展示


可以。對同一景物用至少兩個角度各拍一張就可以。


推薦閱讀:

機器視覺怎樣開始學?halcon與c++還是c#搭配好?
機器視覺與嵌入式如何結合?
當前,在圖像處理領域,哪個方向比較火?或者比較好做?
GitHub 上有哪些比較好的計算機視覺/機器視覺的項目?
MXNet 的代碼要怎麼讀?

TAG:演算法 | 機器學習 | 模式識別 | 機器視覺 |