广告

嵌入式视觉系统的构建模块

时间:2017-02-01 作者:Aaron Behman,Adam Taylor 阅读:
传统嵌入式视觉系统采用FPGA/处理器组合来实现,也有越来越多地使用将高性能处理器与FPGA相结合的片上系统来实现。在本文中我们将会介绍嵌入式视觉系统的高级元素;如何简便快捷地使用软件 API 和 IP 库构建嵌入式视觉系统,如何把算法开发的增值部分添加到图像处理链中。

从监控摄像头等简单监控系统到更高级的应用,例如当今最新款汽车配备的高级驾驶员辅助系统 (ADAS)和先进生产设施及工厂里使用的机器视觉,嵌入式视觉系统已在一系列应用中得到使用。不论何种应用,嵌入式视觉系统都具备一些共同之处,总体来讲它们可以分为下列三大类:i6hEETC-电子工程专辑

• 设备接口 — 提供到所选成像设备的接口。根据选择的设备类型,提供所需的时钟、偏置和配置数据。这样还可以从设备接收图像数据,根据需要进行解码和格式化,以供图像处理链做进一步处理。
i6hEETC-电子工程专辑

• 图像处理链 — 通过设备接口接收图像数据并进行彩色滤波器阵列内插和色域转换(即从彩色转换到灰度)等操作。这部分仍处于我们对接收到的图像使用大量算法的图像处理链内。这些可以是降噪或边缘增强等简单算法,也可以是对象识别或光流等复杂得多的算法。常见情况是在图像处理链的上游部分调用算法实现方案。当然图像处理链上游的实现复杂性取决于要实现的应用。而输出格式化部分(即将处理后的图像数据转换为正确格式,以输出到显示器或是通过通信接口输出)被称为下游部分。
i6hEETC-电子工程专辑

• 系统监视与控制 – 这是一项独立于设备接口和图像处理链的类别,它从两个方面提供系统监视和控制。第一个位于设备内部,它提供:i6hEETC-电子工程专辑

o 图像处理链的配置

o 图像分析功能

o 在算法执行过程中根据要求更新图像处理链

第二个是更广泛的嵌入式视觉系统的控制与管理,它提供:i6hEETC-电子工程专辑

o 电源管理和图像设备上电排序

o 执行自检及其他系统管理功能

o 网络支持通信或点对点通信

o 在首次成像操作前通过 I2C 或 SPI 配置图像设备

部分应用允许系统监视功能访问帧存储器并在其中的帧上执行算法。在这种情况下系统监视能够构成图像处理链的一部分。i6hEETC-电子工程专辑

这三大类别因为每个阶段内在的难点不同,需要不同的实现方法。设备接口和图像处理链都要求有能力处理带宽高数据,从而在内部实现图像处理链,在外部从系统传输图像数据。而系统监视与控制要求能够处理和响应通过通信接口接收到的命令并为外部通信提供支持。如果系统监视也要构成图像处理链的组成部分,就需要一个高性能处理器。i6hEETC-电子工程专辑

照此,传统嵌入式视觉系统采用FPGA/处理器组合来实现,也有越来越多地使用将高性能处理器与FPGA相结合的片上系统来实现。在我们演示上述几个方面如何结合在一起之前,我们先来了解一下这三个类别中每一个的不同难点。i6hEETC-电子工程专辑

设备接口

传感器接口由应用所选择的设备决定,大多数嵌入式视觉应用使用 CMOS 图像传感器 (CIS)。一般情况下这些传感器使用 CMOS 并行输出总线,用控制信号提示行和帧的有效顺序,或者使用速率更高的串行通信,实现较简单的系统接口,但会导致 FPGA 实现方案略显复杂。与并行总线相比,这些串行数据流能通过更少数量的通道传输图像,因为它们以快得多的数据速率运行,因此相比并行接口而言,能让成像器支持更高的帧速率。为实现同步,常见的做法是让包含图像及其它数据字的数据通道与包含用于定义数据通道上的内容的代码字的同步通道相结合。与数据通道和同步通道结合的还有一个时钟通道,因为该接口采用源同步。这些高速串行通道一般实现为 LVDS 或微摆幅差分信号 (Reduced Swing LVDS),以降低系统噪声和功耗。i6hEETC-电子工程专辑

