传感器在我们的世界经历了快速的推广,事实上,传感器现在已经非常普遍,以至于我们每个人日常所使用的手机里都有好几种不同类型的传感器。这些传感器有的能检测压力、温度、加速度和重力的简单变化,同样也有更为高级的传感器,例如 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 软核处理器的支持。这使软件能够快速、方便地从不同类型的传感器获得所需信息,并提供给可扩展架构。