1. 程式人生 > >雙目三維重建—基於特徵點匹配的被動式三維重建(OpenCV+OpenGL)

雙目三維重建—基於特徵點匹配的被動式三維重建(OpenCV+OpenGL)

首先我們先來看一下三維重建的效果圖:

本博文參考了該博主的的核心程式碼,並針對該博主博文中宣告的一些BUG進行了修正:

本文主要從如何配置環境方面進行介紹,後期會更新基於攝像頭實際抓圖的三維重建

相機抓取的相片原圖:

首先是本文的執行環境:Window 7 x64+OpenCV 2.4.10+VS 2013+OpenGL(GLUT)

首先你需要自行配置好OpenCV環境,這裡就不再贅述了

不同之處在於我們採用的是2.4.10的OpenCV,匯入附加依賴項如下(注意,OpenCV2.49也同樣可以,只是需要將所有涉及到OpenCV 249的改成2410):

opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
opencv_nonfree2410.lib
opencv_objdetect2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_videostab2410.lib

 如果你的計算機配置完成OpenCV後出現如下提示:

 請在系統變數下新增path路徑,並重啟後即可生效:

如果提示缺少xxxx.LIB檔案 ,大概率是opencv路徑配置錯誤,請仔細檢查路徑並重新配置即可。

到這裡就完成了OpenCV的基本配置,接下來進行OpenGl的配置,這裡我們選擇的是入門級的GLUT庫,這裡我們進行詳細的介紹,首先我們要下載GLUT庫:GLUT庫(注:原始碼包中已包含該檔案,無需重複下載)

解壓庫檔案後,我們發現一共有五個檔案,分別是:

  • glut.dll 動態連結庫
  • glut.h 標頭檔案
  • glut.lib 庫檔案
  • glut32.dll 動態連結庫
  • glut32.lib 庫檔案

Step1:我們把glut.h檔案放到VS安裝目錄下的GL資料夾中,以博主的預設安裝路徑,應該放到:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\GL

注:如果沒有GL資料夾請新建一個

Step2:將得到的glut.lib和glut32.lib複製到vs2013的lib資料夾下:vs2013\VC\lib,以博主的預設安裝路徑,應該放到:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib

Step3:將glut.dll,glut32.dll複製到到作業系統目錄下面的C:\Windows\SysWOW64或C:\Windows\system32資料夾內,以博主的預設安裝路徑,應該放到: 

C:\Windows\SysWOW64

 好了,到這裡所有的配置就完成了,點選VS執行即可實現基本功能了:

 這裡,程式中提供了兩種重建方法,一種是基於特徵點的,一種是基於稠密的,可以在程式中進行修改

將下面的語句修改成對應模式即可切換演算法:

Algorithm g_algo = FEATURE_PT;  //基於特徵點
Algorithm g_algo = DENSE;       //稠密

其中稠密匹配方式速度快,但是通用性及重建效果不如基於特徵點的匹配(尤其是深度變化較複雜的圖片)