孫玥 楊國為
摘要:為了解決傳統(tǒng)基于邊緣檢測的票據(jù)分割遇到的抗噪性及檢測精度問題,本文以國家普通發(fā)票為研究對象,提出了一種基于霍夫變換與像素疏密程度的票據(jù)分割算法。通過對發(fā)票進行采集、縮放、灰度化、二值化、邊緣檢測和膨脹等預(yù)處理后,采用霍夫變換和像素疏密程度進行分割。同時,為驗證分割出的部分發(fā)票的有效性,采用基于OCR技術(shù)的字符識別軟件進行識別。識別結(jié)果表明,該算法將每一部分進行了有效的定位與分割,有較高的識別精確率,且速度快,具有一定的抗干擾性,達到了預(yù)期要求。該研究對普通發(fā)票的分割具有實際意義。
關(guān)鍵詞:霍夫變換;像素疏密程度;票據(jù)分割;圖像預(yù)處理
近年來,盡管電子支付方式層出不窮,但紙質(zhì)票據(jù)的使用仍然是不可或缺的一部分。隨著銀行各種業(yè)務(wù)的推出,各種發(fā)票數(shù)據(jù)量也越來越多,如果單靠人力處理會耗費許多時間,因此采取一種高效、高準確率的票據(jù)分割方法,不僅能提高工作效率,而且還能提高銀行的整體競爭力。隨著人工智能時代的來臨,發(fā)票識別技術(shù)得到了發(fā)展,票據(jù)圖像識別是票據(jù)處理的重點,而票據(jù)的分割是票據(jù)識別的關(guān)鍵,分割效果的好壞直接影響識別的準確性。由于票據(jù)中的文本方向不定,字體大小不一,字符行間距較小等,為票據(jù)的分割帶來了較大的困難,因此,人們提出了許多圖象分割的理論和算法。目前,常用的分割算法主要有閾值法[1-3]、連通體分析法[4]、基于紋理特征的方法[5-6]和基于邊緣的方法[7]。其中,閾值法是對灰度圖像取一個閾值,按照這個閾值對圖像進行二值化分割,該方法對于復雜圖像計算量較大;連通體分析法是將圖像中各連通區(qū)域找出并標記,該方法計算量大,對于有噪聲的情況計算效率不高;基于紋理特征方法是提取文字圖像所具有的紋理特征,但是紋理的提取具有一定的困難;基于邊緣的方法是先檢測圖像中邊緣點,連接成輪廓后構(gòu)成分割區(qū)域,其難點在于噪聲產(chǎn)生的偽邊緣會導致不合理的輪廓,從而產(chǎn)生位置偏差。經(jīng)典的邊緣檢測方法是構(gòu)造roberts梯度算子和Sobel梯度算子等微分算子,該方法雖然邊緣檢測速度快,但往往會得到斷續(xù)的、不完整的結(jié)構(gòu)信息,且對噪聲較為敏感。因此,本文提出一種基于霍夫變換與像素疏密程度的新方法,該方法能夠?qū)崿F(xiàn)票據(jù)的精確分割。該研究具有實際應(yīng)用價值。
1 研究對象及實驗環(huán)境
本文以票據(jù)為研究對象,主要對發(fā)票的不同區(qū)域進行分割,實驗中選用的發(fā)票是國家普通發(fā)票,實驗環(huán)境采用Matlab軟件。國家普通發(fā)票樣票如圖1所示。
2 算法總體流程與圖像的預(yù)處理
2.1 算法總體流程
對采集的圖像進行預(yù)處理,處理內(nèi)容主要包括灰度化、二值化、邊緣檢測和膨脹等,對預(yù)處理后的圖像進行霍夫變換,檢測出想要得到的最長的5條直線,按照直線對發(fā)票進行初步分割,將發(fā)票分成6部分,按照每個部分不同的特點進行預(yù)處理,處理好后,按照像素的疏密程度,對6塊區(qū)域進行分割,得到最終想要的結(jié)果。算法流程圖如圖2所示。
2.2 圖像的預(yù)處理
預(yù)處理是票據(jù)分割系統(tǒng)中的重要環(huán)節(jié),預(yù)處理結(jié)果的好壞,直接影響分割系統(tǒng)中分割正確率的高低[8]。圖像預(yù)處理是特征提取至關(guān)重要的步驟,一般直接輸入的圖像都會存在噪聲的干擾等質(zhì)量問題,直接對原圖像進行處理,識別精度不大。本文對圖像的預(yù)處理主要包括縮放、灰度化、二值化、邊緣檢測、膨脹等。預(yù)處理框圖如圖3所示。
1) 縮放??s放可以精確的將圖像處理為理想的大小。為便于處理,要合理選擇圖像的高度和寬度,以防圖像發(fā)生畸變。
2) 灰度化。由于圖像大部分是RGB顏色模式,但實際上RGB并不能反映圖像的形態(tài)特征,對圖像分割沒有實質(zhì)性作用,因此要對圖像進行灰度化處理。常見的灰度化處理方法有3種:最大值法、平均值法和加權(quán)平均法[9]。
3) 二值化。即把灰度圖像轉(zhuǎn)換成二值圖像。二值化的關(guān)鍵在于閾值選擇,最實用的方法是選取一個閾值與圖像中的所有像素點進行比較,如果圖像中點的灰度值大于所選取的閾值,則將此值置為1;如果圖像中點的灰度值小于選取的閾值,則將此值置為0[10]。
4) 邊緣檢測。邊緣檢測的目的是標記數(shù)字圖像中亮度有變化的點,一般存在于文字與背景之間,即邊緣。本文主要采用Sobel進行邊緣處理,Sobel算子是一種基于一階導數(shù)的用來檢測邊緣的算子,在該算子中加入采用局部平均的運算,所以對噪聲具有很好的消除作用。對象素位置的影響,Sobel算子做了加權(quán),與Prewitt算子和Roberts算子相比,Sobel算子效果更好[11-13]。
5) 膨脹。二值圖像的膨脹是在一個大型二值圖上,將一個小型二值圖逐點運算,根據(jù)計算結(jié)果使圖像實現(xiàn)放大,從而取名膨脹。在對圖像做膨脹處理時,如果結(jié)構(gòu)元素中只要有黑色點與它對應(yīng)的大圖像素點相同,即發(fā)生膨脹作用,使圖像像素擴大[14-15]。
3 霍夫變換檢測直線
圖像處理中的一種特征提取技術(shù)——霍夫變換(Hough Transform),即在一個參數(shù)空間中,通過計算累計結(jié)果局部最大值,得到一個符合該特定形狀的集合,為霍夫變換結(jié)果[16]。用來檢測圖像中的直線是經(jīng)典的霍夫變換,后來霍夫變換擴展到對圓和橢圓等任意形狀物體的識別?;舴蜃儞Q運用兩個坐標空間之間的變換,將一個空間中具有相同形狀的曲線或直線,映射到另一個坐標空間的一個點上,形成峰值,因此把檢測任意形狀的問題轉(zhuǎn)
一般來說,對于點(x0,y0),可以將通過這個點的所有的一族直線統(tǒng)一定義為r=x-0cos θ+y0sin θ,也就是說每一對(rθ,θ)代表一條通過點(x0,y0)的直線。如果對于一個點(x0,y0),在極坐標平面繪出全部通過它的直線,將得到一條正弦曲線。如果存在兩個不同點繪出的曲線在平面相交,也就是說它們通過同一條直線。而越多曲線相交于一點,即用該交點來表示直線時,由更多的點組成[17]。因此,可以通過設(shè)置直線上點的閾值大小,說明多少條曲線相交才認為這是一條直線;點數(shù)少的無法形成直線,識別出的是斷斷續(xù)續(xù)的虛線,出現(xiàn)誤檢;點數(shù)過多的可能會忽略了較細的直線,出現(xiàn)漏檢[18]?;舴蜃儞Q就是要追蹤圖像中每個點對應(yīng)曲線間的交點。只要超過了上述所說的閾值,就可以認為在原圖像中為一條直線。
對發(fā)票圖像進行預(yù)處理后,霍夫變換檢測出最長的5條直線,根據(jù)檢測出的5條直線,將發(fā)票橫向分割成6部分。其中,含有單價的部分如圖5所示。
4 按像素疏密程度分割
按照像素分割圖像,即將每部分的圖像像素縱向進行求和,觀察橫向像素的密度,如果像素為零或較小,說明橫向像素為空或較少;同理,如果縱向像素比較高,說明橫向有較多字符存在。在霍夫矩陣中,找到極坐標下的極值點,并在平面坐標中畫出已找到的直線,每個極值點對應(yīng)1條直線,實現(xiàn)了對發(fā)票各個部分的分割。
選取圖5進行實驗,求得其像素分布圖如圖6所示。由圖6可以看出,圖像各個部分的像素分布及疏密程度非常清晰,在霍夫矩陣中求其峰值,則可得到理想的直線。
5 實驗結(jié)果與分析
5.1 分割實驗結(jié)果
采用霍夫變換和像素疏密程度2種方法,在Matlab編程環(huán)境下,對發(fā)票部分進行分割,為了驗證實驗的有效性,采取噪聲相對較大的發(fā)票(圖片相對噪聲較大,不與展示)進行實驗,單價分割結(jié)果如圖7所示,數(shù)量分割結(jié)果如圖8所示。由圖7和圖8可以看出,基于霍夫變換與像素疏密程度的分割算法,有效的將發(fā)票部分進行分割,分割準確率較高,即使文字大小不一,本文仍然能夠較為準確的進行定位與分割。
5.2 在線OCR識別
將感興趣的部分(比如單價部分)進行識別,同時與文獻[2]分割結(jié)果進行對比,以此驗證分割出部分發(fā)票的有效性。本文采用基于OCR技術(shù)的字符識別軟件[19-20],OCR識別結(jié)果如圖9所示,其他分割方法OCR識別結(jié)果如圖10所示。由圖9和圖10可以看出,采用本文分割方法識別出的單價部分非常清楚,說明該方法可用于普通發(fā)票的分割。
6 結(jié)束語
針對票據(jù)的分割問題,本文提出了一種改進的基于霍夫變換和像素疏密程度的分割方法。首先對采集的圖像進行一系列預(yù)處理,然后進行霍夫變換求取直線,最后基于像素疏密程度方法完成整個票據(jù)的分割過程。由實驗結(jié)果可以看出,與其他方法相比,本文方法在用于OCR識別時,具有較高的識別精確率,且速度快,具有一定的抗干擾性,達到了預(yù)期要求。該設(shè)計對普通發(fā)票的分割具有實際意義。接下來將對背景非常復雜的噪聲發(fā)票圖像進行研究,這也是實際中亟需解決的問題,同時還要注意開展不同識別技術(shù)的研究。
參考文獻:
[1] 何俊, 葛紅, 王玉峰. 圖像分割算法研究綜述[J]. 計算機工程與科學, 2009, 31(12): 58-61.
[2] 葉龍歡, 王俊峰, 高琳, 等. 復雜背景下的票據(jù)字符分割方法[J]. 計算機應(yīng)用, 2012, 32(11): 3198-3200, 3205.
[3] 付云鳳. 基于閾值的圖像分割研究[D]. 重慶: 重慶大學, 2013.
[4] 甘玲, 林小晶. 基于連通域提取的車牌字符分割算法[J]. 計算機仿真, 2011, 28(4): 336-339.
[5] 陳強, 田杰, 黃海寧, 等. 基于統(tǒng)計和紋理特征的SAS圖像SVM分割研究[J]. 儀器儀表學報, 2013, 34(6): 1413-1420.
[6] Li H P, Doermann D, Kia O. Automatic text detection and tracking in digital video[J]. IEEE Transactions on Image Processing, 2000, 9(1): 147-56.
[7] Shivakumara P, Huang W H, Tan C L. An efficient edgebasedtechnique for text detection in video frames[C]∥2008 The Eighth Iapr International Workshop on Document Analysis Systems. Nara, Japan: IEEE Computer Society, 2008.
[8] 謝文彬, 李新芳, 鄭新. 一種基于結(jié)構(gòu)特征的票據(jù)印刷號碼識別方法[J]. 包裝工程, 2018, 39(1): 202-206.
[9] 劉培根. 銀行票據(jù)手寫數(shù)字串識別的預(yù)處理與分割[D]. 南京: 南京理工大學, 2012.
[10] 宮義山, 王鵬. 基于模板匹配的發(fā)票號碼識別算法[J]. 沈陽工業(yè)大學學報, 2015, 37(6): 673-678.
[11] 魏偉波, 芮筱亭. 圖像邊緣檢測方法研究[J]. 計算機工程與應(yīng)用, 2006, 42(30): 88-91.
[12] 張棋, 賈方秀, 殷婷婷. 基于改進Sobel算法的實時圖像邊緣檢測系統(tǒng)設(shè)計[J]. 儀表技術(shù)與傳感器, 2018(2): 101-104, 108.
[13] 袁春蘭, 熊宗龍, 周雪花, 等. 基于Sobel算子的圖像邊緣檢測研究[J]. 激光與紅外, 2009, 39(1): 85-87.
[14] 鄧仕超, 黃寅. 二值圖像膨脹腐蝕的快速算法[J]. 計算機工程與應(yīng)用, 2017, 53(5): 207-211.
[15] 孫繼平, 吳冰, 劉曉陽. 基于膨脹/腐蝕運算的神經(jīng)網(wǎng)絡(luò)圖像預(yù)處理方法及其應(yīng)用研究[J]. 計算機學報, 2005, 28(6): 985-990.
[16] 白瑞敏. 基于圖像處理的接觸網(wǎng)吊弦和受電弓滑板的檢測與識別[D]. 成都: 西南交通大學, 2017.
[17] 季婧婧. 非固定格式打印票據(jù)的自動分割與識別[D]. 南京: 南京理工大學, 2015.
[18] 孫豐榮, 劉積仁. 快速霍夫變換算法[J]. 計算機學報, 2001, 24(10): 1102-1109.
[19] 陳義, 李言俊, 孫小煒. 利用OCR識別技術(shù)實現(xiàn)視頻中文字的提取[J]. 計算機工程與應(yīng)用, 2010, 46(10): 180-183.
[20] 索玉秀. 基于OCR技術(shù)的名片識別方法研究[D]. 哈爾濱: 哈爾濱理工大學, 2015.