基于jpeg2000标准的多线程算术编码电路和方法

文档序号:7886385阅读:154来源:国知局
专利名称:基于jpeg2000标准的多线程算术编码电路和方法
基于JPEG2000标准的多线程算术编码电路和方法技术领域
本发明属于微电子技术领域,涉及芯片设计,特别是一种符合JPEG2000标准的算术编码器的编码方法和电路结构,主要应用于数字图像编码芯片设计领域。
背景技术
JPEG2000作为新一代静态压缩编码标准已被广泛应用到互联网、图像传输等多个领域。与传统的JPEG相比,JPEG2000具有高效的压缩效果和良好的抗误码能力,它支持质量可伸缩性、分辨率可伸缩性、感兴趣区域编码,并且在同一框架中同时支持无损和有损压缩。
JPEG2000算法主要由离散小波变换DWT、优化截断的嵌入式块编码算法EBC0T、量化、位平面编码、算术编码器MQ及码流控制这几个模块组成。其中小波变换和块编码技术提高了图像编码产生的码流的抗误码能力;而内嵌技术为灵活的码流控制提供了可能,即可以实现无损、有损图像压缩的兼容。位平面编码和算术编码器MQ是JPEG2000中复杂度较高的2个模块,这2个模块处理的时间花费了整个编码时间的一半以上。当前的位平面编码处理速度已经远超过算术编码器MQ的速度,位平面编码可以并行产生多对上下文数据,而算术编码器MQ算法由于其对上下文编码结果之间的依赖性,只能串行处理每个上下文数据,故算术编码器MQ的编码速率已经成为了制约JPEG2000处理速度的关键所在。
在JPEG2000中,MQ编码器用来读入位平面编码模块产生的码块上下文CX和二元判决D,然后经过编码得到每个独立码块系数的数据压缩码流CD。它的编码算法主要由查找索引及概率估计值表、重归一化及码流输出这三个步骤组成。
索引及概率估计值表为一个两级的查找表第一级为索引表,第二级为概率估计值表。在JPEG2000中,有0-18共19个可能的上下文CX。第一级的索引表为一个动态可调整的查找表,存放19个上下文CX当前时钟周期各自对应的索引值。其中,每一个CX对应有47个不同的索引值。而第二级的概率估计值表为固定不可变的查找表,存放索引值所对应的下一个大概率索引值NMPS(6bit)和下一个小概率索引值NLPS(6bit)、交换位 SffITCH(Ibit)和概率估计值Qe(16bit)共四位。MQ编码器当前接收的上下文CX依次经过两级的查找,获得正确的概率估计值Qe。
在MQ算术编码器中,用区间调整寄存器A表示当前子区间的宽度,编码寄存器C 表示子区间的起始位置。其中区间调整寄存器A为16bit,编码寄存器CS^bit。在得到正确的概率估计值Qe之后,根据编码区间的不同,对区间调整寄存器A和编码寄存器C进行归一化。其中,区间调整寄存器A更新为A-Qe或者Qe,编码寄存器C更新为C+Qe或者保持。为了使区间调整寄存器A的取值范围保持在W. 75,0.5],对其进行不断的左移。每次区间调整寄存器A左移一位时,对内置的计数器CT进行减1操作,直到A > 0x8000时,停止对区间调整寄存器A左移。在寄存器A左移的同时,编码寄存器C也左移相同的位数,直到CT = 0时,停止移位,将编码寄存器C的高位作为压缩数据CD输出。
在传统的MQ编码方法中,完全按照JPEG2000标准实现,没有充分利用硬件电路可以并行计算的特点,只能实现串行编码,一个时钟周期处理一个上下文CX,如号为 03129690.4的专利申请,号为200410026019. X的专利申请就是这种。近年来,已有的一些论文中,提出了一些能够并行处理多个上下文CX的电路结构和方法。如Dyer在论文 《Concurrency techniques for arithmetic Coding in JPEG2000》中提出一种电路结构, 能够在一个时钟周期并行处理两个上下文CX。虽然在电路的编码效率和性能方面有了一定的改进,但是依然存在两方面的问题第一,该技术为了能够处理多个上下文CX,增加了大量的多路选择器和存储单元,在一定程度上增大了电路面积和逻辑复杂度;第二,该技术中若区间调整寄存器A进行归一化操作中移位数不是零,则上下文CX的计算要停顿,使电路的处理效率受到了一定的限制。发明内容
本发明的目的在于克服上述已有技术的不足,提出一种基于JPEG2000标准的多线程算术编码器编码方法和编码电路,以在不改变编码结果的前提下,充分利用上下文CX 之间的关系,简化索引值和概率估计值查找过程,降低多路选择器和存储单元的数量,减小电路面积和逻辑复杂度;调整重归一化计算过程,使得区间调整寄存器A移位数不是零时, 电路也不会停顿,提升编码效率和吞吐量。
为实现上述目的,本发明基于JPEG2000标准的多线程算术编码电路,包括
指令生成及索引预测单元,它包含指令生成子单元、指令寄存器instr和索引预测子单元,该指令生成子单元根据所有线程的上下文CX之间两两是否相等的判断结果,写指令寄存器instr,其中每一个线程对应一个上下文CX;该指令寄存器instr用于控制索引与归一化单元中索引表的查找与区间调整寄存器A的归一化;该索引预测子单元,用于预测每一个上下文CX的索引暂态值;
索引选择与归一化单元,它包含数据分配子单元和线程数据流子单元;该数据分配子单元用于给每个线程分配其所需的前一次上下文cx_dff的编码结果,编码结果包括索引值index_dff、概率估计值Qe_dff和区间调整寄存器A_dff ;该线程数据流子单元用于根据数据分配子单元分配的值以及指令寄存器instr的值,选出当前每个线程的上下文CX 的索引值和概率估计值Qe,然后计算区间调整寄存器A的重归一化结果a,其中每个线程对应一个上下文CX ;
编码寄存器归一化单元,它包含编码寄存器C和重归一化子单元;该重归一化子单元用于对编码寄存器C重归一化;
码流输出单元,用于根据编码寄存器C的重归一化结果,输出符合JPEG2000标准的码流。
所述的指令生成子单元中含有比较器和指令寄存器instr ;比较器用于判定当前各个上下文CX之间两两是否相等,以及当前每一个上下文CX分别与前一次所有上下文cx_ dff两两是否相等;若线程总数为n,则比较器总数T为r = C 2+ 2个;指令寄存器instr位宽值W由线程数η决定,满足关系W = W,其中低C〗比特位表示当前各个上下文CX之间两两是否相等的关系,高η2比特位表示当前各线程中每一个上下文CX分别与前一次所有上下文CX_dff是否两两相等。
所述的数据分配子单元包含3类选择器,区间调整选择器ajmix,概率估计选择器q_mux和索引选择器ijmix ;其中每个线程对应1个区间调整选择器,1个概率估计选择器和1个索引选择器;区间调整选择器的输入信号为前一次所有上下文CX_dff的区间调整寄存器A的重归一化结果々_(1 ,输出信号为分配给该线程的线程控制信号a_pre ;概率估计选择器输入信号为前一次所有上下文CX_dff的概率估计值Qe_dff,输出信号为分配给该线程的可能概率值qe_pre ;索引选择器输入信号为前一次所有上下文CX_dff的索引值i_ dff,输出信号为分配给该线程的可能索引值i_pre ;区间调整选择器、概率估计选择器和索引选择器的控制信号均为指令寄存器instr的输出信号。
所述的索引预测子单元中含有一个两级的查找表,所有线程均共享这个查找表; 第一级查找表中数据的地址为当前上下文CX,数据的内容为索引值、下一次大概率环境、 下一次小概率环境、以及下一次大概率环境和下一次小概率环境的下一级依次到下一个 (n-1)级的概率环境,其中η为线程总数;数据的位宽DW = 6Χ,其中η为线程总数; 第二级查找表中数据的地址为第一级查找表的查找结果,数据的内容为概率估计值Qe,数据位宽为16。
为了实现上述目的,本发明基于JPEG2000标准的多线程算术编码方法,包括
1)指令生成步骤
la)使用指令生成子单元中的比较器对当前η个线程的所有上下文CX进行两两较,其中每个线程对应一个上下文,其中每个线程对应一个上下文,第2个线程对应指令寄存器中中第0位,第3个线程对应第1和第2位,第4个线程对应第3、4和5位;若比较结果相等,则将指令寄存器instr[Cn2-l:0]位中相应的比特位置1,否则置0 ;
lb)对当前上下文CX与前一次所有上下文CX_dff进行两两比较,其中每个线程对应一个上下文,第i个线程对应指令寄存器高η2比特位中[Cn2+i(n-l)+n-2,Cn2+i(n-l)-l] 的位,η2为对当前上下文与前一次上下文两两比较的次数,η为线程总数,i e [1,η],i为整数;若比较结果相等,则将指令寄存器instr的高η2位中相应的比特位置1,否则置0 ;
2)索引预测步骤
首先根据当前上下文查找第一级查找表,对于第i个线程,查找结果为索引暂态值、下一次依次到下i次的大概率编码环境和小概率编码环境,共2i+l个值;然后根据待编码数据D[j]与编码环境MPS[j]是否相等,从第一级查找表的结果中确定下j次的概率编码标志;若相等,则下j次的概率编码标志确定为大概率编码环境;若不等,则下j次的概率编码标志确定为小概率编码环境;索引预测步骤最终结果为索引暂态值、下一次到下 i次的概率编码标志,共i+Ι个值;其中,j取从1到i的所有整数,i e [1,n],i为整数,Π 为线程总数;
3)索引确定及归一化步骤
3a)使用数据分配子单元根据指令寄存器的值,将前一次上下文的索引值、概率估计值和区间调整寄存器分配给当前的各个线程,分配结果为可能索引值、可能概率值和线程控制值;
3b)根据可能索引值、可能概率值和线程控制值,确定各线程的索引值对于第i 个线程,首先判断指令寄存器[2i(i-l)+i,2i(i-l)]的位是否等于零;如果等于零,则该线程索引值为索引暂态值;反之,根据线程控制值和可能概率值的大小关系确定索引值若 a_pre彡i X qe_pre+215,则该线程索引值为可能索引值;否则,判断a_pre ^ 1 X qr_pre+215是否成立,若成立,则索引值为下(i-υ次概率编码标志,若不成立,则执行循环1自减1, 判断a_pre彡lXqe_pre+215是否成立,若成立,则跳出循环,若不成立,则循环继续,其中1 初始值为(i_l),取值范围为[i-l,0],a_pre为线程控制值,qe_pre为可能概率值,i e [1, n],i为整数,η为线程总数;
3c)根据上一步获得的索引值查找第二级查找表,得到当前上下文CX的概率估计值Qe ;
4)第一个线程的调整寄存器归一化步骤
首先计算区间调整寄存器A第一中间变量Al = A-Qe ;然后根据A第一中间变量 Al最高两位的值,对A第一中间变量Al进行左移,得到A第二中间变量A2 若A中间变量 Al最高两位的值为3或者2,则A第二中间变量A2 = Al ;若A第一中间变量Al最高两位的值为1,则A第二中间变量A2 = Al << 1 ;若A第一中间变量Al最高两位的值为0,则A 中间变量A2 = Al <<2 ;最后使用公式选择标志sel确定区间调整寄存器的重归一化值 当公式选择标志sel的值为1时,重归一化结果为A2 ;否则,重归一化结果为Qe ;
5)第一个线程的编码寄存器归一化步骤
首先,计算编码寄存器C第一中间变量Cl = C+Qe ;
然后,区间调整寄存器A的第一中间变量Al最高两位的值,对Cl进行左移,得到编码寄存器C第二中间变量C2 若A中间变量Al最高两位的值为3或者2,则C2 = Cl ;若 A第一中间变量Al最高两位的值为1,则C2 = Cl << 1 ;若A第一中间变量Al最高两位的值为0,则C2 = Cl << 2 ;
最后,使用公式选择标志sel确定区间调整寄存器的重归一化值当公式选择标志sel的值为1时,调整寄存器重归一化结果为C2 ;否则,调整寄存器重归一化结果为C ;
6)重复步骤即重复步骤4)和步骤5)完成对其他线程的区间调整寄存器和编码寄存器的归一化;
7)码流输出步骤编码寄存器C将归一化后的值输入到码流输出单元,得到最终的编码数据。
所述的使用数据分配子单元,将前一次上下文的索引值、概率估计值和区间调整寄存器值分配给当前的各个线程,是根据指令寄存器对应位的值是否等于零来确定对于第i个线程,若指令寄存器[Cn2+i(n-l)+n-2,Cn2+i(n-l)-l]的位等于零,则将前一次第η个线程的索引值、概率估计值和区间调整寄存器值分配给当前线程i ;反之,若指令寄存器中第(;2+1(11-1)-1+1^位为1,则将前一次第k个线程的的索引值、概率估计值和区间调整寄存器值分配给当前线程i ;其中Cn2表示当前η个线程的所有上下文CX两两比较的次数,η为线程总数,i e [1,η],i为整数,k e [1,n],k为整数。
所述的公式选择信号sel,是由一个经过归纳的表达式D == MPS(CX) Θ (Μ > 2Qe)产生,其中D为待编码数据,CX为待编码数据的上下文,Θ是异或运算符,M为调整寄存器A的值,MPSO为编码环境符号MPS查表函数,Qe为概率估计值。
本发明具有如下优点
本发明由于通过对算术编码器编码算法中的“指令生成及索引预测单元”引入指令生成子单元和指令寄存器,充分利用了各线程上下文CX之间是否相等的关系,从而降低了多路选择器和存储单元的数量,减小了电路面积;同时由于本发明的编码方法采用数据分配方法和索引确定方法,对不同的线程采用不同的分配和判断方法,从而调整了重归一化计算过程,降低了判断逻辑复杂度,提升了编码效率和吞吐量。仿真结果表明,本发明显著减少电路的面积,并且显著提高了算术编码器的工作频率。


图1为本发明多线程算术编码器结构框图2为本发明算术编码器中指令生成及索引预测单元电路图3为本发明算术编码器中索引选择与归一化单元电路图4为本发明算术编码器中数据分配子单元电路图5为本发明多线程算术编码器编码方法的总流程图6为本发明中的索引确定及归一化子流程图。
具体实施方式
参照图1,本发明的算术编码器编码器结构包括指令生成及索引预测单元、索引选择与归一化单元、编码寄存器归一化单元和码流输出单元。其中
指令生成及索引预测单元,其结构如图2所示,它包含指令生成子单元、指令寄存器instr和索引预测子单元,该指令生成子单元根据所有线程的上下文CX之间两两是否相等的判断结果,写指令寄存器instr,其中每一个线程对应一个上下文CX,它包含比较器, 比较器用于判定当前各个上下文CX之间两两是否相等,以及当前每一个上下文CX分别与前一次所有上下文CX_df f两两是否相等,若线程总数为n,则比较器总数T为T = Cn2+n2个; 该指令寄存器instr位宽值W由线程数η决定,满足关系W = Cn2+n2,其中低C〗比特位表示当前各个上下文CX之间两两是否相等的关系,高η2比特位表示当前各线程中每一个上下文CX分别与前一次所有上下文CX_dff是否两两相等;该索引预测子单元含有一个两级的查找表,所有线程均共享这个查找表,第一级查找表中数据的地址为当前上下文CX,数据的内容为索引值、下一次大概率环境、下一次小概率环境、以及下一次大概率环境和下一次小概率环境的下一级依次到下一个(n-1)级的概率环境,其中η为线程总数,数据的位宽DW =6Χ (2η+1-1),其中η为线程总数;第二级查找表中数据的地址为第一级查找表的查找结果,数据的内容为概率估计值Qe,数据位宽为16 ;
索引选择与归一化单元,其结构如图3所示,它包含数据分配子单元和线程数据流子单元;该数据分配子单元,其结果如图4所示,用于给每个线程分配其所需的前一次上下文CX_dff的编码结果,编码结果包括索引值indeX_dff、概率估计值Qe_dff和区间调整寄存器A_dff,它包含3类选择器,分别为区间调整选择器a_muX,概率估计选择器qjmix和索引选择器ijmix,其中每个线程对应1个区间调整选择器,1个概率估计选择器和1个索引选择器,区间调整选择器的输入信号为前一次所有上下文CX_dff的区间调整寄存器A的重归一化结果A_dff,输出信号为分配给该线程的线程控制信号a_pre,概率估计选择器输入信号为前一次所有上下文CX_dff的概率估计值Qe_dff,输出信号为分配给该线程的可能概率值qe_pre,索引选择器输入信号为前一次所有上下文CX_dff的索引值i_dff,输出信号为分配给该线程的可能索引值i_pre,区间调整选择器、概率估计选择器和索引选择器的控制信号均为指令寄存器instr的输出信号;
编码寄存器归一化单元,它包含编码寄存器C和重归一化子单元,该重归一化子单元用于对编码寄存器C重归一化;
码流输出单元,用于根据编码寄存器C的重归一化结果,输出符合JPEG2000标准的码流。
参照图5,本发明基于JPEG2000的算术编码方法包括如下步骤
步骤1,指令生成步骤。
la)使用指令生成子单元中的比较器对当前η个线程的所有上下文CX进行两两较,其中每个线程对应一个上下文,第2个线程对应指令寄存器中中第0位,第3个线程对应第1和第2位,第4个线程对应第3、4和5位;若比较结果相等,则将指令寄存器 instr[Cn2-l:0]位中相应的比特位置1,否则置0 ;
lb)对当前上下文CX与前一次所有上下文CX_dff进行两两比较,其中每个线程对应一个上下文,第i个线程对应指令寄存器高η2比特位中[Cn2+i(n-l)+n-2,Cn2+i(n-l)-l] 的位,η2为对当前上下文与前一次上下文两两比较的次数,η为线程总数,i e [1,η],i为整数;若比较结果相等,则将指令寄存器instr的高η2位中相应的比特位置1,否则置0。
步骤2,索引预测。
首先,根据当前上下文查找第一级查找表,对于第i个线程,查找结果为索引暂态值、下一次依次到下i次的大概率编码环境和小概率编码环境,共2i+l个值;
然后,根据待编码数据D[j]与编码环境MPS[j]是否相等,从第一级查找表的结果中确定下j次的概率编码标志;若相等,则下j次的概率编码标志确定为大概率编码环境;若不等,则下j次的概率编码标志确定为小概率编码环境;索引预测步骤最终结果为索引暂态值、下一次到下i次的概率编码标志,共i+ι个值,其中,j取从1到i的所有整数, i e [1,n],i为整数,η为线程总数。
步骤3,索引确定及归一化步骤。
3a)将前一次上下文的索引值、概率估计值和区间调整寄存器值分配给当前的各个线程,即根据指令寄存器对应位的值是否等于零来确定对于第i个线程,若指令寄存器 [Cn2+i (n-1) +n-2,Cn2+i (n-1)-1]的位等于零,则将前一次第η个线程的索引值、概率估计值和区间调整寄存器值分配给当前线程i ;反之,若指令寄存器中第Cn2+i(n-l)-l+k位为1,则将前一次第k个线程的的索引值、概率估计值和区间调整寄存器值分配给当前线程i,其中 Cn2表示当前η个线程的所有上下文CX两两比较的次数,η为线程总数,i e [1,η],i为整数,k e [l,n],k为整数。
3b)根据可能索引值、可能概率值和线程控制值,确定各线程的索引值
参照图6,本步骤的具体实现是对于第i个线程,首先判断指令寄存器 [2i(i-l)+i,2i(i-l)]的位是否等于零;如果等于零,则该线程索引值为索引暂态值;反之,根据线程控制值和可能概率值的大小关系确定索引值^ iXqe_pre+215,则该线程索引值为可能索引值;否则,判断a_pre ^ 1 Xqe_pre+215是否成立,若成立,则索引值为下(i-Ι)次概率编码标志,若不成立,则执行循环1自减1,判断a_pre彡lXqe_ pre+215是否成立,若成立,则跳出循环,若不成立,则循环继续,其中1是一个整数,其初始值为(i_l),取值范围为[i-l,0],a_pre为线程控制值,qe_pre为可能概率值,i e [Ι,η], i为整数,η为线程总数;
3c)根据上一步获得的索引值查找第二级查找表,得到当前上下文CX的概率估计值Qe ;
步骤4,对第一个线程的调整寄存器归一化。
首先,计算公式选择信号sel,它是由一个经过归纳的表达式D == MPS(CX) Θ (M > 2Qe)产生,其中D为待编码数据,CX为待编码数据的上下文,Θ是异或运算符,M为调整寄存器A的值,MPSO为编码环境符号MPS查表函数,Qe为概率估计值。
接着,计算区间调整寄存器A第一中间变量Al = A-Qe ;
然后,根据A第一中间变量Al最高两位的值,对A第一中间变量Al进行左移,得到A第二中间变量A2 若A中间变量Al最高两位的值为3或者2,则A第二中间变量A2 = Al ;若A第一中间变量Al最高两位的值为1,则A第二中间变量A2 = Al << 1 ;若A第一中间变量Al最高两位的值为0,则A中间变量A2 = Al < < 2 ;
最后,使用公式选择标志sel确定区间调整寄存器的重归一化值当公式选择标志sel的值为1时,重归一化结果为A2 ;否则,重归一化结果为Qe。
步骤5,对第一个线程的编码寄存器归一化。
首先,计算编码寄存器C第一中间变量Cl = C+Qe ;
然后,用区间调整寄存器A的第一中间变量Al最高两位的值,对Cl进行左移,得到编码寄存器C第二中间变量C2 若A的中间变量Al最高两位的值为3或者2,则C2 = Cl ;若A的第一中间变量Al最高两位的值为1,则C2 = Cl << 1 ;若A的第一中间变量Al 最高两位的值为0,则C2 = Cl << 2 ;
最后,使用公式选择标志sel确定区间调整寄存器的重归一化值当公式选择标志sel的值为1时,调整寄存器重归一化结果为C2 ;否则,调整寄存器重归一化结果为C ;
步骤6,重复步骤4)和步骤幻完成对其他线程的区间调整寄存器和编码寄存器的归一化;
步骤7,将步骤6中的编码寄存器C将归一化后的值输入到码流输出单元,得到最终的编码数据。
本发明的效果可通过以下仿真进一步说明
仿真1,本发明使用Veri IogHDL语言对整个电路进行寄存器传输RTL级代码描述, 用C语言编写程序作算术编码器编码前的数据准备,使用Candence公司的NC-verilog工具上完成功能仿真,对一张400*400像素的图片进行编码,仿真结果编码正确。
仿真2,本发明使用Synopsys公司的Design-Compile工具,采用SMIC公司的 0. ISymCMOS标准单元工艺库进行了综合,综合后面积为307100. 27平方微米,最高时钟频率为 287MHz,吞吐量为 574Msymbols/sec。而文献《Concurrency techniques for arithmetic Coding in JPEG2000》中的算术编码器的面积为384817. 91平方微米,工作频率为 2Il. 86MHz,处理能力仅为 388· 34Msymbols/sec01权利要求
1.一种基于JPEG2000标准的多线程算术编码电路,包括指令生成及索引预测单元,它包含指令生成子单元和索引预测子单元,该指令生成子单元根据所有线程的上下文CX之间两两是否相等的判断结果,写指令寄存器instr,其中每一个线程对应一个上下文CX;该指令寄存器instr用于控制索引与归一化单元中索引表的查找与区间调整寄存器A的归一化;该索引预测子单元,用于预测每一个上下文CX的索引暂态值index_p0S和概率编码标志;索引选择与归一化单元,它包含数据分配子单元和线程数据流子单元;该数据分配子单元用于给每个线程分配其所需的前一次上下文CX_dff的编码结果,编码结果包括索引值indeX_df f、概率估计值Qe_df f和区间调整寄存器A_df f ;该线程数据流子单元用于根据数据分配子单元分配的值以及指令寄存器instr的值,选出当前每个线程的上下文CX的索引值和概率估计值Qe,然后计算区间调整寄存器A的重归一化结果a,其中每个线程对应一个上下文CX ;编码寄存器归一化单元,它包含编码寄存器C和重归一化子单元;该重归一化子单元用于对编码寄存器C重归一化;码流输出单元,用于根据编码寄存器C的重归一化结果,输出符合JPEG2000标准的码流。
2.根据权利要求1所述的编码电路,其特征在于所述的指令生成子单元中含有比较器和指令寄存器instr ;比较器用于判定当前各个上下文CX之间两两是否相等,以及当前每一个上下文CX分别与前一次所有上下文CX_dff两两是否相等;若线程总数为n,则比较器总数TST = Cn2+n2个;指令寄存器instr位宽值W由线程数η决定,满足关系W = Cn2+n2,其中低C〗比特位表示当前各个上下文CX之间两两是否相等的关系,高η2比特位表示当前各线程中每一个上下文CX分别与前一次所有上下文CX_dff是否两两相等。
3.根据权利要求1所述的编码电路,其特征在于所述数据分配子单元包含3类选择器,分别为区间调整选择器ajmix,概率估计选择器qjmix和索引选择器ijmix;其中每个线程对应1个区间调整选择器,1个概率估计选择器和1个索引选择器。
4.根据权利要求3所述的编码电路,其特征在于区间调整选择器的输入信号为前一次所有上下文CX_dff的区间调整寄存器A的重归一化结输出信号为分配给该线程的线程控制信号a_pre ;概率估计选择器输入信号为前一次所有上下文CX_dff的概率估计值Qe_dff,输出信号为分配给该线程的可能概率值qe_pre ;索引选择器输入信号为前一次所有上下文CX_dff的索引值i_dff,输出信号为分配给该线程的可能索引值ij)re ;区间调整选择器、概率估计选择器和索引选择器的控制信号均为指令寄存器instr的输出信号。
5.根据权利要求1所述的编码电路,其特征在于所述的索引预测子单元中含有一个两级的查找表,所有线程均共享这个查找表;第一级查找表中数据的地址为当前上下文CX,数据的内容为索引值、下一次大概率环境、下一次小概率环境、以及下一次大概率环境和下一次小概率环境的下一级依次到下一个(n-1)级的概率环境,其中η为线程总数;数据的位宽DW = 6Χ,其中η为线程总数;第二级查找表中数据的地址为第一级查找表的查找结果,数据的内容为概率估计值Qe,数据位宽为16。
6. 一种基于JPEG2000标准的算术编码方法,包括1)指令生成步骤la)使用指令生成子单元中的比较器对当前η个线程的所有上下文CX进行两两较,其中每个线程对应一个上下文,第2个线程对应指令寄存器中中第0位,第3个线程对应第1 和第2位,第4个线程对应第3、4和5位;若比较结果相等,则将指令寄存器instr [Cn2_l 0] 位中相应的比特位置1,否则置0 ;lb)对当前上下文CX与前一次所有上下文CX_dff进行两两比较,其中每个线程对应一个上下文,第i个线程对应指令寄存器高η2比特位中[Cn2+i(n-l)+n-2,Cn2+i(n-l)-l]的位,η2为对当前上下文与前一次上下文两两比较的次数,η为线程总数,i e [1,η],i为整数;若比较结果相等,则将指令寄存器instr的高η2位中相应的比特位置1,否则置0 ;2)索引预测步骤首先根据当前上下文查找第一级查找表,对于第i个线程,查找结果为索引暂态值、下一次依次到下i次的大概率编码环境和小概率编码环境,共2i+l个值;然后根据待编码数据D[j]与编码环境MPS[j]是否相等,从第一级查找表的结果中确定下j次的概率编码标志;若相等,则下j次的概率编码标志确定为大概率编码环境;若不等,则下j次的概率编码标志确定为小概率编码环境;索引预测步骤最终结果为索引暂态值、下一次到下i次的概率编码标志,共i+Ι个值;其中,j取从1到i的所有整数,i e [1,n],i为整数,η为线程总数;3)索引确定及归一化步骤3a)使用数据分配子单元根据指令寄存器的值,将前一次上下文的索引值、概率估计值和区间调整寄存器分配给当前的各个线程,分配结果为可能索引值、可能概率值和线程控制值;3b)根据可能索引值、可能概率值和线程控制值,确定各线程的索引值对于第i个线程,首先判断指令寄存器[2i(i-l)+i,2i(i-l)]的位是否等于零;如果等于零,则该线程索引值为索引暂态值;反之,根据线程控制值和可能概率值的大小关系确定索引值若3_ pre彡iXqe_pre+215,则该线程索引值为可能索引值;否则,判断a_pre彡1 Xqe_pre+215是否成立,若成立,则索引值为下(i-ι)次概率编码标志,若不成立,则执行循环1自减1,判 ^lXqe_pre+215是否成立,若成立,则跳出循环,若不成立,则循环继续,其中1初始值为(i_l),取值范围为[i_l,0],a_pre为线程控制值,qe_pre为可能概率值,i e [1, n],i为整数,η为线程总数;3c)根据上一步获得的索引值查找第二级查找表,得到当前上下文CX的概率估计值Qe ;4)第一个线程的调整寄存器归一化步骤首先计算区间调整寄存器A第一中间变量Al =A-Qe ;然后根据A第一中间变量Al最高两位的值,对A第一中间变量Al进行左移,得到A第二中间变量A2 若A中间变量Al最高两位的值为3或者2,则A第二中间变量A2 = Al ;若A第一中间变量Al最高两位的值为 1,则A第二中间变量A2 =Al << 1 ;若A第一中间变量Al最高两位的值为0,则A中间变量A2 = Al << 2 ;最后使用公式选择标志sel确定区间调整寄存器的重归一化值当公式选择标志sel的值为1时,重归一化结果为A2 ;否则,重归一化结果为Qe ;5)第一个线程的编码寄存器归一化步骤首先,计算编码寄存器C第一中间变量Ci = C+Qe ;然后,区间调整寄存器A的第一中间变量Al最高两位的值,对Cl进行左移,得到编码寄存器C第二中间变量C2 若A中间变量Al最高两位的值为3或者2,则C2 = Cl ;若A第一中间变量Al最高两位的值为1,则C2 = Cl << 1 ;若A第一中间变量Al最高两位的值为 0,则 C2 = Cl << 2 ;最后,使用公式选择标志sel确定区间调整寄存器的重归一化值当公式选择标志sel 的值为1时,调整寄存器重归一化结果为C2 ;否则,调整寄存器重归一化结果为C ;6)重复步骤4)和步骤幻完成对其他线程的区间调整寄存器和编码寄存器的归一化;7)码流输出步骤编码寄存器C将归一化后的值输入到码流输出单元,得到最终的编码数据。
7.根据权利要求6所述的算术编码方法,其中步骤3a)所述的使用数据分配子单元,将前一次上下文的索引值、概率估计值和区间调整寄存器值分配给当前的各个线程,是根据指令寄存器对应位的值是否等于零来确定对于第i个线程,若指令寄存器 [Cn2+i (n-1) +n-2,Cn2+i (n-1)-1]的位等于零,则将前一次第η个线程的索引值、概率估计值和区间调整寄存器值分配给当前线程i ;反之,若指令寄存器中第Cn2+i(n-l)-l+k位为1,则将前一次第k个线程的的索引值、概率估计值和区间调整寄存器值分配给当前线程i ;其中 Cn2表示当前η个线程的所有上下文CX两两比较的次数,η为线程总数,i e [1,η],i为整数,k e [l,n],k为整数。
8.根据权利要求6所述的算术编码方法,其中步骤4)所述的公式选择信号sel,是由一个经过归纳的表达式D == MPS(CX) Θ (Μ > 2Qe)产生,其中D为待编码数据,CX为待编码数据的上下文,Θ是异或运算符,M为调整寄存器A的值,MPSO为编码环境符号MPS查表函数,Qe为概率估计值。
全文摘要
本发明公开了一种基于JPEG2000标准的多线程算术编码电路和方法,主要解决现有多上下文算术编码器面积大,编码效率和吞吐量低的问题。其编码电路在保证与JPEG2000标准压缩结果完全一致的前提下,对算术编码器中的“指令生成及索引预测单元”引入指令生成子单元、指令寄存器和比较器,使用比较器生成了用于控制所有线程编码方式的指令;同时根据指令值控制区间调整选择器、概率估计选择器和索引选择器将前一次编码结果分配给当前待编码线程,降低逻辑复杂度。此外,本发明对查找表进行拆分和扩充,第一级查找表存放所有可能的索引值,第二级查找表只存放概率估计值。仿真结果表明,本发明具有面积小和吞吐量高的特点,可用于高性能图像处理芯片中。
文档编号H04N7/26GK102523455SQ20121000050
公开日2012年6月27日 申请日期2012年1月2日 优先权日2012年1月2日
发明者史江义, 田映辉, 逄杰, 邸志雄, 郝跃, 马佩军, 龚章芯 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1