王志楊, 劉金龍
(1.安徽電子信息職業(yè)技術(shù)學(xué)院 電子工程系,安徽 蚌埠 233030;2.江蘇海洋大學(xué) 電子工程學(xué)院,江蘇 連云港 222005)
拼接幣是一種人為拼接制造的假幣。這類拼接幣人眼很容易識別,自動存款機(jī)卻無能為力。犯罪分子的手法就是將真、假百元人民幣各一張先進(jìn)行剪切,再用透明膠帶將部分假幣和部分真幣粘起來制造出兩張“半假鈔”,然后將此“半假鈔”的拼接幣存入自動存款機(jī),再從其他取款機(jī)取出真幣,以這種方式完成“洗假錢”。此類案件最早是在廣州發(fā)現(xiàn)的,并且迅速蔓延到全國各地。各省的自動存款機(jī)中都發(fā)現(xiàn)了大量這樣的拼接幣,致使有關(guān)商業(yè)銀行停止了這些自動存款機(jī)的使用,給銀行和廣大人民群眾帶來了極大的損失[1-3]。
由于市場上流通的人民幣不可能都是十成新的,為了使人們方便的使用存款機(jī),幾乎所有的自動存款機(jī)都降低了驗鈔的識別參數(shù)標(biāo)準(zhǔn),一般只要與標(biāo)準(zhǔn)樣本數(shù)據(jù)庫的數(shù)據(jù)匹配達(dá)到70%到80%,就受理自動存款業(yè)務(wù)[4]。而且現(xiàn)在港版?zhèn)吴n和臺版?zhèn)吴n也有熒光反應(yīng),如果用這類偽鈔和真幣進(jìn)行拼接就使得自動存款機(jī)識別拼接幣難上加難了。同時,由于每臺自動存款機(jī)的造價昂貴,最少要幾十萬,如果全部更換的話會給銀行造成很大的負(fù)擔(dān)。本項目旨在根據(jù)最新2015版百元鈔票的圖像特征,運(yùn)用圖像處理技術(shù)處理拼接幣的圖像,通過邊界提取和圖像特征匹配等運(yùn)算來識別2015版拼接幣,并進(jìn)行仿真驗證,給出一套識別拼接幣的算法方案和軟硬件模型,改進(jìn)自動存款機(jī)的驗鈔系統(tǒng)。
拼接幣的圖像特征主要有以下兩點(diǎn):(1)有膠帶;(2)左右編號不一致?;谶@兩點(diǎn)特征作為識別拼接幣的主要依據(jù)。
紙幣圖像的采集通過攝像頭可以精確獲取,并儲存為JPEG圖像格式。因為處理的編號區(qū)是紙幣的細(xì)節(jié)特征,要求攝像頭采用高分辨率設(shè)備。本文先以真幣為目標(biāo),處理后得到256級灰度圖,再推廣到拼接幣。人民幣樣本的掃描分辨率是1830*920像素,拍攝速率是30幀/s。
在本項目中,采用圖像處理技術(shù)提取拼接幣圖像中的編號區(qū)域和膠帶區(qū)域,并利用一維灰度投影模板匹配法和門限法對拼接幣進(jìn)行檢測與識別。具體過程如下:
(1)采集圖像并進(jìn)行RGB三分量分割;
(2)對(1)的R分量圖像應(yīng)用邊緣檢測法從背景中獲得鈔票區(qū),以減少處理的數(shù)據(jù)量;
(3)為使隨后的處理更加簡單,對(2)圖像進(jìn)行二值化、灰度均衡等預(yù)處理;
(4)應(yīng)用精準(zhǔn)定位法分割出左右編號區(qū)域;
(5)計算(4)區(qū)域的一維灰度投影曲線,并根據(jù)投影曲線分割每一個字母或數(shù)字;
(6)進(jìn)行一維灰度投影模板匹配,求出每個字母或數(shù)字的相關(guān)系數(shù),與門限值進(jìn)行比較,判斷左右編號是否互相匹配;
(7)對(1)的B分量圖像進(jìn)行預(yù)處理,突出膠帶區(qū);
(8)選擇合適的灰度門限值對(7)的圖像進(jìn)行二值化,分離出膠帶(剩下為背景區(qū)),計算膠帶區(qū)像素數(shù),并與設(shè)定的像素數(shù)比較,如大于設(shè)定值則判定有透明膠帶。
因篇幅限制,本文僅探討左右編號匹配識別前的部分。
由于人民幣的設(shè)計相當(dāng)規(guī)范,雖然編號區(qū)不盡相同,但都在一個固定的區(qū)域,因此可以先對編號區(qū)進(jìn)行初定位[5]。初定位是根據(jù)預(yù)測定位編號區(qū),只是一個參考值,如圖1所示。大區(qū)間定位則是在初定位的基礎(chǔ)上增加區(qū)域的偏移量,使區(qū)域加大,以保證編號落在整個定位區(qū)域內(nèi)[6]。定位偏移量的選擇要綜合考慮,過大將導(dǎo)致多余信息落入處理區(qū),增加運(yùn)算負(fù)擔(dān);過小將導(dǎo)致處理區(qū)號碼不完整。左編號大區(qū)間為(60∶460橫向,660∶750縱向),右編號大區(qū)間為(1660∶1750橫向,370∶770縱向),如圖3所示為大區(qū)間定位分割出來的左右編號區(qū),圖b)是將右編號順時針旋轉(zhuǎn)90度后的圖像。
圖1 真幣掃描圖Fig.1 Scanned image of real money
圖2 拼接幣識別流程圖Fig.2 Flowchart of spliced money recognition
圖3 大區(qū)間定位a) 分割的左編號;b) 分割的右編號Fig.3 Large interval locationa) Divided left number;b) Divided right number
上圖可以看出,從噪聲圖像中分割出的左編號背景圖像簡單清晰,只有一些簡單的獨(dú)立點(diǎn)和低灰度值的背景區(qū)域;而右編號的背景圖像則相當(dāng)復(fù)雜,且與字符緊密地連接,使提取字符特征變得復(fù)雜。因此需要進(jìn)行適當(dāng)?shù)膱D像預(yù)處理,去除背景圖像,突出字符特征并且盡量使字符圖像不失真。
2.2.1 圖象增強(qiáng) 圖3中右編號的背景圖像相對較復(fù)雜且與字符的灰度級數(shù)相差不大,這一點(diǎn)可以從左右編號的灰度直方圖4 a)、b)相比較得出。因此,采用圖像增強(qiáng)中的直方圖均衡法對右編號進(jìn)行灰度增強(qiáng),將背景和字符區(qū)的灰度值進(jìn)行延拓,突出字符區(qū)的灰度值[7-10]。結(jié)果如圖4 c)、d),很明顯字符區(qū)相對于背景的灰度值明顯變小了。
圖4 右編號灰度均衡化a) 左編號灰度直方圖;b) 右編號灰度直方圖;c) 灰度均衡后的右編號;d) 灰度均衡后右編號直方圖Fig.4 Gray equalization of right numbera) Gray histogram of left number;b) Gray histogram of right number;c) Right number after gray equalization;d) Gray histogram of right number after gray equalization
2.2.2 圖像二值化 圖像二值化是將多級灰度圖像轉(zhuǎn)換成只有兩個灰度值的圖像,是一種簡化了的灰度圖像。經(jīng)過圖像均衡化后的右編號存在兩個明顯的峰值和一個谷值,且字符區(qū)的灰度范圍就在低灰度值范圍內(nèi)[11]。因此采用整體閾值法對左右編號二值化,門限值為128,灰度值大于128的為“1”,反之為“0”,如圖5所示。
圖5 圖像二值化a) 左編號二值化;b) 右編號二值化Fig.5 Image binarizationa) Binarization of left number;b) Binarization of right number
2.2.3 反色 左右編號經(jīng)過二值化后,背景區(qū)域值為“1”,字符區(qū)域值為“0”,這樣給處理字符區(qū)域帶來不便,且存儲的數(shù)據(jù)量大。因此,根據(jù)反色的原理,將背景區(qū)域的值轉(zhuǎn)換為“0”,字符區(qū)轉(zhuǎn)換為“1”,方便對字符區(qū)的處理和分析[12]。反色結(jié)果如圖6所示。
圖6 反色a) 左編號反色;b) 右編號反色Fig.6 Reverse colora) Reverse color of left number;b) Reverse color of right number
2.2.4 平滑濾波 平滑濾波可以減小圖像獲取和傳輸過程中的噪聲干擾[13]。本文采用平滑濾波中的中值濾波算法,模板選取3 x 3。如選擇5x5 或7x7模板,效果改善并不明顯。但是運(yùn)算量會增加。所以3 x 3模板已經(jīng)足夠。
中值濾波的方法易于實現(xiàn),且較好得保護(hù)了邊界。圖7是經(jīng)過中值濾波后的圖像,與圖6中各個字符的邊界進(jìn)行比較,可以發(fā)現(xiàn)圖7各個字符的邊界變得連續(xù),無間斷點(diǎn),充分達(dá)到了保護(hù)邊界的目的。
圖7 平滑濾波(中值)a) 對左編號中值濾波;b) 對右編號中值濾波Fig.7 Median filtera) Median filter of left number;b) Median filter of right number
從圖7中可以看出,左右編號各個字符的邊界存在著一些非邊界的點(diǎn),當(dāng)圖像的質(zhì)量比較差,還會有大量的噪聲孤立點(diǎn)。腐蝕和膨脹運(yùn)算可以除去噪聲孤立點(diǎn),來達(dá)到光滑字符邊界的目的,并保留原圖像的基本信息[14]。
如圖8 a)、b)所示,采用結(jié)構(gòu)元素為se的矩陣,利用腐蝕運(yùn)算將左右編號的每個字符區(qū)域縮小,字符豎劃中較細(xì)的筆劃在腐蝕的過程中被消除。利用這一點(diǎn),可以使文字中的孤立點(diǎn)分離出來。然后采用相同的結(jié)構(gòu)元素對字符進(jìn)行膨脹運(yùn)算,文字區(qū)域擴(kuò)大且達(dá)到光滑文字邊界的目的,如圖8 c)、d)。
圖8 對左右編號進(jìn)行二值形態(tài)學(xué)處理a) 對左編號腐蝕;b) 對右編號腐蝕;c) 對a) 進(jìn)行膨脹;d) 對b) 進(jìn)行膨脹Fig.8 Binary morphology processing of left and right numbersa) Erosion of left number;b) Erosion of right number;c) Expansion of a);d) Expansion of b)
(1)
精準(zhǔn)定位是在大區(qū)間定位的基礎(chǔ)上,濾除干擾,完成左右編號區(qū)每個數(shù)字或字母的分割定位[15,16]。對圖8中的c)、d)進(jìn)行精準(zhǔn)定位。具體過程如下:
(1)計算出左右編號的一維水平灰度投影和一維垂直灰度投影,如圖9中的a)、b)、c)、d)所示;
(2)根據(jù)水平灰度投影曲線計算出灰度零點(diǎn),并計算出垂直灰度投影曲線的兩個零點(diǎn);
(3)以邊界點(diǎn)分別取垂直方向的兩個零點(diǎn),水平方向首尾兩個零點(diǎn)截取左右編號中的字母或數(shù)字,完成精準(zhǔn)定位運(yùn)算。結(jié)果如圖9中的e)、f)。
圖9 精準(zhǔn)定位分割后的左右編號a)左編號一維水平灰度投影曲線;b) 右編號一維水平灰度投影曲線;c) 左編號一維垂直灰度投影曲線;d) 右編號一維垂直灰度投影曲線;e) 精準(zhǔn)定位分割后的左編號;f) 精準(zhǔn)定位分割后的右編號Fig.9 Precise location divided left and right numbersa)One-dimensional horizontal gray scale projection curve of left number;b) One-dimensional horizontal gray scale projection curve of right number;c)One-dimensional vertical gray scale projection curve of left number;d) One-dimensional vertical gray scale projection curve of right number;e)Precise location divided left number;f)Precise location divided right number
具體過程如下:將圖9 a)、b) 中的零點(diǎn)按順序兩兩分組,字符數(shù)作為分組數(shù);再以圖9 a)中的每一組零點(diǎn)和圖9 c)零點(diǎn)為邊界點(diǎn)截取得到左編號各字符,同理得到右編號各字符[17]。結(jié)果如圖10。
圖10 左右編號字符分割a)左編號字符分割;b) 右編號字符分割Fig.10 Character division of left and right numbersa)Character division of left number;b) Character division of right number
模板匹配算法有傳統(tǒng)的空域二維模板匹配算法、頻域卷積模板匹配算法和本文提出的一維灰度投影模板匹配算法。現(xiàn)在分別使用三種算法對左右編號進(jìn)行模板匹配運(yùn)算,并分析比較,找出快速又準(zhǔn)確的算法。
2.6.1 空域二維模板匹配算法 以圖10中分割出來的第八個字符8為例,左編號中的8為模板,右編號中的8為待匹配子圖(目標(biāo)圖像),如圖11所示。根據(jù)傳統(tǒng)空域二維模板匹配算法,將模板圖像8(圖11a))在待匹配圖像(圖11b))上平移,并計算二者的互相關(guān)函數(shù)值,得出互相關(guān)系數(shù)序列。選擇最佳閾值,并將互相關(guān)系數(shù)序列中的最大值與閾值進(jìn)行比較,如果大于最佳閾值就說明兩個字符匹配,即兩字符相等;如果小于最佳閾值,則說明兩字符不相等,即左右編號不匹配。根據(jù)匹配結(jié)果,當(dāng)左右編號的每一個字符都匹配時,說明存入自動存款機(jī)中的鈔票是真幣;只要左右編號中有一個字符不匹配,就判定存入自動存款機(jī)中的鈔票是拼接幣。
圖11 空域二維模板匹配a) 模板;b) 待匹配圖像Fig.11 Two-dimensional template matching in space domaina) Template;b) Image to be matched
圖11中字符8空域二維模板匹配的互相關(guān)系數(shù)值為0.9089,而整個左右編號的互相關(guān)系數(shù)序列為0.9396、0.9037、0.8682、0.8982、0.9279、0.8893、0.9443、0.9089、0.8995、0.8884。本文一共掃描了100張圖像,采集到100組互相關(guān)系數(shù)序列。根據(jù)實驗結(jié)果,選擇0.82為相關(guān)系數(shù)最佳閾值,當(dāng)左右編號相關(guān)系數(shù)均大于0.82時,判定為真幣;當(dāng)左右編號中只要有一個字符小于0.82時,就判定紙幣為拼接幣。
實驗結(jié)果表明,利用空域二維模板匹配算法識別拼接幣左右編號是否一致完全可行,只要閾值選擇合適,識別正確率可以達(dá)到95%以上。該算法是一種精確的匹配算法,且模板選擇越小越好。但是,這種算法的計算量相當(dāng)大[18],不能快速實現(xiàn),其計算量一般為:O(H-M+1)×(W-N+1)×M×N(M*N為模板像素,W*H為待匹配圖像像素)。本文不采用這種方法。
2.6.2 一維灰度投影模板匹配算法 針對課題研究的圖像特點(diǎn),匹配對象是具有固定形狀的字符,且字符間存在一定的空白間距,本文提出了一種新的算法,一維灰度投影模板匹配算法。一維灰度投影模板匹配算法是分別將模板和待匹配圖像的二維圖像灰度值投影迭加到一維數(shù)軸上,并在一維數(shù)軸上分別從橫軸和縱軸兩個方向進(jìn)行匹配判斷,運(yùn)算量降低到:
O′(H-M+1)×(H×W+(H-N+1)×N)
圖12 一維灰度投影匹配Fig.12 One-dimensional gray scale projection matching
基本原理:灰度投影曲線充分反映了其在水平和垂直方向的上的灰度分布特征。首先求出待匹配圖像S第j層圖像和模板圖像T的兩個方向的灰度投影,得到待匹配圖像投影序列X[i]、Y[i]和模板圖像投影序列X1[i]、Y1[i]。然后,將模板投影曲線滑動經(jīng)過第j層投影曲線,計算滑動過程中每個位置的互相關(guān)函數(shù)R[i],由此產(chǎn)生一組互相關(guān)系數(shù)序列。選取最佳門限值,并用序列的最大值與該值比較,如果R[i]大于門限值,說明該子圖與模板圖像匹配。最后,對待匹配圖像S的[1,H-M+1]層依次進(jìn)行如上運(yùn)算,最終求出匹配子圖的位置。
一維灰度投影匹配的相關(guān)函數(shù)為:
(2)
采用一維灰度投影模板匹配算法。同樣以字符8為例,首先做出模板8和待匹配圖像8各自的兩個方向的投影曲線,如圖13中a) 、b)所示;其次根據(jù)式(2)分別計算兩者的水平和垂直灰度投影曲線序列的互相關(guān)函數(shù)序列;最后將序列最大值與最佳閾值比較。如果大于最佳閾值就說明兩個字符匹配,即兩字符相等;如果小于最佳閾值,則說明兩字符不相等,即左右編號不匹配。
圖13 一維灰度投影模板匹配過程a) 模板的水平和垂直灰度投影;b) 待匹配圖像水平和垂直灰度投影Fig.13 Process of one-dimensional gray scale projection template matchinga) Horizontal and vertical gray scale projection of template;b) Horizontal and vertical gray scale projection of image to be matched
圖13中字符8一維模板匹配的水平灰度投影互相關(guān)系數(shù)值為0.9681,垂直灰度投影互相關(guān)系數(shù)值為0.9707,而整個左右編號的一維水平灰度投影互相關(guān)系數(shù)序列為0.9757、0.9792、0.9640、0.9733、0.9820、0.9771、0.9908、0.9681、0.9754、0.9641,一維垂直灰度投影互相關(guān)系數(shù)序列為0.9578、0.9284、0.9903、0.9680、0.9559、0.9876、0.9485、0.9707、0.9941、0.9792。同樣,本文根據(jù)采集到的100組互相關(guān)系數(shù)序列,選擇0.85為水平一維灰度投影模板匹配的互相關(guān)系數(shù)最佳閾值,選擇0.90為垂直一維灰度投影模板匹配的互相關(guān)系數(shù)最佳閾值。
實驗結(jié)果表明,利用一維灰度投影模板匹配算法識別拼接幣左右編號是否一致是一種快速、高效的方法,并且識別正確率達(dá)到100%。在這里應(yīng)該注意,只有字符的水平和垂直灰度投影都滿足大于閾值的條件才可以判定左右編號匹配,只要一個方向不滿足,均視為拼接幣。
2.6.3 頻域卷積模板匹配算法 頻域的模板匹配原理是:將模板圖像T與待匹配圖像S進(jìn)行相關(guān)運(yùn)算,也就是將模板T和待匹配圖像S進(jìn)行傅立葉變換,根據(jù)快速傅立葉變換和卷積的關(guān)系,計算矩陣的卷積,并提取峰值[19]。如果峰值大于門限值,則這一點(diǎn)就是匹配圖像的位置。傅立葉變換的卷積性質(zhì)為:
[f(x,y)*g(x,y)]?F(u,v)G(u,v)
(3)
同樣以圖10中分割出來的第八個字符8為例,左編號中的8為模板,右編號中的8為待匹配子圖。根據(jù)式(3),可以通過頻域乘積得出字符8的另一類互相關(guān)系數(shù)為63.8185,而整個左右編號的頻域乘積再傅立葉反變換得到的互相關(guān)系數(shù)序列為54.5353、53.2515、50.5458、40.8258、26.8501、52.1880、41.0037、63.8185、50.3796、67.5072。
同樣,本文根據(jù)采集到的100組互相關(guān)系數(shù)序列,從結(jié)果和數(shù)據(jù)可以得出頻域的模板匹配原理與空域二維匹配方法類似,只是在卷積的過程中運(yùn)用了傅立葉變換的卷積性質(zhì),使得計算快速有效;但是,可以從上一組數(shù)據(jù)看出,當(dāng)字符的像素較少時,互相關(guān)系數(shù)值很小,例如“1”這個字符的系數(shù)值就為26.8501,此外還有“7”。因此,無法選擇合適的閾值對相關(guān)系數(shù)序列進(jìn)行判定。因此本文不采用這種算法。
本文提出了一套自動存款機(jī)識別拼接幣的算法,重點(diǎn)介紹了采用圖像處理技術(shù)對于采集紙幣圖像的預(yù)處理,并對比介紹了傳統(tǒng)的空域二維模板匹配算法、頻域卷積模板匹配算法和本文提出的一維灰度投影模板匹配算法識別左右編號的技術(shù)。通過仿真和實驗證明,該算法識別正確率達(dá)到了100%。識別程序在內(nèi)存4GB、CPU為2.4GHz(兩核)的PC上,運(yùn)行時間為3.325s。將程序優(yōu)化并進(jìn)行語言轉(zhuǎn)換后下載到DSP硬件系統(tǒng)中,其運(yùn)行時間為0.52s,滿足實時性要求,方案切實可行,為自動存款機(jī)識別拼接幣奠定了基礎(chǔ)。