1. 引言
高光谱图像能够同时获取被测物的光谱与图像信息,不仅可以对待测物体进行定性与定量分析,还可以定位分析 [1] [2] ,很大的拓宽了光谱的应用范围。自1987年AVIRIS制成第一台成像光谱仪后,成像光谱仪的研制技术日渐成熟,应用也越来越多。高光谱图像在遥感方面可以分析大地的山川河里、矿物等信息 [3] [4] 。结合无人机技术,机载成像光谱仪用于植被、农作物生长情况的检测和病虫毒害的预防 [5] 。在农副产品检测方面,可用于对瓜果蔬菜进行水分、糖分的无损检测、农药残留的检测等 [6] [7] 。在医学研究方面,针对某些初期肉眼无法识别的皮肤病害,可以用光谱图像面对皮肤进行观察分析 [8] ,提前预防。目前成像高光谱仪巨大的潜在使用价值逐渐被发掘。
高光谱仪的微型化能给很多方面的使用带来便利,不再是只能在实验室完成采样分析工作,可以到超市、农田、郊外等地方完成实验。通常高光谱图像的采集使用光栅分光,光路的搭建占用的很大的空间,加上数据采集、处理的电路部分,使高光谱采集系统体积很难实现微型化。随着微机电的技术迅速发展,CMOS高光谱传感器的研制逐渐成熟 [9] [10] 。CMOS高光谱传感器自身可实现分光,不要另外搭建分光系统,且体积和普通CMOS传感器体积相同。欧洲微电子研究中心(IMEC)研制的CMOS高光谱传感器采集速度快、光谱波段窄、分辨率高等众多优越性能正好满足我们的需求 [11] 。
随着高光谱图像应用越来越广泛,其使用价值进一步被发掘,高光谱视频的需求也逐渐强烈。当需要测量超市里的水果、农田中的农作物时,如果能够现场测试会很方便,不必把测试样品带回实验室,节省大量时间。如果能够远程实时查看,不在测试现场的人也能够观察到测量结果,使用将更加方便。当前大多数高光谱采集系统通过光谱仪主机采集数据,然后由上位机来对数据进行处理,不能实现远程实时高光谱数据的采集且对上位机的处理性能需求较高 [12] [13] [14] 。
为了解决上述问题,本文基于CMOS高光谱传感器,设计实现了一套微型光谱仪。光谱仪借助Zynq的强大处理性能,采集并处理高光谱数据,通过千兆以太网或WIFI将数据传输到网络中。光谱仪内部有网络服务器,用户在智能终端的浏览器中输入特定的网址后,可远程访问光谱仪,实时预览被测样本高光谱视频。
2. 系统方案及硬件结构设计
本文的高光谱图像采集系统由高光谱传感器、主控芯片、存储模块、通信模块等部分组成,系统框架如图1所示。
已设计完成的高光谱微型光谱仪实物图如图2所示。外形尺寸为11 × 6 × 7 cm,小巧便携,能够拓宽光谱仪的应用场景和适用范围。
高光谱传感器由欧洲微电子研究中心(IMEC)研制,如图3所示。该传感器在普通CMOS芯片感光面上镀不同的光谱通带滤光膜达到分光效果,芯片总像素大小为2048 × 1088,每5 × 5个像素为一个单元,单元中的25个像素采集不同的光谱波段信息,每个波段的光谱图像大小为408 × 217。高光谱传感器测量波段范围700~950 nm(NIR),光谱分辨率为10 nm,空间分辨率为5.5 um,时间分辨率为2.9 ms。
主控芯片使用Xilinx的Zynq-7020,该芯片属于Xilinx公司的可扩展平台Zynq系列。Zynq分为PL (Programmable Logic)和PS (Processing System)两部分,PL为大面阵FPGA,PS为2个ARM Cortex-A9核 [15] 。Zynq集成了ARM处理器的软件可编程性与FPGA的硬件可编程性。PL与PS在同一个芯片内,所以比单独FPGA和ARM通过PCB板上的布线通讯速度要更快、更稳定,免去了大量的芯片外围基础电路节省大量空间。

Figure 1. Hyperspectral acquisition system block diagram
图1. 高光谱采集系统框图

