热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手写数字识别系统之数字提取

引言所谓数字分割就是指将经过二值化后的图像中的单个数字区域进行提取的过程。数字分割在数字识别中是一个必不可少的关键步骤,只有能够将数字进行准确的提取,才能将其一一识别。数字分割的方法数

引言

所谓数字分割就是指将经过二值化后的图像中的单个数字区域进行提取的过程。数字分割在数字识别中是一个必不可少的关键步骤,只有能够将数字进行准确的提取,才能将其一一识别。

数字分割的方法

数字分割的方法相当多,主要有以下几种:

基于直方图的分割

此类方法就是对每行和每列黑色像素数进行统计,生成行直方图和列直方图,并采用某种阈值选取法分别对图像进行行列分割。

这种方法简单快速,对于按矩阵分布的规则数字的分割效果相当好,但是无法对不规则分布的数字进行分割,因此具有一定的局限性。

基于聚类的分割

聚类就是一个将数据集划分为若干组或类的过程,通过聚类使得同一组内的数据对象具有较高的相似度,而不同组中的数据对象则是不相似的,由于数字图像的特征正好符合这类情况,因而可以使用聚类来达到分割数字的效果。

其方法主要包括基于距离矩阵的聚类分割、k-均值聚类分割、模糊C-均值聚类分割

此类分割方法对数字的位置和大小没有限制,非常适合对位置和大小不规则的数字进行,但这种方法也有明显的不足,其中基于距离矩阵的聚类分割的计算量太大,尤其是对较大的图像,而且矩阵的占用空间相当多,因此在实际中无法使用。

而k-均值聚类分割、模糊C-均值聚类分割这些动态聚类虽然解决了这些问题,但是他们对于初始中心的选取极为敏感,虽然已经有各种对于中心选取得优化算法,但是其分类个数必须人为指定之一限制,最终使此类算法无法应用到实际的数字分割中。

基于二值图像连通区域标记的分割

二值图像连通区域标记是指将图像中符合某种连通规则的目标像素点用相同的标号表示出来。

因此这种方法非常适用于数字分割,因为每个数字本身就是一个连通区域,而且这种方法不受分类数的限制,也适用于不规则分布的数字图像,实现简单快速,是一种相当好的分割方法。

而本文采用这种方法进行图像数字区域的分割,并对其进行了适当的改进。

到目前为止,二值图像连通区域标记方法主要有以下几类:

  • 两次扫描法
第一次扫描时, 将临时标号存储在一个与图像大小一样的二维数组中并形成等价对。

扫描结束时,通过某种搜索方法合并等价标号; 第二次扫描时, 用等价标号中最小的标号值赋予所有等价标号对应的像素点。
  • 双向反复扫描法:
第一次扫描时, 将每个目标像素点标记为一个唯一的标号。

然后, 通过正向和反向反复扫描标号图像, 并在每个像素的邻域内传播最小标号, 直到没有标号变化时为止。
  • 区域增长法
依次扫描二值图像的每一个像素点。当找到某个未标记的目标像素点时, 将其压入堆栈并从该点开始反复标记其邻域, 直到堆栈为空。

考虑到数字分割仅仅是数字识别的一小步,如果在此处耗费太多的时间是相当能够不值得的,因此我采用速度相对较快的两次扫描法进行分割。

而在两次扫描法中,合并等价标号是相当关键的一步,因此如何提高其合并速度是相当重要的,因此我主要采用如下改进的区域标记方法:

1. 构造一散列表,以标号作为关键字进行散列,说白了就是一数组。每个元素指向一个双向链表,在链表中存储同一类别的像素点坐标。
2. 构造一个与图像同样大小的标记矩阵,用于存储每个像素的分类标号
3. 初始化标记矩阵,并对图像第一行和第一列中的黑色像素进行标记,标记依次递增,并将相应的像素点位置保存到对应标记的散列表中。
4. 依次遍历其它各行各列,若当前像素点为黑色,则将其左前、左上角、正上、右上角这四个邻点中为黑色的像素的最小标记赋给当前点,并将这四点中为黑色的像素点归并到最小标记中,具体归并方法为:将四点中为黑色的像素点的原标记在散列表中所指向的像素链表与最小标记所在链表进行合并,并更新标记值。若其四个邻点中没有黑色像素点,那么当前点属于新类,创建一个新的标记值及相应的链表。
5. 若当前像素点为白色,则标为无效标记,继续第(4)步。

过滤无效区域

由于图像或多或少会存在些许噪声、无效块,通常在分割前需要做一些去噪、过滤非数字区域等工作,才能达到良好的分割效果。

考虑到数字本身具有细长等特点,因此不太适合中值滤波这些去椒盐噪声的算法。

在这我采用最简单的离散去噪,仅仅取出一些离散噪声点,对于其它大块的无效区域,我通过统计分类样本的平均高度和宽度,设定合适的阈值进行过滤,并对明显高宽比不符合数字特征的区域也一一进行过滤。

从实验结果中可以看到,这样的效果还是相当好的。

实验结果

extract_digital_1
extract_digital_2

但是可以看到,由于是按行进行标记,因此标记好的顺序对样本区域的高度相当敏感,高低稍有不同,分割后就会打乱其原始的顺序(尤其是针对那些原本排列较为规则的图像),若要按顺序分割,必须在处理后期,进行额外的排序操作才行,其具体步骤为:

  1. 将原先按标记散列的分类图像,转化为按区域图像中心的矩阵散列,此时生成的矩阵为稀疏矩阵,只有位于区域中心的点指向所对应的数字图像
  2. 按一定的阈值把矩阵按行切分,由于矩阵中的点角为稀疏,因此阈值较为好取,分割效果也较好,不需要过多的进行优化,就能达到很好的效果。
  3. 对每行的区域图像按中心位置的横坐标值进行排序,即可恢复原先的数字分布。其效果如下:

extract_digital_3

而且,区域标记的一大优点就是对数字分布极为不规则的图像的处理效果也是相当好的,可以很好的解决数字缠绕在一起,难以分割的问题,其效果如下:

extract_digital_4

总结

虽然使用区域标记法进行分割的效果已经相当令人满意,但是还是存在一些不足的地方,比如说只能对具有良好连通性的数字进行分割,而对于那些具有断层的数字就无法实现较好的分割,为此,在分割前需要进行额外的断层修复,而断层修复的过程较为复杂,且修复效果有限。

因此,要实现具有高度通用性的数字分割算法,还有待进一步研究。

参考文献

如果想要了解更多数字图像处理相关的内容,可以去我的书柜看看,冈萨雷斯写的那本书数字图像处理还是非常经典的。。


个人主页:TBOOX开源工程
原文出处:http://www.tboox.org/cn/2016/07/30/hnr-extract-digital/


推荐阅读
  • 理工科男女不容错过的神奇资源网站
    十一长假即将结束,你的假期学习计划进展如何?无论你是在家中、思念家乡,还是身处异国他乡,理工科学生都不容错过一些神奇的资源网站。这些网站提供了丰富的学术资料、实验数据和技术文档,能够帮助你在假期中高效学习和提升专业技能。 ... [详细]
  • MATLAB人体行为检测与识别
    人体行为检测与识别摘要人体行为检测与识别是当前研究的重点,具有很高的研究价值和广阔的应用前景。主要应用在型人机交互、运动分析、智能监控和虚拟现实也称灵境技术ÿ ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • TensorFlow入门上
    前置准备在阅读本文之前,请确定你已经了解了神经网络的基本结构以及前向传播、后向传播的基本原理,如果尚未了解,可以查看下文。神经网络初探​chrer.com也可以直接在我博客阅读Te ... [详细]
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • 分类与聚类
    一:分类1:定义分类其实是从特定的数据中挖掘模式,做出判断的过程。分类是在一群已经知道类别标号的样本中,训练一种分类器 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 超分辨率技术的全球研究进展与应用现状综述
    本文综述了图像超分辨率(Super-Resolution, SR)技术在全球范围内的最新研究进展及其应用现状。超分辨率技术旨在从单幅或多幅低分辨率(Low-Resolution, LR)图像中恢复出高质量的高分辨率(High-Resolution, HR)图像。该技术在遥感、医疗成像、视频处理等多个领域展现出广泛的应用前景。文章详细分析了当前主流的超分辨率算法,包括基于传统方法和深度学习的方法,并探讨了其在实际应用中的优缺点及未来发展方向。 ... [详细]
  • 图像分割技术在人工智能领域中扮演着关键角色,其中语义分割、实例分割和全景分割是三种主要的方法。本文对这三种分割技术进行了详细的对比分析,探讨了它们在不同应用场景中的优缺点和适用范围,为研究人员和从业者提供了有价值的参考。 ... [详细]
  • AI TIME联合2021世界人工智能大会,共探图神经网络与认知智能前沿话题
    AI TIME携手2021世界人工智能大会,共同探讨图神经网络与认知智能的最新进展。自2018年在上海首次举办以来,WAIC已成为全球AI领域的年度盛会,吸引了众多专家学者和行业领袖参与。本次大会将聚焦图神经网络在复杂系统建模、知识图谱构建及认知智能应用等方面的技术突破和未来趋势。 ... [详细]
  • 不用蘑菇,不拾金币,我通过强化学习成功通关29关马里奥,创造全新纪录
    《超级马里奥兄弟》由任天堂于1985年首次发布,是一款经典的横版过关游戏,至今已在多个平台上售出超过5亿套。该游戏不仅勾起了许多玩家的童年回忆,也成为强化学习领域的热门研究对象。近日,通过先进的强化学习技术,研究人员成功让AI通关了29关,创造了新的纪录。这一成就不仅展示了强化学习在游戏领域的潜力,也为未来的人工智能应用提供了宝贵的经验。 ... [详细]
  • 到了今天,已经很少有人再提人工智能音箱了。使用率低、售价跳水、缺乏销售数据……我们不能武断地说智能音箱凉了,但的确不少所谓的AI企业的硬件梦碎了。相对于一 ... [详细]
  • 每日一书丨AI圣经《深度学习》作者斩获2018年图灵奖
    2019年3月27日——ACM宣布,深度学习之父YoshuaBengio,YannLeCun,以及GeoffreyHinton获得了2018年的图灵奖, ... [详细]
author-avatar
伟经理_469
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有