- 12
- 0
- 约4.65千字
- 约 8页
- 2017-02-01 发布于重庆
- 举报
用BP人工神经网络识别手写数字
赖勇浩()
这是我读工程硕士的时候完成课程作业时做的,放在?dropbox?的角落中生尘已经有若干年头了,最近?@shugelee?同学突然来了兴致搞验证码识别,问到我的时候我记起自己做过一点点东西,特发上来给他参考,并趁机补充了一下《Python也可以》系列。
图像预处理使用下图(后方称为 SAMPLE_BMP)作为训练和测试数据来源,下文将讲述如何将图像转换为训练数据。
灰度化和二值化
在字符识别的过程中,识别算法不需要关心图像的彩色信息。因此,需要将彩色图像转化为灰度图像。经过灰度化处理后的图像中还包含有背景信息。因此,我们还得进一步处理,将背景噪声屏蔽掉,突显出字符轮廓信息。二值化处理就能够将其中的字符显现出来,并将背景去除掉。在一个[0,255]灰度级的灰度图像中,我们取 196 为该灰度图像的归一化值,代码如下:
[python]view plaincopy
def?convert_to_bw(im):??
????im?=?im.convert(L)??
????im.save(sample_L.bmp)??
????im?=?im.point(lambda?x:?WHITE?if?x??196else?BLACK)??
????im?=?im.convert(1)??
????im.save(sample_1.bmp)??
return?im??
下图是灰度化的图像,可以看到背景仍然比较明显,有一层淡灰色:下图是二值化的图像,可以看到背景已经完全去除:
图片的分割和规范化:
通过二值化图像,我们可以分割出每一个字符为一个单独的图片,然后再计算相应的特征值,如下图所示:这些图片是由程序自动进行分割而成,其中用到的代码片段如下:
[python]view plaincopy
def?split(im):??
assert?im.mode?==?1
????result?=?[]??
????w,?h?=?im.size??
????data?=?im.load()牋
牋牋xs?燵0,?3,?7,?7,?06,?35,?59,?79,?05,?28,爓]牋
牋牋ys?燵0,?2,?0,?7,?50,爃]牋
for爄,爔爄n爀numerate(xs):牋
if爄???=爈en(xs):牋
break
fo灰度化的图像,可以看到背景仍然比较明显,有一层淡灰色: r爅,爕爄n爀numerate(ys):牋
if爅???=爈en(ys):牋
break
牋牋牋牋牋牋box??x,爕,爔s[i+1],爕s[j+1])牋
牋牋牋牋牋牋t?爄m.crop(box).copy()牋
牋牋牋牋牋牋box?燽ox??(i??)??0,?牋
#牋牋牋牋牋爏ave_32_32(t,?num_%d_%d_%d_%d_%d%box)
牋牋牋牋牋牋result.app end((normalize_32_32(t,?num_%d_%d_%d_%d_%d%box),?i??)??0))牋
return爎esult牋
其中的 xs 和 ys 分别是横向和竖向切割的分界点,由手工测试后指定,t = im.crop(box).copy() 代码行是从指定的区域中“抠”出图片,然后通过 normalize_32_32 进行规范化。进行规范化是为了产生规则的训练和测试数据集,也是为了更容易地地计算出特征码。
产生训练数据集和测试数据集
为简单起见,我们使用了最简单的图像特征——黑色像素在图像中的分布来进行训练和测试。首先,我们把图像规范化为 32*32 像素的图片,然后按 2*2 分切成 16*16 共 256 个子区域,然后统计这 4 个像素中黑色像素的个数,组成 256 维的特征矢量,如下是数字 2 的一个特征矢量:0 0 4 4 4 2 0 0 0 0 0 0 0 0 2 4 0 0 4 4 4 2 0 0 0 0 0 0 0 0 2 4 2 2 4 4 2 1 0 0 0 0 0 0 1 2 3 4 4 4 4 4 0 0 0 0 0 0 0 0 2 4 4 4 4 4 4 4 0 0 0 0 0 0 0 0 2 4 4 4 4 4 0 0 0 0 0 0 0 0 0 0 2 4 4 4 4 4 0 0 0 0 0 0 0 0 0 0 2 4 4 4 4 4 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 4 4 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4
您可能关注的文档
- 成教学院毕业论文格式(A4纸型).doc
- 11281024_徐乾舜_智能计算基础.docx
- (html)Skylin二次开发初学者范例.doc
- CAXA教案(改编).doc
- TopSolid家具设计实例教程.doc
- 毕业论文英文文献翻译-基于ARM的生物发酵智能控制系统的设计.doc
- 网页设计模拟模拟试题.doc
- 电子商务网站建设教程考试重点.doc
- 计算机图形学 - 副本.doc
- 游戏程序设计3.doc
- 国际医院工程混凝土施工方案(创鲁班奖).doc
- 国际医院工程人货电梯基础方案(SC200_200型,创鲁班奖).doc
- 国际医院工程季节性施工方案(43页,鲁班奖工程).doc
- 大型住院和医技综合大楼基础工程施工方案(鲁班奖).doc
- 三等奖-国家核与辐射安全监管技术研发基地建设项目施工组织设计-总承包公司 来源: 资料小筑.doc
- 国际医院工程钢筋工程施工方案(创鲁班奖).doc
- 国际医院工程总承包管理施工方案(附表格,创鲁班奖).doc
- 国际医院工程通风与空调工程施工方案(43页,鲁班奖工程).doc
- 2018电力数据通信网络工程初步设计文件内容深度规定.docx
- 2023铁路道岔缺口监测系统设备.docx
原创力文档

文档评论(0)