《模式识别与智能计算》模板匹配法
模板匹配法应该是最简单的模式识别方法。可谁让我是小白呢,学习一下。
理论基础
就是把未知样品和一个标准模板相比,看它们是否相同或相似。主要讨论两类别情况。
两类别
设有两个标准样品模板为 和 ,其特征向量为 维特征: 和 。任何一个待识别的样品X,其特征向量为: ,那么,他是 还是 ?
用模板匹配方法来识别,若 ,则该样品为 ,若 ,则该样品为 。最简单的识别方法就是利用距离来判别。
最小距离判别法:如果X距离 比距离 近,则 属于 ,否则属于 。
任意两点
之间的距离:
根据距离远近可作为判据,构成距离分类器,其判别法则为:
实现步骤
- 待测样品 与训练集里每个样品 的距离为 ;
- 循环计算待测样品和训练集中各已知样品之间的距离,找出距离待测样品最近的已知样品,该已知样品的类别就是待测样品的类别。
编程代码
%函数名称:neartemplet()
%参数:sample:待识别样品特征
%返回值:y:待识别样品所属类别
%函数功能:按照模板匹配法计算待测样品与样品库中的样品相似度
function y=neartemplet(sample);
clc;
load templet pattern;%加载样品库
d=0;%距离
min=[inf,0];
for i=1:10
for j=1:pattern(i).num
%计算待测样品与样品库样本间的最小距离
d=sqrt(sum((pattern(i).feature(:,j)-sample').^2));
%求最小距离及其类号
if min(1)>d
min(1)=d;
min(2)=i-1;
end
end
end
%输出类别
y=min(2);
其中: 代码如下:
扫描二维码关注公众号,回复: 2382531 查看本文章
d=sqrt(sum((pattern(i).feature(:,j)-sample').^2));
运行结果
sample来源:手写识别题个人样本
templet来源:《模式识别与智能计算》MATLAB技术实现(光盘文件)
不做过多解释了,详情请看此系列博客。
ans = 3
因为使用数字3的样本,故结果正确。