自己动手实现Android平台手写体数字识别之概述和训练集准备

2 篇文章 0 订阅

打算把两年前做的Android平台上的手写体数字识别软件的实现过程一步一步地写下来,提供完整的代码给和我当年一样对这种基础的模式识别毫无头绪的同学。不过我现在还是对这些算法一知半解。。。

整个算法处理流程如下:


首先是识别算法的数据集的准备,这里使用MNIST手写体图像集。MNIST是研究人员采集的很多很多不同的人手写的数字扫描成的图像集,包含60000个训练样本和10000个测试样本,每个样本是8位的灰度图像。可以从这里下载http://yann.lecun.com/exdb/mnist/,数据集包含训练集和测试集,分别包含图像文件和标签文件,训练集以如下的结构存储(测试集类似):

TRAINING SET LABEL FILE (train-labels-idx1-ubyte)
[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000801(2049) magic number (MSB first) 
0004     32 bit integer  60000            number of items 
0008     unsigned byte                  label 
0009     unsigned byte                  label 
........ 
xxxx     unsigned byte                  label 
The labels values are 0 to 9. 

TRAINING SET IMAGE FILE (train-images-idx3-ubyte)
[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000803(2051) magic number 
0004     32 bit integer  60000            number of images 
0008     32 bit integer  28               number of rows 
0012     32 bit integer  28               number of columns 
0016     unsigned byte                  pixel 
0017     unsigned byte                  pixel 
........ 
xxxx     unsigned byte                  pixel 

一开始用的MATLAB,由于用的不太熟练,就改用C#进行处理了。首先提取灰度图像的像素点,然后根据设定的阈值(也可以采用动态阈值等方法)进行二值化,再进行归一化处理,原始灰度图像为28x28,裁编之后均为20x20的图像。

原始图像如下:


归一化之后的图像如下:


MNIST处理的代码可以在这里获取:

https://sourceforge.net/projects/andocrrecog/files/PreProcessMNIST/

经过处理后所有训练样本和测试样本都被转换成20x20的归一化图像。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值