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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenCV三种立体匹配求视差图算法总结

發布時間:2025/7/25 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV三种立体匹配求视差图算法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FROM: http://blog.csdn.net/mailang2008/article/details/5873883


對OpenCV中涉及的三種立體匹配算法進行代碼及各自優缺點總結:

首先我們看一下BM算法:

該算法代碼:

[cpp]view plaincopy
  • 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的一種新算法:

    [cpp]view plaincopy
  • 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方法:

    [cpp]view plaincopy
  • 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三种立体匹配求视差图算法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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