购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.8.1 手写数字特征提取

本书以手写数字作为模式分类的实例,重点介绍模式识别理论与实现方法,说明各种算法是否有效。

对数字识别特征提取可以有多种方法,有的分析从框架的左边框到数字之间的距离变化,反映了不同数字的不同形状,这可以用来作为数字分类的依据,如图2‐5所示;另外一种方法则在每个数字图形上定义一个 N × N 模板,将每个样品的长度和宽度 N 等分,平均有 N × N 个等份,对每一份内的像素个数进行统计,除以每一份的面积总数,即得特征初值。

如图2‐6(a)所示。首先找到每个手写样品的起始位置,在此附近搜索该样品的宽度和高度,将每个样品的长度和宽度5等分,构成一个5×5均匀小区域;对于每一小区域内的黑像素个数进行统计,除以该小区域的面积总数,即得特征值,如图2‐6(b)所示。当然读者可以根据需要进行修改, N 值越大,模板也越大,特征越多,区分不同的物体能力越强,但同时计算量增加,运行等候的时间增长,所需要的样本库也成倍增加,一般样本库的个数为特征数的5~10倍,这里特征总数为5×5=25,每一种数字就需要至少125个标准样本,10个数字需要1250个标准样本,可想而知数目已经不少了。如果值过小,不利于不同物体间的区别。

图2‐5 距离变化提取特征法

图2‐6 5×5模板提取特征法

对于手写数字提取模板特征的好处是,针对同一形状、不同大小的样品得到的特征值相差不大。有能力对同一形状、不同大小的样品视为同类,因此这里要求物体至少在宽度和长度上大于5个像素,太小则无法正确分类。当然读者可以根据需要进行修改,值越大,模板也越大,特征越多,区分不同的物体能力越强,但同时计算量增加,运行等候的时间增长,所需样品库也要成倍增加。

在本书配套程序中,读者可以手写一个数字,然后应用不同的模式识别算法实现对数字的识别。识别过程如下。

(1)手写数字

在界面上手写一个数字,按“清除”键后可重新书写。

(2)手写数字的特征提取

①搜索数据区,找出手写数字的上、下、左、右边界。

②将数字区域平均分为5×5的小区域。

③计算5×5的每一个小区域中黑像素所占比例,第一行的5个比例值保存到特征的前5个,第二行对应着特征的6~10个,以此类推。

(3)建立训练集特征库

分类器的设计方法属于监督学习法。在监督学习过程中,为了能够对未知事物进行分类,必须输入一定数量的样本,构建训练集,而且这些样本的类别已知,提取这些样本的特征,构造分类器,然后对任何未知类别的模式识别。读者可以直接书写数字,单击“选择类本”下拉列表框,为手写的数字选择其对应的类别。单击“保存样本”按钮,根据提示,将样本保存到样本库的首位,如图2‐7所示。

图2‐7 保存样本示意图

(4)通过对话框查看样本库样本个数

单击“选择类别”下拉列表框,选择一个类别。然后单击“查看样本特征”按钮,可以在Matlab命令窗口中查看每个类别的样本特征值。

(5)分类识别

用分类器判别样品类型。

在分类程序中,样本库训练集的特征值是程序开发人员按照自己手写数字习惯来建立的,因此,会造成对读者手写的数字分类有误的情况。为了尽量避免此类情况发生,我们把每次添加的手写数字放在样本训练集的首位,读者可以尽量多写一些数字以使程序适应您的书写样式。 OyrHjQuMMsQVj9l6sFRaoYQN9P+2oFcnB/j5GpuU86IsbOssDz3IW8tx/Hklmkos

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开