作者:Nick
該系列前兩篇主要扯了扯Linux中GUI相關(guān)的DRI框架及相關(guān)組件實(shí)現(xiàn)方式。細(xì)想一下,對于GUI相關(guān)的加速能做的其實(shí)不多,開發(fā)一個(gè)2D或3D的顯卡加速子模塊對于一個(gè)DEMO教程的量級來說工作量太大,我們在這只實(shí)現(xiàn)一下簡單的功能:
通過Zynq的PL部分實(shí)現(xiàn)對Qt視頻播放器中待輸出的Framebuffer的二值處理;
1、 簡單的處理介紹
上述處理十分簡單,對于一幅分辨率為M*N的灰度圖像來說,二值化的處理如下:

,其中

表示圖像上任意一點(diǎn)灰度值,

為二值化閾值,對于RGB圖像來說(以RGB888為例),RGB轉(zhuǎn)化為灰度圖的表達(dá)式如下:

,對于此例不怎么嚴(yán)格的要求,采用16位的定點(diǎn)化精度足以,對應(yīng)著表達(dá)式如下:

2、 FPGA加速方案
圖像(預(yù))處理的本質(zhì)其實(shí)是二維數(shù)據(jù)的處理,常見的圖像預(yù)處理分為以下幾類:
1、 線性濾波,如噪聲平滑,邊緣增強(qiáng);
2、 非線性濾波,如零交點(diǎn)檢測等;
3、 形態(tài)學(xué)濾波,如膨脹腐蝕等;
4、 其它相對較復(fù)雜的圖像處理;
上述幾種圖像處理在信號處理實(shí)現(xiàn)上來說都是局部濾波器的實(shí)現(xiàn),以線性濾波為例,濾波器函數(shù)可表示為滑窗內(nèi)像素的權(quán)值與像素值的乘加之和,此處權(quán)重指的是滑窗內(nèi)各個(gè)算子的大小,表達(dá)如下:

其中其中
其中

為滑窗對應(yīng)的算子,i,j的取值范圍有滑窗大小決定。FPGA特別適合這類流水式的運(yùn)算。,內(nèi)部的DSP硬核或者由slice搭建生成的乘加器,是線性濾波的核心運(yùn)算單元。以一個(gè)3X3的窗口為例,對應(yīng)的濾波操作如下圖所示:

對于上述的幾點(diǎn)解釋如下:
1、 粉色框?qū)?yīng)著圖像的緩存部分,對于線性濾波計(jì)算,滑窗的尺寸(算子的size)越大,所需要緩存的容量越大,緩存一般使用片內(nèi)的block ram或distribute ram。當(dāng)然,我們也可以使用片外存儲,如DDR,但片數(shù)據(jù)片內(nèi)外的搬運(yùn)會造成較大的延時(shí),因此,在設(shè)計(jì)之初我們就得在延時(shí)及滑窗size之間做好tradeoff。
2、 藍(lán)色部分為最終輸出的圖像濾波結(jié)果。由于緩存的存在,整體的圖像刷新輸出會比輸入延遲a*(W-1)+a-1個(gè)像素clk,其中a為滑窗的size,W為前篇中介紹的drm_framebuffer結(jié)構(gòu)體中width值。
二值化的處理其實(shí)可以看做簡化的滑窗濾波操作,此時(shí)的a=1,算子值為1,滑窗結(jié)果通過一個(gè)比較器輸出二值化結(jié)果。影響二值化的參數(shù)為閾值大小,此處我們將這些需要配置的參數(shù)通過AXI_lite總線暴露給PS(ARM)端,讓軟件(運(yùn)行在PS端的Qt上位機(jī))動態(tài)配置。整個(gè)系統(tǒng)的結(jié)構(gòu)如下:

3、 FPGA加速效果及性能分析
FPGA的處理速度取決于:
- 芯片速度等級(支持的最高頻率);
- 加速模塊的設(shè)計(jì)方案(并行化設(shè)計(jì)、利用資源換時(shí)間);
在本例中,處理速度取決于pixel的驅(qū)動時(shí)鐘(本處50MHz),即大致60(FPS)*1080*720。
皮一下很開心,用海賊王的一小段打斗場面做了測試,效果請點(diǎn)擊視頻觀看: https://v.vzuu.com/video/1095730086900211712?autoplay=false&useMSE=
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1664文章
22504瀏覽量
639290 -
濾波器
+關(guān)注
關(guān)注
162文章
8470瀏覽量
186286 -
Linux
+關(guān)注
關(guān)注
88文章
11817瀏覽量
219555 -
GUI
+關(guān)注
關(guān)注
3文章
699瀏覽量
43885
發(fā)布評論請先 登錄
250kW全SiC模塊三相四線制工商業(yè)儲能變流器設(shè)計(jì)方案
250kW固態(tài)變壓器(SST)子單元設(shè)計(jì)方案-ED3封裝SiC模塊
淺談低功耗晶振的設(shè)計(jì)方案
加速度計(jì)伺服電路模塊原理與應(yīng)用
硬件加速模塊的時(shí)鐘設(shè)計(jì)
基于兆易創(chuàng)新GD32系列MCU的GUI智能屏顯解決方案
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)17:PCIe加速模塊設(shè)計(jì)
GUI Guider全新優(yōu)化方案GUI xTurbo-VeloRender初體驗(yàn):基于i.MX RT平臺的LVGL渲染能力突破
通過什么方法能獲得關(guān)于Ethercat方面的設(shè)計(jì)方案和設(shè)計(jì)資料
SiC(碳化硅)模塊設(shè)計(jì)方案在工商業(yè)儲能變流器(PCS)行業(yè)迅速普及
Linux_GUI加速模塊設(shè)計(jì)方案
評論