Figure 2. Hyperspectral micro-spectrometer
图2. 高光谱微型光谱仪
本系统的内存空间共1 GB,芯片采用2片型号为IS43TR16256AL-125KBLI的DDR3 SDRAM,提供了足够的内存空间供高光谱图像数据缓存。通讯接口包括WIFI和网口,网口使用千兆以太网,型号为JFM3811F-FL01-4F,连接在Zynq的ENET0口,WIFI为USB转WIFI,连接在Zynq的USB0口。
高光谱传感器与Zynq间采用LVDS (Low Voltage Differential Signaling)的方式进信号传输。LVDS可以很好的屏蔽干扰,提高信号传输时的稳定性和可靠性。电路板设计为12层高器件密度PCB,为了节省空间PCB中间有一部分为软板,这样PCB弯折后可以节省很大空间,如图4所示。
Zynq中的FPGA硬件部分用VIVADO2015.4设计,ARM软件部分用Xilinx SDK2015.4设计。FPGA实现高光谱传感器驱动的实现、DMA高速数据存储。ARM实现SPI配置时的具体参数传递、帧请求的控制、DMA的工作模式设置等一些控制。ARM的控制信号通过片内AXI总线传递到FPGA中。
3. 高光谱传感器的驱动
高光谱传感器数据采集驱动结构如图5所示。

Figure 5. Hyperspectral sensor drive block diagram
图5. 高光谱传感器驱动框图
包括SPI配置模块、LVDS信号接收模块、控制模块、串并转换模块、缓存FIFO等组成。
SPI配置模块配置高光谱传感器芯片的工作模式、曝光时间、像素采集深度等一些参数。控制模块控制高光谱传感器的电源、帧请求信号、时钟信号、复位信号等。因为高光谱传感器输出数据信号是以差分信号的形式送达Zynq,所以需要LVDS信号接收模块将差分信号转换为普通信号。高光谱传感器输出的数据是串行数据,为了存储与方便处理需要对数据串并转换。缓存FIFO模块对数据进行缓存,等待DMA将数据转移到DDR中。
高光谱传感器数据采集驱动的流程如图6所示。首先控制模块打开高光谱传感器电源,提供时钟,复位结束后,SPI配置模块开始配置高光谱传感器各种参数,控制模块发出帧请求信号后,高光谱传感器开始输出高光谱图像数据,LVDS信号接收模块将接收到的数据处理成普通信号,然后串并转换模块数据转为32 bit并行数据缓存到FIFO中。其中LVDS信号接收模块、串并转换模块为二级流水线并行工作,减少处理时间,节省FPGA中数据的缓存。
本文通过SPI将高光谱传感器像素采集深度设置为10 bit,串并转换模块首先需要将串行数据转换为10 bit的并行数据。高光谱传感器总共有17路输出,其中16路为数据通道,1路为控制通道,这17路数据是同时输出,如果能正确采集控制通道的数据,则其余16路数据通道也能正确采集。
当高光谱传感器处于空闲状态时,控制通道输出固定数据0X55,串并转换模块在高光谱传感器处于空闲状态时就开始接收串行数据,用10位宽的寄存器接收串行数据,每接收10 bit数判断当前接收的数据是否为0X55,如不是,则跳过一个数据再接收10个串行数据,再次判断当前接收数据是否为0X55,这样一直重复直至接收到0X55,寄存器不再跳过数据开始连续接收,其余16路开始串并转换的位置通控制通道相同,这样每次串并转换后的10 bit数据正好是一个完整的像素值。串并转换原理如图7所示,红圈为10 bit寄存器,每次左移一次,直到寄存器值为0X55。
由于DMA传输数据位宽32 bit,需要将10 bit位宽的像素值拼接为32 bit位宽的数据缓存到FIFO中。10与32的最小公倍数为160,首先将16个10 bit数拼接为160 bit,然后将160 bit数切分为5个32 bit数,原理示意图如图8所示。
4. DMA高速数据存储
FPGA中构建DMA,ARM通过AXI总线控制DMA的初始化、传输长度、传输宽度等参数的设置。

Figure 6. Hyperspectral data acquisition process
图6. 高光谱数据采集流程

