LZW数据解压缩的方法、装置、设备及存储介质转让专利

申请号 : CN201810871352.2

文献号 : CN109088637A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李龙赵健尹云峰

申请人 : 郑州云海信息技术有限公司

摘要 :

本发明公开了一种LZW数据解压缩的方法、装置、设备以及计算机可读存储介质,包括:读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置;判断所述数据段的数量N是否大于预设并行处理单元的数量M;若否,则选取N个并行处理单元对N个数据段进行并行解压缩处理。本发明所提供的方法、装置、设备以及计算机可读存储介质提高了LZW数据解压缩的处理速率。

权利要求 :

1.一种LZW数据解压缩的方法,其特征在于,包括:读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置;

判断所述数据段的数量N是否大于预设并行处理单元的数量M;

若否,则选取N个并行处理单元对N个数据段进行并行解压缩处理。

2.如权利要求1所述的方法,其特征在于,所述判断所述数据段的数量N是否大于预设并行处理单元的数量M包括:若N大于等于M时,则依据所述各个数据段的偏移位置顺序读取M个数据段,并利用M个并行处理单元分别对所述M个数据段进行并行的解压缩处理;

完成对M个数据段的处理后,判断剩余未解压缩的数据段数量N-M是否小于所述并行处理单元的数量M;

若是,则读取剩余未解压缩的N-M个数据段,选取N-M个并行处理单元分别对所述数据段进行并行解压缩处理。

3.如权利要求1所述的方法,其特征在于,所述若否,则选取N个并行处理单元对M个数据段进行并行解压缩处理包括:若所述数据段的数量N小于预设并行处理单元的数量M时,随机选取N个并行处理单元对所述数据段进行并行解压缩处理。

4.如权利要求3所述的方法,其特征在于,所述读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置包括:读取预先建立的LZW压缩数据的表头数据中的LZW压缩数据中数据段的数量和各个数据段的长度,计算得到所述各个数据段的偏移量,从而得到所述LZW压缩数据中数据段的数量N及各个数据段的偏移位置。

5.如权利要求1所述的方法,其特征在于,所述并行处理单元的数量由用户预先设定。

6.一种LZW数据解压缩的装置,其特征在于,包括:获取单元,用于读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置;

判断单元,用于判断所述数据段的数量N是否大于预设并行处理单元的数量M;

解压缩单元,用于若否,则选取N个并行处理单元对N个数据段进行并行解压缩处理。

7.如权利要求6所述的装置,其特征在于,所述判断单元后还包括:第二解压缩单元,用于若N大于等于M时,则依据所述各个数据段的偏移位置顺序读取M个数据段,并利用M个并行处理单元分别对所述M个数据段进行并行的解压缩处理;

完成对M个数据段的处理后,判断剩余未解压缩的数据段数量N-M是否小于所述并行处理单元的数量M;

若是,则读取剩余未解压缩的N-M个数据段,选取N-M个并行处理单元分别对所述数据段进行并行解压缩处理。

8.如权利要求6所述的装置,其特征在于,所述解压缩单元具体用于:若所述数据段的数量N小于预设并行处理单元的数量M时,随机选取N个并行处理单元对所述数据段进行并行解压缩处理。

9.一种LZW数据解压缩的设备,其特征在于,包括:存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述一种LZW数据解压缩的方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述一种LZW数据解压缩的方法的步骤。

说明书 :

LZW数据解压缩的方法、装置、设备及存储介质

技术领域

[0001] 本发明涉及数据解压缩技术领域,特别是涉及一种LZW数据解压缩的方法、装置、设备以及计算机可读存储介质。

背景技术

