识别手写字体自动建模书法机器人

2022-05-30 10:48李鑫洋董晨张晓辉李凌霄潘瑞
电脑知识与技术 2022年29期

李鑫洋 董晨 张晓辉 李凌霄 潘瑞

摘要:基于大规模实时文字处理,海量文字录入以及模仿个人笔迹等应用需求,设计识别手写字体自动建模书法机器人,采用微信小程序与下位机结合的框架,通过与写字机器人上的8266Wi-Fi芯片建立WebSocket进行数据通信。基于OpenCV的轮廓检测进行字符提取,通过训练分类器和样本文件识别文字。采用onActivityResult回调处理,实现拍照录入字体,基于Taro+React框架适配不同小程序平台,完成手写字体的识别与自动建模。写字机器人机械结构采用Hbot机械控制结构,采用前梯形加减速控制与 Bresenham 直线算法相结合实现对机构的运动速度规划。经过对识别系统的600次测试,字库识别准确率可达92%,模仿笔迹自动建模准确率可达83%。

關键词:写字机器人;手写识别;Taro+React框架;OpenCV;Hbot

中图分类号:TP393.02      文献标识码:A

文章编号:1009-3044(2022)29-0021-03

1 引言

本项目基于神经网络和计算机视觉等技术,优化写字机器人功能,可实现快速建立字库录入自定义字体。利用OpenCV文字处理库进行手写字符识别,解决了传统手写录入字体和电脑终端控制下位机难以满足速度和便捷度的要求,实现用摄像头进行文字拍照感知、实时检测和识别的需求。

2 系统结构设计

本项目分为三个子系统:软件系统,机械结构及控制盒系统,通信系统。软件系统包括:云平台部署(阿里云平台、业务服务器、手机小程序),汉字数据集处理(手写汉字数据集划分、图像增强,字符图像处理和新数据集制作)等。机械结构及控制盒系统包括:主板控制器,电机驱动模块和步进电机三部分。通信系统通过主板外接ESP-8266 Wi-Fi芯片,实现上位机小程序与硬件机械之间的交互。三个系统共同作用,实现小程序对写字机的控制。

2.1 云平台

选用阿里云物联网平台,通过调用云端专用接口连接云端业务服务器。物联网平台获取手机通信模块发送的基于MQTT物联网协议数据,业务服务器需要下发指令到写字机器人时,调用阿里云提供的向上云端API。手机小程序作为直接终端,操作者可以自行操作写字机器人的移动和书写,以及自定义字体录入和模仿。

2.2 汉字数据集处理

首先根据汉字的字形外轮廓的不同,将汉字划分为方形,菱形,三角形等形状,完成手写汉字数据集划分。对拍照或在小程序端手写的新字体进行识别和录入,为用户定制个性化手写字体数据集,录入大量文字后,完成新数据集的制作和归档。在读取图片之前要做预处理,例如图片灰度化,灰度均衡,格式转换,长文本分割和大小统一等操作。

2.3 机械结构及控制盒系统

主板控制器,电机驱动模块共同构成主板与外接驱动集成控制盒,控制外接电路的电流脉冲和步进电机的转动。通信系统通过主板外接Wi-Fi芯片,实现上位机小程序与机械结构及控制盒之间的有效交互。

3 系统关键技术实现

3.1 机械结构

写字机器人机械结构采用Hbot机械控制结构[1],将步进电机固定在两侧的稳定固件局部模块上,当夹笔模块接收到电流脉冲信号向指定方向移动时,固定在两侧的稳定固件上的步进电机都不会移动,减少了夹笔模块自由移动时,机械整体用于稳定自身而造成的能量损耗,使运动更加顺滑并且减小了抖动。写字机器人机械结构图如图2所示。

写字机器人机械结构设计主要包括固定单元和移动单元。2020L型铝型材、电机与光轴固定支架和光轴支撑支架构成了固定单元,移动单元则由步进电机,同步轮,同步带和扭力弹簧共同构成,滑动座内两个导向轮控制X轴运动。

