Structure From Motion

Structure from motion 簡介

1.SFM介紹
2.SFM整體流程
3.特徵點提取
4.特徵點匹配
5.初始像對 
6.3D重建
7.bundle adjustment
8.SFM 工具介紹




1.SFM介紹
SFM為透過相機的移動來確定目標的空間和幾何關係,是一種3D重建常見的方法,與Kinect這種有3D攝影機最大的不同:
只需要普通的RGB相機即可,成本較低
較不受環境約束(地形、陽光)

但SFM背後需要複雜的理論和計算,再精確度和速度上都還有待提升。

2.SFM整體流程

(圖源:https://blog.csdn.net/qq_20791919/article/details/74936438)

(圖源:https://blog.csdn.net/Mahabharata_/article/details/70799695)


3.特徵點提取
為了要進行影像的匹配,需要在影像中選擇具有代表性的區域,例如:影像中的角點、邊緣等,容易識別的區塊,尤其是角點的辨識度最高
常使用的特徵提取方法,且open有提供函式庫
    -SIFT

    -SURF

4.特徵點匹配
-兩個影像之間進行SIFT特徵點進行匹配
    -KDTree對最近的特徵點進行匹配
-建立匹配系統後,生成track列表(同名點)
    -如果一個track包含同個影像多次,表示此匹配關係有誤,          因為同個影像的多個特徵點都匹配到同個點

    -如果track少應該剔除,通常track為2,視為資訊太少,3D          重建容易產生錯誤

5.初始像對 
-計算內點
    -採用RANSC 計算單應矩陣
    -滿足單應矩陣的匹配點稱為內點
    -內點佔的比例越高,低視差現象越明顯
-選擇初始像對
    -匹配特徵點要足夠多
    -選擇內點數量少,但又不少於100個的影像

      (防止兩個影像的視角過於接近)

6. 3D重建
-取得相機參數
    -外參
        -計算本征矩陣,進一步求出R、T矩陣
    -內參
        -焦距,光心位置
-利用以上的R、T矩陣與影像的匹配關係還原三維座標
-加入更多影像
    -不斷加入新的影像並計算R、T矩陣,然後繼續還原出更多        的3 維點

    -持續透過bundle adjustment優化、merge 3D點雲

7.bundle adjustment
大部分的SfM方法依靠bundle adjustment來做優化
    -投射出來通常無法相交,bundle adjustment幫助merge兩個          3D點雲

    -從初始的兩張影像就開始第一次的bundle adjustmen 



8.SFM 工具介紹
VisualSFM : A Visual Structure from Motion System
由Changchang Wu製作
網站:http://ccwu.me/vsfm/

影片:https://www.youtube.com/watch?v=5ceiO d8Yx3g
測試影像:https://www.youtube.com/watch?v=ye-C-OOFsX8

SFM 工具操作-開啟影像



SFM 工具操作-特徵匹配


SFM 工具操作-3D 重建


結果



reference
[1]https://blog.csdn.net/KinboSong/article/details/72587204
[2]https://github.com/opencv/opencv_contrib/tree/master/modules/sfm
[3]https://blog.csdn.net/zkl99999/article/details/46467277
[4]https://blog.csdn.net/sway_2012/article/details/8036863
[5]https://blog.csdn.net/GH_HOME/article/details/73870310
[6]https://blog.csdn.net/u014636245/article/details/77527627
[7]http://www.echojb.com/qt/2017/04/26/363876.html
[8]http://www.csprs.org.tw/Temp/4_101103_129-137.pdf
[9]https://blog.csdn.net/zhazhiqiang/article/details/42740429
[10]https://blog.csdn.net/Mahabharata_/article/details/70799695
[11]https://blog.csdn.net/qq_26499769/article/details/51817254
[12]https://blog.csdn.net/BrookIcv/article/details/78858199
[13]https://blog.csdn.net/zb1165048017/article/details/71104241
[14]https://blog.csdn.net/qingcaichongchong/article/details/62424661
[15]https://blog.csdn.net/heyijia0327/article/details/53782094
[16]https://blog.csdn.net/heyijia0327/article/details/53782094
[17]https://blog.csdn.net/qq_20791919/article/details/74936438
[18]https://blog.csdn.net/qq_33826977/article/details/79834735
[19]http://www.cs.cornell.edu/projects/p2f/
[20]https://blog.csdn.net/linczone/article/details/46237197
[21]https://blog.csdn.net/u012989207/article/details/45032469
[22]http://francemapping.free.fr/Portfolio/Prog3D/CMVS.html



留言

這個網誌中的熱門文章

Bundle Adjustment 光束平差法