摘 要: 一種基于SoPC嵌入式單片解決方案的實(shí)時(shí)邊緣檢測(cè)系統(tǒng),利用FPGA片上邏輯資源實(shí)現(xiàn)了對(duì)640×512大小的動(dòng)態(tài)8 bit灰度圖像的實(shí)時(shí)邊緣檢測(cè)運(yùn)算,并利用片內(nèi)NiosⅡ處理器對(duì)系統(tǒng)進(jìn)行控制。分析了系統(tǒng)組成、工作原理、性能數(shù)據(jù)處理算法及實(shí)現(xiàn)過程。
關(guān)鍵詞: 圖像處理;SoPC;邊緣檢測(cè);FPGA;NiosⅡ
圖像邊緣可以定義為圖像局部特征的不連續(xù)性,表現(xiàn)為圖像灰度級(jí)的突變、紋理結(jié)構(gòu)的突變和彩色的變化等。圖像的邊緣信息包含了大部分的圖像特征信息,對(duì)圖像分析十分重要[2]。邊緣檢測(cè)技術(shù)是圖像處理和計(jì)算機(jī)視覺等領(lǐng)域最基本的技術(shù),如何快速、精確地提取圖像邊緣信息一直是國(guó)內(nèi)外研究的熱點(diǎn),然而邊緣檢測(cè)又是圖像處理中的一個(gè)難題[3]。在嵌入式系統(tǒng)中,往往也需要用到邊緣檢測(cè)等圖像處理方法。而由于嵌入式系統(tǒng)對(duì)成本、功耗、運(yùn)算速度及實(shí)時(shí)性的要求較嚴(yán)格,邊緣檢測(cè)算法的工程實(shí)現(xiàn)以及實(shí)現(xiàn)效率和成本便有了很重要的實(shí)際意義。
片上可編程系統(tǒng)SoPC(System on a Programmable Chip)是Altera公司提出的一種高效、靈活的SoC解決方案。它將處理器、存儲(chǔ)器、I/O口等系統(tǒng)設(shè)計(jì)需要的功能模塊集成到一個(gè)PLD 器件上,構(gòu)建成一個(gè)可編程的片上系統(tǒng)。它有非常靈活的設(shè)計(jì)方式,而且實(shí)現(xiàn)了軟硬件在系統(tǒng)可編程。
本文研究了一種采用SoPC單片解決方案的實(shí)時(shí)邊緣檢測(cè)系統(tǒng),通過利用FPGA片上資源實(shí)現(xiàn)對(duì)圖像數(shù)據(jù)的實(shí)時(shí)處理,達(dá)到了較高的處理性能,并且簡(jiǎn)化了系統(tǒng)結(jié)構(gòu)。同時(shí)通過在FPGA片上構(gòu)建NiosⅡ嵌入式處理器對(duì)系統(tǒng)進(jìn)行控制,并將數(shù)據(jù)處理部分封裝成處理器的外設(shè),增加了系統(tǒng)的靈活性與可擴(kuò)展性。
1 系統(tǒng)結(jié)構(gòu)及工作原理
1.1 系統(tǒng)總體結(jié)構(gòu)
本系統(tǒng)硬件部分由CCD攝像模塊、FPGA板、VGA接口電路及VGA顯示器四部分組成。其中NiosⅡ嵌入式處理器、存儲(chǔ)器接口、數(shù)據(jù)采集處理模塊以及顯示模塊均由FPGA片內(nèi)實(shí)現(xiàn)。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
CCD攝像模塊負(fù)責(zé)采集動(dòng)態(tài)圖像數(shù)據(jù),工作頻率25 MHz,輸出圖像格式為640×512、30 bit彩色圖像,圖像采集速度為13f/s。因?yàn)橄到y(tǒng)存儲(chǔ)芯片容量限制,所以處理前將圖像數(shù)據(jù)轉(zhuǎn)換為8 bit灰度圖像。
FPGA芯片采用EP2C35F672C6,負(fù)責(zé)圖像采集、數(shù)據(jù)處理及存儲(chǔ)、VGA輸出以及系統(tǒng)控制等工作。通過將各個(gè)模塊封裝成NiosⅡ處理器的外設(shè),能夠大大簡(jiǎn)化系統(tǒng)設(shè)計(jì)工作,并且能夠更方便地對(duì)各模塊進(jìn)行控制。
VGA接口部分采用ADV7123三通道高速DA芯片,將FPGA產(chǎn)生的數(shù)字信號(hào)轉(zhuǎn)換成VGA模擬信號(hào)輸出。輸出分辨率為800×600,刷新頻率為60 Hz。屏幕顯示面積比圖像大,多余的部分可以用來顯示系統(tǒng)運(yùn)行狀態(tài)等信息。
1.2 系統(tǒng)工作原理
系統(tǒng)運(yùn)行時(shí),由CCD攝像模塊進(jìn)行圖像采集工作,通過CCD接口模塊將圖像數(shù)據(jù)傳入FPGA,并轉(zhuǎn)換成為8 bit灰度圖像數(shù)據(jù)。數(shù)據(jù)處理模塊對(duì)圖像數(shù)據(jù)進(jìn)行處理,包括邊緣檢測(cè)處理以及圖像反色、低通平滑濾波等前期處理工作,并對(duì)運(yùn)算結(jié)果進(jìn)行二值化處理。圖像處理完畢后將數(shù)據(jù)存儲(chǔ)在SRAM存儲(chǔ)器中,VGA顯示模塊從SRAM存儲(chǔ)器中讀取圖像數(shù)據(jù),并按照VGA時(shí)序?qū)⑿盘?hào)送入DA芯片,產(chǎn)生相應(yīng)模擬信號(hào)供顯示器顯示圖像。
整個(gè)系統(tǒng)由NiosⅡ嵌入式處理器進(jìn)行控制,并接受人機(jī)接口傳來的控制信息。同時(shí)通過在SRAM中寫入數(shù)據(jù),顯示系統(tǒng)運(yùn)行狀態(tài)及相關(guān)參數(shù)等信息。
2 圖像處理算法及實(shí)現(xiàn)
2.1 數(shù)據(jù)處理算法
邊緣檢測(cè)算法選用了Laplace算子進(jìn)行運(yùn)算,算子結(jié)構(gòu)如下:
使用此算子對(duì)圖像數(shù)據(jù)進(jìn)行卷積,即可得到邊緣檢測(cè)圖像。此算子對(duì)各向邊緣響應(yīng)相同,且效果較好,是一種比較經(jīng)典的邊緣檢測(cè)算法。但是此算子對(duì)圖像中的噪聲比較敏感,會(huì)加強(qiáng)圖像中的噪聲,從而影響圖像質(zhì)量。參考文獻(xiàn)[5]使用此算子進(jìn)行靜態(tài)無噪聲圖像的邊緣檢測(cè)算法實(shí)現(xiàn),效果較好,但由于未加入噪聲抑制措施,因而不能處理噪聲較大的實(shí)時(shí)圖像。本系統(tǒng)在邊緣檢測(cè)運(yùn)算之前先進(jìn)行圖像平滑等預(yù)處理,從而有利于減少圖像中噪聲的干擾,能有效改善圖像質(zhì)量。
本系統(tǒng)采用了低通平滑運(yùn)算以及圖像二值化運(yùn)算等對(duì)圖像進(jìn)行預(yù)處理。其中低通平滑運(yùn)算采用以下算子對(duì)圖像數(shù)據(jù)卷積:
此算子中各項(xiàng)數(shù)值有利于在實(shí)現(xiàn)時(shí)使用位移運(yùn)算代替乘法運(yùn)算,從而減少硬件資源的使用并提高運(yùn)算速度。通過設(shè)定合適的閾值,圖像數(shù)據(jù)二值化運(yùn)算的引入有利于增加最終處理結(jié)果的對(duì)比度。
2.2 算法實(shí)現(xiàn)
為了簡(jiǎn)化顯示部分的設(shè)計(jì),系統(tǒng)實(shí)現(xiàn)時(shí)忽略了卷積運(yùn)算的邊緣效應(yīng),使處理后的圖像和原始圖像尺寸相同。數(shù)據(jù)處理部分實(shí)現(xiàn)時(shí)采用了FIR濾波器的結(jié)構(gòu),用移位寄存器實(shí)現(xiàn)數(shù)據(jù)延時(shí),使用乘法器對(duì)各個(gè)數(shù)據(jù)進(jìn)行乘法運(yùn)算,并把運(yùn)算后的數(shù)據(jù)求和輸出。
圖2為數(shù)據(jù)處理模塊結(jié)構(gòu)圖。圖像每行有640像素,因此由640移位寄存器提取數(shù)據(jù)中相鄰行的對(duì)應(yīng)像素?cái)?shù)據(jù);由延時(shí)器提供一個(gè)周期的延遲,即提取每行中相鄰像素?cái)?shù)據(jù);通過640位移寄存器和延時(shí)器即可將圖像數(shù)據(jù)中待卷積部分?jǐn)?shù)據(jù)提取出來,由乘法器將數(shù)據(jù)與對(duì)應(yīng)系數(shù)相乘,并由加法器將結(jié)果相加,即可得到運(yùn)算結(jié)果。
本數(shù)據(jù)處理模塊已在Quartus7.2環(huán)境下編譯通過,并進(jìn)行仿真,達(dá)到要求。當(dāng)圖像數(shù)據(jù)持續(xù)有效時(shí),模塊能夠每個(gè)時(shí)鐘周期計(jì)算一次卷積,并輸出結(jié)果。使用時(shí)鐘頻率為25 MHz時(shí),最大處理帶寬為200 Mb/s,處理640×512大小的圖像速度為76 f/s,因此實(shí)際處理速度僅受CMOS攝像頭的速度限制。通過模塊的時(shí)序仿真,此模塊最高運(yùn)行頻率可達(dá)86 MHz,即處理數(shù)據(jù)帶寬可達(dá)688 Mb/s,處理速度可達(dá)262 f/s。通過增加模塊的并行度,還可進(jìn)一步提高處理速度。
圖3為本數(shù)據(jù)處理模塊在Quartus7.2環(huán)境下進(jìn)行仿真時(shí)的波形。其中iB為輸入數(shù)據(jù);oB為輸出數(shù)據(jù);iClk為模塊時(shí)鐘信號(hào);iCtrl為數(shù)據(jù)有效標(biāo)志信號(hào),當(dāng)此信號(hào)為高時(shí)iB信號(hào)有效,否則表示數(shù)據(jù)無效,并需要暫停數(shù)據(jù)處理工作。
3 實(shí)驗(yàn)結(jié)果
圖4為系統(tǒng)運(yùn)行時(shí)圖像,分別為原始圖像、邊緣檢測(cè)結(jié)果、加入平滑預(yù)處理后的邊緣檢測(cè)結(jié)果以及對(duì)運(yùn)算結(jié)果進(jìn)行二值化處理后的圖像。
從運(yùn)行結(jié)果可以看出,系統(tǒng)能夠?qū)D像進(jìn)行邊緣檢測(cè)運(yùn)算,并且檢測(cè)精度比較高。由于實(shí)時(shí)圖像存在噪聲,可以對(duì)圖像進(jìn)行平滑處理降噪之后再進(jìn)行邊緣檢測(cè),這樣可以得到較好的效果,能夠提高圖像質(zhì)量,但同時(shí)會(huì)使圖像對(duì)比度有所下降。合理地設(shè)定二值化的閾值可以增加圖像對(duì)比度,進(jìn)一步提高圖像質(zhì)量。
完全由硬件電路實(shí)現(xiàn)數(shù)據(jù)處理算法,并且能夠在數(shù)據(jù)處理中實(shí)現(xiàn)高并行度是FPGA的優(yōu)勢(shì)。傳統(tǒng)圖像處理系統(tǒng)由于對(duì)數(shù)據(jù)進(jìn)行串行操作,處理一次卷積需要幾十至幾百個(gè)指令周期,而利用FPGA硬件資源進(jìn)行數(shù)據(jù)運(yùn)算則可以在一個(gè)周期內(nèi)得到運(yùn)算結(jié)果,效率大大提高。通過修改內(nèi)部邏輯,能夠很容易地增加系統(tǒng)并行度,從而大幅度提高系統(tǒng)運(yùn)算速度。
同時(shí)SoPC解決方案中嵌入式處理器的引入使系統(tǒng)更加靈活并有了較大的擴(kuò)展空間,可以完成復(fù)雜的系統(tǒng)控制工作以及人機(jī)接口控制。通過把數(shù)據(jù)處理模塊封裝成為處理器自定義外設(shè),不僅簡(jiǎn)化了控制,而且增加了模塊的可重用性。系統(tǒng)中數(shù)據(jù)處理模塊、嵌入式處理器核以及各個(gè)接口邏輯均由FPGA單片實(shí)現(xiàn),省去了處理器芯片及其外圍邏輯芯片,從而簡(jiǎn)化了系統(tǒng)硬件結(jié)構(gòu),并降低了系統(tǒng)硬件成本。系統(tǒng)性能穩(wěn)定、噪聲小、易于移植、靈活性高、處理速度快、易于實(shí)現(xiàn)實(shí)時(shí)處理。本系統(tǒng)可以作為更高層圖像處理技術(shù)的前期處理部分,也可以在視頻處理技術(shù)中得到應(yīng)用。本系統(tǒng)只占用19%片上邏輯單元,還有大部分邏輯資源沒有使用,這就為系統(tǒng)的進(jìn)一步擴(kuò)展提供了條件。
參考文獻(xiàn)
[1] CHIN A,CHAN G.Real-Time EdGe Detection[EB/OL].http://instruct1.cit.cornell.edu/courses/ece576/FinalProjects/ f2007/hc454_gtc32/hc454_gtc32/index.html.2008-12-20.
[2] 雷麗珍.數(shù)字圖像邊緣檢測(cè)方法的探討[M].測(cè)繪通報(bào), 2006(3).
[3] 張小琳.圖像邊緣檢測(cè)技術(shù)綜述[M].高能量密度物理, 2007(1).
[4] 李振華.基于CMOS的視頻采集及邊緣檢測(cè)系統(tǒng)的研究[D]. 武漢理工大學(xué)碩士論文,2007.
[5] 王紹雷.基于SoPC的圖像邊緣檢測(cè)系統(tǒng)的研究[D].廣西大學(xué)碩士論文,2007.
[6] 徐光輝.基于FPGA的嵌入式開發(fā)與應(yīng)用[M].北京:電子工業(yè)出版社,2006.
[7] 羅杰.Verilog HDL與數(shù)字ASIC設(shè)計(jì)基礎(chǔ)[M].武漢:華中 科技大學(xué)出版社,2008.