模式匹配。。。openCV

2021-05-23 21:52:46 字數 2195 閱讀 4411

參考http://www.cnblogs.com/xrwang/archive/2010/02/05/matchtemplate.html

和"learning opencv"

模板匹配的工作方式

模板匹配的工作方式跟直方圖的反向投影基本一樣,大致過程是這樣的:通過在輸入影象上滑**像塊對實際的影象塊和輸入影象進行匹配。

假設我們有一張100x100的輸入影象,有一張10x10的模板影象,查詢的過程是這樣的:

(1)從輸入影象的左上角(0,0)開始,切割一塊(0,0)至(10,10)的臨時影象;

(2)用臨時影象和模板影象進行對比,對比結果記為c;

(3)對比結果c,就是結果影象(0,0)處的畫素值;

(4)切割輸入影象從(0,1)至(10,11)的臨時影象,對比,並記錄到結果影象;

(5)重複(1)~(4)步直到輸入影象的右下角。

大家可以看到,直方圖反向投影對比的是直方圖,而模板匹配對比的是影象的畫素值;模板匹配比直方圖反向投影速度要快一些,但是我個人認為直方圖反向投影的魯棒性會更好。

模板匹配的匹配方式

在opencv和emgucv中支援以下6種對比方式:

cv_tm_sqdiff 平方差匹配法:該方法採用平方差來進行匹配;最好的匹配值為0;匹配越差,匹配值越大。

cv_tm_ccorr 相關匹配法:該方法採用乘法操作;數值越大表明匹配程度越好。

cv_tm_ccoeff 相關係數匹配法:1表示完美的匹配;-1表示最差的匹配。

cv_tm_sqdiff_normed 歸一化平方差匹配法

cv_tm_ccorr_normed 歸一化相關匹配法

cv_tm_ccoeff_normed 歸一化相關係數匹配法

[code]#include

#include

#include

#include

int main( int argc, char** argv )

//read in the template to be used for matching:

if((templ=cvloadimage(argv[2], 1))== 0)

//allocate output images:

int iwidth = src->width - templ->width + 1;

int iheight = src->height - templ->height + 1;

for(i=0; i<6; ++i)

//do the matching of the template with the image:

for(i=0; i<6; ++i)

//display

cvnamedwindow( "template", 0 );

cvshowimage(   "template", templ );

cvnamedwindow( "image", 0 );

cvshowimage(   "image", src );

cvshowimage(   "sqdiff", ftmp[0] );

cvnamedwindow( "sqdiff_normed", 0 );

cvshowimage(   "sqdiff_normed", ftmp[1] );

cvnamedwindow( "ccorr", 0 );

cvshowimage(   "ccorr", ftmp[2] );

cvnamedwindow( "ccorr_normed", 0 );

cvshowimage(   "ccorr_normed", ftmp[3] );

cvnamedwindow( "ccoeff", 0 );

cvshowimage(   "ccoeff", ftmp[4] );

cvnamedwindow( "ccoeff_normed", 0 );

cvshowimage(   "ccoeff_normed", ftmp[5] );

//let user view results:

cvwaitkey(0);

}else

}[/code]

測試結果:

OpenCV模板匹配

include include opencv2 opencv.hpp using namespace std using namespace cv int main int argc,char argv load reference image img imread argv 1 always ch...

opencv模板匹配

模板匹配是一種用於在源影象s中尋找定位給定目標影象t 即模板影象 的技術。其原理很簡單,就是通過一些相似度準則來衡量兩個影象塊之間的相似度similarity s,t 2.用途 模板匹配方法常用於一些平面影象處理中,例如印刷中的數字 工業零器件等小尺寸目標影象識別分類。3.方法 模板匹配中,源影象和...

模板匹配opencv

模板匹配,就是在一幅影象中尋找另一幅模板影象最匹配 也就是最相似 的部分的技術。說的有點抽象,下面給個例子說明就很明白了。在上面這幅全明星照中,我們想找出姚明頭像的位置,並把它標記出來,可以做到嗎?可以,這就是模板匹配的要做的事情。其實模板匹配實現的思想也是很簡單很暴力的,就是拿著模板 姚明頭像 在...