Bundler 及 PMVS 常見問題&解決方法

Bundler是Noah Snavely開發的一套基於SfM原理、能夠利用無序圖片重建三維模型的系統。CMVS+PMVS是Yasutaka Furukawa博士寫的一套強大系統,能夠以Bundler的輸出作爲輸入,二者搭配使用,能夠重建出稠密的點雲模型。下面是我總結的這整套系統在實際編譯、運行中的常見問題,並給出相應解決方法,希望對大家有所幫助。


(注:本文Bundler在cygwin下編譯運行。


問題1.
問題描述:編譯時,在cygwin中執行make之後,bin目錄下並沒有生成bundler.exe, Bundle2PMVS.exe等可執行文件
分析解決:一般都是cygwin安裝不完全導致這個問題。只需要重新安裝cygwin,安裝到下圖所示界面時,將All後面的Default改爲Install即可。

cygwin下載地址(官網百度雲Cygwin離線包13.08.24.7z


問題2如下圖:


問題描述:無法找到相機CCD傳感器寬度信息。初次使用自己拍攝的照片興致勃勃測試程序效果的時候,一般都會遇到這個問題。而沒有CCD寬度信息,就無法計算點雲的三維座標,再繼續跑下去也是白搭。
解決方法:①先確定你的相機型號,然後到網上查找該相機的CCD參數。比如www.dpreview.com。需要注意的是,程序要求的CCD寬度並不是說只能用CCD相機,CMOS相機也是一樣的,CMOS感應器寬度就是所需的CCD寬度。
② 查到CCD/CMOS寬度信息後,在bin目錄下找到extract_focal.pl配置文件,使用notepad++之類的記事本程序打開,按照相應格式把你的相機傳感器寬度信息加進去。注意格式要嚴格按照規定:
"[Camera make] [Camera model]" => [Sensor width]
(即"[相機製造商] [相機型號]" => [傳感器寬度])。比如我們的相機是"NIKON CORPORATION NIKON D7100"      => 23.5
另,至於如何確定相機製造商Camera make和型號Camera model,可以把你拍攝的一張照片放到bin文件目錄中,打開cmd控制檯,通過jhead程序進行確認,如下圖,我的照片是myphoto.jpg:


完成上述設定之後,就解決了這個問題。原則上來說,使用手機拍照也可以,只要能夠找到傳感器寬度並添加到配置文件中。


問題3如下圖:


問題描述:提取特徵點時出現Ran out of memory的錯誤,內存不足。
分析解決:這是因爲你的照片尺寸太大了,建議安裝 美圖看看 修改圖片尺寸,一般設置長爲2000,保持寬度比即可。這時一般每幅圖可以找到2000左右個keypoints。另外美圖看看還能夠批量修改圖片名、圖片文件格式等,能夠節省不少功夫。

問題4如下圖:


問題描述:在提取特徵點時,無法找到 .pgm圖片文件。
分析解決:SIFT程序在提取特徵點時需要 .pgm格式的圖片,因此需要安裝軟件 ImageMagick 。裝好之後,bundler在進行特徵點提取時,就會自動調用該程序,將 .jpg圖片轉換爲 .pgm。

問題5如下圖:


問題描述:爲什麼按照要求到/result/pmvs目錄下,對prep_pmvs.sh文件中的 "BUNDLER_BIN_PATH"進行賦值之後,輸入上述命令運行卻出現如圖所示的錯誤?
分析解決:修改prep_pmvs.sh要以下幾點需要注意:
① 千萬不要使用Windows自帶的記事本編輯任何文本文件。原因是Microsoft開發記事本的團隊使用了一個非常弱智的行爲來保存UTF-8編碼的文件,他們自作聰明地在每個文件開頭添加了0xefbbbf(十六進制)的字符,你會遇到很多不可思議的問題,比如,網頁第一行可能會顯示一個“?”,明明正確的程序一編譯就報語法錯誤,等等,都是由記事本的弱智行爲帶來的。建議你下載Notepad++代替記事本,不但功能強大,而且免費!
② 比如我的修改後爲:BUNDLER_BIN_PATH=/cygdrive/e/bundle/bin,每個人放的位置不同需作相應調整。注意等於號後不留空格,使用cygwin運行程序的還要加上/cygwin/的前綴。

問題6如下圖:


問題描述:使用多幅照片,執行時卻只有寥寥幾幅有效,只得到很少的點。
分析解決:這是因爲拍攝的照片中,照片的差異過大,無法匹配。bundler,也就是SfM原理要求照片之間存在足夠大的重疊部分,每一個點最好至少在3幅照片中可見。因此在拍攝照片時,每轉過15°,至少拍攝一幅照片。另外,照片儘量拍好一些,要清晰明亮。

問題7. 運行正常,最終得到的模型卻質量很差。
分析解決:同問題6,都是照片質量有待提高。


以上是我總結的幾個問題,希望能幫到大家。大家若有其他問題,或針對上述問題有更好的解決方法,歡迎在下方留言,一起討論。

附:

1. Snavely的Github頁面也有不少提示信息,另外他也總結了一些常見問題,與本文互爲補充,大家可以參考借鑑。

2. Bundler安裝編譯步驟可參考我另一篇博文。



發佈了31 篇原創文章 · 獲贊 24 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章