OpenCV開發之五 立體匹配

2021-08-08 04:25:06 字數 2016 閱讀 3657

方法一:

關鍵看匹配函式,不同版本對應的函式可能發生變化:

#include "cv.h"

#include "cvaux.h"

#include "cxcore.h"

#include "highgui.h"

//reference: opencv1.1 cvref.htm

//by gong peiliang in sia, cas;

//11-11 2017

int main( int argc, char** argv)

方法二:

//立體匹配

mat left_disp_;

mat left_vdisp;

mat right_disp_;

left_disp_ = mat::zeros(srcimage1.rows, srcimage1.cols, cv_32f);

right_disp_ = mat::zeros(srcimage1.rows, srcimage1.cols, cv_32f);

left_vdisp = mat::zeros(srcimage1.rows, srcimage1.cols, cv_8u);

// 方法二

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(&(iplimage)srcimage1, &(iplimage)srcimage2, &(iplimage)left_disp_, bmstate);

cvnormalize(&(iplimage)left_disp_, &(iplimage)left_vdisp, 0, 255, cv_minmax);

方法三:

// 方法三

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(srcimage1, srcimage2, left_disp_);

sgbm(srcimage2, srcimage1, right_disp_);

經測試,三種方法在時間上和匹配效果上進行對比。

立體匹配 立體匹配過程

立體匹配就4個步驟 匹配代價計算,代價聚合,計算視差,視差精化 匹配代價計算 一般是通過計算左右兩圖對應畫素3個通道的灰度值差來決定匹配代價的,常用的就是基於畫素點匹配代價計算,一般有ad,sd,tad什麼的,基於區域的匹配代價計算一般有sad,ssd,stad之類的。匹配代價計算會生成乙個disp...

雙目立體匹配

公式 其中資料項描述了匹配程度,平滑項體現了定義場景的約束,c是匹配代價 或稱penalty p是不同兩畫素p和q視差的函式,一般稱之為平滑項 考慮到能量優化問題在一維空間的複雜度是多項式級的,因此一些研究試圖做一些近似來降低演算法的複雜度。例如,半全域性演算法 sgm 就利用了這一特性將二維問題簡...

立體匹配演算法實現之 AdaptWeight

我的主要研究方向是立體匹配 stereo matching 是計算機視覺 computer vision 下的乙個研究熱點。研究匹配有一年多了,對這方面 特別是區域性演算法 比較了解,以後會陸續發布我已經實現的經典演算法以及我自己設計的演算法。深知在孤立無援時乙個人探索有多麼困苦,網路之大,說不定就...