日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于MVS的三维重建算法学习笔记(一)— MVS三维重建概述与OpenMVS开源框架配置

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于MVS的三维重建算法学习笔记(一)— MVS三维重建概述与OpenMVS开源框架配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于MVS的三維重建算法學習筆記(一)— MVS三維重建概述與OpenMVS開源框架配置

  • 聲明
  • 1. MVS(Multi-view stereo)概述
    • 稀疏重建與稠密重建的區別
    • 稀疏重建——SFM(Structure from Motion)算法
    • 稠密重建——MVS(Multi-view stereo)方法
      • 圖像一致性
      • 立體匹配
  • 2. OpenMVS開源框架
    • 介紹
    • OpenMVS安裝
    • OpenMVS測試
      • Meshlab下載
      • 測試數據集下載
      • 1. 稠密重建
      • 2. 曲面重建
      • 3. 網格優化
      • 4. 紋理貼圖
  • 參考文獻和資料

聲明

本人書寫本系列博客目的是為了記錄我學習三維重建領域相關知識的過程和心得,不涉及任何商業意圖,歡迎互相交流,批評指正。

1. MVS(Multi-view stereo)概述

MVS(多視點立體視覺,Multi-view stereo)能夠單獨從圖像中構造出高度細節化的3D模型,采集一個龐大的圖像數據集,用其來構建出一個用來解析圖像的3D幾何模型。MVS算法的流程圖如下所示,輸入為一組圖像及其相應的攝像機參數:

  • 采集圖片;
  • 計算每個圖片的相機參數;
  • 從圖像集和相應的攝像機參數中重建場景的三維幾何;
  • 還原場景的構成材料;
  • 稀疏重建與稠密重建的區別

    稀疏重建通常是重建一些圖像特征點的三維坐標,稀疏重建主要用于定位。稠密重建又稱三維重建,是對整個圖像或圖像中絕大部分像素進行重建。二者分別對應著MVS三維重建方法中的第二步和第三步:稀疏重建一般使用SFM算法,得到每張圖片的相機參數;稠密重建則對應著MVS中最核心的部分,一般所說的MVS算法指的就是稠密重建。

    稀疏重建——SFM(Structure from Motion)算法

    MVS算法的性能只取決于輸入圖像的質量和攝像機參數,所以MVS的成功很大程度上歸功于底層的用來計算攝像機參數的SFM算法。SFM算法以一組圖像作為輸入,生成兩個信息:每幅圖像的攝像機參數和圖像中可見的一組三維點,這些點通常被編碼為軌跡。 軌跡被定義為重建的3D點的3D坐標和輸入圖像子集中對應的2D坐標的列表,算法流程如下圖所示:

    稠密重建——MVS(Multi-view stereo)方法

    稠密重建是假設相機參數已知的情況下,尋找空間中具有光度一致性(Photo-consistency)的點,對場景進行立體匹配的過程

    圖像一致性

    假設對于下面兩幅圖像和這樣一個三維場景,若選擇的三維點位于物體的表面上,那么這個三位點根據相機的內外參投影到圖像上,以投影點為中心取出兩個方形的小patch,那么它們所包含的場景應該是比較類似的;反之,如果這個點在物體外,兩個小patch相差是比較大的,若能度量兩個patch之間的一致性,就可以衡量這個三維點是否位于物體表面或者位于這個物體表面的概率大小。

    立體匹配

    立體匹配這一概念貫穿整個MVS方法,其目標就是從不同視角的圖像中找到匹配的對應點,從而從二維圖像中恢復出三維信息,即通過校正后的一對圖像獲取到視差圖的過程,叫做立體匹配;而通過匹配后得到的視差圖就能夠轉化為深度圖,從而從深度圖中獲取圖像的三維信息,完成稠密重建的任務。

    2. OpenMVS開源框架

    介紹

    OpenMVS是一個比較經典的MVS(Multi-View Stereo)開源庫,集成三維重建整個完整的技術方案(相機模型,多視立體幾何,稠密重建,曲面重建,點云融合,紋理貼圖)。在每個重建環節使用的都是非常經典有效的算法,例如包含目前三維重建非常經典有效的深度圖重建算法SGM,PatchMatch。綜合重建效果和性能,目前MVS是所有開源庫中最好的。該框架還涉及Graph Cut、MRF、泊松融合等比較經典的通用算法原理與代碼實現,以及常見的點云后處理和網格后處理(去噪、細分,去非流形,補洞)等圖形學相關算法。
    綜合來說,OpenMVS非常適合入門系統學習和二次開發。代碼框架非常完善,代碼實現清晰且規范,可快速提高項目實戰經驗。學習三維重建必備。

    OpenMVS安裝

  • Ubuntu 18.04+CMake+git+C/C++編譯器(gcc等);
  • 替換鏡像,加快下載速度,具體參考教程;
  • 準備一個空閑的機器安裝以下任務:
  • sudo apt-get update -qq && sudo apt-get install -qq sudo apt-get -y install git cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa- dev
  • 安裝Eigen(version 3.2,Linux下只能是這個版本):
  • git clone https://gitlab.com/libeigen/eigen.git --branch 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(version 2.4 or higher):
  • sudo apt-get -y install libopencv-dev
  • 安裝CGAL:
  • sudo apt-get -y install libcgal-dev libcgal-qt5-dev
  • 安裝VCGLib(注意要安裝2020年的版本,參考教程):
  • git clone https://github.com/cdcseacave/VCG.git vcglib
  • 安裝OpenMVS:
  • git clone https://github.com/electech6/openMVS_comments.git openMVS mkdir openMVS_build && cd openMVS_build cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="/path to vcglib/vcglib"

    其中/path to vcglib/要改為自己系統下的vcglib的路徑;
    10. 生成OpenMVS庫文件(在編譯的過程中可能會出現一些warning,不用管,這一步會有許多種類的報錯,具體的修改方案參考教程):

    sudo make -j2 && sudo make install

    OpenMVS測試

    OpenMVS可執行文件生成在openMVS/openMVS_build/bin/里面,(-w 設置的是數據的路徑,-i 是輸入的文件名,-o是輸出的文件名),執行命令時在openMVS_build文件夾中打開終端

    Meshlab下載

    參考教程

    測試數據集下載

    鏈接:https://pan.baidu.com/s/13T04aKJ2OB6_RX7IMMGhpg
    提取碼:oxkp
    下載完的數據如下所示:

    1. 稠密重建

    ./bin/DensifyPointCloud -w /path to data/data -i scene.mvs -o test_dense.mvs

    其中/path to data/需要改為data在系統中的路徑,運行后得到log和test_dense.ply:

    2. 曲面重建

    ./bin/ReconstructMesh -w /path to data/data -i test_dense.mvs -o test_mesh.mvs

    得到log和test_mesh.ply:

    3. 網格優化

    ./bin/RefineMesh -w /path to data/data -i test_mesh.mvs -o test_refinemesh.mvs

    得到log和test_refinemesh.ply:

    4. 紋理貼圖

    ./bin/TextureMesh -w /path to data/data -i test_refinemesh.mvs -o test_texture.mvs

    得到log和test_texture.ply以及test_texture.png:


    參考文獻和資料

    [1]Multi-View Stereo: A Tutorial
    [2]三維重建筆記——稠密重建
    [3]MVS——multi view system從多視圖的密集重建(1)
    [4]初識立體匹配

    總結

    以上是生活随笔為你收集整理的基于MVS的三维重建算法学习笔记(一)— MVS三维重建概述与OpenMVS开源框架配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。