不论输出图像格式如何,通常是 CIS 设备在获取任何图像之前需要由嵌入式视觉系统加以配置。这是由 CIS 设备的多功能性造成的。这种多功能性在提供强大的片上处理功能的同时,也需要在输出图像前使用正确的设置进行配置。这些接口对带宽的要求没有图像传输要求的那么高,因此常常使用 I2C 或 SPI 接口标准。i6hEETC-电子工程专辑

因为所需的图像数据带宽较高,经常把该接口实现在 FPGA 中,这样更便于与图像处理链集成。该 CIS 设备的配置接口一般使用 I2C 或 SPI,它们既可以用 FPGA 实现,也可以用支持这种接口的系统监视与控制处理器实现。i6hEETC-电子工程专辑

图像处理链

图像处理链由上下游元件和接口组成,像素数据通过设备接口输出。但是接收到的像素的格式可能不能用于正确显示图像。我们可能需要进行图像校正,尤其是在使用彩色成像器的情况下。
为维持所需数据率下的吞吐量,图像处理链常实现在 FPGA 中,以发挥其并行优势。这样可以生成图像处理流水线,使得处理链的每一步都将并行实现,从而获得更高的帧速率。但是对部分应用我们必须考虑时延,尤其是对高级驾驶员辅助系统 (ADAS) 这样的系统而言。为有效建立图像处理链,我们需要使用通用互联协议作为图像处理内核的基础,从而方便处理 IP 的互联。这样可以带来两重好处:一是可以重复使用的库;二是由于每个 IP 核旨在根据定义的标准接收和发送数据,从而方便流水线的建立。这里有多种常用的协议可供选用,其中最常见的是 AXI,因其具有同时支持内存映射接口和流接口的灵活性。i6hEETC-电子工程专辑

图像处理链内的典型处理阶段包括:i6hEETC-电子工程专辑

• 彩色滤波器阵列 – 在CIS设备上用贝尔 (Bayer) 滤色片生成每个像素的彩色

• 色域转换 – 从RGB转换为YUV

• 色度重采样 – 将 YUV 像素转换为更高效的像素编码

• 应用图像校正算法,比如色彩校正或伽马校正,或是进行图像增强或降噪

• 在下游侧我们可以配置视频输出时序,然后在输出到指定的目标前转换回本机并行输出视频格式i6hEETC-电子工程专辑

部分系统也使用外部内存,例如DDR 的内存作为帧存储,在 SoC 内部 DDR 内存也往往提供给 SoC 的处理器侧。共享内存空间的能力让系统监视侧能通过千兆位以太网或 USB 传输数据,或成为图像处理链的延伸。i6hEETC-电子工程专辑

系统监视

传统上该功能实现在处理器内部,能够处理相关命令,以按应用需求对图像处理链进行配置。为接收和处理命令,系统监视功能必须能够支持从简单的 RS232、千兆位以太网、USB、PCIe 到 CAN 汽车专用接口等一系列不同的通信接口。i6hEETC-电子工程专辑

只要嵌入式视觉系统的架构能够支持,我们就能使用处理器来生成图像叠加信息,可供叠加在输出图像上。在能够访问图像数据的条件下,我们也能够使用处理器对图像开展进一步处理,或是收集统计数据(像素值分布柱状图等)。这样系统监视就成为图像处理链的一部分,让开发人员能利用各种开源图像处理库,如OpenCV、OpenCL 和 OpenVX。i6hEETC-电子工程专辑

EVK使用实例

在阐明嵌入式视觉系统的基本元素后,下文将示范这些概念,展现如何综合运用它们创建出可工作的系统。该实例将展示我们如何使用安富利 MicroZed 嵌入式视觉套件 (EVK)创建嵌入式视觉系统。i6hEETC-电子工程专辑

