SoC 内的可编程逻辑架构本身具有可重编程性,这意味着该器件能支持任意连接。同时处理系统内的多路复用 IO(MIO)提供通过多种常用协议(从 SPI、I2C 和串行到千兆以太网、CAN 和 USB)连接的能力,拥有极为灵活的从该设备输入/输出数据的方式。
Zynq 同时接口和处理多个摄像头输入的实例
对使用的图像传感器来说,可编程逻辑架构还能够支持最适合于目前应用的特定传感器。与限制传感器接口和图像处理流水线的一些标准解决方案不同。
这种高度的灵活性能够打造出面向未来的设计方案。目前它可以先实例化一个接口,然后随着新标准的出现,重新编程已经部署的系统以支持新标准。可编程逻辑的灵活性还体现在能从一个标准转换到另一个标准。
在同构和异构传感器融合方面,这个最大的 SoC 产品系列提供充足的可编程逻辑架构,能实现 20 个以上的视觉通道并让每一个通道并行运行。
因为这些通道实现在可编程逻辑架构内,设计工程人员不受定义的图像处理路径制约,相反他们有能力为目前的应用实现所需的特定图像处理流水线。
就生成图像处理流水线而言,和普通的想法不同的是我们不必使用 HDL 重新生成一切。在标准 Vivado® IP 库内提供了一些图像处理内核,使用 AXI Streaming 接口就能够连接。使用 AXI Streaming 接口便于把灵活、可扩展的图像处理流水线创建成标准接口,用在所有的 IP 模块上。这种标准化能缩短初始开发时间,便于随着产品规划图的延伸更容易地升级和复用。
当然许多图像处理算法相当复杂,需要先在 OpenCV 或 MATLAB 等应用中建模。OpenCV 能与 Vivado® 高层次综合视频库结合,即 OpenCV 库的可综合版本,极为简便地为我们的流水线实现图像处理算法。随后这些算法能拉回到 Vivado 内的图像处理流水线中,缩短开发和验证时间。
另外,还可以实现基于 MathWorks MATLAB 流程的模型设计流程。它能够先在模型层面定义整个图像处理流水线,然后在定义底层的代码。
不过大多数现代应用都必须考虑安全性,以防范对系统、系统数据的无授权改动或访问,或是防范恶意黑客攻击。开发安全设计必须从系统层面自上而下考虑。不过使用 All Programmable SoC 能提供一系列器件级和系统级安全功能,让实现工作变得简便易行。Zynq SoC 能够对导向与配置流程进行加密和认证。也可使用 Trust Zone 技术创建正交环境,限制软件借助管理程序访问底层硬件。同时,内置的 XADC 能用于监测器件电压和温度以及外部参数,提供防篡改方法。还有一些功能能实现在设计中,进一步增强安全性。
All Programmable SoC 能实现多个并行图像处理流水线以及同构/异构传感器融合,然后实时执行视觉分析和决策,而且提供对电池供电系统非常关键的极高效的单位功耗性能。借助内在的灵活性,All Programmable SoC 能提供真正的差异化因素,值得在设计中考虑使用,尤其是在需要考虑单位功耗像素数量的时候。
结论
随着使用视觉导向发机器人和无人机应用的快速发展,视觉导向的机器人和无人机本身也正在飞速发展。要开发出拥有理想单位功耗性能的高精度视觉系统,最好是使用 All Programmable SoC。All Programmable SoC 能实现大量并行处理链,在边缘完成传感器融合和实时分析,同时提供高能效、高灵活度和高安全性的系统。
二、赛灵思 All Programmable SoC
视觉导向的的机器人和无人机高度依赖前面介绍的嵌入式视觉应用来成功完成自己的使命。支持视觉导向的的机器人和无人机的这些嵌入式视觉应用的实现就是赛灵思 All Programmable SoC。赛灵思 All Programmable SoC在单个器件中实现处理系统与可编程逻辑的强大组合,支持硬件加速计算。
在这些应用中通常实现的算法有多种,最常见的三种是:
1、环视系统 – 这些系统用于生成车辆周边环境的三维可视化,实现对环境的进一步了解。典型的环视系统使用球面摄像头。环视往往用于需要同步定位与地图构建(SLAM)和光流的应用中。
2、全景摄像头 – 这些摄像头为周边环境提供360度视野,用于监控应用和车辆可视化。
3、异构传感器融合 – 融合来自电磁频谱不同组成部分的图像,例如红外成像,以增强低光/夜视性能。
实现这些算法会带来几个必须解决的共同挑战,例如:透镜校正、消除透镜失真、视角转换、使用并行表面进行视频纹理填充。
结合电磁频谱中可视部分和红外部分的传感器融合实例
另一个是如何呈现最终图像。这就带来了多通道处理和多通道同步的难题,但这是保证所有摄像头都显示相同帧所需要的。
当然多通道处理和同步问题并不只局限于视觉导向的的机器人和无人机应用,这是许多嵌入式视觉应用的通病。视觉导向的的机器人和无人机也是检测和分类对象,实现自动和半自动操作所需要的。
运用IP
在工程项目中实现这些复杂的图像处理算法堪称一项壮举。它需要具有专家级技能水平的工程师正确地在 SoC 内实现算法。这些工程师能够针对目标架构开发和优化特定问题。取得这样的技能需要企业聘用一个长期工程师或分包工程师。除了需要取得专家级技能,由于需要全新开发这些功能,还会延长产品上市时间。
使用专业提供商开发的 IP,无需寻找专家级工程师,同时还能够缩短开发时间,从而加速产品上市进程。它还能够让开发企业集中精力实现产品增值,确保嵌入式视觉产品在市场上占据有力地位。
使用现有的、基于成熟技术的 IP 模块还降低了项目的总体风险。在项目上使用商用 IP 核,还能与辅助合同一起提供,让内核能无缝集成到您的应用中。
有数个 IP 模块作为 Vivado® Design Suite 标配提供,其它用于嵌入式解决方案的高级商用 IP 由多家第三方供应商提供。
其中一个这样的图像处理库组合就是 Xylon 在他们的 LogicBRICKS IP 库中提供的。该库专门为在 Vivado Design Suite 中使用进行了优化。一旦这些 IP 模块运用到 Vivado 设计中,它们就能够根据应用的要求加以定制。
在 logicBRICKS IP 库内有数个对开发视觉导向的的机器人和无人机应用有重要意义的 IP 模块。
在嵌入式视觉应用中往往使用基于梯度方向直方图(HOG)分类器来检测和跟踪对象。HOG分类器使用属于机器学习一部分的支持向量机(SVM)。在 logicBRICK 库内有一个以 LogiHOG 形式提供的 HOG 分类器,能够检测多达四个不同的 SVM 分类器,从而并行检测多个对象。这些 SVM 经训练和更新后能适应天气和灯光等多种不同条件。
工作中的 LogiHOG 分类器
LogicBRICKS 库中有多种其他常用的 IP 核,可用于简化开发工作。另外还有几种图像信号处理流水线可供设计人员实现在自己的设计中。这些图像处理内核提供完整解决方案,支持创建高达 4K2K P60 的流水线。这些流水线在 SoC 内与摄像头界面接口,因此能够支持多种不同的摄像头技术。
开发流程遵循传统 SoC 开发,根据运行要求配置 SoC。LogicBRICKS 库中的 IP 核随后插入到可编程逻辑架构中,以构成具备所需功能的图像处理流水线。然后用运行在 ARM® A9 内核上的应用软件提供的 API 调用按要求实时地精调算法。
许多应用使用的是高动态范围摄像头。动态范围代表的是传感器捕获拥有宽范照度强度的图像的能力,一般使用 dB 或比率来表达。这意味着同一幅图像中可以同时有高照度区域和黑暗区域。通过增强图像的照度和图像局部区域的亮度,logiHDR 内核提供与这些摄像头接口并从图像中提取最大细节的能力。
为专门应用加速
在使用免费或商用 IP 实现大部分图像处理流水线后,要让应用功能完整,还有需要实现的其余功能。使用 SoC 就能在处理器中或是在可编程逻辑中完成这一步。使用 SDSoC™ 开发工具,我们能无缝地在这两者间移植功能,加快首先用高级语言开发的应用的设计速度。
要发挥 SDSoC 的功能,我们可以使用 IP 核定义一个包含底层图像处理流水线的新平台。SDSoC 随后就能够使用可用的逻辑和互联资源加速设计。
在 SDSoC 内有多个库可供设计人员开发能在可编程逻辑内加速的应用。具体到图像处理,主要有两个支持 HLS 的库:
1、HLS_video – 该库提供嵌入式视觉功能和数据结构。这些元素可综合在一起。
2、HLS_OpenCV – 该库提供预先编译的 OpenCV 功能,以及与 IP 模块接口所需的专门支持功能。该库目的是供测试台使用,因此不可综合。
许多算法将使用 OpenCV 等开源图像处理框架开发。因此,在使用 SDSoC 开发以加速为目的的系统时,设计人员希望使用熟悉的框架。这就是 HLS_OpenCV 库配合 SDSoC 开发工具发挥作用的地方。它提供与加速功能接口所需的功能。
OpenCV 组元中最基本的是 cv::mat 类,用于定义以 X 轴和 Y 轴表示的图像大小以及像素信息。例如每个像素内的位数、有符号还是无符号、多少个通道构成一个像素。这个类是我们使用 OpenCV 时如何存储和操作图像的基础。
在 HLS 库中有一个类似的结构,即 hls::mat。鉴于 HLS 流是创建图像处理流水线的标准接口,该库还提供一些让我们能把 hls::mat 类转化为 HLS 流或把 HLS 流转化为 hls::mat 类的功能。cv::mat 类和 hls::mat 类之间的主要区别在于 hls::mat 类被定义为适用可编程逻辑架构的像素流,这与属于内存映射的 cv::mat 类不同。流实现和内存映射实现之间的这种差别意味着我们使用 hls::mat 类时不必随即访问像素。
这样就能够使用处理器内的双 ARM A9 内核完成应用的初步开发,确保算法的功能。在需要该功能时,可编程逻辑中的算法就能被加速。设计人员可使用追踪和 AXI 性能监测等 SDSoC 功能优化加速性能。
结论
视觉导向的的机器人和无人机技术在开发嵌入式视觉算法的过程中面临一系列的难题,但这些算法可帮助视觉导向的的机器人和无人机了解所处环境并根据得到的信息做出决策。为协助这些图像处理系统的开发工作,设计人员可使用 IP 核提供的功能,并运用 SDSoC 等系统级开发工具,生成所需的最终硬件加速功能。
评论
查看更多