一种基于RLE原理的行程压缩方法和装置 【技术领域】
本发明涉及数字信息的无损压缩、解压处理领域,具体来说是一种应用于高速印花系统上基于RLE原理的行程压缩方法及装置。
背景技术
信息数字化后,可以通过磁带机、硬盘等设备进行数据的永久存储,也可以通过遍布全球的网络系统进行数据传输。原始信息经过数字量化后,其样本总数是有限值,这样一段数字信息中,如果存在连续相同的样本值,可以采用行程长度压缩算法(RLE)进行压缩。经过压缩的数字信息占用更小的存储空间和更少的网络带宽,因而被普遍采用。
目前,采用RLE原理,派生出许多具体的行程压缩算法:PCX行程压缩算法、BI RLE8、BI RLE4、紧凑位压缩算法等,这些压缩算法,采用固定的规则,进行数字信息的编码,对于特定的数字序列,有可能出现压缩后的数据量比压缩前的数据量更大的情况。此外,还有霍夫曼编码、算术编码、LZW等非RLE原理算法,这些算法或者复杂度高,或者需要得到所有的样本才能进行压缩,不适用于实时传输系统场合。
随着数码印花机的飞速发展,需要有更大带宽的前端装置来提供高速的数据传输和处理,而采用数据压缩是一种简单可行的办法。
【发明内容】
本发明提供了一种基于RLE原理的行程压缩方法,使用该方法,提供可控的压缩比,并适用于网络实时传输。
一种基于RLE原理的行程压缩方法,采用宏块分割压缩策略和压缩阀值系数,达到稳定、高效、可控的目的;其中,
所述的数据压缩过程为:
a.将原始数据读入缓存中;
b.根据预先设定的宏块大小,对缓存中的原始数据进行分割,得到一个宏块数据;
c.使用BI RLE8算法对宏块数据进行预压缩;
d.将宏块数据经预压缩后的压缩率与压缩阀值系数进行比较,如果预压缩后的压缩率大于压缩阀值系数,就进行该宏块数据压缩,压缩后输出,否则使用原始宏块直接输出;
e.返回步骤b,进行下一个宏块数据的分割压缩。
所述的数据解压过程为:
a.将所述的数据压缩过程所输出的宏块数据接收入缓存中;
b.对缓存中的接收到的宏块数据是否被压缩、压缩数据大小、解压后数据大小分别进行识别,得到宏块基本信息;
c.根据宏块基本信息,进行解压操作,如果宏块没有被压缩,就直接输出,如果宏块有压缩,就使用BI RLE8解压算法进行解压。
d.返回步骤b,进行下一个宏块数据的解压,直至完成所有宏块处理。
本发明还提供了一种基于RLE原理的行程压缩方法运行装置,包括数据压缩端、数据解压端以及用于从数据压缩端向数据解压端传送数据的传输装置,
所述的数据压缩端包括:
原始数据读取接口,用于选择存放于PC机硬盘上的原始文件,并把所选文件的内容存放至原始数据缓存器;
原始数据缓存器,用于存放压缩前的原始数据;
宏块分割器,提供宏块大小设定接口,并使用设定的宏块大小值对原始数据缓存器中的数据进行分割控制;
宏块预压缩器,对原始宏块数据进行预压缩,预压缩指仅进行压缩算法处理,输出压缩后宏块大小,但不进行压缩数据输出;
压缩阀值系数器,提供压缩阀值系数设定接口,并提供压缩阀值系数至宏块压缩器;
宏块压缩器,根据宏块预处理器的输出结果和压缩阀值系数器的输出结果进行压缩判定,宏块压缩器根据压缩判定结果,产生两种输出,第一种输出为,宏块头+不压缩宏块,第二种输出为宏块头+压缩宏块,宏块压缩器采用的RLE算法为BI RLE8算法;
所述的数据解压端包括:
压缩数据接收器,用于从传输装置接收压缩宏块数据,并存放至压缩数据缓存器;
压缩数据缓存器,用于存放待解压的数据;
宏块信息提取器,提取宏块头中的信息,送至宏块解压器;
宏块解压器,根据宏块信息提取器提供的宏块信息进行解压处理,如果宏块信息指示该宏块没有被压缩,就直接输出宏块数据至输出原始数据缓存,如果宏块信息指示该宏块进行了压缩,就采用BI RLE8算法进行解压缩处理,解压缩需要循环进行直至解压完成整个压缩宏块。
输出原始数据缓存器,存放解压后的原始数据,该原始数据即为压缩系统上的原始数据。
本发明在进行数据压缩前,首先将大块数据分割为一个一个宏块,宏块的大小可以通过宏块分割器提供的设定接口进行设定,使用宏块的方式,使得块与块之间没有依赖,部分错误不会导致后续数据一直出错,提高了系统的可靠性;使用宏块的方式,大块数据被分割为大小可控的单元,便于传输系统进行数据传输,提供实时传输、实时处理特性。
本发明在对宏块数据进行压缩时,引入预压缩策略,预压缩指仅进行压缩算法处理,输出压缩后宏块大小,但不进行压缩数据输出,通过预压缩,可以得到预定的宏块压缩大小,通过与压缩阀值系数的比较,可以得到可控的数据压缩率。
结合具体技术领域,本发明还提供了一种数码印花机图像数据的基于RLE原理的行程压缩方法,包括数据压缩和数据解压两个过程,
所述的数据压缩过程为:
a.将数码印花机的待打印图像数据读入缓存中;
b.根据预先设定地宏块大小,对缓存中的待打印图像数据进行分割,得到一个宏块数据;
c.使用BI RLE8算法对宏块数据进行预压缩;
d.将宏块数据经预压缩后的压缩率与压缩阀值系数进行比较,如果预压缩后的压缩率大于压缩阀值系数,就进行该宏块数据进行压缩后输出,否则使用原始宏块直接输出;
e.返回步骤b,进行下一个宏块数据的分割压缩。
所述的数据解压过程为:
a.将所述的数据压缩过程所输出的宏块数据接收入缓存中;
b.对缓存中的接收到的宏块数据是否被压缩、压缩数据大小、解压后数据大小分别进行识别,得到宏块基本信息;
c.根据宏块基本信息,进行解压操作,如果宏块没有被压缩,就直接输出,如果宏块有压缩,就使用BI RLE8解压算法进行解压。
d.返回步骤b,进行下一个宏块数据的解压,直至完成所有宏块处理。
相对于传统的RLE压缩算法,本发明使用宏块的策略,将大块分割为小块,并确保小块之间无耦合,容错性能好,系统更稳定;使用宏块策略,大块数据分割为可预测大小的宏块,便于传输系统进行传输;宏块内采用阀值系数方法,动态调整压缩阀值,处理更灵活。
【附图说明】
图1为本发明行程压缩方法运行装置的结构示意框图;
图2为本发明宏块分割器和压缩阀值系数器的结构示意框图;
图3为本发明数据压缩过程的示意图;
图4为本发明数据解压过程的示意图。
【具体实施方式】
如图1所示,一种基于RLE原理的行程压缩装置,包括:
原始数据读取接口111,用于选择存放于PC机硬盘上的原始文件,并把所选文件的内容存放至原始数据缓存器;
原始数据缓存器113,用于存放压缩前的原始数据;
宏块分割器112,提供宏块大小设定接口,并使用设定的宏块大小值对原始数据缓存器中的数据进行分割控制;
宏块预压缩器114,对原始宏块数据进行预压缩,预压缩指仅进行压缩算法处理,输出压缩后宏块大小,但不进行压缩数据输出;
压缩阀值系数器115,提供压缩阀值系数设定接口,并提供压缩阀值系数至宏块压缩器;
宏块压缩器116,根据宏块预处理器的输出结果和压缩阀值系数器的输出结果进行压缩判定,宏块压缩器根据压缩判定结果,产生两种输出,第一种输出为,宏块头+不压缩宏块,第二种输出为宏块头+压缩宏块,宏块压缩器采用的RLE算法为BI RLE8算法;
传输装置120,将压缩宏块数据从数据压缩端110传送至数据解码端130;
压缩数据接收器131,用于从传输装置接收压缩宏块数据,并存放至压缩数据缓存器;
压缩数据缓存器132,用于存放待解压的数据;
宏块信息提取器133,提取宏块头中的信息,送至宏块解压器;
宏块解压器134,根据宏块信息提取器提供的宏块信息进行解压处理,如果宏块信息指示该宏块没有被压缩,就直接输出宏块数据至输出原始数据缓存,如果宏块信息指示该宏块进行了压缩,就采用BI RLE8算法进行解压缩处理,解压缩需要循环进行直至解压完成整个压缩宏块。
输出原始数据缓存器135,存放解压后的原始数据,该原始数据即为压缩系统上的原始数据。
宏块分割器210在初始化时自行设定默认的宏块大小参数,如图2所示,在运行过程中,外部设备可以通过其设定接口211,设置宏块大小参数,宏块分割器在接收到设定请求后,首先判定请求值是否合法,如果合法,参数被保存在宏块大小参数保存区212,如果不合法,返回设置错误结果给外部设备,并保持当前的宏块大小参数。新设定的宏块大小参数,通过控制接口213输出,在宏块压缩器下一次取宏块数据时生效。
压缩阀值系数器220在初始化时自行设定默认的压缩阀值系数,如图2所示,在运行过程中,外部设备可以通过其设定接口221,设置压缩阀值系数,压缩阀值系数器在接收到设定请求后,首先判定请求值是否合法,如果合法,系数被保存在压缩阀值参数保存区222,如果不合法,返回设置错误结果给外部设备,并保持当前的压缩阀值参数。新设定的压缩阀值参数,通过控制接口223输出,在宏块压缩器下一次比较时生效。
如图3所示,在数码印花机的工作过程中,待打印的图像数据一般是位于计算机中,需要通过网络或数据线传输至数码印花机,本发明行程压缩方法就是在计算机中完成数据压缩,再传输到数码印花机中后进行数据解压。
解压的待打印图像数据再根据需要进行旋转等处理后,发送至数码印花机喷头打印出图像。
进行数据压缩时,从计算机硬盘中将原始的待打印图像数据读入缓存,根据预先设置好宏块的大小,对缓存中的待打印图像数据进行分割,分割得到若干个宏块数据。
对宏块数据执行BI RLE8宏块预压缩,压缩过程中,不产生实际数据的输出,只记录随着压缩算法的进行,当前压缩后将会得到的宏块大小。
预压缩完成后,根据宏块实际大小和宏块压缩后大小算出压缩率结果,将压缩率结果和预先设定的压缩阀值系数进行比较,根据比较结果进行相应处理。
如果预压缩后的压缩率结果大于压缩阀值系数,就进行宏块压缩,输出为宏块头+压缩宏块,压缩使用BI RLE8算法循环进行,直到将整个宏块数据压缩完成,压缩完成后传输到数码印花机中。
如果预压缩后的压缩率结果小于等于压缩阀值系数,就不进行宏块压缩,直接输出为到数码印花机中,输出形式为宏块头+不压缩宏块。
如图4所示,数码印花机端接收到计算机发送的数据后进行数据解压,先提取数据压缩时写入压缩数据中的宏块头,解析宏块头信息,识别出其是否经过压缩。
对于不压缩数据,去除宏块头信息,得到恢复后的待打印图像数据。
对于压缩数据,宏块解码器执行BI RLE8解压算法,解压数据,得到经过解压后的待打印图像数据。
之后再根据需要对待打印图像数据进行旋转等处理后,发送至数码印花机喷头打印出图像。