CN116208171A - 数据压缩和解压缩方法、装置、电子设备及存储介质 - Google Patents
数据压缩和解压缩方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116208171A CN116208171A CN202211686515.2A CN202211686515A CN116208171A CN 116208171 A CN116208171 A CN 116208171A CN 202211686515 A CN202211686515 A CN 202211686515A CN 116208171 A CN116208171 A CN 116208171A
- Authority
- CN
- China
- Prior art keywords
- integer
- target
- transcoding
- array
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种数据压缩和解压缩方法、装置、电子设备及存储介质,包括:获取待压缩的整数数组中整数的统计分布;根据预设的与统计分布对应的转码关系集合对整数数组中各整数进行转码,获得码值数组和比特流数据;转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数;对码值数组进行编码,获得编码数据;根据编码数据、比特流数据、长度信息和转码关系集合标识,生成整数数组对应的压缩数据。如此,通过获取整数数组中整数的统计分布,接着根据整数数组中整数的统计分布确定对应的转码关系集合,再根据确定的转码关系集合对整数数组进行转码,进而对获得的码值数组进行压缩,能够有效提高数据压缩率,且具有较高的通用性。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据压缩和解压缩方法、装置、电子设备及存储介质。
背景技术
数据压缩可以潜在地减小数据的存储空间,提高存储设备的逻辑容量,从而降低数据的存储和传输成本。而整数压缩是一切数据压缩算法的基础,因为压缩过程中识别到的重复数据片段是以整数的形式来表达的。
然而,目前用于整数压缩的算法主要存在以下两个问题:一个是通用压缩算法如GZIP、ZSTD等用于整数压缩时的压缩率较低,另一个是现有的专用整数压缩算法如Fibonacci编码等,只对某一种特定特征的数据有效,缺乏普适性。
发明内容
本申请的目的在于提供一种数据压缩和解压缩方法、装置、电子设备及存储介质,能够有效提高数据压缩率,且具有较高的通用性。
为达到上述目的:
第一方面,本申请提供了一种数据压缩方法,所述方法包括:
获取待压缩的整数数组中整数的统计分布;
根据预设的与所述统计分布对应的转码关系集合对所述整数数组中各整数进行转码,获得码值数组和比特流数据;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长;
对所述码值数组进行编码,获得编码数据;
根据所述编码数据、所述比特流数据、长度信息和所述转码关系集合标识,生成所述整数数组对应的压缩数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息。
在一实施方式中,所述获取待压缩的整数数组中整数的统计分布,包括:
统计待压缩的整数数组中各整数出现的概率;
根据各所述整数出现的概率对所述整数数组进行分布拟合,获得所述整数数组中整数的统计分布。
在一实施方式中,所述根据各所述整数出现的概率对所述整数数组进行分布拟合,获得所述整数数组中整数的统计分布,包括:
根据各所述整数出现的概率,基于预设的至少一统计分布对所述整数数组进行拟合,获得各所述统计分布分别对应的误差平方和;
将具有最小误差平方和的统计分布确定为所述整数数组中整数的统计分布。
在一实施方式中,所述根据所述转码关系集合对所述整数数组中各整数进行转码,获得码值数组和比特流数据,包括:
根据目标整数查询所述转码关系集合,确定所述转码关系集合中与所述目标整数匹配的目标基准值;所述目标整数为所述整数数组中的任一整数;
从所述转码关系集合中获取所述目标基准值对应的目标码值以及目标输出比特数;
将所述目标码值加入码值数组中,并将所述目标整数与所述目标基准值之间差值的比特序列加入比特流数据中;所述比特序列的码长为所述目标输出比特数。
在一实施方式中,所述根据目标整数查询所述转码关系集合,确定所述转码关系集合中与所述目标整数匹配的目标基准值,包括:
根据目标整数查询所述转码关系集合中是否存在与所述目标整数相同的基准值;
响应于所述转码关系集合中存在与所述目标整数相同的基准值,则将与所述目标整数相同的基准值确定为与所述目标整数匹配的目标基准值;
响应于所述转码关系集合中不存在与所述目标整数相同的基准值,则根据所述目标整数的类型,从所述转码关系集合中相邻的第一基准值和第二基准值中确定与所述目标整数匹配的目标基准值;所述目标整数的大小位于所述第一基准值与所述第二基准值之间。
在一实施方式中,所述根据所述目标整数的类型,从所述转码关系集合中相邻的第一基准值和第二基准值中确定与所述目标整数匹配的目标基准值,包括:
若所述目标整数的类型为正整数,则将所述第一基准值和所述第二基准值之中较小的确定为与所述目标整数匹配的目标基准值;
若所述目标整数的类型为负整数,则将所述第一基准值和所述第二基准值之中较大的确定为与所述目标整数匹配的目标基准值。
第二方面,本申请提供了一种数据解压缩方法,包括:
根据待解压的压缩数据中的长度信息,获取编码数据和比特流数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息;
对所述编码数据进行解码,获得码值数组;
根据所述码值数组、所述比特流数据和所述压缩数据中的转码关系集合标识所对应的转码关系集合,获取所述压缩数据对应的原始整数数组;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长。
在一实施方式中,所述根据所述码值数组、所述比特流数据和所述压缩数据中的转码关系集合标识所对应的转码关系集合,获取所述压缩数据对应的原始整数数组,包括:
根据目标码值查询所述压缩数据中的转码关系集合标识所对应的转码关系集合,确定所述转码关系集合中所述目标码值对应的目标基准值和目标输出比特数;所述目标码值为所述码值数组中的任一码值;
从所述比特流数据中提取所述目标码值对应的、且码长为所述目标输出比特数的目标比特序列;
若所述目标基准值为正整数,则将所述目标基准值与所述目标比特序列之和作为所述目标码值的原始整数,并存入原始整数数组中;
若所述目标基准值为负整数,则将所述目标基准值与所述目标比特序列之差作为所述目标码值的原始整数,并存入原始整数数组中。
第三方面,本申请提供了一种数据压缩装置,包括:
第一获取模块,被配置为获取待压缩的整数数组中整数的统计分布;
转码模块,被配置为根据预设的与所述统计分布对应的转码关系集合对所述整数数组中各整数进行转码,获得码值数组和比特流数据;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长;
编码模块,被配置为对所述码值数组进行编码,获得编码数据;
第一处理模块,被配置为根据所述编码数据、所述比特流数据、长度信息和所述转码关系集合标识,生成所述整数数组对应的压缩数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息。
在一实施方式中,所述第一获取模块,被配置为:
统计待压缩的整数数组中各整数出现的概率;
根据各整数出现的概率对整数数组进行分布拟合,获得整数数组中整数的统计分布。
在一实施方式中,所述第一获取模块,被配置为:
根据各整数出现的概率,基于预设的至少一统计分布对整数数组进行拟合,获得各统计分布分别对应的误差平方和;
将具有最小误差平方和的统计分布确定为整数数组中整数的统计分布。
在一实施方式中,所述转码模块,被配置为:
根据目标整数查询预设的与统计分布对应的转码关系集合,确定转码关系集合中与目标整数匹配的目标基准值;目标整数为整数数组中的任一整数;
从转码关系集合中获取目标基准值对应的目标码值以及目标输出比特数;
将目标码值加入码值数组中,并将目标整数与目标基准值之间差值的比特序列加入比特流数据中;比特序列的码长为目标输出比特数。
在一实施方式中,所述转码模块,被配置为:
根据目标整数查询预设的与统计分布对应的转码关系集合中是否存在与目标整数相同的基准值;
响应于转码关系集合中存在与目标整数相同的基准值,则将与目标整数相同的基准值确定为与目标整数匹配的目标基准值;
响应于转码关系集合中不存在与目标整数相同的基准值,则根据目标整数的类型,从转码关系集合中相邻的第一基准值和第二基准值中确定与目标整数匹配的目标基准值;目标整数的大小位于第一基准值与第二基准值之间。
在一实施方式中,所述转码模块,被配置为:
若目标整数的类型为正整数,则将第一基准值和第二基准值之中较小的确定为与目标整数匹配的目标基准值;
若目标整数的类型为负整数,则将第一基准值和第二基准值之中较大的确定为与目标整数匹配的目标基准值。
第四方面,本申请提供了一种数据解压缩装置,包括:
第二获取模块,被配置为根据待解压的压缩数据中的长度信息,获取编码数据和比特流数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息;
解码模块,被配置为对所述编码数据进行解码,获得原始整数数组的码值数组;
第二处理模块,被配置为根据所述码值数组、所述比特流数据和所述压缩数据中的转码关系集合标识所对应的转码关系集合,获取所述压缩数据对应的原始整数数组;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长。
在一实施方式中,所述第二处理模块,被配置为:
根据目标码值查询所述压缩数据中的转码关系集合标识所对应的转码关系集合,确定所述转码关系集合中所述目标码值对应的目标基准值和目标输出比特数;所述目标码值为所述码值数组中的任一码值;
从所述比特流数据中提取所述目标码值对应的、且码长为所述目标输出比特数的目标比特序列;
若所述目标基准值为正整数,则将所述目标基准值与所述目标比特序列之和作为所述目标码值的原始整数,并存入原始整数数组中;
若所述目标基准值为负整数,则将所述目标基准值与所述目标比特序列之差作为所述目标码值的原始整数,并存入原始整数数组中。
第五方面,本申请还提供了一种电子设备,所述电子设备包括:存储器、处理器,其中,所述存储器上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的数据压缩方法和/或第二方面所述的数据解压缩方法的步骤。
第六方面,本申请还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的数据压缩方法和/或第二方面所述的数据解压缩方法的步骤。
本申请实施例提供的数据压缩和解压缩方法、装置、电子设备及存储介质,所述数据压缩方法包括:获取待压缩的整数数组中整数的统计分布;根据预设的与统计分布对应的转码关系集合对整数数组中各整数进行转码,获得码值数组和比特流数据;转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长;对码值数组进行编码,获得编码数据;根据编码数据、比特流数据、长度信息和转码关系集合标识,生成整数数组对应的压缩数据。如此,通过获取整数数组中整数的统计分布,接着根据整数数组中整数的统计分布确定对应的转码关系集合,再根据确定的转码关系集合对整数数组中的各整数分别进行转码,即将各整数分别转码成一个码值和一个比特序列,进而对获得的码值数组进行压缩,能够有效提高数据压缩率,并且通过自动获取整数数组中整数的统计分布以选取对应的转码关系集合,能够对多类数据进行处理,具有较高的通用性。相应的,在数据解压缩时,根据数据压缩时采用的转码关系集合进行解压缩处理,因而也能够有效提高数据解压缩率。
附图说明
图1为本发明实施例提供的数据压缩方法的流程示意图;
图2为本发明实施例提供的数据解压缩方法的流程示意图
图3为本发明实施例提供的数据压缩装置的结构示意图;
图4为本发明实施例提供的数据解压缩装置的结构示意图;
图5为ZSTD压缩算法的Literal Length和Match Length整数数组中各值的计数分布示意图;
图6为SZ浮点压缩算法的量化因子整数数组中各值的计数分布示意图;
图7为本发明实施例提供的数据压缩方法的具体流程示意图;
图8为本发明实施例提供的数据解压缩方法的具体流程示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素,此外,本申请不同实施例中具有同样命名的部件、特征、要素可能具有相同含义,也可能具有不同含义,其具体含义需以其在该具体实施例中的解释或者进一步结合该具体实施例中上下文进行确定。
应当理解,尽管在本文可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语"如果"可以被解释成为"在……时"或"当……时"或"响应于确定"。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
应该理解的是,虽然本申请实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
需要说明的是,在本文中,采用了诸如S101、S102等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会先执行S102后执行S101等,但这些均应在本申请的保护范围之内。
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或者“单元”的后缀仅为了有利于本申请的说明,其本身没有特定的意义。因此,“模块”、“部件”或者“单元”可以混合地使用。
参阅图1,为本申请实施例提供的一种数据压缩方法,该方法可以由本申请实施例提供的一种数据压缩装置来执行,该装置可以采用软件和/或硬件的方式来实现,在具体应用中,该装置可以具体是电子设备等。该电子设备可以以各种形式来实施,本实施例中描述的电子设备可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(PersonalDigital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)、可穿戴设备、智能手环、计步器、服务器等设备。本实施例提供的数据压缩方法可包括以下步骤:
步骤S101:获取待压缩的整数数组中整数的统计分布。
其中,待压缩的整数数组可以是任意整数序列,比如具体可以是时间序列数据库、关系数据库或者数据仓库中的整型数据等。当待压缩的整数数组有多组时,需要单独获取每组整数数组中整数的统计分布。需要说明的是,由于整数数组中的整数可能是随机生成的,相应的,整数数组中整数的统计分布可以看作是一种近似统计分布,即表征整数数组中整数的大致分布情况。这里,可具体结合统计学等方法对待压缩的整数数组进行分析,以获取待压缩的整数数组中整数的统计分布。本实施例中,统计分布可以是具有对称性特征的分布,如正态分布、高斯分布和伽马分布等,也可以是具有倾斜特征的分布,如半逻辑分布、半柯西分布和指数分布等,在此不作具体限定。此外,若无法获取到待压缩的整数数组中整数的统计分布,则可直接利用变长整数编码方法对整数数组进行压缩。
在一实施方式中,获取待压缩的整数数组中整数的统计分布,包括:
统计待压缩的整数数组中各整数出现的概率;
根据各整数出现的概率对整数数组进行分布拟合,获得整数数组中整数的统计分布。
其中,通过统计待压缩的整数数组中各整数出现的次数,进而结合待压缩的整数数组中所有整数的总个数,可以获知待压缩的整数数组中各整数出现的概率。在获知待压缩的整数数组中各整数出现的概率后,可根据各整数出现的概率对整数数组进行分布拟合,获得整数数组中整数的统计分布,也可称为整数数组中整数的近似统计分布。这里,根据各整数出现的概率对整数数组进行分布拟合的具体过程可参考现有技术,在此不再赘述。如此,根据整数数组中各整数出现的概率对整数数组进行分布拟合,能够快速且准确地获取整数数组中整数的统计分布,进一步提高了数据压缩率。
在一实施方式中,根据各整数出现的概率对整数数组进行分布拟合,获得整数数组中整数的统计分布,包括:
根据各整数出现的概率,基于预设的至少一统计分布对整数数组进行拟合,获得各统计分布分别对应的误差平方和;
将具有最小误差平方和的统计分布确定为整数数组中整数的统计分布。
可以理解,因设计需求或使用限制等因素的影响,本实施例提供的数据压缩方法可能只适应于整数数组中整数的统计分布为预设的统计分布的情况,因此,为了加快处理效率并进一步提高数据压缩率,可以根据各整数出现的概率,基于预设的至少一统计分布对整数数组进行拟合,以获得各统计分布分别对应的误差平方和,进而将具有最小误差平方和的统计分布确定为整数数组中整数的统计分布。需要说明的是,通过基于预设的统计分布对整数数组进行拟合,可以获知用于表征拟合偏差程度的统计分布对应的误差平方和,在一统计分布对应的误差平方和越大时,说明拟合偏差程度越大,则用该统计分布描述整数数组中整数的分布情况的准确度越低,而在一统计分布对应的误差平方和越小时,说明拟合偏差程度越小,则用该统计分布描述整数数组中整数的分布情况的准确度越高。本实施例中,从预设的至少一统计分布中,选取具有最小误差平方和的统计分布确定为整数数组中整数的统计分布,以尽量提高压缩准确性。
步骤S102:根据预设的与统计分布对应的转码关系集合对整数数组中各整数进行转码,获得码值数组和比特流数据;转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长。
具体地,根据预设的至少一统计分布与转码关系集合之间的对应关系,获取预设的与整数数组中整数的统计分布对应的转码关系集合,根据转码关系集合对整数数组中各整数进行转码,获得码值数组和比特流数据。
其中,对于不同的统计分布,可预先设置对应的转码关系集合,并且统计分布与转码关系集合之间可以是一对一的关系,即每种统计分布对应不同的转码关系集合,也可以是多对一的关系,即多种统计分布对应同一个转码关系集合。本实施例中,以半逻辑分布、半柯西分布和指数分布等具有倾斜特征的统计分布对应同一个转码关系集合,而正态分布、高斯分布和伽马分布等具有对称性特征的统计分布对应另一个转码关系集合为例。此外,在具体实现中,转码关系集合具体可以采用转码表等方式进行表示。
其中,转码关系集合可包括至少一基准值以及各基准值分别对应的码值和输出比特数,输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长,也就是说,对于整数数组中的任一整数,可通过查询转码关系集合获知该整数对应的基准值、码值以及输出比特数,进而可根据输出比特数获得该整数与对应的基准值之间差值的比特序列。这里,码值数组包括整数数组中各整数分别对应的码值,且码值数组中的码值与整数数组中的整数是按照顺序一一对应的。比特流数据包括整数数组中各整数与对应的基准值之间差值的比特序列,每个比特序列的码长可能不相同,且比特流数据中的比特序列与整数数组中的整数以及码值数组中的码值是按照顺序一一对应的。
需要说明的是,转码关系集合包含的基准值范围决定着压缩时能够处理的整数范围,而转码关系集合包含的基准值数量可结合基准值范围以及实际需求进行设置。例如,若转码关系集合包含的基准值范围为0~131071,说明压缩时能够处理的整数范围为0~131071。本实施例中,以转码关系集合为转码表,且半逻辑分布、半柯西分布和指数分布等具有倾斜特征的统计分布对应的转码表如表1所示,而正态分布、高斯分布和伽马分布等具有对称性特征的统计分布对应的转码表如表2所示。需要说明的是,表1中的基准值范围可不局限于0~65536,而表2中的基准值范围可不局限于-16384~16384,在具体实现中可以进行扩展,以支持更大的整数范围。
表1
表2
在一实施方式中,根据预设的与统计分布对应的转码关系集合对整数数组中各整数进行转码,获得码值数组和比特流数据,包括:
根据目标整数查询预设的与统计分布对应的转码关系集合,确定转码关系集合中与目标整数匹配的目标基准值;目标整数为整数数组中的任一整数;
从转码关系集合中获取目标基准值对应的目标码值以及目标输出比特数;
将目标码值加入码值数组中,并将目标整数与目标基准值之间差值的比特序列加入比特流数据中;比特序列的码长为目标输出比特数。
具体地,对于整数数组中的任一整数,即本实施例中的目标整数,首先,根据目标整数查询预设的与统计分布对应的转码关系集合,以确定转码关系集合中与目标整数匹配的目标基准值;接着,基于转码关系集合中记录的各基准值分别对应的码值和输出比特数,从转码关系集合中查询并获取目标基准值对应的目标码值以及目标输出比特数;然后,将获得的目标基准值对应的目标码值加入码值数组中,并将码长为目标输出比特数的目标整数与目标基准值之间差值的比特序列加入比特流数据中;如此循环操作,直至完成对整数数组中所有整数的遍历,从而完成对整数数组的压缩。需要说明的是,若目标整数与目标基准值的差值为负整数,则可先对目标整数与目标基准值的差值取绝对值后,再获取目标整数与目标基准值之间差值的比特序列,或者只需要获取目标整数与目标基准值之间差值的数值部分的比特序列。如此,通过查询转码关系集合,可快速确定整数数组中的任一整数对应的基准值、码值和输出比特数,进而可实现快速对该整数进行转码处理,进一步提高了数据压缩率和处理效率。
在一实施方式中,根据目标整数查询预设的与统计分布对应的转码关系集合,确定转码关系集合中与目标整数匹配的目标基准值,包括:
根据目标整数查询预设的与统计分布对应的转码关系集合中是否存在与目标整数相同的基准值;
响应于转码关系集合中存在与目标整数相同的基准值,则将与目标整数相同的基准值确定为与目标整数匹配的目标基准值;
响应于转码关系集合中不存在与目标整数相同的基准值,则根据目标整数的类型,从转码关系集合中相邻的第一基准值和第二基准值中确定与目标整数匹配的目标基准值;目标整数的大小位于第一基准值与第二基准值之间。
具体地,查询预设的与统计分布对应的转码关系集合中,以检测转码关系集合中是否存在与目标整数相同的基准值,若存在与目标整数相同的基准值,则将与目标整数相同的基准值确定为与目标整数匹配的目标基准值,而若不存在与目标整数相同的基准值,则先从转码关系集合中相邻两个基准值构成的基准值区间中确定目标整数所在的基准值区间,并确定构成目标整数所在的基准值区间的第一基准值和第二基准值,再根据目标整数的类型,从第一基准值和第二基准值中确定与目标整数匹配的目标基准值。例如,以使用上述表1对整数数组进行转码为例,若目标整数为64,通过查询表1可获知存在一个值为64的基准值,则可直接将64确定为与目标整数匹配的目标基准值,且对应的码值为25,输出比特数为6,相应的,目标整数与目标基准值的差值为39,采用6位比特序列表示为100111;若目标整数为128,通过查询表1可获知存在一个值为128的基准值,则可直接将128确定为与目标整数匹配的目标基准值,且对应的码值为26,输出比特数为7,相应的,目标整数与目标基准值的差值为102,采用7位比特序列表示为1100110。如此,通过查询转码关系集合中设置的基准值,根据与目标整数相同的基准值或目标整数所在的基准值区间确定为与目标整数匹配的目标基准值,使得无需在转码关系集合中设置较多的基准值,简化了操作,提高了使用的通用性。
在一实施方式中,根据目标整数的类型,从转码关系集合中相邻的第一基准值和第二基准值中确定与目标整数匹配的目标基准值,包括:
若目标整数的类型为正整数,则将第一基准值和第二基准值之中较小的确定为与目标整数匹配的目标基准值;
若目标整数的类型为负整数,则将第一基准值和第二基准值之中较大的确定为与目标整数匹配的目标基准值。
具体地,当目标整数的大小位于第一基准值与第二基准值之间时,若目标整数的类型为正整数,则将第一基准值和第二基准值之中较小的确定为与目标整数匹配的目标基准值,而若目标整数的类型为负整数,则将第一基准值和第二基准值之中较大的确定为与目标整数匹配的目标基准值。其中,第一基准值和第二基准值的类型是相同的,即同时为正整数或负整数。例如,以使用上述表1对整数数组进行转码为例,若目标整数为2000,由于通过查询表1可获知2000位于基准值1024和基准值2048之间,且目标整数为正整数,则可将1024确定为与目标整数匹配的目标基准值,且对应的码值为29,输出比特数为10,相应的,目标整数与目标基准值的差值为976,采用10位比特序列表示为1111010000。再者,以使用上述表2对整数数组进行转码为例,若目标整数为-2000,由于通过查询表2可获知-2000位于基准值-1024和基准值-2048之间,且目标整数为负整数,则可将-1024确定为与目标整数匹配的目标基准值,且对应的码值为38,输出比特数为10,相应的,目标整数与目标基准值的差值为-976,采用10位比特序列表示为1111010000。
步骤S103:对码值数组进行编码,获得编码数据。
其中,可采用有限状态熵编码、哈夫曼编码等熵编码器对码值数组进行编码,以获得对码值数组进行编码后生成的编码数据。需要说明的是,也可以采用其它编码器对码值数组进行编码,本实施例不作具体限定。此外,编码数据可以包括编码所采用的熵编码器标识,或者编码所采用的熵编码器标识也可以设置于压缩数据中。
步骤S104:根据编码数据、比特流数据、长度信息和转码关系集合标识,生成整数数组对应的压缩数据;长度信息为编码数据和/或比特流数据的长度信息
具体地,将编码数据、比特流数据、长度信息和转码关系集合标识作为压缩后的内容,写入整数数组对应的压缩数据中;长度信息为编码数据和/或比特流数据的长度信息。
其中,通过将编码数据的长度信息和/或比特流数据的长度信息写入整数数组对应的压缩数据中,使得在解压缩时能够准确且方便地从压缩数据提取出编码数据和比特流数据。转码关系集合标识用于标识对整数数组进行转码时所采用的转码关系集合,以便于后续对整数数组对应的压缩数据进行解压缩。可选地,可以将长度信息和转码关系集合标识作为整数数组对应的压缩数据的报头信息。此外,编码数据和比特流数据可按照预设顺序排列在整数数组对应的压缩数据中,比如可以是编码数据排列在比特流数据前面等。
综上,上述实施例提供的数据压缩方法中,通过获取整数数组中整数的统计分布,接着根据整数数组中整数的统计分布确定对应的转码关系集合,再根据确定的转码关系集合对整数数组中的各整数分别进行转码,即将各整数分别转码成一个码值和一个比特序列,进而对获得的码值数组进行压缩,能够有效提高数据压缩率,并且通过自动获取整数数组中整数的统计分布以选取对应的转码关系集合,能够对多类数据进行处理,具有较高的通用性。
基于前述实施例相同的发明构思,参阅图2,为本申请实施例提供的一种数据解压缩方法,该方法可以由本申请实施例提供的一种数据解压缩装置来执行,该装置可以采用软件和/或硬件的方式来实现,在具体应用中,该装置可以具体是电子设备等。该电子设备可以以各种形式来实施,本实施例中描述的电子设备可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)、可穿戴设备、智能手环、计步器、服务器等设备。本实施例提供的数据解压缩方法包括以下步骤:
步骤S201:根据待解压的压缩数据中的长度信息,获取编码数据和比特流数据;长度信息为编码数据和/或比特流数据的长度信息。
具体地,在获取待解压的压缩数据后,可根据待解压的压缩数据中编码数据和/或比特流数据的长度信息,从待解压的压缩数据中提取编码数据和比特流数据,从而获得编码数据和比特流数据。
可选地,若编码数据和/或比特流数据的长度信息位于压缩数据的报头信息中,则可从压缩数据的报头信息中提取长度信息,进而根据长度信息从待解压的压缩数据中提取编码数据和比特流数据。
步骤S202:对编码数据进行解码,获得码值数组。
具体地,采用与压缩过程对应的熵编码器对编码数据进行解码,获得对编码数据进行解码后生成的码值数组。
可选地,可以通过协议交互等方式获知压缩过程所采用的熵编码器,也可以通过提取压缩数据或编码数据中包含的熵编码器标识,确定压缩过程所采用的熵编码器。
步骤S203:根据码值数组、比特流数据和压缩数据中的转码关系集合标识所对应的转码关系集合,获取压缩数据对应的原始整数数组;转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长。
可选地,若转码关系集合标识位于压缩数据的报头信息中,则可从压缩数据的报头信息中提取转码关系集合标识。由于已知码值数组和压缩数据中的转码关系集合标识所对应的转码关系集合,可获知码值数组中各码值分别对应的基准值以及输出比特数,结合比特流数据,可进一步获知压缩数据对应的原始整数数组中各原始整数与对应的基准值之间差值,最后可获知压缩数据对应的原始整数数组中的各原始整数。
在一实施方式中,根据码值数组、比特流数据和压缩数据中的转码关系集合标识所对应的转码关系集合,获取压缩数据对应的原始整数数组,包括:
根据目标码值查询压缩数据中的转码关系集合标识所对应的转码关系集合,确定转码关系集合中目标码值对应的目标基准值和目标输出比特数;目标码值为码值数组中的任一码值;
从比特流数据中提取目标码值对应的、且码长为目标输出比特数的目标比特序列;
若目标基准值为正整数,则将目标基准值与目标比特序列之和作为目标码值的原始整数,并存入原始整数数组中;
若目标基准值为负整数,则将所述目标基准值与所述目标比特序列之差作为目标码值的原始整数,并存入原始整数数组中。
具体地,对于码值数组中的任一码值,即本实施例中的目标码值,根据目标码值查询压缩数据中的转码关系集合标识所对应的转码关系集合,以确定转码关系集合中目标码值对应的目标基准值和目标输出比特数;接着,从比特流数据中提取目标码值对应的、且码长为目标输出比特数的目标比特序列;接着,结合目标基准值的类型,根据目标基准值与目标比特序列确定目标码值的原始整数,即若目标基准值为正整数,则将目标基准值与目标比特序列之和作为目标码值的原始整数,而若目标基准值为负整数,则将所述目标基准值与所述目标比特序列之差作为目标码值的原始整数;最后,将目标码值的原始整数存入原始整数数组中;如此循环操作,直至完成对码值数组中所有码值的遍历,从而完成对压缩数据的解压缩。例如,以压缩数据中的转码关系集合标识所对应的转码关系集合为上述实施例中的表1为例,若目标码值为29,由于通过查询表1可获知码值29对应的目标基准值为1024,且目标输出比特数为10,从比特流数据中提取目标码值对应的10位比特序列为1111010000,即976,则可计算出目标基准值与目标比特序列之和为2000,同时将2000作为目标码值的原始整数存入原始整数数组中。再者,以压缩数据中的转码关系集合标识所对应的转码关系集合为上述实施例中的表2为例,若目标码值为38,由于通过查询表2可获知码值38对应的目标基准值为-1024,且目标输出比特数为10,从比特流数据中提取目标码值对应的10位比特序列为1111010000,即976,则可计算出目标基准值与目标比特序列之差为-2000,同时将-2000作为目标码值的原始整数存入原始整数数组中。
综上,上述实施例提供的数据解压缩方法中,在获取压缩数据中的编码数据和比特流数据后,结合压缩数据中的转码关系集合标识所对应的转码关系集合进行解压缩处理,以获得压缩数据对应的原始整数数组,能够有效提高数据解压缩率。
基于前述实施例相同的发明构思,参阅图3,本申请实施例提供了一种数据压缩装置,包括:
第一获取模块,被配置为获取待压缩的整数数组中整数的统计分布;
转码模块,被配置为根据预设的与统计分布对应的转码关系集合对整数数组中各整数进行转码,获得码值数组和比特流数据;转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长;
编码模块,被配置为对码值数组进行编码,获得编码数据;
第一处理模块,被配置为根据编码数据、比特流数据、长度信息和转码关系集合标识,生成整数数组对应的压缩数据;长度信息为编码数据和/或比特流数据的长度信息。
综上,上述实施例提供的数据压缩装置中,通过获取整数数组中整数的统计分布,接着根据整数数组中整数的统计分布确定对应的转码关系集合,再根据确定的转码关系集合对整数数组中的各整数分别进行转码,即将各整数分别转码成一个码值和一个比特序列,进而对获得的码值数组进行压缩,能够有效提高数据压缩率,并且通过自动获取整数数组中整数的统计分布以选取对应的转码关系集合,能够对多类数据进行处理,具有较高的通用性。
在一实施方式中,第一获取模块,被配置为:
统计待压缩的整数数组中各整数出现的概率;
根据各整数出现的概率对整数数组进行分布拟合,获得整数数组中整数的统计分布。
如此,根据整数数组中各整数出现的概率对整数数组进行分布拟合,能够快速且准确地获取整数数组中整数的统计分布,进一步提高了数据压缩率。
在一实施方式中,第一获取模块,被配置为:
根据各整数出现的概率,基于预设的至少一统计分布对整数数组进行拟合,获得各统计分布分别对应的误差平方和;
将具有最小误差平方和的统计分布确定为整数数组中整数的统计分布。
如此,能够加快处理效率,并进一步提高数据压缩率。
在一实施方式中,转码模块,被配置为:
根据目标整数查询预设的与统计分布对应的转码关系集合,确定转码关系集合中与目标整数匹配的目标基准值;目标整数为整数数组中的任一整数;
从转码关系集合中获取目标基准值对应的目标码值以及目标输出比特数;
将目标码值加入码值数组中,并将目标整数与目标基准值之间差值的比特序列加入比特流数据中;比特序列的码长为目标输出比特数。
如此,通过查询转码关系集合,可快速确定整数数组中的任一整数对应的基准值、码值和输出比特数,进而可实现快速对该整数进行转码处理,进一步提高了数据压缩率和处理效率。
在一实施方式中,转码模块,被配置为:
根据目标整数查询预设的与统计分布对应的转码关系集合中是否存在与目标整数相同的基准值;
响应于转码关系集合中存在与目标整数相同的基准值,则将与目标整数相同的基准值确定为与目标整数匹配的目标基准值;
响应于转码关系集合中不存在与目标整数相同的基准值,则根据目标整数的类型,从转码关系集合中相邻的第一基准值和第二基准值中确定与目标整数匹配的目标基准值;目标整数的大小位于第一基准值与第二基准值之间。
如此,通过查询转码关系集合中设置的基准值,根据与目标整数相同的基准值或目标整数所在的基准值区间确定为与目标整数匹配的目标基准值,使得无需在转码关系集合中设置较多的基准值,简化了操作,提高了使用的通用性。
在一实施方式中,转码模块,被配置为:
若目标整数的类型为正整数,则将第一基准值和第二基准值之中较小的确定为与目标整数匹配的目标基准值;
若目标整数的类型为负整数,则将第一基准值和第二基准值之中较大的确定为与目标整数匹配的目标基准值。
基于前述实施例相同的发明构思,参阅图4,本申请实施例提供了一种数据解压缩装置,包括:
第二获取模块,被配置为根据待解压的压缩数据中的长度信息,获取编码数据和比特流数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息;
解码模块,被配置为对所述编码数据进行解码,获得原始整数数组的码值数组;
第二处理模块,被配置为根据所述码值数组、所述比特流数据和所述压缩数据中的转码关系集合标识所对应的转码关系集合,获取所述压缩数据对应的原始整数数组;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长。
在一实施方式中,第二处理模块,被配置为:
根据目标码值查询压缩数据中的转码关系集合标识所对应的转码关系集合,确定转码关系集合中目标码值对应的目标基准值和目标输出比特数;目标码值为码值数组中的任一码值;
从比特流数据中提取目标码值对应的、且码长为目标输出比特数的目标比特序列;
若目标基准值为正整数,则将目标基准值与目标比特序列之和作为目标码值的原始整数,并存入原始整数数组中;
若目标基准值为负整数,则将所述目标基准值与所述目标比特序列之差作为目标码值的原始整数,并存入原始整数数组中。
综上,上述实施例提供的数据解压缩装置中,在获取压缩数据中的编码数据和比特流数据后,结合压缩数据中的转码关系集合标识所对应的转码关系集合进行解压缩处理,以获得压缩数据对应的原始整数数组,能够有效提高数据解压缩率。
基于前述实施例相同的发明构思,下面通过一具体示例对前述实施例进行详细说明,本实施例中以转码关系集合为转码表为例。
数据压缩可以潜在地减小数据的存储空间,提高存储设备的逻辑容量,从而降低数据的存储和传输成本,因此具有很高的技术吸引力。数据压缩的关键是通过将重复出现的数据片段替换为对未压缩数据流中较早存在的数据片段的单个副本的引用来实现压缩。整数压缩是一切数据压缩算法的基础,因为压缩过程中识别到的重复数据片段是以整数的形式来表达的。比如,ZSTD无损压缩算法中的每一个匹配序列由一个整数三元组<LL,ML,OFFSET>来表达,其中LL指的是Literal Length,也就是当前序列需要先从未匹配上的字节区域顺序读取的字节数,ML指的是Match Length,也就是当前匹配序列的匹配长度,OFFSET是当前的匹配序列与被匹配序列之间的偏移字节距离。LL、ML和OFFSET都是整数。再比如,SZ有损浮点数据压缩算法也是将浮点数进行量化处理,得到整数的量化因子,然后对整数的量化因子进行压缩。
然而,GZIP和ZSTD等通用数据压缩算法是以字节为单位对数据序列进行匹配和编码,一个整型数据包含1至4字节的有效信息,以字节为单位的通用压缩破坏了整数数据的概率分布,无法达到最优的压缩率。现有的整数压缩算法如Fibonacci编码、Thompson-Alpha编码、VLQ编码、Elias-Omega、Gamma、Delta编码等都只对特定的数据有效。比如,Fibonacci编码仅适合数值小于8000的数据,Thompson-Alpha编码适合数值大于8000的数据,Elias-Gamma编码仅适合数值小于8的数据。Varint是一种通用的整数编码算法,但是它的压缩率不高。所以,当前的整数压缩算法主要存在两个问题:第一个是通用压缩算法如GZIP、ZSTD等用于整数压缩的压缩率较低,第二个是现有的专用压缩算法只对某一种特定特征的数据有效,缺乏普适性。
针对现有数据压缩方法存在的压缩率较低和缺乏普适性的问题,本实施例提出一种数据压缩方法来解决上述问题,具体地,为了解决通用压缩算法压缩率低的问题,本实施例提出在压缩过程中通过将一个整数转码成一个码值和一个比特序列,然后对码值进行压缩,同时定义多种转码表,自动识别数据的统计特征来选取合适的转码表,避免算法只对某一类数据有效。
本实施例提出的数据压缩方法的原理构思如下:
整数数据通常展现出一定的近似统计特征,如图5和图6所示,图5表示一个4KB数据通过ZSTD压缩器进行压缩的过程中产生的Literal Length和Match Length整数数组中每个元素取值的计数分布示意图,图5中(a)中展示的是ZSTD压缩算法的Literal Length整数数组中各值的计数分布,图5中(b)中展示的是ZSTD压缩算法的Match Length整数数组中各值的计数分布。从图5中可以看出,这些值近似于半逻辑分布、半柯西分布、或者指数分布。图6展示的是SZ压缩算法的量化因子整数数组中各值的计数分布示意图,其值近似于正态分布或者伽马分布。本实施例提出的数据压缩方法的基本原理是自动识别数据的近似分布,然后利用预定义的转码表对概率分布不同的数据做不同的转码,再对转码后的码值数组进行压缩。如果数据分布没有近似呈现出预定义的统计特征,那么就不做转码,而是用变长整数编码(Varint)对数据进行压缩。
针对不同的数据分布特征,需要设计不同的转码表。比如,对于半逻辑分布、半柯西分布和指数分布等具有倾斜特征的分布,设计类似如上述实施例中表1所示的转码表;而对于正态分布、高斯分布、伽马分布等具有对称性特征的分布,设计类似如上述实施例中表2所示的转码表。需要说明的是,上述两种转码表只是典型的例子,具体实施过程可以对转码表进行扩展。
本实施例提出的数据压缩方法可用于任意整数序列的压缩,比如压缩算法的整型量化因子、时间序列数据库、关系数据库或者数据仓库中的整型数据等。本实施例提出的数据压缩方法在通用性的基础上,能够提升整型数据压缩率。
其中,参阅图7,本实施例提供的数据压缩方法可包括如下步骤:
步骤S301、获取输入的整数数组。
步骤S302、分析整数数组中整数的近似统计分析。
具体地,对整数数组S中每个值发生的概率进行统计,然后用预先定义的统计分布来对整数数组S的概率密度进行拟合,对于每个候选的统计分布,计算出对应的误差平方和值,并将误差平方和最小的统计分布作为整数数组S的近似统计分布。其中,概率密度函数的拟合为现有技术,并可利用python3的scipy库函数对该步骤描述的流程进行验证。
步骤S303、根据近似统计分布对应的转码表对整数数组中的每个整数进行转码,得到码值数组和比特流数据。
这里,利用整数数组S中整数的近似统计分布来决定整数数组S使用的转码表T。其中,统计分布和转码表之间可以是多对一的关系,比如半逻辑分布、半柯西分布和指数分布都对应使用上述实施例中表1所示的转码表,而正态分布、高斯分布和伽马分布都对应使用上述实施例中表2所示的转码表。在确定整数数组S对应的转码表T之后,对整数数组S中的每个整数进行转码,转码过程一个整数会转成一个整数码值和若干比特的数据即比特序列,具体的码值和比特值取决于整数值和转码表。假设使用上述实施例中表1所示的转码表来对整数2000进行转码,由于2000介于基准值1024和基准值2048之间,取比它小并且最接近的基准值1024,那么可以得到整数2000对应的基准值(baseline)为1024,对应的码值为29,并且得到10位比特序列数据1111010000(对应整数值为976,即整数2000与基准值1024之间差值)输出到比特流数据。
步骤S304、用熵编码器对码值数组进行编码,得到编码数据。
具体地,对于转码整数数组S的过程中得到的码值数组C,使用熵编码器比如FSE或者哈夫曼编码等进行压缩,得到压缩后的编码数据EC。本实施例中对码值数组C采用的具体压缩方法不作具体限定。
步骤S305、将编码数据、比特流数据和转码表标识作为整数数组压缩后的输出结果。
具体地,将编码数据、比特流数据BS和转码表标识,以及分别关于编码数据和比特流数据的头信息如长度信息作为整数数组的输出结果并保存。其中,转码表标识用于标识对整数数组中的每个整数进行转码所使用的转码表。
其中,参阅图8,本实施例提供的数据解压缩方法可包括如下步骤:
步骤S401、获取压缩数据中的编码数据和比特流数据。
具体地,可利用压缩数据的头信息解析出码值数组编码后生成的编码数据EC和比特流数据BS。
步骤S402、利用熵编码器对编码数据进行解码,得到码值数组。
具体地,使用与压缩过程对应的熵编码器对编码数据EC进行解码,得到码值数组。
步骤S403、查询压缩数据中所指定的转码表,获取码值数组中各码值对应的基准值和输出比特数。
具体地,对于码值数组中的每个码值,分别查询压缩数据中的转码表标识对应的转码表,以获取每个码值对应的基准值和输出比特数。
步骤S404、根据各码值对应的输出比特数,从比特流数据中读取各码值对应的比特序列。
具体地,根据码值数组中的每个码值对应的输出比特数,依次从比特流数据中读取码长为对应输出比特数的比特序列。
步骤S405、根据各码值对应的基准值和比特序列,恢复原始整数值并存入整数数组。
具体地,对于每个码值,如果基准值为正整数,则将基准值加上比特序列对应的整数值,得到码值对应的原始正整数值,并存入整数数组S;如果基准值为负整数,则将基准值减去比特序列对应的整数值,得到码值对应的原始负整数值,并存入整数数组S。依次循环操作,直至对码值数组中的每个码值都处理完毕。
步骤S406、输出解压缩获得的整数数组。
综上,上述实施例提供的数据压缩方法中,基于整数的统计分布进行智能化转码,以及针对不同数据分设计不同的转码表,既能保证通用性,也能优化数据压缩率。
本申请实施例还提供一种电子设备,所述电子设备包括:存储器、处理器,其中,所述存储器上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述的数据压缩方法和/或数据解压缩方法的步骤。
本申请实施例还提供一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述的数据压缩方法和/或数据解压缩方法的步骤。
在本申请实施例提供的电子设备和存储介质的实施例中,可以包含任一上述处理方法实施例的全部技术特征,说明书拓展和解释内容与上述方法的各实施例基本相同,在此不再做赘述。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如上各种可能的实施方式中所述的数据压缩方法和/或数据解压缩方法。
本申请实施例还提供一种芯片,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得安装有所述芯片的设备执行如上各种可能的实施方式中所述的数据压缩方法和/或数据解压缩方法。
可以理解,上述场景仅是作为示例,并不构成对于本申请实施例提供的技术方案的应用场景的限定,本申请的技术方案还可应用于其他场景。例如,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例设备中的单元可以根据实际需要进行合并、划分和删减。
在本申请中,对于相同或相似的术语概念、技术方案和/或应用场景描述,一般只在第一次出现时进行详细描述,后面再重复出现时,为了简洁,一般未再重复阐述,在理解本申请技术方案等内容时,对于在后未详细描述的相同或相似的术语概念、技术方案和/或应用场景描述等,可以参考其之前的相关详细描述。
在本申请中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,除了包含所列的那些要素,而且还可包含没有明确列出的其他要素。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种数据压缩方法,其特征在于,所述方法包括:
获取待压缩的整数数组中整数的统计分布;
根据预设的与所述统计分布对应的转码关系集合对所述整数数组中各整数进行转码,获得码值数组和比特流数据;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长;
对所述码值数组进行编码,获得编码数据;
根据所述编码数据、所述比特流数据、长度信息和所述转码关系集合标识,生成所述整数数组对应的压缩数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息。
2.根据权利要求1所述的数据压缩方法,其特征在于,所述获取待压缩的整数数组中整数的统计分布,包括:
统计待压缩的整数数组中各整数出现的概率;
根据各所述整数出现的概率对所述整数数组进行分布拟合,获得所述整数数组中整数的统计分布。
3.根据权利要求2所述的数据压缩方法,其特征在于,所述根据各所述整数出现的概率对所述整数数组进行分布拟合,获得所述整数数组中整数的统计分布,包括:
根据各所述整数出现的概率,基于预设的至少一统计分布对所述整数数组进行拟合,获得各所述统计分布分别对应的误差平方和;
将具有最小误差平方和的统计分布确定为所述整数数组中整数的统计分布。
4.根据权利要求1至3中任一项所述的数据压缩方法,其特征在于,所述根据所述转码关系集合对所述整数数组中各整数进行转码,获得码值数组和比特流数据,包括:
根据目标整数查询所述转码关系集合,确定所述转码关系集合中与所述目标整数匹配的目标基准值;所述目标整数为所述整数数组中的任一整数;
从所述转码关系集合中获取所述目标基准值对应的目标码值以及目标输出比特数;
将所述目标码值加入码值数组中,并将所述目标整数与所述目标基准值之间差值的比特序列加入比特流数据中;所述比特序列的码长为所述目标输出比特数。
5.根据权利要求4所述的数据压缩方法,其特征在于,所述根据目标整数查询所述转码关系集合,确定所述转码关系集合中与所述目标整数匹配的目标基准值,包括:
根据目标整数查询所述转码关系集合中是否存在与所述目标整数相同的基准值;
响应于所述转码关系集合中存在与所述目标整数相同的基准值,则将与所述目标整数相同的基准值确定为与所述目标整数匹配的目标基准值;
响应于所述转码关系集合中不存在与所述目标整数相同的基准值,则根据所述目标整数的类型,从所述转码关系集合中相邻的第一基准值和第二基准值中确定与所述目标整数匹配的目标基准值;所述目标整数的大小位于所述第一基准值与所述第二基准值之间。
6.根据权利要求5所述的数据压缩方法,其特征在于,所述根据所述目标整数的类型,从所述转码关系集合中相邻的第一基准值和第二基准值中确定与所述目标整数匹配的目标基准值,包括:
若所述目标整数的类型为正整数,则将所述第一基准值和所述第二基准值之中较小的确定为与所述目标整数匹配的目标基准值;
若所述目标整数的类型为负整数,则将所述第一基准值和所述第二基准值之中较大的确定为与所述目标整数匹配的目标基准值。
7.一种数据解压缩方法,其特征在于,所述方法包括:
根据待解压的压缩数据中的长度信息,获取编码数据和比特流数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息;
对所述编码数据进行解码,获得码值数组;
根据所述码值数组、所述比特流数据和所述压缩数据中的转码关系集合标识所对应的转码关系集合,获取所述压缩数据对应的原始整数数组;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长。
8.根据权利要求7所述的数据解压缩方法,其特征在于,所述根据所述码值数组、所述比特流数据和所述压缩数据中的转码关系集合标识所对应的转码关系集合,获取所述压缩数据对应的原始整数数组,包括:
根据目标码值查询所述压缩数据中的转码关系集合标识所对应的转码关系集合,确定所述转码关系集合中所述目标码值对应的目标基准值和目标输出比特数;所述目标码值为所述码值数组中的任一码值;
从所述比特流数据中提取所述目标码值对应的、且码长为所述目标输出比特数的目标比特序列;
若所述目标基准值为正整数,则将所述目标基准值与所述目标比特序列之和作为所述目标码值的原始整数,并存入原始整数数组中;
若所述目标基准值为负整数,则将所述目标基准值与所述目标比特序列之差作为所述目标码值的原始整数,并存入原始整数数组中。
9.一种数据压缩装置,其特征在于,包括:
第一获取模块,被配置为获取待压缩的整数数组中整数的统计分布;
转码模块,被配置为根据预设的与所述统计分布对应的转码关系集合对所述整数数组中各整数进行转码,获得码值数组和比特流数据;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长;
编码模块,被配置为对所述码值数组进行编码,获得编码数据;
第一处理模块,被配置为根据所述编码数据、所述比特流数据、长度信息和所述转码关系集合标识,生成所述整数数组对应的压缩数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息。
10.一种数据解压缩装置,其特征在于,包括:
第二获取模块,被配置为根据待解压的压缩数据中的长度信息,获取编码数据和比特流数据;所述长度信息为所述编码数据和/或所述比特流数据的长度信息;
解码模块,被配置为对所述编码数据进行解码,获得原始整数数组的码值数组;
第二处理模块,被配置为根据所述码值数组、所述比特流数据和所述压缩数据中的转码关系集合标识所对应的转码关系集合,获取所述压缩数据对应的原始整数数组;所述转码关系集合包括至少一基准值以及各基准值分别对应的码值和输出比特数,所述输出比特数用于指示任一整数与对应基准值之间差值的比特序列的码长。
11.一种电子设备,其特征在于,包括:处理器和存储有计算机程序的存储器,在所述处理器运行所述计算机程序时,实现如权利要求1至6中任一项所述的数据压缩方法和/或如权利要求7至8中任一项所述的数据解压缩方法的步骤。
12.一种存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至6中任一项所述的数据压缩方法和/或如权利要求7至8中任一项所述的数据解压缩方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211686515.2A CN116208171A (zh) | 2022-12-27 | 2022-12-27 | 数据压缩和解压缩方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211686515.2A CN116208171A (zh) | 2022-12-27 | 2022-12-27 | 数据压缩和解压缩方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116208171A true CN116208171A (zh) | 2023-06-02 |
Family
ID=86518210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211686515.2A Pending CN116208171A (zh) | 2022-12-27 | 2022-12-27 | 数据压缩和解压缩方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116208171A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097442A (zh) * | 2023-10-19 | 2023-11-21 | 深圳大普微电子股份有限公司 | 一种数据解码方法、系统、设备及计算机可读存储介质 |
-
2022
- 2022-12-27 CN CN202211686515.2A patent/CN116208171A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097442A (zh) * | 2023-10-19 | 2023-11-21 | 深圳大普微电子股份有限公司 | 一种数据解码方法、系统、设备及计算机可读存储介质 |
CN117097442B (zh) * | 2023-10-19 | 2024-01-16 | 深圳大普微电子股份有限公司 | 一种数据解码方法、系统、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831655B2 (en) | Methods, devices and systems for compressing and decompressing data | |
US20200044663A1 (en) | Methods, Devices and Systems for Hybrid Data Compression and Decompression | |
KR101678223B1 (ko) | 멀티미디어 서명 코딩 및 디코딩 | |
US8990217B2 (en) | Lossless compression of high nominal-range data | |
WO2019153700A1 (zh) | 编解码方法、装置及编解码设备 | |
US10268380B2 (en) | Methods, devices and systems for semantic-value data compression and decompression | |
US20130307709A1 (en) | Efficient techniques for aligned fixed-length compression | |
US7737869B2 (en) | Symbol based data compression | |
US7511639B2 (en) | Data compression for communication between two or more components in a system | |
EP3108583B1 (en) | Devices and methods of source-encoding and decoding of data | |
EP2034738B1 (en) | Data compression apparatus and method | |
US20120130965A1 (en) | Data compression method | |
JP2014525183A (ja) | 2dマトリクスにエンコーディングパラメータを保存する画像圧縮のための方法および装置 | |
US7375660B1 (en) | Huffman decoding method | |
JP2003218703A (ja) | データ符号化装置及びデータ復号装置 | |
US20060018556A1 (en) | Method, apparatus and system for data block rearrangement for LZ data compression | |
CN116208171A (zh) | 数据压缩和解压缩方法、装置、电子设备及存储介质 | |
US20130018856A1 (en) | Compression of bitmaps and values | |
JP4382090B2 (ja) | 符号化装置、符号化方法およびコードブック | |
US20140321765A1 (en) | Feature descriptor encoding apparatus, feature descriptor encoding method, and program | |
US20220005229A1 (en) | Point cloud attribute encoding method and device, and point cloud attribute decoding method and devcie | |
CN113678460B (zh) | 一种数据编码、数据解码方法、设备及存储介质 | |
CN112449191B (zh) | 压缩多个图像的方法、解压缩图像的方法和装置 | |
GB2539239A (en) | Encoders, decoders and methods | |
Cánovas et al. | Practical compression for multi-alignment genomic files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |