电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>FPGA相机边缘检测开源分享

FPGA相机边缘检测开源分享

2023-07-10 | zip | 0.03 MB | 次下载 | 免费

资料介绍

描述

该项目将展示如何实施完整的端到端图像处理管道,以实施能够以 30fps 的速度运行的边缘检测视觉算法,以检测道路车道。

 
 
poYBAGOlJs2AGtfUAAlW6-j4RJ8752.jpg
 
1 / 3
 

一、简介

要实现实时车道检测,我们的想法是拍摄图像并将其传递给边缘检测器 IP。最著名的一种是 Sobel 边缘检测器。然而,Canny 边缘检测器具有可编程阈值的优势。即时修改阈值可以适应不同的光照条件。

https://en.wikipedia.org/wiki/Canny_edge_detector

视觉处理流水线在逻辑上可以分为三个部分。图像源、图像处理管道和图像接收器

 

 
pYYBAGOlJtCAbjB9AAD4wV-AWo4500.png
 

 

从高层次的角度来看,需要一个图像源(可以是相机传感器或图像模式生成器)和一个接收器(可以是显示器)。

2.硬件块

首先,必须将所有原型硬件部件放在一起。在这种情况下,系统硬件仅由五个组件组成。

a) MiniZed ZYNQ 开发板

b) OV7670 相机

c) Arduino 屏蔽穿孔板

d) 10pin 0.1inch 母头

e) VGA PMOD

OV7670 相机安装在一个 10 针 0.1 英寸母接头上,该接头本身焊接到原型板上。VGA PMOD 连接到 MiniZed 双 PMOD 接头连接器最后一步是将 VGA 电缆连接到显示器。

 
poYBAGOlJwOADJ6lAA_Wa_4cbas252.jpg
 

一旦硬件系统组装在一起,下一步就是使用 Vivado 在 FPGA (PL) 上设计硬件。

3.FPGA硬件

1. 图片来源

有许多相机接口,但最简单的是使用并行总线的 CMOS 传感器,例如古老的 OV7670 相机传感器。然而,要使用这样的传感器,必须实现一个相机捕获模块,该模块将从传感器传输的字节流转换为适当的协议,在我们的例子中是 AXIS 总线。

此外,必须通过在 PL 中将配置模块实现为从 BRAM 读取配置的 I2C 模块或在 PS 中将配置模块实现为通用相机驱动程序来配置相机。PS 配置显然更灵活,所以我选择了这个选项。

 

 
pYYBAGOlJwWAV6N1AABtVQ3HR8I090.png
 

 

Vivado 设计中的图像源是与 OV7690 CMOS 相机接口的定制 IP。相机使用并行八位接口此外,还有两个同步信号HSYNC和VSYNC,其选通模式分别表示行和帧。相机使用输出像素时钟 PCLK。像素速率与 PCLK 同步。OV7690 相机还需要一个 24 MHz (XCLK) 相机时钟作为输入。

OV7690 每个像素输出 2 个字节。根据配置代码,相机可以配置为使用不同的色彩空间。IP 配置为使用 RGB565 色彩空间。相机的控制是通过 AXI 接口完成的。摄像机 IP 在内存中分配了一个位置。要启动相机,必须设置位以启用相机输出数据。数据本身使用 AXIS (AXI Stream) 协议打包。

2. 跨时钟域

来自相机的 AXIS 输出被发送到异步 FIFO。这是需要跨越两个不同时钟域时使用的一种方法。

 

FIFO 的从端连接到 PCLK,而 FIFO 的主端连接到工作频率为 50MHz 的 AXI 主时钟域。主时钟必须始终高于从时钟,否则 FIFO 将溢出导致丢失像素。

 
poYBAGOlJwiADZy8AABqNm4NDQw336.png
 

 

在像素流穿过时钟域后,它通过子集转换器发送。这是一个 AXIS IP 块,可将 RGB565 数据重新映射为 24 位数据包。图像处理 IP 使用 24 位,因为每种颜色都分配了 8 位。

下一个元素是 AXIS 开关。该 IP 作为 AXIS 流的简单多路复用器运行。它可以通过 AXI lite 接口或利用 AXIS 频闪信号自动配置。在此特定应用中,启用了 AXIS 开关的 AXI Lite 接口。然而,这需要实施 SDK 驱动程序来配置开关多路复用器。

3.图像过滤

Canny 边缘检测器 IP 是使用 Vivado HLS 构建的。它是用 C 语言编写的。HLS 的主要优点是允许快速部署 IP。缺点是生成的逻辑是模糊的,通常不如手工制作Verilog 代码高效,尽管它可以接近它。在任何情况下,生成 Canny IP 都涉及使用 Vivado HLS 2013 和 2018.3 版本的 xfopencv。这是一组 C++ 库,复制了用于 FPGA 逻辑的众所周知的 OpenCV 库。

