嵌入式视觉应用中的传感器融合
扫描二维码
随时随地手机看文章
传感器在我们的世界经历了快速的推广,事实上,传感器现在已经非常普遍,以至于我们每个人日常所使用的手机里都有好几种不同类型的传感器。这些传感器有的能检测压力、温度、加速度和重力的简单变化,同样也有更为高级的传感器,例如 GPS、RADAR、LIDAR 和图像传感器。
传感器融合是指从几种不同的传感器中提取数据,以生成靠单个传感器无法提供的信息。随后,可以对该信息做进一步处理和分析。并根据最终应用,必要时还可用传感器来制定决策。传感器融合分为两大类 :
· 实时传感器融合——提取并融合传感器数据,并根据得到的信息实时制定决策。
· 离线传感器融合——这种方案是提取并融合传感器数据,但在过后的某个时间制定决策。
就嵌入式视觉系统和传感器融合应用而言,大部分应用适合实时传感器融合。
嵌入式视觉应用
嵌入式视觉应用正在经历迅猛增长,涉及领域广泛,从机器人、高级驾驶员辅助系统 (ADAS) 到增强现实,不一而足。这些嵌入式视觉应用对最终应用的成功运行有很大帮助。将嵌入式视觉系统提供的信息与来自不同传感器或多个传感器的信息进行融合,有助于更好理解环境,从而提升所选应用的性能。
很多嵌入式视觉应用只使用一个图像传感器来监控一个方向,例如只监测汽车的前方。利用这样的图像传感器可以检测、分类和跟踪对象。然而,由于只使用一个传感器,因此就无法测量与图像中对象的距离。也就是说,我们可以检测和跟踪到另一个车辆或行人,但如果不借助另一个传感器,我们就无法确定是否存在碰撞风险。本例中我们需要另一个传感器,例如 RADAR 或 LIDAR,该传感器能提供与已检测到的对象的距离。由于这种方法能够将来自多个不同类型传感器的信息融合,因此称为异构传感器融合。
ADAS 异构传感器融合实例(资料来源:赛灵思幻灯片)
另一种方案是提供第二个图像传感器,以实现立体视觉。这种方案是让两个图像传感器朝着相同方向,但分开一小段距离,就像人的两个眼睛那样,通过视差确定对象在视场中的深度。像这样使用多个相同类型的图像传感器,称为同构传感器融合。
当然,这里需要根据驾驶条件确定架构和传感器类型的选择。这包括深度感的范围、测量精度、环境光和天气条件、实现成本以及实现复杂程度。
嵌入式视觉不仅可用于对象检测和汽车防撞,还可以作为导航系统的一部分,用来收集交通标志信息。另外,还可融合医用 X 光、MRI 和 CT 等多种不同图像,或者融合安防与监视设备中的可见光和红外图像。
我们通常认为嵌入式视觉应用只使用可见电磁光谱,其实很多嵌入式视觉应用能融合来自可见电磁光谱以外的数据。
处理要求
如果不进行融合,处理图像时就需要相当大的计算能力,这是因为系统要执行一系列预处理功能。例如在使用彩色图像传感器时,这些处理任务包括颜色滤波插值、色彩空间转换/重采样以及图像校正。除此之外,我们还要执行传感器融合算法本身的处理任务,在之前使用的对象检测实例中,我们需要执行背景减法、阈值和轮廓检测,以使用最简单方案定位对象,或者可能需要更强的 HoG/SVM 分类器。
随着帧率和图像尺寸增加,预处理图像和提取信息所需的处理能力也会随之增加。
然而,从图像中提取所需的信息还只是任务的一部分,如果使用异构融合,我们还需对来自第二个传感器的信息进行配置、驱动、接收和提取。如果我们选择同构系统,则需要为第二个图像传感器再次执行与第一个传感器相同的图像处理流水线。
这样能提供两组数据,必须对这两组数据进行处理以确定与对象的实际距离,这才是真正的融合。
All Programmable SoC 或 FPGA 的优势
在嵌入式视觉系统中,一般使用 All Programmable FPGA 或 All Programmable SoC 来实现图像处理流水线。如果它们能用于传统嵌入式视觉应用,那么也适用于嵌入式视觉融合应用。
无论选择 FPGA 还是 SoC,嵌入式视觉应用通常使用处理器进行监视、控制和通信。如果选用 All Programmable SoC,那么中间有一个硬核,并有很多支持外设和接口标准。如果使用 All Programmable FPGA,就会使用一个软核,例如 MicroBlaze™,并采用更加定制化的外设和接口支持。
对于嵌入式视觉传感器融合应用,我们可进一步利用处理器为所用的众多传感器提供简单接口。例如,加速计、压力计、陀螺仪和 GPS 传感器都配有串行外设接口 (SPI) 和内部集成电路(I2C)接口,都得到 All Programmable Zynq®-7000 和 MicroBlaze 软核处理器的支持。这使软件能够快速、方便地从不同类型的传感器获得所需信息,并提供给可扩展架构。
在可编程逻辑架构中可轻松实现用于从图像传感器提取信息的图像处理流水线,此外,可编程逻辑架构还可用来为其他异构传感器(例如 RADAR 和 LIDAR)或者同构系统中的多种情况实现处理流水线。
当使用 All Programmable Zynq-7000 或 All Programmable UltraScale+™ MPSoC 时,处理器存储器与可编程逻辑之间紧密耦合的架构允许应用软件访问所得到的数据集,以便进一步处理和制定决策。独立传感器链可在可编程逻辑中实现,而且可并行运行,这对于立体视觉等需要同步操作的情况非常有利。
为了加速在可编程逻辑中实现的融合应用的交付进程,我们可利用高层次综合 (HLS) 开发可直接在可编程逻辑架构中实现的算法。
实例架构
开发前面介绍的对象检测和距离算法,利用 All Programmable SoC 演示同构和异构方案。尽管两种方案使用的传感器类型不用,但这两种架构的最终目标都是将两个数据集放在处理系统的 DDR 内存,同时将可编程逻辑架构的性能最大化。
实现同构对象检测系统需要使用相同的传感器类型,这里是 CMOS 成像传感器。这样做的优势是只需要开发一条图像处理链,这个图像处理链可以为两个图像传感器在可编程逻辑架构中实例化两次。
同构架构实现立体视觉系统的条件之一是要求两个图像传感器同步在可编程逻辑架构中并行实现两个图像处理链并使用具有适当约束的相同时钟,这样有助于满足这一苛刻的要求。
尽管视差计算需要进行密集处理,但两次实现相同的图像处理链的能力可显著节省开发成本。
上图给出了同构方案的架构,其中两条图像处理链主要基于可用的 IP 模块。图像数据采用定制的传感器接口 IP 模块捕获,并从并行格式转换为 AXI 流媒体。这样能实现轻松可扩展的图像处理链;我们可以利用高性能 AXI 互连以及视频 DMA 将结果从图像处理链传送到 PS DDR。
考虑采用不同类型传感器的异构实例, 我们可将上面介绍的图像传感器对象检测架构与 RADAR 距离检测相结合。对于 RADAR 的实现,我们有两个选择:脉冲方案(多普勒)或者连续波。具体选择哪种方案取决于最终应用要求,不过,这两种方法大同小异。
RADAR 的架构可分成两部分:信号生成和信号接收。信号生成部分负责生成连续波信号或者待传输的脉冲信号,无论哪种方案都需要利用信号生成 IP 模块与高速数模转换器进行接口连接。
信号接收部分也需要使用高速模数转换器来捕获接收到的连续波或脉冲信号。说到信号处理,这两种方案都需要使用通过可编程逻辑架构实现的 FFT 分析方法;同样,我们可使用 DMA 将得到的数据集传送到 PS DDR。
无论选择哪种实现架构,两个数据集的融合算法都是通过软件用 PS 来执行。另外,这些融合算法对处理带宽要求较高,实现更高性能的一种方法是使用现有工具集功能,尤其是设计环境 SDSoC™。
SDSoC 可利用 Vivado HLS 和连接框架(二者对软件开发人员都是透明的)无缝地在处理器与 SoC 可编程逻辑之间传输软件功能。当然,我们可利用高层次综合为同构和异构实现方式的处理链开发功能。我们还可进一步扩展,针对所选的实现方案创建定制 SDSoC 平台,然后借助 SDSoC 功能,利用未占用的逻辑资源进一步加速整个嵌入式视觉系统性能的提升。
结论
传感器融合已经扎根,同时,嵌入式视觉系统正在迅速增长,传感器快速推广和普及。All Programmable FPGA 和 SoC 提供的功能使多种类型的传感器可并行运行并按要求实现同步;同时,利用 SoC 处理系统或软核处理器来执行数据融合和决策活动。
系统和高层次综合工具(如 SDSoC 和 Vivado HLS),为工程设计团队带来了多种优势,可确保如期进行应用开发。