[0002] LZW(串表压缩)算法,通过逐比特存储格式存储压缩数据。LZW算法中由上下文决定存储当前数据所需要的比特数。例如,对于数据5,上下文可能决定对其采用3个比特进行存储,此时存储的比特为101;上下文也可能决定对其采用4个比特进行存储,此时存储的比特值为0101。当前存储器件的最小存储单元通常为字节(8个比特),因此在进行数据存储时需要对比特数据进行拼接,构成字节数据进行数据存储。例如,相邻两个数据4和5需要存储的比特数据分别为0100和0101,则将这两个比特数据拼接成一个字节01010100,并进行存储。再例如,相邻两个数据5和6需要存储的比特数据分别为00101和00110,则将两个比特数据拼接为比特数据0011000101,并对比特数据11000101构成的单元进行存储,并保留剩下的两个比特00数据,留作下一次比特数据拼接使用。
[0003] LZW压缩过程中,由于编码表的最大程度为4096,因此当当前编码表的长度超过4096时,需要构造新的编码表对后续数据进行压缩处理,并以CLEAR(根据需要编码的数据确定)标识当前编码表编码的结束。解码过程中,需要根据上下文确定当前数据所采用比特数,并读取相应比特数,得到压缩数据。当读取到的数据为CLEAR标记时,构造新的编码表。
通常将以CLEAR标记分隔的数据成为数据块。对于最后一个数据块,以END标记标识数据的结束。
[0004] 假设以二进制数据101(即十进制数据5)表示CLEAR标记,二进制数据110(即十进制数据6)表示END标记。图1给出现有技术1下的解压缩过程示例:首先读取CLEAR标记(本示例中,占用3个比特),表明开始新的编码表构建过程;接着读取LZW编码后的数据,依次为二进制数据00、01、10、11;接着读取到CLEAR标记,标记本段的结束,清除当前编码表并开始新的编码表构建过程;接下来是一个新的段,分别为二进制数据10、00、11和CLEAR标记;最后为END标记,标记本数据块的结束。实际存储过程中,CLEAR标记的比特数根据实际情况确定;每个LZW编码后的数据占用的比特数随着解码过程动态确定。因此,无法预知由CLEAR标记分隔的数据段大小和位置。采用多个处理单元的并行算法通常以CLEAR标记分隔的数据段为基本处理单元,即每个并行处理单元负责一个数据段的解码。由于无法预知由CLEAR标记分隔的数据段大小和位置,多个并行处理单元无法并行执行。
[0005] 由于解压缩程序无法提前预知不同CLEAR标记分隔的数据块,只能串行处理,无法利用计算部件中的多个计算单元,导致资源浪费和数据处理速率低下的问题。
[0006] 综上所述可以看出,如何使LZW数据解压缩过程并行处理是目前有待解决的问题。

发明内容

