1. 程式人生 > >初次嘗試使用VisualSFM記錄

初次嘗試使用VisualSFM記錄

    對於SFM一直覺得高大上又神祕,一年前粗略的瞭解過一下,今年有時間嘗試深入瞭解SFM,對於初學者來說,VisualSFM真的時非常好的感受SFM的免費軟體,於是通過其他部落格的指導(沒去看官方的英文版,容易犯困),做了一個3D模型出來,感覺還挺好玩,記錄一下。

    實際上,VisualSFM只做了一部分工作,優化是用MeshLab做的,所以分兩個環節:

     1.VisualSFM做"影象匹配"、“SFM”(CMVS)、"BA"

    官網下載的UI不帶cmvs,所以從別的部落格

下載了配好cmvs的拿來直接用,簡單麻利快,一天就見效;

                                                            

     1.1 匯入影象

       滑鼠單擊下面的按鈕

選擇需要匯入的影象

影象匯入完成

1.2 影象配準

滑鼠單擊下面的按鈕“Compute Missing Matches”

開始配準了...

(注意:高解析度的影象,這裡預設3200,具體請參考這裡:https://blog.csdn.net/kiara_wei/article/details/68485062

配準完事了,Log Window可見

1.3 稀疏點雲

配準完了之後點選下面的按鈕:

開始生成點雲了,很快,而且有顯示:

 

 

1.4 加密點雲

按下面的按鈕:

開始之後,命名,然後就要等了,稍微有點慢(87秒/73張圖):

完成了!

 

2. MeshLab 該登場了

2.1 open project

    開啟VisualSFM生成的 “.out”,和“list.txt”

 

稍等片刻:

2.2 顯示相機位置

Render->ShowCamera

然後設定尺度:(參考:https://blog.csdn.net/moneyhoney123/article/details/78454837

(注:其實這一步可以不要,但是這一步能直觀的給你展示一個SFM的具體的樣子,對於新手還是很有必要的)

2.3 載入稠密點雲

注意,就是用VisualSFM生成稠密點雲時咱命名的哪個檔名,別選錯了。

 

2.4 清除雜點

就是把那些離散的很遠的,點都去掉,把不是我們想要的目標的點去掉,還有就是明顯錯誤的點(例如:不在本來的平面上)都去掉。(注意:這時我們右邊的圖層中應該選中的是剛開啟的稠密點雲.ply,而不是稀疏點雲 model)

按下面的這個按鈕:

選擇需要清除的點:

然後點下面這個按鈕刪除:

重複上面的操作:選擇->刪除->選擇->刪除->選擇->刪除........en,乾淨、整齊了很多

2.4 網格化(參考:https://blog.csdn.net/moneyhoney123/article/details/78454837

Filter -> Point Set -> Surface Reconstruction:Poisson

en,我電腦垃圾,所以有點慢:(關於這裡的引數設定,可以參考上面的參考部落格,我不想深究,就想早點看到結果)

 

上面的曲面明顯多了很多,下面就把多餘的刪除:

Filter-> Slection -> Slect Face With edges longer than...

然後按下面這兩個按鈕,刪除:

然後,儲存整個工程和檔案;

2.5 修復流形邊

Filter-> Selction ->Slect non Manifold Edges

執行完成之後,再點一次下面的兩個按鈕,刪除之:

2.6 引數化(Parameterization)

Filter–> Texture –> Parameterization from registered rasters

Apply!

2.7 紋理投影

Filter–> Texture –> Project active rasters color to current mesh, filling thetexture

執行完成之後,得把稠密點雲和稀疏點雲都關閉(隱藏),就能看出建立好的模型了:

2.8 完成了,就可匯出了,不匯出下次可就看不到了;

 

-----------------------------------------------------------------------------------------------------------------------------

好了,完事了,總結一下:

圖越多,效果越好哈,真的是;(這是一句廢話)

2.4柵格化的時候,刪除多餘的面,如果手動刪除的話也是可行的,這樣滑鼠的表面就不會被刪除了,最終的結果就不會鏤空那麼多了。