Xilinx 最近发布了 Vivado 2019.1 以及 HLS 2019.1。这需要使用带有非免费修订框架的 SDSOC。

已实施的修订代码的主要更改是修改功能以支持 AXIS 协议的输入和输出。此外,AXI Lite 总线用于将所有可编程变量捆绑在一个集合中,并通过连接到 GP0 ZYNQ 总线的 AXI 互连将它们暴露给 PS 内存映射。

 

 
pYYBAGOlJwyAL8qtAACR9fV-h2E900.png
 

 

最后,为了在两个不同的 IP 之间切换,使用了 AXI 开关。

 

 
poYBAGOlJw-ABlnqAAEZq1YHXhE666.png
VDMA 配置为写入模式。
 

 

VDMA 配置为三重缓冲模式。VDMA 需要在运行前通过 AXI lite 接口进行配置,该接口将其连接到主 AXI 互连。

下面的代码显示了针对 VGA 分辨率的 VDMA 配置。

	Xil_DCacheFlush();    
	Xil_ICacheInvalidate();    
	/* Start of VDMA Configuration */    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0x30, 0x8B);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0xAC, 0x10000000);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0xB0, 0x100F0000);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0xB4, 0x101E0000);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0xA8, WIDTH*2);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0xA4, WIDTH*2);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0xA0, HEIGHT);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0x00, 0x8B);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0x5C, 0x10000000);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0x60, 0x100F0000);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0x64, 0x101E0000);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0x58, WIDTH*2);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0x54, WIDTH*2);    
   Xil_Out32(XPAR_VDMA_S2MM_BASEADDR + 0x50, HEIGHT);     

。。

VTC 本身配置为 VGA 分辨率。

 

 
poYBAGOlJxGAfEoiAAEA6uPNZ2Q084.png
 

 

这基本上是一个 R2RDAC,它采用数字数据总线以及行和帧同步信号 HSYNCS 和 VSYNC,并将数据发送到监视器。

正如您在下面看到的,应用程序在正常 VGA 模式、灰色模式(看起来更像蓝色)和边缘检测模式之间不断切换。

 

 
 
 
 
pYYBAGOlJz6AVIIzAAo3uh_mjPk252.jpg
 
1 / 3
 

概括

该项目展示了如何在 ZYNQ FPGA SoC 上实现完整的端到端视觉处理流水线。硬件能够以 30 fps 的速度进行实时边缘检测。

其他想法包括:

  • 添加更多滤波器类型,如中值、高斯、索贝尔、普维特等。
  • 为 MiniZed 构建一个 PYNQ 发行版以从 Linux 访问 IP,以构建一个无线 WiFi 摄像头。
  • 升级到更高清晰度的相机传感器。

 

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1NB-IoT芯片厂商的资料说明
  2. 0.31 MB   |  22次下载  |  1 积分
  3. 2智慧监狱建设的核心终端—智慧监仓屏
  4. 0.25 MB   |  2次下载  |  免费
  5. 3PC318C016M/D 200V半桥栅极驱动器技术手册
  6. 0.77 MB   |  2次下载  |  免费
  7. 45.0SMDJ200A单向TVS瞬态抑制二极管规格书
  8. 0.88 MB   |  1次下载  |  免费
  9. 5PC318C041EQ 200V半桥栅极驱动器技术手册
  10. 0.50 MB   |  次下载  |  免费
  11. 6PC318C042NM 200V半桥栅极驱动器技术手册
  12. 0.55 MB   |  次下载  |  免费
  13. 7技嘉H110主板IT8628E_BX IO电路图资料
  14. 2.61 MB   |  次下载  |  1 积分
  15. 8H110主板CPU PWM芯片ISL95858HRZ-T核心供电电路图资料
  16. 0.63 MB   |  次下载  |  1 积分

本月

  1. 1元宇宙深度解析—未来的未来-风口还是泡沫
  2. 6.40 MB  |  241次下载  |  免费
  3. 2元宇宙底层硬件系列报告
  4. 13.42 MB  |  184次下载  |  免费
  5. 32022 年展望報告 – 半導體產業
  6. 1.43 MB  |  136次下载  |  免费
  7. 4晶振与滤波器应用电路《电子工程师必备:元器件应用宝典》
  8. 1.57 MB  |  90次下载  |  免费
  9. 5汽车电子行业深度解析:智能化与电动化方兴未艾
  10. 6.47 MB  |  71次下载  |  免费
  11. 6中国DPU行业白皮书
  12. 23.80 MB  |  37次下载  |  免费
  13. 7晶科鑫代理线-微盟电子2021年度产品目录选型手册
  14. 14.75 MB  |  27次下载  |  免费
  15. 8NB-IoT芯片厂商的资料说明
  16. 0.31 MB   |  22次下载  |  1 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935137次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420064次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233089次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191425次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183352次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81602次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73822次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65991次下载  |  10 积分