摘 要: 一種能夠?qū)嶋H應(yīng)用于帶字輪號(hào)碼家用水表" title="水表">水表的遠(yuǎn)程抄表" title="遠(yuǎn)程抄表">遠(yuǎn)程抄表裝置的設(shè)計(jì)原理與實(shí)現(xiàn)過(guò)程,。該裝置屬于無(wú)源遠(yuǎn)程抄表方式,,具有低成本、快速,、節(jié)能,、不易損壞等特點(diǎn)。
關(guān)鍵詞: 水表 號(hào)碼讀取 數(shù)字圖像處理 DSP 嵌入式技術(shù)
水表是我國(guó)城市家庭必不可少的居家設(shè)施,。目前,,我國(guó)絕大部分城市水表抄寫(xiě)的方式依然是由專人挨家挨戶抄寫(xiě),這樣不僅效率低下,,而且也給住戶帶來(lái)不便,。另外,也有部分地區(qū)對(duì)現(xiàn)有的住宅樓進(jìn)行改造,,將住戶家中的水表集中遷到樓外一個(gè)固定的地方,。但這樣做需要對(duì)住宅樓進(jìn)行較大面積的破壞,不利于樓房的壽命并嚴(yán)重影響住宅的美觀,,還給用戶帶來(lái)一定的經(jīng)濟(jì)負(fù)擔(dān),,特別是北方冬天寒冷的天氣容易造成水管凍結(jié)。目前,,也有利用條碼、累計(jì)脈沖等方式進(jìn)行遠(yuǎn)程抄表的研究,,但是因?yàn)閷儆谟性捶绞?,需要另外配備電池使裝置持續(xù)工作,這樣由于電池壽命,、易損壞等各方面原因給實(shí)際應(yīng)用帶來(lái)了很大限制,。
本文實(shí)現(xiàn)的利用數(shù)字圖像處理技術(shù)對(duì)水表號(hào)碼進(jìn)行無(wú)源自動(dòng)抄寫(xiě)記錄裝置,一方面最大限度地保護(hù)用戶住宅結(jié)構(gòu)和原有裝修,,另一方面可以使抄表員不必逐一進(jìn)入用戶家中,,而是集中在一個(gè)地點(diǎn)將用戶水表號(hào)碼自動(dòng)抄寫(xiě)并保存到抄表員所攜帶的存儲(chǔ)設(shè)備中。且?guī)资畱艟用窆靡粋€(gè)記錄裝置,,因此成本非常低,,不會(huì)因?yàn)榘惭b該裝置給用戶帶來(lái)大的負(fù)擔(dān)。本裝置以數(shù)字信號(hào)處理器(DSP)和視頻解碼器為核心,完成抄寫(xiě)等功能,。目前已經(jīng)實(shí)現(xiàn)的抄表裝置采用的DSP是TI公司的TMS320VC5416,。實(shí)驗(yàn)證明,準(zhǔn)確抄寫(xiě)一個(gè)水表讀數(shù)所用時(shí)間不超過(guò)0.5s,,完全能夠滿足實(shí)際應(yīng)用需要,。
1 硬件結(jié)構(gòu)
水表字輪號(hào)碼自動(dòng)記錄裝置的硬件主要由五部分組成:圖像預(yù)處理模塊,圖像采集識(shí)別模塊,,系統(tǒng)程序數(shù)據(jù)存儲(chǔ)模塊,,系統(tǒng)邏輯控制模塊,號(hào)碼顯示模塊,。系統(tǒng)框圖如圖1所示,。
1.1 圖像預(yù)處理模塊
由于攝像頭輸出的是模擬視頻信號(hào),因此在進(jìn)行識(shí)別處理前必須進(jìn)行一次預(yù)處理,,并轉(zhuǎn)換為數(shù)字視頻信號(hào)[5],。
圖像預(yù)處理模塊以視頻解碼器為核心,完成對(duì)模擬攝像頭所采集的模擬圖像信號(hào)的放大,、濾波,、A/D轉(zhuǎn)換等預(yù)處理。同時(shí),,從全電視信號(hào)中分離出行同步信號(hào)和場(chǎng)同步信號(hào),。
視頻解碼器在正常工作之前首先需要初始化,視頻解碼器的初始化工作通過(guò)I2C總線完成,。其中,,I2C總線的SCL和SDA分別為時(shí)鐘控制線和數(shù)據(jù)線,并分別連接到可編程邏輯器件的兩個(gè)I/O引腳,,在數(shù)字信號(hào)處理器(DSP)的控制下實(shí)現(xiàn)I2C總線協(xié)議,,進(jìn)而完成對(duì)視頻解碼器片上寄存器的初始化操作。
1.2 圖像采集識(shí)別模塊
圖像采集識(shí)別模塊主要由數(shù)字信號(hào)處理器(DSP)以及必要的外圍電路組成,。
由于目前TI的DSP系列產(chǎn)品占據(jù)了國(guó)際市場(chǎng)的大部分份額,,從供貨及性價(jià)比等方面考慮,本文采用的是價(jià)格相對(duì)較低且能滿足系統(tǒng)要求的TMS320VC5416PGE160(以下簡(jiǎn)稱VC5416),,其豐富的片上資源,,如128K×16bit的片上RAM和16K×16bit的片上ROM,可以大大縮小系統(tǒng)的體積,、復(fù)雜性以及成本,,為系統(tǒng)運(yùn)行的穩(wěn)定性提供了保證。
本系統(tǒng)將VC5416的HPI(主機(jī)接口)設(shè)置為GPIO(通用I/O口),,分別用于檢測(cè)圖像預(yù)處理電路提供的行場(chǎng)同步信號(hào),、奇場(chǎng)標(biāo)志信號(hào)和像素時(shí)鐘信號(hào),,用以確保時(shí)序正確,從而保證所采集的號(hào)碼圖像的完整性,為后續(xù)工作提供可靠的數(shù)據(jù)源,。另外利用GPIO(通用I/O口)編程控制CPLD實(shí)現(xiàn)I2C總線協(xié)議,,在系統(tǒng)上電時(shí)對(duì)圖像預(yù)處理電路進(jìn)行必要的初始化,以控制所采集的號(hào)碼圖像的大小,、位置,、轉(zhuǎn)換速度,同時(shí)保證號(hào)碼圖像的質(zhì)量等,。
1.3 系統(tǒng)程序數(shù)據(jù)存儲(chǔ)模塊
要實(shí)現(xiàn)系統(tǒng)脫機(jī)運(yùn)行和保證系統(tǒng)掉電不丟失,,最好將編譯好的軟件程序燒制到VC5416的片上ROM中,這樣既可以減小系統(tǒng)體積和成本,,也有利于提高系統(tǒng)性能,。本系統(tǒng)在實(shí)驗(yàn)過(guò)程中,為調(diào)試方便采用外擴(kuò)1片映射到數(shù)據(jù)空間的Flash ROM來(lái)進(jìn)行脫機(jī)運(yùn)行的調(diào)試工作,。Flash ROM在數(shù)據(jù)空間的映射地址從0x8000~0xFFFF,。系統(tǒng)上電時(shí),利用VC5416的Bootloader將Flash中的程序?qū)隫C5416的內(nèi)RAM中,,然后將其屏蔽,。
1.4 系統(tǒng)邏輯控制模塊
系統(tǒng)采用了1片復(fù)雜可編程邏輯器件(CPLD)。該器件在系統(tǒng)中起到全局邏輯控制作用,,使整個(gè)系統(tǒng)可以在DSP的統(tǒng)一管理和控制下協(xié)調(diào)工作,。
1.5 號(hào)碼顯示模塊
當(dāng)一幅號(hào)碼圖像的識(shí)別過(guò)程結(jié)束后,DSP TMS320VC5416還需通過(guò)驅(qū)動(dòng)電路在數(shù)碼管LED上顯示識(shí)別結(jié)果,。驅(qū)動(dòng)電路采用的是最常用的LED驅(qū)動(dòng)器MAX7219[2][4],。
2 軟件設(shè)計(jì)
軟件主要包括圖像預(yù)處理電路的初始化程序、DSP的初始化程序,、紙幣號(hào)碼圖像采集與識(shí)別程序,、號(hào)碼顯示譯碼程序以及上電引導(dǎo)程序等。本文簡(jiǎn)要介紹編寫(xiě)的幾個(gè)主要程序,。
2.1 圖像預(yù)處理電路的初始化程序
圖像預(yù)處理電路的初始化主要通過(guò)設(shè)置視頻解碼器相應(yīng)的寄存器實(shí)現(xiàn),。視頻解碼器片上寄存器的讀寫(xiě)通過(guò)I2C總線協(xié)議的形式完成。首先,,由DSP輸出控制信號(hào),,分別用于對(duì)應(yīng)I2C總線的數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL),。然后,,根據(jù)I2C總線協(xié)議,編程實(shí)現(xiàn)對(duì)視頻解碼器片上寄存器的訪問(wèn),。
系統(tǒng)對(duì)視頻解碼器的寄存器設(shè)置如表1所示,。
由于DSP的I2C總線實(shí)現(xiàn)程序比較繁瑣,,所以本文沒(méi)有列出程序清單。
2.2 DSP的初始化程序設(shè)計(jì)
該程序主要通過(guò)對(duì)必要的DSP存儲(chǔ)器映射寄存器(MMR)賦值,,使其工作在系統(tǒng)要求的狀態(tài),,主要包括以下操作:
(1)將處理器模式狀態(tài)寄存器(PMST)設(shè)置為0xAC,使中斷向量表重定位到0x0080,,并且允許訪問(wèn)片上ROM,,同時(shí)將片上雙尋址RAM0~3(DARAM0~3)映射到程序空間的0x0080~0x7FFF,將雙尋址RAM4~7(DARAM4~7)映射到數(shù)據(jù)空間的0x8000~0xFFFF。
(2)時(shí)鐘方式寄存器(CLKMD)設(shè)置為0x97F7,,使程序正常運(yùn)行在160MHz的最高工作頻率下,。
(3)軟件等待狀態(tài)寄存器(SWWSR)設(shè)置為0x0000,使數(shù)據(jù),、程序和I/O空間的訪問(wèn)都工作在零等待狀態(tài),。
(4)狀態(tài)寄存器1(ST1)設(shè)置為0x6980,以滿足C程序運(yùn)行的需要,,同時(shí)禁止所有可屏蔽中斷,。
2.3 水表號(hào)碼圖像采集與識(shí)別程序
水表號(hào)碼圖像采集程序的設(shè)計(jì)思路為通過(guò)采用通用I/O口(GPIO)對(duì)圖像預(yù)處理電路轉(zhuǎn)換產(chǎn)生的行、場(chǎng)同步信號(hào)以及像素時(shí)鐘等的查詢,,將圖像數(shù)據(jù)準(zhǔn)確地存儲(chǔ)到指定的存儲(chǔ)空間[3],。
每個(gè)水表號(hào)碼的大小約為50×70,即3500個(gè)像素,,水表字符框的高度為88個(gè)像素,,考慮到水表字輪經(jīng)常出現(xiàn)上下兩個(gè)字符各出現(xiàn)一部分的情況(圖2右側(cè)的數(shù)字6、7部分),,因此每個(gè)字符需要采集保存的實(shí)際高度應(yīng)為字符框的高度,,即88個(gè)像素。而字符間距為60~70個(gè)像素,,如圖3所示,。目前,僅對(duì)水表后四位數(shù)字進(jìn)行采集便基本能滿足需要,,如果直接對(duì)圖像進(jìn)行采集和保存,,則一幅水表號(hào)碼圖像需要400×88,即35200(35.2K)個(gè)像素,。但是系統(tǒng)本身的存儲(chǔ)空間非常有限,,可用數(shù)據(jù)空間只有40KB左右,而識(shí)別算法在運(yùn)行過(guò)程中還需要隨時(shí)開(kāi)辟相當(dāng)數(shù)量的存儲(chǔ)空間來(lái)存儲(chǔ)臨時(shí)變量和中間結(jié)果,,因此不能直接對(duì)圖像進(jìn)行保存,。
在設(shè)計(jì)采集程序時(shí)需要對(duì)讀入的圖像數(shù)據(jù)進(jìn)行選擇性的存儲(chǔ),盡量只保存水表字輪號(hào)碼體部分,,而號(hào)碼體之間的冗余數(shù)據(jù)則盡量舍棄,,以節(jié)省存儲(chǔ)空間,。根據(jù)水表字輪的特點(diǎn),在數(shù)據(jù)采集過(guò)程中通過(guò)軟件處理去除相鄰數(shù)字間冗余信息后保存的圖像如圖2所示,。
目前采用的識(shí)別程序是一種基于結(jié)構(gòu)法的識(shí)別算法,,是根據(jù)數(shù)字本身結(jié)構(gòu)上所存在的特點(diǎn)編寫(xiě)的。本識(shí)別算法大體可分為定位,、預(yù)處理,、識(shí)別、結(jié)果輸出四部分,。
定位時(shí),,應(yīng)用號(hào)碼本身紋理特性,即水平和垂直投影均有較明顯的峰谷峰性質(zhì),。首先進(jìn)行水平投影,,定位上下邊界,縮小圖片面積,;然后垂直投影,,定位每個(gè)字符的左右邊界。預(yù)處理時(shí),,采用適當(dāng)濾波算法,,濾除由污跡和采集芯片造成的噪聲;區(qū)域分割過(guò)程中,,為提高速度,,在光照一定的情況下,采用固定閾值分割,。
識(shí)別時(shí),,依據(jù)水平垂直穿線次數(shù)和航程面積,以及定位框的高寬比等多種特征的信息融合技術(shù),,利用分叉判定樹(shù)對(duì)數(shù)字進(jìn)行識(shí)別,。例如,數(shù)字1水平穿線均為1次,,垂直高度遠(yuǎn)大于水平寬度,。
針對(duì)水表字輪號(hào)碼隨時(shí)都有上下兩個(gè)號(hào)碼各出現(xiàn)一部分的情況,可采用相鄰兩個(gè)號(hào)碼間的結(jié)構(gòu)特點(diǎn)進(jìn)行區(qū)分,。
3 裝置設(shè)計(jì)過(guò)程中主要解決的技術(shù)問(wèn)題
(1)圖像采集部分采用的是將視頻解碼器數(shù)字?jǐn)?shù)據(jù)輸出直接與DSP的數(shù)據(jù)線相連,,而不是通常采用的在兩者之間增加一個(gè)FIFO(先入先出存儲(chǔ)器)進(jìn)行數(shù)據(jù)緩存的方法。對(duì)電路進(jìn)行這樣的處理不僅節(jié)省了一個(gè)FIFO成本,,更主要的是降低了系統(tǒng)復(fù)雜度,,提高了裝置的工作效率。但這樣就相應(yīng)增加了圖像數(shù)據(jù)采集軟件的設(shè)計(jì)難度,。因?yàn)閿?shù)字?jǐn)?shù)據(jù)的輸出速度為13.5MHz,,像素時(shí)鐘為27MHz,而DSP工作頻率為160MHz,,DSP要實(shí)現(xiàn)對(duì)一個(gè)像素?cái)?shù)據(jù)的讀取首先要查詢各種同步信號(hào),,然后才能讀取一個(gè)數(shù)據(jù),而且在讀取數(shù)據(jù)時(shí)也要耗費(fèi)多個(gè)時(shí)鐘周期,。此問(wèn)題經(jīng)過(guò)不斷的軟件優(yōu)化和調(diào)試得到了解決,。
(2)視頻解碼器初始化所需的I2C總線的實(shí)現(xiàn)問(wèn)題,較常用的方式是利用現(xiàn)成的帶I2C總線模塊的單片機(jī)實(shí)現(xiàn),。所采用的DSP本身沒(méi)有I2C總線模塊,,設(shè)計(jì)時(shí)也沒(méi)有增加一個(gè)帶I2C模塊的單片機(jī)方式,而利用DSP的HPI(主機(jī)接口)口控制CPLD,,模擬實(shí)現(xiàn)了I2C總線協(xié)議,。
(3)針對(duì)水表字輪號(hào)碼存在相鄰號(hào)碼各出現(xiàn)一部分的情況,編寫(xiě)了專門的處理軟件,。
(4)遠(yuǎn)程抄表,,采用在每家住戶水表內(nèi)密封一個(gè)2cm×2cm×2cm的模擬攝像頭,并利用一根電源線和一根信號(hào)線與主處理板相連,。這樣,,主處理板可以對(duì)相連的所有用戶水表逐一進(jìn)行抄表記錄。
所開(kāi)發(fā)的基于圖像處理和嵌入式技術(shù)的遠(yuǎn)程抄表裝置樣機(jī)已經(jīng)完成,,目前運(yùn)行穩(wěn)定,,正確讀取率99%以上。特別對(duì)于上下兩個(gè)水表字輪號(hào)碼各出現(xiàn)一部分的情況識(shí)別比較準(zhǔn)確,,識(shí)別結(jié)果可通過(guò)LED直觀顯示,。
參考文獻(xiàn)
[1] 美國(guó)德州儀器(TI).TMS320VC5416 fixed-point digital signal processor data manual.Literature Number:SPRS095K, March 1999-Revised September 2003.www.TI.com.
[2] 傘宏力,,樊寧.一種用單片機(jī)驅(qū)動(dòng)線陣CCD的方法[J].沈陽(yáng)工業(yè)大學(xué)學(xué)報(bào),,2005,(1)
[3] YUAN W Q,,ZHENG Ch Q.Paper currency recognition system based on DSP.International Electronic Elements,,2004.
[4] HUANG X M.The gathering and display system for digital image real-time.Study for computer,1997,,(2)
[4] 張健,,顏華,董玉巖,,等.電容層析成像投影數(shù)據(jù)的采集 系統(tǒng)設(shè)計(jì)[J].沈陽(yáng)工業(yè)大學(xué)學(xué)報(bào),,2006,(1)