一种MXN维的手写字符识别算法
1 概述
本文的灵感来源于杨淑莹老师的一张PPT(手写数字识别),在此特别鸣谢杨淑英老师。
一般机器视觉对事物是没有感知的,比如摄像头采集到一张苹果的图片,它本身是不知道那是什么东西,在计算机里边就是一个图像数据矩阵的存在。但是我们人类可以通过各种图像处理手段,不断提取事物的特征来让机器通过特征编码来识别和区分不同的事物。
2 一种MXN维的手写字符识别算法
图1 识别过程
如图1所示,这是杨淑英老师PPT(手写数字识别)的一张图,对于一个字符,首先我们要找到字符的上下左右边界,然后在把它分为MxN维的矩阵,再提取矩阵的特征,最后通过特征库匹配来识别字符。此种方法有效的降低了目标的维数,为FPGA的实现提供了可能。
特征形成:根据被识别的对象产生出来的一组基本特征。
特征选择:对原始数据进行抽取,抽取那些对区别不同类别最为重要的特征,而舍去那些对分类并无多大贡献的特征,得到能反映分类本质的特征。
特征提取:是模式识别的关键,直接影响其识别的分类效果。两种方法:
1)以框架的左边框到数字之间的距离变化。
2)将每个数字分成N×N等份,对每一份内的像素个数进行统计,除以每一份的面积总数。
图2 25维手写体5
如图2所示,我们通过每一个小框黑色的占比来从新编码一个新的5X5矩阵,当模板与之匹配时即可识别数字5,我没还可以通过人帮助机器不断学习,让机器的识别更加准确。
分成N×N等份的好处是:
针对同一形状、不同大小的样品得到的特征值相差不大。有能力对同一形状、不同大小的样品视为同类,因此这里要求物体至少在宽度和长度上大于N个像素,否则太小无法正确分类。
3 matlab 仿真MXN维字符识别
第一步:首先找到字符上下左右边界。
I = imread('5.png');
Ib =im2bw(I);
[h,w,d] =size(Ib);
ROW = w-1;
COL = h-1;
k=1;
f