《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于SoPC的實(shí)時邊緣檢測系統(tǒng)研究
基于SoPC的實(shí)時邊緣檢測系統(tǒng)研究
谷陸生
華中科技大學(xué) 生命科學(xué)與技術(shù)學(xué)院,湖北 武漢430074
摘要: 一種基于SoPC嵌入式單片解決方案的實(shí)時邊緣檢測系統(tǒng),利用FPGA片上邏輯資源實(shí)現(xiàn)了對640×512大小的動態(tài)8 bit灰度圖像的實(shí)時邊緣檢測運(yùn)算,并利用片內(nèi)NiosⅡ處理器對系統(tǒng)進(jìn)行控制。分析了系統(tǒng)組成、工作原理、性能數(shù)據(jù)處理算法及實(shí)現(xiàn)過程。
Abstract:
Key words :

 摘  要: 一種基于SoPC嵌入式單片解決方案的實(shí)時邊緣檢測系統(tǒng),利用FPGA片上邏輯資源實(shí)現(xiàn)了對640×512大小的動態(tài)8 bit灰度圖像的實(shí)時邊緣檢測運(yùn)算,并利用片內(nèi)NiosⅡ處理器對系統(tǒng)進(jìn)行控制。分析了系統(tǒng)組成、工作原理、性能數(shù)據(jù)處理算法及實(shí)現(xiàn)過程。
 關(guān)鍵詞: 圖像處理;SoPC;邊緣檢測;FPGA;NiosⅡ

  圖像邊緣可以定義為圖像局部特征的不連續(xù)性,表現(xiàn)為圖像灰度級的突變、紋理結(jié)構(gòu)的突變和彩色的變化等。圖像的邊緣信息包含了大部分的圖像特征信息,對圖像分析十分重要[2]。邊緣檢測技術(shù)是圖像處理和計算機(jī)視覺等領(lǐng)域最基本的技術(shù),如何快速、精確地提取圖像邊緣信息一直是國內(nèi)外研究的熱點(diǎn),然而邊緣檢測又是圖像處理中的一個難題[3]。在嵌入式系統(tǒng)中,往往也需要用到邊緣檢測等圖像處理方法。而由于嵌入式系統(tǒng)對成本、功耗、運(yùn)算速度及實(shí)時性的要求較嚴(yán)格,邊緣檢測算法的工程實(shí)現(xiàn)以及實(shí)現(xiàn)效率和成本便有了很重要的實(shí)際意義。
  片上可編程系統(tǒng)SoPC(System on a Programmable Chip)是Altera公司提出的一種高效、靈活的SoC解決方案。它將處理器、存儲器、I/O口等系統(tǒng)設(shè)計需要的功能模塊集成到一個PLD 器件上,構(gòu)建成一個可編程的片上系統(tǒng)。它有非常靈活的設(shè)計方式,而且實(shí)現(xiàn)了軟硬件在系統(tǒng)可編程。
  本文研究了一種采用SoPC單片解決方案的實(shí)時邊緣檢測系統(tǒng),通過利用FPGA片上資源實(shí)現(xiàn)對圖像數(shù)據(jù)的實(shí)時處理,達(dá)到了較高的處理性能,并且簡化了系統(tǒng)結(jié)構(gòu)。同時通過在FPGA片上構(gòu)建NiosⅡ嵌入式處理器對系統(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Ⅱ嵌入式處理器、存儲器接口、數(shù)據(jù)采集處理模塊以及顯示模塊均由FPGA片內(nèi)實(shí)現(xiàn)。系統(tǒng)總體結(jié)構(gòu)如圖1所示。

  CCD攝像模塊負(fù)責(zé)采集動態(tài)圖像數(shù)據(jù),工作頻率25 MHz,輸出圖像格式為640×512、30 bit彩色圖像,圖像采集速度為13f/s。因?yàn)橄到y(tǒng)存儲芯片容量限制,所以處理前將圖像數(shù)據(jù)轉(zhuǎn)換為8 bit灰度圖像。
  FPGA芯片采用EP2C35F672C6,負(fù)責(zé)圖像采集、數(shù)據(jù)處理及存儲、VGA輸出以及系統(tǒng)控制等工作。通過將各個模塊封裝成NiosⅡ處理器的外設(shè),能夠大大簡化系統(tǒng)設(shè)計工作,并且能夠更方便地對各模塊進(jìn)行控制。
  VGA接口部分采用ADV7123三通道高速DA芯片,將FPGA產(chǎn)生的數(shù)字信號轉(zhuǎn)換成VGA模擬信號輸出。輸出分辨率為800×600,刷新頻率為60 Hz。屏幕顯示面積比圖像大,多余的部分可以用來顯示系統(tǒng)運(yùn)行狀態(tài)等信息。
