王 亞,余 宏,莫章潔,鄧 睿
(貴州師范學(xué)院物理與電子科學(xué)學(xué)院,貴州 貴陽(yáng) 550018)
數(shù)字圖像處理技術(shù)應(yīng)用十分廣泛,其主要是將圖像信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),從而利用計(jì)算機(jī)對(duì)其處理。利用ZYNQ SOC 開(kāi)發(fā)板的FPGA+ARM 架構(gòu),重構(gòu)嵌入式SOC 芯片系統(tǒng)架構(gòu)體系,結(jié)合Sobel 邊緣檢測(cè)算法,設(shè)計(jì)實(shí)現(xiàn)一種靈活且可重構(gòu)的嵌入式SOC 高速視頻圖像采集系統(tǒng)平臺(tái)。通過(guò)FPGA 邏輯資源實(shí)現(xiàn)較快的計(jì)算速度,又可利用ARM 處理器進(jìn)行多樣化設(shè)計(jì),可為不同的圖像識(shí)別類人工智能場(chǎng)景應(yīng)用提供高速且靈活的數(shù)據(jù)采集。具有靈活性高、功耗低、體積小、處理速度快等優(yōu)點(diǎn)。本次設(shè)計(jì)中,采用友晶(Terasic)公司的MT9P001 圖像傳感器采集圖像數(shù)據(jù),將其傳輸至FPGA 系統(tǒng)平臺(tái),再由FPGA 系統(tǒng)平臺(tái)將圖像數(shù)據(jù)存儲(chǔ)至SDRAM 中。與此同時(shí),內(nèi)部圖像處理模塊進(jìn)行sobel邊緣檢測(cè)功能,并最終在TFT顯示屏上實(shí)時(shí)顯示。
傳統(tǒng)的嵌入系統(tǒng)開(kāi)發(fā),以固定的單片機(jī)系統(tǒng)為主要的處理器核心,利用C 語(yǔ)言在keil 工具下進(jìn)行軟件設(shè)計(jì),從而實(shí)現(xiàn)應(yīng)用開(kāi)發(fā)。在本項(xiàng)目的研究中,與傳統(tǒng)的嵌入式開(kāi)發(fā)環(huán)境有所不同。以數(shù)字系統(tǒng)設(shè)計(jì)為核心,將FPGA 與單片機(jī)ARM 系統(tǒng)合為一體,在同一開(kāi)發(fā)軟件平臺(tái)上同時(shí)進(jìn)行軟硬件的靈活應(yīng)用開(kāi)發(fā),具有很高的靈活性和自主性。所以對(duì)異構(gòu)多核開(kāi)發(fā)框架、流程進(jìn)行熟悉,核間通信、ARM 與FPGA 通信等開(kāi)發(fā)應(yīng)用平臺(tái)進(jìn)行研究,根據(jù)不同的需求更機(jī)動(dòng)靈活地完成嵌入式的應(yīng)用開(kāi)發(fā)。
圖1 系統(tǒng)整體框圖
邊緣是圖像的基本特征之一,其在圖像分析與視覺(jué)分析中發(fā)揮著重要作用,常用于人們識(shí)別物體的有效信息。圖像上不同亮度的區(qū)域之間的臨界就是“邊緣”的意思,在兩個(gè)不同區(qū)域的“邊緣”處有著許多像素點(diǎn),這些像素點(diǎn)就組成了不同的坐標(biāo)。常用的邊緣檢測(cè)法是用圖像的灰度值來(lái)檢測(cè)圖像的邊緣。算法主要計(jì)算公式是一階或者二階導(dǎo)數(shù)。
Sobel 算法是一種基于3x3 的矩陣實(shí)現(xiàn)的邊緣檢測(cè)算法,是邊緣檢測(cè)常用的重要技術(shù)之一,采用離散型計(jì)算方法,用差分計(jì)算方式計(jì)算圖像亮度函數(shù)灰度的近似值。在邊緣檢測(cè)中,核心關(guān)鍵是圖像數(shù)據(jù)與Sobel 卷積核進(jìn)行卷積運(yùn)算,卷積核分為x 方向和y 方向,其中x 方向檢測(cè)水平邊緣,y 方向檢測(cè)垂直邊緣。其算法流程如圖所示。
圖2 Sobel 算法流程圖
圖3 3x3A 矩陣
總梯度為:
實(shí)際使用中,常化簡(jiǎn)為絕對(duì)值形式:
梯度方向計(jì)算公式為:
如此,我們定義一個(gè)閾值M,如果G 大于M,則可認(rèn)為該點(diǎn)是一個(gè)邊界值,反之,則不是邊界值。
本論文中,硬件部分采用Altera 公司的QuartusII 集成開(kāi)發(fā)環(huán)境進(jìn)行硬件設(shè)計(jì),軟件部分采用Artera 公司開(kāi)發(fā)的SoC EDS 設(shè)計(jì)軟件進(jìn)行軟件設(shè)計(jì)。SoC FPGA 的硬件設(shè)計(jì)部分,在QuartusII 集成開(kāi)發(fā)環(huán)境下的Qsys 工具中進(jìn)行,建立一個(gè)HPS硬核系統(tǒng):
創(chuàng)建QuartusII 工程,選擇具有ARM 硬核處理器的FPGA器件;
在Tools 中選擇Qsys 工具并新建Qsys 工程,在界面中添加HPS 處理器等IP 核,使用file->new component 配置好所需的信號(hào),時(shí)序,端口等信息;
所有模塊添加完成后,根據(jù)信號(hào)類型以及自己希望的數(shù)據(jù)連接定制模塊間信號(hào)連接:
最后,為外設(shè)分配地址映射,以便軟件開(kāi)發(fā)中獲取設(shè)備地址。
基于soC FPGA 的嵌入式軟件設(shè)計(jì),采用Altera 公司推出的嵌入式系統(tǒng)設(shè)計(jì)軟件soC EDS,由soC EDS 開(kāi)發(fā)套件下的ARM DS-5 開(kāi)發(fā)環(huán)境設(shè)計(jì)視頻傳輸系統(tǒng)。ARM DS-5Debugger可通過(guò)USB-Blaster 連接目標(biāo)開(kāi)發(fā)板并進(jìn)行在線調(diào)試,也可基于ARM 架構(gòu)處理器的模型進(jìn)行調(diào)試。
視頻圖像采集是一個(gè)視頻采集系統(tǒng)的最前端部分,圖像數(shù)據(jù)的優(yōu)劣性如分辨率,幀率等很大程度上決定著整體系統(tǒng)的性能指標(biāo)。本次設(shè)計(jì)圖像采集模塊采用TRDB-D5M 高清圖像傳感器,該傳感器采用Micron 公司的MT9P001 數(shù)字圖像傳感芯片,為1/2.5 尺寸CMOS 結(jié)構(gòu)感光元件,具有五百萬(wàn)像素。采用40pin 的標(biāo)準(zhǔn)GPIO 母口,能夠與Artera 公司與友晶科技公司聯(lián)合推出的Del-soC 開(kāi)發(fā)板的GPIOO 公口連接[7]。該攝像頭采用自動(dòng)工作模式和可配置工作模式,默認(rèn)工作模式為可配置工作模式,通過(guò)12C 總線設(shè)置其內(nèi)部控制寄存器,對(duì)攝像頭的分辨率,像素時(shí)鐘等工作參數(shù)進(jìn)行調(diào)節(jié)。
TRDB-D5M 圖像采集需要在FPGA 中用Verilog 硬件描述語(yǔ)言配置,通過(guò)讀取時(shí)序得到原始圖像。每次上電之后,圖像傳感器通過(guò)12C 配置正確參數(shù)以正常工作,配置參數(shù)通過(guò)12C_Controller 模塊傳遞給攝像頭控制芯片。圖像數(shù)據(jù)以掃描的方式輸出,當(dāng)LINE_VALID 信號(hào)為高時(shí),輸出有效圖像數(shù)據(jù),否則將是0 值。
圖4 TRDB-D5B 圖像采集模塊
數(shù)據(jù)讀寫控制選擇SDRAM,其型號(hào)為HY57V2562GTR,擁有256Mbit 的容量,16bit 總線,地址線采用12 位行列地址設(shè)計(jì),非常適合高寬帶和大容量的存儲(chǔ)設(shè)計(jì)。在進(jìn)行實(shí)時(shí)圖像處理中,這一優(yōu)勢(shì)至關(guān)重要。HY57V2562GTR 還擁有如下特點(diǎn):
采用標(biāo)準(zhǔn)SDRAM 協(xié)議;
接口電壓低,輸入輸出功率損耗降低;
內(nèi)部有4 個(gè)存儲(chǔ)陣列,可進(jìn)行4Bank 操作;
器件所有引腳與LVTTL 接口兼容;
刷新周期8192 次/64ms。
HY57V2562GTR 在工作時(shí),首先需要一個(gè)上電初始化過(guò)程,其次需要一個(gè)200us 的穩(wěn)定期。不同的SDRAM 穩(wěn)定期不同,在輸入穩(wěn)定期之后,需要對(duì)所有的L-Bank 預(yù)充電,使SDRAM內(nèi)部所有存儲(chǔ)器件進(jìn)入待機(jī)狀態(tài)。預(yù)充電結(jié)束后,SDARM 內(nèi)部的刷新計(jì)數(shù)器會(huì)進(jìn)行8 次刷新操作,不同的SDRAM 刷新次數(shù)不同,最后一階段配置模式寄存器。電初始化過(guò)程結(jié)束后,我們就能將采集到的圖像數(shù)據(jù)進(jìn)行讀,寫,刷新等操作,并最終通過(guò)TFT 顯示屏實(shí)時(shí)顯示。
圖5 SDRAM 存儲(chǔ)陣列示意圖
傳統(tǒng)的VGA 顯示器采用的是模擬信號(hào),而FPGA 輸出的是數(shù)字信號(hào),若采用VGA 顯示器顯示,則需要在兩者之間加數(shù)模轉(zhuǎn)換模塊(DAC 模塊),這使得設(shè)計(jì)更加復(fù)雜化。同時(shí),由于轉(zhuǎn)換芯片價(jià)格一般比較貴,這會(huì)造成成本的上升。TFT 顯示屏為數(shù)字信號(hào)顯示屏,省略了DAC 模塊,為使整體系統(tǒng)設(shè)計(jì)簡(jiǎn)單化,我們選用了RGB 接口的TFT 顯示屏。TFT 顯示屏的掃描方式和VGA 顯示屏標(biāo)準(zhǔn)類似,故可按VGA 顯示器的設(shè)計(jì)方法驅(qū)動(dòng)TFT 顯示器。
VGA 接口的時(shí)序分為行掃描和列掃描,電子束從屏幕左上方開(kāi)始掃描,從左向右,自上而下。每行掃完后,電子束都回到屏幕下一行左邊的起始位置。這期間,CRT 對(duì)電子束進(jìn)行消隱。每行結(jié)束時(shí),用行同步信號(hào)進(jìn)行行同步。掃描完所有行,用場(chǎng)同步信號(hào)進(jìn)行場(chǎng)同步,并使掃描回到屏幕左上方。同時(shí)進(jìn)行場(chǎng)消隱,預(yù)備下一場(chǎng)(幀)的掃描。不同VGA 顯示屏之間僅時(shí)序參數(shù)不一樣,可用相同方式進(jìn)行設(shè)計(jì)。在設(shè)計(jì)VGA 驅(qū)動(dòng)代碼時(shí),將時(shí)序指標(biāo)進(jìn)行參數(shù)化設(shè)計(jì),以便在更換顯示屏?xí)r省去代碼編寫的重復(fù)性過(guò)程,只需更改參數(shù)便可完成驅(qū)動(dòng)。
通過(guò)TRDB-D5M 高清攝像頭對(duì)實(shí)物圖的數(shù)據(jù)采集,本設(shè)計(jì)方案基本實(shí)現(xiàn)了sobel 邊緣檢測(cè),且檢測(cè)結(jié)果正確。實(shí)時(shí)對(duì)數(shù)據(jù)進(jìn)行了處理,完成了預(yù)期的設(shè)計(jì)目標(biāo)。
圖6 測(cè)試圖實(shí)物圖與顯示測(cè)試圖
通過(guò)FPGA-ARM 異構(gòu)系統(tǒng)平臺(tái)和TRDB-D5M 采集圖片數(shù)據(jù),以Sobel算子進(jìn)行邊緣檢測(cè)。采用Verilog硬件設(shè)計(jì)語(yǔ)言編碼,控制TRDB-D5M 采集圖片視頻流數(shù)據(jù),并通過(guò)TFT 顯示屏進(jìn)行顯示,驗(yàn)證了整體系統(tǒng)的可行性。本設(shè)計(jì)方案對(duì)各個(gè)部分進(jìn)行模塊設(shè)計(jì),成功實(shí)現(xiàn)對(duì)視頻流數(shù)據(jù)進(jìn)行Sobel 邊緣檢測(cè)的實(shí)時(shí)處理,使開(kāi)發(fā)出性能更高、用途更廣泛的處理方法成為可能。