【原創】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建模會自動剔除不變部分,比如底座。

原理簡要介紹下

先看圖:
這裏寫圖片描述

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

最後,關於SfM算法的介紹再推薦一個鏈接,對於瞭解下SfM算法很有幫助:
《第四章 使用OpenCV探測來至運動的結構——Chapter 4:Exploring Structure from Motion Using OpenCV》 —這個寫的非常好,看懂你就入門了。

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

http://www.mopintu.com/article-1235-1.html

20160401 附記:

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

其他推薦網站如下:
http://users.ics.forth.gr/~lourakis/sparseLM/index.html#download
https://code.google.com/archive/p/libmv/downloads

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