MATLAB模板匹配算法程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%Ä£°åÆ¥Åä

%function [maxHeight,maxWidth,MaxR] =

templateMatcher(im_matched,im_template)

im_matched=imread('D:\matching algorithm\matching\2.jpg');

%im_template=imread('D:\matching algorithm\matching\1.jpg');

rect=[256 178 145 67]

im_template=imcrop(im_matched,rect);

imshow(im_template);

if isrgb(im_matched)

im_matched = rgb2gray(im_matched);

end

if isrgb(im_template)

im_template = rgb2gray(im_template);

end

dim_matched =double(im_matched);

dim_template = double(im_template);

%·½²î

sigmaST = 0.0;

sigmaS = 0.0;

sigmaT = 0.0;

%ÏàËÆÐÔ²â¶È

%double R

%×î´óÏàËÆÐÔ²â¶È

MaxR = 0.0;

%×î´óÏàËÆÐÔ³öÏÖλÖÃ

maxWidth=0;

maxHeight=0;

%¼ÆËãsigmaT

tic

[tempheight,tempwidth] = size(im_template);

for n =1:tempheight

for m =1:tempwidth

sigmaT = sigmaT + dim_template(n,m)^2;

end

end

sigmaT = sqrt(sigmaT);

%ÕÒµ½Í¼ÏñÖÐ×î´óÏàËÆÐԵijöÏÖλÖÃ

[height,width] = size(im_matched);

% width = size(im_matched,2);

for j =1:height-tempheight

for i =1:width-tempwidth

sigmaST = 0;

sigmaS = 0;

for n = 1:tempheight

for m = 1:tempwidth

sigmaS = sigmaS + dim_matched(j+n,i+m)^2;

sigmaST = sigmaST + dim_template(n,m)*dim_matched(j+n,i+m);

end

end

%¼ÆËãÏàËÆÐÔ

sigmaS = sqrt(sigmaS);

R = sigmaST /(sigmaS*sigmaT);

%Óë×î´óÏàËÆÐԱȽÏ

if(R >MaxR)

MaxR = R;

maxWidth = i+1;

maxHeight =j+1;

end

end

end

toc

recWidth = [maxWidth maxWidth+tempwidth-1 maxWidth+tempwidth-1 maxWidth maxWidth];

recHeight = [maxHeight maxHeight maxHeight+tempheight-1

maxHeight+tempheight-1 maxHeight];

figure,imshow(im_matched);hold on , plot(recWidth,recHeight,'r-');

相关文档
最新文档