广告

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

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

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

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

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

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

o 图像处理链的配置

o 图像分析功能

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

第二个是更广泛的嵌入式视觉系统的控制与管理,它提供:

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

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

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

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

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

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

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

设备接口

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

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

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

图像处理链

图像处理链由上下游元件和接口组成,像素数据通过设备接口输出。但是接收到的像素的格式可能不能用于正确显示图像。我们可能需要进行图像校正,尤其是在使用彩色成像器的情况下。
为维持所需数据率下的吞吐量,图像处理链常实现在 FPGA 中,以发挥其并行优势。这样可以生成图像处理流水线,使得处理链的每一步都将并行实现,从而获得更高的帧速率。但是对部分应用我们必须考虑时延,尤其是对高级驾驶员辅助系统 (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 像素×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 核的名称在下面显示):

ON17020101
图1:图像处理流程。

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

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

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

• 将 YUV 从 4:4:4 格式重新缩放为 4:2:2 格式。 色度重采样 (Chroma Resampler)

• 配置视频 DMA 以传输图像帧到 PS DDR。 AXI VDMA

• 配置同一视频 DMA,以从 PS DDR 读取图像帧。 AXI VDMA

• 将 AXI Stream 转换回并行格式。 AXIS 到视频输出

• 为输出视频时序提供时序参考生成器。 视频时序控制器

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

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

• 108 MHz – 这是以 1280x1024 分辨率和 60 Hz帧速率输出图像所需的像素时钟速率。

• 75 MHz – 用于存储器映射的 AXI 和 AXI Lite 接口。

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

• 200 MHz – 提供给 Python 1300C CIS 设备作为基准。

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

所使用的 IP 模块的时钟结构如下表所示:

ON17020105

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

ON17020102
图2:EVK实例设计 — 突出显示的是上游图像处理链。

ON17020103
图3:EVK实例设计 — 突出显示的是下游图像处理链。

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

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

我们需要开发用于配置下列内容的软件:

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

• AXI Python 1300C 接口模块

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

• AXI 彩色滤波器阵列

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

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

• 用于控制 Python 1300C 设备电源轨的 I2C IO 扩展器

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

• 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 的 API

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

软件本身需要执行下列步骤:

• 初始化所有的 AXI 外设

ON17020106

• 为图像传感器轨加电

ON17020107

• 对安森美 Python 1300C、彩色滤波器阵列和 VDMA 进行配置

ON17020108

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

ON17020104
图4:使用演示系统抓取的居民区场景的一帧图像。

结论

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

EETC wechat barcode


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

