国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

LKJ人機界面單元顯示字符識別的方法

2019-08-28 01:52楊清祥白鴻鈞
鐵路計算機應(yīng)用 2019年8期
關(guān)鍵詞:字庫分割線字符識別

陳 宇,楊清祥,白鴻鈞

(河南思維軌道交通技術(shù)研究院有限公司,鄭州 450001)

列車運行監(jiān)控裝置(LKJ)是中國自主研發(fā)的列車運行控制系統(tǒng)體系的核心設(shè)備和重要組成部分,在保證列車運行安全方面發(fā)揮著重要作用[1]。人機界面(DMI)單元是LKJ中的用戶交互設(shè)備[2],其顯示信息的正確與否直接關(guān)系到LKJ能否安全控車。為鑒別DMI顯示信息的完整性和正確性,需采用圖像識別的方式對DMI顯示的字符信息進(jìn)行辨別,通過與后臺信息進(jìn)行對比,來判斷DMI顯示結(jié)果的正確性。因此,如何對DMI顯示字符信息的準(zhǔn)確性和完整性進(jìn)行識別是一個亟待解決的問題。

1 圖像字符識別方法

在圖像字符識別領(lǐng)域,目前主要采用光學(xué)字符識別(OCR,Optical Character Recognition)[3]技術(shù)中的單元模式匹配法(Pattern Matching)[4]和特征提取法(Feature Extraction)[5]。

1.1 單元模式匹配法

單元模式匹配法是將每一個字符采用不嚴(yán)格、最為近似的方式與預(yù)先保存的標(biāo)準(zhǔn)字體和字號的位圖進(jìn)行比較,將最為相似的字符認(rèn)定為目標(biāo)字符;該方式在被識別的內(nèi)容中出現(xiàn)不同字體時,會導(dǎo)致正確的字符反而不是最近似的錯誤識別。

1.2 特征提取法

特征提取法是先將單個字符分解成水平線、斜線、曲線等不同的字符特征,然后將這些字符特征與預(yù)先保存的字符特征進(jìn)行比較,將特征最為接近的字符認(rèn)定為目標(biāo)字符。該方式拆分難度大、識別時間長,同時,對于漢字特征極為相似或基本相同的字符,識別準(zhǔn)確率較低。

鑒于OCR技術(shù)在識別中存在不能完全正確識別及識別速率不高的情況,結(jié)合DMI顯示字符信息的特性,本文設(shè)計了一種基于點陣對比方式進(jìn)行字符識別的方法,此方法是一種完全對比的識別方法,通過將圖像字符的點陣數(shù)據(jù)與字庫中的點陣數(shù)據(jù)進(jìn)行對比,只有完全吻合時,才判斷是目標(biāo)字符。

2 系統(tǒng)功能設(shè)計

對圖像字符的識別主要分為圖像二值化、字符串定位與剪裁、字符分割、字符識別4個過程,如圖1所示。

圖1 字符識別流程圖

2.1 圖像二值化

圖像二值化是將一幅彩色圖像轉(zhuǎn)換成為只有黑和白兩種顏色的圖像,并且使文字和背景各用一種顏色,如圖2所示。

圖2 圖像二值化轉(zhuǎn)換圖

圖像字符二值化的主要目的包括以下兩點。

(1)被識別圖像上的顏色通常多于兩種,甚至字體顏色也存在多種的情況。二值化能夠?qū)⒆煮w顏色轉(zhuǎn)換成白色,背景顏色轉(zhuǎn)換成黑色。

(2)僅有黑白兩種顏色的圖像,圖像尺寸較小,且顏色對比較為明顯,便于對字符進(jìn)行識別。

圖像二值化過程主要包含色彩轉(zhuǎn)換、閥值計算、像素二值化、顏色反轉(zhuǎn)4個步驟。

2.1.1 色彩轉(zhuǎn)換

彩色圖像中的每個像素都是由紅、綠、藍(lán)3種顏色分量組合而成,每種顏色分量按照不同的比例混合,能夠搭配出各種各樣的顏色。色彩轉(zhuǎn)換的目的是將彩色圖像轉(zhuǎn)成灰度圖像。

圖3 圖像顏色分量提取

遍歷圖像中的每個像素,針對每個像素分別取出它的紅、綠、藍(lán)3個顏色分量,如圖3所示,假設(shè)像素i紅、綠、藍(lán)3個顏色的顏色分量分別為Ri、Gi、Bi,如式(1),計算得到灰度值Di:

