于彥峰 ,任全會
(鄭州鐵路職業技術學院,河南 鄭州450052)
二維條形碼是一種新的信息存儲和傳遞技術,目前在公共安全、國防、政府管理、金融、交通、醫療、海關及相關工業商業領域得到了廣泛應用。當前二維條碼采用的技術標準為PDF417,該標準具有早期編碼技術所不備的優點,如增強了防偽保密性能,成本低廉,不依賴網絡和數據庫,隨載體移動等。傳統的識別技術都是利用單片機和分立元件實現的,有統識別速度慢、電路復雜的缺點[1]。本系統基于SOPC 二維條形碼識別設計,充分利用片內資源,能夠很好的克服傳統識別系統的缺點。
該系統在設計時圍繞在完全脫離后臺數據庫時,能夠進行識別的高效率這樣一個基本點進行。系統通過SOPC 技術來實現二維條碼識別器。系統總體結構如圖1 所示。

圖1 系統總體機構框圖
在QuartusⅡ和SOPC Builder 環境下完成SOPC 系統的定制。系統芯片采用Altera 公司的CycloneⅡ系列EP2C35 型FPGA。在實現識別的功能時,通過在軟核NiosⅡ處理器編寫程序并且運行,可以加速硬件模塊的運行。

圖2 SOPC 結構原理圖
整個系統組成分3 層,分別為條碼譯碼的核心算法、操作系統和硬件平臺。核心算法主要實現對條碼信息的處理和數據糾錯,操作系統采用QuartusⅡ操作系統,該操作系統作為系統平臺,當前能相對地提高整體系統性能[2-3]。硬件平臺采用CyloneⅡEP2C35、ADV7181B、相關存儲器以及外部設備。
圖像信號的數模轉換由解碼芯片ADV7181B 完成,FPGA 中的I2C 模塊主要功能的實現是通過配置ADV7181B 來實現,ADV7181B 接受I2C 總線傳過來的數據對芯片以及寄存器實現初始化配置。T_DA是數據信號,TD_VS 是場同步信號,TD_HS 是行同步信號。具體的結構如圖3 所示。

圖3 圖像采集子系統框圖
系統設計采用兩個行緩存來進行乒乓切換,因為圖像數據采用乒乓緩存的方式存入SRAM,這樣就能避免由于寫出速度過快而寫入速度相對較慢而導致的錯誤。
SOPC 系統內部要求不但要同步接收前端A/D采集的數據,而且還必須把采集的數據低通濾波處理。最后轉換成鏈路口模式數據和總線模式數據。還要求模擬設計SPI 端口完成時鐘器件的初始化配置。所以前端AD 接口采用4 路同步鎖存模式進行設計,同步接收時鐘為250 MHz,上下沿觸發,每路數據位寬為20 bit,將每路低位補零處理后拼成128 bit 數據[4],SOPC 系統各接口設計如圖4 所示。

圖4 SOPC 系統內部接口設計
對二維條碼的識別譯碼工作主要分3 步,即對二維條碼進行動態二值化,對二維條碼進行定位確認、角度確認和邊界確認,通過邊緣檢測進行糾錯解碼。
通常我們在采集二維條碼的時候經常會出現條碼傾斜的現象,如圖5 所示。所以二維條碼的定位非常的重要,本系統實現是通過條碼起始頭標準規定的黑白條空比來定位的,在國標中,PDF417 二維條碼的起始符黑白條空比定義為81111113,終止符黑白條空比定義為711311121。通過對每一行圖像的掃描,分別去對應匹配起始符和終止符的黑白條空比。黑白條空比例的誤差只要不超過3 位,都認為符合比例。4 個控制點a、b、c、d 符合條空比比例條碼線段,e、f、g、h 4 個控制點符合終止符條空比的條碼線段。相鄰邊角度為90°,誤差角度小于2°,平行邊的長度誤差小于5 個像素點是判斷控制點是否正確的標準[5-6]。

