一种连续色调静态图像压缩的优化方法及装置与流程

文档序号:14943033发布日期:2018-07-13 21:33阅读:501来源:国知局

本发明涉及一种优化方法、装置及计算机存储设备,尤其是涉及一种连续色调静态图像压缩的优化方法及装置。



背景技术:

jpeg-ls是一种针对连续色调静态图像的无损/近无损的压缩标准,iso-14495-1/itu-t.87。它的核心算法是loco-i(lowcomplexitylosslesscompressionforimages)。loco-i算法可以获得和目前的诸多基于算术编码的压缩算法相似甚至更好的压缩效率,同时又能保持较低的复杂度,广泛应用于数字相机、网络传输、无线通讯以及医学成像等领域。

jpeg-ls编码框图如图1所示,包括了上下文建模,预测、正常模式编码、游长模式编码等几个步骤。

在上下文被决定之后,在正常模式下,就要进行预测值、偏差的计算,以及预测误差的矫正。在此工作模式下,编码处理的最后一步是对校正的预测误差进行编码。为此,编码器使用了一个由golomb编码导出的方案。这意味着对于每个上下文只有两个统计参数,即分别代表分布的衰减率和偏差的参数,需要进行估计。所有可能的预测误差值在编码前被映射为非负的值。

golomb编码最早被引入时,是作为对包含非负游长的符号序列的编码手段。对于一个正整数参数m,m阶golomb码字把一个大于或等于0的整数n编码成两个部分:一个n/m的整数部分(即商)的单位1表示,以及一个nmodm(即余数)的二进制表示。golomb码字对于几何分布的非负整数是最佳的。对于这种形式下的每一种分布,存在一个参数值m,它使得对所有能够唯一解码为非负整数的码字,编码取得最短可能的平均码长。

golomb码字的一种特殊的情况是,当m是2的p次幂时,就会导致非常简单的编码/解码过程:n的码字是一个数,它由单位1表示的n的高比特位,后接n的k个低比特位组成。在jpeg-ls中采用的就是这种特殊的情况,并且被用函数g(k)标记。k代表这个golomb变量,而m等于2的p次方。

在正常模式的下对预测误差进行编码。为此需要使用变量a[0…364]和n[0…364]来计算golomb编码变量k。变量k的计算和上下文有关,其计算过程如下的代码段表示。之后,变量errval被映射到一个非负整数merrval,并且被用编码函数lg(k,limit)进行编码。

for(k=0;(n[q]<<k)<a[q];k++);

其中,a[q]为存储累积的预测误差的绝对值变量,n[q]为用于存储每个上下文的发生次数的变量,a[q]、n[q]均为无符号非负32位整型变量,q为量化索引变量,k为golomb编码变量。此计算的流程图如图2所示.

该计算k的算法中,计算n[q]<<k,通过累加k值,逐次和a[q]进行比较,最后求得k值。由于每次代入计算的n[q]、a[q]的值不同,循环的次数也不同。对于图像的每个像素而言,计算k值所需消耗的时钟数是不确定的。而且从流程图可以看出,该计算方法存在反馈环路,这样,无法实现k值的流水线计算。



技术实现要素:

本发明针对jpeg-ls标准中无损/近无损图像压缩编码中golomb-rice编码的k值计算进行了流水线优化,在k值计算中,去掉了计算中存在的反馈环路,所计算的k值和传统的算法结果完全一致,并有效的提高了k值计算的流水线计算性能。

本发明的上述技术问题主要是通过下述技术方案得以解决的:

一种连续色调静态图像压缩的优化方法,其特征在于,当golomb编码中正整数参数m满足2的p次幂条件时,将n[q]左移k_temp次后与a[q]比较,根据比较结果取该差值或该差值减1为golomb编码变量,其中,p为正整数,k_temp为n[q]和a[q]的差值,a[q]为存储累积的预测误差的绝对值变量,n[q]为用于存储每个上下文的发生次数的变量,a[q]、n[q]均为无符号非负32位整型变量,q为量化索引变量。

在上述的一种连续色调静态图像压缩的优化方法,将n[q]二进制前导零个数与a[q]二进制前导零个数做差值,差值记为k_temp,再将n[q]左移k_temp次,左移后的结果和a[q]进行比较。

在上述的一种连续色调静态图像压缩的优化方法,定义差值为k_temp,将n[q]左移k_temp次,左移后的结果和a[q]进行比较,即判断n[q]<<k_temp)<a[q],根据比较结果选择执行:

若n[q]<<k_temp)<a[q]成立则golomb编码变量为k_temp–1,

若n[q]<<k_temp)<a[q]成立不成立则golomb编码变量为k_temp。

在上述的一种连续色调静态图像压缩的优化方法,n[q]二进制前导零个数的计算过程是通过零计数指令clz(countleadingzeros)获取。

在上述的一种连续色调静态图像压缩的优化方法,a[q]二进制前导零个数的计算过程是通过零计数指令clz(countleadingzeros)获取。

一种连续色调静态图像压缩的优化装置,其特征在于,该装置针对golomb编码中正整数参数m满足2的p次幂条件,包括:

移位模块:用于将n[q]左移k_temp次,其中,k_temp为正整数,k_temp为n[q]和a[q]的差值;

