1. 程式人生 > >【原創】Structure from Motion (SfM)演算法測試---3D重建簡介

【原創】Structure from Motion (SfM)演算法測試---3D重建簡介

【原創】Structure from Motion (SfM)演算法測試—3D重建簡介

Author: chad
Mail: [email protected]

今天整理資料,突然發現之前公司調研攝像頭3D掃描方案時做的一個實驗小實驗,同時聯想到前段時間尼泊爾地震百度搞的一個尼泊爾古蹟3D重現專案,突然想整理一下,簡要說下工作原理。

開始之前先看一張概念圖,瞭解下SfM演算法是幹嘛的,如下:
這裡寫圖片描述

如上圖所示,SfM演算法的目標就是通過一堆照片重建3D模型。

我們當時的硬體方案是這麼設想的:
這裡寫圖片描述

由於我們當時非常關注3D重建精度,所以,當時簡單推算了下精度關係大致如下:
1.掃描精度與照片解析度,拍攝距離,對焦準確性,燈光系統有較大關係。
2.運算時間與照片數量成 n!/(n-m)!級數增長。
3.精度關係如下:
這裡寫圖片描述


4.經過演算法處理後的,由於計算誤差,2D->3D轉換誤差,導致實際精度會遠低於0.08。

基於鐳射的主動掃描方式,需要將鐳射在物體表面掃描一遍,所以掃描速度比較慢(結構光光柵投影測量技術速度較快),但是後期計算處理速度較快。

基於影象的三維重建作為當今熱門的虛擬現實和科學視覺化的基礎,它被廣泛應用於檢測和觀察中。一個完整的三維重建系統通常需要包含影象獲取、攝像機標定、特徵點提取、立體匹配、深度確定和後處理等6 大部分。相較於結構光光柵投影測量,該方法在相機標定、特徵點提取方面有2指數級運算量,整個過程非常緩慢。
一般來講,大尺度特徵含有較豐富的資訊,本身數目較少,易於得到快速匹配,但對它們的提取與描述相對複雜,定位精度也差;而小尺度特徵本身的定位精度高,表達描述簡單,但數目較多,所含資訊量卻較少,因而在匹配時需要採用較強的約束準則和匹配策略。

演算法模擬測試情況如下:
我的電腦情況如下:
這裡寫圖片描述
實驗過程如下:
1、大尺度圖片測試:共140張照片,運算時間4個小時,產生的中間檔案600M。
這裡寫圖片描述
這裡寫圖片描述
2.小尺度圖片測試:65張圖片,運算時間30分鐘,中間檔案350M。
這裡寫圖片描述

這裡寫圖片描述

;D 上面說的65張照片都是我用某米手機直接拍的。純手工拍攝,所以能生成這樣的效果已經非常不錯了。

通過上面的實驗可以發現,3D建模會自動剔除不變部分,比如底座。

原理簡要介紹下

先看圖:
這裡寫圖片描述

也就是首先找特徵點,然後根據特徵點找照片的運動方向,拍攝方向。這個演算法牛的地方就是你隨便拍攝一組照片,演算法能夠自動檢測到運動方向與拍照角度,自動照片排序。

再附一個澳大利亞團隊搞的很牛的3D掃描介紹:
這裡寫圖片描述


這裡寫圖片描述

20160401 附記:

近日有同學向我請教關於SfM演算法的問題,我這裡再推薦幾個網站,本部落格中SfM演算法程式來源於http://ccwu.me/vsfm/,演算法測試程式下載點這裡
這裡寫圖片描述