模板匹配金字塔

模板匹配金字塔
模板匹配金字塔

目录

1、Opencv模板匹配原理--没有金字塔 (2)

2、模板匹配—使用金字塔 (3)

1)主要函数简介 (3)

2)程序流程 (3)

3、验证和结果 (3)

1)实验环境 (3)

2)实验结果 (3)

Opencv模板匹配

1、Opencv模板匹配原理--没有金字塔

函数:cvMatchTemplate( Source, Target, result, method);

说明:

Source:源图像,一般我们使用灰度图像;

如果source为RGB图像,使用函数cvCvtColor(source,dst,CV_RGB2GRAY)

这里,dst为转换后的灰度图像。

Target:模板图像。

Result:匹配后的矩阵,width = S_width – T_taget + 1 ,height = S_height – T_height +1 使用函数IplImage* result = cvCreateImage( resultSize, IPL_DEPTH_32F, 1 )获得。

Method:

CV_TM_SQDIFF:

CV_TM_SQDIFF_NORMED

CV_TM_CCORR

CV_TM_CCORR_NORMED

CV_TM_CCOEFF

CV_TM_CCOEFF_NORMED

2

一般的,使用CV_TM_CCORR_NORMED,存在的问题是没有使用去均值,可能对亮度变化比较敏感。

程序流程:

读入模板和源图像→建立result图像→模板匹配→使用cvMinMaxLoc找到最大(最小)值→输出结果

2、模板匹配—使用金字塔

1)主要函数简介

cvPyrDown( src,dst,filter )

src:源图像,尺寸为width×height

dst:经过一次下采样得到的图像,尺寸为width/2 ×height/2

filter:卷积滤波器,目前仅支持CV_GAUSSIAN_5×5

cvSetImageROI( image,rect )

image:源图像,经过这个函数后,图像大小变为rect(长方形)

rect:(x,y,width,height)(x,y)为长方形的左上角坐标,width,height为长方形的宽和高。

2)程序流程

读入模板和源图像→cypyrdown(假设只有一次)得到源图像和模板下采样图像→设置这里的匹配result图像→模板匹配→使用cvMinMaxLoc找到最大值→以这个最大值为中心(x1,y1),将源图像裁剪为width = W_template +7 ,height = H_template+7图像,rect左上角坐标为X2=x1 - W_template/2 -3 Y2=y1 - H_template/2 -3→再次建立result1图像→模板匹配→使用cvMinMaxLoc找到最大值

3、验证和结果

1)实验环境

Core i5 2410M thinkpad x220主机

Ubuntu10.04 –gcc

源图像大小360×360,模板大小140×140

采用一级金字塔

验证方法:源图像S、模板T,分别采用加噪声和更改亮度

2

模板匹配程序耗时约10ms。

3

相关主题
相关文档
最新文档