王 亞,余 宏,莫章潔,鄧 睿
(貴州師范學院物理與電子科學學院,貴州 貴陽 550018)
數字圖像處理技術應用十分廣泛,其主要是將圖像信號轉換成數字信號,從而利用計算機對其處理。利用ZYNQ SOC 開發板的FPGA+ARM 架構,重構嵌入式SOC 芯片系統架構體系,結合Sobel 邊緣檢測算法,設計實現一種靈活且可重構的嵌入式SOC 高速視頻圖像采集系統平臺。通過FPGA 邏輯資源實現較快的計算速度,又可利用ARM 處理器進行多樣化設計,可為不同的圖像識別類人工智能場景應用提供高速且靈活的數據采集。具有靈活性高、功耗低、體積小、處理速度快等優點。本次設計中,采用友晶(Terasic)公司的MT9P001 圖像傳感器采集圖像數據,將其傳輸至FPGA 系統平臺,再由FPGA 系統平臺將圖像數據存儲至SDRAM 中。與此同時,內部圖像處理模塊進行sobel邊緣檢測功能,并最終在TFT顯示屏上實時顯示。
傳統的嵌入系統開發,以固定的單片機系統為主要的處理器核心,利用C 語言在keil 工具下進行軟件設計,從而實現應用開發。在本項目的研究中,與傳統的嵌入式開發環境有所不同。以數字系統設計為核心,將FPGA 與單片機ARM 系統合為一體,在同一開發軟件平臺上同時進行軟硬件的靈活應用開發,具有很高的靈活性和自主性。所以對異構多核開發框架、流程進行熟悉,核間通信、ARM 與FPGA 通信等開發應用平臺進行研究,根據不同的需求更機動靈活地完成嵌入式的應用開發。

圖1 系統整體框圖
邊緣是圖像的基本特征之一,其在圖像分析與視覺分析中發揮著重要作用,常用于人們識別物體的有效信息。圖像上不同亮度的區域之間的臨界就是“邊緣”的意思,在兩個不同區域的“邊緣”處有著許多像素點,這些像素點就組成了不同的坐標。常用的邊緣檢測法是用圖像的灰度值來檢測圖像的邊緣。算法主要計算公式是一階或者二階導數。
Sobel 算法是一種基于3x3 的矩陣實現的邊緣檢測算法,是邊緣檢測常用的重要技術之一,采用離散型計算方法,用差分計算方式計算圖像亮度函數灰度的近似值。在邊緣檢測中,核心關鍵是圖像數據與Sobel 卷積核進行卷積運算,卷積核分為x 方向和y 方向,其中x 方向檢測水平邊緣,y 方向檢測垂直邊緣。其算法流程如圖所示。

圖2 Sobel 算法流程圖


圖3 3x3A 矩陣
總梯度為:

實際使用中,常化簡為絕對值形式:

梯度方向計算公式為:

如此,我們定義一個閾值M,如果G 大于M,則可認為該點是一個邊界值,反之,則不是邊界值。
本論文中,硬件部分采用Altera 公司的QuartusII 集成開發環境進行硬件設計,軟件部分采用Artera 公司開發的SoC EDS 設計軟件進行軟件設計。SoC FPGA 的硬件設計部分,在QuartusII 集成開發環境下的Qsys 工具中進行,建立一個HPS硬核系統:
創建QuartusII 工程,選擇具有ARM 硬核處理器的FPGA器件;
在Tools 中選擇Qsys 工具并新建Qsys 工程,在界面中添加HPS 處理器等IP 核,使用file->new component 配置好所需的信號,時序,端口等信息;
所有模塊添加完成后,根據信號類型以及自己希望的數據連接定制模塊間信號連接:
最后,為外設分配地址映射,以便軟件開發中獲取設備地址。
基于soC FPGA 的嵌入式軟件設計,采用Altera 公司推出的嵌入式系統設計軟件soC EDS,由soC EDS 開發套件下的ARM DS-5 開發環境設計視頻傳輸系統。ARM DS-5Debugger可通過USB-Blaster 連接目標開發板并進行在線調試,也可基于ARM 架構處理器的模型進行調試。
視頻圖像采集是一個視頻采集系統的最前端部分,圖像數據的優劣性如分辨率,幀率等很大程度上決定著整體系統的性能指標。本次設計圖像采集模塊采用TRDB-D5M 高清圖像傳感器,該傳感器采用Micron 公司的MT9P001 數字圖像傳感芯片,為1/2.5 尺寸CMOS 結構感光元件,具有五百萬像素。采用40pin 的標準GPIO 母口,能夠與Artera 公司與友晶科技公司聯合推出的Del-soC 開發板的GPIOO 公口連接[7]。該攝像頭采用自動工作模式和可配置工作模式,默認工作模式為可配置工作模式,通過12C 總線設置其內部控制寄存器,對攝像頭的分辨率,像素時鐘等工作參數進行調節。
TRDB-D5M 圖像采集需要在FPGA 中用Verilog 硬件描述語言配置,通過讀取時序得到原始圖像。每次上電之后,圖像傳感器通過12C 配置正確參數以正常工作,配置參數通過12C_Controller 模塊傳遞給攝像頭控制芯片。圖像數據以掃描的方式輸出,當LINE_VALID 信號為高時,輸出有效圖像數據,否則將是0 值。

