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