1. 程式人生 > >OpenMVG與OpenMVS安裝配置、簡單使用

OpenMVG與OpenMVS安裝配置、簡單使用

關於OpenMVG與OpenMVS之間的關係可見下圖。關於目前常用的三維重建系統的對比見網址:

可見OpenMVG與OpenMVS搭配使用,可以實現一個完美的三維重建流程。

下面開始講解兩者的配置與簡單使用:

1. 編譯 openMVG:

git clone --recursive https://github.com/openMVG/openMVG.git

##apt 安裝所需依賴:

sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-
dev libxi-dev libxrandr-dev

##(可選)如果你想以圖形化介面的方式看 svg 日誌的話,安裝 Graphviz:

sudo apt-get install graphviz

##編譯 openMVG:

cd path/to/openMVG
mkdir build
cd build

##如果想順便編譯例程和單元測試模組的話

cmake -DCMAKE_BUILD_TYPE=RELEASE -DOpenMVG_BUILD_TESTS=ON -
DOpenMVG_BUILD_EXAMPLES=ON . ../src/

##否則這樣:

cmake -DCMAKE_BUILD_TYPE=RELEASE . ../src/

##編譯:

make -j12

##跑一下測試例程看有沒有裝好:

make test

##報的都是好訊息的話就說明裝好了。 ##然後直接安裝,這樣以後使用起來也非常方便。

sudo make install

網頁裡還有如果你在 camke 裡使用 openMVG 的話的用法

2. 編譯 openMVS:

##安裝依賴項:

sudo apt-get -y install build-essential git mercurial cmake libpng-dev libjpeg-
dev libtiff-dev libglu1-mesa-dev libxmu-dev libxi-dev

##安裝 Eigen 庫:(這個之前裝過的話就可以直接跳過了。之前我在裝ORB-SLAM的 時候裝過一次了。

hg clone https://bitbucket.org/eigen/eigen #3.2
mkdir eigen_build && cd eigen_build
cmake . ../eigen
make && sudo make install
cd ..##安裝 Boost 庫:
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev
libboost-system-dev libboost-serialization-dev

##安裝 opencv(opencv 之前通過別的常見辦法裝過的也都不用裝了,個人感覺 apt 安裝不 是很好)

sudo apt-get -y install libopencv-dev

##安裝 CGAL

sudo apt-get -y install libcgal-dev libcgal-qt5-dev

##安裝 VCGLib:

git clone https://github.com/cdcseacave/VCG.git vcglib

##安裝 Ceres:

sudo apt-get -y install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver ceres-solver
cd ceres-solver
mkdir build && cd build
cmake . ../ -DMINIGLOG=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j12 && sudo make install
cd ..

##(可選的)安裝 GLFW3

sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev

##編譯 openMVS:

git clone https://github.com/cdcseacave/openMVS.git openMVS
cd openMVS
mkdir build && cd build
cmake . ../ -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="path/to/vcglib"

#這個你去留意一下找一下 vcglib 的路徑即可 ##如果你想把 openMVS 當做一個共享的庫的話,在 camke 裡開啟選項:

-DBUILD_SHARED_LIBS=ON

##編譯並安裝:

make -j12 && sudo make install

這一步弄完之後,如果在用 DensifyPointCloud、 TextureMesh 這些終端工具時提示找不到 命令,那就直接在 path/to/openMVS/build/bin 裡面找到這些二進位制檔案然後複製到系統裡 的/usr/bin 裡面就可以了。

3.簡單使用:

在安裝配置好 openMVG 和 openMVS 後,突然對建圖無從下手,不知道從哪裡開始,, 然後仔細瀏覽了一遍官網文件,總結出了建圖的辦法。➢ 第一步:cd 到 path/to/openMVG/build/software/SfM 裡,裡面有兩個指令碼,分別是 SfM_SequentialPipeline.py 和 SfM_GlobalPipeline.py,兩種不同的特徵點匹配方式吧 (感覺),前面一種是按次序的,後面是按全域性的。使用方法

python xxx.py path/to/image path/to/output_dir

見網頁 https://openmvg.readthedocs.io/en/latest/software/SfM/SfM/ 如果所選擇的影象的質量比較好的話可以成功執行完,這個時候在 output_dir 裡的 reconstruction_sequential 或者 reconstruction_global 目錄下找到 sfm_data.bin 檔案。 ➢ 第二步:可以再 output_dir 和 images 同級目錄下建一個空資料夾,把上一步找到的 sfm_data.bin 檔案拷貝進去,在這裡,用 openMVG_main_openMVG2openMVS 終端 工具將 openMVG 生成的 sfm_data.bin 轉換成.mvs 檔案格式,在 sfm_data.bin 目錄下 輸入具體指令:

openMVG_main_openMVG2openMVS -i sfm_data.bin -o scene.mvs

即可得到 scene.mvs 這種可以在終端使用 Viewer 檢視的檔案。 (官方給的 usage:

openMVG_main_openMVG2openMVS -i PATH/sfm_data.(json/xml/bin) -d OUTPUT_PATH -o OUTPUT_PATH/Scene

) 這個時候就是建立的稀疏圖。可以在終端使用 Viewer 進行檢視: Viewer “把想看的.mvs 檔案拖進來就 OK 了” ➢ 第三步:運用 openMVS 的一系列終端工具把最初的這個 sence.mvs 這個稀疏圖最終 轉換成帶紋理的稠密圖: 參考網頁:https://github.com/cdcseacave/openMVS/wiki/Usage #以下命令全部都在含 sence.mvs 的目錄下執行: ⚫ 終端工具 DensifyPointCloud 建立稠密圖:

DensifyPointCloud sence.mvs

這時會生成 scene_dense.mvs,這就是生成的稠密圖,可以通過 Viewer 進行檢視。 ⚫ 2、終端工具 ReconstructMesh 建立粗網格:

ReconstructMesh scene_dense.mvs

這時會生 scene_dense_mesh.mvs,這個是生成的帶粗紋理的。可通過 Viewer 檢視。 ⚫ 3、終端工具 RefineMesh 建立精緻網格:(可選的,這步可以跳過)

RefineMesh scene_mesh.mvs

⚫4、終端工具 TextureMesh 混合網格建立紋理:

TextureMesh scene_dense_mesh.mvs

這時候生成最終的成品,可以通過 Viewer 進行檢視,效果比較好的話看起來會很不錯的, 但效果不好那就重新去挑選圖片了2333