计算机视觉与深度学习实战:以MATLAB、Python为工具
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

8.2 理论基础

8.2.1 算法流程

首先,读入手写数字图片进行图像归一化处理,统一大小,默认为24×24图像块,并通过ostu算法进行二值化;其次,对二值化图像进行图像细化等形态学操作,并按照算法的要求进行特征提取;最后,载入模板矩阵进行对比,选用欧式距离测度并得到识别结果。其算法流程图如图8-1所示。

图8-1 算法流程图

8.2.2 特征提取

根据手写数字图像本身的结构特征,这里通过计算端点、指定方向直线的交叉点个数来作为特征向量,主要步骤如下。

1.垂直交点

对细化后的手写数字图像分别在其列宽的处生成垂直的三条直线,提取这三条垂直直线与数字笔画的交点数并存储。

2.水平交点

对细化后的手写数字图像分别在其列宽的处生成水平的三条直线,提取这三条水平直线与数字笔画的交点数并存储。

3.对角交点

对细化后的手写数字图像分别取两条对角直线,提取这两条对角直线与数字笔画的交点数并存储。

4.笔画特征

由于以上步骤均作用于经细化后的数字图像,笔画简单且特征稳定,因此对其提取的基本交点及结构端点能反映数字的本质特征,可快速、有效地识别数字字符,并达到较好的识别正确率。

其中,提取笔画结构端点特征的算法如下。

1)目标定位

对细化后的手写数字图像按行从上到下、按列从左到右进行顺序扫描,定位选择黑像素点P作为手写笔画目标。

2)邻域统计

计算黑色像素P的8邻域之和N,若N=1,则像素P为端点,端点计数器加1;否则舍弃该点。

3)遍历图像

遍历整个图像,重复进行目标定位、邻域统计的操作流程,提取端点特征。

依据上述对手写数字图像的交点、端点特征的提取方法,本案例中的特征向量VEC由9个分量组成,其排列如下:

VEC=[垂直5/12处交点数,垂直中线交点数,垂直7/12处交点数,水平1/3处交点数,水平中线交点数,水平2/3处交点数,左对角线交点数,右对角线交点数,端点数]

8.2.3 模式识别

本案例采用的是基于模式知识库的识别方法,所以系统调研的关键步骤就是对数字字符的结构特征的分析及其模型的构造。因此,本案例首先对0~9这10个数字字符进行结构分析并建模,然后提取相关特征,最后构造模板库。

在实验过程中,我们选择规范手写和自由手写两组样本作为训练样本对知识库进行参数调整,这些训练样本由200个规范手写体样本和200个自由手写体样本组成,通过计算样本对应分量的算术平均值获得知识库中特征向量的每个分量。

通过上述步骤得到的知识库由两套模板组成,在本次实验过程中,我们选择基于模板匹配的识别方法,通过计算欧式距离来衡量匹配程度。识别系统中的特征向量包含9个分量,且计算距离公式是欧式距离:

因此,在识别过程中分别计算待识别图像与知识库中各个模板特征向量之间的欧式距离,即与0~9这10个数字逐个比较,选择最小距离对应的数字作为最后的识别结果。