圖5 起始點和終止點的確定
PDF417 標準里所規定的二維條碼是行式條碼,如要識別每一行的條碼碼字則須先確認條碼的行數,之后則對每一行進行處理。系統首先采用Sobel算子對條碼進行水平邊緣的檢測,檢測之后再向水平方向進行投影。
現設p(x)為應投影的峰值,對檢測之后得到的每個投影峰值相對p(x)分別求出差值Δp(x),然后進行分別判定。判定標準為連續兩個差值,前一個為正,后一個為0 或者為負。噪聲點一般會出現在層與層的連接處,故為提高精確度,圖像掃描取值選擇每一層條碼的中央位置[7-8]。
行邊界確認之后,就可得到條空的像素個數,分別記為{N1,N2,…,N7,N8},條和空的總模塊數是17,然后根據式(1)

可計算出,條模塊數集合{T1,T2,T3,T4}和空模塊數集合{K1,K2,K3,K4}。3 個簇的數據可以組成PDF417 條碼的其中一個條碼,用哈希算法來查找法把條空比轉換成條碼數據的問題可以解決3 個簇的數據總量太大,而且每個簇中的數據無法與條空比一致對應的問題。

式(2)中A 是條模塊數和空模塊數的組合,最后通過公式計算出F 值,通過對F 值的查找來實現數據流的譯碼。

圖6 系統軟件流程圖
系統流程圖如圖6 所示。首先對掃描硬件如掃描處理芯片,射頻控制芯片和通信接口等進行初始化,然后對二維條碼圖像進行動態地掃描和實時的譯碼。利用函數把采集模塊上的全局信號進行復位,中斷服務程序向攝像頭發送掃描指令,當一幅二維條碼圖像采集完成后,即產生一個硬件中斷,則把標志位設置為1,然后把圖像數據送入SDRAM 中進行圖像預處理和譯碼。
在不同環境分別對300 個二維條碼圖像進行采集測試,共進行了3 次測試:第1 次是在二維條碼完整的情況下進行測試,第2 次是對有5%破損和污染的條碼進行測試,第3 次隨機對100 個條碼進行測試。測試結果如表1 所示,結果表明本系統平均識別率達97.7%,耗時60 ms。

表1 系統實際測試結果
本二維條碼識別系統的核心工作頻率是100 MHz,分辨率是320×240,識別每個二維條碼圖像所需要時間是60 ms。本系統具有如下優點:一是充分利用PDF417 碼的優點進行分割條碼,與傳統分割法相比可以大大提高條碼識別速度。二是通過利用NioslI 軟核處理器,簡化了設計電路,增強了系統穩定性。采用FPGA 和SOPC 的可操作性,提高了系統資源利用率,且便于維護和升級;三是采用新的模塊、指令和C2H 硬件加速等方法對算法進行了優化,進一步提高整個系統的識別速度。
[1] 鐘榮峯.物聯網:整合感知層的動態網縫[J]. 集成電路應用,2011(5):8-10.
[2] 席忠紅,李海翼. 光譜儀CCD 數據采集中SOPC 系統設計及USB2.0 IP 核的實現[J].電子器件,2011,34(6):700-704.
[3] 胡向峰,王黎明.基于SOPC 技術的高速數據采集系統的設計[J].微電子學與計算機,2009,26(6):62-65.
[4] 崔更申,黃廷輝.基于嵌入式的Zigbee 無線條碼掃描儀系統的設計[J].電子器件,2007,30(5):1971-1974.
[5] 鄒雄,何翠群,劉國棟,等.一種快速響應碼的圖像二值化方法[J].傳感技術學報,2010,23(9):765-769.
[6] 趙擎天,尉廣軍,姚義.基于SOPC 的多路并行同步數字信號采集系統設計[J].軍械工程學院學報,2011,23(3):60-65.
[7] 尚媛園,楊新華,徐達偉,等.基于SOPC 技術的高速圖像采集控制系統的設計與研究[J].傳感技術學報,2011,23(6):864-869.
[8] 黃云,楊尊先.基于SOPC 的數據采集與處理系統設計[J].電子器件,2010,33(1):67-70.