[0007] 本发明的目的是提供一种LZW数据解压缩的方法、装置、设备以及计算机可读存储介质,以解决现有技术中数据解压缩过程只能串行进行的问题。
[0008] 为解决上述技术问题,本发明提供一种LZW数据解压缩的方法,包括:读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置;判断所述数据段的数量N是否大于预设并行处理单元的数量M;若否,则选取N个并行处理单元对N个数据段进行并行解压缩处理。
[0009] 优选地,所述判断所述数据段的数量N是否大于预设并行处理单元的数量M包括:
[0010] 若N大于等于M时,则依据所述各个数据段的偏移位置顺序读取M个数据段,并利用M个并行处理单元分别对所述M个数据段进行并行的解压缩处理;
[0011] 完成对M个数据段的处理后,判断剩余未解压缩的数据段数量N-M是否小于所述并行处理单元的数量M;
[0012] 若是,则读取剩余未解压缩的N-M个数据段,选取N-M个并行处理单元分别对所述数据段进行并行解压缩处理。
[0013] 优选地,所述若否,则选取N个并行处理单元对N个数据段进行并行解压缩处理包括:
[0014] 若所述数据段的数量N小于预设并行处理单元的数量M时,随机选取N个并行处理单元对所述数据段进行并行解压缩处理。
[0015] 优选地,所述读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置包括:
[0016] 读取预先建立的LZW压缩数据的表头数据中的LZW压缩数据中数据段的数量和各个数据段的长度,计算得到所述各个数据段的偏移量,从而得到所述LZW压缩数据中数据段的数量N及各个数据段的偏移位置。
[0017] 优选地,所述并行处理单元的数量由用户预先设定。
[0018] 本发明还提供了一种LZW数据解压缩的装置包括:
[0019] 获取单元,用于读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置;
[0020] 判断单元,用于判断所述数据段的数量N是否大于预设并行处理单元的数量M;
[0021] 解压缩单元,用于若否,则选取N个并行处理单元对N个数据段进行并行解压缩处理。
[0022] 优选地,所述判断单元后还包括:第二解压缩单元,用于若是,则依据所述各个数据段的偏移位置顺序读取M个数据段,并利用M个并行处理单元分别对所述M个数据段进行并行的解压缩处理;
[0023] 完成对M个数据段的处理后,判断剩余未解压缩的数据段数量N-M是否小于所述并行处理单元的数量M;
[0024] 若是,则读取剩余未解压缩的N-M个数据段,选取N-M个并行处理单元分别对所述数据段进行并行解压缩处理。
[0025] 优选地,所述解压缩单元具体用于:
[0026] 若所述数据段的数量N小于预设并行处理单元的数量M时,随机选取N个并行处理单元对所述数据段进行并行解压缩处理。
[0027] 本发明还提供了一种LZW数据解压缩的设备,包括:
[0028] 存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种LZW数据解压缩的方法的步骤。
[0029] 本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种LZW数据解压缩的方法的步骤。
[0030] 本发明所提供的LZW数据解压缩的方法,通过在压缩过程中增加LZW压缩数据的表头数据,所述表头数据中记录了所述压缩数据中包含的数据段数量和每个数据段的偏移位置,从而解决了现有技术中无法提前预知LEAR标记分隔的数据段大小和位置,从而只能串行解压缩数据的问题。在本发明中,读取所述表头数据,获取LZW压缩数据中数据段的数量和各个数据段的偏移位置;若所述数据段的数量N小于并行处理单元的数量M时,选取N个并行处理单元对各个数据段进行并行解压缩处理,提高了LZW数据解压缩的处理速率。

附图说明

[0031] 为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032] 图1为现有技术中一种数据段解压缩示例图;
[0033] 图2为本发明所提供的LZW数据解压缩的方法的第一种具体实施例的流程图;
[0034] 图3为本发明所提供的一种数据段解压缩示例图;
[0035] 图4为图2所提供的数据段的表头数据示例图;
[0036] 图5为本发明所提供的一种LZW数据段的存储格式示意图;
[0037] 图6为本发明所提供的LZW数据解压缩的方法的第二种具体实施例的流程图;
[0038] 图7为本发明实施例提供的一种LZW数据解压缩的装置的结构框图。

具体实施方式

