2019年7月,國科大屎一般的研一終於TMD結束了。秋季學期選了王曉和袁亞湘的最優化,作爲工科狗被數學系虐成了渣渣,啃600頁的"Numerical Optimization"時感覺自己在修仙;到了春季學期,ok我想騰點時間在自己的科研上,於是選了好多研討課,結果論文報告、不少於10個的Projects,前前後後3個月感覺自己裏外不是人。這多虧了我神一般的選課技術。
OK回到正題!
大二時,我曾拙劣地復現過Structure from motion(鏈接),但是限於當時的水平,效果和性能都不咋滴。今年在修"計算機視覺"時,順便把SFM稀疏點雲重建、Patch based MVS的相關paper重新看了一下,覺得有把握做一個更好的版本。於是就有了這一篇博客。
這次的代碼寫的不敢說很好,主體是在大二時期寫的粗糙版本的基礎重寫的。但是畢竟又經過了多年的積澱,編碼對自己來說還是挺滿意的。本次仍採用C++開發,基於OpenGL和OpenCV,基本模塊如下:
- SFM:獲取稀疏點雲。完善了之前寫的不好的bundle adjustment,相對來講提高了SFM模塊的效果。
- Patch based MVS:獲取稠密點雲。由於採用SFM的稀疏點雲作爲input,省了很多事情。基本流程是先從稀疏匹配中獲取Patch,然後做擴展。但是我實現的效果沒有完全達到預期,初步猜測的原因是:過多地刪除了不符合光照約束的區域。
- Poisson三維重建:從點雲獲取網格模型。這裏採用的基本的Poisson模塊,對於做Graphics的人來說應該都非常熟悉
具體推導:由於打字比較麻煩,在夏季學期結束後我會按照之前講解SVM的流程(svm鏈接),錄製推導和代碼說明的視頻放到我的Bilibili上。
參考文獻:
[1] Furukawa Y . Accurate, dense, and robust multiview stereopsis[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 32.
[2] Kazhdan M, Bolitho M, Hoppe H. Poisson surface reconstruction[C]// Eurographics Symposium on Geometry Processing. 2006.
這裏僅貼一下實驗結果: