您好, 访客   登录/注册

手写识别器的设计与制作

来源:用户上传      作者:

  摘  要:随着科技时代的到来,移动信息类的产品愈发追求方便快捷的用户体验。手写识别技术正是在这种时代潮流的推动下得到了发展,并且得到了大规模的应用。文章阐述了一款以STM32F407ZET6为单片机控制芯片、并且采用了TFT-LCD显示屏的手写识别器的设计过程,分别从硬件和软件这两个方面展开了介绍。
  关键词:STM32F407ZET6芯片;手写识别;TFT-LCD显示屏
  Abstract: With the advent of the age of technology, mobile information products are increasingly pursuing convenient and efficient user experiences. Handwriting recognition technology was developed under the impetus of this trend of the times and has been applied on a large scale. This article describes a handwriting recognizer designed with STM32F407ZET6 as the Single chip microcomputer and using a TFT-LCD display screen. The following are described in terms of hardware and software.
  手写输入与传统的输入法输入相比,有着明显且无法替代的优点——方便和快捷,并且避免了体积庞大的键盘设备,让用户有着更加顺畅的体验。手写识别可以应用在多种智能移动客户终端上,其广泛的应用场景,为其提供了大量的用户需求。我们团队研发的手写识别装置针对数字和字母方面的识别做到高精度识别,以准确和高效增进用户体验。
  1 系统设计
  选择一种好的处理器芯片对于手写识别器的性能而言至关重要,但在考虑性能的同时,成本价格亦不能忽视, STM32F407ZET6这款高性能、低成本的芯片正好符合设计要求。用户在TFT-LCD屏上进行手写输入,处理器捕获到有序输入轨迹后,将其进行LDA降维运算,进行八方向特征提取,最终获得的样本与模板库进行对比,可以得到最终的识别结果显示在TFT-LCD屏上面,并且提供出候选字符以供参考。对于一款识别器而言,识别精确度永远是第一性能指标,为了提高识别准确度,我们将所要识别的字符分为三类:大写英文字母、小写英文字母和阿拉伯数字,产品可以切换识别模式来分别对所对应的类型进行识别,以提高识别准确度。同时产品留有较大的输入区域,让使用者有着更为舒适的手写体验。
  2 系統硬件设计
  本系统中,硬件方面主要包含处理器芯片,TFT-LCD屏和SPI FLASH芯片。处理器是各外设的心脏,控制外设工作。TFTLCD屏可以进行触摸输入,进行有序轨迹捕获。
  2.1 芯片型号
  本产品使用了STM32F407ZET6作为单片机控制芯片,该芯片采用ARM Cortex  -M4内核架构,时钟高达168MHz,集成大容量闪存和随机静态存储器,可用于储存程序和数据。同时有着众多IO口以及AD/DA等丰富的外设资源。
  2.2 TFT-LCD(Thin Film Transistor-Liquid Crystal Display)显示屏
  本产品由于需要进行手写输入,所以需要带触摸功能的LCD屏。这种TFT-LCD屏幕显示质量高而且低功耗、具有触摸功能,符合产品设计需要。随着其制造技术的成熟,许多用户也开始习惯使用这种高品质的屏幕。TFT-LCD既能符合产品要求,又深受用户喜爱,所以本产品采用了较大的4.3寸TFT-LCD屏幕,给用户带来更舒适的触感体验。
  2.3 SPI FLASH芯片
  32M字节容量的W25Q256,满足存放数据的需求, 能够用来寄存字符数据、启动文件等核心数据。
  3 系统软件设计
  软件设计部分为两个部分,第一部分为PC端进行机器学习建立识别库文件,提供给识别器使用;第二个部分是控制器端编程控制各个外围设备之间的工作。
  3.1 识别库文件的设计
  完成识别工作的第一步就是需要事先建立一个大数据库,这就需要采集大量样本数据,此时我们输入大量阿拉伯数字和英文字母给机器学习,并且使用八方向特征提取的方法对这些样本提取特征,由于此过程数据量庞大,STM32存储器容量难以承受,所以还要进行LDA线性判决分析以达到降维使得数据量减小的目的。然后对于分类器的设计,我们采用了对样本数据求均值的方法,以得到最小误差。整个识别的计算过程就是在训练样本模板的过程中经过运算得到一个512维的数据矩阵,那么我们通过矩阵运算就可以得到需要的 64 维特征值。如下所示:
  将得到的数据集建立.lib库文件作为模板数据集并且导入项目中。
  我们将捕获到的运动轨迹转化为64维的特征值后,与模板数据库中的数据进行比对,误差最小的即为最终识别结果,当然也可以留有候选字符,一并输出显示在屏幕上。
  3.2 控制器端编程设计
  软件编程设计环境是Keil uvision5 MDK,使用C语言进行编程。本项目分任务进行。
  (1)按键任务
  本任务通过按键扫描,获得按键值,执行不同的分任务。每个分任务对应一种类型字符的识别工作,这样有利于提高识别器对不同种类字符的识别效率。
  (2)TFT-LCD任务
  初始化硬件层后,建立一个画线函数,划出一片手写区域供用户手写输入。同时进行设计LCD屏上的UI界面,并设置其颜色和字体大小。
  (3)FTAFS文件系统管理任务
  此任务目的是实现文件调用,实现对SPI FLASH的管理。
  (4)识别任务
  获取输入轨迹的点阵数据,在所建立的识别库中进行匹配识别,算法求出最小误差后输出得到所对应的识别结果,并保留候选字符选项,将整个识别结果送给LCD显示屏显示。
  (5)LED控制任务
  通过每隔一段时间指示灯电平翻转,实现指示灯闪烁,提示系统正常运行。
  4 结束语
  本文阐述了基于ARM Cortex  -M4内核实现的手写识别器的设计方法,该手写识别器采用电容式触摸屏,用户可以在输入界面进行手写输入,通过算法优化识别速度和识别效率,给用户很好的体验;本设计以成本的角度采用STM32F407ZET6这款高性能、低功耗的单片机芯片,同时使用了4.3寸大屏幕优化用户体验,用户书写起来更加流畅顺手。
  参考文献:
  [1]吕国英,李茹,王文剑,等.算法设计与分析(第三版)[M].清华大学出版社,2015.
  [2]沈红卫,任沙浦,朱敏杰,等.STM32单片机应用与全案例实践[M].电子工业出版社,2017.
  [3]殷志坚,刘玉莹,詹华群,等.电子技能训练[M].中南大学出版社,2013.
转载注明来源:https://www.xzbu.com/1/view-15193200.htm