基于FPGA并行计算的图像处理案例

电子说

1.2w人已加入

描述

图像处理算法在各种场景中都有广泛应用,借助于FPGA并行计算的优势可以将算法性能有效提升,但为了提升系统整体性能,仅仅提升某一部分的性能是不够的,一个好的方法是在FPGA内实现全部视频输入输出接口和图像算法的完整通路。本Overlay的视频输入来自OV5640摄像头,包含多个可任意切换的图像处理算法,并包含了一个HDMI输出接口显示处理结果。

 

 

图像处理算法在各种场景中都有广泛应用,借助于FPGA并行计算的优势可以将算法性能有效提升,但为了提升系统整体性能,仅仅提升某一部分的性能是不够的,一个好的方法是在FPGA内实现全部视频输入输出接口和图像算法的完整通路。本Overlay的视频输入来自OV5640摄像头,包含多个可任意切换的图像处理算法,并包含了一个HDMI输出接口显示处理结果。

设备清单
- PYNQ-Z2套件
- OV5640 Camera Board
(如Waveshare OV5640或者其它兼容版本)
- PMOD-Camera adapter
- HDMI monitor

系统架构

 

FPGA

 

算法列表
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

 

FPGA

 

快速开始
环境需求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文件的内容来修改配置。

 

FPGA

 

接下来,我们对Overlay中实现的图像处理算法进行配置。

 

FPGA

 

配置完成后,还需要选择使能Overlay中的某一个算法来对从OV5640获取的图像进行处理,默认不经过任何图像处理算法,从OV摄像头获取的图像直接在HDMI显示器上显示。

 

FPGA

 

我们也可以抓取OV5640拍摄的图片并在Jupyter Notebook上显示。

 

 

接下来,我们可以使能不同的图像处理算法,通过观察HDMI显示器的输出,观察不同算法的处理结果。

 

FPGA

 

在运行完毕后,记得关闭VDMA,以防止运行其它Overlay时报错。

 

FPGA

 

总结与展望
本案例在PL内实现了一个完整的视频通路,对图像数据直接进行硬件加速处理。相比于USB摄像头减少了图像数据从PS到PL拷贝和回传的负载,提高了系统的性能同时极大降低了图像处理的延时
编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分