快照马赛克高光谱图像CCSDS压缩器的FPGA实现

2022-04-28 04:18吕德远黄浩文赵志刚
光学精密工程 2022年8期
关键词:快照马赛克排序

吕德远,黄浩文,曾 珉,曾 旭,赵志刚,*

(1.深圳技术大学 新材料与新能源学院,广东 深圳 518118;2.深圳大学 物理与光电工程学院,广东 深圳 518052)

1 引 言

高光谱成像技术结合了数字成像和光谱学的优势[1],可以用更高的精度和细节表征场景中的对象,能够应用于遥感[2]、工业制造[3]、医学[4]等领域。近年来,欧洲微电子研究中心(IMEC)推出的新一代快照马赛克高光谱成像技术,通过在CMOS感光面表面沉积不同波段的滤光膜,可同时获取25个不同光谱波段的高光谱数据[5,6],使得高光谱技术在手持设备或小型无人机遥感领域的应用成为了可能[7]。

由于包含了多通道的光谱数据信息,高光谱图像通常数据量巨大[8],对数据传输带宽要求非常高。国际空间数据系统咨询委员会(The Consultative Committee for Space Data Systems,CCSDS)于2012年5月推出了多光谱/高光谱无损压缩标准CCSDS-123.0-B-1[9,10],并于2019年2月升级到CCSDS 123.0-B-2标准[11]。新标准增加了对近无损压缩的支持并向下兼容,拓展了适用范围[11],在减少数据带宽、减少缓存和存储的需求以及减少数据传输时间等方面进行了优化[12],适合在卫星、无人机或微型无线高光谱采集设备上应用[13]。

但是CCSDS 123.0-B-2标准新引入的近无损压缩功能会导致算法在FPGA硬件实现时无法有效使用流水线化和并行化技术[14,15],降低了数据吞吐率,限制了其在快照马赛克高光谱图像压缩中的应用。本文通过改进BIP(Band-Interleaved Pixels)排序算法,尝试在CCSDS 123.0-B-2标准近无损压缩的FPGA硬件实现中引入流水线化和并行化技术,以提高系统的压缩效率。

2 CCSDS 123.0-B-2标准分析

CCSDS 123.0-B-2标准适用于由多光谱和高光谱成像光谱仪采集的三维光谱数据集的无损/近无损压缩,支持从2位到32位整数样本值sz,y,x所构成的三维矩阵(Nx,Ny,Nz)数据集。该标准由预测器和编码器两部分组成,原理图如图1所示。

图1 CCSDS 123.0-B-2标准的原理图Fig.1 Schematic diagram of CCSDS 123.0-B-2 standard

预测器(Predictor)使用FLEX(Fast Lossless Extended)算法,通过待测样本的三维邻域获得对应的预测值,计算数据残差以达到减少数据量的目的。预测器典型邻域如图2所示,图中P为取值范围为[0,15]的用户自定义整数。

图2 预测器典型邻域Fig.2 T ypical neighborhood of the predictor

预测器的预测过程如下:首先计算同一光谱通道z内与样本sz,y,x相邻的样本代表值s″z,y,x的局部和σz,y,x,然后通过局部和获得当前光谱通道的方向局部差和及先前光谱通道的P个中央局部差dz,y,x。上述四种局部差共同组成局部差向量Uz(t)的各个分量。局部差向量Uz(t)使用与其具有相同维度的权重向量Wz(t)加权和来计算对应的预测样本值,权重向量会随着高光谱图像的特点自适应更新。预测样本值与实际样本值做差得到的预测残差Δz(t)使用步长为2mz(t)+1的均匀量化器进行量化,计算有符号整数量化器索引qz(t),使得近无损重建高光谱图像时,可以获得误差不超过mz(t)的样本sz(t)。当mz(t)=0时,预测器为无损压缩。最后,有符号量化索引qz(t)被映射为D位无符号映射量化索引δz(t)作为预测器的输出。

编码器(Encoder)将δz(t)编码为一种可变长二进制比特流文件,该文件在图像重建时可完整恢复δz(t)。文件由可变长文件头和文件主体组成,可变长文件头包含压缩算法和被压缩图像的相关参数,文件主体则是映射量化索引的编码。

CCSDS 123.0-B-2标准推荐了三种编码器实现方式[11],其中样本自适应编码器的泛用性更强。该编码器是基于指数哥伦布(Golomb-Power-Of-2,GPO2)编码的改进编码算法。编码算法的原理是使用k阶长度限制GPO2编码对非负整数δz(t)进行编码,可以将δz(t)表示为:

对δz(t)的编码实际上就是对u和r的计算,其中u=(向下取整),r=δmod2k(取余)。编码器通过对各光谱通道都设置了单独的累加器∑z(t)和计数器Γz(t)获得k值进而实现对δz(t)的编码。

CCSDS 123.0-B-2标准最重要的优势在于支持近无损压缩,即一种能够控制重建图像和原始图像之间的最大误差的有损压缩。考虑到新加入的近无损压缩功能会使得图像重建时无法使用原始值恢复高光谱图像,该标准引入了样本代表值的计算,在每个样本量化后计算出样本代表值s″z,y,x用于下一个样本的预 测。但是引入样本代表值后,在FPGA实现的预处理阶段使用推荐的样本输入排序方式时,会因为反馈环路过长、数据依赖不满足等原因,导致对快照马赛克高光谱图像的压缩吞吐率降低。本文将在CCSDS 123.0-B-2标准的FPGA实现中对推荐的样本输入排序算法进行改进,以克服这一不足。

3 CCSDS 123.0-B-2标准的FPGA实现

3.1 排序预处理的改进

在使用FPGA对高光谱图像进行压缩实现前,首先需要确定各光谱通道数据的样品输入顺序。CCSDS 123.0-B-2标准推荐了BI(Band Interleaved)和BSQ(Band Sequential)两种样本输入排序方式,其中BI排序又可分为BIP(Band-Interleaved Pixels)排序和BIL(Band-Interleaved Lines)排序两类。图3为三种推荐样本输入排序方式的原理示意图。

图3 三种推荐的样本输入排序方式原理示意图Fig.3 Schematic diagram of three recommended sample input sequencing methods

由于CCSDS 123.0-B-2标准包含了“样本代表值反馈”闭环反馈环路,在使用BSQ排序和BIL排序进行硬件实现时,会有如图4所示的时序。从图中可以看到,只有在完成整个反馈回路得到Sample1的样本代表值s″z(t)后,才能开始Sample2的压缩。这就导致吞吐率受限于处理“样本代表值反馈”环路所需时钟周期,使得平均需要十几个时钟才能完成对一个样本的压缩,大幅降低了压缩器的吞吐率。

图4 BSQ和BIL排序的局部时序图Fig.4 Partial timing diagram of BSQ and BIL sequencing

BIP排序的优势在于硬件实现时不需要等待整个反馈回路完成,就能开始下一个样本的压缩,可以克服BIL和BSQ排序造成的吞吐率低的问题。但是,CCSDS 123.0-B-2标准对样本sz,y,x的预测需要使用如公式(2)所示的局部差向量Uz(t),而Uz(t)的计算用到了样本sz-1,y,x的代表值s″z-1,y,x。由于BIP排序应用在快照马赛克高光谱图像的流水线压缩时,sz-1,y,x必须在sz,y,x前一个时钟的开始时刻计算。如图5所示,这也就意味着在对样本sz,y,x预测时,无法得到样本代表值s″z-1,y,x,根据数据的因果关系,将导致无法进行并行化压缩处理。

图5 sz,y,x在BIP排序下的时序示意图Fig.5 Timing diagram of sz,y,x under BIP sequencing

本文通过改进的BIP排序方式,将BIP排序在x和z方向上的扫描方式由顺序扫描改为交错扫描,可以有效解决上述问题。如图6所示,交错扫描方式通过分离各个光谱通道的压缩顺序,将不同光谱通道相同空间位置样本的处理时间间隔由1个时钟周期改为Nz+1个时钟周期,克服了推荐BIP排序存在的数据依赖问题,同时保留了BIP易于流水线处理、吞吐率高的特点,使得基于新标准实现的FPGA压缩器平均一个时钟可以动态处理一个像素样本。

图6 改进的BIP排序Fig.6 Improved BIP sequencing

3.2 压缩器的FPGA实现

CCSDS 123.0-B-2标准的硬件实现架构如图7所示,架构主要由预测器和编码器两部分组成,使用了多个缓冲器和存储器对数据进行暂存和同步。

图7 压缩标准的硬件实现架构Fig.7 Hardware implementation framework for compression standards

在典型的快照马赛克高光谱图像采集系统中,样本会以帧的形式逐个输入到FPGA上部署的压缩器,每个时钟周期都会有一个高光谱图像样本被传输到输入缓存中。预测器按照改进的BIP排序读取样本并开始流水线处理,包含局部和与局部差计算、点乘、预测、量化、映射、权重更新和样本代表计算等一系列操作。预测器还会构建多个存储器,用于储存计算过程中所用到的权重向量、样本代表值和局部差向量等中间数据。编码器则负责样本自适应熵编码。系统的输出缓存将二进制编码重新组织为标准BIP排序,使得通用的解压缩器能够无损或近无损重建原有高光谱图像。图8为本文FPGA硬件实现方案对应的流水线时序。