圖4 TRDB-D5B 圖像采集模塊
數據讀寫控制選擇SDRAM,其型號為HY57V2562GTR,擁有256Mbit 的容量,16bit 總線,地址線采用12 位行列地址設計,非常適合高寬帶和大容量的存儲設計。在進行實時圖像處理中,這一優勢至關重要。HY57V2562GTR 還擁有如下特點:
采用標準SDRAM 協議;
接口電壓低,輸入輸出功率損耗降低;
內部有4 個存儲陣列,可進行4Bank 操作;
器件所有引腳與LVTTL 接口兼容;
刷新周期8192 次/64ms。
HY57V2562GTR 在工作時,首先需要一個上電初始化過程,其次需要一個200us 的穩定期。不同的SDRAM 穩定期不同,在輸入穩定期之后,需要對所有的L-Bank 預充電,使SDRAM內部所有存儲器件進入待機狀態。預充電結束后,SDARM 內部的刷新計數器會進行8 次刷新操作,不同的SDRAM 刷新次數不同,最后一階段配置模式寄存器。電初始化過程結束后,我們就能將采集到的圖像數據進行讀,寫,刷新等操作,并最終通過TFT 顯示屏實時顯示。

圖5 SDRAM 存儲陣列示意圖
傳統的VGA 顯示器采用的是模擬信號,而FPGA 輸出的是數字信號,若采用VGA 顯示器顯示,則需要在兩者之間加數模轉換模塊(DAC 模塊),這使得設計更加復雜化。同時,由于轉換芯片價格一般比較貴,這會造成成本的上升。TFT 顯示屏為數字信號顯示屏,省略了DAC 模塊,為使整體系統設計簡單化,我們選用了RGB 接口的TFT 顯示屏。TFT 顯示屏的掃描方式和VGA 顯示屏標準類似,故可按VGA 顯示器的設計方法驅動TFT 顯示器。
VGA 接口的時序分為行掃描和列掃描,電子束從屏幕左上方開始掃描,從左向右,自上而下。每行掃完后,電子束都回到屏幕下一行左邊的起始位置。這期間,CRT 對電子束進行消隱。每行結束時,用行同步信號進行行同步。掃描完所有行,用場同步信號進行場同步,并使掃描回到屏幕左上方。同時進行場消隱,預備下一場(幀)的掃描。不同VGA 顯示屏之間僅時序參數不一樣,可用相同方式進行設計。在設計VGA 驅動代碼時,將時序指標進行參數化設計,以便在更換顯示屏時省去代碼編寫的重復性過程,只需更改參數便可完成驅動。
通過TRDB-D5M 高清攝像頭對實物圖的數據采集,本設計方案基本實現了sobel 邊緣檢測,且檢測結果正確。實時對數據進行了處理,完成了預期的設計目標。


圖6 測試圖實物圖與顯示測試圖
通過FPGA-ARM 異構系統平臺和TRDB-D5M 采集圖片數據,以Sobel算子進行邊緣檢測。采用Verilog硬件設計語言編碼,控制TRDB-D5M 采集圖片視頻流數據,并通過TFT 顯示屏進行顯示,驗證了整體系統的可行性。本設計方案對各個部分進行模塊設計,成功實現對視頻流數據進行Sobel 邊緣檢測的實時處理,使開發出性能更高、用途更廣泛的處理方法成為可能。