嵌入式视觉系统的构建模块
链的每一步都将并行实现,从而获得更高的帧速率。但是对部分应用我们必须考虑时延,尤其是对高级驾驶员辅助系统 (ADAS) 这样的系统而言。为有效建立图像处理链,我们需要使用通用互联协议作为图像处理内核的基础,从而方便处理 IP 的互联。这样可以带来两重好处:一是可以重复使用的库;二是由于每个 IP 核旨在根据定义的标准接收和发送数据,从而方便流水线的建立。这里有多种常用的协议可供选用,其中最常见的是 AXI,因其具有同时支持内存映射接口和流接口的灵活性。
图像处理链内的典型处理阶段包括:
彩色滤波器阵列 – 在CIS设备上用贝尔 (Bayer) 滤色片生成每个像素的彩色
色域转换 – 从RGB转换为YUV
色度重采样 – 将 YUV 像素转换为更高效的像素编码
应用图像校正算法,比如色彩校正或伽马校正,或是进行图像增强或降噪
在下游侧我们可以配置视频输出时序,然后在输出到指定的目标前转换回本机并行输出视频格式
部分系统也使用外部内存,例如DDR 的内存作为帧存储,在 SoC 内部 DDR 内存也往往提供给 SoC 的处理器侧。共享内存空间的能力让系统监视侧能通过千兆位以太网或 USB 传输数据,或成为图像处理链的延伸。
系统监视
传统上该功能实现在处理器内部,能够处理相关命令,以按应用需求对图像处理链进行配置。为接收和处理命令,系统监视功能必须能够支持从简单的 RS232、千兆位以太网、USB、PCIe 到 CAN 汽车专用接口等一系列不同的通信接口。
只要嵌入式视觉系统的架构能够支持,我们就能使用处理器来生成图像叠加信息,可供叠加在输出图像上。在能够访问图像数据的条件下,我们也能够使用处理器对图像开展进一步处理,或是收集统计数据(像素值分布柱状图等)。这样系统监视就成为图像处理链的一部分,让开发人员能利用各种开源图像处理库,如OpenCV、OpenCL 和 OpenVX。
EVK使用实例
在阐明嵌入式视觉系统的基本元素后,下文将示范这些概念,展现如何综合运用它们创建出可工作的系统。该实例将展示我们如何使用安富利 MicroZed 嵌入式视觉套件 (EVK)创建嵌入式视觉系统。
该套件使用安森美 Python 1300C 成像设备和赛灵思 Zynq 7020。 Python 1300C 是一个 1280 像素&TImes;1024行的色彩图像传感器,通过 SPI 接口配置。此型号传感器使用串行输出实现高帧率,同时EVK 支持通过 HDMI 接口输出图像到显示器。
Zynq 7020 为嵌入式视觉系统的实现提供了一个极好的平台,因为我们能使用 FPGA 架构中的可编程逻辑 (PL) 实现该设备的接口和图像处理链。而 FPGA 架构中的 ARM A9双核处理器(即处理系统 (PS))可用于根据我们的需要实现系统监视功能和图像处理链延伸。
为开发该应用,我们将用到两个 SoC 开发工具。一个是赛灵思 Vivado 2015.4,另一个是赛灵思SDK 2015.4。在 Vivado 中我们将实现设备的接口、图像处理链,在 Zynq 内配置 PS,建立 PS 到 PL 存储器映射以完成下列操作:
根据图像大小和帧速率所要求的参数以及所需操作在图像处理链内配置 IP。为此我们将在 PS和 PL 间使用通用 AXI 互联,以 PS 为主设备。使用该接口我们能在 PS 和 PL 间实现 高达 1,200Mbps 的传输速率。
如有必要,将处理器的 DDR 内存置于图像处理链中,以便处理器访问。为此我们将在 PL 和 PS 间使用高性能 AXI 互联,以 PL 为主设备。使用该接口我们能在 PL 和 PS DDR 内存间实现高达 2,400Mbps 的传输速率。
该演示将使用 HDMI 展示如何将图像输出到显示器上。相当有用的是,EVK 制造商安富利为Python 1300C 提供了一个设备接口 IP 模块,并为在 EVK 上接口输出到 HDMI 设备提供了一个 HDMI 输出 IP 模块。我们将本实例中使用所有这些模块。在 Vivado 中我们可以使用 IPXact 格式把这些 IP 模块添加到 Vivado IP 目录中。
图像处理链将与安森美设备接口并执行下列处理阶段,除了 Python 1300C 和 HDMI IP 核,所有使用的 IP 核均来自 Vivado 中的标准赛灵思图像处理 IP 库(实际 IP 核的名称在下面显示):
图1:图像处理流程
将来自 Python 接口 IP 的并行视频和水平及垂直同步转换为 AXIS Stream,以便我们能够将其与后续的图像处理IP核接口。 视频输入到 AXIS (Video in to AXIS)
彩色滤波器阵列使用贝尔滤色片为每个输出像素赋予一个 RGB 值(仅以 R、G 或 B 表示)。彩色滤波器阵列插值 (Color Filter Array interpolaTIon)
RGB 到 YUV色域转换,将 RGB 色域转换为 HDMI 驱动器优选的 YUV 色域输
- 嵌入式系统在电源设计中的运用(09-20)
- 一种小型智能化UPS系统的嵌入式设计方案(09-16)
- 基于无线传感器网络的嵌入式远程测控系统研究(10-17)
- 嵌入式工业以太网控制器的设计和应用(10-17)
- 基于4G通信的嵌入式数据通信系统设计(10-10)
- 嵌入式CPU卡在医用便携式监护仪中的应用及设计(09-23)