1.2 系統(tǒng)工作原理
  系統(tǒng)運(yùn)行時,由CCD攝像模塊進(jìn)行圖像采集工作,通過CCD接口模塊將圖像數(shù)據(jù)傳入FPGA,并轉(zhuǎn)換成為8 bit灰度圖像數(shù)據(jù)。數(shù)據(jù)處理模塊對圖像數(shù)據(jù)進(jìn)行處理,包括邊緣檢測處理以及圖像反色、低通平滑濾波等前期處理工作,并對運(yùn)算結(jié)果進(jìn)行二值化處理。圖像處理完畢后將數(shù)據(jù)存儲在SRAM存儲器中,VGA顯示模塊從SRAM存儲器中讀取圖像數(shù)據(jù),并按照VGA時序?qū)⑿盘査腿隓A芯片,產(chǎn)生相應(yīng)模擬信號供顯示器顯示圖像。
  整個系統(tǒng)由NiosⅡ嵌入式處理器進(jìn)行控制,并接受人機(jī)接口傳來的控制信息。同時通過在SRAM中寫入數(shù)據(jù),顯示系統(tǒng)運(yùn)行狀態(tài)及相關(guān)參數(shù)等信息。
2 圖像處理算法及實(shí)現(xiàn)
2.1 數(shù)據(jù)處理算法
  邊緣檢測算法選用了Laplace算子進(jìn)行運(yùn)算,算子結(jié)構(gòu)如下:
    

  使用此算子對圖像數(shù)據(jù)進(jìn)行卷積,即可得到邊緣檢測圖像。此算子對各向邊緣響應(yīng)相同,且效果較好,是一種比較經(jīng)典的邊緣檢測算法。但是此算子對圖像中的噪聲比較敏感,會加強(qiáng)圖像中的噪聲,從而影響圖像質(zhì)量。參考文獻(xiàn)[5]使用此算子進(jìn)行靜態(tài)無噪聲圖像的邊緣檢測算法實(shí)現(xiàn),效果較好,但由于未加入噪聲抑制措施,因而不能處理噪聲較大的實(shí)時圖像。本系統(tǒng)在邊緣檢測運(yùn)算之前先進(jìn)行圖像平滑等預(yù)處理,從而有利于減少圖像中噪聲的干擾,能有效改善圖像質(zhì)量。
  本系統(tǒng)采用了低通平滑運(yùn)算以及圖像二值化運(yùn)算等對圖像進(jìn)行預(yù)處理。其中低通平滑運(yùn)算采用以下算子對圖像數(shù)據(jù)卷積:
  

      此算子中各項(xiàng)數(shù)值有利于在實(shí)現(xiàn)時使用位移運(yùn)算代替乘法運(yùn)算,從而減少硬件資源的使用并提高運(yùn)算速度。通過設(shè)定合適的閾值,圖像數(shù)據(jù)二值化運(yùn)算的引入有利于增加最終處理結(jié)果的對比度。
2.2 算法實(shí)現(xiàn)
      為了簡化顯示部分的設(shè)計,系統(tǒng)實(shí)現(xiàn)時忽略了卷積運(yùn)算的邊緣效應(yīng),使處理后的圖像和原始圖像尺寸相同。數(shù)據(jù)處理部分實(shí)現(xiàn)時采用了FIR濾波器的結(jié)構(gòu),用移位寄存器實(shí)現(xiàn)數(shù)據(jù)延時,使用乘法器對各個數(shù)據(jù)進(jìn)行乘法運(yùn)算,并把運(yùn)算后的數(shù)據(jù)求和輸出。
  圖2為數(shù)據(jù)處理模塊結(jié)構(gòu)圖。圖像每行有640像素,因此由640移位寄存器提取數(shù)據(jù)中相鄰行的對應(yīng)像素數(shù)據(jù);由延時器提供一個周期的延遲,即提取每行中相鄰像素數(shù)據(jù);通過640位移寄存器和延時器即可將圖像數(shù)據(jù)中待卷積部分?jǐn)?shù)據(jù)提取出來,由乘法器將數(shù)據(jù)與對應(yīng)系數(shù)相乘,并由加法器將結(jié)果相加,即可得到運(yùn)算結(jié)果。

  本數(shù)據(jù)處理模塊已在Quartus7.2環(huán)境下編譯通過,并進(jìn)行仿真,達(dá)到要求。當(dāng)圖像數(shù)據(jù)持續(xù)有效時,模塊能夠每個時鐘周期計算一次卷積,并輸出結(jié)果。使用時鐘頻率為25 MHz時,最大處理帶寬為200 Mb/s,處理640×512大小的圖像速度為76 f/s,因此實(shí)際處理速度僅受CMOS攝像頭的速度限制。通過模塊的時序仿真,此模塊最高運(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)行仿真時的波形。其中iB為輸入數(shù)據(jù);oB為輸出數(shù)據(jù);iClk為模塊時鐘信號;iCtrl為數(shù)據(jù)有效標(biāo)志信號,當(dāng)此信號為高時iB信號有效,否則表示數(shù)據(jù)無效,并需要暫停數(shù)據(jù)處理工作。