结果比较模块:将n[q]左移k_temp次,左移后的结果和a[q]进行比较,根据比较结果取该差值或该差值减1为golomb编码变量;

其中,[q]为存储累积的预测误差的绝对值变量,n[q]为用于存储每个上下文的发生次数的变量,a[q]、n[q]均为无符号非负32位整型变量,q为量化索引变量。

在上述的一种连续色调静态图像压缩的优化装置,移位模块包括:

前导零个数获取单元:用于获取n[q]二进制前导零个数与a[q]二进制前导零个数;

个数差值比较单元:用于将n[q]二进制前导零个数与a[q]二进制前导零个数做差值,并定义差值为k_temp;

移位单元:将n[q]左移k_temp次。

在上述的一种连续色调静态图像压缩的优化装置,结果比较模块包括:

个数差值比较单元:将n[q]左移k_temp次后的结果和a[q]进行比较,即判断n[q]<<k_temp)<a[q],根据比较结果选择执行:

若n[q]<<k_temp)<a[q]成立则golomb编码变量为k_temp–1,

若n[q]<<k_temp)<a[q]成立不成立则golomb编码变量为k_temp。

在上述的一种连续色调静态图像压缩的优化装置,前导零个数获取单元计算n[q]二进制前导零个数是通过零计数指令clz(countleadingzeros)获取;前导零个数获取单元计算a[q]二进制前导零个数是通过零计数指令clz(countleadingzeros)获取。

一种连续色调静态图像压缩的优化装置,其特征在于,包括存储器、处理器以及存储在该存储器中并可在该处理器上运行的计算机程序,其特征在于,该处理器被配置为执行该计算机程序时实现如权利要求1至5任一项所述优化方法的步骤。

因此,本发明具有如下优点:1、优化的方法引入了流水线计算k值的方法,消除了传统方法计算中的反馈环路。2、优化的方法所计算的k值和传统方法的结果完全一致,并有效的提高了k值计算的流水线计算性能。

附图说明

附图1是jpeg-ls编码流程图。

附图2是传统jpegls无损压缩算法k值计算流程图。

附图3是本发明中jpegls无损压缩算法k值计算流程图。

具体实施方式

下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。

实施例:

一、本发明根据k值计算的公式,引入了流水线计算k值的方法,消除了原方法计算中的反馈环路,使得每次k值计算消耗固定的时钟数,从而达到流水线化。

当golomb编码中正整数参数m满足2的p次幂条件时,可以通过计算n[q]、a[q]二进制前导零的个数,相减得到差值k_temp,再将n[q]左移k_temp次,左移后的结果和a[q]进行比较,通过计算(n[q]<<k_temp)<a[q],根据比较结果取该差值或该差值减1为golomb编码变量,其中,a[q]为存储累积的预测误差的绝对值变量,n[q]为用于存储每个上下文的发生次数的变量,n为正整数,a[q]、n[q]均为无符号非负32位整型变量,q为量化索引变量,k为golomb编码变量。

改进的k值计算的流程图如下图3所示:

1)计算n[q]、a[q]二进制前导零个数,二进制前导零的个数可通过零计数指令clz(countleadingzeros)获取;

2)n[q]前导零个数减去a[q]前导零个数,获得k_temp;

3)对n[q]进行十进制左移运算,对n[q]左移k_temp次,即计算n[q]<<k_temp。

4)判断(n[q]<<k_temp)<a[q]是否成立;

5)若n[q]<<k_temp)<a[q]成立则golomb编码变量为k_temp–1,若n[q]<<k_temp)<a[q]成立不成立则golomb编码变量为k_temp。

假设计算一个非负整型变量的时钟数为t0,那么通过这种方法计算k值所需的时钟数为t0+1,为固定值,这样k值计算就可以完全实现计算流水线化。

二、本发明还提供一种连续色调静态图像压缩的优化装置,该装置针对golomb编码中正整数参数m满足2的p次幂条件,包括:

移位模块:用于将n[q]左移k_temp次,其中,k_temp为正整数,k_temp为n[q]和a[q]的差值,移位模块包括:

前导零个数获取单元:用于获取n[q]二进制前导零个数与a[q]二进制前导零个数;

个数差值比较单元:用于将n[q]二进制前导零个数与a[q]二进制前导零个数做差值,并定义差值为k_temp;

移位单元:将n[q]左移k_temp次。

结果比较模块:将n[q]左移k_temp次,左移后的结果和a[q]进行比较,根据比较结果取该差值或该差值减1为golomb编码变量;

其中,[q]为存储累积的预测误差的绝对值变量,n[q]为用于存储每个上下文的发生次数的变量,a[q]、n[q]均为无符号非负32位整型变量,q为量化索引变量。

结果比较模块包括:

个数差值比较单元:将n[q]左移k_temp次后的结果和a[q]进行比较,即判断n[q]<<k_temp)<a[q],根据比较结果选择执行:

若n[q]<<k_temp)<a[q]成立则golomb编码变量为k_temp–1,

若n[q]<<k_temp)<a[q]成立不成立则golomb编码变量为k_temp。

三、本发明还提供一种计算机存储设备,该设备存储有计算机程序,该计算机程序能够执行第一项删除的所有步骤。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1