苑瑋琦 高 澤
(沈陽工業(yè)大學視覺檢測技術研究所,沈陽 110870)
近年來,機器視覺技術在我國工業(yè)、軍事、航天、交通及安全等各個方面得到廣泛應用。其理論基礎為利用視覺檢測裝置代替人工,對目標進行識別、判斷與測量。隨著自動抄表技術的發(fā)展,機器視覺技術也在該方面得到廣泛應用。由于我國城鄉(xiāng)居民傳統(tǒng)的人工抄表方式存在諸多缺點,例如勞動強度大、抄表周期長、監(jiān)控考核難、費財費力。隨著信息科技的發(fā)展,自動抄表系統(tǒng)以準確性高、應用范圍廣、具有實時性及信息存儲量大等優(yōu)點勢必取代傳統(tǒng)的人工抄表方式[1]。
目前市場上使用的自動抄表方式主要有兩種:IC卡智能水表和脈沖式抄表系統(tǒng)。但是這兩種遠傳抄表方式存在很多缺陷,IC卡智能水表插卡觸點暴露在空氣中會導致其觸點氧化生銹,非常容易造成IC卡無法插入或失靈,內(nèi)部結構中的電控閥門也容易損壞,造成計數(shù)失靈[2]。而脈沖式抄表系統(tǒng)的精確度不高,且常因為停電發(fā)生漏記現(xiàn)象,需要工作人員定期對水表數(shù)據(jù)進行校準。針對以上信息,設計采用視覺檢測技術對水表號碼進行非接觸式采集,直接對水表號碼的圖像進行分析,能夠精準地得到水表號碼,完成抄表工作。南京理工大學提出的使用CMOS圖像傳感器OV7602采集水表號碼,經(jīng)過模/數(shù)轉(zhuǎn)換后送入主處理器進行圖像處理。該系統(tǒng)選擇的主處理器為S3C44B0X芯片,最高運行頻率僅為66MHz[3],與現(xiàn)在數(shù)字圖像處理廣泛應用的6000系列DSP的工作頻率600MHz相差甚遠,無法滿足抄表系統(tǒng)實時性的要求[4]。根據(jù)以上情況和自動抄表系統(tǒng)的特點,筆者設計了一套以CMOS圖像傳感器和高速DSP芯片DM6437為核心處理器的抄表系統(tǒng)。
抄表系統(tǒng)系統(tǒng)硬件平臺主要用于水表圖像的采集、存儲與顯示。其中圖像采集單元主要用來對水表圖像數(shù)據(jù)進行采集、解碼和存儲;圖像信號處理單元主要用來對水表號碼進行識別與顯示。
抄表系統(tǒng)硬件平臺總體結構如圖1所示。
圖1 抄表系統(tǒng)硬件結構框圖
整個抄表系統(tǒng)硬件平臺以DSP為控制核心,包括CMOS圖像傳感器單元、多路轉(zhuǎn)換芯片CD4051、視頻解碼芯片TVP5146、DDR2圖像數(shù)據(jù)存儲單元及顯示單元等組成。其中CMOS圖像傳感器的分辨率為720×576,輸出PAL制式視頻;TVP5146視頻解碼器用于將視頻解碼成數(shù)字信號;DDR2存儲器用于存儲采集到的4路水表圖像;LCD液晶屏用來顯示水表圖像與水表號碼。抄表系統(tǒng)總體工作流程如圖2所示。
圖2 抄表系統(tǒng)工作流程
系統(tǒng)上電后首先將運行程序下載到DM6437的片內(nèi)RAM中運行,對DSP和視頻解碼芯片進行初始化。通過多路轉(zhuǎn)換芯片將4路水表信號分時送入DDR2中進行存儲,全部數(shù)據(jù)存儲完成后結束采集操作。
在該系統(tǒng)中,圖像傳感器的選擇至關重要,采集的圖像質(zhì)量越高,對號碼識別的正確率越高,占用的存儲空間越大,而采集圖像的質(zhì)量過低將導致號碼識別的正確率降低。對比CMOS與CCD兩種常用的圖像傳感器,考慮CMOS圖像傳感器采集圖像的速度更快、占用內(nèi)存少、質(zhì)量雖然低于CCD圖像傳感器采集的圖像,但是可以滿足對水表號碼的識別要求,CMOS圖像傳感器的價格優(yōu)勢明顯[5],所以系統(tǒng)采用CMOS圖像傳感器來實現(xiàn)水表號碼圖像采集的功能。在實際設計中,需要對CMOS圖像傳感器進行準確定位,安裝在水表上方需采集到全部5個水表號碼,CMOS圖像傳感器與水表表盤位置關系如圖3所示。
圖3 圖像傳感器定位圖
圖中α為傳感器最小視場角,H為傳感器與水表表盤的間距,L為5個字符的整體寬度。設計H的值為35mm,L為固定值50mm,計算得出α為70°。設計選擇的CMOS圖像傳感器視場角為80°,滿足設計要求,經(jīng)實驗證明可以采集到清晰穩(wěn)定的水表號碼圖像。
由于采用的CMOS圖像傳感器輸出的視頻信號為PAL制式的模擬信號,而DSP只能對數(shù)字信號進行處理,所以兩者之間必須搭建一個連接的橋梁,設計采用TVP5146視頻解碼芯片對視頻信號進行有效解碼,轉(zhuǎn)換為DSP可以接收的數(shù)字信號。同時設計中需要對4路水表信號進行有效的采集,而TVP5146不能同時處理多個視頻模擬信號,所以需要4路水表信號分時地送入TVP5146,設計采用CD4051多路轉(zhuǎn)換芯片提供完美的解決方案[6],模擬信號處理單元結構如圖4所示。
圖4 模擬信號處理單元結構
CD4051是單8通道數(shù)字控制模擬電子開關,通過3個二進制位控制端A、B、C控制選擇8個通道中的一路模擬信號經(jīng)輸入端送達輸出端。當C腳接地置低電平時,B、A引腳通過GPIO口控制4路模擬信號分時送入TVP5146進行解碼,在多路轉(zhuǎn)換開關與TVP5146之間加入一個電壓跟隨器解決了由于輸出阻抗大引起的信號存在壓降、圖像偏暗的問題[7]。DM6437具有111個與其他功能復用的GPIO口,GPIO44與CCD8、EM_A[20]、EM_D[7]功能復用,GPIO45與CCD9、EM_A[19]、EM_D[6]功能復用,需要通過配置32位引腳功能復用寄存器PINMUX0 使能GPIO44與GPIO45。CI[1:0]功能選擇位CI10SEL置0,釋放CCD8與CCD9;EMIFA功能模式位AEM置000,釋放EMIFA功能引腳;GPIO44與GPIO45即GPIO口功能引腳。TVP5146的工作方式需要通過DSP的I2C總線接口對視頻解碼器內(nèi)部寄存器進行配置,DM6437的I2C接口時鐘要設置為10MHz,對TVP5146配置的主要寄存器見表1。
表1 TVP5146寄存器配置
視頻解碼芯片利用內(nèi)部的五線自適應梳狀濾波器將PAL制式的視頻信號進行YC(亮度分量、色度分量)分離,這樣可以有效地降低亮度和色度的串擾,提供最佳亮色分離效果,YC分離后將視頻信號編碼成YCbCr 4:2:2格式的數(shù)字視頻信號,DM6437的CCD[7:0]與TVP5146的Y[9:2]引腳對應連接,作為視頻數(shù)據(jù)的傳輸通道,DM6437的PCLK信號由TVP5146的DATACLK輸出提供14.318 18MHz像素時鐘,作為視頻輸入時鐘信號。TVP5146輸出的視頻HS和VS分別與DM6437的HD和VD引腳相連,作為視頻采樣的行同步、場同步信號。TVP5146與視頻處理前端的視頻接入口CCDC相連,在行、場同步信號和時鐘信號的同步下,數(shù)據(jù)的傳輸行、場消隱信號只對有效的視頻信號進行采集,經(jīng)過8位并行數(shù)據(jù)總線將數(shù)據(jù)傳入DSP中。
為了使系統(tǒng)能將5個字符信息完整采集,設置水表圖像的分辨率大小為720×480,所以每一張圖像的大小為337KB左右(720×480×8bit),圖像的格式為YCbCr 4:2:2,即每一個像素的排列方式為Y-Cb-Y-Cr,這里Y代表圖像的灰度值,Cb、Cr分別代表圖像藍色和紅色的色差分量,在存儲圖像時只提取圖像的Y分量進行存儲,只存儲圖像的灰度值不僅節(jié)省了一半的存儲空間而且減少了圖像預處理一半的工作量。共有4路水表原圖像和預處理后的圖像需要存儲,約占用3MB存儲空間,而DM6437的內(nèi)存僅為240KB,無法滿足需求,必須外擴存儲空間,系統(tǒng)選用32M×16bit存儲空間的DDR2與DSP存儲器接口無縫連接,提供了充足的存儲空間。圖像存儲首地址設置為0x81000000,再將該圖像進行預處理,只提取Y分量重新存儲到首地址0x82000000中。DDR2可以在時鐘的上升沿和下降沿同時進行數(shù)據(jù)傳輸,并且擁有高速的預讀取系統(tǒng)命令數(shù)據(jù)能力,在每個時鐘能以4倍外部總線的速度讀/寫數(shù)據(jù),能以4倍內(nèi)部控制總線的速度運行,系統(tǒng)中DDR2的工作時鐘為14.318 18MHz,其實際頻率則高達57.272 72MHz,這樣解決了外擴內(nèi)存時存在的延時問題,在硬件上保證了系統(tǒng)的運行速度。
采集圖像的質(zhì)量和預處理后的效果直接影響到后續(xù)對號碼識別的正確率,通過液晶屏可以實時觀察圖像的清晰度,也可以觀察系統(tǒng)是否正常工作。DM6437的視頻處理后端VPBE包括兩部分:一個屏幕顯示模塊OSD,一個數(shù)字LCD接口和數(shù)/模轉(zhuǎn)換接口的視頻編碼器VENC。VENC生成模擬視頻輸出[8],數(shù)字LCD控制器產(chǎn)生數(shù)字RGB/YCbCr輸出數(shù)據(jù)和時間信號。OSD支持同時顯示兩個視頻窗口和兩個OSD窗口,每個窗口支持分別使能,窗口的高、寬、起始坐標、終止坐標都可通過編程進行控制,系統(tǒng)只使用OSD窗口0依次顯示4路水表號碼的實時圖像,其他3個窗口禁止使用。
圖像傳感器直接采集到的水表號碼圖像必須進行去噪、矯正、分割及二值化等預處理后,才能使用字符識別算法對單個字符進行識別。
首先,使用3×3窗口對水表圖像進行中值濾波,再對圖像進行旋轉(zhuǎn)矯正,公式如下:
x1=co·(i-x)-si·(j-y)+0.5+x
y1=si·(i-x)+co·(j-y)+0.5+y
式中i、j——旋轉(zhuǎn)前的位置;
si、co——旋轉(zhuǎn)角度的正弦余弦值;
x、y——旋轉(zhuǎn)中心;
x1、y1——旋轉(zhuǎn)后的位置。
通過這兩個變換公式可以得到旋轉(zhuǎn)前位置和旋轉(zhuǎn)后位置的關系,對這兩個位置賦值即得到旋轉(zhuǎn)后的圖像(圖5)。
圖5 圖像矯正效果
對5個字符占有的部分各自進行分割,當設定分割大小為31×90時,既可以保留全部字符信息,也避免了外部噪聲區(qū)域較多的位置,識別效果達到最好。由于字輪式水表圖像上、中、下各部分的灰度值分布不均勻,最后對圖像使用三段閾值法進行二值化,二值化后的效果如圖6所示。
圖6 二值化效果
對字輪式水表字符的識別,主要是針對0~9這些數(shù)字的識別,字符組成結構簡單,采用模板匹配法時需要的模板數(shù)量少,由于算法的運算速度快,可以滿足實時性的要求。
首先判斷字符圖像是否為半字符,如果不是則使用已經(jīng)存儲在系統(tǒng)中的10個整字符模板進行匹配,與模板匹配程度最好的字符圖像即識別出的實際水表字符;如果判斷該字符圖像為半字符圖像,則要按照上、下兩部分的半字符占整幅圖像的比例使用相鄰的原有模板合成新模板,再與新模板進行匹配,識別出相應字符。算法流程如圖7所示。
筆者所研制的字輪式水表號碼圖像采集裝置的實物如圖8所示。
因為圖像傳感器為CMOS攝像頭,所以在自然光線及日光燈等光照下可能略有差別。識別成功率在95%以上。通過對實際采集的圖像進行水表號碼的識別測試,未成功識別的號碼圖像,主要錯誤來源于水表圖像中有光斑等干擾。
圖7 字符識別流程
圖8 水表號碼圖像采集裝置
分析了IC卡式水表與脈沖式水表的缺點,設計了基于DSP的字輪式水表號碼識別系統(tǒng),并對系統(tǒng)的硬件結構進行了詳細介紹,給出了使用模板匹配法對水表字符進行識別的方法。實際運行結果表明:該裝置能夠?qū)崟r對4路水表進行抄表,滿足設計要求。
[1] 王志立.住宅小區(qū)智能抄表系統(tǒng)[J].電子工程師,2004,30(12):69~70.
[2] 李國祥.淺析IC卡智能水表[J].中國計量,2005,(2):51~52.
[3] 馬婷.基于圖像處理的遠程抄表系統(tǒng)的設計[J].濟南職業(yè)學院學報,2012,(6):91~93.
[4] 張德剛,陳文藝,陳瑞.基于DM6437的數(shù)字攝像機[J].電子設計工程,2011,19(8):130~132.
[5] 李文軍,毛謙敏,梁國偉,等.遠傳水表抄表系統(tǒng)設計與實現(xiàn)[J].自動化儀表,2004,25(9):56~57.
[6] 蘇永道.CMOS集成模擬開關的變通應用—脈寬編碼器[J].國外電子元器件,2001,(2):49~51.
[7] 張友,周鵬,蒲東兵,等.基于DM6437的車輛檢測與跟蹤[J].信息技術,2013,(3):78~80.
[8] 劉閣.DM6437視覺非接觸測量平臺的設計與應用[J].工程與試驗,2013,(z1):20~26.