1 Star 4 Fork 0

Dizzy / HandWriting_Recognition

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

基于Matlab及Bayer/Fisher分类器的手写数字识别

项目介绍

这个项目源自于老师布置的一个模式识别大作业,要求使用Matlab实现对手写数字的识别工作,为了展示的直观还设计了GUI界面。因为刚开始,所以首先学会用最传统简单的Bayes分类器去做,接着又使用同样的数据集使用Fisher分类器去实现。Bayes分类器的分类准确率为80%,Fisher分类器的分类准确率为78%。

Bayes分类器文件结构及用途介绍

Trainset:使用GUI手写板输入并保存下来的数字图片训练集,一共分为0-9十个类别,每个类别单独放在一个子文件夹中,子文件夹中各有10张手写数字图片

singleNum_feature_extraction.m:函数功能为将图片中保留有的坐标轴部分截除(手写板保存下来的图片左边及下边都会有坐标轴相关的线,会一定程度上影响后面特征的提取,故而要去掉),对图片就行二值化,接着获取书写数字所在的区域,将获取的区域图片分成10x10batches,当batch中像素值为1的个数大于该batch像素总数的十分之一时(当然这个阈值可以自己设定),将该batch直接置为1,否则为0。最后这个函数返回的是1x100的行向量,及该数字图片的100个特征值

feature_struct_build.m:调用singleNum_feature_extraction.m遍历TrainSet中各类别的所有图片,计算出训练集的特征数据,并保存为有着label和feature两字段的结构体变量,feature为元胞数组,因为每个类别有10张图,所以每个label对应的feature有10个cell,cell中的数据即为每张图片提取出来的1x100特征。最后该结构体变量,以便构造贝叶斯分类器的时候调用。

featureData.mat:上述save下来的结构体变量

bayesClassifierBulid.m:构造贝叶斯分类器,并返回label。具体原理可参考CSDN博客的分类器设计部分。 interface.m与interface.fig:GUI文件。下面是GUI的界面:

Acc1.rar:(请下载解压缩后再看本段后面的文字)压缩包中挺多文件的,其主要的功能是实现基于定义的类条件概率密度函数构造的贝叶斯分类器的准确度测试。训练和测试样本集来自于opencv库自带的一张digits.png图片,图片里面是5000个手写数字,每个类别500个,每个数字占用的空间是20乘以20pixels.所以里面的digits_segmentation.m文件就是用来切割digits.png图片并保存的,接着将切割下来的图片按照类别分别放到不同的文件夹中,最后从每个类别中随机挑选出100张图作为测试集,剩下的全部作为训练集。这些图片的特征提取方法跟上面讲述的一样,feature_struct_build.m文件就是用来生成训练集和测试集的特征数据的,并保存为两个mat文件,最后打开Acc_test.m文件调用这两个mat文件进行准确地测试,可得准确率80.1%。对于这样简单的分类器来说,这样的准确度还算可以接受了,当然你要想用自己的图片集来测试准确度也可以,方法是:打开feature_struct_build.m文件,修改文件路径为你图片集所在的路径,生成对应的特征数据并保存为mat文件,最后运行Acc_test.m即可。

使用方法

将所有files下载放到同一个目录下,打开interface.m文件运行,会跳出一个GUI界面,然后在手写板上用鼠标写0-9其中一个数字,点击“确认”按钮即可。当想再次输入另外一个数字时,请先点击“清除”按钮。

因为训练集是我个人建的,且数量比较少,可能对其他人的手写数字识别的准确度不高,这时你可以自己建立训练集。具体方法为:打开GUI界面,在速写板上用鼠标写数字,点击“确认”,这时候会在文件夹目录下生成一个output.jpg图片,重命名(例如1-1.jpg)后放到TrainSet/1/文件夹中,以此类推,一个类别的训练图片数量不限,越多越好啦!

构建好TrainSet后,打开feature_struct_build.m文件,生成新的featureData.mat。

最后再次在GUI界面中输入手写数字,就能很好地识别啦!

Fisher压缩包文件中的文件结构及使用方法同上面描述的一致,故不再重复,下载即可使用!

第一次写,很多不完善的地方,会慢慢改进,还望大家体谅啦哈哈哈哈!!! 代码和文字都是一个字一个字打出来的,非常不容易,转载请标明出处哦!

空文件

简介

图像处理课设 展开 收起
Matlab
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Matlab
1
https://gitee.com/flyzzie/HandWriting_Recognation.git
git@gitee.com:flyzzie/HandWriting_Recognation.git
flyzzie
HandWriting_Recognation
HandWriting_Recognition
master

搜索帮助

14c37bed 8189591 565d56ea 8189591