首页> 中国专利> 基于JPEG-LS帧间扩展的遥感图像压缩算法硬件实现方法

基于JPEG-LS帧间扩展的遥感图像压缩算法硬件实现方法

摘要

本发明公开了一种基于JPEG‑LS帧间扩展的遥感图像压缩算法硬件实现方法,属于图像压缩技术领域。本发明方法包括步骤:(1)压缩模式控制;(2)编码帧和参考帧图像分块;(3)运动估计,获取最佳匹配块;(4)多预测器并行计算,选择最佳预测器;(5)多支路建模与预测,得到残差;(6)对残差进行哥伦布限长编码,输出压缩码流;本发明方法支持分块存取的多通道数据缓存、全搜索运动估计、多预测器并行计算的高效帧间扩展结构,采用流水线与模板滑窗的思想,提高了像素吞吐率;在JPEG‑LS帧内压缩的基础上引入帧间信息,采用运动补偿的帧间预测技术,同时消除图像空间冗余和时间冗余,压缩效率较高。

著录项

  • 公开/公告号CN113207004A

    专利类型发明专利

  • 公开/公告日2021-08-03

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN202110483170.X

  • 申请日2021-04-30

  • 分类号H04N19/527(20140101);H04N19/176(20140101);H04N19/107(20140101);H04N19/109(20140101);H04N19/166(20140101);H04N19/436(20140101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人刘洋洋

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2023-06-19 12:05:39

说明书

技术领域

本发明属于图像压缩技术领域,更具体地,涉及一种基于JPEG-LS帧间扩展的遥感图像压缩算法硬件实现方法。

背景技术

随着我国卫星遥感技术的迅速发展,星载成像类载荷产生的数据量日益增大。巨大的遥感图像数据量,给有限的星上存储与星地链路带宽带来极大的压力,进行星载遥感图像压缩是解决这一问题的有效措施。JPEG-LS是针对连续色调图像无损压缩的ISO/ITU标准,具备优异的压缩性能,并且对计算复杂度控制较好,基于JPEG-LS帧间扩展的图像无损/近无损压缩算法,采用运动补偿与多预测器,在空间二维的基础上引入图像时间维的信息,可同时降低序列图像在空间和时间上的像素相关性,从而获得更高的压缩比。

卫星遥感成像代价较高,数据极其宝贵,因此在对图像压缩编码时,需确保关注区域重要信息高度保真,但高保真压缩算法的压缩效率通常较低,给星地链路传输带宽带来了极大的压力。此外,星上平台计算资源和存储资源匮乏,无法长时间存储相机和码流数据,因此星载系统必须在有限资源约束下实现强实时压缩功能。综上,星载遥感图像压缩系统面临高保真、强实时技术难题,需解决压缩比与保真度、实时压缩资源需求与星上资源有限两大矛盾。

针对高保真压缩难题,专利“防误码扩散的JPEG-LS图像无损/近无损压缩方法”(专利申请号:CN201610165800.8,公开号:CN105828070A)在JPEG-LS基础上引入分区压缩的方法,在确保感兴趣目标不丢失的前提下,对不同区域采用不同的微损度参数,提升了图像的整体压缩比。但这种方法只考虑图像空间相关性,不能去除序列图像时间上的冗余,导致压缩比仍然较低。

针对强实时压缩难题,专利“JPEG-LS常规编码硬件实现方法”(专利申请号:CN201210198818.X,公开号:CN102724506A)致力于解决JPEG-LS压缩算法中参数更新与误差值计算结构复杂、处理速率缓慢的问题。但这种方法仅实现了标准中的无损压缩功能,回避了像素重建反馈回路的实时实现问题,导致丧失了近无损压缩功能。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于JPEG-LS帧间扩展的遥感图像压缩方法,其目的在于实现持分块存取的多通道数据缓存、全搜索运动估计、多预测器并行计算的高效帧间扩展结构,采用流水线与模板滑窗的思想,由此解决星载遥感图像数据压缩系统中高保真压缩下压缩比较低、有限资源约束下压缩算法实时实现难度较大的问题。

为实现上述目的,本发明提供了一种基于JPEG-LS帧间扩展的遥感图像压缩算法硬件实现方法,所述方法包括以下步骤:

(1)使用片外存储器缓存编码帧和参考帧图像数据,按照不同的分块行列参数,分别得到编码块和搜索块数据;

(2)在参考帧形成的运动搜索块中,基于SAD准则进行全搜索,得到编码块的最佳匹配块,并将编码块和匹配块输出至下一级;

(3)生成编码块和匹配块图像同步因果模板,多个预测器并行计算,块内残差绝对值之和最小的为最佳预测器;

(4)使用最佳预测器进行固定预测,结合自适应修正器,计算预测残差,并根据上下文建模参数得到哥伦布编码参数;

(5)计算编码参数,完成哥伦布限长编码,压缩码流与解码辅助信息组帧输出。

具体地,所述步骤(1)具体包括:

(11)使用四个FIFO分别缓存编码帧写入数据、读出数据,参考帧写入数据、读出数据,并提供数据位宽转换与时钟隔离的功能;

(12)定义计数器,对写数据使能信号进行计数,完成存储地址累加和数据顺序写入;根据分块行列参数,当缓存至分块行数时,进行读地址与偏移地址计算,从存储区输出大小相同、互不重叠的编码块数据;

(13)因图像分块压缩,压缩重建图像数据以分块形式存在,需根据分块行列参数计算写地址和偏移地址,得到完整的参考帧图像数据;设置运动搜索步长为P,确定搜索块行列参数分别为ROW+2P和COL+2P,进行读地址与偏移地址计算,输出大小相同、互有重叠的搜索块数据;

(14)统计多个通道的水位情况,写通道水位是输入FIFO缓存量和该存储分区的空闲空间,读通道水位是输出FIFO空闲空间和该存储分区缓存量;采用固定优先级的策略,对各通道水位情况进行判断,哪个通道水位高,就将总线分配给哪个通道,完成数据传输。

具体地,所述步骤(2)具体包括:

(21)使用2P个FIFO,(2P+1)×(2P+1)个寄存器,级联缓存搜索块四行数据,当搜索块第五行第五个数据到来时,形成(2P+1)×(2P+1)匹配窗口,此时读取编码块第一行第一个数据,将编码块数据与窗口数据对齐,输出至SAD计算模块;当搜索块第(2P+1)行第(2P+2)个数据到来时,形成新的(2P+1)×(2P+1)匹配窗口,此时读取编码块第一行第二个数据,对齐输出至SAD计算模块,在(ROW+2P)×(COL+2P)个像素时钟周期后完成SAD计算;

(22)编码块每个像素数据与匹配窗口每个像素数据扩展符号位,使用组合逻辑进行作差;后判断差值符号位,若符号位为负,对数据进行按位取反再加1,若符号位为正,则数据保持不变,得到差值的绝对值;使用一个位数足够的累加器,统计绝对值之和,等到一个编码块中所有像素统计结束时,将(2P+1)×(2P+1)个绝对值之和送至比较选择电路模块;

(23)将(2P+1)×(2P+1)个匹配结果分为(2P+1)组,使用两级流水线进行比较;第一级流水线比较每组中的(2P+1)个数据得到每组的最小值,第二级流水线比较(2P+1)个最小值得到最终的最小值;结果最小的为最佳匹配块,输出该编码块的运动矢量{m,n},并将最佳匹配块的绝对值之和输出至预测器选择模块,作为第四预测器的残差绝对值之和;

(24)使用两个片上FIFO分别存储搜索块和编码块数据,搜索块数据量为(ROW+2P)×(COL+2P),编码块数据量为ROW×COL,当最佳匹配块结果输出后,读出搜索块数据,根据行列计数确定数据是否有效,当数据有效时,对应读出一个编码块数据,一起输出至预测器选择模块。

具体地,所述步骤(3)具体包括:

(31)以图像块为单位,对像素进行行列计数;将编码块原始像素Ix和匹配块重建像素Rx_i拼接后写入FIFO缓存,缓存一行后开始读FIFO并分解数据,输出3个帧内因果模板像素Ia、Ib、Ic和4个帧间因果模板像素Ra_i、Rb_i、Rc_i、Uk;

模板结构及边界处理方式具体是:

编码块像素处于非特殊行特殊列时,Ia为左邻像素、Ib是上邻像素、Ic是左上邻像素;

编码块像素处于第一行第一列时,均使用首像素;

编码块像素处于第一行非第一列时,Ib、Ic使用首像素;

编码块像素处于非第一行非第一列时,Ia使用Ib,Ic使用上一行的Ia;参考帧像素同理;

(32)使用帧内、帧间因果模板像素并行计算三个预测值Px_1、Px_2、Px_3;第一预测器为帧内预测器,第二、三预测器为帧间预测器;

(33)将当前像素实际值和三个预测值分别作差,计算不同预测器的残差值,后取绝对值,统计一个分块内的残差绝对值之和;当一个分块数据统计结束时,对齐运动估计模块输出的第四预测器的残差绝对值之和,输出至预测器选择模块;

(34)对4个求和值SUM4、SUM2、SUM3和SUM4进行比较,求和最小的为最佳预测器;

(35)将编码块和匹配块像素数据拼接,使用FIFO缓存,等预测器选择结果输出后,开始读出FIFO中数据;将分块数据伴随预测器选择结果一起送到多支路建模与预测模块。

具体地,步骤(4)具体包括:

(41)以图像子块为单位,对像素进行行列计数;将编码块重建像素Rx和匹配块重建像素Rx_i拼接后写入FIFO缓存,缓存一行后开始读FIFO并分解数据,输出4个帧内因果模板像素Ra、Rb、Rc、Rd和4个帧间因果模板像素Ra_i、Rb_i、Rc_i、Uk;

模板结构及边界处理方式具体是:

编码块像素处于非特殊行特殊列时,Ra为左邻像素、Rb是上邻像素、Rc是左上邻像素、Rd是右上邻像素;

编码块像素处于第一行第一列时,均使用首像素;

编码块像素处于第一行非第一列时,Rb、Rc、Rd使用首像素;

编码块像素处于非第一行非第一列时,Ra使用Rb,Rc使用上一行的Ra;

编码块像素处于非第一行最后一列时,Rd使用Rb;参考帧像素同理;

(42)依据近无损压缩限失真特性,像素重建值Rx与像素实际值Ix_r的关系是Rx=Ix_r±Near;设Near最大为2时Ra预测值为Ix_r-2、Ix_r-1、Ix_r、Ix_r+1、Ix_r+2五种情况;

(43)利用编码块因果模板Ra、Rb、Rc、Rd,对当前像素所处的局部环境进行建模,得到地址索引值Q1、Q2和翻转符号SIGN1、SIGN2;

(44)流水线设计过程中,需记录上下文参数从RAM读出到RAM更新四个时钟周期中像素地址冲突情况,即当前周期与接下来三个周期的像素上下文地址逐一比较,相同即为冲突置1,否则置0,形成地址冲突类型Conflict1[2:0]、Conflict2[2:0]。并根据地址冲突类型Conflict1[0]、Conflict2[0]标志位,判断发生读写冲突时不进行读RAM操作;

(45)Ra预测为五种取值,使用最佳预测器进行预测,得到预测值Px_1、Px_2、Px_3、Px_4、Px_5;根据地址冲突类型Conflict1、Conflict2,分别选择出C_sel1、C_sel2、N_sel1、N_sel2;对选择后的参数N进行更新得到N_update1、N_update2,并产生N参数更新标识N_flag1、N_flag2;使用对应像素上下文地址的C参数,对固定预测值进行校正,得到Px_correct1、Px_correct2、Px_correct3、Px_correct4、Px_correct5;使用像素实际值Ix与预测校正值作差,当SIGN为-1时,对残差进行翻转,得到Errval1、Errval2、Errval3、Errval4、Errval5;

(46)等到上一时钟周期的像素重建完成,选择正确的重建值Ra支路,得到残差Errval、符号SIGN、地址冲突类型Conflict;为简化除法计算,采用查表方式进行残差量化,ROM读地址为{|Errval|,Near},存储的数据为{|Errval_q|,Remainder};

(47)C更新存在±2、±1、不变五种情况,对残差量化的余数进行补偿,并根据余数和除数的关系调整商即残差量化值|Errval_q|,结合残差量化值的符号Symbol,确定残差量化值Errval_q。。根据像素实际值Ix、符号SIGN、残差量化值的符号Symbol、微损度Near和残差量化补偿后的余数Remainder,得到像素重建值。对补偿后的残差量化值进行取模,缩小范围;

(48)根据地址冲突类型Conflict和相邻两个像素C参数更新标识C_flag、C_flag_r,选择正确的C支路,得到残差取模值Errval_mod、像素重建值Rx、正确的参数校正值C_correct;

(49)根据地址冲突类型选择对应A、B参数,得到A_sel、B_sel;结合N_flag完成A、B、C参数的更新,将更新后的A、B、C、N同时写入两组参数RAM中;使用更新前的A参数和N参数,计算Golomb编码参数K;根据微损度Near、编码参数K、更新前的B参数和N参数,对残差取模值Errval_mod映射成非负整数MErrval;

具体地,步骤(43)具体包括:

(431)根据Ra、Rb、Rc、Rd计算三个局部梯度,D[0]为Rd与Rb作差,D[1]为Rb与Rc作差,D[2]为Rc与Ra作差;注意,因Ra有5个值,那么D[2]也有5个值,D[2]最大值为Rc-Ix_r+Near、最小值为Rc-Ix_r-Near、最大值与最小值相差2Near;

(432)根据量化阈值T1、T2、T3以及Near,对梯度D[0]、D[1]、D[2]进行量化;当D[i]≤-T3时,Q[i]=-4;当-T3<D[i]≤-T2时,Q[i]=-3;当-T2<D[i]≤-T1时,Q[i]=-2;当-T1<D[i]<-Near时,Q[i]=-1;当-Near≤D[i]≤Near时,Q[i]=0;当Near<D[i]<T1时,Q[i]=1;当T1≤D[i]<T2时,Q[i]=2;当T2≤D[i]<T3时,Q[i]=3;当T3≤D[i]时,Q[i]=4;注意,因量化最小区间为2Near,而D[2]最大值与最小值相差2Near,所以Q[2]最多只有两个不同值;

(433)对梯度量化值(Q[0],Q[1],Q[2])进行梯度融合,即Q=81*Q[0]+9*Q[1]+Q[2];如果(Q[0],Q[1],Q[2])第一个非零元素为负,则将其翻转为(-Q[0],-Q[1],-Q[2]),再进行梯度融合,并将符号SIGN置为-1;注意,因Q[2]有两个值,最终得到两个地址索引值Q1、Q2和翻转符号SIGN1、SIGN2;

具体地,步骤(49)包括以下子步骤:

(491)根据地址冲突类型Conflict,选择出A_sel、B_sel输出到上下文参数更新模块;

(492)使用A_sel、B_sel、C_correct、N_flag对A参数、B参数、C参数完成更新,更新过程采用组合逻辑;将更新后的参数A_update、B_update、C_update、N_update同时写到两组参数RAM中;并将当前像素未更新的A_sel、B_sel、N_sel和残差取模值Errval_mod送至K值计算和残差映射模块;

(493)根据算法原理,将N参数依次左移,与A参数比较,直到N参数左移K位后大于等于A参数,此时输出K值;

(494)根据算法原理,区分无损和微损的残差映射方式,将有符号残差取模值Errval_mod映射成非负整数残差映射值MErrval;注意无损时需要判断B参数与N参数关系;

具体地,步骤(5)包括以下子步骤:

(51)使用组合逻辑将残差映射值MErrval右移K位,经过一级D触发器得到商val_temp;再将val_temp左移K位,经过一级D触发器得到MErrval_temp;再将MErrval_temp与MErrval作差,经过一级D触发器输出余数n。为了同步商和余数,将val_temp打两拍寄存器输出商val;

(52)若val值<码长上限参数MAX=LIMIT-qbpp-1时,则码流由val比特0、1比特1和K比特n组成,否则由LIMIT-qbpp-1比特0、1比特1和qbpp比特MErrval组成;

(53)定义64位寄存器reg64,第一个像素的码流数据放置reg64的低位,等待下一个码流数据到来时,左移原有码流数据,将新的码流数据放入reg64的低位,当寄存器写满64bit时,将其输出至FIFO并清空该寄存器,循环上述操作;

(54)当一个编码块压缩结束,将分块首像素、运动矢量、预测器选择、分块码流长度作为边信息与码流组帧形成一个分块数据。帧内/帧间压缩模式参数、帧间压缩周期参数、微损度Near值参数、分块行列参数作为整图边信息与所有分块数据形成最终的压缩码流输出;

具体地,所述步骤(1)之前还包括步骤:

按照协议解析注数指令,完成压缩参数初始化,同时控制整个压缩工作模式;具体包括子步骤:

S1、按照协议,解析帧内/帧间压缩模式参数、帧间压缩周期参数、微损度Near值参数、像素位宽参数、分块行列参数。

S2、根据微损度Near和像素位宽bpp计算像素值范围RANGE,进而计算qbpp、哥伦布编码限长LIMIT、梯度量化阈值;计算上下文参数A、B、C、N,对两组参数RAM进行初始化;

S3、依据帧内帧间压缩模式参数、帧间压缩周期参数,控制当前帧压缩状态;帧内压缩时,跳过参考帧图像分块、运动估计,直接选择帧内预测器,所有图像帧进行帧内压缩;帧间压缩时,起始帧进行帧内压缩,一个周期内其余帧进行帧间压缩。

按照本发明的另一方面,本发明提供了一种基于JPEG-LS帧间扩展的遥感图像压缩算法硬件实现系统,所述系统包括以下部分:

第一模块,用于使用片外存储器缓存编码帧和参考帧图像数据,按照不同的分块行列参数,分别得到编码块和搜索块数据;

第二模块,用于在参考帧形成的运动搜索块中,基于SAD准则进行全搜索,得到编码块的最佳匹配块,并将编码块和匹配块输出至下一级;

第三模块,用于生成编码块和匹配块图像同步因果模板,多个预测器并行计算,块内残差绝对值之和最小的为最佳预测器;

第四模块,用于使用最佳预测器进行固定预测,结合自适应修正器,计算预测残差,并根据上下文建模参数得到哥伦布编码参数;

第五模块,用于计算编码参数,完成哥伦布限长编码,压缩码流与解码辅助信息组帧输出。

具体地,所述第一模块具体包括:

第一单元,用于使用四个FIFO分别缓存编码帧写入数据、读出数据,参考帧写入数据、读出数据,并提供数据位宽转换与时钟隔离的功能;

第二单元,用于定义计数器,对写数据使能信号进行计数,完成存储地址累加和数据顺序写入;根据分块行列参数,当缓存至分块行数时,进行读地址与偏移地址计算,从存储区输出大小相同、互不重叠的编码块数据;

第三单元,用于因图像分块压缩,压缩重建图像数据以分块形式存在,需根据分块行列参数计算写地址和偏移地址,得到完整的参考帧图像数据;设置运动搜索步长为P,确定搜索块行列参数分别为ROW+2P和COL+2P,进行读地址与偏移地址计算,输出大小相同、互有重叠的搜索块数据;

第四单元,用于统计多个通道的水位情况,写通道水位是输入FIFO缓存量和该存储分区的空闲空间,读通道水位是输出FIFO空闲空间和该存储分区缓存量;采用固定优先级的策略,对各通道水位情况进行判断,哪个通道水位高,就将总线分配给哪个通道,完成数据传输。

具体地,所述第二模块具体包括:

生成匹配模板单元,用于使用2P个FIFO,(2P+1)×(2P+1)个寄存器,级联缓存搜索块四行数据,当搜索块第五行第五个数据到来时,形成(2P+1)×(2P+1)匹配窗口,此时读取编码块第一行第一个数据,将编码块数据与窗口数据对齐,输出至SAD计算模块;当搜索块第(2P+1)行第(2P+2)个数据到来时,形成新的(2P+1)×(2P+1)匹配窗口,此时读取编码块第一行第二个数据,对齐输出至SAD计算模块,在(ROW+2P)×(COL+2P)个像素时钟周期后完成SAD计算;

并行计算单元,用于将编码块每个像素数据与匹配窗口每个像素数据扩展符号位,使用组合逻辑进行作差;后判断差值符号位,若符号位为负,对数据进行按位取反再加1,若符号位为正,则数据保持不变,得到差值的绝对值;使用一个位数足够的累加器,统计绝对值之和,等到一个编码块中所有像素统计结束时,将(2P+1)×(2P+1)个绝对值之和送至比较选择电路模块;

比较选择单元,用于将(2P+1)×(2P+1)个匹配结果分为(2P+1)组,使用两级流水线进行比较;第一级流水线比较每组中的(2P+1)个数据得到每组的最小值,第二级流水线比较(2P+1)个最小值得到最终的最小值;结果最小的为最佳匹配块,输出该编码块的运动矢量{m,n},并将最佳匹配块的绝对值之和输出至预测器选择模块,作为第四预测器的残差绝对值之和;

缓存与输出单元,用于使用两个片上FIFO分别存储搜索块和编码块数据,搜索块数据量为(ROW+2P)×(COL+2P),编码块数据量为ROW×COL,当最佳匹配块结果输出后,读出搜索块数据,根据行列计数确定数据是否有效,当数据有效时,对应读出一个编码块数据,一起输出至预测器选择模块。

具体地,所述第三模块具体包括:

同步因果模板单元,用于以图像块为单位,对像素进行行列计数;将编码块原始像素Ix和匹配块重建像素Rx_i拼接后写入FIFO缓存,缓存一行后开始读FIFO并分解数据,输出3个帧内因果模板像素Ia、Ib、Ic和4个帧间因果模板像素Ra_i、Rb_i、Rc_i、Uk;编码块像素处于非特殊行特殊列时,Ia为左邻像素、Ib是上邻像素、Ic是左上邻像素;

编码块像素处于第一行第一列时,均使用首像素;

编码块像素处于第一行非第一列时,Ib、Ic使用首像素;

编码块像素处于非第一行非第一列时,Ia使用Ib,Ic使用上一行的Ia;参考帧像素同理;

预测器并行计算单元,用于使用帧内、帧间因果模板像素并行计算三个预测值Px_1、Px_2、Px_3;第一预测器为帧内预测器,第二、三预测器为帧间预测器;

残差绝对值求和单元,用于将当前像素实际值和三个预测值分别作差,计算不同预测器的残差值,后取绝对值,统计一个分块内的残差绝对值之和;当一个分块数据统计结束时,对齐运动估计模块输出的第四预测器的残差绝对值之和,输出至预测器选择模块;

预测器选择单元,用于对4个求和值SUM4、SUM2、SUM3和SUM4进行比较,求和最小的为最佳预测器;

分块像素缓存与输出单元,用于将编码块和匹配块像素数据拼接,使用FIFO缓存,等预测器选择结果输出后,开始读出FIFO中数据;将分块数据伴随预测器选择结果一起送到多支路建模与预测模块。

具体的,所述系统还包括模式控制模块,具体用于按照协议解析注数指令,完成压缩参数初始化,同时控制整个压缩工作模式;具体包括以下子模块:

第一子模块,用于按照协议,解析帧内/帧间压缩模式参数、帧间压缩周期参数、微损度Near值参数、像素位宽参数、分块行列参数。

第二子模块,用于根据微损度Near和像素位宽bpp计算像素值范围RANGE,进而计算qbpp、哥伦布编码限长LIMIT、梯度量化阈值;计算上下文参数A、B、C、N,对两组参数RAM进行初始化;

第三子模块,用于依据帧内帧间压缩模式参数、帧间压缩周期参数,控制当前帧压缩状态;帧内压缩时,跳过参考帧图像分块、运动估计,直接选择帧内预测器,所有图像帧进行帧内压缩;帧间压缩时,起始帧进行帧内压缩,一个周期内其余帧进行帧间压缩。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

(1)本发明提出了一种基于JPEG-LS帧间扩展的遥感图像无损/近无损压缩硬件计算架构,设计了支持分块存取的多通道数据缓存、全搜索运动估计、多预测器并行计算的高效帧间扩展结构,采用流水线与模板滑窗的思想,提高了像素吞吐率;

(2)本发明在JPEG-LS帧内压缩的基础上引入帧间信息,采用运动补偿的帧间预测技术,同时消除图像空间冗余和时间冗余,压缩效率较高;遥感图像幅面较大,不同区域有着不同特性,分块自适应选择最佳预测器,可获得更高的压缩比;

(3)本发明通过预先旁路运动估计,选择帧内/帧间预测器,配置微损度参数,能实现帧内/帧间-无损/近无损压缩方法任意切换,提升压缩系统灵活性,同时为有限带宽约束下实现码率可控提供可行性;

(4)星地传输链路易受空间电磁干扰出现误码,本发明设置固定的帧间压缩周期,有规律地插入帧内压缩帧,打破地面解码依赖关系,可将误码扩散限制在一个帧间压缩周期内,提升抗误码能力。

附图说明

图1为本发明实施例中的硬件实现架构框图;

图2为本发明实施例中的运动补偿帧间扩展的详细计算架构示意图;

图3为本发明实施例中的JPEG-LS编码器的详细计算架构示意图;

图4为本发明实施例中的参考帧和编码帧图像分块示意图;

图5为本发明实施例中的运动估计快速匹配模板示意图;

图6为本发明实施例中的快速匹配模板实现方法示意图;

图7为本发明实施例中的预测器选择模板因果模板示意图;

图8为本发明实施例中的多预测器公式示意图;

图9为本发明实施例中的并行前向预测模块因果模板示意图;

图10为本发明实施例中的前向预测各周期任务与RAM操作示意图;

图11为本发明实施例中的像素重建改进公式原理示意图;

图12为本发明实施例中的A参数和B参数更新后四个周期示意图;

图13为本发明实施例中的限长编码示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1所示为采用本发明方法实施例的硬件实现框架,图2为其中运动补偿帧间扩展的详细计算架构,图3为其中JPEG-LS编码器的详细计算架构;本实施例的实现主要包括以下步骤:

S1.压缩模式控制:按照协议解析注数指令,完成压缩参数初始化,同时控制整个压缩工作模式。

具体地,步骤S1包括以下子步骤:

S11.解析注数指令:按照协议,解析帧内/帧间压缩模式参数(帧间)、帧间压缩周期参数(16)、微损度Near值参数(2)、像素位宽参数(12)、分块行列参数(16X16)。

S12.参数初始化:根据微损度Near=2和像素位宽bpp=12计算像素值范围RANGE=820,进而计算qbpp=10、Golomb编码限长LIMIT=48。梯度量化阈值默认为T1=18、T2=67、T3=276。计算上下文参数A=13、B=0、C=0、N=1,对两组参数RAM进行初始化。使用真双口RAM,在两个端口上同时写入,减少初始化时间。

S13.模式控制:依据帧内帧间压缩模式参数、帧间压缩周期参数,控制当前帧压缩状态。帧间压缩时,第1帧进行帧内压缩,直接使用帧内预测器,第2-16帧进行帧间压缩。然后第17帧进行帧内压缩,接下来15帧进行帧间压缩,以此类推。

S2.编码帧和参考帧图像分块:使用片外存储器SDRAM缓存编码帧和参考帧图像数据,按照不同的分块行列参数,分别得到编码块和搜索块数据。编码帧和参考帧分块示意图如图4所示。

具体地,步骤S2包括以下子步骤:

S21.FIFO缓存与隔离:使用四个FIFO分别缓存编码帧写入数据、读出数据,参考帧写入数据、读出数据,并提供数据位宽转换与时钟隔离的功能。

S22.编码帧顺序写地址与分块读地址计算:定义计数器,对写数据使能信号进行计数,完成存储地址累加和数据顺序写入;根据分块行列参数,当缓存至分块行数时,进行读地址与偏移地址计算,从存储区输出大小相同、互不重叠的编码块数据。

S23.参考帧分块写地址与分块读地址计算:因图像分块压缩,压缩重建图像数据以分块形式存在,需根据分块行列参数计算写地址和偏移地址,得到完整的参考帧图像数据;设置运动搜索步长为2,确定搜索块行列参数(ROW+4)和(COL+4),进行读地址与偏移地址计算,输出大小相同、互有重叠的搜索块数据。

S24.多通道数据管理:统计多个通道的水位情况,写通道水位是输入FIFO缓存量和该存储分区的空闲空间,读通道水位是输出FIFO空闲空间和该存储分区缓存量。采用固定优先级的策略,对各通道水位情况进行判断,哪个通道水位高,就将总线分配给哪个通道,完成数据传输。

S3.运动估计,获取最佳匹配块:在参考帧形成的运动搜索块中,基于SAD准则进行全搜索,得到编码块的最佳匹配块。并将编码块和匹配块输出至下一级。

具体地,步骤S3包括以下子步骤:

S31.生成匹配模板:使用“4个FIFO+25个寄存器”的形式,级联缓存搜索块四行数据,当搜索块第五行第五个数据到来时,形成5X5匹配窗口,此时读取编码块第一行第一个数据,将编码块数据与窗口数据对齐,输出至SAD计算模块。当搜索块第五行第六个数据到来时,形成新的5X5匹配窗口,此时读取编码块第一行第二个数据,对齐输出至SAD计算模块,在(ROW+4)X(COL+4)个像素时钟周期后即可完成SAD计算。运动估计快速匹配模板示意图如图5所示。5X5匹配窗口实现方法示意图如图6所示。

S32.全搜索SAD并行计算:将编码块每个像素数据与匹配窗口每个像素数据扩展符号位即在最高位添加1’b0,使用组合逻辑进行作差。后判断差值符号位,若符号位为1’b1,对数据进行按位取反再加1,若符号位为1’b0,则数据保持不变,得到差值的绝对值。使用一个位数足够的累加器,统计绝对值之和,等到一个编码块中所有像素统计结束时,将25个绝对值之和送至比较选择电路模块。

S33.比较选择电路:将25个匹配结果分为5组,使用两级流水线进行比较。第一级流水线比较每组中的5个数据得到每组的最小值,第二级流水线比较5个最小值得到最终的最小值。结果最小的为最佳匹配块,输出该编码块的运动矢量{m[2:0],n[2:0]},并将最佳匹配块的绝对值之和输出至预测器选择模块,作为预测器4的残差绝对值之和。

S34.最佳匹配块缓存与输出:使用两个片上FIFO分别存储搜索块和编码块数据,搜索块数据量为(ROW+4)X(COL+4),编码块数据量为(ROW)X(COL),当最佳匹配块结果输出后,读出搜索块数据,根据行列计数确定数据是否有效,当数据有效时,对应读出一个编码块数据,一起输出至预测器选择模块。

S4.多预测器并行计算,选择最佳预测器:生成编码块、匹配块图像同步因果模板,多个预测器并行计算,块内残差绝对值之和最小的为最佳预测器。

具体地,步骤S4包括以下子步骤:

S41.生成同步因果模板:以图像块为单位,对像素进行行列计数。将编码块原始像素Ix和匹配块重建像素Rx_i拼接后写入FIFO缓存,缓存一行后开始读FIFO并分解数据,按照如图7所示模板结构及边界处理方式,输出3个帧内因果模板像素Ia、Ib、Ic和4个帧间因果模板像素Ra_i、Rb_i、Rc_i、Uk。模板结构及边界处理方式具体是:①编码块像素处于非特殊行特殊列时,Ia为左邻像素、Ib是上邻像素、Ic是左上邻像素;②编码块像素处于第一行第一列时,均使用首像素;③编码块像素处于第一行非第一列时,Ib、Ic使用首像素;④编码块像素处于非第一行非第一列时,Ia使用Ib,Ic使用上一行的Ia_。参考帧像素同理。

S42.预测器并行计算:使用帧内、帧间因果模板像素并行计算四个预测值Px_1、Px_2、Px_3。预测器计算公式如图8所示,预测器1为帧内预测器,预测器2、3为帧间预测器。预测器2包含除数为3的除法,为方便硬件计算,将其优化为乘5461然后右移14位。

S43.残差绝对值求和:根据算法原理,将当前像素实际值和三个预测值分别作差,计算不同预测器的残差值,后取绝对值,统计一个分块内的残差绝对值之和。当一个分块数据统计结束时,对齐运动估计模块输出的预测器4的残差绝对值之和,输出至预测器选择模块。

S44.预测器选择:对4个求和值进行比较,当SUM4

S45.分块像素缓存与输出:将编码块和匹配块像素数据拼接,使用FIFO缓存,等预测器选择结果输出后,开始读出FIFO中数据。将分块数据伴随预测器选择结果一起送到多支路建模与预测模块。

S5.多支路建模与预测,得到残差:使用最佳预测器进行固定预测,结合自适应修正器,计算预测残差,并根据上下文建模参数得到哥伦布编码参数。

具体地,步骤S5包括以下子步骤:

S51.生成因果模板:以图像块为单位,对像素进行行列计数。将编码块重建像素Rx和匹配块重建像素Rx_i拼接后写入FIFO缓存,缓存一行后开始读FIFO并分解数据,输出4个帧内因果模板像素Ra、Rb、Rc、Rd和4个帧间因果模板像素Ra_i、Rb_i、Rc_i、Uk。模板结构及边界处理方式具体是:①编码块像素处于非特殊行特殊列时,Ra为左邻像素、Rb是上邻像素、Rc是左上邻像素、Rd是右上邻像素;②编码块像素处于第一行第一列时,均使用首像素;③编码块像素处于第一行非第一列时,Rb、Rc、Rd使用首像素;④编码块像素处于非第一行非第一列时,Ra使用Rb,Rc使用上一行的Ra;⑤编码块像素处于非第一行最后一列时,Rd使用Rb。参考帧像素同理。具体模板结构及边界处理方式如图9所示。

S52.重建值预测:依据近无损压缩限失真特性,像素重建值Rx与像素实际值Ix_r的关系是Rx=Ix_r±Near。Near为2时Ra预测值为Ix_r-2、Ix_r-1、Ix_r、Ix_r+1、Ix_r+2五种情况。

S53.上下文建模:利用编码块因果模板Ra、Rb、Rc、Rd,对当前像素所处的局部环境进行建模,得到地址索引值Q1、Q2和翻转符号SIGN1、SIGN2。

具体地,步骤S53包括以下子步骤:

S531.梯度计算:根据Ra、Rb、Rc、Rd计算三个局部梯度,D[0]为Rd与Rb作差,D[1]为Rb与Rc作差,D[2]为Rc与Ra作差。注意,因Ra有5个值,那么D[2]也有5个值,D[2]最大值为Rc-Ix_r+Near、最小值为Rc-Ix_r-Near、最大值与最小值相差2Near。

S532.梯度量化:根据量化阈值T1=16、T2=67、T3=276以及Near=2,对梯度D[0]、D[1]、D[2]进行量化。当D[i]≤-T3时,Q[i]=-4;当-T3<D[i]≤-T2时,Q[i]=-3;当-T2<D[i]≤-T1时,Q[i]=-2;当-T1<D[i]<-Near时,Q[i]=-1;当-Near≤D[i]≤Near时,Q[i]=0;当Near<D[i]<T1时,Q[i]=1;当T1≤D[i]<T2时,Q[i]=2;当T2≤D[i]<T3时,Q[i]=3;当T3≤D[i]时,Q[i]=4。注意,因量化最小区间为2Near,而D[2]最大值与最小值相差2Near,所以Q[2]最多只有两个不同值。

S533.梯度融合与符号标记:对梯度量化值(Q[0],Q[1],Q[2])进行梯度融合,即Q=81*Q[0]+9*Q[1]+Q[2]。如果(Q[0],Q[1],Q[2])第一个非零元素为负,则将其翻转为(-Q[0],-Q[1],-Q[2]),再进行梯度融合,并将符号SIGN置为-1。注意,因Q[2]有两个值,最终得到两个地址索引值Q1、Q2和翻转符号SIGN1、SIGN2。

S54.上下文地址冲突控制:各周期任务与RAM操作如图10所示。流水线设计过程中,需记录上下文参数从RAM读出到RAM更新四个时钟周期中像素地址冲突情况,即当前周期与接下来三个周期的像素上下文地址逐一比较,相同即为冲突置1,否则置0,形成地址冲突类型Conflict1[2:0]、Conflict2[2:0]。并根据地址冲突类型Conflict1[0]、Conflict2[0]标志位,判断发生读写冲突时不进行读RAM操作。

S55.预测、预测校正、残差计算:Ra预测为五种取值,使用最佳预测器进行预测,得到预测值Px_1、Px_2、Px_3、Px_4、Px_5。根据地址冲突类型Conflict1、Conflict2,分别选择出C_sel1、C_sel2、N_sel1、N_sel2。对选择后的参数N进行更新得到N_update1、N_update2,并产生N参数更新标识N_flag1、N_flag2。使用对应像素上下文地址的C参数,对固定预测值进行校正,得到Px_correct1、Px_correct2、Px_correct3、Px_correct4、Px_correct5。使用像素实际值Ix与预测校正值作差,当SIGN为-1时,对残差进行翻转,得到Errval1、Errval2、Errval3、Errval4、Errval5。

S56.重建值选择:等到上一时钟周期的像素重建完成,选择正确的重建值Ra支路,得到残差Errval、符号SIGN、地址冲突类型Conflict。为简化除法计算,采用查表方式进行残差量化,ROM读地址为{|Errval|,Near},存储的数据为{|Errval_q|,Remainder}。

S57.残差量化补偿、像素重建、残差取模:C更新存在±2、±1、不变五种情况,对残差量化的余数进行补偿,并根据余数和除数的关系调整商即残差量化值|Errval_q|,结合残差量化值的符号Symbol,确定残差量化值Errval_q。像素重建改进公式原理如图11所示。根据像素实际值Ix、符号SIGN、残差量化值的符号Symbol、微损度Near和残差量化补偿后的余数Remainder,得到像素重建值。对补偿后的残差量化值进行取模,缩小范围。

S58.补偿选择:根据地址冲突类型Conflict和相邻两个像素C参数更新标识C_flag、C_flag_r,选择正确的C支路,得到残差取模值Errval_mod、像素重建值Rx、正确的参数校正值C_correct。

S59.上下文参数更新、K值计算、残差映射:根据地址冲突类型选择对应A、B参数,得到A_sel、B_sel。结合N_flag完成A、B、C参数的更新,将更新后的A、B、C、N同时写入两组参数RAM中。使用更新前的A参数和N参数,计算Golomb编码参数K。根据微损度Near、编码参数K、更新前的B参数和N参数,对残差取模值Errval_mod映射成非负整数MErrval。

具体地,步骤S59包括以下子步骤:

S591.上下文参数A、B选择:A参数和B参数在4个临近周期的情况如图12所示。根据地址冲突类型Conflict,选择出A_sel、B_sel输出到上下文参数更新模块。

S592.上下文参数更新:使用A_sel、B_sel、C_correct、N_flag对A参数、B参数、C参数完成更新,更新过程采用组合逻辑。将更新后的参数A_update、B_update、C_update、N_update同时写到两组参数RAM中。并将当前像素未更新的A_sel、B_sel、N_sel和残差取模值Errval_mod送至K值计算和残差映射模块。

S593.K值计算:根据算法原理,将N参数依次左移,与A参数比较,直到N参数左移K位后大于等于A参数,此时输出K值。

S594.残差映射:根据算法原理,区分无损和微损的残差映射方式,将有符号残差取模值Errval_mod映射成非负整数残差映射值MErrval。注意无损时需要判断B参数与N参数关系。

S6.对残差进行哥伦布限长编码,输出压缩码流:计算编码参数,完成哥伦布限长编码,压缩码流与解码辅助信息组帧输出。

具体地,步骤S6包括以下子步骤:

S61.商和余数计算:使用组合逻辑将残差映射值MErrval右移K位,经过一级D触发器得到商val_temp;再将val_temp左移K位,经过一级D触发器得到MErrval_temp;再将MErrval_temp与MErrval作差,经过一级D触发器输出余数n。为了同步商和余数,将val_temp打两拍寄存器输出商val。

S62.限长编码:限长编码示意图如图13所示。若val值<码长上限参数MAX=LIMIT-qbpp-1时,则码流由val比特0、1比特1和K比特n组成,否则由LIMIT-qbpp-1比特0、1比特1和qbpp比特MErrval组成。

S63.编码FIFO缓存:定义64位寄存器reg64,第一个像素的码流数据放置reg64的低位,等待下一个码流数据到来时,左移原有码流数据,将新的码流数据放入reg64的低位,当寄存器写满64bit时,将其输出至FIFO并清空该寄存器,循环上述操作。

S64.组帧输出:当一个编码块压缩结束,将分块首像素、运动矢量、预测器选择、分块码流长度作为边信息与码流组帧形成一个分块数据。帧内/帧间压缩模式参数、帧间压缩周期参数、微损度Near值参数、分块行列参数作为整图边信息与所有分块数据形成最终的压缩码流输出。

以上内容本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号