圖像處理算法在各種場景中都有廣泛應用,借助于FPGA并行計算的優勢可以將算法性能有效提升,但為了提升系統整體性能,僅僅提升某一部分的性能是不夠的,一個好的方法是在FPGA內實現全部視頻輸入輸出接口和圖像算法的完整通路。本Overlay的視頻輸入來自OV5640攝像頭,包含多個可任意切換的圖像處理算法,并包含了一個HDMI輸出接口顯示處理結果。
圖像處理算法在各種場景中都有廣泛應用,借助于FPGA并行計算的優勢可以將算法性能有效提升,但為了提升系統整體性能,僅僅提升某一部分的性能是不夠的,一個好的方法是在FPGA內實現全部視頻輸入輸出接口和圖像算法的完整通路。本Overlay的視頻輸入來自OV5640攝像頭,包含多個可任意切換的圖像處理算法,并包含了一個HDMI輸出接口顯示處理結果。
設備清單
- PYNQ-Z2套件
- OV5640 Camera Board
(如Waveshare OV5640或者其它兼容版本)
- PMOD-Camera adapter
- HDMI monitor
系統架構
算法列表
Overlay中實現了多個圖像處理算法,在HLS中實現并封裝為IP后在Block Design中被調用,讀者如有興趣可以在Github的/boards/src/ip/目錄獲取源代碼。
1) rgb2hsv
2) subsample
3) equalizehist
4) gaussianBlur
5) sobel
6) canny
7) dilation
8) erosion
快速開始
環境需求PYNQ v2.4,在PYNQ-Z2板卡聯網并啟動后在終端中運行如下代碼安裝Overlay到本地:
# (on PYNQ v2.4 only)
sudo pip3 install --upgrade git+https://github.com/xupsh/Pynq-CV-OV5640.git
案例演示
Notebook名稱:pynq4cv.ipynb
在Overlay中例化了一個I2C接口來對OV5640進行配置,我們可以在Jupyter Notebook上通過Python對攝像頭進行初始化,也可以通過改動ov5640_config.py文件的內容來修改配置。
接下來,我們對Overlay中實現的圖像處理算法進行配置。
配置完成后,還需要選擇使能Overlay中的某一個算法來對從OV5640獲取的圖像進行處理,默認不經過任何圖像處理算法,從OV攝像頭獲取的圖像直接在HDMI顯示器上顯示。
我們也可以抓取OV5640拍攝的圖片并在Jupyter Notebook上顯示。
接下來,我們可以使能不同的圖像處理算法,通過觀察HDMI顯示器的輸出,觀察不同算法的處理結果。
在運行完畢后,記得關閉VDMA,以防止運行其它Overlay時報錯。
總結與展望
本案例在PL內實現了一個完整的視頻通路,對圖像數據直接進行硬件加速處理。相比于USB攝像頭減少了圖像數據從PS到PL拷貝和回傳的負載,提高了系統的性能同時極大降低了圖像處理的延時
編輯:hfy
-
FPGA
+關注
關注
1626文章
21666瀏覽量
601837 -
圖像處理
+關注
關注
27文章
1282瀏覽量
56638
發布評論請先 登錄
相關推薦
評論