如何在FPGA上使用resizer IP来调整图像的大小

此项目解释了如何在fpga上使用resizer ip来调整图像的大小。其中对比了两种图像大小调整的解决方案的运算速度,其中之一为使用python image library通过软件算法实现图像大小调整,另一种使用xilinx xfopencv library实现了在fpga上硬件加速的图像大小调整。
初始化
1. 首先在sd卡内配置pynq-z2最新镜像pynq image v2.5并烧录在其中
2. 根据pynq.io上的官方指南配置环境 (https://pynq.readthedocs.io/en/latest/getting_started/pynq_z2_setup.html)
根据数字编号依次连接并点亮板卡,最后在板卡出现btn0~btn3同时点亮闪烁一次后为开机完成状态。 3. 在笔记本电脑上配置网络,使得无线网卡的上网功能与pynq-z2连接的以太网网口共享,以做到pynq-z2同时能够上网。 4. 借用xshell或者开源软件putty对于pynq-z2端口进行ssh获得其新ip口,此时其一般会被重定向至192.168.137.x。此时在浏览器内登录此ip即可通过jupyter notebook与pynq-z2板卡通信。
5. 在jupyter notebook中新建terminal并ping 182.61.200.6验证与百度的连接是否正常上述验证完成后即为pynq-z2板卡与网络的基础通信功能与配置完成。
快速开始
在jupyter notebook的terminal中输入以下指令: sudo pip3 install --upgrade git+ 
https://github.com/xilinx/pynq-helloworld.git  更新在pynq-z2内所有packages并从github下载本次项目的代码。 (更新需要耐心等待一定时间。) 
案例测试
1. 最终会在files文件夹下生成名为helloworld/的文件夹,点开此文件夹可以看到两个jupyter notebook文件(.ipynb)。
2. 其中resizer_ps.ipynb的软件方案采用了python内建的python imaging library通过软件上的算法实现完成对于一张640*360的sample图像压缩为原图像的四分之一大小(320*180)。此软件方案通过pil库加载与重置图像的大小,用numpy库存储图像的像素矩阵,用ipython.display在jupyter notebook中显示图像。
3. 而resizer_pl.ipynb的fpga硬件方案并没有直接在arm核中单纯采用算法借用python本地的内存进行运算后直接返回。而是先将图片数据通过arm核从sd卡中读入,再以数据流的形式通过python的本地内存的dram形式传入共享的物理内存中。
接下来通过axi的内部连接将ps层面的数据传入pl层的可编辑逻辑单元,通过 xilinx xfopencv library在dma与resize ip之间的运算最后将数据传回arm核至sd卡。
最后,在缩小图片的演示最后我们可以看到ps方案得到的最快单次图像处理为24.1ms,而在pl方案中最快单次图像处理仅仅为8.95ms,在此实际图像案例上处理图像的时间效率上缩小了接近2.7倍。如果放至更多张更高像素的图片,相信此图像处理方案会有着较大优势。


小米手环即将被颠覆?GOGO HR智能手环低调逆袭
微雪电子树莓派游戏机配件包|GamePi20配件包 4.3寸屏介绍
三星Note7虹膜识别很好 就是有一点不好
奥迪城市智能辅助系统功能解析
微型空气质量监测仪【恒美仪器HM-AQI】解决方案
如何在FPGA上使用resizer IP来调整图像的大小
高压柜中电压互感器烧毁的原因分析
AI是如何做到审判公平性的?法官仍然是那个最终做决定的人
中国移动全面升级飞信 拟借5G通道与微信拉回差距
延续摩尔定律的途径除了制程微缩还有先进封装
电机控制的经典电路分析
输入侧与输出侧电解电容的计算方法
电源设计中测量SIC的绝对最大额定值
打印机共性故障解决方法
基于64位多核处理器的共享缓存结构电路设计
SOI先进工艺发展如此迅速的原因在哪?
电机控制器有几种
[图文]具有时间识别功能的门锁报警器
航班信息显示系统(FIDS)采用德承无风扇嵌入式计算机
第四范式免费智能客服要做什么?