写字机器人整体机械结构选用步进电机,钢制光轴,橡胶同步带的组合,控制写字机器XY轴的移动。主板与外接驱动集成控制盒输出电流脉冲,步进电机通过电流脉冲进行动作,固定在步进电机上的同步轮将电机的转动动作同步到同步带上,以控制写字机局部夹笔模块进行运动。

两个连接外接电路的步进电机接收到电流脉冲信号后,产生可控的顺逆时针转动,出现两个分别为α1,α2的转动角度,写字机器人夹笔模块的前后左右运动由这两个步进电机顺逆时针转动的角度控制,存在如式(1)和式(2)的等量关系[11]:

如果两个步进电机只有一个接收到集成控制盒发出的脉冲电流信号,则只有接收脉冲信号的步进电机运动,即α1=0,或α2=0:

分析可知,当电机单独运动时,X、Y轴位移相等,即X、Y 运动方向与合运动方向成 π/4 夹角。为使运动控制更加方便简洁,分别以步进电机M1、M2 单独运动时所对应合运动方向为 X 、Y 正方向,建立关于此运动的直角坐标系,新坐标系相对于原坐标顺时针旋转π/4。

由旋转矩阵,将原坐标系 x?Oy?下的点(x?,y?)对应到新坐标系x?Oy? 下,坐标为(x?,y?),那么:

式中:ɑ = π/4。

因此,完全可以在新坐标系 x?O y?下控制 Hbot 机构,按照直角坐标机构的控制方式进行,1 个步进电机对应 1 个坐标轴,分别对 2 个电机进行控制与协调[2]。

3.2 小程序架构

把物联网技术与嵌入式技术相结合,将设备通过小程序进行无线控制,采用阿里云服务器+小程序架构[3],主要功能为:用户和设备管理,日志和数据库审计,拍照识别系统等。前端基于Taro+React框架适配不同小程序平台。后端采用Springboot框架,MySQL的缓存数据库为Redis,减小数据通道压力[4]。系统局部通过ESP-8266 Wi-Fi模块发送信号给主控板,驱动主控板进行下一步动作,操作灵活,可对写字机器人进行改装和添加联机操作模式。通过写字机器人中的8266Wi-Fi芯片建立WebSocket,实现软件系统和下位机局部机械结构间的数据通信,8266Wi-Fi模块将前端发来的SVG矢量图数据解析成下位机能够识别的G-CODE类型文件,并发送下位机进行数据通信。

3.3 上下位机通信

系统中上下位机通信使用用户数据报协议无连接通信方式,写字机器人Wi-Fi通信模块通过路由器连接到网络,与阿里云服务器相连接。通过微信小程序访问服务器,返回写字机的设备状态,通过控制页面对写字机进行机械控制,具体操作包括:小程序识别图像、对图像灰度化,将图像居中,将字符尺寸大小都处理成统一标准等,最后,字符跟踪信息通过Wi-Fi发送到写字机,8266Wi-Fi模块运行固件中的G-Code生成器,再由主板通过串行接口在读取8266Wi-Fi模块发来的G-Code后控制电机运动,写字上步进电机接收电机旋转所需的控制方向坐标。写字机实质是一个控制X,Y,Z轴运动的系统,可以将期望的二维目标解构成一维线条,再运用插值算法将一维线条转换成G-Code。G-Code送给下位机执行,生成期望的X,Y坐标[5]。

3.4 手写汉字图片识别方法

对相机拍照或本地相册上传获取的图像进行以下操作:

①去除目标图片中彩色部分,只留黑白灰三色。

②减少含噪图像在传输等过程中产生的噪声,使计算机识别图片更加清晰[6]。

③若图片有倾斜趋势,进行图片倾斜校正。

④字符級处理,采用特征处理方法识别手写汉字图片,生成SVG格式数据解析[7]。

4 汉字手写图片识别系统

4.1 获取图像

通过使用相机拍照或本地相册上传获取图像。

4.2 图像预处理

将图片转化成黑白灰三色。首先设定阈值参数,高于这个阈值颜色为白色,低于这个阈值颜色为黑色[8]。再将具有大量文字的图片进行逐字拆分成单个字符,除去多余的黑色或白色边框,将去除边框的待识别汉字统一确定为相同大小,以便进行后期特征提取操作[9]。

