李鑫洋 董晨 張曉輝 李凌霄 潘瑞



摘要:基于大規模實時文字處理,海量文字錄入以及模仿個人筆跡等應用需求,設計識別手寫字體自動建模書法機器人,采用微信小程序與下位機結合的框架,通過與寫字機器人上的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.
【通聯編輯:李雅琪】