该套件使用安森美 Python 1300C 成像设备和赛灵思 Zynq 7020。 Python 1300C 是一个 1280 像素×1024行的色彩图像传感器,通过 SPI 接口配置。此型号传感器使用串行输出实现高帧率,同时EVK 支持通过 HDMI 接口输出图像到显示器。i6hEETC-电子工程专辑

Zynq 7020 为嵌入式视觉系统的实现提供了一个极好的平台,因为我们能使用 FPGA 架构中的可编程逻辑 (PL) 实现该设备的接口和图像处理链。而 FPGA 架构中的 ARM A9双核处理器(即处理系统 (PS))可用于根据我们的需要实现系统监视功能和图像处理链延伸。i6hEETC-电子工程专辑

为开发该应用,我们将用到两个 SoC 开发工具。一个是赛灵思 Vivado 2015.4,另一个是赛灵思SDK 2015.4。在 Vivado 中我们将实现设备的接口、图像处理链,在 Zynq 内配置 PS,建立 PS 到 PL 存储器映射以完成下列操作:i6hEETC-电子工程专辑

• 根据图像大小和帧速率所要求的参数以及所需操作在图像处理链内配置 IP。为此我们将在 PS和 PL 间使用通用 AXI 互联,以 PS 为主设备。使用该接口我们能在 PS 和 PL 间实现 高达 1,200Mbps 的传输速率。
i6hEETC-电子工程专辑

• 如有必要,将处理器的 DDR 内存置于图像处理链中,以便处理器访问。为此我们将在 PL 和 PS 间使用高性能 AXI 互联,以 PL 为主设备。使用该接口我们能在 PL 和 PS DDR 内存间实现高达 2,400Mbps 的传输速率。i6hEETC-电子工程专辑

该演示将使用 HDMI 展示如何将图像输出到显示器上。相当有用的是,EVK 制造商安富利为Python 1300C 提供了一个设备接口 IP 模块,并为在 EVK 上接口输出到 HDMI 设备提供了一个 HDMI 输出 IP 模块。我们将本实例中使用所有这些模块。在 Vivado 中我们可以使用 IPXact 格式把这些 IP 模块添加到 Vivado IP 目录中。i6hEETC-电子工程专辑

图像处理链将与安森美设备接口并执行下列处理阶段,除了 Python 1300C 和 HDMI IP 核,所有使用的 IP 核均来自 Vivado 中的标准赛灵思图像处理 IP 库(实际 IP 核的名称在下面显示):i6hEETC-电子工程专辑

ON17020101
图1:图像处理流程。i6hEETC-电子工程专辑

• 将来自 Python 接口 IP 的并行视频和水平及垂直同步转换为 AXIS Stream,以便我们能够将其与后续的图像处理IP核接口。 视频输入到 AXIS (Video in to AXIS)
i6hEETC-电子工程专辑

• 彩色滤波器阵列使用贝尔滤色片为每个输出像素赋予一个 RGB 值(仅以 R、G 或 B 表示)。彩色滤波器阵列插值 (Color Filter Array interpolation)
i6hEETC-电子工程专辑

• RGB 到 YUV色域转换,将 RGB 色域转换为 HDMI 驱动器优选的 YUV 色域输出格式。RGB 到 YCRCB色域转换器 (RGB to YCRCB Color-Space Convertor)
i6hEETC-电子工程专辑

• 将 YUV 从 4:4:4 格式重新缩放为 4:2:2 格式。 色度重采样 (Chroma Resampler)
i6hEETC-电子工程专辑

• 配置视频 DMA 以传输图像帧到 PS DDR。 AXI VDMA
i6hEETC-电子工程专辑

• 配置同一视频 DMA,以从 PS DDR 读取图像帧。 AXI VDMA
i6hEETC-电子工程专辑

• 将 AXI Stream 转换回并行格式。 AXIS 到视频输出
i6hEETC-电子工程专辑

• 为输出视频时序提供时序参考生成器。 视频时序控制器i6hEETC-电子工程专辑