Figure 7. Serial-to-parallel conversion
图7. 串并转换示意图
Zynq中有AXI_HP (AXI Hight Performance)口,专门的高速数据通道,数据可直接在FPGA和DDR间传输,AXI_HP口可支持1866Mb/s DDR3。
工作流程如图9所示。首先ARM通过AXI向FPGA发出复位,复位结束后,ARM通过调用自己编写的SPI函数,将要设置的工作参数配置到高光谱传感器中。初始化DMA,设置DMA的传输长度为一帧高光谱图像数据总长度,设置传输位宽和数据在DDR中的保存地址,然后打开DMA等待数据。ARM控制FPGA发出帧请求信号,高光谱数据经过接收初步处理后到达缓存FIFO中,DMA将FIFO中的数据通过AXI_HP口保存到DDR中,完成一次传输。因为FPGA工作速度远远高于ARM的速度,所以要先配置DMA等待数据的到来,再发帧请求。如果帧请求先发,有可能高光谱数据到达缓存FIFO中时,DMA还为准备好,导致FIFO被数据填满而后续的数据就会丢失。
5. 服务器搭建
为了实现远程实时预览高光谱视频,ARM系统中必须搭建一个嵌入式网络服务器,这样用户不论在

Figure 9. DMA data storage flow chart
图9. DMA数据存储流程图
哪里只需要通过浏览器访问该服务器即可实时动态预览高光谱视频。
Boa服务器具有小巧高效、性能高、源代码开放等优点,嵌入式WEB服务器工作流程如图10所示,可分为三步。
Ø 初始化系统资源,此阶段主要包括创建TCP/IP套接字、绑定监听端口号、等待用户请求。
Ø 解析用户请求,判断是否静态请求,倘若是静态请求则返回静态HTTP静态文件。否则执行对应的CGI程序,启动相对应的应用程序、驱动程序和硬件设备,最后将处理结果以HTTP协议报文格式发送给用户。
Ø 关闭进程、断开连接以及释放所用的资源。
HTML交互界面设计如图11所示,左侧按钮控制光谱仪工作状态、工作参数、预览光谱视频通道的选择等。当需要全通道光谱图像时点击右侧第二个按钮即可采集全部通道的光谱图像。因为高光谱视频数据量大,当把所有通道的高光谱图像同时远程传输时,因为网络的原因可能导致卡顿等现象,为了优化系统的流畅性,当用户实时预览高光谱图像时,只显示某一通道波段的光谱图像,用户可选择25个通道中的任意一个进行观察,可随时切换通道,服务器中设置每隔20 ms发送一张光谱图像,即帧率为50 FPS,观看起来非常流畅。当需要全部通道光谱图像时,点击右侧按钮可捕获一张全通道光谱图像并显示在浏览器中。
6. 测试与分析
光谱仪放置于某个实验室,通过其它实验室电脑上的浏览器进行测试。调整好光圈和焦距,打开浏览器输入网址,单个通道光谱图像显示在界面中,随时可通过网页参数设置来选择某个通道的光谱图像,因为服务器中帧率设置为50 FPS,所以观察到光谱视频无任何卡顿现象非常流畅。图12为单通道光谱图像,图中物体为储物盒和魔方。
当点击右侧第二个按钮时,可以看到界面中显示了25个波段的光谱图像,如图13所示,其中每幅
图像都是某个特定波段的下的光谱图像,可以观察到25幅图像都略有差别各不相同。
本文的高光谱视频帧率为50 FPS,高光谱芯片空间分辨率为5.5 um,光谱分辨率为10 nm,综上可知高光谱视频的时间分辨率为20 ms,空间分辨率为27.5 um,光谱分辨率为10 nm。
7. 结论
本文通过Zynq驱动高光谱传感器采集光谱图像数据,Zynq对采集到的数据进行初步转换处理,保存到DDR3 SDRAM中,当用户访问光谱仪内网络服务器时,服务器将数据由DDR3 SDRAM通过网络传输到浏览器中显示出来,形成高光谱视频。本系统解决了通常高光谱采集系统不便携的问题,外形尺寸仅为11 × 6 × 7 cm。借助Zynq的强大处理性能,实现了高光谱图像数据的本地采集、处理和传输。本文解决了远程光谱视频实时动态预览的问题,连接上WIFI便可实时回传高光谱动态图像。摆脱了工作环境的束缚,使本系统适用范围更加广泛,促进了高光谱微型光谱仪走出实验室,实现民用化,具有重要的潜在使用价值。
基金项目
深圳市基础研究项目(JCYJ20150324141711612, JCYJ20150930104948169, JCYJ20170302142617703);国家自然科学基金项目(61227802, 61605119);深圳技术大学科研启动项目(201702)。
NOTES
*通讯作者。