随着处理效能、内存密度和系统整合度的提升,嵌入式视觉从传统逐渐扩增到新兴应用领域,市场规模在十年内必有显著增长。而伴随着应用领域越来越多元,影像传感器系统在开发时,所需考虑的面向也变得更加复杂。
视觉系统在各个产业及应用领域中日益普及,甚至每天携带的智能型手机即嵌入式视觉系统的一个例子。这些装置不仅能够从事影像捕捉和影像,还能执行扩增虚拟现实的应用。由此可知嵌入式视觉技术有相当高的接受度。
随着处理效能、内存密度和系统整合度的提升,嵌入式视觉从传统逐渐扩增到新兴应用领域(图1)。这使得嵌入式视觉在消费者、产业和间被广泛地接受,十年内必有显著增长。
所谓嵌入式视觉系统包含从所选的影像传感器接收光子到系统输出的整个讯号链。从接收端的影像中撷取处理或未处理的影像或信息,并提供予下游系统,而嵌入式系统架构师则负责根据系统要求确保接收到输出过程的效能。
因此,嵌入式视觉系统架构师须要熟悉与传感器和后处理系统相关的各种概念和技术。本文专为入门之专业人士设计,旨在让读者对此技术和概念有一个基本了解。
首先,我们必须熟悉电磁波谱及期望系统运行的光谱域,因为可辨识的范围仅390nm(蓝光)至700nm()波长间的光谱,亦为可见光谱;而根据选用影像设备的不同,我们却能捕获到更广泛的波长影像包括X光、紫外线、红外线,以及可见光谱。
针对近红外光及以下的光谱范围,我们可以选用电荷耦合组件(CCD)或互补金属氧化物半导体(CMOS1)影像传感器(CIS);到了红外光谱范围,则须使用专用的红外光检测器。红外光谱之所以需要专用的传感器,部分原因在于芯片影像传感器如CCD或CIS需要激发能。这些组件通常需要1eV的光子能量来激发一个电子,然而在红外光谱范围,光子能量介于1.7eV至1.24meV之间,因此红外影像传感器应基于HgCdTe或InSb。这些低激发能的传感器,经常与CMOS的读取IC(ROIC)配合使用,以利传感器的控制与读取。
.电荷耦合组件(CCD)被视为最好的仿真组件,因此若需与数字系统整合,就需要在一定的模拟电压下外加ADC及频率生成功能。每个像素储存由光子产生的电荷,且多数的应用是由2D数组排列成行,每行由多个像素组成。读取CCD时,需透过行与行之间的传输,将每行平行传递到读取缓存器, 再透过读取缓存器将每行串行读取。这个缓存器的读取过程中,会将电荷转换为电压。
.CMOS影像传感器能让ADC、偏压和驱动电在同一个芯片上做更紧密的整合,可大幅降低系统对整合的需求,并同时提高CIS设计的复杂度。主动像素传感器 (APS)是CIS的核心,其中与CCD的不同在于CIS的每个像素中同时包含一组光电二极管及读取放大器,并能单独读取数组中的任一个像素。
尽管多数的嵌入式视觉皆采用CIS组件,但CCD仍是高端科学研究应用领域中主要采用的传感器。本文所提及的内容适用于CIS或CCD影像技术。
首先,用户必须决定所需的分辨率为何,也就是决定每行中须包含的像素量,以及检测器需多少行。好比说,在天文科学应用的情况下,很可能需用到高分辨率的2D组件,但在工业品管的影像应用上可能只须执行线性扫描。
线性扫描组件由X轴上的单行像素所组成,往往适用于移动中的相机或目标物应用,藉以生成Y轴的影像。通常这类传感器用于检验应用或光学字符识别(OCR)居多。有些领域须采用时域整合(TDI)线性扫描传感器,而这类传感器在X轴由多行所组成,并随着目标移动;而像素也从一个向下一个移动,并随着电荷在时间上整合,以实现更灵敏的检测。
不过,TDI需在行与行间的传输与目标移动间进行同步,以防发生模糊及影像缺陷。由于只有几行须要读取,因此帧率可以相当高。
2D数组中包含多行的像素,而数组大小将决定传感器的最大帧率。通常为了实现更高的帧率,并将2D组件平行读取多个像素。除此之外,2D组件亦可执行窗口操作(又称为感兴趣区域,ROI),并读取特定感兴趣的区域,以获得更高的帧率。这类组件可用于众多领域,而且信息包含在2D影像中,例如先进辅助驾驶系统(ADAS)、或科学研究领域。
在决定了影像感测的格式及所需分辨率后,再来必须考虑的是「像素间距」。因为它决定了像素的大小,而这关系到入射光子所产生的电荷有多少能够被收集。因此,较小的像素间距意味着在一个整合周期内(传感器于影像中的时间)能够收集较少的电荷。若像素间距较小,则意味着捕捉影像需要更长的整合时间,这会影响到传感器捕捉快速移动中影像的能力,并且使得低光源拍照效能下降。
确定传感器格式后,即须考虑究竟是使用CCD、CMOS或其他更专业的技术。对此的重要参考指标是量子效率(QE);意指组件通过光子产生电子的效率。通常,一般希望在可见光谱内QE值越高越好,这对于低光源应用也具重要意义。影响组件QE值的因素有三个:吸收、反射和透射。其中组件结构是导致QE值降低的主因,如金属导线或多晶硅闸(Poly silicon gate)等的电吸收光子或将光子反射,导致像素在组件中被频蔽,从而使QE值降低,因此要慎选传感器。
这类型的组件的背板经过由后期处理削薄,以便在后端接收光照,从而不受其他设计组件的。薄型背照式组件能实现优化的QE值。
呈空间分布,并在相同的光照强度下,像素呈不同反应所引起的噪声。FPN通常由每个像素的不同偏移和增益响应引起;偏移部分通常称为DSNU(Dark Signal Non-Uniformity),增益部分称为PRNU(Photo Response Non-Uniformity)。有多种方法可以弥补FPN,而最常见的方是对输出讯号作相关二次取样。
由影像传感器中的热噪声引起,甚至在无光照的情况下也会出现。暗讯号对最终影像质量的影响取决于帧率;较高的帧率下影响不大,然而,随着帧率降低(如科学应用)影响会较明显。由于暗电流与温度息息相关,故在需要低暗电流的情况下,通常是利用像PelTIer等的冷却器来降低影像组件的工作温度。
确定组件的噪声效能后,就可以界定影像传感器所需的动态范围。动态范围代表传感器在一定光照强度范围内捕捉影像的能力,单位以dB或以比例计算。这代表一个影像中同时包含高照度与暗区。
传感器的实际动态范围由像素的满电位井容量决定,也就是像素饱和前所能承载的电子数量。将容量除以读取噪声,便能将比例转换为以dB为单位的值。
通常利用PTC(Photon Transfer Curve)测试法来确定动态范围,画出噪声与电位井容量的关系曲线。
然而,这并不代表组件的动态范围,只是说明流排宽度所能代表的潜在范围,而没有考虑传感器效能因素。
I/O标准也非常重要,不仅用来输出像素数据,亦用来输出指令和控制接口。这与帧率有关,例如LVCMOS界面不适用于高帧率应用,但却可用于简单的摄影机。随着帧率、分辨率和每像素位数的增加,影像传感器正朝向采用LVDS系列或SERDES技术的专用高速串行链的趋势发展。
现在已经探讨了影像传感器的多个重要观点,另一个尚未考虑的则是彩色或单色传感器。无论选择彩色或单色,皆取决于应用场合。
需在每个像素上使用贝尔图形,在一条在线交替变换红和绿色,并在下一条在线交替蓝和绿色(绿色用得较多是因为人眼对绿色波长较为)。这意味着要对接收到的光子进行滤波处理,使每个像素只接收所需波长的光子。用户可以针对影像进行后续处理,以决定像素颜色,并用不同颜色围绕像素来重建每个像素上的色彩,且不会降低影像分辨率。
彩色传感器使重建和输出影像所需的图像处理链变得复杂。此外,贝尔图形确实会导致分辨率降低,但没有想象中差,通常降幅为20%。
由于影像数组上没有贝尔图形,因此每个像素能接收所有光子。如此可提升影像的灵敏度,使影像的读取更简易,因为不会产生颜色重建所需的去马赛克效应。
经选择我们决定使用CIS组件,属于复杂的系统单芯片。因此,还必须考虑以下与读取模式和整合时间相关的问题。
意指读取前像素的时间。在较简单的CCD系统上,须要接近电子装置在组件外执行该时序。然而对于CIS组件而言,整合时间可透过指令接口由缓存器来配置,然后CIS组件可针对常用的两种读取模式精确地执行整合时间。
此种模式下,所有像素同时接受光照,然后读取。由于所有像素同时读取,因此会增加读取噪声。此模式是用于若针对快速移动物体进行拍摄快照。
此种模式下,进行逐行和读取。此模式的读取噪声较小,然而在捕获快速移动物体较不如全局快门模式。
选择合适的传感器之后,在进行系统开发的过程中还须考虑和解决诸多挑战。除了技术挑战之外,开发系统还会面临时间压力,确保产品在既定时程上市。
使用者必须根据时间,了解开发过程中哪部分活动能带来附加价值,接着做出正确的选择,并厘清哪部分应该自行开发(以能创造附加价值的增值作业),哪部分可以购买商用现成产品(COTS)或委外代工。聚焦于附加作业及运用硬件、软件和FPGA 层级的IP模块,是满足上市时程的重要促成因素之一。
除了上市时程的,嵌入式视觉系统开发过程中还必须考虑尺寸、重量、功耗和成本(SWAP-C)要求。什么主导并支配系统内的SWAP-C,取决于具体应用领域,例如手持设备在功耗方面的必备条件,相较于自动驾驶辅助系统更为严格。然而,就自动驾驶辅助系统而言,由于必须生产几百万台,因此解决方案的成本便成为主要考虑因素。
倘若想在尺寸、重量、功耗和成本方面获得良好的成效,必须设法让传感器和处理系统更紧密的结合,成为使用数量更少但功能更强的整合型组件。
每种应用领域都具有不同附加价值及不同的尺寸、重量、功耗和成本考虑,因此几乎所有嵌入式视觉系统都须要执行图像处理序列。此序列可与所选的传感器建立接口连接,并执行所需的操作,以便产生适合进一步加工或直接透过网络传输的影像。基本的图像处理序列包含:
序列在图像处理管线中针对接收的影像执行和应用算法。算根据应用的不同而变化,不过,有一些常用的图像处理算法可用来提高对比度、检测影像中的特性、目标或运动,或校正模糊影像。
这些算法应该在一个架构内被开发,以在最短时间内将产品推向市场,并鼓励重复使用,以降低非重复性和重复性之工程成本。以下为几种应考虑的现成架构:
赛灵思的一款设计,开发人员借助该可在Zynq或 UltraScale+ MPSoC组件的ARM处理系统中执行编写的C/C++算法,分析基准程序代码特性以找出效能瓶颈,接着利用赛灵思高阶合成技术,将瓶颈转换至硬件支持的IP,并在组件的可编程逻辑(PL)部分中运行。
若采用FPGA或All Programmable SoC方案时,将这些架构与HLS结合使用,能够高效开发出嵌入式视觉应用,并藉由硬件回快速演示。
1.利用视讯图形数组(VGA)、高画质多接口(HDMI)、串行数字接口(SDI)或DisplayPort等标准将影像输出到显示器。许多电动车采用触控式显示屏幕,以便对系统进行控制和配置。
对于绝大多数选项而言,在完成图像处理链后,皆须确定影像格式化方式。此时,使用者须要决定是否使用如MPEG-4 Part 10高阶视讯编码(H.264)或高效率视讯编码(H.265)等产业标准影像/视频压缩算法,以便对影像进行编码,而这些执行方案通常被称为编译码器。编译码器能提高通讯和网络带宽的使用效率,或降低实现影像高保真度所需的储存空间,因为编码通常会导致影像失真。若因使用编译码器促使影像失真且无法被接受,还可按原始格式传送和储存影像,或以无损格式进行编码。
大多数编译码器所使用的色彩空间都与影像传感器输出的色彩空间(前提是系统使用彩色组件)不同。嵌入式视觉中主要使用的色彩空间为:
常用的YUV格式为YUV4:4:4和YUV4:2:2。两种格式的区别在于4:4:4 格式下,每像素由8位表示,可得到24位像素;而在4:2:2格式下,U值和V值在像素之间共享,可得到16位像素,同时可节省储存空间。
首先是在边缘端执行,亦即在嵌入式视觉系统内执行。在边缘端的执行可提高系统的功耗和处理/储存要求,但能够实现更快的响应速度。在边缘端的处理将成为大部分嵌入式应用中的主导应用,例如自动驾驶辅助系统、机器视觉等。
其次是在云端执行则需要嵌入式视觉系统捕捉影像,并且利用网络技术将影像传送到云端。可在云端处理的典型应用,包括医疗影像或科学应用。这类应用的信息处理非常密集,且毋需实时结果。
为实现图像处理链,嵌入式视觉系统的核心需要一个处理核心,不仅须控制所选的影像传感器,还要能接收和执行图像处理管线,并通过指定网络基础设施传送影像,或发送到选定的显示器。诸多严苛的要求导致经常必须选择FPGA,或者使用如Zynq组件的All Programmable SoC。
Zynq组件将两个高效能ARM A9处理器与FPGA架构结合,让处理系统(PS)能够用来透过GigE、PCIe或CAN等接口与主机系统连接,同时执行系统的一般管理和日常事务。组件的另一半,即可编程逻辑(PL),可用来接收和处理影像,并充分利用FPGA架构的平行处理特性。若影像被要求通过网络基础设施传送,便能使用Zynq中的直接内存访问(DMA)控制器有效地将影像数据从PL移动到PS DDR内存。当影像移到PS DDR内存内,便可进一步被所选传输媒介的DMA控制器使用。
当然,一旦影像位于PS DDR内,高效能A9处理器亦可提供进一步的处理操作。Zynq架构的特点在于将处理后的影像从PS DDR移回PL中的影像管线。
许多嵌入式视觉系统还要求能整合更多传感器数据,以便更佳地感测。包括使用许多同类型传感器扩大视野,例如自动驾驶辅助系统的全景功能,或者整合多个不同类型的传感器,提供可见光谱下无法看到的视觉内容,如在一般影像传感器数据上覆盖红外线信息。
在很多应用情境下,需要将嵌入式视觉应用的输出与其他传感器数据进行融合,让产生的影像包含多个不同传感器信息。最简单的传感器融合应用是将不同频谱的影像结合,例如将可见光与红外线融合以实现更好的夜视效果。
传感器融合另一项更加复杂的应用是,将影像系统、全球定位卫星系统(GNSS)、数字地图信息,以及不同波长下运行的其他传感器(例如雷达)进行融合,以确定另一辆汽车的相对,避免汽车互相碰撞。
由于要将不同系统融合在一起并撷取信息,因此传感器融合对处理器的条件要求非常高。All Programmable SoC解决方案能够与多个传感器建立接口连接,以及平行处理信息,提升数据传输量,因而在许多方面具备显著优势。