基于PYNQ的双目视觉系统

2017 DDC中国区选拔赛作品  |  嵌入式视觉

yingnan   项目发起人 06-19
4 2

通过PYNQ的IO完成两个OV5640摄像头的配置、画面采集。利用PL部分进行视差图的计算。计算生成的视差图通过PS部分进行数据的搬运。视差图可输出至PYNQ的HDMI OUT端显示,同时可通过PS部分运行的lwip输出至同一局域网下的其他设备。

项目采用平台:

PYNQ-Z1:支持Python编程的Zynq开发板

数量 1

项目详情

项目创意灵感

SLAM在AR/无人机/移动机器人等应用中有着重要的地位。而双目视觉系统是SLAM的眼睛,是其中最重要的传感器系统之一。传统双目视觉采用CPU计算,功耗高、帧速低、实时性差,很难应用于上述应用。FPGA实现双目算法,可以降低系统功耗、提高性能和实时性,使得移动终端的实时精确定位成为可能。

设计特色创新

1. 利用FPGA的PL部分完成实时性要求高的摄像头采集和视差图计算
2. 利用PS部分初始化设置PL,以及完成协议复杂的TCP/IP发送
3. 视差图计算部分的程序采用了Xilinx公司的HLS视频库,增加了开发效率

系统原理功能

网络服务器部分:采用Python编写,等待PYNQ传输的视频数据并在电脑上显示

PYNQ PL部分:
OV_CAM IP核: 利用Verilog编写,实现了OV5640/OV7670的I2C配置,以及利用DVP接口对OV摄像头输出视频的采集

Preprocess IP核:利用HLS编写,读取摄像头相关的查找表,完成摄像头的标定。

Stereo IP核:利用HLS编写,读取两个摄像头的输入数据,输出视差图,基本原理与OpenCV的StereoBM相同

VDMA IP核:进行视频帧的缓存、相机标定的查找表的搬运、HDMI输出的缓存等操作

VTC IP核:生成HDMI输出所需要的时序

Video In to AXI4-Stream Out/ AXI4-Stream In to Video Out IP核:完成video信号和AXI4-Stream信号的互相转换

Digilent RGB2DVI IP核:完成实际的HDMI输出

PYNQ PS部分:
1. 对PL部分进行初始化设置
2. 进入lwip循环,将原始图像和计算结果通过TCP协议发送到服务器端

完成情况概述

本系统实现了320*240彩色视频在60FPS下的视差图实时计算与传输。传输显示时总大小为640*480。可以60帧实时在显示屏上输出或在大约80Mb/s的速度下进行网络传输(网络传输速率受限于路由器网口速率)。

制作周期分工

三月开始制作,五月基本功能完成
无分工一人完成

展望项目未来

1. 提高视差图的分辨率、视差范围
2. 利用前处理、后处理提高视差图计算的准确性
3. 移植Linux,利用得到的视差图生成点云或者实现ORB-SLAM算法

收获感悟分享

学习了FPGA下Verilog开发IP核、HLS开发IP核、基于Xilinx Vivado下IP integrator的系统开发方式。理解了FPGA实现图像应用的基本原理。


我要评价

  • 视差图在HLS怎么算的呀,求教,HLS写出来的程序各种bug。。。。。。。

    时间:07-14 0
  • 好6啊,好想学

    时间:07-14 0