除了确保系统正常运行,我们还需要两个 AXI 互联。一个是高性能 AXI 互联,另一个是通用AXI 互联,以及每个时钟域所需的复位模块。i6hEETC-电子工程专辑

图像处理应用需要一系列的时钟域,大部分时钟域我们可以使用 Zynq 内部的 PS 提供给 PL的时钟。就该应用而言,我们需要下列时钟:i6hEETC-电子工程专辑

• 108 MHz – 这是以 1280x1024 分辨率和 60 Hz帧速率输出图像所需的像素时钟速率。
i6hEETC-电子工程专辑

• 75 MHz – 用于存储器映射的 AXI 和 AXI Lite 接口。
i6hEETC-电子工程专辑

• 150 MHz – 用于图像处理链,也称为AXI Streaming时钟。AXI Stream 时钟的速率必须至少与像素速率相同。但是我们必须考虑处理链中的所有 IP 核的吞吐量。虽然大多数模块能够每时钟周期处理一个像素,留出部分裕度并减少所需的缓存是明智的做法。
i6hEETC-电子工程专辑

• 200 MHz – 提供给 Python 1300C CIS 设备作为基准。i6hEETC-电子工程专辑

为实现像素时钟,我们需要使用时钟向导来生成该 108MHz 像素时钟,因为该时钟需要极为准确的设置。虽然在用 PL 架构时钟设置时,75MHz和150MHz时钟允许部分容差,但 200MHz时钟也要求精确。与 108MHz 时钟不同的是该时钟可由 PL 架构时钟精确生成。i6hEETC-电子工程专辑

所使用的 IP 模块的时钟结构如下表所示:i6hEETC-电子工程专辑

ON17020105i6hEETC-电子工程专辑

在 Vivavdo 方框图编辑器中的整个实现方案如下面两个图所示。这两个图分别显示的是图像处理链的上游和下游。您还能够看到使用通用 AXI 互联和高性能 AXI 互联实现的 ARM 内核处理器的互联情况。 i6hEETC-电子工程专辑

ON17020102
图2:EVK实例设计 — 突出显示的是上游图像处理链。i6hEETC-电子工程专辑

ON17020103
图3:EVK实例设计 — 突出显示的是下游图像处理链。i6hEETC-电子工程专辑

一旦我们完成设计验证,并为AXI外设分配地址(可自动完成)后,我们就能在 Vivado 2015.4 中构建硬件并将其导入到 SDK 2015.4 软件开发环境中。我们需要在该环境中编写一些简单软件,让系统启动并运行。i6hEETC-电子工程专辑

在 SDK 内部,我们不仅需要在 Zynq 内配置设计,还需要在使用设计之前在 EVK 上配置部分元素。记住在本实例中 PS 起着系统监视和控制功能,因此必须对整个嵌入式视觉系统进行配置,而不仅仅是在 Zynq 中配置 Vivado 设计。i6hEETC-电子工程专辑

我们需要开发用于配置下列内容的软件:i6hEETC-电子工程专辑

• 使用SPI 接口的 Python 1300C 摄像头

• AXI Python 1300C 接口模块

• AXI VDMA,从 DDR 内存读取和向 DDR 内存写入帧

• AXI 彩色滤波器阵列

• 用于 AD7511 的 HDMI 输出设备。该设备使用 I2C 进行配置

• I2C 多路复用器及其连接的相关外设

• 用于控制 Python 1300C 设备电源轨的 I2C IO 扩展器i6hEETC-电子工程专辑

该 EVK 使用 Zynq PS I2C 控制器对 HDMI 输出设备进行配置,来对 Python 设备供电。安富利还向我们提供了能用来控制 I2C 并进行如下配置的 API:i6hEETC-电子工程专辑

• ADV7511 – 用于 HDMI 输出的 API

• CAT9554 – 用于位于摄像头模块上的 I2C I/O 扩展器的 API

• TCA9548 – 用于位于 EVCC 上的 I2C 多路复用器的 API

• PCA9534 – 用于位于 EVCC 上的 I2C IO 扩展器的 API

