关于手写和图片输入数字识别的课程设计

关于手写和图片输入数字识别的课程设计,基于matlab gui

引言

第一次写博客,趁热乎,分享一下自己在课上做的报告,也算是总结一下,给大家共享这一周搜集的资料神马的~

特征

特征是我搜集了一些资料,在程序中所提取的特征为:
1.垂直交点
在列宽的5/12、1/2、7/12处生成三条垂直线,提取三条垂直线和手写数字笔划的交点数并保存。
2.水平交点
在行宽的1/3、1/2、2/3处生成三条水平线,提取三条水平线和手写数字笔划的交点数并保存。
3.对角交点
分别生成两条对角线,提取两条对角线和手写数字笔划的交点数并保存。
下边是提取的过程:
1.目标定位
二值化和细化之后的手写数字图像,针对行从上到下进行顺序扫描、针对列从左到右进行顺序扫描,定位选择黑色像素点G作为手写笔画目标。
2.邻域统计
计算黑色像素点G的8邻域的像素值之和N;若像素值之和N 等于1,则 黑色像素点G为端点,并且端点计数器counter=counter+1;反之,则舍弃该黑色像素点G。
3.遍历图像
遍历整个手 写 数 字 图 像,反 复 进 行 目 标 定 位 和 邻 域 统
计,提取手写数字的端点特征。
4.生成特征向量
Feature=[垂直5/12处交点数,垂直1/2处交点数,垂直7/12处交点数,水平1/3处交点数,水平1/2处交点数,水平2/3处交点数,左对角线交点数,右对角线交点数,端点数]。

这个是提取特征的参考文献:
李怡轩.基于机器学习的手写数字识别系统设计与实现[J].微型电脑应用,2018,34(08):78-81.
http://kns.cnki.net/kcms/detail/detail.aspx?DBCode=CJFQ&FileName=WXDY201808026&DBName=CJFDLAST2018&v=MDk3NDFYMU55aEJtNms0SVRBbVhyaGN5RnJDVVI3cWZZK1Z2RnkzblU3elBNalhQZDdHNEg5bk1wNDlIWW9RSUI=

程序

1.输入图像
可进行手写输入和图片输入进行识别。

2.手写输入关于手写和图片输入数字识别的课程设计
在手写识别区域输入数字,点击完成输入完毕,输入的图像则显示在原图区域,点击识别则进行图片预处理、特征提取、数字识别、结果显示。
3.图片输入
在图片识别区域选择图像,导入图片,然后点击选择识别区域,对想要识别的地方选中双击,选中的图像则显示在原图区域,点击识别则进行图片预处理、特征提取、数字识别、结果显示。
4.图像预处理
对图像进行灰度化、归一化、二值化、细化操作,提取源图像的骨架。
关于手写和图片输入数字识别的课程设计

5.图像特征提取
对细化过后的图像,进行特征提取,按照算法要求提取交点和端点特征,构成特征向量。

6.与样本库数据进行匹配
提取出输入图像的特征后,将其特征矢量与模板矩阵进行对比,计算其与模板矩阵的欧氏距离,取欧氏距离最小的模板数字进行返回。
7.识别结果
在识别过程中,大部分能够正确识别。下图为部分结果显示。
1) 手写输入的返回结果显示

关于手写和图片输入数字识别的课程设计
2) 图片输入的返回结果显示

关于手写和图片输入数字识别的课程设计

总结

是我自己根据网上算法改的,训练的数据呢,是基于样本模板匹配提取的,所以没有那么准确,可根据代码中的训练样本进行改正。给大家做个参考罢。

代码

代码附在我的下载里啦,这里就是为了解释一下代码~