卫星遥感实时图像数据压缩的硬件实现
1. 引言
图像数据压缩对于减少卫星遥感中的图像数据量和数据速率至关重要。以FORMOSAT - 5遥感仪器(RSI)为例,FORMOSAT - 5是由相关机构研发的光学遥感卫星,具有2米全色(PAN)图像分辨率和4米多光谱(MS)图像分辨率。其有效载荷在遥感仪器中包含一个12,000像素的PAN波段和四个6,000像素的MS波段。图像数据压缩方法符合空间数据系统咨询委员会(CCSDS)标准CCSDS 122.0 - B - 1(2005),无损压缩比为1.5,有损压缩比为3.75或7.5。采用Xilinx Virtex - 5QV FPGA(XQR5VFX130)实现近实时压缩,并运用并行和并发处理策略实现高性能计算。
2. 图像压缩方法
2.1 离散小波变换(DWT)
CCSDS推荐的DWT有整数DWT(IDWT)和浮点DWT(FDWT)两种选择。IDWT仅需整数运算,可实现无损压缩,实现复杂度较低,但压缩比也较低;FDWT压缩效果更好,但需要浮点计算,无法实现无损压缩。
DWT阶段进行三级二维小波分解,生成10个子带。低通IDWT公式为:
[
C_{j}=\frac{1}{64}x_{j - 4}+\frac{1}{8}x_{j - 2}+\frac{1}{4}x_{j}+\frac{1}{8}x_{j + 2}+\frac{1}{64}x_{j + 4}-\frac{1}{32}x_{j - 3}-\frac{1}{16}x_{j - 1}-\frac{1}{16}x_{j + 1}-\frac{1}{32}x_{j + 3}+\frac{1}{24}x_{j - 2}+\frac{1}{12}x_{j}+\frac{1}{24}x_{j + 2}
]
高通IDWT公式为:
[
D_{j}=\frac{1}{16}x_{j - 2}-\frac{1}{16}x_{j}+\frac{1}{16}x_{j + 2}-\frac{1}{16}x_{j + 4}+\frac{9}{16}x_{j - 1}-\frac{9}{16}x_{j + 1}
]
低通FDWT公式为:
[
C_{j}=\sum_{n = - 4}^{4}h_{n}X_{j + n}; j = 0,1,\cdots,11999 \text{(PAN波段)}; j = 0,1,\cdots,5999 \text{(MS波段)}
]
高通FDWT公式为:
[
D_{j}=\sum_{n = - 3}^{3}g_{n}X_{j + n}; j = 0,1,\cdots,11999 \text{(PAN波段)}; j = 0,1,\cdots,5999 \text{(MS波段)}
]
FDWT的系数如下表所示,FORMOSAT - 5使用的系数与CCSDS 122.0 - B - 1中定义的略有不同,为节省FPGA复用器资源,使用24位而非32位。
| i | CCSDS定义的FDWT系数 - 低通滤波器 (h_i) | CCSDS定义的FDWT系数 - 高通滤波器 (g_i) | FORMOSAT - 5使用的FDWT系数 - 低通滤波器 (h_i) | FORMOSAT - 5使用的FDWT系数 - 高通滤波器 (g_i) |
| — | — | — | — | — |
| 0 | 0.852698679009 | - 0.788485616406 | 0.852698564529 | - 0.788485646247 |
| ±1 | 0.377402855613 | 0.418092273222 | 0.377402901649 | 0.418092250823 |
| ±2 | - 0.110624404418 | 0.040689417609 | - 0.110624432563 | 0.040689468383 |
| ±3 | - 0.023849465020 | - 0.064538882629 | - 0.023849487304 | - 0.064538883647 |
| ±4 | 0.037828455507 | | 0.037828445434 | |
2.2 位平面编码器(BPE)
DWT处理后,BPE处理DWT系数进行数据压缩。BPE从最高有效位(MSB)到最低有效位(LSB)对图像段进行编码,使用较少的位表示图像数据以实现压缩比。在CCSDS 122.0 - B - 1中,可以定义压缩段的最大字节数来限制数据量,也可以定义质量限制来约束要编码的DWT系数信息的数量。
BPE进行DC和AC数据加密,流程如下:
1.
DC部分数据加密
:计算每个块的AC部分最大值,确定“DC_MAX_Depth”和“AC_MAX_Depth”的位数,确定DC和AC的优化加密类型和W/8块的值,加密DC部分数据和W/8 AC_MAX数据并将位流传输到下一阶段。(W为每行图像的像素大小,如FORMOSAT - 5中PAN图像W为12,000,MS图像W为6,000)
2.
AC部分数据加密
:分为5个阶段,每个阶段逐块进行数据加密和位输出,使用熵编码方案。阶段0处理DC第三部分数据;阶段1处理每个块的父部分系数;阶段2处理每个块的子部分系数;阶段3处理每个块的孙部分系数;阶段4拼接阶段1、阶段2和阶段3的剩余数据。添加段头后,完成压缩图像数据。
mermaid流程图如下:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(开始):::process --> B(DC部分数据加密):::process
B --> C(计算AC部分最大值):::process
C --> D(确定DC_MAX_Depth和AC_MAX_Depth位数):::process
D --> E(确定DC和AC优化加密类型和W/8块值):::process
E --> F(加密DC部分数据和W/8 AC_MAX数据):::process
F --> G(传输位流到下一阶段):::process
G --> H(AC部分数据加密):::process
H --> I(阶段0:处理DC第三部分数据):::process
I --> J(阶段1:处理父部分系数):::process
J --> K(阶段2:处理子部分系数):::process
K --> L(阶段3:处理孙部分系数):::process
L --> M(阶段4:拼接剩余数据):::process
M --> N(添加段头):::process
N --> O(完成压缩图像数据):::process
3. 硬件实现
3.1 架构描述
FORMOSAT - 5遥感仪器的图像流程如下:望远镜后面的焦平面组件(FPA)内有一个CMOS传感器模块用于拍摄图像,该模块可由两个FPA电子设备访问。输出数据流发送到RSI EU中的图像数据预处理(IDP)模块进行数据重新排序,然后将结果数据发送到图像数据压缩(IDC)模块进行数据压缩。压缩后的数据和格式头在内存控制器(MC)模块的控制下存储在大容量存储器(MM)模块中。当卫星飞过地面站时,图像文件可以被检索并传输到地面站。
3.2 设计与实现
各功能模块之间的图像数据输入接口如下:FPA的串行图像数据在IDP中重新排序,使图像数据以正确的像素顺序输出,然后通过12位数据总线以较低的传输时钟速率并行传输到IDC。一个PAN数据通道和四个MS数据通道在IDC中分别进行压缩,压缩后的PAN和MS数据在MC模块的控制下分别存储在图像文件中。
3.3 硬件设计
各阶段之间的图像数据速率如下:PAN传感器输出分为8个通道,每个通道速率为80Mbps以适应高数据速率;每个MS波段的通道速率为40Mbps。并行处理架构可提高图像数据处理速度。
PAN和MS图像数据压缩板使用Xilinx空间级FPGA(XQR5VFX130)进行图像压缩处理,其主要特性包括130,000个逻辑单元、298个36K位RAM块、320个增强型DSP切片、700Krad总剂量等。FPGA编程的PROM部分为XQR17V16,具有16M位内存大小和50krad总剂量能力。一个XQR5VFX130 FPGA用于PAN数据压缩,两个用于四个MS数据压缩。压缩过程中使用24个256K x 32 SRAM作为外部数据缓冲区。
3.4 DWT过程
DWT三级流程如下:
1.
第一级
:生成LL1、LH1、HL1和HH1。
2.
第二级
:LL1传输到第二级DWT处理,生成LL2、LH2、HL2和HH2。
3.
第三级
:LL2传输到第三级DWT处理,生成LL3、LH3、HL3和HH3。LL3包含原始图像的大部分信息,这些子带存储在临时缓冲区中供BPE处理。
3.5 BPE过程
BPE模块是实际进行数据压缩的单元。当DWT确认一段数据完成并保存在缓冲区中时,BPE从缓冲区中检索小波域数据,并针对不同的DWT子段数据使用不同的压缩方案。根据不同的压缩比要求,BPE进行数据截断或添加零填充位。添加必要的头信息后,压缩数据逐字发送到大容量存储器进行存储。
压缩数据格式如下表所示:
| 项目 | 描述 |
| — | — |
| 段头 | |
| DC系数的初始编码 | |
| 编码的AC系数位深度 | |
| 编码的位平面b = BitDepthAC - 1 | |
| 编码的位平面b = BitDepthAC - 2 | |
| ………… | |
| 编码的位平面b = 0 | |
DC系数的量化根据AC和DC系数的动态范围确定,如下表所示:
| DC和AC动态范围 | q’值 | 备注 |
| — | — | — |
| (BitDepthDC \leq 3) | q’ = 0 | DC动态范围非常小,不进行量化 |
| ((\frac{1}{2}BitDepthAC + 1) \leq BitDepthDC \leq 3) | q’ = BitDepthDC - 3 | DC动态范围接近AC动态范围的一半 |
| ((\frac{1}{2}BitDepthAC + 10) \leq BitDepthDC ) | q’ = BitDepthDC - 10 | DC动态范围远高于AC动态范围的一半 |
| 其他情况 | q’ = (\lfloor\frac{1}{2}BitDepthAC\rfloor + 1) | DC动态范围适度高于AC动态范围的一半 |
3.6 FPGA设计优化
为节省FPGA芯片中有限的乘法器和内存资源,采用了一些设计技巧。原本3层、水平和垂直、低通和高通滤波器需要3 x 2 x (9 + 7) = 96个乘法器,通过在IDC设计中使用复用器、加法器和时序共享算法,低通滤波器只需3个乘法器,高通滤波器只需2个乘法器,即3层二维FDWT架构总共只需3 x 2 x (3 + 2) = 30个乘法器,减少了66个乘法器。
DWT三层的时序关系如下:原始源图像宽度“W”在FORMOSAT - 5中PAN为12000,MS为6000。PAN的源时钟为45 MHz,MS为11.25 MHz。第一层每两个源时钟生成LH1、HL1和HH1数据,数据大小为W/2字;第二层每四个源时钟生成LH2、HL2和HH2数据,数据大小为W/4字;第三层每八个源时钟生成LL3、LH3、HL3、HH3数据,数据大小为W/8字。不同层的数据交错生成以实现实时数据处理的高吞吐量。
采用条带式方法处理图像压缩时,只需固定的缓冲区大小(Width * 138),而基于帧的方法需要Width * Length的缓冲区大小。对于FORMOSAT - 5 8分钟的PAN成像数据,基于帧的缓冲区大小是条带式的200,000倍。因此,使用条带式方法可以节省内存大小、成本和处理时间,减少总所需内存,如下表所示:
| | CCSDS 120.1 - G - 1 | FORMOSAT - 5方法 |
| — | — | — |
| 低通滤波器 | ([2 \times (9 \times W/2^n)] \times 32)位 | ([2 \times (5 \times W/2^n)] \times 32)位 |
| 高通滤波器 | ([2 \times (7 \times W/2^n)] \times 32)位 | ([2 \times (4 \times W/2^n)] \times 32)位 |
| 说明 | W为每行像素数(12000);n为层数(1 ~ 3) | |
Xilinx Virtex - 5QV FPGA的静态功率经Xilinx XPower Analyzer工具估计为2.49761瓦。对于PAN,吞吐量为40.4 Msamples/sec,压缩FPGA的功耗约为0.06瓦/Msamples/sec,PAN压缩板的总功耗约为5瓦(包括SRAM和IO电路),相当于0.124瓦/Msamples/sec。
与ASIC相比,使用空间级FPGA芯片有一些优势,如具有良好的抗辐射能力,行像素数和时钟速率可以重新配置。不同数据压缩芯片的对比如下表所示:
| 型号 | 特点 | FORMOSAT - 5 RSI EU IDC | CAMBR DWT + BPE IC | ANALOG DEVICES ADV202 |
| — | — | — | — | — |
| 芯片类型 | | Xilinx空间级FPGA | ASIC | ASIC |
| 压缩算法 | | CCSDS 122.0 | CCSDS 122.0 | JPEG2000 |
| 行宽(像素) | | 12000 | 8192 | 4096 |
| 每像素位数 | | 12 | 16 | 8, 10, 12, 14, 16 |
| 输入数据速率 | | 480Mbps | 320Mbps | 780Mbps |
| 辐射(总剂量,Si) | | 700K | >=50K | 商用 |
| 功耗(瓦/Msamples/sec) | | 0.06 | 0.17 | 0.05 |
4. 图像质量验证
为了验证压缩效果,进行了一系列图像质量验证实验。
-
测试图像选择
:首先对CCSDS官方网站上的12位测试图像进行测试,得到了与CCSDS报告相似的结果。为考虑更实际的情况,采用了FORMOSAT - 2卫星在2009年12月9日拍摄的北温哥华图像。
-
性能指标
:使用峰值信噪比(PSNR)作为性能指标,计算公式如下:
[
PSNR(dB) \equiv 20\log_{10}\left(\frac{2^{B}}{\sqrt{MSE}}\right)
]
其中,(B)表示位深度,均方误差(MSE)的计算公式为:
[
MSE = \frac{1}{w \cdot h}\sum_{i = 1}^{w}\sum_{j = 1}^{h}(x_{i,j}-\hat{x}
{i,j})^2
]
这里,(x
{i,j})是原始图像的像素,(\hat{x}_{i,j})是解码图像的像素,(w)是图像的宽度,(h)是图像的高度。
-
测试设置
:采用8行条带式段进行测试,PAN有1500个块,MS有375个块。使用Matlab®软件计算平均PSNR,压缩比设置为1.5、3.75和7.5,测试结果如下表所示:
| 压缩比 | 图像方法 | 全色波段 | 红色波段 | 绿色波段 | 蓝色波段 | 红外波段 |
| — | — | — | — | — | — | — |
| CR = 1.5 | IDWT | 无损 | 无损 | 无损 | 无损 | 73.1 |
| | FDWT | 51.1 | 51.1 | 51.1 | 51.1 | 51 |
| CR = 3.75 | IDWT | 47.3 | 47.8 | 44.3 | 45.3 | 41.1 |
| | FDWT | 47.7 | 48 | 45 | 45.8 | 41.7 |
| CR = 7.5 | IDWT | 43.1 | 41.8 | 37.6 | 38.1 | 38.5 |
| | FDWT | 43.6 | 42.2 | 38 | 38.5 | 35.1 |
从测试结果可以看出,当使用IDWT且压缩比为1.5时,除红外波段外,PSNR非常大,表明接近无损压缩;当使用FDWT且压缩比为7.5时,PSNR可能降至35dB,比使用六个12位CCSDS测试图像的平均PSNR 56.77dB更差,这主要是因为北温哥华图像比标准CCSDS测试图像复杂得多。
为了进一步验证硬件对卫星图像的压缩性能,开发了一套模拟焦平面组件(FPA)。具体操作步骤如下:
1. 将FORMOSAT - 2拍摄的卫星图像从每个图像像素8位扩展到12位,通过添加4个最低有效位的随机值来模拟FORMOSAT - 5图像。
2. 将测试图像从个人计算机下载到图像传感器模拟器,该模拟器用于替换FPA中的真实图像传感器阵列。
3. FPA模拟器像真实的推扫式图像数据一样传输测试图像,测试图像由硬件进行压缩,然后由软件进行解压缩,以检查硬件对模拟卫星图像的压缩性能。
为了快速检查硬件功能,将一个大小为1024像素×1024像素、分辨率为12位的测试图像下载到原型板。该测试图像由硬件压缩,然后由软件解压缩。压缩比为1.5时,PSNR为82.8dB;压缩比为3.75时,PSNR为56.9dB;压缩比为7.5时,PSNR为49.2dB。
mermaid流程图展示模拟FPA测试流程如下:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(获取FORMOSAT - 2图像):::process --> B(扩展图像位深度):::process
B --> C(下载到图像传感器模拟器):::process
C --> D(模拟器传输图像):::process
D --> E(硬件压缩图像):::process
E --> F(软件解压缩图像):::process
F --> G(检查压缩性能):::process
5. 结论
通过上述研究,实现了CCSDS推荐的图像数据压缩。在FPGA芯片中采用并行处理、时间共享和纯硬件计算的方式,能够实现高性能计算。基于FPGA的图像数据压缩模块已开发完成,可为FORMOSAT - 5任务提供足够的压缩比和所需的图像质量。
该技术的性能已通过标准CCSDS 122.0测试图像和FORMOSAT - 2图像进行了验证,可应用于类似的空间图像数据压缩领域。随着FPGA技术的不断改进,压缩吞吐量有望进一步提高。
这项技术的主要优势在于能够通过高效的硬件实现进行实时图像压缩,且功耗较低,这使其特别适用于卫星遥感领域。
6. 致谢
本工作得到了相关机构在FORMOSAT - 5项目下的支持。特别感谢以下合作伙伴的贡献:
- 在图像算法开发和图像质量验证方面:Dr. C. F. Change和Miss Cynthia Liu。
- 在IDP模块方面:CMOS Sensor Inc.。
- 在MC和MM模块方面:Camels Vision Technologies Inc.。
- 在整个EU方面:Chung - Shan Institute of Science & Technology (CSIST)。
- 在IDC模块方面:Dr. Mao - Chin Lin和Mr. Li - Rong Ran。
超级会员免费看
1908

被折叠的 条评论
为什么被折叠?