• OnSemi_Python_SW – 用于 Python 1300C 的 API

• XAXIVDMA_EXT – 用于配置 VDMA 的 API

• XIICPS_EXT – 用于驱动外部 I2C 的 APIi6hEETC-电子工程专辑

我们所需做的就是将这些 API 与赛灵思软件 API 耦合,用于图像处理链中的 IP,这样我们就能快速创建软件可执行文件。要创建软件应用,我们需要将硬件设计导入到 SDK 中,为硬件创建板级支持包 (BSP)。该 BSP 内置所有所需的赛灵思 API,在与安富利的 API 耦合后,就能够驱动图像处理链中的硬件和 Zynq。i6hEETC-电子工程专辑

软件本身需要执行下列步骤:i6hEETC-电子工程专辑

• 初始化所有的 AXI 外设i6hEETC-电子工程专辑

ON17020106i6hEETC-电子工程专辑

• 为图像传感器轨加电i6hEETC-电子工程专辑

ON17020107i6hEETC-电子工程专辑

• 对安森美 Python 1300C、彩色滤波器阵列和 VDMA 进行配置i6hEETC-电子工程专辑

ON17020108i6hEETC-电子工程专辑

完成这些步骤后,当软件运行在 EVK 上您将看到图像正被输出到您所选定的 HDMI 监控器上,如下图所示。i6hEETC-电子工程专辑

ON17020104
图4:使用演示系统抓取的居民区场景的一帧图像。i6hEETC-电子工程专辑

结论

在本文中我们介绍了嵌入式视觉系统的高级元素;如何简便快捷地使用软件 API 和 IP 库构建嵌入式视觉系统,如何把算法开发的增值部分添加到图像处理链中。i6hEETC-电子工程专辑

EETC wechat barcode


关注最前沿的电子设计资讯,请关注“电子工程专辑微信公众号”。
i6hEETC-电子工程专辑

i6hEETC-电子工程专辑

本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
您可能感兴趣的文章
  • 女孩被暴打后拖走,人脸识别+大数据能抓住嫌犯吗? 6月24日,一则“深夜街头一女孩遭男子拳打脚踢、撕扯衣服、拖行”的视频引起人们关注。目前警方正在全力调查此案件,在安防监控中很火的人脸识别和轨迹追踪技术,这次能否帮上忙呢?一种被称为跨镜追踪(Re-identification,ReID)的技术,是人脸识别用于持续追踪嫌犯的重要补充……
  • 图像传感器推动 嵌入式视觉技术发展 嵌入式视觉新应用的加速推动器是满足市场需求的价格,而视觉系统成本正是实现这要求的一个主要制肘。
  • 为高速应用而生的1100万像素图像传感器 这款标准传感器专为需要在极高快门速度下达到4K分辨率的应用而设计,是唯一兼备APS-C格式、710fps高帧率及4K分辨率的传感器。
  • 英飞凌推出飞行测距专用芯片,2019年第4季量产 就在3D飞行时间测距 (Time-of-Flight, ToF) 即将成为下一代脸部识别新技术之际,德国半导体大厂英飞凌(Infineon)于日前的 2019 年世界行动通讯大会上,推出专为 3D ToF 需求所设计的第4代 REAL3图像传感器芯片──IRS2771C,以满足消费性行动装置市场。
  • 智能手机市场新增图像传感器成员OV08B 2019年2月22日,豪威科技公司面向广泛的智能手机相机应用市场,推出最新一代1.12微米,800万像素图像传感器家族成员——OV08B。这款新型图像传感器支持主流智能手机自拍摄影和多摄像头应用。
  • 中国第二大芯片设计公司重新定义安防成像新标准 最近两年,由于车载应用、机器视觉、人脸识别与安防监控的快速发展,以及越来越强大的手机拍照功能,全球CMOS图像传感器销售额屡创新高。以安防领域为例,2017年全球安防领域CMOS出货量达到1.84亿,年复合增长率达到11.95%……
相关推荐
    广告
    近期热点
    广告
    广告
    广告
    可能感兴趣的话题
    广告