CCSDS标准下基于FPGA的图像高速解压缩系统及方法

文档序号:29127198发布日期:2022-03-05 00:25阅读:1459来源:国知局
CCSDS标准下基于FPGA的图像高速解压缩系统及方法
ccsds标准下基于fpga的图像高速解压缩系统及方法
技术领域
1.本发明属于图像处理技术领域,具体涉及一种ccsds标准下基于fpga的图像高速解压缩系统及方法。


背景技术:

2.遥感卫星图像数据解压缩系统是卫星地面预处理系统中的重要组成部分,主要负责星上下传图像数据的解压缩任务,其生成的数据是后续地面处理步骤的数据基础。如今,随着遥感卫星技术的发展,卫星发射数量逐年增加,遥感卫星图像数据的预处理呈现出大数据量、实时性要求高等特点,这对遥感卫星图像数据解压缩系统的性能提出了更高的要求。
3.ccsds120.2-g-1标准是空间数据系统咨询委员会发布的无损压缩标准,该标准是基于预测的压缩算法,和传统的基于预测的算法的不同在于ccsds120.2-g-1基于三维预测,既考虑图像数据空间维度的相关性,又考虑谱段维度上的相关性,所以压缩算法的压缩性能要优于传统的压缩算法。
4.目前对遥感卫星图像数据的解压缩大多由软件实现,这就导致了系统部署困难、部署成本高、功耗过大等问题,而fpga(field programmable gate array)由于其独特的结构,具有体积小、移植方便、功耗低、便携性高等优点,因此对于ccsds标准下图像的高速解压缩技术的fpga硬件实现成为需要解决的技术问题。


技术实现要素:

5.基于上述问题,本发明提出一种ccsds标准下基于fpga的图像高速解压缩系统,包括:golomb解码模块、像素值重建模块、标志信号生成模块、局部差向量产生模块、权重更新模块、谱段缓存模块,图像数据缓存模块;
6.所述golomb解码模块用于根据压缩码流计算解码后的误差值;
7.所述标志信号生成模块用于根据当前待重建像素所在位置产生对应的区域标志信号、谱段标志信号;
8.所述局部差向量产生模块将当前谱段的左侧、上侧、左上方向的局部差、相对于当前谱段的前4个谱段的中心局部差组成局部差向量,所述局部差向量为7行1列的矩阵;
9.所述像素值重建模块用于根据反映射后的误差值以及待重建像素的预测值计算待重建像素的重建值;
10.所述权重更新模块用于根据局部差向量及标志信号对权向量进行更新;
11.所述谱段缓存模块用于缓存前4个谱段的中心局部和及像素的重建值,同时输出前4个谱段对应位置的重建像素及邻近局部和;
12.所述图像数据缓存模块用于缓存窗口内像素的重建值,同时并行输出窗口内的重建像素数据。
13.所述golomb解码模块包括golomb-rice解码子模块和计算k值子模块;
14.所述golomb-rice解码子模块用于根据输入的移位参数k从输入的压缩码流中解码出解码后的误差值;
15.所述计算k值子模块用于对解码后的误差值进行累加与计数,计算并更新golomb-rice解码所需的移位参数k值。
16.所述像素值重建模块包括预测值计算子模块、误差值反映射子模块、重建值计算子模块;
17.所述预测值计算子模块用于将权向量与局部差向量做点积,然后将点积得到的结果与中心局部和移位后的结果相加,再将相加得到的结果进行移位,再对右移后的结果执行向下取整操作,然后将向下取整后的结果约束在一定范围内,即可得到待重建像素的预测值;
18.所述误差值反映射子模块用于根据输入的解码后的误差值得到用来进行误差值映射的原始误差值;
19.所述重建值计算子模块用于根据反映射后的误差值以及该待重建像素的预测值计算得到该像素的重建值。
20.一种ccsds标准下基于fpga的图像高速解压缩方法,所述方法基于所述的ccsds标准下基于fpga的图像高速解压缩系统实现,包括:
21.步骤1:缓存输入的压缩码流并进行golomb解码;
22.步骤2:生成待重建像素值所在的区域标志信号、谱段标志信号;
23.步骤3:根据待重建像素值所在的区域标志信号、谱段标志信号以及窗口内的像素值计算中心局部和、局部差以及邻近局部和,生成局部差向量;
24.步骤4:根据权向量与局部差向量计算得到待重建像素的预测值;
25.步骤5:根据输入的解码后的误差值及该待重建像素的预测值计算得到该位置像素的重建值;
26.步骤6:根据谱段标志信号以及局部差向量进行权向量的更新;
27.步骤7:并行输出当前窗口内的重建像素数据,实现图像的压缩。
28.所述步骤1包括:
29.步骤1.1:对图像的宽、谱段参数进行配置,配置结束后触发器锁存图像的宽、谱段参数;
30.步骤1.2:清空输入压缩码流的缓存,初始化golomb-rice解码所需要的移位参数k;
31.步骤1.3:缓存输入的压缩码流,使用移位参数k对压缩码流进行golomb-rice解码,得到解码后的误差值;
32.步骤1.4:输出解码后的误差值,同时对解码后的误差值进行累加和计数,计算出下一次解码所需要的移位参数k;
33.步骤1.5:重复步骤1.3~1.4直到所有输入的压缩码流均被解码。
34.所述步骤2包括:
35.步骤2.1:将重建后的图像数据存入图像数据缓存模块进行缓存;
36.步骤2.2:对权向量、比较标志进行初始化;
37.步骤2.3:从谱段缓存模块中取出当前重建的像素所处位置的前四个谱段的邻近
局部和以及该像素的重建值以并行方式输出;
38.步骤2.5:从图像数据缓存模块中读取重建后的图像数据,将窗口内所需的图像数据以并行方式输出,同时输出标志当前压缩的像素所处位置的区域标志信号和谱段标志信号,每个窗口包括当前像素值、当前像素值相邻的左侧、左上、上侧、右上位置上的像素值。
39.所述步骤3包括:
40.步骤3.1:根据待重建像素值所处位置的标志信号与前四个谱段的邻近局部和以及重建值,计算前四个谱段上的中心局部差;根据区域标志信号和窗口内的像素值,计算每个谱段的邻近局部和;
41.步骤3.2:通过每个谱段上的近邻局部和计算窗口内像素的局部差,将当前谱段与前4个谱段的局部差组合为局部差向量形式进行输出。
42.所述步骤4包括:
43.步骤4.1:将当前权向量与局部差向量进行点积运算;
44.步骤4.2:将邻近局部和进行移位,并将移位得到的结果与步骤4.1得到的点积结果相加;
45.步骤4.3:将步骤4.2得到的结果进行移位操作,然后对其进行向下取整操作,将所得的向下取整的结果约束到固定范围内,得到待重建像素的预测值。
46.所述步骤5包括:
47.步骤5.1:对输入的解码后的误差值进行反映射;
48.步骤5.2:根据像素的预测值以及反映射之后的误差值计算像素的重建值。
49.所述步骤6包括:
50.步骤6.1:根据标志信号对局部差向量进行移位操作;
51.步骤6.2:根据标志信号、编码后的误差值及移位后的局部差向量对权向量进行更新;
52.步骤6.3:将步骤6.2得到的权向量约束在固定范围内,得到最终更新后的权向量;
53.步骤6.4:重复步骤1~步骤6,直到完成所有码流的解压。
54.本发明的有益效果是:
55.本发明提出了一种ccsds标准下基于fpga的图像高速解压缩系统及方法,所述系统包括golomb解码模块、标志信号生成模块、局部差向量产生模块、像素值重建模块、权重更新模块、谱段缓存模块,图像数据存模块;是一种全流水线结构,一个时钟处理一个像素点,比现有技术处理数据的效率更高,现有的基于cpu实现的技术相比,该压缩方法处理速度更快,数据处理速度可达70msamples/s,功耗更低,灵活性更强。
附图说明
56.图1为本发明中ccsds标准下基于fpga的图像高速解压缩系统框图;
57.图2为本发明中ccsds标准下基于fpga的图像高速解压缩方法流程图;
58.图3为本发明中golomb解码模块框图;
59.图4为本发明中像素值重建模块框图。
具体实施方式
60.下面结合附图和具体实施实例对发明做进一步说明。
61.一种ccsds标准下基于fpga的图像高速解压缩系统,如图1所示,包括:golomb解码模块、像素值重建模块、标志信号生成模块、局部差向量产生模块、权重更新模块、谱段缓存模块,图像数据缓存模块;
62.所述golomb解码模块用于根据压缩码流计算解码后的误差值;golomb解码模块框图如图3所示。
63.所述标志信号生成模块用于根据当前待重建像素所在位置产生对应的区域标志信号、谱段标志信号;
64.所述局部差向量产生模块将当前谱段的左侧、上侧、左上方向的局部差、相对于当前谱段的前4个谱段的中心局部差组成局部差向量,所述局部差向量为7行1列的矩阵;
65.所述像素值重建模块用于根据反映射后的误差值以及待重建像素的预测值计算待重建像素的重建值;像素值重建模块框图如图4所示。
66.所述权重更新模块用于根据局部差向量及标志信号对权向量进行更新;
67.所述谱段缓存模块用于缓存前4个谱段的中心局部和及像素的重建值,同时输出前4个谱段对应位置的重建像素及邻近局部和;
68.所述图像数据缓存模块用于缓存窗口内像素的重建值,同时并行输出窗口内的重建像素数据。
69.所述golomb解码模块包括golomb-rice解码子模块和计算k值子模块;
70.所述golomb-rice解码子模块用于根据输入的移位参数k值从输入的压缩码流中解码出解码后的误差值;
71.所述计算k值子模块用于对解码后的误差值进行累加与计数,计算并更新golomb-rice解码所需的移位参数k值。
72.所述像素值重建模块包括预测值计算子模块、误差值反映射子模块、重建值计算子模块;
73.所述预测值计算子模块用于将权向量与局部差向量做点积,然后将点积得到的结果与中心局部和移位后的结果相加,再将相加得到的结果进行移位,再对右移后的结果执行向下取整操作,然后将向下取整后的结果约束在一定范围内,即可得到待重建像素的预测值;
74.所述误差值反映射子模块用于根据输入的解码后的误差值得到得到用来进行误差值映射的原始误差值;
75.所述重建值计算子模块用于根据反映射后的误差值以及该待重建像素的预测值计算得到该像素的重建值。
76.一种ccsds标准下基于fpga的图像高速解压缩方法,所述方法基于所述的ccsds标准下基于fpga的图像高速解压缩系统实现,如图2所示,包括:
77.步骤1:缓存输入的压缩码流并进行golomb解码;包括:
78.步骤1.1:对图像的宽、谱段参数进行配置,配置结束后触发器锁存图像的宽、谱段参数;
79.将输入的128bit位宽的压缩码流数据d
in
存入fifo((first input first output,
fifo指先进先出存储器)中,初始化位宽为256bit的缓存信号d
temp
=0。初始化l
zeros
=256.其中l
zeros
为d
temp
中可以写入数据的长度;判断缓存信号d
temp
中可以写入数据的长度l
zeros
是否大于等于128,如果大于等于128,则从fifo中读出一个128bit位宽的压缩码流数据d
in
,并将d
in
右侧拼接(l
zeros-128)bit的0、左侧拼接(256-l
zeros
)bit的0,得到新的压缩码数据流d
sl
;将d
sl
与d
temp
按位进行或操作,并将结果写到缓存信号d
temp
中。
80.步骤1.2:清空输入压缩码流的缓存,初始化golomb-rice解码所需要的移位参数k;
81.步骤1.3:缓存输入的压缩码流,使用移位参数k对压缩码流进行golomb-rice解码,得到解码后的误差值;
82.步骤1.4:输出解码后的误差值,同时对解码后的误差值进行累加和计数,计算出下一次解码所需要的移位参数k;
83.步骤1.5:重复步骤1.3~1.4直到所有输入的压缩码流均被解码。
84.根据移位参数k的值与d
temp
的值计算解码后的误差值me,同时对d
temp
的值进行更新,具体表述为:若参数k的值为0,则解码后的误差值me为d
temp
中左侧的前16bit数据,d
temp
的值更新为d
temp
左移16bit的结果;若参数k的值大于0且小于等于17,则首先d
temp
左侧的64bit数据从最左侧开始判断连续为0的值的个数,将结果记为meh;将d
temp
左侧开始第(meh+2)bit到(meh+k)bit的数据拼接到meh数据的右侧,作为解码后的误差值me;d
temp
更新为d
temp
左移(meh+k)bit的结果;其他情况下me=0,d
temp
保持不变。
85.根据me和k更新l
zeros
的值,具体表述为:若l
zeros
的值大于等于128,则l
zeros
更新为l
zeros
+me+k-128;若l
zeros
的值小于128,则l
zeros
更新为l
zeros
+me+k;
86.通过对解码后的误差me进行计数与累加,根据计数与累加的结果计算golomb-rice解码所需的位移参数k,每计算出一个me后,计数器γ加1,累加到128后将计数器γ的值右移一位,每个谱段使用不同的计数器γ,当切换谱段时需将计数器γ存入随机存取存储器ram对应位置然后从ram中读取出新谱段对应的计数器γ。
87.49倍计数器γ
49
:与计数器γ的操作类似,每当计算出一个me后,49倍计数器γ
49
加49,当γ累加到128后,γ
49
右移一位;
88.累加器∑:每当计算出一个me后,累加器∑加me,当γ累加到128后,∑右移一位;
89.从k=1到k=14,依次将计数器γ左移k bit与∑+(γ
49
>>7)进行比较,找到小于14且满足(γ<<(k-1))≤∑+(γ
49
>>7)的最小正整数k。
90.步骤2:生成待重建像素值所在的区域标志信号、谱段标志信号;包括:
91.步骤2.1:将重建后的图像数据存入图像数据缓存模块进行缓存;重建后的图像数据输出给图像数据缓存模块,在图像数据缓存子模块通过串联4个fifo实现数据的缓存,first input first output简称fifo存储器;
92.步骤2.2:对权向量、比较标志进行初始化;
93.步骤2.3:从谱段缓存模块中取出当前重建的像素所处位置的前四个谱段的邻近局部和以及该像素的重建值以并行方式输出;
94.步骤2.5:从图像数据缓存模块中读取重建后的图像数据,将窗口内所需的图像数据以并行方式输出,同时输出标志当前压缩的像素所处位置的区域标志信号和谱段标志信号(均采用独热编码),每个窗口包括当前像素值、当前像素值相邻的左侧s
z,y,x-1
、左上sz,y-1,x-1
、上侧s
z,y-1,x
、右上s
z,y-1,x+1
位置上的像素值,当前像素位于一块图像的第一个像素时,区域标志信号为00001;当位于一块图像的中间部分时,区域标志信号为00010;当位于一块图像的第一行时,区域标志信号为00100;当位于一块图像的第一列时,区域标志信号为01000;当位于一块图像的最后一列时,区域标志信号为10000。后续模块会根据区域标志,使用窗口内对应的像素值计算中心局部和与局部差;当前像素位于第0谱段时,谱段标志信号为0001、位于第1谱段时,谱段标志信号为0010、位于第2谱段时,谱段标志信号为0100;大于第2谱段时,谱段标志信号为1000;后续模块会根据谱段标志信号对局部差向量进行移位。
95.步骤3:根据待重建像素值所在的区域标志信号、谱段标志信号以及窗口内的像素值计算中心局部和、局部差以及邻近局部和,生成局部差向量;包括:
96.步骤3.1:根据待重建像素值所处位置的标志信号与前四个谱段的邻近局部和以及重建值,计算前四个谱段上的中心局部差d
xyz
;根据区域标志信号和窗口内的像素值,计算每个谱段的邻近局部和σ
z,y,x
;当区域标志为00001时邻近局部和为0;当区域标志为00010时邻近局部和σ
z,y,x
为左侧像素、左上像素、上侧像素、右上像素的和;当区域标志为00100时邻近局部和σ
z,y,x
为左侧像素值左移两位;当区域标志为01000时邻近局部和为上侧像素、右上像素的和左移一位;当区域标志为10000时邻近局部和σ
z,y,x
为左侧像素、左上像素、上侧像素左移一位的和。
97.步骤3.2:通过每个谱段上的近邻局部和计算窗口内像素的局部差,将当前谱段与前4个谱段的局部差组合为局部差向量形式进行输出;局部差包括前4个谱段的中心局部差与当前谱段的三个方向局部差,通过每个谱段上的邻近局部和与窗口内的像素进行计算,最后将局部差组合成局部差向量输出;
98.计算中心局部差d
z,y,x
:在窗口内的每一谱段使用当前像素值减去邻近局部和,得到每个谱段上的中心局部差;
99.计算左侧、上侧、左上的方向局部差当区域标志为00100时,上侧方向局部差为0,其他情况下,上侧局部方向差为上侧像素值左移两位减去邻近局部和;当区域标志为00100时,左侧方向局部差为0,当区域标志为01000时,左侧方向局部差为上侧像素左移两位减去邻近局部和,其他情况下,左侧方向局部差为左侧像素左移两位减去邻近局部和;当区域标志为00100时,左上方向局部差为0,当区域标志为01000时,左上方向局部差为上侧像素左移两位减去邻近局部和,其他情况下,左上方向局部差为左上像素左移两位减去邻近局部和。
100.计算局部差向量u(t):将当前谱段的左侧、上侧、左上方向局部差、相对于当前谱段的前4个谱段的中心局部差组成7列1行的局部差向量u(t);
101.步骤4:根据权向量与局部差向量计算得到待重建像素的预测值;包括:
102.步骤4.1:将当前权向量w(t)与局部差向量u(t)进行点积运算;
103.步骤4.2:将邻近局部和进行移位,并将移位得到的结果与步骤4.1得到的点积结果相加;
104.步骤4.3:将步骤4.2得到的结果进行移位操作,然后对其进行向下取整操作,将所得的向下取整的结果约束到固定范围[ω
min

max
]内,得到待重建像素的预测值,具体表述为:若所得的向下取整的结果小于ω
min
的值,则将对应值置为ω
min
;若所得的向下取整的结
果大于ω
max
的值,则将对应值置为ω
max
;其中ω
min
、ω
max
分别为向下取整的结果取值范围的最小值、最大值,ω
min
=0、ω
max
=2
13-1,得到待重建像素的预测值predict_s;
[0105]
步骤5:根据输入的解码后的误差值及该待重建像素的预测值计算得到该位置像素的重建值;包括:
[0106]
步骤5.1:对输入的解码后的误差值进行反映射;若输入的解码后的误差值me为偶数,则反映射的结果为me/2,否则,反映射的结果为-(me+1)/2;
[0107]
步骤5.2:根据像素的预测值以及反映射之后的误差值计算像素的重建值;若当前区域标志信号为00001,则重建值rebuild_data为输入的误差值,否则重建值rebuild_data为反映射后的误差值加上predict_s/2;
[0108]
步骤6:根据谱段标志信号以及局部差向量进行权向量的更新;包括:
[0109]
步骤6.1:根据标志信号对局部差向量进行移位操作;具体表述为:如果当前谱段为第0谱段,即谱段标志信号为0001时,则将局部差向量向右移9位输出;如果当前谱段为第1谱段,即谱段标志信号为0010时,则将局部差向量向右移6位输出;如果当前谱段为第2谱段,即谱段标志信号为0100时,则将局部差向量向右移3位输出;如果当前谱段大于第2谱段,即谱段标志信号为1000时,直接输出局部差向量的原始值;
[0110]
步骤6.2:根据标志信号、编码后的误差值me及移位后的局部差向量对权向量进行更新;若输入的解码后的误差值me为偶数,则更新的权向量等于更新前的权向量减去移位后的局部差向量,否则更新的权向量等于更新前的权向量加上移位后的局部差向量;
[0111]
步骤6.3:将步骤6.2得到的权向量约束在固定范围[w
min
,w
max
]内,其中w
min
、w
max
分别为权向量取值范围的最小值和最大值,w
min
=-2
19
、w
max
=2
19-1,得到最终更新后的权向量,更新后的权向量用于下一像素的重建。
[0112]
步骤6.4:重复步骤1~步骤6,直到完成所有码流的解压;
[0113]
步骤7:并行输出当前窗口内的重建像素数据,实现图像的压缩。
[0114]
本发明在fpga上以全流水线的结构实现了ccsds120.2-g-1标准的无损数据解压,输入数据位宽最大可达12bit,数据处理速度可达70msamples/s,和现有采用cpu进行解压缩的技术相比,该系统处理速度更快,功耗更小,可以应用于地质勘探、农业研究和星载遥感图像研究等领域的高光谱图像解压,特别适用于卫星或者空间站的高光谱图像数据的实时解压缩。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1