图8 流水线时序图Fig.8 Timing diagram of the pipeline

使用Verilog语言将上述压缩器的硬件设计在Vivado2019.2集成开发工具中综合实现,使用Xilinx xc7z020clg400-2 FPGA实现的压缩器顶层结构如图9所示。本设计不依赖外部存储资源,共使用了6 731个六输入LUT,2 711个触发器,9.5个4 KB BRAM,以及11个DSP48,占用xz7020逻辑资源少于10%,总的逻辑资源使用情况如表1所示。

图9 压缩器的顶层结构图Fig.9 Top-level structure diagram of compressor

表1 硬件设计的资源利用率Tab.1 Resource utilization for hardware design

3.3 快照马赛克高光谱图像输入缓存模块的设计

快照马赛克高光谱图像由欧洲微电子研究中心(IMEC)推出的新一代的快照马赛克高光谱传感器采集,它通过在CMOS感光面表面沉积不同的滤光片实现快照马赛克高光谱图像的获取。如图10所示,由相邻的25个像素构成一个“成像单元”,可同时获取到25个不同光谱波段的8位光谱数据,传感器像素尺寸为1 088×2 048。

图10 快照马赛克高光谱图像特点Fig.10 Characteristics of snapshot mosaic hyperspectral image

受限于上述独特的“成像单元”,针对普通光谱数据立方体提出的CCSDS 123.0-B-2标准应用于快照马赛克高光谱图像的压缩时有一定限制。因此本文不再使用快照马赛克高光谱图像内相邻像素作为上下文邻域计算局部和与局部差,而是利用“成像单元”每5个像素规律排布的特点的调整邻域,改进邻域后的局部和和局部差计算方式如式(3)所示:

为了计算改进后的局部和与局部差,CCSDS 123.0-B-2标准在FPGA实现过程时使用输入缓存模块获取改进后的上下文邻域。如图11所示,该模块使用BRAM开辟了一个深度为2×NZ×NX的双端口RAM对样本代表值进行暂存和读出,当压缩开始时,写数据写地址先使能,当写入数据量达到NZ×NX时,读数据和读地址开始使能。从RAM读出的样本代表值经过FIFO0缓存后得到s″z,y,x-5,s″z,y,x-5被传入深度为达NZ×(NX-2)的FIFO1得到s″z,y-5,x+5;同理使用NZ的FIFO2、FIFO3依次获得s″z,y-5,x和s″z,y-5,x-5。

图11 输入缓存模块结构Fig.11 Structure diagram of Input cache module

输入缓存模块通过四级流水线提高处理带宽,第一级流水线用来生成改进的BIP排序的(z,y,x)序列,它会随着每个时钟更新;第二级流水线通过计数器生成双端口RAM的写地址,将(z,y,x)坐标映射为对应位置样本在双端口RAM内的地址;第三级流水线用来对RAM进行写入和读取数据;第四级流水线结合马赛克面阵高光谱图像的特点,获得(z,y,x)处样本的上下文邻域,输出给局部和与局部差计算模块。

4 压缩器FPGA实现的测试结果

目前快照马赛克高光谱图像没有类似AVIRIS、AIRS等的国际通用高光谱遥感图像测试数据集,因此本文使用课题组自行研制的快照马赛克微型高光谱仪进行了测试数据的采集。图12为四种不同场景下所采集的快照马赛克高光谱图像。

图12 四种场景下的快照马赛克高光谱图像Fig.12 Snapshot mosaic hyperspectral images in four scenarios

4.1 时序仿真结果

使用Vivado集成的仿真工具Simulator对FPGA设计进行功能仿真和时序仿真,图13为激励模块设计。

图13 激励模块设计Fig.13 Design of testbench module

其中sys_clk和sys_rst_n为系统时钟信号和系统复位信号。复位信号拉高后,Testbench在每个时钟的上升沿都会向压缩器发送一个高光谱样本值。当压缩器获得第一个样本的压缩编码后,二进制编码写入信号code_write会拉高,通过code_string_o信号和code_length_o信号将编码值写入压缩码流文件,所有编码完成后,code_write将拉低以停止码流写入。