式中:Pr、Pg、Pb分別是紅、綠、藍(lán)3個顏色分量的乘法系數(shù),表示紅、綠、藍(lán)3個顏色分量對于轉(zhuǎn)換后的黑白圖像所起的作用程度,取值范圍介于0.0~1.0之間,且三者相加的和應(yīng)等于1.0。

若將Pr、Pg、Pb三者的值都設(shè)置為0.333,則像素轉(zhuǎn)換后的灰度值為紅、綠、藍(lán)3個顏色分量的平均值,也可以如式(2)所示。

將整幅圖像中每個像素轉(zhuǎn)換完畢之后,即可得到一張只包含有灰度分量的灰度圖像,如圖4所示。

圖4 色彩轉(zhuǎn)換示意圖

2.1.2 閾值計算

閾值的作用是將圖像中大于閾值的灰度變?yōu)橐环N顏色(通常為白色),而將小于閾值的灰度變?yōu)榱硪环N顏色(通常為黑色)。閾值計算的方法很多,這里選用最簡單的方法,即統(tǒng)計出灰度圖像中的最大灰度值(Dmax)和最小灰度值(Dmin),然后計算二者的平均值T作為閾值,如式(3)所示。

2.1.3 像素二值化

為了使圖像變?yōu)楹诎讏D像,即前景字體顏色變?yōu)榘咨?、背景顏色變?yōu)楹谏褂檬剑?)中計算的閾值,遍歷灰度圖像中的每個像素,將圖像中大于閾值的灰度變?yōu)榘咨?,小于閾值的灰度變?yōu)楹谏?,如圖5所示。

2.1.4 顏色反轉(zhuǎn)

圖5 像素二值化示意圖

在某些情況下,經(jīng)過像素二值化處理后,可能出現(xiàn)背景顏色為白色、前景字體顏色變成了黑色的相反情況。此時,需要將黑白兩種顏色進(jìn)行反轉(zhuǎn)。

首先判斷二值化后的圖像是否需要反轉(zhuǎn)。判斷的方法是,分別統(tǒng)計白色像素和黑色像素的數(shù)量,比較黑白像素數(shù)量的多少。如果黑色像素少于白色則需要做反轉(zhuǎn),否則,如果白色像素少于黑色像素則不需要做反轉(zhuǎn)。當(dāng)判斷的結(jié)果是需要反轉(zhuǎn)時,遍歷二值化后的圖像中每個像素,將黑白顏色依次互換。

2.2 字符串定位與剪裁

字符串定位與剪裁是指將字符串的最小圖像范圍之外的部分剪裁掉,只保留包含有字符串的最小區(qū)域。目的是盡量減小圖像中其他區(qū)域?qū)D像字符識別的影響,并降低在識別過程中的計算時間,如圖6所示。

圖6 字符串定位與剪裁示意圖

字符串定位與剪裁過程需計算出圖像中字體所在區(qū)域的外接矩形,再將這個矩形區(qū)域剪裁出來,僅保留矩形區(qū)域內(nèi)部的內(nèi)容。

字符串定位與剪裁過程的步驟如下。

(1)先依次遍歷二值化后圖像的每一行,統(tǒng)計出每一行中前景色(白色)像素的數(shù)量[7],如圖7所示。

圖7 前景色像素數(shù)量統(tǒng)計

(2)遍歷完所有行后,得到一個一維數(shù)組,數(shù)組中的每一個元素對應(yīng)二值化后圖像的每一行,表示每一行中前景色(白色)像素的數(shù)量。圖7對應(yīng)的數(shù)組為[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 5, 18, 33, 14, 27,17, 26, 17, 17, 17, 21, 19, 5, 20, 3, 0, 0, 0, 0, 0, 0, 0,0, 0]。

(3)在數(shù)組中找出第1個不為零的元素和最后1個不為零的元素,記錄下這兩個元素在數(shù)組中的序號,如圖7中對應(yīng)的序號分別為10和25, 這兩個序號就是字體所在區(qū)域外接矩形的上邊緣和下邊緣。

(4)將上下邊緣以外的圖像裁掉,僅保留上下邊緣之間的部分。如圖7僅保留第10行~第25行之間的部分。

(5)效仿(1)~(4),找到字體所在區(qū)域外接矩形的左右邊緣,并將左右邊緣以外的圖像剪掉。

通過(1)~(5),得到包含字符串的最小區(qū)域的圖像。

2.3 字符分割