[0039] 本发明的核心是提供一种LZW数据解压缩的方法、装置、设备以及计算机可读存储介质,提高了LZW数据解压缩的处理速率。
[0040] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 请参考图2,图2为本发明所提供的LZW数据解压缩的方法的第一种具体实施例的流程图;具体操作步骤如下:
[0042] 步骤S201:读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置;
[0043] 在本实施例中,在数据压缩过程中建立的LZW压缩数据的表头数据保存了数据段的数量和每个数据段的偏移量;所述表头数据也可以保存数据段的数量和每个数据段的长度,并依此计算出每个数据段的偏移量。
[0044] 假设以二进制数据101(即十进制数据5)表示CLEAR标记,二进制数据110(即十进制数据6)表示END标记。如图3所示的数据中,包含两个以CLEAR标记分隔的数据段,第一个数据段的偏移量为3个比特,第二个数据段的偏移量为14个比特;则其对应的表头数据如图4所示。当所述表头数据保存的为每个数据段的长度时,第一个数据段的长度为8比特,第二个数据段的长度也为8比特。由于CLEAR标记的长度为3比特,因此,可以计算出第一个数据段的偏移量为3比特,第二个数据段的偏移量为14(3+8+3=14)比特。
[0045] 如图5所示,由于新增了表头数据记录每个数据段的偏移位置和数据段的个数,因此在实际存储过程中可以省略CLEAR标记和END标记。
[0046] 步骤S202:判断所述数据段的数量N是否大于预设并行处理单元的数量M;
[0047] 假设读取的表头数据表明LZW压缩数据中包含N个数据块,并假设当前并行计算单元的个数为M。其中,所述并行处理单元的数量可以由用户根据实际情况指定,也可以通过系统方法自动获取。
[0048] 步骤S203:若否,则选取N个并行处理单元对N个数据段进行并行解压缩处理。
[0049] 当数据段的数量N小于并行处理单元的数量M时,读取N个数据段,分别交由N个并行处理单元进行并行接压缩处理。在选取N个并行处理单元时,可以顺序获取,也可以随机获取,或者其他的选择方法。
[0050] 在本实施例中,提供了一种并行的LZW数据解压缩的方法,在进行数据解压缩前,读取数据段表头文件,获取压缩数据中记录的数据的个数以及每个数据段的偏移位置,从而可以通过多个并行处理单元同时进行多个LZW数据段的解压缩任务,提升了LZW数据解压缩的处理速率。
[0051] 基于上述实施例,本实施例在所述数据段的数量N大于等于所述并行处理单元的数量M时,依据所述各个数据段的偏移位置顺序读取M个数据段,并利用M个并行处理单元分别对所述M个数据段进行并行的解压缩处理。请参考图6,图6为本发明所提供的LZW数据解压缩的方法的第二种具体实施例的流程图;具体操作步骤如下:
[0052] 步骤S601:读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置;
[0053] 步骤S602:判断所述数据段的数量N是否大于预设并行处理单元的数量M;
[0054] 步骤S603:若N小于M,则则选取N个并行处理单元对N个数据段进行并行解压缩处理;
[0055] 步骤S604:若N大于等于M,则依据所述各个数据段的偏移位置顺序读取M个数据段,并利用M个并行处理单元分别对所述M个数据段进行并行的解压缩处理;
[0056] 步骤S605:完成对M个数据段的处理后,判断剩余未解压缩的数据段数量N-M是否小于所述并行处理单元的数量M;
[0057] 步骤S606:若N-M小于M,则读取剩余未解压缩的N-M个数据段,选取N-M个并行处理单元分别对所述数据段进行并行解压缩处理。
[0058] 在本实施例中,若所述数据段的数量N大于或等于所述并行处理单元的数量M时,依据各个数据段的偏移地址顺序读取所述M个数据段,并将这M个数据块分别交由M个并行处理单元并行处理,同时将N的值减去M;当N的值小于M时:读取N个数据块,并交由所选择的N个并行处理单元并行处理;处理完成后,则结束上述操作。
[0059] 请参考图7,图7为本发明实施例提供的一种LZW数据解压缩的装置的结构框图;具体装置可以包括:
[0060] 获取单元100,用于读取预先建立的LZW压缩数据的表头数据,获取LZW压缩数据中数据段的数量N及各个数据段的偏移位置;
[0061] 判断单元200,用于判断所述数据段的数量N是否大于预设并行处理单元的数量M;
[0062] 解压缩单元300,用于若否,则选取N个并行处理单元对N个数据段进行并行解压缩处理。
[0063] 本实施例的LZW数据解压缩的装置用于实现前述的LZW数据解压缩的方法,因此LZW数据解压缩的装置中的具体实施方式可见前文中的LZW数据解压缩的方法的实施例部分,例如,获取模块100,判断模块200,解压缩模块300,分别用于实现上述LZW数据解压缩的方法中步骤S101,S102和S103,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。
[0064] 本发明具体实施例还提供了一种LZW数据解压缩的设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种LZW数据解压缩的方法的步骤。
[0065] 本发明具体实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种LZW数据解压缩的方法的步骤。
[0066] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0067] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0068] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0069] 以上对本发明所提供的LZW数据解压缩的方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。