以River1的测试结果为例,图14是使用CCSDS 123.0-B-2标准推荐的BSQ排序压缩器的时序,图15是使用改进BIP排序压缩器的时序。

图14 基于BSQ排序压缩器的时序图Fig.14 Timing diagram based on BSQ sequencing compressor

图15 基于改进BIP排序压缩器的时序图Fig.15 Timing diagram based on improved BIP sequencing compressor

从时序图可以看到,基于改进BIP排序的压缩器平均一个时钟周期就可以完成一个样本的压缩编码,这是改进排序算法易于流水线和并行化处理的特点所带来的好处。表2列出了两种排序方式下压缩器在100 MHz时钟下的性能对比。结果表明,虽然这种改进的排序方式不会改善压缩性能,但是会大大提高压缩吞吐率,压缩一张快照马赛克高光谱图像所需时间仅为22.2 ms,远小于原BSQ排序压缩器所需的242.9 ms,数据吞吐率约提高至11倍。

表2 压缩器性能对比Tab.2 Compressor performance comparison

4.2 无损压缩性能

表3列出了本文所实现的压缩器对四种场景下的快照马赛克高光谱图像的无损压缩性能。压缩性能通过bits/sample定义,即压缩后二进制码流长度除以原始图像中的样本数NX·NY·NZ,其数值越小表明压缩效果越好。实验结果显示,最终的压缩性能在2.66~4.30 bits/sample之间,优于原CCSDS 123.0-B-1标准下2.68~4.32 bits/sample的压缩性能。

表3 无损压缩性能Tab.3 Lossless compression performance(bits/sample)

4.3 近无损压缩性能结果分析

近无损压缩是一种能够控制重建图像和原始图像之间的最大误差的有损压缩。接下来将介绍压缩器近无损压缩性能,峰值信噪比(PSNR)和光谱角(SA)测试结果。

4.3.1 近无损压缩性能

表4为当绝对误差极限az=16,各场景下快照马赛克高光谱图像的近无损压缩性能。

表4 当az=16时,压缩器的近无损压缩性能Tab.4 When az=16,the near-lossless compression performance of the compressor(bits/sample)

从表中可以看出压缩器的近无损压缩性能约在1~3.70 bits/sample之间,远高于无损压缩性能。但是,近无损压缩性能的提高是以牺牲图像的保真度而获得的。图16显示了不同压缩设置下图像细节的损失。

图16 不同设置下细节的损失Fig.16 Loss of detail under different settings

4.3.2 PSNR测试

PSNR是衡量有损压缩图像失真程度的最常用指标,通常来讲PSNR值越小压缩后的图像质量越差。它的计算方式如公式(4)所示,其中MSE为均方误差,L为量化等级。

表5给出了3幅快照马赛克高光谱图像在不同的相对误差极限rz下压缩处理后的PSNR值。随着相对误差极限rz的增加,PSNR值逐渐减小,表明CCSDS 123.0-B-2标准近无损压缩性能的提高是以图像失真为代价。

表5 当az=16时,不同压缩设置下的PSNR值Tab.5 When az=16,PSNR under different compression settings

4.3.3 SA测试

SA用来表征两个高光谱数据之间光谱的相似性,两光谱向量间的夹角越小,两光谱越相似。定义如公式(5)所示。

图17给出了快照马赛克高光谱图像SA的变化。由图17可知,随着相对误差极限rz的增大,SA增大,压缩图像与原始图像的光谱相似程度越差,表明近无损压缩会破坏快照马赛克高光谱图像包含的光谱信息,并且随着压缩性能的提升,这种破坏效果愈加显著。

图17 光谱角测试结果Fig.17 Test results of spectral angle

5 结 论

基于多光谱/高光谱无损和近无损压缩标准CCSDS 123.0-B-2,对马赛克高光谱数据的压缩进行了FPGA硬件实现。通过对该标准推荐的BIP排序方式的改进,大幅提高了压缩器的吞吐率,100 MHz的时钟下约22 ms即可完成一帧快照马赛克高光谱图像的压缩。所实现的压缩器的无损压缩性能在2.66~4.30 bits/samples之间,近无损压缩性能可达1.01~3.70 bits/samples,能够满足快照马赛克高光谱成像技术在无线手持及无人机载领域的应用需求。

猜你喜欢
快照马赛克排序
面向Linux 非逻辑卷块设备的快照系统①
EMC存储快照功能分析
城中村的马赛克
作者简介
AI黑科技真的能去马赛克吗
恐怖排序
节日排序
《马赛克》
一种基于Linux 标准分区的快照方法
让时间停止 保留网页游戏进度