基于DSP的紙幣號碼識別系統(tǒng)
1 引言
本文引用地址:http://m.butianyuan.cn/article/20784.htm近年來,錢幣、特別是紙幣被搶劫事件不斷發(fā)生,嚴(yán)重影響了社會治安,也使銀行在經(jīng)濟(jì)上受到了嚴(yán)重的損失。如果被搶劫的錢幣不能在市場上流通,將從一個方面抑制銀行搶劫事件的發(fā)生。其中一種解決方案是記錄每一捆紙幣的號碼,將被搶劫的紙幣號碼建立一個數(shù)據(jù)庫。在貨幣流通市場提供一種紙幣號碼自動識別裝置,比如說與點鈔機(jī)結(jié)合,將貨幣號碼識別數(shù)據(jù)與被搶劫號碼數(shù)據(jù)庫比較,一旦有相同號碼出現(xiàn),便可確認(rèn)目前流通的錢幣為被搶劫的錢幣,從而限制其流通,同時也有利于搶劫案件的偵破。另外,由于紙幣號碼的唯一性,通過識別紙幣上的號碼,可以幫助識別假幣。國外有一種驗鈔打號機(jī),可以對典型的紙幣,比如美元、英鎊等進(jìn)行自動識別和號碼打印,這種裝置的典型識別速度為1張/秒。不過還沒有點鈔機(jī)附帶號碼自動識別裝置的文獻(xiàn)報道。
近些年,國內(nèi)也有一些單位研制開發(fā)紙幣號碼自動識別裝置,例如南京航空航天大學(xué)開發(fā)了一種基于單片機(jī)的紙幣號碼識別系統(tǒng)[3],利用線陣ccd實現(xiàn)紙幣圖象的采集,利用單片機(jī)實現(xiàn)號碼的定位與識別。其主要問題是難以提高號碼的識別速度。哈爾濱工業(yè)大學(xué)開發(fā)了一種基于dsp的紙幣號碼識別系統(tǒng)[4],其識別速度為8張/秒,但該速度為在pc機(jī)上的仿真結(jié)果,實際樣機(jī)沒有實現(xiàn)。此外,該系統(tǒng)采用cis(即接觸式線型圖象傳感器)獲得紙幣圖像信號,存在傳感器磨損問題。
針對以上情況,本文給出一種基于dsp的紙幣號碼識別系統(tǒng),利用面陣ccd攝象機(jī)采集紙幣號碼圖象,即每秒采集25幅圖象,而目前的點鈔機(jī)點鈔速度為每秒十幾張左右,從而可以實現(xiàn)與點鈔機(jī)的配合使用。該系統(tǒng)由以下幾個部分組成:(1)利用philip公司專業(yè)視頻解碼器saa7113實現(xiàn)紙幣號碼圖像的數(shù)字化;(2)利用ti公司的數(shù)字信號處理器tms320vc5410實現(xiàn)數(shù)字紙幣號碼圖像的采集和處理;(3)利用ti公司的異步串行接口芯片tl16c550完成整個系統(tǒng)與pc機(jī)之間的通信。
2 硬件設(shè)計原理
基于dsp的紙幣號碼識別系統(tǒng)的工作原理:從面陣ccd攝像頭攝取的紙幣模擬視頻圖像,經(jīng)專業(yè)視頻解碼器轉(zhuǎn)換為數(shù)字圖像。數(shù)字視頻信號經(jīng)圖像緩存fifo存入dsp的數(shù)據(jù)空間,作為后續(xù)圖像識別的數(shù)據(jù)來源。視頻解碼器同時分離出行場同步信號和象素時鐘參考信號,作為圖像緩存模塊的控制信號。為了保存和記錄號碼,經(jīng)識別后的紙幣號碼數(shù)據(jù)存儲在快速閃爍存儲器flash中,或根據(jù)需要通過異步串口傳送給pc機(jī)。復(fù)雜可編程邏輯器件cpld在整個系統(tǒng)中起到全局邏輯控制和對采集的紙幣圖像實現(xiàn)開窗處理的作用。系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示。3 圖像采集模塊
3.1視頻解碼芯片saa7113在系統(tǒng)中的應(yīng)用
saa7113是一種高集成度并且支持隔行掃描、多種數(shù)據(jù)輸出格式的視頻解碼器,內(nèi)置的i2c界面提供了簡單的對芯片內(nèi)部電路的控制功能。對saa7113的控制主要包括對輸入模擬信號的預(yù)處理、色度和亮度的控制,輸出數(shù)據(jù)格式及輸出圖象同步信號的選擇控制等。
在整個系統(tǒng)中對圖象的識別處理主要是針對灰度圖像進(jìn)行的,在saa7113所提供的多種數(shù)據(jù)輸出格式中,raw格式在8位輸出管腳上直接輸出與象素時鐘相對應(yīng)的象素灰度值,此種數(shù)據(jù)格式與其它格式相比對灰度圖像的采集將更直接。
saa7113的輸出rts0和rts1是多功能復(fù)用管腳,通過對子地址寄存器sa12寫入不同的控制字,可將兩輸出管腳配置為行同步、幀同步、奇偶場同步等不同的信號。在本系統(tǒng)中將rts0設(shè)置為行同步信號,rts1設(shè)置為場同步信號,同時saa7113還輸出象素時鐘的同步參考信號llc。通過i2c總線協(xié)議對saa7113的各個控制寄存器進(jìn)行設(shè)置,使其滿足系統(tǒng)要求。由于dsp芯片是處理型的器件,它的控制能力比較弱,通用i/o口比較少,而單片機(jī)具有很好的控制功能,因此對saa7113的初始化工作使用at89c51單片機(jī)來完成。at89c51單片機(jī)內(nèi)部無硬件i2c總線接口,在此將單片機(jī)的p1.0口設(shè)置為串行數(shù)據(jù)線sda,p1.1設(shè)置為串行時鐘線scl,通過軟件模擬i2c總線,對視頻解碼器saa7113進(jìn)行初始化,其硬件原理如圖2所示。
3.2使用cpld實現(xiàn)對圖像的開窗處理
利用象素時鐘llc2和行同步信號hs實現(xiàn)行截取的vhdl程序:
process(llc2,hs)
variable temp: std_logic_vector(10 downto 0);
begin
if(llc2event and llc2=1) then
if(hs=1 ) then temp:=temp+1;
if(temp>80 and temp<241)
then href<=1;
else href<=0;
end if; else href<=0;
end if; end if;
end process;
從saa7113輸出的數(shù)字視頻圖像為整幅圖像,可是對識別有用的圖像大小為40x200,為減少圖像數(shù)據(jù)的存儲量和處理量。通過調(diào)整ccd攝像頭與點鈔機(jī)之間的位置,利用視頻解碼器的行、場同步信號hs、vs和象素時鐘參考信號llc,使用vhdl語言,對感興趣的圖像區(qū)域進(jìn)行開窗處理。具體做法為:在場信號vs為高的期間,對行信號hs進(jìn)行計數(shù),
使感興趣的圖像期間的場信號輸出為高,在其它區(qū)域其場信號為低,這樣得到新的場信號vref。與場截取相類,利用行信號hs和象素時鐘llc2,得到新的行信號href。這樣通過兩個計數(shù)器實現(xiàn)了圖像的開窗處理。本文給出了對圖像進(jìn)行開窗處理的框圖,并給出了行截取的vhld程序,對列的截取vhdl程序與行截取相類似。
3.3利用dsp實現(xiàn)圖像的采集
saa7113上電初始化之后將一直處于工作狀態(tài),其象素時鐘參考信號llc為27mhz,為象素時鐘的二倍,即象素時鐘為13.5mhz。這么快的時鐘頻率如果直接進(jìn)行圖像采集的話將出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。本文采用了先進(jìn)先出陣列fifo作為圖像緩存,將圖像數(shù)據(jù)先存入fifo中,通過dsp讀取fifo中的圖像數(shù)據(jù),來完成圖像的采集。ccd攝像頭輸出pal制,場頻為50hz的視頻信號,其行周期為64us,場周期為20ms。在本系統(tǒng)中圖像大小為40x200,通過示波器可看到截取后的場周期為2.56ms,而dsp的讀寫周期為10ns,通過dsp的讀寫程序所需時間大約為3ms左右,與點鈔機(jī)相連接,將有充足的時間實現(xiàn)圖像的采集。
由于fifo是沒有片選的,對fifo控制主要是對其讀寫信號有效的控制。fifo寫有效經(jīng)cpld圖像截取后的行場同步信號以及象素時鐘信號來控制。在fifo寫完一場圖像數(shù)據(jù)之后,利用半滿信號作為dsp的中斷信號,通過中斷服務(wù)子程序?qū)D像數(shù)據(jù)存入dsp的數(shù)據(jù)空間作為識別處理的數(shù)據(jù)來源。對fifo的讀控制通過將其映射到dsp的i/o空間來實現(xiàn),為了與其它器件進(jìn)行區(qū)分使用地址線a15和a14參與譯碼。當(dāng)fifo的讀信號為高時,數(shù)據(jù)總線為高阻狀態(tài),從而實現(xiàn)總線隔離。
4 dsp存儲空間的設(shè)計dsp芯片由于其改進(jìn)的哈佛結(jié)構(gòu),處理速度快,特殊的dsp指令和快速地實現(xiàn)各種數(shù)字信號處理算法的特點,廣泛地應(yīng)用于各種圖像處理系統(tǒng)中。在本系統(tǒng)選用tms320vc5410作為中央處理器,該芯片的讀寫周期為10ns,具有豐富的片上資源[2]。
根據(jù)紙幣號碼圖像大小和號碼識別算法的要求,本系統(tǒng)在dsp外擴(kuò)了一片64kx16的ram,其中0x0000—0x3fff的存儲區(qū)映射到dsp的程序空間,0x8000—0xffff的存儲區(qū)映射到dsp的數(shù)據(jù)空間。同時外擴(kuò)了一片256kx16的flash芯片sst39vf400a,根據(jù)dsp系統(tǒng)程序加載的特點,將flash地址為0x8000—0xffff的存儲區(qū)在程序下載的過程中映射到dsp的數(shù)據(jù)空間,在程序加載的過程中映射到dsp的程序空間,其空間的區(qū)分通過dsp的通用i/o口xf來進(jìn)行控制。flash的地址為0x0000—0x7fff和0x10000—0x1ffff和0x20000—0x2ffff的存儲區(qū)映射到dsp的程序空間,作為識別的號碼結(jié)果的記錄存儲而用。
5 利用tl16c550實現(xiàn)與pc機(jī)之間的通信
在圖像采集調(diào)試及對號碼的算法調(diào)試中,為了檢驗圖像效果,需將圖像在pc機(jī)中呈現(xiàn)出來。由于tms320vc5410的串口是同步串行口,而與pc機(jī)通信卻是異步串行收發(fā),本文采用了異步串行收發(fā)器tl16c550來實現(xiàn)dsp與pc機(jī)之間的通信。tl16c550是ti公司生產(chǎn)的一種具有異步串行通信功能的大規(guī)模集成電路,通過對寄存器選擇輸入端a0、a1、a2的不同配置來實現(xiàn)對該器件的控制。在本系統(tǒng)中將其映射到dsp的i/o空間0x8000的地址,將dsp的地址線a2、a1、a0與550的寄存器選擇控制引腳a2、a1、a0相連,即通過對dsp的i/o空間地址為0x8000-0x8007的空間進(jìn)行寄存器的訪問。在tl16c550中接收和發(fā)送使用的是同一個中斷信號intrpt,對數(shù)據(jù)的接收和發(fā)送通過使能不同的中斷,通過中斷方式實現(xiàn)系統(tǒng)與pc機(jī)之間的通信。
6系統(tǒng)的軟件設(shè)計
采用手工編寫的匯編語言程序雖然具有執(zhí)行速度快的優(yōu)點,但用匯編語言編寫程序特別是識別算法的程序?qū)⑹潜容^費時費力的[4]。為了提高程序開發(fā)的效率,采用tms320c54x的c語言進(jìn)行軟件開發(fā)[5]。整個系統(tǒng)的軟件流程圖如圖6所示:
目前字符識別的算法很多,有背景特征點法,模板匹配法,結(jié)構(gòu)特征分析判斷法,神經(jīng)網(wǎng)絡(luò)識別算法等。結(jié)構(gòu)特征分析判斷法從字符的結(jié)構(gòu)本身出發(fā),檢測號碼的結(jié)構(gòu)特征,具有快速分類的特點,根據(jù)系統(tǒng)速度的要求,本文對采集到的號碼圖像就采用了此種識別算法來完成紙幣號碼的識別。7結(jié)束語
本系統(tǒng)通過使用ti公司的數(shù)字信號處理器實現(xiàn)紙幣號碼的采集,使用altera公司的復(fù)雜可編程邏輯器件cpld實現(xiàn)對圖像的截取,圖像采集效果非常好。該系統(tǒng)除有通用圖像處理系統(tǒng)的功能外,特別適合動態(tài)圖像的處理,具有極高的實時性。
評論