本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 俄罗斯半导体项目Crocus Nano破产 CNE的成立是Rusnano在高科技和新技术领域投资战略的重要一环,也是其最大的半导体生产项目,官方资料显示这是一家 300 毫米晶圆上的集成电路和电子元件制造商……
  • 晶合集成与思特威首颗集成1.8亿像素全画幅CIS芯片成功试产 当今这个数字化时代,图像传感器技术的发展对于摄影、安防、医疗等多个领域的重要性不言而喻。近日,合肥晶合集成电路股份有限公司与国内设计公司思特威联合宣布,他们共同研发的首颗1.8亿像素全画幅(2.77英寸)CMOS图像传感器(CIS)已成功试产。
  • 美国将禾赛科技从“军方关联黑名单”中移除 在美国国防部将中国禾赛科技列入所谓的“中国军方关联企业黑名单”后不久,又决定将其移除……
  • 面对欧盟效率和空载功耗两大新要求,BLDC设计怎么破? BLDC的应用持续增长,主要市场驱动力来自于以下几个方面:工业类电机应用节能指令提出了新要求;印度对于吊扇应用,致力于实现50%的节能目标;越来越多设备的终端客户,希望有更好的使用体验。
  • 马斯克:正与首位脑机芯片受试者讨论植入第二代芯片 据悉,Neuralink公司正在积极推进第二阶段的临床试验。该公司已获得美国FDA的批准,将在6月份对受试者进行芯片植入手术。
  • 国内这家毫米波雷达公司如何做到20%市占率的? 前不久的Calterah Day加特兰日活动上,加特兰微电子创始人兼CEO陈嘉澍说,今年加特兰汽车毫米波雷达芯片在国内的市场份额达到20%。这是怎么做到的?...
  • 全球折叠屏手机快速增长,中国品牌压 • 得益于西欧、关键亚洲市场和拉丁美洲市场的增长,以及中国品牌的持续领先,全球折叠屏手机出货量在2024年第二季度同比增长了48%。 • 荣耀凭借其在西欧特别强劲的表现,成为最大的贡献者,成为该地区排名第一的品牌。 • 摩托罗拉的Razr 40系列在北美和拉丁美洲表现良好,为其手机厂商的出货量贡献了三位数的同比增长。 • 我们预计,头部中国手机品牌厂商的不断增加将至少在短期内抑制三星Z6系列在第三季度的发布。
  • AI网络物理层底座: 大算力芯片先进 AI技术的发展极大地推动了对先进封装技术的需求,在高密度,高速度,高带宽这“三高”方面提出了严苛的要求。
  • 奕斯伟计算DPC 2024:发布RISAA(瑞 奕斯伟计算2024首届开发者伙伴大会以“绿色、开放、融合”为主题,从技术创新、产品应用、生态建设等方面,向开发者、行业伙伴等相关方发出开放合作倡议,加速RISC-V在各行各业的深度融合和应用落地,共同推动RISC-V新一代数字基础设施生态创新和产业发展。
  • 重磅发布:Canalys 2024年中国云渠道 2024年 Canalys 中国云计算渠道领导力矩阵冠军厂商分别是:阿里云、华为云和亚马逊云科技(AWS)
  • 路特斯的努力有多“韧性” 文|沪上阿YI路特斯如今处在一个什么样的地位?吉利控股集团高级副总裁、路特斯集团首席执行官冯擎峰一直有着清晰的认知:“这个品牌的挑战依然非常大。首先,整个中国市场豪华汽车整体数据下滑了30%~40%,
  • 【光电集成】玩转先进封装  今日光电      有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。追光逐电,光赢未来...欢迎来到今日光电!----追光逐电 光赢未来----来源:AIOT大数据
  • 协作机器人鼻祖进军移动机器人,势要东山再起? 会议预告向世界展示中国最具创新力、领导力和品牌化的产品与技术!9月27号,“第6届国际移动机器人集成应用大会暨复合机器人峰会”将在上海举行,敬请关注!再度出现,能否再次“出线”?文|覃洁兰近日,曾经在
  • 日本信越化学12英寸氮化镓衬底出样 第三代半导体材料氮化镓,传来新消息:日本半导体材料大厂信越化学为氮化镓外延生长带来了有力辅助。2024年9月3日,信越化学宣布研制出一种用于GaN(氮化镓)外延生长的300毫米(12英寸)QSTTM衬
  • AMD将推出统一GPU架构,挑战英伟达CUDA“护城河”! 在德国柏林举行的IFA 2024上,AMD计算和图形业务集团高级副总裁兼总经理Jack Huynh宣布,公司将把以消费者为中心的RDNA和以数据中心为中心CDNA架构统一为UDNA架构,这将为公司更有
  • 【光电通信】特种光纤与光纤通信-236页收藏  今日光电      有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。追光逐电,光赢未来...欢迎来到今日光电!----追光逐电 光赢未来----来源:通信大讲堂申明
  • 又一上市半导体关厂,400名员工失业 ‍‍‍‍上市PCB厂商竞国(6108)日前出售泰国厂给予陆资厂胜宏科技后,近日惊传台湾厂惊传12月前关厂,并对客户发布通知预告客户转移生產,最后出货日期2024年12月25日。至於后续台湾厂400名员
  • 突发!三星印度厂工人大规模罢工! 9月11日消息,根据外国媒体报道,位于印度清奈的Sriperumbudur工厂三星电子工厂的员工发起了无限期罢工,要求提高工资并改善工作时间。此次罢工涉及大约2000名工人,导致工厂的日产量大约减少了
  • 总投资12亿元!这一IGBT项目明年投产 [关注“行家说动力总成”,快速掌握产业最新动态]9月6日,据“内江新区”消息,晶益通(四川)半导体科技有限公司旗下IGBT模块材料和封测模组产业园项目已完成建设总进度的40%,预计在明年5月建成。据了
  • 精密数据采集信号链设计中的常见难点解析 许多应用都要求采用精密数据采集信号链以数字化模拟数据,从而实现数据的精确采集和处理。精密系统设计师面临越来越大的压力,需要找到创新的办法,提高性能、降低功耗,同时还要在小型PCB电路板上容纳更高的电路
广告
热门推荐
广告
广告
广告
EE直播间
在线研讨会
广告
广告
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了