靳彩園,姜月秋
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽 110159)
一種高效的藥瓶標(biāo)簽字符識別系統(tǒng)關(guān)鍵算法研究
靳彩園,姜月秋
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽 110159)
針對藥瓶標(biāo)簽的特點,對字符定位、字符分割、字符識別等多個環(huán)節(jié)進行了深入研究,設(shè)計了一種字符識別系統(tǒng)。對藥瓶標(biāo)簽圖像進行預(yù)處理,為后續(xù)藥品標(biāo)簽上字符的定位做準(zhǔn)備。用輪廓跟蹤法定位字符所在的大致區(qū)域,采用水平投影結(jié)合圖像分割方法精確定位字符區(qū)域。利用垂直投影法定位字符中的粘連塊,并進一步利用滴水算法分割粘連字符。選用K-L變換對粗分類后的子類提取字符特征,選用一種自適應(yīng)調(diào)節(jié)學(xué)習(xí)率和動態(tài)調(diào)整S型激勵函數(shù)相結(jié)合的改進BP算法對字符進行精確識別。實驗證明本系統(tǒng)能夠快速、高效地識別出藥瓶標(biāo)簽上的字符,有實用價值。
藥瓶標(biāo)簽;字符定位;字符分割;字符識別;BP神經(jīng)網(wǎng)絡(luò)
由于藥品質(zhì)量密切關(guān)系著人們的生命健康,藥品管理部門對藥品的檢測要求越來越嚴(yán)格。而藥品包裝上標(biāo)簽內(nèi)容包括藥品的批號、生產(chǎn)日期和有效期,傳遞了藥品的重要信息,所以藥品標(biāo)簽的字符識別是藥品檢測的重要內(nèi)容。隨著光學(xué)字符識別技術(shù)的不斷改進和完善,該技術(shù)已相對比較成熟并廣泛應(yīng)用于車牌識別、票據(jù)識別、信息采集中的證件識別等多個領(lǐng)域,但如果與具體的工作場景相關(guān)聯(lián),滿足具體要求的字符識別,識別的正確率還是會明顯下降。所以字符識別技術(shù)仍然在研究探索的階段,本文將字符識別技術(shù)應(yīng)用在藥品標(biāo)簽字符檢測方面具有重要的研究意義。
藥品標(biāo)簽字符識別算法的任務(wù)是將藥品標(biāo)簽上的字符自動識別出來,主要包括三大部分,即藥品標(biāo)簽字符區(qū)域的定位[1]、分割[2]和識別[3]。字符定位方面,國內(nèi)外學(xué)者對車牌定位方法[4]的研究比較多,但由于藥瓶標(biāo)簽不存在車牌的字符個數(shù)固定、字符高寬一定等特點,單靠一種車牌定位方法,很難達(dá)到滿意的效果。所以本文提出了輪廓跟蹤法[5]和投影法相結(jié)合的新的定位方法,完成對字符區(qū)域的精確定位。目前字符分割的研究主要集中在模板匹配法、投影法和基于區(qū)域生長法的分割方法上,由于本文中藥品標(biāo)簽字符的格式存在多樣性且出現(xiàn)了字符的粘連問題。本文首先利用垂直投影方法[6]將字符中的粘連塊定位出來,然后進一步利用滴水算法[7]對粘連字符進行分割,經(jīng)過粗、細(xì)二次分割使切分的正確率大大提高。字符識別方面,人工神經(jīng)網(wǎng)絡(luò)是一種全新的模式識別技術(shù),它利用人工神經(jīng)網(wǎng)絡(luò)來實現(xiàn)模式的識別,具有良好的容錯性和自適應(yīng)性、高速尋找優(yōu)化解等優(yōu)點,而BP神經(jīng)網(wǎng)絡(luò)具有理論依據(jù)堅實、推導(dǎo)過程嚴(yán)謹(jǐn)、物理概念清晰及通用性好等優(yōu)點,許多問題都可以用它來解決。所以本文采用改進的BP神經(jīng)網(wǎng)絡(luò),比較準(zhǔn)確、快速地識別出字符。
1.1 圖像灰度化
由于灰度圖像只含亮度信息,不含色彩信息,便于圖像處理。因此本文首先把從相機采集到的彩色藥瓶圖像轉(zhuǎn)為灰色圖像,便于圖像的二值化。
1.2 字符畸變校正
由于藥瓶是柱體,相機所獲得的圖像中藥瓶標(biāo)簽表面是弧形,所以需對圖像進行畸變矯正[8],圖1為圓柱體展開后平面。
圖1 字符的畸變校正算法
對于藥瓶圓柱體的橫截面,將圓柱體的半徑R均分為n份,每份長度是a,柱面展開后對應(yīng)的實際長度分別為a1,a2,a3,…,ai,…,an
其中
n×a=R
(1)
cosθi×R=i×a
(2)
ai=(θi-1-θi)×R
(3)
所以
ai=(arccos(i-1)×a/R-arccos(i×a/R))×R
(4)
根據(jù)以上得出的關(guān)系式,采用逆向映射法,利用目標(biāo)圖像的坐標(biāo)推導(dǎo)得出相應(yīng)原圖像的坐標(biāo),并用線性插值法對非整數(shù)坐標(biāo)點的灰度進行判定。這樣就將帶有畸變字符的圖像進行了非線性的校正。
1.3 圖像平滑
由于場景條件等因素的影響,拍攝得到的圖像會伴隨有噪聲的干擾,使圖像質(zhì)量變差,這時需要平滑噪聲。中值濾波是經(jīng)典的平滑噪聲的方法,它的基本原理是取某種結(jié)構(gòu)的二維滑動模板,將模板內(nèi)像素按照像素的大小進行排序,生成單調(diào)上升(或下降)的數(shù)據(jù)序列,將窗口中心點的灰度值用排好序后中間的值代替,這樣可以讓周圍的像素接近真實值,從而將孤立的噪聲點去掉。它能有效地抑制圖像中隨機噪聲,同時很好地保持圖像的邊緣。
1.4 邊緣檢測
邊緣蘊含著豐富的圖像信息,是圖像分割所依賴的重要特征。而LOG算子將高斯平滑濾波器與拉普拉斯銳化濾波器結(jié)合起來,先平滑掉噪聲,再進行邊緣檢測,定位精度較高,可以準(zhǔn)確地檢測到圖像的邊緣,且圖像的邊緣連續(xù)性也非常好,所以本文采用LOG邊緣檢測算子進行運算。
這樣就完成了圖像的預(yù)處理,其處理效果見圖2。
圖2 預(yù)處理效果
藥瓶標(biāo)簽的字符定位是從復(fù)雜的圖像中找出藥品標(biāo)簽字符所在的位置,并將其準(zhǔn)確地分割出來。它是藥瓶標(biāo)簽字符識別系統(tǒng)的關(guān)鍵部分之一,其定位效果直接關(guān)系到接下來字符的分割與識別。針對藥瓶標(biāo)簽上字符的特點,本文提出了輪廓跟蹤法和投影法相結(jié)合的新的定位方法。
2.1 字符的粗定位
1)首先選用數(shù)學(xué)形態(tài)學(xué)方法對預(yù)處理后的圖像進行水平方向的膨脹運算,結(jié)構(gòu)元素選為{[-1,0],[0,0],[1,0]},將整個的圖像分割為幾個連通的區(qū)域,并進行標(biāo)記。
2)對圖像進行輪廓跟蹤,提取出字符所在的連通區(qū)域:首先按照從左到右,從下到上的順序搜索,找到最左下方的白色邊界點即為第一個邊界點,然后從它開始,定義初始的搜索方向為沿左上方;如果左上方的點是白點,則為邊界點,否則搜索方向順時針旋轉(zhuǎn)45度。這樣一直找到第一個白點為止。然后把這個白點當(dāng)作新的邊界點,對當(dāng)前搜索方向逆時針旋轉(zhuǎn)90度,繼續(xù)使用相同方法搜尋下一個白點,直到最后回到最開始邊界點時就找到了所有邊界點。同時,分別計算出每個連通區(qū)域最高點的寬度和高度、最低點的寬度和高度。根據(jù)實驗和先驗知識用下面的式子作判斷準(zhǔn)則,將同時滿足下述兩個條件的連通區(qū)域提取出來并且將提取出的區(qū)域中的像素設(shè)置為0和255以外的其他灰度值,在此將其設(shè)置為128。
MaxPointHeight-MinPointHeight≥170
(5)
MaxPointHeight-MinPointHeight<230
(6)
最后,掃描完整幅圖像后,重新從左上方掃描圖像,將圖像中所有像素為128的像素點賦值為255,得到的白色區(qū)域即為藥瓶標(biāo)簽?zāi)繕?biāo)字符所在的大致區(qū)域,這樣就完成了對目標(biāo)字符的粗定位,其處理效果見圖3。
圖3 字符的粗定位
2.2 字符的精確定位
在藥品標(biāo)簽字符的大致區(qū)域中可能存在干擾區(qū)域,接下來對目標(biāo)字符精確定位,步驟如下:
1)首先將粗定位之后的圖像投影到水平方向,然后添加Scan函數(shù)對水平投影后的圖像進行行掃描處理,統(tǒng)計得到每一行的黑色像素點數(shù)lBlackNumber。
2)設(shè)置一個BOOL型的變量is_BHWhitePiont,如果前一行的黑色像素點個數(shù)大于10,那么這個變量的值為FLASE,否則為TRUE。
判斷l(xiāng)BlackNumber的值,若其大于10,而且is_BHWhitePiont的值為TRUE,則記錄當(dāng)前行的行號,即為第一個區(qū)域起始行;若lBlackNumber的值小于10,而且is_BHWhitePiont的值為FALSE,則記錄當(dāng)前行的行號,為第一個區(qū)域截止行。并將決定三行字符區(qū)域位置點分別保存在兩個數(shù)組Start_Point[count]和End_Point[count]中,這樣這兩行確定一個區(qū)域,為圖像的第一行。同理,繼續(xù)掃描得到其他兩行。
最后,將單行的字符區(qū)域提取出來,實現(xiàn)字符的精確定位,定位效果見圖4。
圖4字符的精確定位
1)藥品標(biāo)簽字符在定位后有可能出現(xiàn)斷裂和粘連,本文首先使用數(shù)學(xué)形態(tài)學(xué)中的膨脹運算結(jié)合閉運算將字符圖像的斷裂問題解決,但這樣有可能導(dǎo)致字符的粘連,所以整個問題轉(zhuǎn)化成解決圖像字符的粘連問題。
為了解決這個問題,本文提出了基于垂直投影的粗分割和基于滴水算法的細(xì)分割相結(jié)合的方法。首先利用垂直投影方法,設(shè)定一定的判斷規(guī)則,將字符中的粘連塊定位出來;并進一步利用滴水算法對粘連字符進行分割,最終得到單個字符。
2)設(shè)大小為M×N的二值圖像g(x,y)在第j列上的垂直投影為
(7)
垂直投影的過程是從左到右掃描圖像的每一列,找到第一個V(j)≠0的點ja1,以ja1作為第一個字符的左邊界;繼續(xù)向右掃描圖像,由于投影值為零的區(qū)域?qū)?yīng)字符間的空白間隙,則找到第一個V(j)=0的點jb1,將其作為第一個字符的右邊界。然后以同樣的方式分割出其他字符,統(tǒng)計出總的字符塊數(shù)k并計算出每一個字符的寬度C,即
C=jb1-jai,i=1,2,…,k,6≤k≤8
(8)
3)上一步已統(tǒng)計出總的字符塊數(shù)k,而藥品標(biāo)簽字符形式分為三種,字塊個數(shù)為6、7或8個,而且在藥品標(biāo)簽的字符中出現(xiàn)的漢字只有“年”和“月”,不存在漢字的偏旁與部首誤分割,則幾種情況分別如下:
(1)如果k=8,則直接將其進行分割,所得的結(jié)果即為正確的分割結(jié)果。
(3)如果k小于6,則圖像字符一定存在粘連字符,直接進入第4步。
(4)對第三步得到的粘連字符塊用滴水算法進行細(xì)分割。滴水算法的數(shù)學(xué)描述為:設(shè)需要分割的字符圖像為P,圖像的高度為N,寬度為M。建立如下圖的一個坐標(biāo),以左上端為原點O。將字符圖像P二值化,“1”代表黑色,“0”代表白色。此時分割路徑T取決于當(dāng)前像素值和與其相鄰的像素值,即
T(xi+1,yi+1)=f(xi,yi,Di),i=0,1,…
(9)
式中:(xi,yi)表示當(dāng)前的像素坐標(biāo);(x0,y0)表示分割路徑的起始點;Di表示移動的方向,它的值取決于相鄰的像素n1、n2、n3、n4、n5(見圖5)。
Dj=6-j,(j=1,2,3,4,5)
(10)
式中:
(11)
(12)
根據(jù)公式(9)~(12)可以確定水滴的運動過程,并找到字符的切分路徑。滴水算法的滴水原則見圖6。
圖5 n0的鄰域像素
圖6 滴水算法的滴水原則
這樣完成了字符的分割,處理效果見圖7。
圖7 字符的分割效果
4.1 粗識別
經(jīng)過切分之后形成的單字符圖片往往尺寸大小不一,為了能方便特征提取方法的實現(xiàn),首先選用雙線性插值對圖像進行歸一化,將字符大小統(tǒng)一為32×24。然后根據(jù)歐拉數(shù)的字符特征將字符分成三組,完成對字符的粗分類:
歐拉數(shù)為-1的字符:8、月、B;
歐拉數(shù)為0的字符:0、4、6、9、A、D、O、Q、P、R、年;
歐拉數(shù)為1的字符:其他數(shù)字和英文字母字符。
4.2 特征提取
由于K-L變換[9]可以降低維數(shù)并能得到一組分類能力最強的特征,將得到的每個子類中的字符通過K-L變換進行特征提取。然后將得到的每一類子類的字符特征分別輸入到BP神經(jīng)網(wǎng)絡(luò)中進行訓(xùn)練和識別,這樣簡化了字符特征提取,縮短了識別時間,提高識別精度。其想法是尋求正交矩陣A,使轉(zhuǎn)換后的信號對應(yīng)的協(xié)方差矩陣是一個對角矩陣。對于均值為μx的平穩(wěn)隨機向量,Cx協(xié)方差矩陣定義為
Cx=E[(x-μx)(x-μx)T]
(13)
(14)
ci,j=E[(x(i)-μx)(x(j)-μx)]
(15)
K-L變換的步驟如下:
1)由λ的N階多項式|λI-Cx|=0,求矩陣Cx的特征值λ0,λ1,…,λN-1,λ0>λ1>λ2>…>λN-1;
2)CxAi=λiAi,求矩陣Cx的N個特征向量A0,A1,…,AN-1;
3)A0,A1,…,AN-1歸一化,令〈Ai,Ai〉構(gòu)成矩陣A,使A=[A0,…,AN-1]T;
4)由y=Ax,實現(xiàn)對信號的K-L變換。
4.3 BP網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計
BP神經(jīng)網(wǎng)絡(luò)是一種典型的運用BP算法完成誤差校正的多層前饋神經(jīng)網(wǎng)絡(luò),如圖8所示。其原理是將信息輸入到神經(jīng)網(wǎng)絡(luò)中,并從第一隱層開始向下一層逐層計算并傳遞,直到輸出層。將得到的輸出和期望輸出比較,若誤差不能滿足設(shè)定要求,則沿原路逐層返回,并按一定原則調(diào)整各層的連接權(quán)值,使誤差減小到一定范圍。為方便起見,把閾值設(shè)想為神經(jīng)元的連接權(quán)值,其輸入信號總為單位值1。
圖8 BP神經(jīng)網(wǎng)絡(luò)模型
4.3.1 BP網(wǎng)絡(luò)算法的改進
ηt=ηt-1(1-αΔL)
(16)
2)另一方面,由于傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法選用的是S函數(shù),其導(dǎo)數(shù)為f(1-f),如果神經(jīng)元的凈輸入過大或過小時,輸出的結(jié)果會進入一個飽和區(qū)域,使得到的誤差有可能會很大。這時得到的誤差曲線會存在“平臺”現(xiàn)象,甚至?xí)霈F(xiàn)不收斂的現(xiàn)象。針對這個問題,本文使誤差因子f(1-f)都放大-ln[f(1-f)]倍,從而對輸出層和隱層的誤差信號都賦新值。由h(x)=-ln[x(1-x)],x∈[0,1]的圖像可知:當(dāng)x→0或1時h(x)→∞,也就是說當(dāng)神經(jīng)元的輸出為0或1時,誤差信號會迅速增大,影響對權(quán)值的修正。這樣可以避免神經(jīng)網(wǎng)絡(luò)訓(xùn)練進入飽和區(qū)域狀態(tài)。
4.3.2BP網(wǎng)絡(luò)參數(shù)設(shè)定
根據(jù)以上原則,設(shè)計三個不同的BP神經(jīng)網(wǎng)絡(luò)對粗分類得到的三個子類中的字符進行識別。BP神經(jīng)網(wǎng)絡(luò)識別藥品標(biāo)簽字符的圖示過程如圖9所示。
圖9 識別效果
本文根據(jù)藥品標(biāo)簽字符的特征,分別設(shè)計了3個分類器,表1為字符識別的測試結(jié)果。其中,字符識別率的計算公式為
(17)
歐拉數(shù)為-1的識別神經(jīng)子網(wǎng)的識別率為97.3%,因為進入這個分類器的字符個數(shù)比較少,且字符之間具有明顯的區(qū)別,所以識別率較高。歐拉數(shù)為0和1的識別神經(jīng)子網(wǎng)的識別率為96.9%和97.1%,這是由于一些字符的結(jié)構(gòu)相似造成的,例如“O”和“D”或“5”和“S”等。由于這些字符形狀類似,進行識別的神經(jīng)網(wǎng)絡(luò)很難將它們正確區(qū)分,因此會造成誤識。字符部分?jǐn)嗔岩彩菍?dǎo)致誤識的一個原因,例如字符2斷裂,BP神經(jīng)網(wǎng)絡(luò)會將其誤識為7。但從整體的實驗結(jié)果來看,基于BP神經(jīng)網(wǎng)絡(luò)較強的學(xué)習(xí)能力和容錯能力,以及根據(jù)字符的特征對其進行粗分類并分別對三個子類進行K-L變換提取最優(yōu)特征以降低識別時間,可以得出本文的方法能夠比較快速、準(zhǔn)確地識別出圖像中的字符。
表1 BP神經(jīng)網(wǎng)絡(luò)的測試結(jié)果
根據(jù)藥瓶標(biāo)簽字符的特點,本文主要研究了藥瓶標(biāo)簽字符識別系統(tǒng)的定位、分割和識別的設(shè)計。采用輪廓跟蹤和水平投影完成字符的定位,利用滴水算法和垂直投影分割字符,然后將分好類的字符進行K-L變換提取最優(yōu)特征后,輸入到改進的BP神經(jīng)網(wǎng)絡(luò)完成字符的識別,提高了分類準(zhǔn)確性與分類速度。VC++6.0平臺實現(xiàn)了上述算法,多個樣本的測試結(jié)果表明,除了字符相似和字符斷裂等情況,本文的識別方法能夠比較快速、準(zhǔn)確地識別出圖像中的字符。但在對藥瓶標(biāo)簽進行識別時,不同大小的藥瓶先驗知識不同,所以在字符定位設(shè)置分割閾值時要根據(jù)不同大小的藥瓶設(shè)置不同的閾值,不能完全達(dá)到識別的全自動化,還需要做進一步的改善和提高。
[1]馮國進,顧國華,鄭瑞紅.基于自適應(yīng)投影方法的快速車牌定位[J].紅外與激光工程,2003,32(6):285-287.
[2]陳強.基于數(shù)學(xué)形態(tài)學(xué)圖像分割算法的研究[D].哈爾濱:哈爾濱理工大學(xué),2011.
[3]Baoming Shan.Vehicle License Plate Recognition Based on Text-line Construction and Multilevel RBF Neural Network[J].Journal of Computers,2011,6(2):246-253.
[4]周鐵平,王慶.一種新的牌照快速定位方法[J].微計算機應(yīng)用,2007,28(4):343-348.
[5]任民宏.輪廓跟蹤算法的改進在字符識別計數(shù)中的應(yīng)用[J].計算機應(yīng)用,2006,26(10):2378-2379.
[6]冉令峰.基于垂直投影的車牌字符分割方法[J].通信技術(shù),2012,45(4):89-91.
[7]馬瑞,楊靜宇.一種用于手寫數(shù)字分割的滴水算法的改進[J].小型微型計算機系統(tǒng),2007,28(11):2110-2112.
[8]馬亦嘉,葛萬成.字符識別中的畸變字符校正算法研究[J].通信技術(shù),2009,42(3):218-222.
[9]王筑娟.Karhunen-Loeve變換及其幾種計算方法[J].上海應(yīng)用技術(shù)學(xué)院學(xué)報,2004,4(2):117-121.
StudyofHighlyEfficientAlgorithmsfortheCharacterRecognitionSystemofMedicineBottleLabel
JIN Caiyuan,JIANG Yueqiu
(Shenyang Ligong University,Shenyang 110159,China)
Character recognition on medicine bottle label containing batch number,production date and expiry date is studied in this paper.It mainly consists of character location,character segmentation and character recognition.Firstly,it preprocesses the image of medicine bottle label for the following procedures;secondly,general character region is obtained by contour tracing and precise location is realized by horizontal projection algorithm;then it locates character adhesion region by vertical projection algorithm and segments the merged characters by drop fall algorithm;finally,it adopts Karhunen-Loeve transform to extract character features from the subclasses of coarse classification and accurately recognizes characters by the improved BP algorithm.Experimental results show that the system can recognize the bottle label characters quickly and accurately,which is of great practical value.
image processing;character location;character segmentation;character recognition system;BP neural network
2013-07-01
靳彩園(1988—),女,碩士研究生;通訊作者:姜月秋(1975—),女,教授,研究方向:計算機網(wǎng)絡(luò)、圖像處理.
1003-1251(2014)01-0001-07
TP751.1
A
馬金發(fā))