沈博
(深圳電器公司,廣東 深圳 518000)
莫爾斯碼電報作為最古老的無線數(shù)字化通信方式,具有占用頻帶窄,不易被干擾,設(shè)備簡單,通信距離遠等特點。隨著通信技術(shù)的發(fā)展,莫爾斯碼電報在大部分應(yīng)用領(lǐng)域已被其他無線通信方式取代,但在軍事和海運等行業(yè)中作為應(yīng)急的通信手段仍然是必不可少,可在無傳統(tǒng)通信方式的情況下,提供安全可靠的遠距離通信。
莫爾斯碼電報雖具有很多其他報文通信所不具備的優(yōu)點,但其報文格式不靈活、符號規(guī)則復(fù)雜、對通信員要求高、信息不直觀易出錯、抄報發(fā)報速率慢等缺點,使用起來諸多弊端。主要體現(xiàn)在:
(1)通信員上機時需要精神高度集中,發(fā)報時漏發(fā)、錯發(fā)報概率較大;
(2)發(fā)報速率慢,緊急情況下無法滿足及時通信的需求;
(3)報文可視化程度差,傳閱、保存不方便;
(4)實時性和便捷性差,快速錄報和抄報實現(xiàn)困難。
本文重點介紹一款智能莫爾斯格式報抄發(fā)設(shè)備(以下簡稱“抄發(fā)設(shè)備”)的實現(xiàn),及運行于該設(shè)備的一種基于OCR技術(shù)的莫爾斯報文自動識別算法,以實現(xiàn)格式報文自動錄入和糾錯,有效提高發(fā)報速率和發(fā)報正確率,解決莫爾斯碼電報的使用弊端。
報抄發(fā)設(shè)備是配合短波電臺使用的設(shè)備,將莫爾斯格式報處理為標準的“點劃”音頻格式,通過短波電臺進行發(fā)送和接收,完成通信功能。其體系架構(gòu)如圖1所示。
圖1 收發(fā)設(shè)備體系架構(gòu)圖
抄發(fā)設(shè)備整機體系架構(gòu)由硬件平臺、嵌入式移動智能操作系統(tǒng)及應(yīng)用程序三部分組成。硬件平臺包括莫爾斯碼格式報采集單元、RK3399處理器單元、電源模塊、人機交互模塊和接口控制模塊。嵌入式智能移動操作系統(tǒng)包括安全加固內(nèi)核、底層庫和操作系統(tǒng)框架。應(yīng)用程序是基于嵌入式智能移動操作系統(tǒng)運行環(huán)境下,開發(fā)相應(yīng)的業(yè)務(wù)軟件,綜合運用圖像識別、音頻編解碼、主動降噪、抗干擾等技術(shù),實現(xiàn)莫爾斯格式報快速錄入、自動發(fā)送和接收等功能。
抄發(fā)設(shè)備是基于微處理器RK3399的嵌入式智能平臺,主要由RK3399處理器單元、莫爾斯格式報采集單元、人機交互模塊、電源模塊和對外接口組成,硬件組成框圖如圖2所示。
圖2 抄發(fā)設(shè)備硬件組成框圖
莫爾斯格式報采集單元和RK3399處理器單元為抄發(fā)設(shè)備的核心組成部分,主要負責對莫爾斯格式報的運算處理,包括音頻采集、A/D轉(zhuǎn)換、D/A轉(zhuǎn)換、降噪、音頻編解碼、信號識別、收發(fā)控制等部分組成。其中攝像頭可快速采集格式報報文內(nèi)容,通過相關(guān)算法實現(xiàn)報文快速錄入。
抄發(fā)設(shè)備業(yè)務(wù)軟件是基于嵌入式智能移動操作系統(tǒng)開發(fā)的,主要功能包括溝通聯(lián)絡(luò)、報文錄入、報文發(fā)送、報文接收和參數(shù)設(shè)置五大模塊。溝通聯(lián)絡(luò)是設(shè)備間按照約定的協(xié)議格式進行的數(shù)據(jù)交互。報文錄入使用OCR(光學(xué)字符識別)技術(shù)自動識別莫爾斯格式報報文,可以快速的將紙質(zhì)格式報文轉(zhuǎn)化為可編輯的電子格式報文,從而實現(xiàn)報文的快速錄入。報文發(fā)送主要利用了莫爾斯編碼算法對電報文進行數(shù)據(jù)處理,然后將處理后的數(shù)據(jù)以音頻數(shù)據(jù)流的方式發(fā)送給電臺。報文接收采用了莫爾斯報文信號自動檢測算法,檢測音頻中“點劃”相應(yīng)頻率的莫爾斯編碼并解碼為相應(yīng)字符。
傳統(tǒng)電報紙的錄入都是依靠人工,效率低、易出錯。而抄發(fā)設(shè)備使用的OCR(光學(xué)字符識別)技術(shù)可以將拍照后的格式報圖片快速、準確地轉(zhuǎn)換為可編輯的文本文件,用戶能實時對轉(zhuǎn)換后的報文內(nèi)容進行編輯、修改、確認和發(fā)送。
莫爾斯報文主要有數(shù)碼電報和信號報,這些報文格式都是表格形式,格式固定,故稱格式報。當前包含表格圖片的文字識別仍是技術(shù)難點,需要對表格圖片進行相關(guān)處理后,再采用OCR技術(shù)進行文字自動識別。
格式報的自動識別流程有以下幾個步驟:首先,對電報圖片進行傾斜矯正、灰度化和二值化等圖像處理算法,準確有效的將電報圖片按照單元格進行分割,并對分割后的每一個單元格圖片進行樣本采集、字庫訓(xùn)練等處理,生成以電報數(shù)字為主的專用字庫;然后,判斷單元格總數(shù)初步區(qū)分報文類型,結(jié)合專用字庫通過文字識別算法識別出每一個單元格的內(nèi)容;最后,將所有單元格內(nèi)容有序的填充到報文界面中。
格式報的識別難點在于格式報圖片的預(yù)處理和圖片的文本識別。對格式報圖片的預(yù)處理和圖片的文本識別包含如下步驟:首先,對電報紙圖片進行灰度化二值化處理,利用OpenCV形態(tài)學(xué)函數(shù)腐蝕和膨脹,得到圖片表格橫縱線的交點集;然后,通過這些交點集對電報圖片進行分割得到每一個單元格;最后,采用OCR技術(shù)逐一對每個單元格文字進行識別。
格式報自動識別算法的原理主要包括以下幾個方面:
(1)連通區(qū)域分析。對格式報圖片進行灰度化和二值化處理,并進行連通區(qū)域分析,檢測出字符區(qū)域的區(qū)域輪廓以及子輪廓,將其集成為文本區(qū)域塊。
(2)文本行和字符的查找。連通區(qū)域分析后,可大致確定文本區(qū)域塊和文本尺寸,采用百分位高度過濾器過濾掉跨行大寫字母及縱向粘連一起的字符,利用字符的高度信息,選取所有字符的中值高度,通過調(diào)節(jié)字符高度的比例濾除一些無關(guān)的字符塊(比如標點符號),實現(xiàn)文本行的查找。
對塊區(qū)域的橫坐標排序,利用坐標擬合直線擬合方法—中位數(shù)最小方差擬合文本行的形狀。采用最小二乘法檢測出等距文本,對非等距字體(如百分號,斜體等),利用中線、基準線之間的空白大小來分割字符,實現(xiàn)字符的查找。
(3)字符識別。首先,分割查找出的文本行中的字符,將凹進去的輪廓點作為候選分割點,分割后,使用靜態(tài)字符分類器對分割后的字符進行識別;然后,將識別結(jié)果提供給字符庫進行檢索,結(jié)合分類器的選擇為文本行中的字符找出最匹配的字符。若候選分割點全部使用后,識別結(jié)果仍然不佳,此時需進一步對字符進行拼接,利用最佳優(yōu)先算法(Best-fisrt search strategy)檢索最優(yōu)的字符組合。最后,采用自適應(yīng)字符分類器對先分割后拼接的字符進行識別,并將識別的結(jié)果輸入字符庫進行查找匹配,若查找成功,則將查找匹配結(jié)果轉(zhuǎn)化為字符,否則,判定字符破損不全,進行字符修補。字符識別框架圖如圖3所示。
圖3 字符識別框架示意圖
格式報自動識別主要包括格式報圖片預(yù)處理、字庫訓(xùn)練、文字識別三個步驟。
2.3.1 格式報圖片的預(yù)處理
格式報圖片的預(yù)處理主要目的是為了準確有效的分割出每個單元格,包括圖片傾斜矯正、灰度化、二值化等圖像處理步驟,如圖4所示。
圖4 電報紙的圖片預(yù)處理步驟
利用收發(fā)設(shè)備的攝像頭對紙質(zhì)格式報進行拍照,拍攝的格式報圖片如圖5所示,在拍攝過程中,可能存在圖像傾斜、字跡不連續(xù)等現(xiàn)象,導(dǎo)致OCR識別的拒識率和誤識率增大。因此,需要對圖片進行傾斜矯正、灰度化處理、二值化處理、圖片腐蝕、圖片膨脹和圖片分割等處理。
圖5 紙質(zhì)格式報拍攝圖片
2.3.1.1 格式報圖片傾斜校正
報文拍攝時,不可避免地會出現(xiàn)圖像傾斜,增大圖片分割和識別處理的難度,需對圖片進行校正。使用自動校正法,自動分析電報文圖像的版面特征,計算圖像的傾斜角度,并根據(jù)傾斜角度對圖片進行校正。圖6為傾斜校正后格式報圖片。
圖6 校正后格式報圖片
2.3.1.2 格式報圖片灰度化
一般攝像頭采集的格式報圖片為彩色圖片,因光線原因,在彩色圖片中包含部分干擾像素,影響文字識別準確率。為濾除這些干擾像素,需對圖片進行灰度化處理?;叶然幚砗蟾袷綀髨D片如圖7所示。
圖7 灰度化處理后格式報圖片
2.3.1.3 格式報圖片二值化
二值化處理,就是將灰度值圖像信號轉(zhuǎn)化成只有黑和白的二值圖像信號?;叶忍幚砗蟮膱D片需進行二值化處理,將報文內(nèi)容與背景進一步分離開。二值化效果的好壞,直接影響灰度電報文圖像的識別率,二值化處理后格式報圖片如圖8所示。
圖8 二值化處理后格式報圖片
2.3.1.4 格式報圖片腐蝕
圖片腐蝕處理是用于處理二值化處理后的報文表格邊緣模糊部分。它將二值化格式報圖片與模板矩陣進行卷積,刪除格式報表格邊緣的某些像數(shù)點,濾掉格式報表格不清晰的邊界,腐蝕過程中可以根據(jù)需求自行生成模板矩陣。
2.3.1.5 格式報圖片膨脹
圖片膨脹用于補全格式報字符中不連續(xù)部分,將格式報圖片的一部分區(qū)域與卷積核進行卷積計算,計算出卷積核覆蓋區(qū)域像數(shù)點的最大值,并將這個最大值賦給參考點指定的像數(shù),格式報圖片中字符的區(qū)域參考指定像素值逐漸增長,從而修補字符中像素不連續(xù)部分。
2.3.1.6 格格式報圖片分割
圖片分割是將報文表格內(nèi)容分割成獨立的單元格,便于進行字符自動識別。使用OpenCV算法庫檢測膨脹和腐蝕處理后的格式報圖片的輪廓,獲取輪廓集。該輪廓集中包含輪廓拐點的坐標信息,設(shè)置相應(yīng)的閾值,過濾除未框選的報文內(nèi)容的輪廓,對過濾后的輪廓集進行矩形邊框擬合,獲取表格縱橫線交點集,如圖9所示。該表格縱橫線交點集包含每個矩形邊框的左上角和右下角的坐標信息,基于這些坐標信息,對格式報圖片進行分割,得到每個獨立單元格,如圖10所示。
圖9 表格縱橫線的交點集
圖10 格式報圖片分割圖
2.3.2 字庫訓(xùn)練
由于格式報的報文內(nèi)容主要是由數(shù)字和字母組成,因此以英文語言庫為基礎(chǔ),通過對電報文樣本的特征提取,生成主要以數(shù)字和英文字符組成的字庫,用于報文自動識別。以下為字庫訓(xùn)練的主要步驟:
(1)配置訓(xùn)練環(huán)境;
(2)預(yù)處理訓(xùn)練樣本。準備多張訓(xùn)練樣本圖片,將所有的訓(xùn)練樣本圖片預(yù)處理后進行合并;
(3)生成訓(xùn)練字符位置信息文件,并記錄文字識別引擎識別出來的字符及其位置坐標;
(4)修正識別結(jié)果。對訓(xùn)練字符位置信息文件中識別錯誤的字符進行人工修正,并保存結(jié)果;
(5)產(chǎn)生訓(xùn)練字符集。使用步驟(4)產(chǎn)生的訓(xùn)練字符位置信息文件作為輸入,產(chǎn)生訓(xùn)練字符集文件,該文件包含所有可被文字識別引擎識別的字符的集合;
(6)提取訓(xùn)練字符特征。新建訓(xùn)練字體屬性文件,該文件中每一行表示一種字體信息,對步驟(5)產(chǎn)生的訓(xùn)練字符集文件使用相關(guān)指令生成字符的各種特征屬性文件,以及每個字符所對應(yīng)的字符特征數(shù)量文件;
(7)合并上述步驟所產(chǎn)生的訓(xùn)練文件,生成數(shù)字文本字庫。
2.3.3 字符自動識別
字符自動識別分為兩個階段:字符檢測和字符識別。
2.3.3.1 字符檢測
字符檢測表示對格式報圖片中存在字符的區(qū)域進行定位,找到字符或者文本行的邊界框。字符檢測常用的方法為滑動窗口算法,首先從每個滑動窗口中提取字符特征,輸入已訓(xùn)練的分類器中,判斷當前滑動窗口是否包含字符,然后通過二值化來精確定位字符的位置。
通過滑動窗口算法,遍歷整個圖片,對標記的訓(xùn)練樣本特征進行判斷,找到圖片中目標字符,進行矩形化提取。
2.3.3.2 字符識別
首先,對提取的矩形化字符區(qū)域進行分割,拆分成不同的字符;然后,根據(jù)訓(xùn)練獲取的字庫對字符進行預(yù)測;最后,合并每個字符的預(yù)測結(jié)果,獲取矩形化字符區(qū)域整體的預(yù)測結(jié)果。
綜合上述算法原理,進一步提高抄發(fā)設(shè)備文字識別率和識別速度,主要采取了以下幾個措施:
(1)提高攝像頭像素,拍攝清晰的格式報圖片,降低拒識率和誤識率;
(2)優(yōu)化圖片輪廓識別函數(shù),加快表格圖片輪廓的識別,增加識別圖片表格位置的準確度;
(3)優(yōu)化圖片裁剪函數(shù),加快圖片裁剪的速度;
(4)增加樣本采集數(shù)據(jù),進行字庫訓(xùn)練,進一步完善訓(xùn)練字庫,從而提高文字識別率和識別速度;
(5)利用多線程技術(shù),同時進行圖片裁剪和圖片文字識別。
莫爾斯報文自動識別算法對莫爾斯格式報樣本的識別具有較高精確度,可有效降低報文錯識率和漏識率。運行在抄發(fā)設(shè)備上,能夠快速的識別莫爾斯電報文,避免了人工錄入速度慢和易出錯的問題,解決莫爾斯電報的使用弊端。