字符分割[8]采用一種遞歸的方法,通過不斷嘗試畫分割線,并根據(jù)畫出的分割線與字符串是否相交決定繼續(xù)分割還是退回重新畫分割線。以此來判別每個字符的邊界范圍,將字符串中每個字符所占據(jù)的區(qū)域計算出來,如圖8所示。

圖8 字符分割示意圖

2.3.1 字符分割的條件

字符分割需要字符串所使用的字庫滿足下列條件。

(1)字庫中的全角字符所占區(qū)域的寬度和高度等于字號。如圖8中字號是16號,則該字庫中的全角字符所占區(qū)域的寬度和高度應(yīng)等于16。這里指的是所占區(qū)域的寬度和高度,不是指字符本身的寬度和高度。

(2)字庫中的半角字符所占區(qū)域的高度等于字號,寬度等于字號的一半。圖8所使用的字庫中的半角字符所占區(qū)域的高度和寬度分別等于16和8。

(3)字庫中的每一個字符(包括全角和半角),所在區(qū)域的最左列和最右列必須為背景色。

2.3.2 字符分割流程

字符分割是在圖像中針對每個字符找出一根對應(yīng)的縱向分割線,使得分割線恰好落在兩個字符之間,然后依據(jù)分割線將圖像分割成若干塊;為了便于理解,在圖像的左右兩邊也畫出了一條分割線,如圖9所示。但針對左右兩部分存在間隙的左右結(jié)構(gòu)的漢字,應(yīng)當(dāng)避免被分割線一分為二,如川、和、好、如等。

圖9 分割線示意圖

在圖像中找分割線之前,應(yīng)先計算出相鄰的兩條分割線之間的正確距離,在上述字庫的限制條件中已明確圖像中字符寬度應(yīng)等于字號或字號的一半,則相鄰兩條分割線之間的距離也應(yīng)等于字號或字號的一半。如圖9中任意兩條相鄰分割線之間的距離應(yīng)等于16或8。

字符分割線的確定采用從左至右的遞歸方法,以不斷向前邁步嘗試和向后回退的方式來判別每個字符的邊界范圍,并劃上分割線,具體分割步驟如下。

(1)設(shè)置變量N的初始值為1;

(2)在圖像最左邊的外側(cè)第N像素處畫一條分割線,由于這條分割線在字符左邊緣外側(cè),假設(shè)字符的坐標(biāo)從0開始,則它在圖像上的橫坐標(biāo)是-N;

(3)從當(dāng)前分割線向右方邁步,邁步的步長為字號或字號的一半,若第1次到達(dá)圖像的此坐標(biāo)處,則使用字號作為步長,若第2次到達(dá)圖像的此坐標(biāo)處則使用字號的一半作為步長,若第3次到達(dá)圖像的此坐標(biāo)處,則說明當(dāng)前的分割線位置是錯誤的,將當(dāng)前分割線取消,回退至前一次邁步位置,并重新執(zhí)行本步驟,若此時已位于圖像的最左邊緣,應(yīng)清除所有分割線,將N的值增加1,然后執(zhí)行(2);

(4)在邁出后的位置嘗試畫一條分割線,如果分割線與字體不相交,即分割線所在的縱線上沒有字體像素,則執(zhí)行(5),否則,若分割線與字體相交,則執(zhí)行(6);

(5)將這條分割線與前一條分割線之間的區(qū)域假定為一個字符,并將這個區(qū)域裁剪出來做字符識別嘗試,若字符識別失敗,則執(zhí)行(6),否則,暫時認(rèn)定本次邁步成功,并執(zhí)行(7);

(6)進(jìn)入此步驟,表明向前邁步失敗,應(yīng)將之前畫的分割線取消,回退至前一次邁步位置,并重新執(zhí)行(3);

(7)判斷當(dāng)前所在位置是否已達(dá)圖像的最右端,如果未到達(dá),執(zhí)行(3),繼續(xù)查找下一條分割線,若已達(dá)圖像的最右端,則執(zhí)行(8);

(8)進(jìn)入此步驟,表明所有的分割線都已經(jīng)成功搜索完畢,將每一次邁步過程中識別出的字符依次連接,形成字符串。

以上步驟流程如圖10所示。

圖10 字符分割流程圖

2.4 字符識別

字符識別是將圖像中每個字符區(qū)域的像素信息數(shù)據(jù)化,與字庫中的數(shù)組比對,數(shù)組中每個字節(jié)都相等則輸出這個字符,圖像中所有字符識別完成連接起來,形成字符串。

