【技术实现步骤摘要】
硬件友好的数据解压缩
本公开涉及数据压缩,尤其涉及使用熵编码的无损压缩。
技术介绍
数据压缩已广泛用于数字信号系统,例如通信和计算机系统。在信息论中,克劳德·香农(ClaudeShannon)的信源编码定理(sourcecodingtheorem,或称为无噪声编码定理)确定了可能的数据压缩以及香农熵的运算含义的极限。根据香农的信源编码定理,符号的最佳代码长度为-logbP,其中b是用于制作输出代码的符号数,P是输入符号的概率。霍夫曼(Huffman)编码和算术(Arithmetic)编码是最常见的两种熵编码技术。自2014年以来,数据压缩器已开始使用熵编码技术的非对称数字系统(ANS)系列,该技术可结合算术编码的压缩率和类似于霍夫曼编码的运算成本。但是,这些现有的ANS实现是为通用计算系统开发的,该系统通常使用通用中央处理单元(CPU)来执行数据压缩或解压缩操作。因此,需要一种对硬件更友好的压缩技术,例如适用于现场可编程门阵列(FPGA)或专用集成电路(ASIC)的压缩技术。
技术实现思路
本公开提供了用于使用熵编码的无损压缩的系统和方法。在示例性实施例中,提供了一种方法,该方法可以包括:接收要解压缩的编码数据;获得所述编码数据中符号总数的大小"Stotal”,所述编码数据中不同符号的出现次数以及在编码过程中生成的最终状态作为解码的第一个状态;建立解码表,所述解码表包含对应于L个编码状态的不同符号行、对应于所述L个编码状态的要恢复位数的替代行和对应于所述L个编码状态的新状态的替代行;使用所述解码表 ...
【技术保护点】
1.一种方法,其特征在于,包括:/n接收要解压缩的编码数据;/n获得所述编码数据中符号总数的大小"S
【技术特征摘要】
20200824 US 17/000,6391.一种方法,其特征在于,包括:
接收要解压缩的编码数据;
获得所述编码数据中符号总数的大小"Stotal”,所述编码数据中不同符号的出现次数以及在编码过程中生成的最终状态作为解码的第一个状态;
构建解码表,所述解码表包含对应于L个编码状态的不同符号行、对应于所述L个编码状态的要恢复位数的替代行和对应于所述L个编码状态的新状态的替代行,其中,L等于所述不同符号的出现次数之和;
使用所述解码表对所述编码数据进行解码,包括:
基于当前状态X从所述解码表中获取当前符号;
根据对所述当前状态X的解码表中要恢复的位数的对应替代和对新状态的对应替代,动态地确定要从所述编码数据中恢复的当前位数和新状态X;和
输出从所述编码数据中恢复的符号。
2.根据权利要求1所述的方法,其特征在于,所述L个编码状态是M至M+L-1范围的L个不同值,其中,M是该范围的基值并且是等于或大于零的整数。
3.根据权利要求2所述的方法,其特征在于,L不是2的幂,并且M是零,构建所述解码表包括:
将初始值X设置为零,R设置为ceiling(lg(L)),其中ceiling()是向上取整函数,lg()是二进制对数函数;
在具有对应于一组不同符号中的每个元素的位置的循环索引的外循环中:
将Ls的初始值设置为当前符号的出现次数;
在内循环中遍历所述当前符号的所有出现次数:
将所述不同符号行的当前条目设置为所述当前符号;
对于从0到R的索引“j”:
以(Ls<<j)+(2^j-1)的形式获得临时Ls_tmp,直到Ls_tmp落入间隔{L,…,2L-1),其中<<是左移位运算符,^是幂运算符,和
将要恢复的位数的当前对应替代设置为“j”;
从以“j”为索引的循环中中断出来;
将新状态的当前对应替代设置为Ls;
将X增加1;
将Ls增加1;
结束所述内循环;和
结束所述外循环。
4.根据权利要求3所述的方法,其特征在于,通过Ls向左移位“j”位并将“j”位1插入最低有效位(LSB)来执行(Ls<<j)+(2^j-1)的运算。
5.根据权利要求2所述的方法,其特征在于,L不是2的幂且M是零,并且根据对所述当前状态X的解码表中要恢复的位数的对应替代和对新状态的对应替代,动态地确定要从所述编码数据中恢复的当前位数和新状态X包括,将所述要恢复位数的对应替代命名为n_Bits,将所述新状态的对应替代命名为New_state;
从所述编码数据中提取n_Bits位和n_Bits+1位,分别追加到new_state和从new_state中减去L;和
将从所述编码数据恢复的当前位数确定为n_Bits位或n_Bits+1位,通过他们中的一个使其它们各自附加的new_state落入L个不同值的范围内。
6.根据权利要求5所述的方法,其特征在于,获得要从所述编码数据中恢复的当前位数和新状态X的操作包括:
将X1设置为[(new_state)<<n_Bits]-L+(所述编码数据的n_Bits);
将X1设置为[(new_state)<<n_Bits+1]-L+(所述编码数据的n_Bits+1);
确定X1和X2中的哪一个落在{0,…,L-1}的范围内;
如果X1落在{0,…,L-1}的范围内,则将要从所述编码数据中恢复的所述当前位数设置为n_Bits,并将所述新状态X设置为X1;和
如果X2落入{0,…,L-1}的范围内,则将要从所述编码数据中恢复的所述当前位数设置为n_Bits+1,并将所述新状态X设置为X2。
7.根据权利要求1所述的方法,其特征在于,还包括:从与所述编码数据相关联的元数据获得位顺序和级联顺序,所述位顺序指定生成所述编码数据时的位顺序,并且所述级联顺序指定生成所述编码数据时将连续符号生成的位集连接在一起的顺序。
8.根据权利要求1所述的方法,其特征在于,还包括:从与所述编码数据相关联的元数据获得所述L的数值。
9.根据权利要求1所述的方法,其特征在于,还包括:在从所述编码数据中解码最后一个符号之后,跳过动态地确定要从所述编码数据中恢复的所述当前位数和所述新状态X。
10.根据权利要求1所述的方法,其特征在于,所述不同符号的出现次数是减量的出现次数,而不是实际出现的次数。
11.一种解压缩器,其特征在于,包括:
解包器,被配置...
【专利技术属性】
技术研发人员:不公告发明人,
申请(专利权)人:英韧科技南京有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。