基于CCSDS的高光谱压缩空谱联合FPGA设计与实现
2015-12-31濮建福裴加军冯书谊
濮建福,裴加军,张 宁,沈 霁,冯书谊,田 野
(1.上海航天电子技术研究所,上海 201109;2.上海机电工程研究所,上海 201109)
0 引言
目前,高光谱图像无损压缩方法多采用对每谱段单独进行压缩,如JPEG-LS压缩方法。此类压缩方法只考虑了谱内的空间相关性,而忽略了谱间相关性,压缩性能不理想。2012年,CCSDS首次发布了高光谱无损压缩标准CCSDS-123.0-B-1,该标准是在基于预测编码的方法基础上制订的,其压缩性能较高、计算简单、适应性较强,适于航天工程应用[1-4]。CCSDS压缩算法采用空谱联合预测的方式去除空间和谱间冗余。CCSDS标准只规定了编码方法,并未给出实现过程,为满足航天工程应用需求,本文对CCSDS标准硬件设计和实现方法进行了研究。
1 CCSDS空谱联合预测模型
CCSDS压缩算法包括两个功能模块:一是预测器,用于去除高光谱图像数据冗余,另一是编码器,用于对去除冗余后的数据进行编码,如图1所示。
图1 CCSDS压缩算法主要模块Fig.1 Main module of CCSDS compression algorithm
CCSDS高光谱压缩预测器模型如图2所示,从预测采 样 值 {Sz,y,x}预 测 残 差 {δz,y,x}集 合 的 计算[5]。在采样点Sz,y,x处计算预测采样点值和无符号整型δ,一般通过当前采样点的周边值和P个相邻谱段的值进行计算。此处:P为用户自定义参数,范围为0~15。
每个谱段内,预测器计算周边的采样值“局部和”,每个局部和用于计算“局部差分”。通过当前谱段的局部和以及当前谱段与之前谱段间的局部差分计算预测的采样值。计算中所用的权重按每个被预测的采样值的计算结果自适应更新。每个预测的残差,即当前指定的采样值和对应的s^之差,将映射至δ而得到预测残差。原始高光谱图像经预测器消除空间和谱间冗余信息,再进行熵编码输出。
图2 CCSDS空谱联合预测模型Fig.2 Spatial spectral joint forecast model of CCSDS
2 空谱联合预测器FPGA设计
2.1 空谱联合预测器FPGA模块设计
图3 CCSDS FPGA模块总体组成Fig.3 CCSDS FPGA module
2.2 局部和与局部差值计算
定义局部和是当前谱段,当前像素的相邻像素求和。局部和的计算分为五种情况,如图4所示。图中:
图4 局部和的计算Fig.4 Calculation of partial summation
表示当前像素周边值之和。根据当前像素所在位置的关系,有
式中:NCOL为图像列数。
2.3 权向量更新计算
算出真实值与预测值之差后,对预测器进行自适应调整。预测值与当前像素所在位置之前的各谱段有一定相关性,故权重更新向量选择当前像素之前数帧谱段作为更新权向量的依据。根据CCSDS自适应预测方法,选择符号自适应预测。
当使用定制权重初始化方法时,对每个谱段的初始化权重向量Wz(t)将被用于定义权重初始化向量i,组成Cz个Q-bit整型元素。此处:Cz为谱段z上用于预测的局部差的个数。权重初始化分辨率Q满足3≤Q≤Ω+3b。此处:Ω为权重值分辨率,取 值 4~19。可 用Wz(1)=2Ω+3-Q+|2Ω+3-Q-1|算得Wz(1)[5]。此处:为z的权重初始化向量。
在计算中心差的权向量过程中,帧序号不同,权向量初始值各异。针对FPGA逻辑实现,本文对中心差权向量更新计算进行优化,用符号函数和乘加运算可更改权值w。其中:第一帧无中心差;第二帧的中心差的权向量初值为(1)= [2Ω];第三帧的中心差权向量初始值为;第四帧的中心差权向量初始值为;其余帧的中心差权向量初始值为
由此可知:在权向量更新过程中,使用了当前数据的预测误差的符号。用“-”、“+”符号进行权向量更新,计算中应可能减少输入信号与预测中心局部差与预测误差计算间的时延。在计算中心局部差和权向量更新过程中,涉及的乘法计算较多,如用Slice实现,需消耗大量Slice资源,且延时较大。本文用FPGA芯片内部DSP48E实现乘法计算,输出延时仅为1个时钟周期,显著缩短了乘法计算的时钟周期。
3 空谱联合预测器逻辑结构
预测器FPGA实现的逻辑结构如图5所示。各谱段局部和并行计算,再计算方向局部差和中心局部差,最后与更新的权重向量相乘得到预测值。在计算预测值的同时进行权重向量更新,更新结果暂存在FPGA内部寄存器中,等待下次使用。原始值与预测值相减得到预测残差,然后进行Rice编码,组织码流输出[6]。
图5 预测器逻辑结构Fig.5 Logical structure of predictor
4 实验结果分析
用多幅高光谱图像源测试算法,分别用CCSDS,ICER-3D,差分JPEG-LS和二维JPEG-LS压缩算法进行处理,压缩结果见表1。CCSDS平均无损压缩码率为5.14b/p,与二维JPEG-LS相比码率减少2.38b/p。局部和、局部差的 ModelSim仿真结果如图6所示。图中:a表示CLK;b表示RSTn;c表示FLAG_FRAME为帧有效信号;d表示FLAG_ROW为行有效信号;e表示DIN为输入的图像数据;f表示LOCAL_SUM 为局部和数据;g表示FLAG_SUM 为局部和有效信号;h,i,j分别表示LOCAL_SUBNW,LOCAL_SUBN,LOCAL_SUBW为局部差;k表示LOCAL_SUB;l表示FLAG_SUB为局部差有效信号。更新权向量ModelSim的仿真结果如图7所示。图中:a表示CLK;b表示 RSTn;c表示nFRAME;d表示 LOCAL_SUBN;e表示LOCAL_SUBW;f表示LOCAL_SUBNW;g,h,i,j分别表示 LOCAL_SUB1、2、3、4为权向量更新信号;k表示FLAG_SUB;l表示FLAG_PCE;m表示PREDICTED_CE。预测器实现过程采用流水线结构设计,图6中局部和与局部差的计算结果较输入数据延迟1个时钟周期(12.5ns),局部和和局部差同时输出。FPGA采用XC5VFX130T,经实验仿真,工作时钟可达80MHz以上,图像源为量化位数16b的高光谱图像,预测器平均吞吐率为1.69Gb/s。
表1 四种压缩算法结果Tab.1 Results of four compression algorithms
图6 局部和和局部差仿真结果Fig.6 Simulation results of partial summation and difference simulation
图7 权向量更新仿真结果Fig.7 Simulation results of weight vector updating
5 结束语
本文对 CCSDS发布的 CCSDS-123.0-B-1高光谱图像压缩空谱联合预测模型进行了研究。给出了预测模型和FPGA模块设计,简化了局部和局部差计算过程,对权重向量更新进行优化,给出预测器实现的逻辑结构。实验结果表明:使用该预测器平局压缩码率为5.14b/p,工作时钟可达80MHz以上,平均吞吐率1.69Gb/s。
[1] CCSDS.Lossless data compression:recommendation for space data systems standards[A]:CCSDS121.0-B-2,b1ue book[M].2ndEd.Washington DC:CCSDS,2012.
[2] CCSDS.Image data compression:report concering space data system standards[A]:CCSDS 120.1-G-1,green book[M].Walshinton DC:CCSDS,2007.
[3] 张忠伟,安军社,吕良庆,等.萤火一号火星探测器在轨图像处理技术[J].上海航天,2013,30(4):211-214.
[4] 陈裕华,顾晓东,张忠伟,等.最新Ccsds图像压缩算法研究与实现[J].空间科学学报,2007,27(6):519-522.
[5] CCSDS.Lossless multispectral & hyperspectral image compression:recommendation for space data systems standards[A]:CCSDS 123.0-B-1,Blue Book[M].Washington DC:CCSDS,2012.
[6] 陈永红,史泽林,赵怀慈,等.空谱联合预测高光谱图像无损压缩Rice算法[J].仪器仪表学报,2010,31(1):105-110.