字符識別過程主要包含字符居中、圖像數(shù)據(jù)化、字庫對照3個步驟。

2.4.1 字符居中

在字符分割過程得到的結(jié)果中,大多數(shù)情況圖像中字符是居中的,但特定漢字、字母、標(biāo)點符號是無法居中的,如下劃線“_”上下不居中,中括號“[”和“]”左右不居中。因此需要對這些特殊字符圖像做居中化處理。

2.4.2 圖像數(shù)據(jù)化

進(jìn)行至該步驟時,圖像只包含此單個字符的前景色和背景色,圖像的每個像素都是構(gòu)成字符數(shù)據(jù)的必要點,以點陣樣式呈現(xiàn),此種圖像為字符的點陣圖像。把字符圖像轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)的轉(zhuǎn)化方式如下。

(1)將圖像中的前景色的點認(rèn)為是1,將背景色的點認(rèn)為是0。

(2)按照先列后行的順序依次遍歷圖像中的每個點。

(3)在遍歷每一行時,將行內(nèi)的點認(rèn)為是1 bit,組成相應(yīng)的字節(jié)數(shù)據(jù)。

(4)在遍歷完成每一行之后,即得到了圖像的點陣數(shù)據(jù),它存在形式是數(shù)組,數(shù)組中的每個字節(jié)表示8個點的信息。

2.4.3 字庫對照

字庫對照采用點陣對比的方法來對2.4.2中的字符點陣做識別。點陣對比是指,將數(shù)據(jù)化后的字符點陣數(shù)組分別與字庫中的每個字符對應(yīng)的點陣數(shù)組逐個作對比,若兩數(shù)組的對應(yīng)字節(jié)均相等,則認(rèn)為此字符就是圖像中的字符,取出它的GBK編碼,識別成功,否則,認(rèn)為識別失敗[9-10]。

對原圖像中的所有字符逐一進(jìn)行比對,待圖像中所有字符串均識別完成后,將每個字符的GBK編碼依次連接,形成字符串,至此,字符識別全部完成。

3 系統(tǒng)開發(fā)與測試

3.1 開發(fā)平臺環(huán)境

本方法主要是針對數(shù)據(jù)做轉(zhuǎn)換和處理,不涉及到對操作系統(tǒng)的依賴,可以適用于多種操作系統(tǒng)和開發(fā)語言。操作系統(tǒng)可選用Windows或Linux,開發(fā)語言可選用C語言、C++語言、Java語言等。

本文選用的操作系統(tǒng)是Windows 7,開發(fā)語言是C++語言,并以Visual Studio 2013作為開發(fā)環(huán)境。

3.2 系統(tǒng)測試

開發(fā)完成后,使用該系統(tǒng)測試讀取了600張LKJ界面的真實截圖,并對識別后獲得的結(jié)果進(jìn)行人工核驗。經(jīng)驗證字符識別的正確率可達(dá)到98%,單次識別時間小于1 s。

4 結(jié)束語

本文采用了基于點陣對比的方法,既能實現(xiàn)半角字符和全角字符混合排版識別,又不需要圖像處理所必需的大規(guī)模計算,且字符識別速率及準(zhǔn)確度均較高,能滿足對DMI顯示字符信息進(jìn)行準(zhǔn)確識別的應(yīng)用需要。下一步,為適應(yīng)更高識別速率的需求,在算法實現(xiàn)上可采用匯編編碼,或者采用相關(guān)的硬件圖形卡來輔助實現(xiàn)。該研究結(jié)果已在新一代列車運行監(jiān)控裝置(LKJ)軟件仿真測試系統(tǒng)中成功應(yīng)用,實現(xiàn)了對DMI顯示字符信息的準(zhǔn)確性、完整性的識別,顯著提高了識別效率。

猜你喜歡
字庫分割線字符識別
全成形運動休閑外套分割線的設(shè)計與編織工藝
女裝分割線結(jié)構(gòu)設(shè)計技術(shù)研究
No.2 喜茶聯(lián)合漢儀字庫推出微型書和書簽
分割線在服裝結(jié)構(gòu)設(shè)計中的運用思路探析
融合字符及字符排列特征的銘牌識別方法
一種基于OpenCV的車牌識別方法
分割線設(shè)計手法在服裝設(shè)計中的運用分析
基于MATLAB的圖片中字符的分割與識別
字庫字體侵權(quán)系列案例分析研究
老家的惜字庫