OpenCV三種立體匹配求視差圖演算法總結
【原文:http://blog.csdn.net/mailang2008/article/details/5873883】
對OpenCV中涉及的三種立體匹配演算法進行程式碼及各自優缺點總結:
首先我們看一下BM演算法:
該演算法程式碼:
- CvStereoBMState *BMState = cvCreateStereoBMState();
- int SADWindowSize=15;
- BMState->SADWindowSize = SADWindowSize > 0 ? SADWindowSize : 9;
- BMState->minDisparity = 0;
- BMState->numberOfDisparities = 32;
- BMState->textureThreshold = 10;
- BMState->uniquenessRatio = 15;
- BMState->speckleWindowSize = 100;
- BMState->speckleRange = 32;
- BMState->disp12MaxDiff = 1;
- cvFindStereoCorrespondenceBM( left, right, left_disp_,BMState);
- cvNormalize( left_disp_, left_vdisp, 0, 256, CV_MINMAX );
其中minDisparity是控制匹配搜尋的第一個引數,代表了匹配搜蘇從哪裡開始,numberOfDisparities表示最大搜尋視差數uniquenessRatio表示匹配功能函式,這三個引數比較重要,可以根據實驗給予引數值。
該方法速度最快,一副320*240的灰度圖匹配時間為31ms,視差圖如下。
第二種方法是SGBM方法這是OpenCV的一種新演算法:
- cv::StereoSGBM sgbm;
- sgbm.preFilterCap = 63;
- int SADWindowSize=11;
- int cn = 1;
- sgbm.SADWindowSize = SADWindowSize > 0 ? SADWindowSize : 3;
- sgbm.P1 = 4*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;
- sgbm.P2 = 32*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;
- sgbm.minDisparity = 0;
- sgbm.numberOfDisparities = 32;
- sgbm.uniquenessRatio = 10;
- sgbm.speckleWindowSize = 100;
- sgbm.speckleRange = 32;
- sgbm.disp12MaxDiff = 1;
- sgbm(left , right , left_disp_);
- sgbm(right, left , right_disp_);
各引數設定如BM方法,速度比較快,320*240的灰度圖匹配時間為78ms,視差效果如下圖。
第三種為GC方法:
- CvStereoGCState* state = cvCreateStereoGCState( 16, 2 );
- left_disp_ =cvCreateMat( left->height,left->width, CV_32F );
- right_disp_ =cvCreateMat( right->height,right->width,CV_32F );
- cvFindStereoCorrespondenceGC( left, right, left_disp_, right_disp_, state, 0 );
- cvReleaseStereoGCState( &state );
該方法速度超慢,但效果超好。
各方法理論可以參考文獻。
相關文章
- 雙目測距與三維重建的OpenCV實現問題集錦(三)立體匹配與視差計算OpenCV
- OpenCV學習筆記(18)雙目測距與三維重建的OpenCV實現問題集錦(三)立體匹配與視差計算OpenCV筆記
- Atitit opencv模板匹配attilax總結OpenCV
- 圖論(三)--各種基礎圖演算法總結圖論演算法
- 利用Matlab標定引數在OpenCV中進行立體匹配MatlabOpenCV
- 光度立體法總結
- 求二部圖最大匹配的匈牙利演算法演算法
- halcon——缺陷檢測常用方法總結(模板匹配(定位)+差分)
- 三維視覺論文閱讀:StereoNet2018雙目立體匹配視覺
- OpenCV翻譯專案總結三——對OpenCV效能、查詢表等分析OpenCV
- OpenCV翻譯總結OpenCV
- React | ref三種使用方式總結React
- [前端 · 面試 ]HTTP 總結(三)—— HTTP 請求方法前端面試HTTP
- Tarjan演算法求強連通分量總結演算法
- UML 之 各種檢視簡介 & UML類圖幾種關係的總結
- 圖的演算法的總結演算法
- Halcon 光度立體法 例程學習總結
- 【VB.NET視訊總結(三)】
- 《三體2:黑暗森林》總結
- 《三體3:死神永生》總結
- 幾種常見排序演算法總結排序演算法
- 字串匹配演算法(三)-KMP演算法字串匹配演算法KMP
- opencv學習(三)——繪圖功能OpenCV繪圖
- Python種匯入模組的三種方式總結Python
- halcon——缺陷檢測常用方法總結(光度立體)
- OpenCV Core functionality翻譯總結OpenCVFunction
- Halcon6:三維重建和光度立體視覺視覺
- Tomcat 7 的一次請求分析(三)請求與容器中具體元件的匹配Tomcat元件
- Http請求get與post請求方式的各種相關面試總結HTTP面試
- react中三種函式呼叫方法總結React函式
- 幾種常見的排序演算法總結排序演算法
- 5種排序演算法效能比較總結排序演算法
- 圖論-二分圖匹配匈牙利演算法圖論演算法
- 三年磨一劍,高德地圖體驗優化總結地圖優化
- 請求方法總結
- 地圖匹配演算法實踐地圖演算法
- 二分圖的最大匹配、完美匹配和匈牙利演算法演算法
- UML類圖幾種關係的總結