3 實(shí)驗(yàn)結(jié)果
  圖4為系統(tǒng)運(yùn)行時圖像,分別為原始圖像、邊緣檢測結(jié)果、加入平滑預(yù)處理后的邊緣檢測結(jié)果以及對運(yùn)算結(jié)果進(jìn)行二值化處理后的圖像。

  從運(yùn)行結(jié)果可以看出,系統(tǒng)能夠?qū)D像進(jìn)行邊緣檢測運(yùn)算,并且檢測精度比較高。由于實(shí)時圖像存在噪聲,可以對圖像進(jìn)行平滑處理降噪之后再進(jìn)行邊緣檢測,這樣可以得到較好的效果,能夠提高圖像質(zhì)量,但同時會使圖像對比度有所下降。合理地設(shè)定二值化的閾值可以增加圖像對比度,進(jìn)一步提高圖像質(zhì)量。
  完全由硬件電路實(shí)現(xiàn)數(shù)據(jù)處理算法,并且能夠在數(shù)據(jù)處理中實(shí)現(xiàn)高并行度是FPGA的優(yōu)勢。傳統(tǒng)圖像處理系統(tǒng)由于對數(shù)據(jù)進(jìn)行串行操作,處理一次卷積需要幾十至幾百個指令周期,而利用FPGA硬件資源進(jìn)行數(shù)據(jù)運(yùn)算則可以在一個周期內(nèi)得到運(yùn)算結(jié)果,效率大大提高。通過修改內(nèi)部邏輯,能夠很容易地增加系統(tǒng)并行度,從而大幅度提高系統(tǒng)運(yùn)算速度。
  同時SoPC解決方案中嵌入式處理器的引入使系統(tǒng)更加靈活并有了較大的擴(kuò)展空間,可以完成復(fù)雜的系統(tǒng)控制工作以及人機(jī)接口控制。通過把數(shù)據(jù)處理模塊封裝成為處理器自定義外設(shè),不僅簡化了控制,而且增加了模塊的可重用性。系統(tǒng)中數(shù)據(jù)處理模塊、嵌入式處理器核以及各個接口邏輯均由FPGA單片實(shí)現(xiàn),省去了處理器芯片及其外圍邏輯芯片,從而簡化了系統(tǒng)硬件結(jié)構(gòu),并降低了系統(tǒng)硬件成本。系統(tǒng)性能穩(wěn)定、噪聲小、易于移植、靈活性高、處理速度快、易于實(shí)現(xiàn)實(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ù)字圖像邊緣檢測方法的探討[M].測繪通報, 2006(3).
[3] 張小琳.圖像邊緣檢測技術(shù)綜述[M].高能量密度物理, 2007(1).
[4] 李振華.基于CMOS的視頻采集及邊緣檢測系統(tǒng)的研究[D].  武漢理工大學(xué)碩士論文,2007.
[5] 王紹雷.基于SoPC的圖像邊緣檢測系統(tǒng)的研究[D].廣西大學(xué)碩士論文,2007.
[6] 徐光輝.基于FPGA的嵌入式開發(fā)與應(yīng)用[M].北京:電子工業(yè)出版社,2006.
[7] 羅杰.Verilog HDL與數(shù)字ASIC設(shè)計基礎(chǔ)[M].武漢:華中 科技大學(xué)出版社,2008.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。