MATLAB模板匹配算法程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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-');