数据压缩方法及装置、数据解压缩方法及装置
技术领域
本发明涉及数据处理领域,特别地,涉及数据压缩方法及装置、数据解压缩方法及装置。
背景技术
数据压缩是指在不丢失信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率的一种技术方法。或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间。数据压缩包括有损压缩和无损压缩。有损压缩是利用了人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响缩小,却换来了大得多的压缩比。有损压缩广泛应用于语音,图像和视频数据的压缩。无损压缩格式,是利用数据的统计冗余进行压缩,可完全恢复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为2∶1到5∶1,这类方法广泛用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩。
对于任何形式的通信来说,只有当信息的发送方和接受方都能够理解编码机制的时候压缩数据通信才能够工作。只有当接受方知道编码方法的时候他才能够理解压缩数据。一些压缩算法利用了这个特性,在压缩过程中对数据进行加密,例如利用密码加密,以保证只有得到授权的一方才能正确地得到数据,数据压缩能够实现是因为多数现实世界的数据都有统计冗余。
如果允许一定程度的保真度损失,还可以实现进一步的压缩。例如,人们看图画或者电视画面的时候可能并不会注意到一些细节并不完善。同样,两个音频录音采样序列可能听起来一样,但实际上并不完全一样。有损压缩算法在带来微小差别的情况下使用较少的位数表示图像、视频或者音频,由于可以帮助减少如硬盘空间与连接带宽这样的昂贵资源的消耗,所以压缩非常重要,然而压缩需要消耗信息处理资源,这也可能是费用昂贵的。所以数据压缩机制的设计需要在压缩能力、失真度、所需计算资源以及其它需要考虑的不同因素之间进行折衷。
目前缺少一种高效的数据压缩方法,从而实现对原始数据流有效压缩。
发明内容
本发明解决的技术问题在于提供了一种数据压缩方法和解压缩方法,还提供了一种数据压缩装置和解压缩装置。
为解决上述问题,本发明提供了一种数据压缩方法,包括,
输入原始数据流,确定作为组成一个符号所需的N比特的大小,N≥1;
将原始数据流分割成由每段N比特符号组成的连续符号流;
区分压缩符号和非压缩符号,并根据设定的压缩格式进行压缩输出压缩数据流。
上述的方法,其中,所述确定作为组成一个符号所需的N比特的大小为原始数据流中连续的0和1比特出现最多的次数。
上述的方法,其中,在将原始数据流分割成由每段N比特符号组成的连续符号流时,若连续符号组成的数据流的大小超过原始数据流时,用0比特进行填充。
上述的方法,其中,所述区分压缩符号和非压缩符号具体为,
将连续的0比特作为压缩符号0,连续的1比特作为压缩符号1,其余的非连续0、1符号作为非压缩符号。
上述的方法,其中,所述设定的压缩格式为,首位为一个压缩标志,随后为压缩符号0的标志位信息,压缩符号1与非压缩符号的个数信息,压缩符号1的位置信息,压缩符号1的个数信息,压缩符号1的数值信息,而后依次为非压缩符号的位置信息与数值信息;或者
首位为一个压缩标志,随后为压缩符号1的标志位信息,压缩符号0与非压缩符号的个数信息,压缩符号0的位置信息,压缩符号0的个数信息,压缩符号0的数值信息,随后依次为非压缩符号的位置信息与数值信息。
进一步地,在根据设定的压缩格式进行压缩输出压缩数据流前,还包括,
将非压缩符号的个数与设定的压缩门限数K进行比较,当非压缩符号的个数大于K时,则输出非压缩标志位,将输入的原始数据流依次输出;当非压缩符号的个数小于K时,则进行压缩。
本发明还提供了一种数据解压缩方法,包括,
接收压缩数据流,当遇到压缩标志时,准备解压缩;
根据压缩格式对应的解压缩算法进行还原,输出原始数据流。
上述的方法,其中,所述解压缩算法包括,
根据压缩符号的标志位确定压缩符号为0,随后根据压缩符号1与非压缩符号的个数信息确定待还原符号的个数,根据非压缩符号的位置信息与数值信息确定非压缩符号在原始数据流中的位置与数值大小;
在输出的解压缩数据流的其余位置写入确定的非压缩符号0;
根据压缩数据流压缩符号1与非压缩符号的个数信息确定填充比特的数值信息,删除还原的原始数据流的相应位填充比特的信息;
或者
根据压缩符号的标志位确定压缩符号为1,随后根据解压缩符号0与非压缩符号的个数信息确定待还原符号的个数,根据非压缩符号的位置信息与数值信息确定非压缩符号在原始数据流中的位置与数值大小;
在输出的解压缩的其余位置写入所述确定的非压缩符号1;
根据压缩数据流压缩符号0与非压缩符号的个数信息确定填充比特的数值信息,删除还原的数据流的相应位填充比特的信息。
本发明还提供了一种数据压缩装置,其特征在于,包括,
输入模块,用于输入原始数据流,确定作为组成一个符号所需的N比特的大小,N≥1;
分割模块,用于将原始数据流分割成由每段N比特符号组成的连续符号流;
输出单元,区分压缩符号和非压缩符号,并根据设定的压缩格式进行压缩输出压缩数据流。
上述的装置,其中,所述确定作为组成一个符号所需的N比特的大小为原始数据流中连续的0和1比特出现最多的次数;
在将原始数据流分割成由每段N比特符号组成的连续符号流时,若连续符号组成的数据流的大小超过原始数据流时,用0比特进行填充;
所述区分压缩符号和非压缩符号具体为,
将连续的0比特作为压缩符号0,连续的1比特作为压缩符号1,其余的非连续0、1符号作为非压缩符号。
上述的装置,其中,所述设定的压缩格式为,
首位为一个压缩标志,随后为压缩符号0的标志位信息,压缩符号1与非压缩符号的个数信息,压缩符号1的位置信息,压缩符号1的个数信息,压缩符号1的数值信息,而后依次为非压缩符号的位置信息与数值信息;或者
首位为一个压缩标志,随后为压缩符号1的标志位信息,压缩符号0与非压缩符号的个数信息,压缩符号0的位置信息,压缩符号0的个数信息,压缩符号0的数值信息,随后依次为非压缩符号的位置信息与数值信息。
进一步地,所述装置还包括,
比较模块,用于在根据设定的压缩格式进行压缩输出压缩数据流前,将非压缩符号的个数与设定的压缩门限数K进行比较,当非压缩符号的个数大于K时,则输出非压缩标志位,将输入的原始数据流依次输出;当非压缩符号的个数小于K时,则进行压缩。
本发明还提供了一种数据解压缩装置,包括,
接收模块,用于接收压缩数据流,在遇到压缩标志时,准备解压缩;
解压缩模块,用于根据所述压缩格式对应的解压缩算法进行还原,输出原始数据流。
上述的装置,其中,所述解压缩算法包括,
根据压缩符号的标志位确定压缩符号为0,随后根据压缩符号1与非压缩符号的个数信息确定待还原符号的个数,根据非压缩符号的位置信息与数值信息确定非压缩符号在原始数据流中的位置与数值大小;
在输出的解压缩数据流的其余位置写入确定的非压缩符号0;
根据压缩数据流压缩符号1与非压缩符号的个数信息确定填充比特的数值信息,删除还原的原始数据流的相应位填充比特的信息;
或者
根据压缩符号的标志位确定压缩符号为1,随后根据解压缩符号0与非压缩符号的个数信息确定待还原符号的个数,根据非压缩符号的位置信息与数值信息确定非压缩符号在原始数据流中的位置与数值大小;
在输出的解压缩的其余位置写入所述确定的非压缩符号1;
根据压缩数据流压缩符号0与非压缩符号的个数信息确定填充比特的数值信息,删除还原的数据流的相应位填充比特的信息。
采用本发明的技术方案,能够高效的对数据进行压缩和解压缩,从而实现对原始数据流的有效处理。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明第一实施例流程图;
图2是压缩数据流示例图;
图3是本发明第二实施例流程图;
图4是本发明第三实施例流程图;
图5是本发明第四实施例结构图;
图6是本发明第五实施例结构图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,是本发明第一实施例流程图,提供了一种数据压缩方法,包括,
步骤S101,输入原始数据流,以原始数据流中连续的0和1比特出现最多的次数,确定作为组成一个符号所需的N比特的大小;
步骤S102,将原始数据流分割成由每段N比特符号组成的连续符号流,当连续符号组成的数据流的大小超过原始数据流时,用0比特进行填充;
步骤S103,将连续的0比特作为压缩符号0,连续的1比特作为压缩符号1,其余的非0、1符号作为非压缩符号;
步骤S104,将非压缩符号的个数与设定的压缩门限数K进行比较,当非压缩符号的个数大于K时,则输出非压缩标志位,将输入的原始数据流依次输出;当非压缩符号的个数小于K时,则输出压缩数据流:
所述压缩数据流格式为:首位为一个压缩标志,随后为压缩符号0的标志位信息,压缩符号1与非压缩符号的个数信息,压缩符号1的位置信息,压缩符号1的个数信息,压缩符号1的数值信息,而后依次为非压缩符号的位置信息与数值信息;或者
首位为一个压缩标志,随后为压缩符号1的标志位信息,压缩符号0与非压缩符号的个数信息,压缩符号0的位置信息,压缩符号0的个数信息,压缩符号0的数值信息,随后依次为非压缩符号的位置信息与数值信息。
如图2所示,为压缩数据流示例图,原始数据流首先转变为连续符号流,而后将连续符号流根据压缩格式进行压缩转变为压缩数据流。
如图3所示,是本发明第二实施例流程图,提供了一种数据解压缩的方法,包括,
以所述压缩数据流格式为例:首位为一个压缩标志,随后为压缩符号0的标志位信息,压缩符号1与非压缩符号的个数信息,压缩符号1的位置信息,压缩符号1的个数信息,压缩符号1的数值信息,而后依次为非压缩符号的位置信息与数值信息;
步骤S301,接收压缩数据流,在遇到压缩标志时,准备解压缩;
步骤S302,根据第二位压缩符号的标志位确定压缩符号为0,随后根据压缩符号1与非压缩符号的个数信息确定待还原符号的个数,根据非压缩符号1的位置信息,还原非压缩符号1在原始数据流的位置信息,根据非压缩符号1的数值信息,确定非压缩符号1的个数,根据非压缩符号的位置信息与数值信息确定非压缩符号在原始数据流中的位置与数值大小;
步骤S303,在还原的压缩符号1的位置信息、个数信息以及数值信息,各个非压缩符号的位置信息与数值信息相符后,在输出的解压缩的其余位置写入所述确定的非压缩符号0;
步骤S304,根据压缩数据流第三位(即压缩符号1与非压缩符号的个数信息)填充比特的数值信息,删除还原的数据流的最后相应位填充比特的信息;删除填充比特后的还原数据流即为原始数据流,并输出所述原始数据流。
如图4所示,是本发明第三实施例流程图,提供了一种数据解压缩的方法,包括,
以所述压缩数据流格式为例:首位为一个压缩标志,随后为压缩符号1的标志位信息,压缩符号0与非压缩符号的个数信息,压缩符号0的位置信息,压缩符号0的个数信息,压缩符号0的数值信息,随后依次为非压缩符号的位置信息与数值信息。
步骤S401,接收压缩数据流,当遇到压缩标志时,准备解压缩;
步骤S402,根据第二位压缩符号的标志位确定压缩符号为1,随后根据解压缩符号0与非压缩符号的个数信息确定待还原符号的个数,根据非压缩符号0的位置信息,还原非压缩符号0在原始数据流的位置信息,根据非压缩符号0的数值信息,确定非压缩符号0的个数,根据非压缩符号的位置信息与数值信息确定非压缩符号在原始数据流中的位置与数值大小;
步骤S403,在还原的压缩符号0的位置信息、个数信息以及数值信息,各个非压缩符号的位置信息与数值信息相符后,在输出的解压缩的其余位置写入所述确定的非压缩符号1;
步骤S404,最后根据压缩数据流第三位(压缩符号0与非压缩符号的个数信息)填充比特的数值信息,删除还原的数据流的最后相应位填充比特的信息,删除填充比特后的还原数据流即为原始数据流,并输出所述原始数据流。
如图5所示,是本发明第四实施例结构图,提供了一种数据压缩装置,包括,
输入模块,用于输入原始数据流,确定作为组成一个符号所需的N比特的大小,N≥1;
分割模块,用于将原始数据流分割成由每段N比特符号组成的连续符号流;
输出单元,区分压缩符号和非压缩符号,并根据设定的压缩格式进行压缩输出压缩数据流;
比较模块,用于在根据设定的压缩格式进行压缩输出压缩数据流前,将非压缩符号的个数与设定的压缩门限数K进行比较,当非压缩符号的个数大于K时,则输出非压缩标志位,将输入的原始数据流依次输出;当非压缩符号的个数小于K时,则进行压缩。
上述装置中,所述确定作为组成一个符号所需的N比特的大小为原始数据流中连续的0和1比特出现最多的次数。
在将原始数据流分割成由每段N比特符号组成的连续符号流时,若连续符号组成的数据流的大小超过原始数据流时,用0比特进行填充。
所述区分压缩符号和非压缩符号具体为,
将连续的0比特作为压缩符号0,连续的1比特作为压缩符号1,其余的非连续0、1符号作为非压缩符号;
所述设定的压缩格式为,
首位为一个压缩标志,随后为压缩符号0的标志位信息,压缩符号1与非压缩符号的个数信息,压缩符号1的位置信息,压缩符号1的个数信息,压缩符号1的数值信息,而后依次为非压缩符号的位置信息与数值信息;或者
首位为一个压缩标志,随后为压缩符号1的标志位信息,压缩符号0与非压缩符号的个数信息,压缩符号0的位置信息,压缩符号0的个数信息,压缩符号0的数值信息,随后依次为非压缩符号的位置信息与数值信息。
如图6所示,是本发明第五实施例结构图,提供了一种数据解压缩装置,包括,
接收模块,用于接收压缩数据流,在遇到压缩标志时,准备解压缩;
解压缩模块,用于根据所述压缩格式对应的解压缩算法进行还原,输出原始数据流。
所述解压缩算法包括,
根据压缩符号的标志位确定压缩符号为0,随后根据压缩符号1与非压缩符号的个数信息确定待还原符号的个数,根据非压缩符号的位置信息与数值信息确定非压缩符号在原始数据流中的位置与数值大小;
在还原的压缩符号1的位置信息、个数信息以及数值信息,各个非压缩符号的位置信息与数值信息相符后,在输出的解压缩数据流的其余位置写入确定的非压缩符号0;
根据压缩数据流压缩符号1与非压缩符号的个数信息确定填充比特的数值信息,删除还原的原始数据流的相应位填充比特的信息;
或者
根据压缩符号的标志位确定压缩符号为1,随后根据解压缩符号0与非压缩符号的个数信息确定待还原符号的个数,根据非压缩符号的位置信息与数值信息确定非压缩符号在原始数据流中的位置与数值大小;
在还原的压缩符号0的位置信息、个数信息以及数值信息,各个非压缩符号的位置信息与数值信息相符后,在输出的解压缩的其余位置写入所述确定的非压缩符号1;
根据压缩数据流压缩符号0与非压缩符号的个数信息确定填充比特的数值信息,删除还原的数据流的相应位填充比特的信息。
上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。