4.3 提取特征

将图像中具有某些特点的部分作为一个特征,通过特征对比找出与这个特征轮廓相似的多边形,通过这种方式减小特征提取代码查找范围,使程序更加高效快速。同时,用输入字符的具体轮廓制作特定的汉字模板,制作完成之后采取按类别分层次再聚合,使用OCR作为识别图片文字技术,使用OpenCV作为字体轮廓检测和字符提取技术,通过以上方法,将每一个文字转化为计算机更加容易识别的灰度化矩阵。

4.4 识别

定义一个确定汉字结构元素,将汉字分类成圆形,方形,菱形和三角形等形状,在数据库服务器中进行数据筛查,从已分类汉字库筛选合适类别,再根据类别进行二次筛选。最后,用汉字分类程序按照汉字的特征元素在数据库中进行比对,筛选出对应汉字,将手写字体录入到私人订制字库中,完成一次文字录入。此操作可批量进行,实现手写文字的大量快速录入。

4.5 样本测试及后处理

后处理则利用词义、词频、语法规则知识对识别结果进行修正。首先进行模型训练,网络训练完成后,可进一步导出为AIR(GEIR)或ONNX格式的PB模型,以便后续推理。要将训练好的模型安置到Atlas上,首先要将其转换为离线模型,根据汉字检测与识别需求,设计三个引擎模块:摄像头模块、推理模块、后处理模块。摄像头模块与Camera驱动进行交互,设置摄像头的帧率、图像分辨率、图像格式等相关参数,将摄像头视频数据每一帧传给推理引擎进行计算。推理模块接收摄像头数据,对每帧图像进行两方面处理:一方面将其转为RGB格式图像,使用OpenCV对图像进行处理,检测出汉字的矩形框集合,接下来依次对每个汉字子图像通过模型进行推理,得到输出向量的结果集合;另一方面还需将每帧图像转换JPEG格式,便于查看摄像头图像。将JPEG格式的每帧图像集合和每帧识别结果集合作为输入传给后处理引擎模块。后处理模块接收上一个引擎的推理结果与摄像头JPEG图像,将矩形框集合添加到Presenter Server记录检测目标位置信息的DetectionResult类中,作为摄像头图像的检测结果,通过调用Presenter Agent的API发送到Presenter Server服务进程。Presenter Server根据接收的推理结果,求出汉字最大预测概率值所对应的索引,在索引表中查找对应汉字,在JPEG图像上进行汉字矩形框位置及汉字识别结果的标记,并将图像信息发送给前端。最后,针对拍照识别的实际场景,进行了测试。

经过600次测试,字库识别准确率可达92%,模仿笔迹自动建模准确率可达83%左右,识别字体自动建模书法机器人具有较高精准度。

参考文献:

[1] 林春盛,潘锦豪,徐成烨,等.智能三轴写字机设计[J].机械工程师,2020(4):38-40.

[2] 丁承君,张鹏,闫彬,等.平面型Hbot机构的运动控制算法[J].天津工业大学学报,2017,36(1):77-82.

[3] 王婷婷.微信小程序开发[J].信息技术与信息化,2018(12):62-63.

[4] 黄朝富,姬小波,吕明,等.基于微信平台的校园点餐系统的设计与实现[J].工业控制计算机,2020,33(1):112-113,127.

[5] 陈玉敏,谢玮,孟宪民,等.智能写字机器人设计[J].计算机测量与控制,2016,24(1):266-268.

[6] 孙凌红.集装箱箱号智能识别算法研究[D].武汉:武汉理工大学,2012.

[7] Kiran P,Parameshachari B D,Yashwanth J,et al.Offline signature recognition using image processing techniques and back propagation neuron network system[J].SN Computer Science,2021,2(3):1-8.

[8] 李建.基于辅助驾驶的交通标志检测系统研究[D].天津:天津科技大学,2019.

[9] 许雁飞,陈春玲,陈夏梅.基于OpenCV的脱机手写字符识别技术[J].信息与电脑(理论版),2011(16):63-64.

【通联编辑:李雅琪】