夏振春,丁萬山
(南京航空航天大學 自動化學院,江蘇 南京 210016)
實際采集到的條碼圖像中往往夾雜著背景信息,而真正對條碼識別有用的是條碼區(qū)域信息,因此,盡量減少無用信息的采集對條碼識別工作具有舉足輕重的意義。不同的應用場合下,條碼區(qū)域的尺寸各不相同,因此這就需要圖像采集設備能夠根據(jù)實際情況自動調(diào)節(jié)圖像分辨率,減少不必要信息的采集。傳統(tǒng)面陣CCD或攝像頭等圖像采集設備出廠時分辨率就已經(jīng)固定,無法在不改變硬件結構的條件下做到分辨率自動調(diào)節(jié)。文中提出一種基于接觸式圖像傳感器(CIS)和ARM9處理器的條碼圖像采集系統(tǒng),能夠根據(jù)實際需要自動調(diào)節(jié)掃描行數(shù)從而達到調(diào)節(jié)分辨率的目的。
條碼圖像的采集是整套系統(tǒng)的核心部分,它直接影響著系統(tǒng)的整體性能[1]。CIS每次掃描得到一行像素值,因此,必須配合橫向(垂直于CIS方向)運動才能完成一幅二維圖像的掃描。為保證圖像的準確采集,必須精確控制平臺的運動速度與CIS換行信號之間的關系[2]。本系統(tǒng)采用減速電機配合光電旋轉(zhuǎn)編碼器的方案來協(xié)調(diào)兩者之間的關系。條碼圖像采集平臺的整體結構框圖,如圖1所示。
圖1 條碼圖像采集平臺
采用接觸式圖像傳感器(CIS)作為圖像采集器件,其輸出的像素值信號(模擬電壓信號)經(jīng)過信號調(diào)理電路進行差分、放大、去噪等,送入高速A/D轉(zhuǎn)換器TLC5540轉(zhuǎn)換為對應像素灰度的數(shù)字量,然后經(jīng)FIFO緩存之后由ARM9讀入內(nèi)存,最后傳入PC機。
接觸式圖像傳感器[3]CIS(Contact Image Sensor)是一種新型的光電圖像傳感器。它具有體積小、重量輕、功耗低、結構緊湊、連接方便等優(yōu)點,近幾年在傳真機、掃描儀、復印機和其它獨特的圖像掃描儀器等領域得到了廣泛應用。本系統(tǒng)采用的SV643C10型CIS,其物理分辨率為600 dpi(23.6 dots/mm),有效掃描寬度為29.2 mm,共688個傳感器像素單元。
CIS的讀操作時序[4]如圖2所示。SP的上升沿過后,一輪掃描開始,第一個像素的有效信號發(fā)生在第27個時鐘周期處,所以,從第一個CP開始共52個Vout信號為無效像素信號。由于此CIS有688個傳感器像素單元,所以Vout引腳從第27個CP開始,依次輸出688個有效信號,此后Vout引腳輸出無效信號,直到下一個SP上升沿產(chǎn)生,觸發(fā)新一輪的掃描。
圖2 讀操作時序圖
為準確獲取一幅完整二維條碼圖像,必須協(xié)調(diào)好橫向運動速度與CIS之間的關系。本運動平臺由減速電機、光電編碼器和傳送機構組成。其中光電編碼器由光電開關(GK152)和光柵盤組成,光柵盤與減速電機同軸。光電編碼器產(chǎn)生的信號送給可編程邏輯器件(CPLD),作為CIS換行信號。在平臺的前端靠近CIS處再安裝一個GK152光電開關,產(chǎn)生的信號送給CPLD,作為整幅圖像的啟動、停止控制信號。
該部分主要完成對CIS信號的差分、放大等功能,以達到降噪以及提高驅(qū)動電壓的目的。具體電路實現(xiàn),如圖3所示。
圖3 信號調(diào)理電路
本系統(tǒng)選擇高速A/D轉(zhuǎn)換器TLC5540,采用單一5 V電源供電,8位分辨率,最大采樣率為40 msps,完全滿足系統(tǒng)需求。CIS輸出的電信號經(jīng)過濾波放大后達到接近A/D轉(zhuǎn)換電路的滿度值2 V,然后送入TLC5540的19引腳;當TLC5540輸出使能為低時輸出數(shù)據(jù)有效。由于TLC5540沒有片選信號,只有輸出使能控制,只要輸出使能為低就一直向總線上送入數(shù)據(jù),該信號一直有效,時鐘信號clk由CPLD提供,記作ad_clk。TLC5540的8根數(shù)據(jù)線首先經(jīng)過一個具有三態(tài)功能的總線驅(qū)動器74lv245(常選通),然后再送入FIFO,這樣不僅可以提高電路驅(qū)動能力,而且還可以起到電平轉(zhuǎn)換的作用。
采用三星公司的ARM9系列S3C2410A作為處理器,工作頻率可達到203 MHz,可以滿足實時性要求。它負責完成圖像的存儲、預處理以及與PC機的通訊等工作。
由于A/D輸出頻率僅為10 MHz,而S3C2410A最大處理速度可達203 MHz,為減少由于速度不匹配帶來的等待時間,提高系統(tǒng)工作效率,在高速A/D轉(zhuǎn)換器與處理器之間要加一個FIFO作為高速數(shù)據(jù)存儲器。選用Averlogic公司的1 M×8 bit的AL4V8M440[5,6]。FIFO的讀信號RE由S3C2410的通用片選信號nGCS6來控制,這樣將地址FIFO映射到S3C2410的0x30000000開始地址空間,ARM對FIFO讀取操作即可將數(shù)據(jù)寫入相應地址單元中,接口連接圖,如圖4所示。
圖4 A/D、FIFO以及ARM9連接圖
負責提供CIS的CP和SP信號,A/D的ad_clk以及FIFO的寫及寫復位信號等。其輸入時鐘為10 MHz,除此之外輸入信號還有CIS換行信號CR,采集啟停信號EN。文中采用的芯片是Altera公司的EPM7128SLC84-15。
為配合CIS的穩(wěn)定工作及圖像的準確采集,各驅(qū)動信號之間必須有嚴格的時序關系[7]。在Max+plus II開發(fā)環(huán)境采用VHDL語言進行各種驅(qū)動時序及控制信號的設計。其頂層文件采用圖形法,如圖5所示,其中,CR為CIS換行信號;EN為啟、停信號;clk為全局時鐘;cp為CIS時鐘脈沖輸入;SP為CIS幀啟動信號;FIFO_WCLK為FIFO寫時鐘;ad_clk為A/D轉(zhuǎn)換時鐘;FIFO_WRST為FIFO寫復位信號。
仿真結果,如圖6所示,為便于觀察,仿真時序中對時鐘及計數(shù)器大小進行了調(diào)整。
系統(tǒng)的軟件設計主要包括對ARM的編程和對CPLD的編程兩個部分,下面就條碼圖像采集的整個程序流程作簡要敘述,系統(tǒng)程序流程圖,如圖7所示。
圖7 采集流程圖
系統(tǒng)上電經(jīng)過一系列初始化后便進入等待狀態(tài),等待CIS啟動信號,一旦啟動,在幀啟動信號(SP)有效之后便對CP信號進行計數(shù),計數(shù)器為counter,當counter=27時,啟動A/D開始轉(zhuǎn)換,CPLD將數(shù)據(jù)寫入FIFO;當counter=344時,停止采集,等待下一次幀啟動有效(CIS在CP一個周期內(nèi)產(chǎn)生兩個像素值信號)。
ARM9等待FIFO的滿信號,一旦有效,便將FIFO寫指針復位并開始從FIFO讀取數(shù)據(jù),存到SDRAM中;若FIFO為空,則將讀指針復位。判斷SDRAM空間是否存滿,若滿,則結束;否則繼續(xù)判斷是否采集完。如果數(shù)據(jù)采集完畢,即結束,等待下次CIS啟動信號有效。為驗證采集結果的正確性,系統(tǒng)采集完圖像之后,將數(shù)據(jù)打包傳送到PC機上進行顯示、存儲等,以供后續(xù)條碼識別。采集結果如圖8所示,可以看出,本系統(tǒng)采集的圖像紋理清晰,完全能夠達到條碼識別的分辨率要求,并且大大減少了無用信息的采集。
利用CIS傳感器配合運動平臺實現(xiàn)了圖像分辨率的動態(tài)可調(diào),圖像分辨率為688,其中,x值可根據(jù)條碼實際尺寸及SDRAM內(nèi)存空間大小自動調(diào)整。既能滿足條碼識別系統(tǒng)對條碼圖像細節(jié)及分辨率的要求,又能較好的避免大量無用信息的采集,提高了條碼識別的效率。
圖8 系統(tǒng)采集結果
[1] 徐大誠,翁桂榮.線陣CCD數(shù)據(jù)的高速采集系統(tǒng)[J].傳感器技術,2002(9):45-50.
[2] 李紅梅,陳敏聰,陳子瑜,等.線陣CCD數(shù)據(jù)獲取方法研究與設計[J].電子測量技術,2008(6):125-128.
[3] 深圳矽感科技有限公司.SV643C10使用手冊[Z].深圳:深圳矽感科技有限公司,2003.
[4] 米本和也.CCD/CMOS圖像傳感器基礎與應用[M].陳榕庭,彭美桂,譯.北京:科學出版社,2006.
[5] 趙劼,劉鐵根,李晉申.基于DM642的高速圖像識別系統(tǒng)設計[J].電子測量與儀器學報,2007,21(1):86-89.
[6] 楊玉春,畢貴紅,丁喜波.利用FIFO和DMA實現(xiàn)線陣CCD高速數(shù)據(jù)采集[J].哈爾濱理工大學學報,2000,5(3):78-80.
[7] 林德輝,道克剛,鐘紹俊.基于CPLD的線陣CCD驅(qū)動時序的設計與實現(xiàn)[J].儀表技術,2008(4):22-23.