張偉偉
[摘? ? ? ? ? ?要]? 基于圖像處理與字符識(shí)別技術(shù)設(shè)計(jì)并開發(fā)了一個(gè)對(duì)模糊圖像中文字信息進(jìn)行定位與識(shí)別的系統(tǒng),系統(tǒng)先對(duì)讀入圖像進(jìn)行灰度化、二值化、濾波、細(xì)化等預(yù)處理操作,得到含有文字信息的清晰圖像,然后進(jìn)行字符識(shí)別,包括字符定位與分割、字符歸一化處理、字符特征提取、字符匹配識(shí)別處理四步。系統(tǒng)采用VC6.0實(shí)現(xiàn)人機(jī)交互界面友好,通過實(shí)驗(yàn)驗(yàn)證系統(tǒng)能夠定位和識(shí)別出包含純數(shù)字或純漢字的圖片,包含各類字符的車牌圖片中的文字信息。
[關(guān)? ? 鍵? ?詞]? 圖像處理;字符識(shí)別;特征提取
[中圖分類號(hào)]? TP391.41? ? ? ? ? ? ? ? ? ?[文獻(xiàn)標(biāo)志碼]? A? ? ? ? ? ? ? ? ? ? ? [文章編號(hào)]? 2096-0603(2019)05-0140-02
社會(huì)發(fā)展進(jìn)入信息時(shí)代,以圖像為主的多媒體信息迅速成為重要的信息傳遞媒介,圖像中的文字信息包含豐富的高層語(yǔ)義信息,提取出這些文字,對(duì)圖像高層次語(yǔ)義的理解、索引和檢索非常有幫助。圖形圖像文字識(shí)別技術(shù)早有應(yīng)用,如對(duì)掃描圖片進(jìn)行OCR(光學(xué)字符識(shí)別)將包含文本的圖像轉(zhuǎn)化為文本,文字識(shí)別技術(shù)還可用于單據(jù)、車牌、標(biāo)牌、銀行卡賬號(hào)、信封上字符的識(shí)別等。目前,國(guó)內(nèi)外學(xué)者對(duì)基于機(jī)器視覺技術(shù)的數(shù)字識(shí)別做了深入的研究。本文旨在基于已有的文字識(shí)別技術(shù)設(shè)計(jì)圖像預(yù)處理、字符定位、字符分割、特征提取以及字符識(shí)別方法,實(shí)現(xiàn)對(duì)模糊彩色圖像中印刷體文字(漢字、英文字符)的識(shí)別。
論文組織結(jié)構(gòu)如下:第2節(jié)介紹本文采用的圖像預(yù)處理方法,第3節(jié)基于本文需求提出一個(gè)簡(jiǎn)潔有效的字符定位、分割和識(shí)別算法,第4節(jié)給出實(shí)驗(yàn)測(cè)試結(jié)果,最后總結(jié)全文。
一、圖像預(yù)處理
在對(duì)圖像中的文字進(jìn)行識(shí)別之前,首先要對(duì)圖像進(jìn)行預(yù)處理,本文的預(yù)處理過程為:輸入圖片→灰度化處理→二值化處理→濾波去除噪聲點(diǎn)→細(xì)化處理。
(一)灰度化
設(shè)原始圖像為BMP(bit map的縮寫)文件,其余格式的可以轉(zhuǎn)化為BMP格式。BMP是Windows本身可以直接提供讀取支持的位圖文件格式。BMP文件可用每像素1、4、8、16或24位來編碼顏色信息,這個(gè)位數(shù)稱作圖像的顏色深度,它決定了圖像所含的最大顏色數(shù)。根據(jù)BMP文件格式可以提取出圖像中每個(gè)像素的顏色值,對(duì)彩色圖像,每個(gè)像素顏色由紅綠藍(lán)(R、G、B)3個(gè)分量表示,所以能顯示出各種顏色?;叶葓D像沒有這些顏色差異,有的只是亮度上的不同,灰度值大的像素點(diǎn)比較亮(像素值最大為255,為白色),反之比較暗(像素值最小為0,為黑色)。
灰度化處理就是對(duì)RGB圖像進(jìn)行加權(quán)求和,得到一個(gè)灰度值。本文采用式(1)計(jì)算灰度值。定義1基于RGB的灰度值定義為:
灰度值 = 0.299 * Red + 0.587 * Green + 0.114 * Blue + 0.5(1)
(二)二值化
為了更加便利地進(jìn)行后續(xù)的圖像處理操作,還需要對(duì)已經(jīng)得到的灰度圖像進(jìn)行二值化處理。圖像的二值化,即根據(jù)一定的標(biāo)準(zhǔn)把圖像中的像素分成兩種顏色。本文根據(jù)像素的灰度值將圖像處理成黑白兩色。
對(duì)含有字符的圖像(如車牌),前景色為字符的顏色,背景像素個(gè)數(shù)顯然是大于前景像素的個(gè)數(shù)。所以,可以設(shè)置像素個(gè)數(shù)少的顏色為規(guī)定的前景色,像素個(gè)數(shù)多的顏色為規(guī)定的背景色。我們采用自適應(yīng)閾值法,先計(jì)算圖像整體灰度的平均值,然后將此平均值作為閾值。如果灰度值大于閾值的像素?cái)?shù)多于低于閾值的,則將灰度值大于閾值的像素設(shè)為背景色,低于閾值的設(shè)為前景色。如果灰度值大于閾值的像素?cái)?shù)少于低于閾值的,則將灰度值低于閾值的像素設(shè)為背景色,高于閾值的設(shè)為前景色。
(三)濾波處理
采用去除雜點(diǎn)的方法進(jìn)行去噪聲處理。掃描整個(gè)圖像,當(dāng)發(fā)現(xiàn)一個(gè)前景色點(diǎn)的時(shí)候,就考察并計(jì)算和該前景色點(diǎn)間接或者直接相連的前景色點(diǎn)的個(gè)數(shù),如果個(gè)數(shù)小于特定的值,那就說明該點(diǎn)是離散點(diǎn),將其去掉(變成背景色點(diǎn))。我們用遞歸調(diào)用法考察相連的前景色點(diǎn)。
(四)細(xì)化處理
由于需要處理的圖像大多是從印刷出版物上掃描來的或是對(duì)印刷文字進(jìn)行拍照得到的,所以在很多情況下字符會(huì)有些模糊,對(duì)字符識(shí)別造成一定的困難。可以對(duì)圖像進(jìn)行銳化處理,使模糊的圖像清晰。
本文采用Hilditch算法,該算法通過判斷去掉圖像中是邊界點(diǎn)而不是連通點(diǎn)的像素點(diǎn)。對(duì)一個(gè)矩形區(qū)域,從左上角開始到右下角,每次掃描可以將矩形最外面一層剔去,層層剝離后,最終只剩下最中間的細(xì)化圖像。
二、字符識(shí)別算法
(一)字符定位與分割處理
本文通過水平方向和垂直方向的投影定位和分割圖像中包含的字符。理論上,水平投影、垂直投影后,所以可以對(duì)空白處進(jìn)行行和列的分割。不過實(shí)際應(yīng)用中還有很多細(xì)節(jié)需要考慮,例如左右結(jié)構(gòu)的漢字經(jīng)過垂直方向的投影,可能被分成兩個(gè)甚至三個(gè)部分,另外漢字和英文字符混合時(shí)實(shí)現(xiàn)正確的分割就更為復(fù)雜。對(duì)于圖像矩陣,從上到下逐行掃描,先設(shè)置狀態(tài)為未發(fā)現(xiàn)文字。
Step1:狀態(tài)為未發(fā)現(xiàn)文字且未到圖像末尾時(shí)循環(huán)做:如果當(dāng)前行的前景色像素?cái)?shù)為0,則設(shè)置該行為一行文字的開始,然后繼續(xù)往下掃描,如果當(dāng)前行的前景色像素?cái)?shù)大于0,則設(shè)置狀態(tài)為已發(fā)現(xiàn)文字。
Step2:狀態(tài)為已發(fā)現(xiàn)文字且未到圖像末尾時(shí)循環(huán)做:如果當(dāng)前行的前景色像素?cái)?shù)大于0,則繼續(xù)往下掃描,如果當(dāng)前行的前景色像素?cái)?shù)為0,則設(shè)置該行為一行文字的結(jié)束行,將包含一行文字的數(shù)據(jù)重新存放在一個(gè)數(shù)組中,再對(duì)這一行文字進(jìn)行列分割得到一個(gè)個(gè)漢字或英文字符,之后再進(jìn)行字符識(shí)別,然后將狀態(tài)設(shè)為未發(fā)現(xiàn)文字。重復(fù)上述兩步。
字符分割復(fù)雜之處在于區(qū)分左右結(jié)構(gòu)的漢字和英文字符。自適應(yīng)的通過列分割提取出一個(gè)個(gè)文字(字符)分為兩步:
Step1:在分割了行之后,進(jìn)行一次垂直方向投影,基于投影中的空隙分離出一個(gè)個(gè)“疑似字符”,計(jì)算每個(gè)疑似字符的投影寬度,以及疑似字符與疑似字符之間的空隙寬度;從大到小排列空隙寬度,得到空隙寬度中位數(shù),記為gm;漢字是方塊字,從大到小排列疑似字符的投影寬度,取最大的漢字寬度,記為wb。
Step2:使用寬度>=gm的空隙分割一行文字得到若干塊;對(duì)其中的某塊ch(左右不含空隙),如果它僅包含一個(gè)疑似字符,那么若其寬度接近于wb,則判斷ch為一個(gè)漢字否則是一個(gè)英文字符;如果ch包含若干疑似字符,那么若其寬度接近于wb,則判斷ch為一個(gè)漢字,否ch則若寬度小于wb,則進(jìn)一步分割成若干英文字符,否則,也即ch寬度大于wb,則用ch中最大空隙將ch分成兩部分,再按照上面方法判斷塊所包含的字符。
(二)字符歸一化處理
首先,可以通過預(yù)先設(shè)定一個(gè)參數(shù)進(jìn)行字符的歸一化處理,即對(duì)已經(jīng)分割好的字符圖片進(jìn)行放大和縮小,但是處理后會(huì)使較大的字符圖像損失較多的信息。因此本文在字符分割之后對(duì)字符的大小求一次平均,將圖片歸一化為平均字符大小,以降低字符圖片信息的損失。
計(jì)算出歸一化需要的平均字符大小后,對(duì)字符圖像用插值法進(jìn)行放大或縮小。由原字符圖像的寬和高與平均的寬和高,得出要變換的系數(shù),把新圖像里的點(diǎn)按插值法映射到原圖像中,生成新圖像。
(三)字符特征提取
特征提取的方法是自左向右對(duì)圖像進(jìn)行逐列的掃描,統(tǒng)計(jì)每列的前景色像素的個(gè)數(shù),然后自上而下逐行掃描,統(tǒng)計(jì)每行的前景色像素的個(gè)數(shù),將統(tǒng)計(jì)結(jié)果作為字符的特征向量。
我們決定采用一種基于投影歸一化的字符特征提取方法,從行投影到列投影,再加上兩個(gè)方向的斜投影,通過歸一化處理將投影統(tǒng)計(jì)向量轉(zhuǎn)化成與字庫(kù)中相同的特征向量。
(四)字符識(shí)別處理
在字庫(kù)中存儲(chǔ)的是每一個(gè)字符(包括漢字)的特征向量,一個(gè)特征向量對(duì)應(yīng)一個(gè)字符,將提取出的待識(shí)別字符的特征向量和字庫(kù)中字符的進(jìn)行匹配,搜尋和這個(gè)特征向量最接近的字符,也就是采用歐氏距離判別法將距離最相近的字符作為匹配結(jié)果。
定義2設(shè)待識(shí)別字符的特征向量為xf1,xf2,...,xfn,字庫(kù)中字符的特征向量記為xh1,xh2,...,xhn,這個(gè)字符和字庫(kù)中字符之間的距離定義為:
三、實(shí)驗(yàn)測(cè)試
本文使用VC6.0的MFC設(shè)計(jì)實(shí)現(xiàn)了簡(jiǎn)易的人機(jī)交互界面,如圖所示,靠人工輸入待識(shí)別圖片。用戶通過點(diǎn)擊預(yù)處理,版面分析,字符識(shí)別后得到識(shí)別結(jié)果。
識(shí)別軟件可以自動(dòng)尋找圖片上需識(shí)別字符的位置,對(duì)含有有效信息字符的區(qū)域進(jìn)行特征分析(其余部分不再分析)。同時(shí),將區(qū)域中每個(gè)字符的特征和字庫(kù)中各字符的特征進(jìn)行對(duì)比,選擇與其最相近的字符作為識(shí)別結(jié)果。程序轉(zhuǎn)化速度快,內(nèi)容較準(zhǔn)確,結(jié)果可以以字符形式顯示在對(duì)話框中。
四、總結(jié)
本文基于圖像處理與字符識(shí)別的相關(guān)技術(shù),能夠?qū)D片上相應(yīng)的文字進(jìn)行分割選取并轉(zhuǎn)化成為文本;能夠識(shí)別多種信息類型(如身份證號(hào)、車牌號(hào)、敏感文字)文字,識(shí)別、轉(zhuǎn)化速度快;使用C++編程,容易改寫為C代碼,方便移植到某些硬件平臺(tái)上(如DSP);可以對(duì)現(xiàn)有字庫(kù)進(jìn)行特定場(chǎng)合的修改,提高識(shí)別速度和效率,減小程序的存儲(chǔ)空間。
本文的設(shè)計(jì)可以用于網(wǎng)絡(luò)圖像中敏感文字的識(shí)別(通過字符識(shí)別及字符串搜索匹配)與刪除。在物流應(yīng)用中可以識(shí)別身份證復(fù)印件上的身份證號(hào)碼、電話號(hào)碼和快遞單號(hào)等,從而幫助快遞員更快更準(zhǔn)確地簽發(fā)快遞;在交通管理應(yīng)用中可以識(shí)別車牌號(hào)碼,快捷有效地對(duì)違章車輛進(jìn)行處理。
參考文獻(xiàn):
[1]郭爽.數(shù)碼管數(shù)字儀表自動(dòng)識(shí)別方法的研究[J].通信技術(shù),2012,45(8):91-93.
[2]李素萍.基于圖像處理的數(shù)字儀表識(shí)別技術(shù)[J].機(jī)電一體化,2013,19(6):84-86,90.
[3]魏武,黃心漢.基于模板匹配和神經(jīng)網(wǎng)絡(luò)的車牌字符識(shí)別方法[J].模式識(shí)別與人工智能,2001,14(1):123-126.
[4]楊枝靈,王開.數(shù)字圖像獲取、處理及實(shí)踐應(yīng)用[M].人民郵電出版社,2003.
[5]何斌,馬天予,王運(yùn)堅(jiān),等.VisualC++數(shù)字圖像處理[M].北京:人民郵電出版社,2002:465-471.
[6]沈庭芝,方子文.數(shù)字圖像處理及模式識(shí)別[M].北京:北京理工大學(xué)出版社,1998:169-170.
編輯 陳鮮艷