邊緣檢測是圖像處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數(shù)字圖像中亮度變化明顯的點。邊緣檢測是圖像處理和計算機視覺中,尤其是特征提取中的一個研究領(lǐng)域。
本文采用局部熵邊緣檢測算法,將圖像采集,邊緣檢測和圖像顯示三個部分封裝設(shè)計為IP(Intellectual Property)核,通過AMBA APB總線嵌入到LEON3的經(jīng)典SoC架構(gòu)中。實現(xiàn)了多路數(shù)據(jù)并行處理和DSP模塊加速處理,配合CPU軟核的協(xié)調(diào)參數(shù)配置功能,可以充分發(fā)揮硬件設(shè)計的高速性和靈活性。此外,由于動態(tài)圖像邊緣檢測是圖像處理應(yīng)用中必不可少的一部分,因此文中設(shè)計的動態(tài)圖像邊緣檢測SoC可以方便的移植到其他圖像處理應(yīng)用中,具有廣泛的應(yīng)用前景。
1 SoC和LEON3開源軟核處理器
SoC是系統(tǒng)級芯片的簡稱,系統(tǒng)不僅包含了處理器內(nèi)核、存儲器等硬件系統(tǒng),同時還含有相應(yīng)的嵌入式軟件,是一個真正的軟、硬件均具備的完整體系。利用SoC設(shè)計方法,可以將一個復(fù)雜的系統(tǒng)集成到單一芯片中,并具有低功耗,低成本及高速性的特點。與利用ASIC實現(xiàn)的SoC相比,利用FPGA實現(xiàn)的SoC具有可配置性的特點,因此具有更好的可擴展性和可移植性。
LEON3開源軟核處理器是Gaisler Research公司提出的一款32位、符合SPARC V8結(jié)構(gòu)的開源軟核處理器。它具有高性能,低復(fù)雜性和低功耗的優(yōu)點。另外,所有屬于GRLIB的IP核及LEON3處理器的源代碼在GNU GPL(GNU General Public License,GNU通用公共許可證)授權(quán)協(xié)議下,可以免費地應(yīng)用于研究和教學(xué)目的,因此,LEON3開源軟核處理器特別適合于SoC的開發(fā)設(shè)計。
2 SoC系統(tǒng)架構(gòu)設(shè)計
通過分析系統(tǒng)的功能與要求,結(jié)合LEON3自身架構(gòu)的特點,設(shè)計基于APB總線的動態(tài)圖像邊緣檢測Soc系統(tǒng)架構(gòu)如圖1所示。自定義IP核為本設(shè)計的重點。在LEON3的SoC架構(gòu)中,APB外圍低速總線為一些低速模塊提供了接口。若想要在APB總線實現(xiàn)動態(tài)圖像的實時采集、處理和顯示,就要想辦法使采集到的數(shù)據(jù)不參與到總線傳輸中去。
圖1基于APB總線的SoC架構(gòu)實現(xiàn)框圖
在本設(shè)計中,通過采用片上存儲資源做FIFO的辦法,使得攝像頭采集到的數(shù)據(jù)得以緩存,最終在顯示器上顯示。在數(shù)據(jù)輸出顯示之前,可以選擇是否經(jīng)過圖像邊緣檢測算法模塊處理。若經(jīng)過模塊,則顯示圖像經(jīng)過邊緣檢測后的結(jié)果;若不經(jīng)過,則顯示原始圖像。
通過這種方法,避免大量圖像數(shù)據(jù)參與AHB與APB總線之間的數(shù)據(jù)傳輸,以減少不必要的中間過程,提高數(shù)據(jù)的實時性。這樣就避免了APB總線低速、低帶寬與動態(tài)圖像邊緣檢測系統(tǒng)高速、高帶寬的矛盾。使得整個圖像的數(shù)據(jù)流都在白定義IP核內(nèi)部得到處理,這樣既滿足了APB總線的約束也實現(xiàn)了系統(tǒng)的功能需求。
3動態(tài)圖像邊緣檢測SoC的實現(xiàn)
本設(shè)計提出了一種集圖像采集、存儲、處理和顯示于一個IP核的設(shè)計方法,也是動態(tài)圖像邊緣檢測SoC設(shè)計的核心部分。
3.1局部熵算法的硬件實現(xiàn)
局部熵邊緣檢測算法的基本思想是:選擇待處理像素點的8鄰域,即以待處理像素點為中心的3×3窗口;再由局部熵的定義式(公式1)計算出圖像3×3窗口的局部熵;
然后通過與給定的閾值進行比較,得到二值化圖像,即可得出圖像的邊緣。硬件實現(xiàn)的處理過程為流水線方式,處理的對象為3×3大小的圖像窗口。具體步驟如下:
①3×3窗口的產(chǎn)生。3×3窗口主要通過片上緩存和延時單元實現(xiàn)。圖2是以經(jīng)過3個時鐘為例說明了同步產(chǎn)生3×3窗口中一行數(shù)據(jù)的過程。
圖2同步數(shù)據(jù)的產(chǎn)生
②熵值的計算。將步驟1中得到的3×3窗口的9個并行數(shù)據(jù)途經(jīng)兩路進行處理。對于3×3窗口,式(1)化簡為式(2):
3×3窗口的9路并行數(shù)據(jù),一邊送去做并行相加求和,再求平方,作為除法運算的分母;同時把9個數(shù)據(jù)分別求平方,再求合,作為除法運算的分子。在做除法運算前,為確保其計算精度,要先將分子與分母轉(zhuǎn)換成IEEE-745浮點數(shù)后再進行浮點除法運算。最后還要把除法運算的結(jié)算轉(zhuǎn)換成整數(shù),考慮到除法運算的結(jié)果可能小于1,于是在轉(zhuǎn)換整數(shù)前放大1000倍,即保留3位有小數(shù)有效位,最后將轉(zhuǎn)換后的整數(shù)輸出,至此實現(xiàn)了局部熵值的計算過程。局部熵值計算的硬件處理流程如圖3所示:
圖3局部熵值計算流程示意圖
③閾值比較及二值化處理。②中已經(jīng)得到了放大1000倍后的熵值,在這里只需通過一個比較電路,當熵值大于閾值時,輸出0;當熵值小于閾值時,輸出1.這樣就得到一幅二值化后的邊緣圖像。至此,完成了整個局部熵邊緣檢測算法的硬件實現(xiàn)。
3.2自定義IP接口設(shè)計
自定義IP核包含以下幾個主要部分:圖像采集(D5M攝像頭接口);圖像制式轉(zhuǎn)換;圖像存儲;圖像顯示(LTM顯示接口);圖像邊緣檢測模塊;自定義寄存器。
圖4給出了基于APB外圍低速總線所設(shè)計的圖像邊緣檢測IP核的外部接口信號圖。由圖中可知,此IP核的接口信號可分為:
圖4用戶定義圖像邊緣檢測IP核接口
①系統(tǒng)時鐘與復(fù)位信號:是整個LEON3架構(gòu)所共用的時鐘信號和復(fù)位信號,而iCLK_50是由外部直接引入的頻率為50MHz的時鐘,未經(jīng)過PLL處理。
②IP核控制信號:主要實現(xiàn)IP核的觸發(fā)功能和結(jié)束功能。
③APB總線的輸入信號和輸出信號:此信號主要用于APB總線控制、IP核選擇、IP核使能等,其中包括對IP核內(nèi)部寄存器的設(shè)置都是通過APB總線信號來完成的。
④D5M攝像頭輸入信號和輸出信號:此信號主要完成對D5M攝像頭的配置以及數(shù)據(jù)采集。
⑤LTM顯示器輸入信號和輸出信號:此信號用于對LTM顯示器的配置。由于基于APB總線的IP核集成D5M攝像頭、LTM顯示器和邊緣檢測算法于一體,所以外部接口信號相對較多。但就APB總線本身而言,其信號并不多,這也是基于APB總線的設(shè)計方法相對簡單的原因。
3.3自定義IP核的結(jié)構(gòu)設(shè)計
有關(guān)“基于APB外圍低速總線圖像檢測IP核的實現(xiàn)基本思想部分”略——編者注。
基于APB總線的IP核框架結(jié)構(gòu)如圖5所示。
圖5用戶定義圖像邊緣檢測lP核結(jié)構(gòu)
4實驗結(jié)果
4.1動態(tài)圖像邊緣檢測算法硬件實現(xiàn)仿真與分析
文中首先利用Matlab驗證局域熵邊緣檢測算法設(shè)計的正確性,然后采用Verilog HDL硬件描述語言編寫圖像邊緣檢測算法,在算法實現(xiàn)過程中,為提高算法的性能,采用了Quartus II中自帶的DSP加速宏模塊。同時,為驗證仿真算法的正確性,編寫Testbench系統(tǒng)測試文件,對其進行仿真驗證,圖6為局域熵邊緣檢測算法的硬件仿真時序圖。
圖6局域熵邊緣檢測算法硬件實現(xiàn)仿真時序圖
從圖6中,可以看到3×3窗口產(chǎn)生的過程,L1~L3為采用片上緩存的方法實現(xiàn)的三行數(shù)據(jù)的同步。X1~X9對應(yīng)3×3窗口中的9個像素點。圖中最終的數(shù)據(jù)輸出是有一定時延的,這是由于算法中存在大量的乘加運算和浮點數(shù)運算造成的。
在實現(xiàn)算法的同時,考慮到所選芯片提供了可用于加速算術(shù)運算的DSP模塊,于是為了加速算法的處理速度,在算法實現(xiàn)過程中,加入了大量的DSP加速處理模塊,如乘加器,浮點除法器等。表1給出了用硬件語言實現(xiàn)上述算法所使用的芯片資源情況。表2給出了該算法對DSP加速模塊的使用情況。
4.2動態(tài)圖像邊緣檢測SoC系統(tǒng)性能測試
測試采用的硬件開發(fā)平臺為FPGA CycloneIIEP2C70F896C6N,Quartus II版本為10.0(32位),LEON3開發(fā)包版本為grlib-gp1-1.0.22-b4095.zip.D5M攝像頭工作在25MHz頻率,所采集的圖像分辨率為400×240,R、G、B每種色彩以10-bit二進制數(shù)據(jù)表示,D5M攝像頭每秒采集22~25幀圖像。LTM顯示屏的顯示分辨率為400×240,工作在33MHz頻率。
表3為測試得到的片上資源使用情況。從其結(jié)果可以分析得到,文中設(shè)計的動態(tài)圖像邊緣檢測SoC占據(jù)的片上資源在可以接受的范圍內(nèi)。
且由實際測試可知,在外界環(huán)境適中的條件下,系統(tǒng)可以得到很好的圖像邊緣檢測效果。但由于圖像的分辨率較大,而邊緣檢測算法中所采用的窗口為3×3,相對于圖像來說較小,所以圖像上的一些小的陰影區(qū)域也會被檢測出來,形成陰影區(qū)域干擾,影響圖像的邊緣檢測效果。但總體來說,實現(xiàn)了動態(tài)圖像邊緣提取的最終目的。
結(jié)語
本文介紹了基于LEON3開源軟核處理器的動態(tài)圖像邊緣檢測SoC設(shè)計。
實驗結(jié)果表明該SoC系統(tǒng)工作正常,可以實現(xiàn)每秒22~25幀,最佳分辨率為400×240和640×480的動態(tài)圖像邊緣檢測功能,平均數(shù)據(jù)延時在70~80個系統(tǒng)時鐘。系統(tǒng)具有很好的可移植性與可配置性,占用資源少,速度快,具有廣泛的應(yīng)用前景。
評論
查看更多