李建 尹項博 李佳俊 王海瑞
摘要:該文基于數(shù)字圖像處理技術(shù)及OCR文字識別引擎,在基于Android的智能終端上設(shè)計了一個列車車票管理軟件,簡化列車員的管理工作。文中重點研究了如何通過預(yù)處理過程來加快OCR引擎的速度,提高正確率。
關(guān)鍵詞:圖像預(yù)處理;開源OCR引擎;二維條碼;Android開發(fā)
中圖分類號:TP391.44
在旅客列車開行過程中,列車員的一項重要而繁瑣的重復(fù)性工作是核驗乘客的車票,防止旅客上錯車;在即將到站時提醒相應(yīng)鋪位的乘客,以防旅客坐過站。在平板電腦、智能手機等移動智能終端廣泛應(yīng)用的大背景下,可利用攝像頭采集車票圖像,再通過圖像處理技術(shù)提取出車票信息,實現(xiàn)車票管理的信息化。
從車票提取乘客信息有兩種渠道,一是通過車票右下方的二維條形碼(QR碼);二是直接通過文字識別技術(shù),讀取車票上的文字信息。第一種渠道中,需要破解QR碼的加密算法才能獲得車票信息,這是一種不合適的行為。對于基層列車乘務(wù)員而言,是沒有權(quán)限接入鐵路部門的票務(wù)系統(tǒng)的。因此,應(yīng)該考慮使用第二種方案來提取車票信息。這種方案的優(yōu)點是避免了破解加密算法及帶來的法律糾紛;缺點是需要進行圖像處理及文字識別,運算量相對大一些。由于現(xiàn)有的移動智能終端大都配備4核1.2GHz以上的ARM處理器,1G Bytes以上的內(nèi)存,及高分辨率攝像頭,使得實時采集車票圖像并提取車票信息成為可能。
1 系統(tǒng)概況
基于智能終端的驗票軟件,其圖像采集設(shè)備采用終端自帶的攝像頭,通過終端自帶的LCD屏、喇叭輸出結(jié)果,充分利用智能終端的資源,大大降低系統(tǒng)部署成本。
為便于大量旅客信息的保存及查詢,采用Sqlite數(shù)據(jù)庫存儲車票數(shù)據(jù)。此外,還有一些有關(guān)列車的設(shè)置信息,比如車次、車廂號、各站點的到站發(fā)站時間等。列車員可以通過觸摸屏手動輸入這些設(shè)置信息,也可以通過鐵路網(wǎng)站直接下載。
軟件的主要處理過程如圖1所示:
預(yù)處理過程主要包括顏色空間轉(zhuǎn)換、去噪、圖像校正等過程。文字識別過程主要基于OCR(Optical character recognition)識別引擎完成文字提取。識別結(jié)果存入數(shù)據(jù)庫后,軟件根據(jù)到站時間設(shè)置提醒鬧鐘,確定何時發(fā)出旅客到站的提醒信號。下面重點對預(yù)處理和識別部分的原理及過程進行敘述。
2 詳細處理過程
2.1 預(yù)處理過程
本設(shè)計中的預(yù)處理過程主要包括以下兩個方面:基于QR碼圖形的幾何調(diào)整,以及基于固定位置的文本區(qū)域分割。
2.1.1 基于QR碼圖形的幾何調(diào)整
由于采集距離遠近及拍攝角度的不同,采集的車票圖像尺寸和系統(tǒng)中標準車票圖像尺寸間存在較大的差別,為便于后續(xù)處理,在預(yù)處理階段除了進行顏色空間轉(zhuǎn)換、去噪外,重點進行圖像的幾何調(diào)整。盡管OCR引擎在一定程度上能夠自動處理諸如圖像旋轉(zhuǎn)、縮放、圖像顛倒等問題,但會引入更多的計算量,同時增加出錯的概率。為了提高識別性能,我們根據(jù)車票的特殊標志對車票圖像進行幾何調(diào)整。由于新一代的火車票票面上均印有二維QR碼,我們可以通過二維QR碼的形狀及位置信息來對車票的幾何參數(shù)加以判斷。典型的火車票圖片如圖2所示:
從中可以看到,由于拍攝時不可避免地會產(chǎn)生圖像旋轉(zhuǎn)現(xiàn)象,在進行后續(xù)處理之前,需要先將圖片旋轉(zhuǎn)復(fù)原到正常位置。旋轉(zhuǎn)復(fù)原的前提是確定圖像拍攝時被旋轉(zhuǎn)的角度,方法如下:
首先提取車票QR碼圖像的灰度邊緣。常用的邊緣提取算法有Sobel[1]、Canny[2]算子等,其中Canny算子的性能最好,但是復(fù)雜度較高;而Sobel算子具有計算過程簡單的特點,適合在嵌入式設(shè)備上運行。這里使用Sobel算子的垂直模板來提取邊緣,并對邊緣圖像進行二值化,得到的結(jié)果如圖3所示。
接著對圖中的線條進行骨骼化[1]處理。為了防止大量短線條的干擾,可以在進行骨骼化之前,使用膨脹腐蝕算法來濾除圖中的大量小區(qū)域。骨骼化后的結(jié)果如圖4所示。
可以使用直線擬合方法來提取圖4中的各條直線,但更常用的是使用Hough變換[3]。Hough變換把圖像空間中的直線檢測問題轉(zhuǎn)換為參數(shù)空間中的點檢測問題,再在參數(shù)空間中通過簡單的累加計算完成檢測。完成Hough變換檢測直線的結(jié)果如圖5所示。利用圖中直線的斜率,就可以判斷QR碼的旋轉(zhuǎn)角度(即車票圖像的旋轉(zhuǎn)角度);通過對車票圖像執(zhí)行一個旋轉(zhuǎn)變換,便可得標準角度的車票圖像。
另外一個問題是判斷車票的縮放比例以及判斷車票是否顛倒。在本設(shè)計中,我們通過QR碼中的位置探測圖形來實現(xiàn)檢測。
在QR碼中,位置探測圖形是指QR碼中位于左上、右上、左下三個區(qū)域的方塊狀圖形。如圖6所示。每個位置探測圖形的模塊序列由一個深色-淺色-深色-淺色的次序構(gòu)成,各元素的相對寬度的比例是1:1:3:1:1。檢測位置探測圖形的方法有很多[4],這里不詳細敘述。找到三個位置探測圖形以后,根據(jù)三者中心坐標之間的關(guān)系,可以判斷出圖像是正立還是倒立的,方法如下:
假設(shè)圖像的坐標原點位于左上角,三個位置探測圖形中心處的坐標分別為:(x1,y1),(x2,y2),(x3,y3)。由三個點連接的三條線段中,尋找夾角接近90°的兩條線段,如果90°夾角的內(nèi)部指向右下角,則圖像是正立的;否則圖像是倒立的。
對于車票的縮放比例,在圖片的角度已經(jīng)旋轉(zhuǎn)復(fù)原的情況下,根據(jù)測量三個位置探測圖形的距離WX,WY,對比標準參考圖像中的位置探測圖像間的距離WX_ref,WY_ref,便可計算出圖片在水平和垂直方向上的大致縮放比例。
2.1.2 文本區(qū)域分割
調(diào)整完角度和方向的圖片可以直接輸入到OCR引擎進行文字識別。但由于車票上很多區(qū)域都沒有文字信息,且有一部分文字不是我們所關(guān)注的,沒有必要進行識別。另外,開源OCR識別引擎的處理速度比較慢,處理太大的圖片時難以滿足實時性的要求。比如,經(jīng)測試,一張分辨率為1280x960的車票圖片,在MTK6589處理器上利用tesseract引擎進行文字識別時,大概需要10秒鐘左右的時間,實時性較差。在本設(shè)計中,考慮到關(guān)注的文字信息只出現(xiàn)在一些固定的區(qū)域,一旦火車票的角度和尺寸被復(fù)原后,文字區(qū)域的位置是固定的??梢砸虼藢⑽淖謪^(qū)域分割出來,加快OCR的處理速度。圖7中,方框部分為由程序根據(jù)預(yù)先設(shè)置的坐標標識出來的關(guān)注區(qū)域。從中可以看到,車票上關(guān)注的區(qū)域只有6個,所含文字數(shù)量非常有限,有利于加快OCR的識別速度。
2.2 文字識別
關(guān)于光學(xué)字符設(shè)別OCR的研究已經(jīng)非常多,尤其是商用的OCR引擎已經(jīng)能夠達到比較好的識別效果,如漢王[5]、ABBYY[6],等,但是由于涉及版權(quán)及成本問題,沒有在本設(shè)計中采用。開源OCR也比較多,比較流行的比如tesseract[7]。與專業(yè)OCR識別引擎相比,開源OCR的識別正確率較低,速度較慢。但如果針對某個具體的問題來加以優(yōu)化,則可大大改善其性能。
為了提高tesseract識別的速度和準確率,我們先按照位置來對車票圖像進行分割;接著對不同區(qū)域的分割圖片采用不同的訓(xùn)練和識別策略:
(1)對于車次、座號、席別、日期時間等區(qū)域,由于其格式是完全固定的,所含字符的種類也十分有限,因此,我們有針對地訓(xùn)練比較小的模板庫進行識別,加快識別的過程,提高識別的準確性。
(2)對于起點站、終到站區(qū)域。由于車次識別完成后,其停靠站點的選項就已經(jīng)確定,因此,我們讓識別引擎有針對地比對與該次車各個候選站點的相似性,從而提高準確率。
測試表明,采用上面的方法后,識別單張車票圖像的時間從10余秒減少到1秒左右,能夠滿足實用的需求。
2.3 后續(xù)處理
一旦識別出車票,則首先判斷該旅客是否屬于本次列車、本車廂。如果不是,不允許旅客上車;如果是,則將旅客數(shù)據(jù)記錄進數(shù)據(jù)庫,并啟動定時器,周期性的檢查旅客是否即將到站,一旦即將到站,則發(fā)出提示信息。檢查的準則是根據(jù)當前時間與軟件中預(yù)置的列車到站時刻表。如果發(fā)生列車晚點,則在列車到達中間站后,乘務(wù)員可根據(jù)到站時間人為修正一個時間偏移。
3 結(jié)束語
本設(shè)計基于OCR文字識別引擎,在移動智能終端上設(shè)計了一個車票管理軟件,基于該軟件可以簡化列車員的工作量,提高工作效率。本設(shè)計的特點是在預(yù)處理階段,通過QR碼的特征來對車票進行幾何校正;在OCR識別的過程中,通過分割車票的感興趣區(qū)域,加快識別速度。
參考文獻:
[1]R. Gonzalez, R. Woods. Digital Image Processing, Addison Wesley, 1992,pp 414-428.
[2]J. Canny. A Computational Approach To Edge Detection, IEEE Trans. Pattern Analysis and Machine Intelligence, 8:679-714,1986.
[3]R. O. Duda, P. E. Hart. Use of the Hough Transformation to Detect Lines and Curves in Pictures.Comm. ACM, Vol.15, pp.11-15.
[4]劉宏偉,苗東,李志剛等.二維條碼的識別方法[J].微計算機信息(測控自動化),2004(04).
[5]漢王文本識別技術(shù).http://ka.hanwang.com.cn/OCR技術(shù)/index.htm.
[6]泰比移動OCR引擎.http://www.abbyy.cn/mobileocr/.
[7]tesseract.https://code.google.com/p/tesseract-android-tools/.
作者信息:李建(1994-),男,吉林四平人,本科在讀,電子信息工程專業(yè)。
作者單位:北方工業(yè)大學(xué) 電子信息工程學(xué)院,北京 100041
基金項目:北京市大學(xué)生科學(xué)研究與創(chuàng)業(yè)行動計劃項目。