作者:Nick
該系列前兩篇主要扯了扯Linux中GUI相關(guān)的DRI框架及相關(guān)組件實現(xiàn)方式。細想一下,對于GUI相關(guān)的加速能做的其實不多,開發(fā)一個2D或3D的顯卡加速子模塊對于一個DEMO教程的量級來說工作量太大,我們在這只實現(xiàn)一下簡單的功能:
通過Zynq的PL部分實現(xiàn)對Qt視頻播放器中待輸出的Framebuffer的二值處理;
1、 簡單的處理介紹
上述處理十分簡單,對于一幅分辨率為M*N的灰度圖像來說,二值化的處理如下:
,其中
表示圖像上任意一點灰度值,
為二值化閾值,對于RGB圖像來說(以RGB888為例),RGB轉(zhuǎn)化為灰度圖的表達式如下:
,對于此例不怎么嚴格的要求,采用16位的定點化精度足以,對應(yīng)著表達式如下:
2、 FPGA加速方案
圖像(預(yù))處理的本質(zhì)其實是二維數(shù)據(jù)的處理,常見的圖像預(yù)處理分為以下幾類:
1、 線性濾波,如噪聲平滑,邊緣增強;
2、 非線性濾波,如零交點檢測等;
3、 形態(tài)學(xué)濾波,如膨脹腐蝕等;
4、 其它相對較復(fù)雜的圖像處理;
上述幾種圖像處理在信號處理實現(xiàn)上來說都是局部濾波器的實現(xiàn),以線性濾波為例,濾波器函數(shù)可表示為滑窗內(nèi)像素的權(quán)值與像素值的乘加之和,此處權(quán)重指的是滑窗內(nèi)各個算子的大小,表達如下:
其中其中
其中
為滑窗對應(yīng)的算子,i,j的取值范圍有滑窗大小決定。FPGA特別適合這類流水式的運算。,內(nèi)部的DSP硬核或者由slice搭建生成的乘加器,是線性濾波的核心運算單元。以一個3X3的窗口為例,對應(yīng)的濾波操作如下圖所示:
對于上述的幾點解釋如下:
1、 粉色框?qū)?yīng)著圖像的緩存部分,對于線性濾波計算,滑窗的尺寸(算子的size)越大,所需要緩存的容量越大,緩存一般使用片內(nèi)的block ram或distribute ram。當(dāng)然,我們也可以使用片外存儲,如DDR,但片數(shù)據(jù)片內(nèi)外的搬運會造成較大的延時,因此,在設(shè)計之初我們就得在延時及滑窗size之間做好tradeoff。
2、 藍色部分為最終輸出的圖像濾波結(jié)果。由于緩存的存在,整體的圖像刷新輸出會比輸入延遲a*(W-1)+a-1個像素clk,其中a為滑窗的size,W為前篇中介紹的drm_framebuffer結(jié)構(gòu)體中width值。
二值化的處理其實可以看做簡化的滑窗濾波操作,此時的a=1,算子值為1,滑窗結(jié)果通過一個比較器輸出二值化結(jié)果。影響二值化的參數(shù)為閾值大小,此處我們將這些需要配置的參數(shù)通過AXI_lite總線暴露給PS(ARM)端,讓軟件(運行在PS端的Qt上位機)動態(tài)配置。整個系統(tǒng)的結(jié)構(gòu)如下:
3、 FPGA加速效果及性能分析
FPGA的處理速度取決于:
- 芯片速度等級(支持的最高頻率);
- 加速模塊的設(shè)計方案(并行化設(shè)計、利用資源換時間);
在本例中,處理速度取決于pixel的驅(qū)動時鐘(本處50MHz),即大致60(FPS)*1080*720。
皮一下很開心,用海賊王的一小段打斗場面做了測試,效果請點擊視頻觀看: https://v.vzuu.com/video/1095730086900211712?autoplay=false&useMSE=
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1632文章
21814瀏覽量
606971 -
濾波器
+關(guān)注
關(guān)注
161文章
7897瀏覽量
179214 -
Linux
+關(guān)注
關(guān)注
87文章
11357瀏覽量
210808 -
GUI
+關(guān)注
關(guān)注
3文章
663瀏覽量
39972
發(fā)布評論請先 登錄
相關(guān)推薦
在linux下開發(fā)過程中, DLP4500 GUI無法連接光機怎么解決?
dlp4500無法通過gui控制怎么解決?
電磁環(huán)境模擬系統(tǒng)設(shè)計方案

AFE4400測血氧方案GUI安裝出錯的原因?怎么解決?
Scalable PMICs GUI用戶指南

LM4890采用差分設(shè)計方案,為什么沒有聲音?怎么解決?
七大嵌入式GUI盤點
智能家居系統(tǒng)設(shè)計方案
電磁頻譜管理系統(tǒng)設(shè)計方案
UPS系統(tǒng)設(shè)計方案解讀

求助,關(guān)于STM32F103ZE+UC/GUI+7寸LCD硬件選擇問題求解
分享幾個嵌入式中常用的GUI

評論