1. 引言
高光谱仪是一种物质结构和成份分析的测量仪器,它获取到的高光谱图像数据包含了被测物的图像信息与光谱信息,在物质分析领域应用十分广泛 [1] [2]。随着传感器技术及微电子技术的发展,高光谱仪逐渐向微型化、便携化的方向发展 [1]。微型高光谱仪在食品分析、成分测定以及高光谱遥感成像等领域得到了广泛的应用 [1] [2] [3]。而这些应用往往要求快速实时的高光谱图像数据传输与处理。
由于高光谱仪分辨率的增加导致的高光谱图像数据量大,微型高光谱仪与终端进行数据传输时,一般采用有线传输方式进行传输,不能实现远程的实时数据采集与传输,其便携性大大降低。若通过WIFI无线传输高光谱图像数据,庞大的数据量会给无线传输带来巨大的压力,特别是搭载无人机的遥感应用中,对数据的无线实时传输要求更高 [3] [4] [5]。为此需要有效的高光谱数据压缩方法来减少大量冗余数据而不降低高光谱图像数据的质量,实现对高光谱数据的实时采集与传输。
针对上述问题,本文通过自行设计的微型高光谱仪,通过快照马赛克面阵高光谱传感器获取到的高光谱图像原始数据,根据其高光谱图像的特殊性提出了一种无损预测压缩算法,并用FPGA实现。压缩后的高光谱图像数据明显减少,减缓了高光谱图像数据无线传输的压力。
2. 微型高光谱仪
自主设计的微型高光谱仪包括微型高光谱仪外壳、硬件电路PCB板、镜头等。主控芯片采用Xilinx公司的Zynq-7020芯片,由PL (Programmable Logic)和PS (Processing System)两部分组成。PL部分为FPGA,主要负责驱动高光谱传感器采集待测物的高光谱数据,并将采集到的原始数据进行传输等;PS部分为2个ARM Cortex-A9核,主要负责控制高光谱数据的传输与处理。
微型高光谱仪在Zynq处理器的PS部分搭载了嵌入式Linux操作系统平台,为高光谱数据传输与处理提供了开发环境。同时,搭建了Socket服务器,终端通过Socket服务器对微型高光谱仪发送采集控制等各类指令,从而实现了微型高光谱仪与终端数据的无线交互。
自主设计的微型高光谱仪使用IMEC(比利时微电子研究中心)新型快照马赛克面阵高光谱传感器芯片作为其高光谱图像传感器 [6] [7]。该传感器在CMOS图像传感器晶圆上进行了处理,将感光面镀上不同波段周期性排列的滤光膜,其滤光膜以5 × 5 (25个光谱波段)或4 × 4 (16个光谱波段)的方式排列,传感器尺寸(高 × 宽)为1088 × 2048像素。与现有的高光谱图像线扫描传感器相比,其扩展的光谱范围具有独特的优势。快照马赛克面阵高光谱传感器芯片获取到的高光谱图像示意图如图1所示:
Figure 1. Snapshot mosaic area array hyperspectral image (5 × 5 arrangement)
图1. 快照马赛克面阵高光谱图像(5 × 5排列方式)示意图
在5 × 5排列方式下,将产生25个不同光谱波段,大小为216 × 409像素的单波段图像。其光谱分辨率为12 nm,成像速度可达340帧/秒,可满足高速实时高光谱数据采集的要求。每一帧高光谱图像数据大小约为2.2 MB,为降低传输带宽,加快图像传输速度,需对获取到的快照马赛克面阵高光谱图像数据进行压缩。
3. 基于快照马赛克面阵高光谱图像压缩方法
目前主要的高光谱图像压缩编码方法可以分为三类:基于矢量量化的压缩编码技术、基于变换的压缩编码技术和基于预测的压缩编码技术 [8] [9]。基于矢量量化可获得较大的压缩比,但是其复杂性较高,多用在有损压缩。基于变换的方法的主要原理是通过变换重新组织图像数据,在完整的高光谱图像数据三维立方体中进行变换。基于预测的方法利用图像中各像素间的相关性,使用当前已知像素灰度值对其相邻像素进行预测。
这三种方法大多处理的高光谱图像数据为一个三维立方体,它在普通的二维图像上增加了一层光谱维,表示图像的各个波段 [8] [9] [10] [11]。这些方法都有效地利用了高光谱图像的空间冗余与谱间冗余,但是常规的高光谱图像压缩方法都是基于上述高光谱图像数据立方体而提出的。对于快照马赛克高光谱传感器的特定结构,以及处理采集的图像的方式都有一定的限制。这是由于快照马赛克面阵高光谱图像的每个像素都包含单个波长信息,而相同的波长在垂直方向和水平方向每5个像素会重复出现。这导致同一波段中的相邻像素不对应于实际场景中的相邻像素,所以目前提出的方法不适用在快照马赛克面阵高光谱图像数据的情况。因此根据快照马赛克面阵高光谱图像的波段分布情况,提出了一种基于预测的无损压缩算法。其原理如图2所示。
Figure 2. Schematic of prediction-based lossless compression algorithm
图2. 基于预测的无损压缩算法原理图
该压缩算法包含两个功能模块:预测器与编码器。预测器的功能是为了消除高光谱图像数据间的冗余,编码器用来对消除冗余后的高光谱数据进行编码。
3.1. 预测器
根据微型高光谱仪马赛克面阵传感器获取到的高光谱数据的特点,可知图像的各个像素间存在空间冗余,通常可认为相邻像素之间满足一阶马尔科夫过程,所以可以利用同一波段的前一个像素来预测当前像素,并将真实值与预测值作差,得到预测残差。
以5 × 5的高光谱图像数据为例,将图像相邻的25个像素视为一个独立的“成像单元”。该“成像单元”完整包含了25个波段中各个波段的采样值,因此在压缩编码过程中,将其作为不可再分割最小单元。将图像分割为区域1、区域2、区域3、区域4的四个区域。具体区域划分如图3所示。
Figure 3. Hyperspectral image region division
图3. 高光谱图像区域划分
区域1代表图像的左上角5 × 5方块,该区域为图像各个波段成像的第一个像素,因此无法预测,只能对原始值进行编码;区域2为除去区域1以外的上边缘部分,该部分的像素可根据同一波段内的左侧相邻像素来预测;区域3代表图像中除去区域1以外的左边缘部分,该部分的像素可根据同一波段内的右侧相邻像素来预测;区域4代表图像除上边缘、左边缘以外的所有区域,该部分图像的像素由左侧相邻像素和右侧相邻像素同时预测。其余像素以此类推,各区域像素的部分预测值与预测残差如表1所示。
Table 1. Partial predictions and prediction residuals
表1. 部分预测值与预测残差值
3.2. 编码器
根据高光谱图像的预测残差的分布特性,本文采用了一种改进的k阶有符号数指数哥伦布编码。指数哥伦布编码是一种可变长前缀编码,其硬件实现简单并能快速产生码字,可达到很高的编码效率 [12] [13]。改进的k阶有符号指数哥伦布编码流程如图4所示。
Figure 4. Improved k-order signed Exp-Columbus coding flowchart
图4. 改进的k阶有符号指数哥伦布编码流程图
对于一个有符号数A,用1 bit来记录其正负号,1表示负,0表示正;然后将A的绝对值写成二进制形式,截去其低k位,得到二进制数M;将M + 1,得到二进制数N;接着得到N的位数n,在N前添加n − 1个0;最后在N后补上被截取的低k位,末尾补上符号位,至此完成一次编码。
4. 基于快照马赛克面阵高光谱图像预测压缩FPGA实现
结合快照马赛克面阵高光谱图像预测压缩原理,把算法根据模块进行划分,分别对各个模块进行FPGA实现。
4.1. 预测器的FPGA实现
由于快照马赛克面阵高光谱传感器“成像单元”的排列方式,用Verilog语言实现是较复杂的。为提高开发效率,优化RTL的资源消耗和数据吞吐速率,将预测器采用C++语言进行编写。C++语言部分描述代码如图5所示。
Figure 5. C ++ code diagram of Predictor part
图5. 预测器部分C++代码图
首先对每一列像素进行检测,判断其位置为左上角、上边缘、左边缘或右下角。若为左上角则不需要预测直接输出,否则对该像素进行相应的预测;然后将上边缘、左边缘或右下角像素根据像素所处区域对其预测值进行赋值;最后将此三个区域的真实值与预测值相减所得预测残差的绝对值进行输出。
完成C++编写的预测器后,通过Vivado-HLS软件建立HLS工程,将所编写好的C++代码添加进工程中,加入testbench的测试代码并选择相对应的FPGA芯片配置。将C++源代码进行验证、高层次综合与RTL验证后最终将RTL逻辑打包成HDL的IP核。这样就完成了预测器IP核的FPGA实现。
4.2. 编码器的FPGA实现
编码器的FPGA实现部分代码如图6所示。
Figure 6. Verilog code diagram of encoder part
图6. 编码器部分Verilog代码图
在编码时,设置指数哥伦布编码阶数k设为1。将二进制数的符号位放置在寄存器sig_r中,截取的低k位放置寄存器L中,剩下的数放置在寄存器Main中。将Main中数据加1后从高位到低位判断为1的最高位数,同时计算此数据位数M。最终得到的编码数据如图7所示。
Figure 7. Schematic diagram of encoded data
图7. 编码后数据示意图
5. 测试与分析
基于快照马赛克面阵高光谱图像FPGA预测压缩运用Vivado2018.3软件平台最终进行实现,其顶层模块原理图如图8所示。
采用Vivado2018.3自带的仿真软件进行仿真。其仿真波形窗口如图9所示。
其中string_len信号为图像编码后的所有码字长度之和,该值在编码过程中不断增加,直到编码结束。编码结束时,使能信号置低,其上方显示为预测编码所耗费的时间为17.404 ms。
Figure 9. Predictive compression FPGA simulation graph
图9. 预测压缩FPGA仿真图
将微型高光谱仪通过快照马赛克高光谱传感器采集到的五张用于测试的高光谱图像进行该方法进行压缩,得到压缩比如表2所示。
由上表测试数据可知,该FPGA高光谱图像压缩算法所获得的压缩比在1.7至2之间,适用于对快照马赛克面阵高光谱传感器图像数据的实时处理。
6. 结论
通过自主研制的微型高光谱仪,对由快照马赛克面阵高光谱传感器所采集到的高光谱图像数据进行FPGA高光谱图像预测编码压缩,压缩比在1.7至2之间,达到了实时压缩处理的目的。该压缩算法可缓解高光谱图像数据无线传输的压力,提升高光谱图像数据的实时分析与处理能力,扩展微型高光谱仪的应用范围。
基金项目
深圳技术大学校企合作项目(2018010802012);深圳技术大学校级科研项目(BSH201902286);深圳技术大学研究生校企合作研究基金项目(XQHZ201902);国家自然科学基金重点国际(地区)合作与交流项目(61620106016)。
NOTES
*通讯作者。