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

直播預約 | STM32H7R7基于RT-Thread RTOS的智能終端GUI解決方案

淺論光儲充設施電氣設計方案研究

【正點原子】全志T113-i開發板資料震撼來襲!異核開發、工控設計方案!
在linux下開發過程中, DLP4500 GUI無法連接光機怎么解決?
電磁環境模擬系統設計方案

評論