📄 模板匹配实验.m
字号:
clear
%图像预处理
A=imread('3.bmp');% 读入图像
%imshow(A);%显示原始图像
B=imcrop(A,[170 15 500 540]);%剪裁图像
%imshow(B);%显示剪切后图像
C=medfilt2(B,[3 3]);% 3*3二维中值滤波
%imshow(C);%显示滤波后图像
D=imadjust(C,[0.3 0.75],[]);%图象均衡
%扫描窗口定位点
t=480;
s=140;
while ((t>345)&(s>135))
s=30;
while (D(t,s)>100&(s<140))
s=s+1;
end
if (s>135)
t=t-1;
end
end
%确定上下窗口上下坐标
up1=t-385;
up2=t-215;
down1=t-140;
down2=t+30;
%确定上下窗口左右坐标
m=5;
while D(up1,m)>100
m=m+1;
end
m=m+50;
n=m+350;
m2=5;
while D(down1,m2)>100
m2=m2+1;
end
m2=m2+50;
n2=m2+330;
E=imadjust(D,[0.789 0.79],[]);%准二值化
%将图象下半部分描白
for i=t+45:540
E(i,:)=255;
end
%用小矩阵看识别区域的二值化数据
% i=1;
% j=1;
% for x=m:n
% for y=up1:up2
% F(i,j)=E(y,x);
% i=i+1;
% end
% i=1;
% j=j+1;
% end
%
%描出窗口
imshow(E)
for i=up1:4:up2
hold on
plot(m,i,'b.');
plot(n,i,'b.');
hold off
end
hold on
plot(m:4:n,up1,'b.');
hold off
hold on
plot(m:4:n,up2,'b.');
hold off
for i=down1:4:down2
hold on
plot(m2,i,'b.');
plot(n2,i,'b.');
hold off
end
hold on
plot(m2:4:n2,down1,'b.');
hold off
hold on
plot(m2:4:n2,down2,'b.');
hold off
%描出窗口定位点
hold on
plot(s,t,'r*');
hold off
%读入模板图象
p=imread('12.bmp');% 读入模板图像
z=imread('11.bmp');% 读入模板图像
ping1=rgb2gray(p);
zhui1=rgb2gray(z);
ping=imadjust(ping1,[0.509 0.51],[]);%将模板转为准二值图象
zhui=imadjust(zhui1,[0.509 0.51],[]);%将模板转为准二值图象
%模板匹配
array=zeros(22,47);
k=1;
same=0;
for x=0:2:92
for y=0:2:42
for i=1:1:256
for j=1:1:128
ab=up1+j+y;%上窗口
cd=m+i+x;%上窗口
% ab=down1+j+y;%下窗口
% cd=m2+i+x;%下窗口
if zhui(j,i)==E(ab,cd),
same=same+1;
end
end
end
array(k)=same;
k=k+1;
same=0;
end
end
most=max(array)
least=min(array)
mea=mean(array)
mid=median(array)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -