www.gusucode.com > 关于海航matlab和lingo的训练题 > eye-m/tmp.m

    function result=tmp(image1,image2);
%*********************************************************
%如果是三维图像就转换为二维灰度图像
if size(image1,3)==3
    image1=rgb2gray(image1);
end
if size(image2,3)==3
    image2=rgb2gray(image2);
end
% 通过图片的尺寸判断哪个是测试图片哪个是模板
if size(image1)>size(image2) 
    Target=image1;
    Template=image2;
else
    Target=image2;
    Template=image1;
end
% 取得两幅图片的尺寸
[r1,c1]=size(Target);
[r2,c2]=size(Template);
% 模板的均值
image22=Template-mean(mean(Template));%X-E(X)

%两幅图像的相关性
M=[];%相关系数 矩阵
for i=1:(r1-r2+1)%横向搜索
    for j=1:(c1-c2+1)%纵向搜索
        Nimage=Target(i:i+r2-1,j:j+c2-1); %区域的选取,r2,c2为选取的大小
        Nimage=Nimage-mean(mean(Nimage));  %Y-E(Y)
        corr=sum(sum(Nimage.*image22));%E(X)*E(Y)取和与Cov(X,Y)成正比
        warning off
        M(i,j)=corr/(sqrt(sum(sum(Nimage.^2)))*sqrt(sum(sum(image22.^2))));%X与Y均方差的积
    end 
end
% 在测试的图像中标注出目标的位置
result=plotbox(Target,Template,M);