matlab gui手写识别,GitHub - GYee/Matlab-HandWriting_Number_Recognition: 在Matlab中使用Bayes分类器对GUI界面手写板输入的手写...

基于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的界面:

2b508fd0191ae763aa2ab229839d2ccd.png

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压缩包文件中的文件结构及使用方法同上面描述的一致,故不再重复,下载即可使用!

第一次写,很多不完善的地方,会慢慢改进,还望大家体谅啦哈哈哈哈!!!

代码和文字都是一个字一个字打出来的,非常不容易,转载请标明出处哦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值