一种图像压缩与解压缩的方法及装置与流程

文档序号:18407388发布日期:2019-08-10 00:32阅读:121来源:国知局
一种图像压缩与解压缩的方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种图像压缩与解压缩的方法及装置。



背景技术:

随着互联网的急速发展,人们的娱乐、学习、工作等都离不开互联网,因此出现了越来越多的网站或应用等,以满足人们各方面的需求。正因为网站或应用等的增多,在同一领域一般都不止一个互联网产品,而使用该领域的互联网产品的人数一般不会变化特别大,对于这些互联网产品就需要从功能及视觉等方面进行优化以增强用户粘性,从而提高流量。从研究表明,人们一般对图像、视频等的记忆或印象更为深刻,也就使得更多的互联网产品会更加注重自己的页面展示效果,但是由于图像或视频等的显示效果越好,自身的存储体积就越大,所需要的传输耗时就越长,尤其是拥有多帧图像的动态图,因此如何实现在尽可能小的影响图像的显示效果的同时减小图像的存储体积成为一个极其重要的问题。

如今,大多数的图像都是通过减少图像的帧数,去除图像中的不必要特征点,以达到减小图像的存储体积,或者使用有损压缩算法对图像进行压缩,采用有损压缩的方式存储图片,如webp格式,以达到减少图像的存储体积,虽然去除的是不必要的特征点,但还是在一定程度上破坏了原始图像的数据,从而可能会导致图像在展示时出现动画不流畅或者图像锯齿化等问题。



技术实现要素:

基于此,本申请提供了一种图像压缩与解压缩的方法及装置,以期提高对动态图像无损压缩的效果。

本发明实施例第一方面提供了一种图像压缩方法,其特征在于,包括:

获取目标图像中的至少一个图像对,所述目标图像包括多个帧图像,每个图像对均包含所述目标图像中任意相邻的两帧图像;

确定所述至少一个图像对中的两帧图像间的像素差异数据,将所述像素差异数据确定为所述目标图像中的压缩帧图像对应的压缩数据;所述压缩帧图像为所述目标图像中除了首帧图像之外的帧图像;

将所述多帧图像中首帧图像和所述压缩数据合成为所述目标图像对应的压缩图像。

其中,所述确定所述至少一个图像对中的两帧图像间的像素差异数据,将所述像素差异数据确定为所述目标图像中的压缩帧图像对应的压缩数据,包括:

获取所述至少一个图像对中的图像对ti,所述图像对ti包括帧图像si和帧图像si+1;i为正整数,且i小于或等于m-1,所述m为所述目标图像中的帧图像的数量;

确定所述帧图像si和帧图像si+1每个像素点间的像素差异数据,所述像素差异数据为帧图像si+1中不同于所述帧图像si的像素点的色值信息;所述帧图像si+1属于所述压缩帧图像;

将所述像素差异数据确定为所述帧图像si+1对应的压缩数据,直至确定出图像对tm-1中的帧图像sm对应的压缩数据。

其中,确定所述帧图像si和帧图像si+1每个像素点间的像素差异数据,包括:

对比所述帧图像si和帧图像si+1中相同位置信息下的像素点的色值信息;

当存在像素点的色值信息不同时,将所述色值信息不同的像素点确定为差异像素点,根据帧图像si+1中所述差异像素点的色值信息确定所述帧图像si和帧图像si+1间的像素差异数据。其中,帧图像si和帧图像si+1间的差异像素点的数量与帧图像si和帧图像si+1间的像素差异数据的数量相同,可以认为每个差异像素点对应一个像素差异数据。

其中,所述根据帧图像si+1中所述差异像素点的色值信息确定所述帧图像si和帧图像si+1间的像素差异数据,包括:

获取所述帧图像si+1中所述差异像素点的色值信息及位置信息;

将所述位置信息的数据格式转换成所述色值信息的数据格式,将格式转换后的位置信息和所述色值信息确定为所述帧图像si和帧图像si+1间的像素差异数据。

其中,所述将所述像素差异数据确定为所述帧图像si+1对应的压缩数据,包括:

基于像素差异数据间的差异值,对所述帧图像si和帧图像si+1间的多个像素差异数据进行排序;

将排序后的像素差异数据确定为所述帧图像si+1对应的压缩数据。

其中,所述基于像素差异数据间的差异值,对所述帧图像si和帧图像si+1间的多个像素差异数据进行排序,包括:

获取所述图像对ti对应的像素差异数据排序队列;

获取所述像素差异数据排序队列中第j个像素差异数据与未排序的像素差异数据间的差异值,将与所述第j个像素差异数据的差异值小于第一差异阈值的p个像素差异数据,依次沿所述第j个像素差异数据进行排序,将已排序的像素差异数据和更新后未排序的像素差异数据进行拼接,得到更新后的像素差异数据排序队列;p为0或正整数,且p小于所述像素差异数据的数量;

在所述更新后的像素差异数据排序队列中获取第p+j个像素差异数据;

将所述更新后未排序的像素差异数据中与所述第p+j个像素差异数据的差异值小于所述第一差异阈值的k个像素差异数据,依次沿所述第p+j个像素差异数据进行排序,直至所述帧图像si和帧图像si+1间不存在未排序的像素差异数据。

其中,所述将所述像素差异数据确定为所述帧图像si+1对应的压缩数据,包括:

确定第一遍历窗口的长度与第二遍历窗口的长度,所述第一遍历窗口与所述第二遍历窗口间存在分隔符,所述第一遍历窗口与所述第二遍历窗口相邻;

将所述分隔符置于所述像素差异数据的首位字符,确定所述像素差异数据中所述第一遍历窗口与所述第二遍历窗口中相同字符的最大匹配长度,根据所述最大匹配长度的相同字符生成第一个压缩节点;

移动所述分隔符l位字符,生成下一个压缩节点,直至所述第一遍历窗口与所述第二遍历窗口间的所述分隔符位于所述像素差异数据的末尾字符,其中l是基于所述最大匹配长度所确定的;

根据所述压缩节点以及所述像素差异数据中不属于所述压缩节点的字符,生成所述帧图像si+1对应的压缩数据。

本发明实施例第二方面提供了一种图像解压缩方法,其特征在于,包括:

获取压缩图像中的首帧图像和压缩数据,所述首帧图像为目标图像中的首帧图像,所述压缩数据为所述目标图像中的压缩帧图像对应的压缩数据,所述压缩帧图像为所述目标图像中除了首帧图像之外的帧图像;

根据所述压缩数据确定像素差异数据,所述目标图像包括至少一个图像对,所述图像对包括目标图像中任意相邻的两帧图像,所述像素差异数据为所述相邻的两帧图像间的差异;

根据所述像素差异数据及所述首帧图像绘制目标图像。

其中,所述根据所述压缩数据确定像素差异数据,包括:

获取第一遍历窗口的长度与第二遍历窗口的长度,所述第一遍历窗口与所述第二遍历窗口间存在分隔符,所述第一遍历窗口与所述第二遍历窗口相邻;

将所述分隔符处于所述压缩数据的首位字符,滑动所述第一遍历窗口与所述第二遍历窗口,遍历所述压缩数据中的每一个字符;

若所述字符为压缩节点,则将所述压缩节点还原为数据还原节点;

根据所述数据还原节点及所述压缩数据中不属于所述压缩节点的字符,确定所述像素差异数据。

其中,所述根据所述像素差异数据及所述首帧图像绘制目标图像,包括:

绘制所述首帧图像;

根据图像对ti中帧图像si和帧图像si+1间的像素差异数据及所述帧图像si绘制所述帧图像si+1,直至确定帧图像sm;m为所述目标图像包括的多个帧图像的数量,i为正整数,且i小于m;

根据绘制后的所有帧图像,生成所述目标图像。

其中,所述根据图像对ti中帧图像si和帧图像si+1间的像素差异数据及所述帧图像si绘制所述帧图像si+1,包括:

获取所述图像对ti中像素差异数据的位置信息及色值信息,确定所述帧图像si+1中的差异像素点,所述差异像素点为所述像素差异数据中的位置信息对应的像素点;

根据所述像素差异数据的位置信息和色值信息绘制所述帧图像si+1中的所述差异像素点;

根据非差异像素点在所述帧图像si中的位置信息和色值信息,绘制所述帧图像si+1中的所述非差异像素点,得到绘制后的帧图像si+1;所述非差异像素点为所述帧图像si或所述帧图像si+1中不为所述差异像素点的像素点。

本发明实施例第三方面提供了一种图像压缩装置,包括:

获取模块,用于获取目标图像中的至少一个图像对,所述目标图像包括多个帧图像,每个图像对均包含所述目标图像中任意相邻的两帧图像;

确定模块,用于确定所述至少一个图像对中的两帧图像间的像素差异数据,将所述像素差异数据确定为所述目标图像中的压缩帧图像对应的压缩数据;所述压缩帧图像为所述目标图像中除了首帧图像之外的帧图像;

生成模块,用于将所述多帧图像中首帧图像和所述压缩数据合成为所述目标图像对应的压缩图像。

其中,所述确定模块包括:

获取单元,用于获取所述至少一个图像对中的图像对ti,所述图像对ti包括帧图像si和帧图像si+1;i为正整数,且i小于或等于m-1,所述m为所述目标图像中的帧图像的数量;

确定单元,用于确定所述帧图像si和帧图像si+1每个像素点间的像素差异数据,所述像素差异数据为帧图像si+1中不同于所述帧图像si的像素点的色值信息;所述帧图像si+1属于所述压缩帧图像;

所述确定单元,还用于将所述像素差异数据确定为所述帧图像si+1对应的压缩数据,直至确定出图像对tm-1中的帧图像sm对应的压缩数据。

其中,在确定所述帧图像si和帧图像si+1每个像素点间的像素差异数据方面,所述确定单元包括:

第一对比子单元,用于对比所述帧图像si和帧图像si+1中相同位置信息下的像素点的色值信息;

第一确定子单元,用于当存在像素点的色值信息不同时,将所述色值信息不同的像素点确定为差异像素点,根据帧图像si+1中所述差异像素点的色值信息确定所述帧图像si和帧图像si+1间的像素差异数据。

其中,所述第一确定子单元具体用于:

获取所述帧图像si+1中所述差异像素点的色值信息及位置信息;

将所述位置信息的数据格式转换成所述色值信息的数据格式,将格式转换后的位置信息和所述色值信息确定为所述帧图像si和帧图像si+1间的像素差异数据。

其中,在所述将所述像素差异数据确定为所述帧图像si+1对应的压缩数据方面,所述确定单元包括:

第二对比子单元,用于基于像素差异数据间的差异值,对所述帧图像si和帧图像si+1间的多个像素差异数据进行排序;

第二确定子单元,用于将排序后的像素差异数据确定为所述帧图像si+1对应的压缩数据。

其中,所述第二对比子单元具体用于:

获取所述图像对ti对应的像素差异数据排序队列;

获取所述像素差异数据排序队列中第j个像素差异数据与未排序的像素差异数据间的差异值,将与所述第j个像素差异数据的差异值小于第一差异阈值的p个像素差异数据,依次沿所述第j个像素差异数据进行排序,将已排序的像素差异数据和更新后未排序的像素差异数据进行拼接,得到更新后的像素差异数据排序队列;p为0或正整数,且p小于所述像素差异数据的数量;

在所述更新后的像素差异数据排序队列中获取第p+j个像素差异数据;

将所述更新后未排序的像素差异数据中与所述第p+j个像素差异数据的差异值小于所述第一差异阈值的k个像素差异数据,依次沿所述第p+j个像素差异数据进行排序,直至所述帧图像si和帧图像si+1间不存在未排序的像素差异数据。

其中,在所述将所述像素差异数据确定为所述帧图像si+1对应的压缩数据方面,所述确定单元还包括:

获取子单元,用于确定第一遍历窗口的长度与第二遍历窗口的长度,所述第一遍历窗口与所述第二遍历窗口间存在分隔符,所述第一遍历窗口与所述第二遍历窗口相邻;

第三确定子单元,用于将所述分隔符置于所述像素差异数据的首位字符,确定所述像素差异数据中所述第一遍历窗口与所述第二遍历窗口中相同字符的最大匹配长度;

第一生成子单元,用于根据所述最大匹配长度的相同字符生成第一个压缩节点;

所述第一生成子单元,还用于移动所述分隔符l位字符,生成下一个压缩节点,直至所述第一遍历窗口与所述第二遍历窗口间的所述分隔符位于所述像素差异数据的末尾字符,其中l是基于所述最大匹配长度所确定的;

第二生成子单元,用于根据所述压缩节点以及所述像素差异数据中不属于所述压缩节点的字符,生成所述帧图像si+1对应的压缩数据。

本发明实施例第四方面提供了一种图像解压缩装置,包括:

获取模块,用于获取压缩图像中的首帧图像和压缩数据,所述首帧图像为目标图像中的首帧图像,所述压缩数据为所述目标图像中的压缩帧图像对应的压缩数据,所述压缩帧图像为所述目标图像中除了首帧图像之外的帧图像;

确定模块,根据所述压缩数据确定像素差异数据,所述目标图像包括至少一个图像对,所述图像对包括目标图像中任意相邻的两帧图像,所述像素差异数据为所述相邻的两帧图像间的差异;

绘制模块,用于根据所述像素差异数据及所述首帧图像绘制目标图像。

其中,所述确定模块包括:

获取单元,用于获取第一遍历窗口的长度与第二遍历窗口的长度,所述第一遍历窗口与所述第二遍历窗口间存在分隔符,所述第一遍历窗口与所述第二遍历窗口相邻;

遍历单元,用于将所述分隔符处于所述压缩数据的首位字符,滑动所述第一遍历窗口与所述第二遍历窗口,遍历所述压缩数据中的每一个字符;

还原单元,用于若所述字符为压缩节点,则将所述压缩节点还原为数据还原节点;

第一确定单元,用于根据所述数据还原节点及所述压缩数据中不属于所述压缩节点的字符,确定所述像素差异数据。

其中,所述绘制模块,包括:

绘制单元,用于绘制所述首帧图像;

第二确定单元,用于根据图像对ti中帧图像si和帧图像si+1间的像素差异数据及所述帧图像si绘制所述帧图像si+1,直至确定帧图像sm;m为所述目标图像包括的多个帧图像的数量,i为正整数,且i小于m;

生成单元,用于根据绘制后的所有帧图像,生成所述目标图像。

其中,所述第二确定单元包括:

获取子单元,用于获取所述图像对ti中像素差异数据的位置信息及色值信息;

确定子单元,用于确定所述帧图像si+1中的差异像素点,所述差异像素点为所述像素差异数据中的位置信息对应的像素点;

绘制子单元,用于根据所述像素差异数据的位置信息和色值信息绘制所述帧图像si+1中的所述差异像素点;

所述绘制子单元,还用于根据非差异像素点在所述帧图像si中的位置信息和色值信息,绘制所述帧图像si+1中的所述非差异像素点,得到绘制后的帧图像si+1;所述非差异像素点为所述帧图像si或所述帧图像si+1中不为所述差异像素点的像素点。

本发明实施例第五方面提供了一种电子设备,其特征在于,包括处理器、存储器;

所述处理器与所述存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如本发明实施例中第一方面所述的图像压缩方法或执行如本发明实施例中第二方面所述的图像解压缩方法。

本发明实施例第六方面提供了计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如本发明实施例中第一方面所述的图像压缩方法或执行如本发明实施例中第二方面所述的图像解压缩方法。

实施本发明实施例,将具有如下有益效果:

本发明实施例在获取到包含多帧图像的目标图像时,如gif图像,通过分析包含多帧图像的目标图像中的不同帧图像,提取该目标图像中相邻帧图像之间差异像素点间的色值信息和对应的位置信息,根据获取到的每个差异像素点间的色值信息和位置信息确定像素差异数据,并将该像素差异数据通过无损压缩算法存储进行存储,将无损压缩后的像素差异数据确定为目标图像中的压缩帧图像对应的压缩数据,压缩帧图像为目标图像中除了首帧图像之外的帧图像,将目标图像中首帧图像和压缩数据合成为目标图像对应的压缩图像,从而有效实现对目标图像的无损压缩。由于是在前一帧图像的基础上提取像素差异数据,将提取到的像素差异数据进行无损压缩,得到压缩帧图像对应的压缩数据,从而在减少图像大小的同时保证图像本身的展示效果,有效实现图像的无损压缩,进而减少图像在网站或应用中的网络传输消耗。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

其中:

图1是本发明实施例提供的一种图像压缩方法的交互示意图;

图2是本发明实施例提供的一种目标图像的组成示意图;

图3是本发明实施例提供的一种图像压缩的方法流程示意图;

图4是本发明实施例提供的一种图像压缩方法的具体实现流程示意图;

图5是本发明实施例提供的一种像素点数据格式;

图6是本发明实施例提供的一种字符串压缩示意图;

图7a是本发明实施例提供的一种提取图像的部分像素点的色值信息示意图;

图7b是本发明实施例提供的另一种提取图像的部分像素点的色值信息示意图;

图8是本发明实施例提供的一种功能逻辑模块的示意图;

图9是本发明实施例提供的一种图像解压缩流程示意图;

图10是本发明实施例提供的一种图像压缩装置;

图11是本发明实施例提供的一种图像解压缩装置;

图12是本申请实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

其中,本发明实施例中所提到的一些专有名词的解释如下:

1、gif:graphicsinterchangeformat,图像互换格式,是一种基于lzw算法的连续色调的无损压缩格式,其压缩率一般在50%左右,它不属于任何应用程序,可以存多幅彩色图像,是一种包含多帧图像的动态图。

2、lzw,lempel-ziv-welchencoding,串表压缩算法,是通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩。

3、rgba,red-green-blue-alpha的色彩空间,仅仅是rgb模型附加了额外的信息,采用的颜色是rgb,可以属于任何一种rgb颜色空间,使得alpha渲染和alpha合成变得可能,该alpha来源于线性插值方程αa+(1-α)b所用的希腊字母。其中,红色通道red、绿色通道green、蓝色通道blue的取值范围为0~255,不透明度alpha的取值范围可以是0~1(表示不透明度的百分比)或0~255,在本发明实施例中使用0~255的取值范围。

4、像素,为整个图像中不可分割的单位或元素,是以一个单一颜色的小格存在,每一个点阵图像包含了一定量的像素,这些像素决定图像在屏幕上所呈现的大小。

5、nodejs,是一个让javascript运行在服务端的开发平台,对一些特殊用例进行优化,提供替代的应用程序编程接口(applicationprogramminginterface,api)。

6、canvas,一个html5元素,用于绘制图像,内置多种用于图像处理的应用程序编程接口(applicationprogramminginterface,api),如绘制图像,获取图像中每个像素点的数据等。

请参见图1,是本发明实施例提供的一种图像压缩方法的交互示意图。如图1所示,例如存在目标图像201,该目标图像201为包含多帧图像的动态图或静态图,具体该目标图像201为gif动态图,如图2所示,是本发明实施例提供的一种目标图像的组成示意图,该目标图像201包括首帧图像2011、第二帧图像2012、第三帧图像2013及第四帧图像2014,是这四帧图像依次进行动态播放的动态图。当服务器10接收到通过显示界面20发送的包含目标图像201,将该目标图像201进行逐帧展开为独立的图像,得到每一帧图像,并获取目标图像201中的至少一个图像对,每个图像对均包含目标图像201中任意相邻的两帧图像。其中,获取到图像对t1,包括首帧图像2011和第二帧图像2012,图像对t2,包括第二帧图像2012和第三帧图像2013,图像对t3,包括第三帧图像2013和第四帧图像2014。对比至少一个图像对中的两帧图像的每一个像素点的色值信息,具体是在相同位置信息下对比两帧图像的色值信息。如对于图像对t1,在位置信息为(1,1)时,对比首帧图像2011在位置信息为(1,1)处的色值信息和第二帧图像2012在位置信息为(1,1)处的色值信息,再在位置信息为(1,2)时,对比首帧图像2011在位置信息为(1,2)处的色值信息和第二帧图像2012在位置信息为(1,2)处的色值信息,继续对图像对t1进行遍历对比,直至将图像对t1中每个像素点对比结束。其中,当首帧图像2011和第二帧图像2012间存在像素点的色值信息不同时,将该色值信息不同的像素点确定为差异像素点,并获取第二帧图像2012中在该差异像素点的色值信息及位置信息,从而确定图像对t1的像素差异数据。将像素差异数据确定为第二帧图像2012对应的压缩数据。同理确定第三帧图像2013及第四帧图像2014对应的压缩数据,将首帧图像2011、第二帧图像2012的压缩数据、第三帧图像2013的压缩数据及第四帧图像2014的压缩数据合成为目标图像201对应的压缩图像。

其中,图像压缩的具体流程可以参见以下图3至8所对应的实施例。

进一步地,请参见图3,本发明实施例提供的一种图像压缩的方法流程示意图。如图3所示,上述方法包括如下步骤:

步骤s301,获取目标图像中的至少一个图像对。

具体的,目标图像为包含多帧图像的图像,目标图像的第一帧图像为首帧图像,除第一帧图像以外的帧图像为压缩帧图像。获取目标图像中的至少一个图像对,该图像对包含目标图像中任意相邻的两帧图像,可以认为目标图像中的图像对的数量比所包含的帧图像的数量少一。

举例来说,假定目标图像为包含四帧图像的gif动态图,该四帧图像分别是首帧图像、第二帧图像、第三帧图像及第四帧图像,当服务器接收到该目标图像后,对该目标图像进行逐帧展开得到上述四帧图像独立的图像,并根据相邻的两帧图像得到目标图像中的至少一个图像对,包括由首帧图像和第二帧图像组成的图像对、第二帧图像和第三帧图像组成的图像对及第三帧图像和第四帧图像组成的图像对。

步骤s302,确定至少一个图像对中的两帧图像间的像素差异数据,对像素差异数据进行排序,将排序后的像素差异数据确定为目标图像中的压缩帧图像对应的压缩数据。

具体的,依次对目标图像中每个图像对进行对比,确定每个图像对中的两帧图像间的像素差异数据,对确定得到的像素差异数据进行排序,将排序后的像素差异数据确定为目标图像中的压缩帧图像对应的压缩数据,具体是将像素差异数据确定为目标图像中对应图像对中第二个帧图像对应的压缩数据。其中,图像对中的第一个帧图像和第二个帧图像是以帧图像在目标图像中进行播放的相对顺序来说。具体是根据像素点的位置信息对目标图像中至少一个图像对中的两帧图像所包含的各个像素点依次遍历对比,当存在像素点的色值信息不同时,将色值信息不同的像素点确定为差异像素点,并提取该差异像素点的色值信息和位置信息,作为两帧图像间的一个像素差异数据,直至将两帧图像中所包含的所有像素点都对比完成,获取到两帧图像间的所有差异像素点及每个差异像素点对应的像素差异数据,将获取到的两帧图像间的所有像素差异数据确定为对应图像对的像素差异数据。通过对图像对的像素差异数据进行排序压缩,将排序压缩后的像素差异数据确定为该图像对中的第二个帧图像对应的压缩数据。同理得到该目标图像对中所获取到的至少一个图像对中每一个图像对的像素差异数据,并确定除首帧图像以外的每一个压缩帧图像对应的压缩数据。

举例来说,对于包含四帧图像的目标图像中所提取的三个图像对,以该目标图像中的第一个图像对为例,第一个图像对包括首帧图像和第二帧图像,对比首帧图像和第二帧图像在位置信息为(1,1)处的色值信息,若色值信息在该位置信息处不同,则将该位置信息(1,1)处的像素点确定为差异像素点,并将该位置信息(1,1)及第二帧图像在(1,1)处的色值信息确定为该差异像素点的像素差异数据;若色值信息在该位置信息处相同或确定了该像素点的像素差异数据,则对比首帧图像和第二帧图像在下一个位置信息(1,2)处的色值信息,确定该位置信息(1,2)处像素点的像素差异数据或确定该(1,2)处的色值信息相同。同理,对首帧图像和第二帧图像间的像素点进行对比,直至确定首帧图像和第二帧图像所包含的所有像素点中差异像素点的像素差异数据或色值信息相同的像素点。将第二帧图像中所包含的与首帧图像间的差异像素点对应的像素差异数据进行排序,使得颜色相同或颜色相近的像素差异数据放于相邻位置,将排序后的像素差异数据确定为第二帧图像对应的压缩数据。其中,是通过对比各个差异像素点间的差异值,该差异值为差异像素点的色值信息所包含的数据之和的差值,或者为色值信息所包含的各个数据分别对应的差值,当差异值小于第一差异阈值时,认为该差异值对应的两个差异像素点的颜色相同或相近。

根据第一个图像对的像素差异数据的获取方式,获取第二个图像对及第三个图像对的像素差异数据,并确定根据第二个图像对的像素差异数据确定第三帧图像对应的压缩数据,根据第三个图像对的像素差异数据确定第四帧图像对应的压缩数据。

其中,可以通过nodejs使用相应的图像解析库分析并得到目标图像中每一帧图像的所有像素点的色值信息,该色值信息可以是像素点的rgba值,该图像解析库为可以实现图像处理,从而提取图像中每一个像素点的数据的图像处理库,如jimp等。具体通过图像解析库分析至少一个图像对中的两帧图像,获取到两帧图像中所包含的所有像素点的色值信息,并在获取到一个位置信息下在两帧图像中对应像素点的色值信息时,对两帧图像该像素点的色值信息进行对比,若色值信息相同,则对比下一个位置信息下在两帧图像中对应像素点的色值信息,若色值信息不同,则存储两帧图像中的第二个帧图像在该位置信息下的像素点的色值信息。对两帧图像中的每个像素点执行对比过程,直至确定两帧图像间的像素差异数据。对该像素差异数据进行排序,若色值信息为rgba值时,一种可能的方式中,计算每个像素差异数据所包含的色值信息的rgba四个值之和,对比像素差异数据间的四个值之和的差异值,若差异值小于第一差异阈值,则将小于第一差异阈值的差异值对应的两个像素差异数据置于相邻位置;另一种可能的方式中,分别对比像素差异数据间的r值、g值、b值及a值,若四个值的差值均小于第一差异阈值,则将四个值的差值均小于第一差异阈值的差异值对应的两个像素差异数据置于相邻位置。其中,相邻位置表示以对比像素差异数据为起始位置,依次沿该起始位置进行排列,使得每个差异值小于第一阈值的像素差异数据与前一个确定的差异值小于第一阈值的像素差异数据相邻。

步骤s303,将目标图像中首帧图像和压缩数据合成为目标图像对应的压缩图像。

具体的,将目标图像中首帧图像及目标图像中的压缩帧图像对应的压缩数据合成为目标图像对应的压缩图像。其中,压缩帧图像为目标图像中除了首帧图像之外的帧图像。由于在目标图像中的每个压缩帧图像对应的压缩数据,是根据该压缩帧图像与前一帧图像间的像素差异数据确定的,使得通过压缩帧图像的前一帧图像及两者间的像素差异数据,可以确定该压缩帧图像中每个像素点的色值信息,从而可以根据首帧图像和压缩数据合成目标图像对应的压缩图像,实现对目标图像的无损压缩。

举例来说,在上述步骤s302所举例子中获取到的三个图像对的像素差异数据,及根据三个图像对的像素差异数据确定的三个帧图像对应的压缩数据,将首帧图像、第二帧图像对应的压缩数据、第三帧图像对应的压缩数据及第四帧图像对应的压缩数据合成为目标图像对应的压缩图像。

本发明实施例提供了一种图像压缩方法,通过获取目标图像中的至少一个图像对,确定至少一个图像对中的两帧图像间的像素差异数据,将像素差异数据确定为目标图像中的压缩帧图像对应的压缩数据,将目标图像中首帧图像和压缩数据合成为目标图像对应的压缩图像,实现了对目标图像的压缩,由于在压缩过程中没有将任何数据进行丢弃,实现了对目标图像的无损压缩。本发明实施例通过提取相邻两帧图像间的不同点,作为相邻两帧图像中第二个帧图像的压缩数据,由于包含多帧图像的动态图在相邻两帧图像上的过渡性,因此差异较小,使得在减少目标图像的存储大小和传输耗时的情况下,不影响目标图像的显示效果。

其中,本发明实施例提供了一种图像压缩方法的具体实现流程示意图。如图4所示,该方法包括如下步骤:

步骤s401,获取目标图像中的至少一个图像对ti,该图像对ti包括帧图像si和帧图像si+1。

具体的,目标图像中包括m个帧图像,此时获取到该目标图像中的图像对的数量为m-1,即m为目标图像中的帧图像的数量,为正整数。获取目标图像中的至少一个图像对ti,该图像对ti包括帧图像si和帧图像si+1,i为正整数,且i小于或等于m-1,帧图像si+1属于压缩帧图像。换句话说,图像对t1包括帧图像s1和帧图像s2,图像对t2包括帧图像s2和帧图像s3,图像对t3包括帧图像s3和帧图像s4,…。

如图2所示的目标图像201,该目标图像201包括首帧图像2011、第二帧图像2012、第三帧图像2013及第四帧图像2014,获取目标图像201中的第一个图像对t1,该第一个图像对t1包括首帧图像2011和第二帧图像2012,第二个图像对包括第二帧图像和第三个帧图像,第三个

步骤s402,对比帧图像si和帧图像si+1中相同位置信息下的像素点的色值信息。

具体的,对比图像对ti中帧图像si和帧图像si+1中相同位置信息下的像素点的色值信息,对于帧图像si和帧图像si+1中相同位置信息下的色值信息不同时的像素点,执行步骤s403,对于帧图像si和帧图像si+1中相同位置信息下的色值信息相同时的像素点,不予处理,并对比该图像对的下一个位置信息下的像素点的色值信息。

其中,像素点的色值信息可以为该像素点的rgba值,在相同位置信息下对比帧图像si和帧图像si+1对应位置下的像素点的rgba值,当某一位置信息下的像素点对应的red值、green值、blue值或alpha值有至少一个值不同,则认为该位置信息下的像素点的色值信息不同。具体可以通过nodejs中相关的图像解析库提取帧图像si和帧图像si+1中相同位置信息下的像素点的色值信息。其中,提取的每个帧图像的所有像素点可以通过二维数组进行记录,该二维数组的行号和列号用于表示帧图像中每个像素点的位置信息,该位置信息是针对帧图像中的左上角首个像素点为坐标原点而生成的。例如,在位置信息(1,1)时,对比帧图像si中的第一行第一个像素点和帧图像si+1中的第一行第一个像素点的色值信息。通过分析获取到的帧图像si的数据包括xi值、yi值、ri值、gi值、bi值及ai值,其中xi值、yi值组成帧图像si中该像素点的位置信息,ri值、gi值、bi值及ai值组成该像素点的色值信息,获取到的帧图像si+1中的数据包括xi+1值、yi+1值、ri+1值、gi+1值、bi+1值及ai+1值,其中xi+1值、yi+1值组成帧图像si+1中该像素点的位置信息,ri+1值、gi+1值、bi+1值及ai+1值组成该像素点的色值信息,分别对比ri值和ri+1值、gi值和gi+1值、bi值和bi+1值及ai值和ai+1值,若色值信息中存在至少一个值不同,则认为(xi,yi)或(xi+1,yi+1)处的像素点为差异像素点,其中xi=xi+1,yi=yi+1。

步骤s403,将色值信息不同的像素点确定为差异像素点。

具体的,将色值信息不同的像素点确定为差异像素点,根据帧图像si+1中差异像素点的色值信息确定帧图像si和帧图像si+1间的像素差异数据。具体获取帧图像si+1中该差异像素点的色值信息及位置信息,将位置信息的数据格式转换成色值信息的数据格式,将格式转换后的位置信息和色值信息确定为帧图像si和帧图像si+1间在该差异像素点处的像素差异数据。若帧图像si和帧图像si+1间的所有像素点都已经进行了对比,则执行步骤s404,若帧图像si和帧图像si+1间间还存在未对比的像素点,则返回执行步骤s402,对比帧图像si和帧图像si+1间下一个相同位置信息下的像素点的色值信息。

具体的,获取帧图像si+1中在该位置信息下的差异像素点的色值信息,具体获取该位置信息下的差异像素点的rgba值,每个值的范围为0~255,将该位置信息的数据格式转换成色值信息的数据格式,将格式转换后的位置信息和色值信息确定为图像对在该位置信息下的像素差异数据,从而使得可以根据位置信息确定差异像素点在图像中的位置,并根据色值信息确定该差异像素点的色值信息,,以实现对图像对中第二个帧图像的还原。其中,将目标图像中转换成压缩图像,对于图像每个像素点的数据值最大为255,而对于位置信息中的数据值不一定在0~255内,因此需要对位置信息的数据格式进行转换。

举例来说,假定要通过png格式存储压缩数据,对于png格式的图像中每个像素点的数据为该像素点的rgba值,因此将位置信息转换成可以写入png格式图像的数据格式,具体如图5所示像素点数据格式,该像素点数据格式包括高位x501、低位x502、高位y503、低位y504、r值505、g值506、b值507及a值508,其中高位x501与低位x502组成该差异像素点的位置信息中的x坐标,高位y503和低位504组成该差异像素点的位置信息中的y坐标,高位x501是低位x502在遇到256时进一得到的,高位y503是低位y504在遇到256时进一得到的。其中,高位x501表示的值为255*高位x501的值,低位x502表示的值为1*低位x502的值,即该差异像素点的位置信息中的x坐标为(255*高位x的值+1*低位x的值);高位y503表示的值为255*高位y503的值,低位y504表示的值为1*低位y504的值,即该差异像素点的位置信息中的y坐标为(255*高位y的值+1*低位y的值)。其中,该数据格式的转换过程也可以在步骤s404中确定图像对的像素差异数据之后再执行。

步骤s404,确定图像对ti的像素差异数据。

具体的,在将帧图像si和帧图像si+1间的所有像素点都已经进行了对比,提取了图像对ti中所包含的所有差异像素点及该差异像素点的位置信息和色值信息,上述所有差异像素点的位置信息和色值信息组成该图像对ti的像素差异数据。其中,图像对ti的像素差异数据包括多个差异像素点的像素差异数据,每个像素差异数据包括八个数值,每个数值在0~255范围内,前四个数值表示对应的差异像素点的位置信息,后四个数值表示对应的差异像素点的色值信息。

步骤s405,基于像素差异数据间的差异值,对帧图像si和帧图像si+1间的多个像素差异数据进行排序。

具体的,基于像素差异数据间的差异值,对所述帧图像si和帧图像si+1间的多个像素差异数据进行排序。该排序过程具体如下:

获取图像对ti对应的像素差异数据排序队列;

获取像素差异数据排序队列中第j个像素差异数据与未排序的像素差异数据间的差异值,将与第j个像素差异数据的差异值小于第一差异阈值的p个像素差异数据,依次沿第j个像素差异数据进行排序,将已排序的像素差异数据和更新后未排序的像素差异数据进行拼接,得到更新后的像素差异数据排序队列;p为0或正整数,且p小于该图像对ti中所包含的差异像素点的数量;

在更新后的像素差异数据排序队列中获取第p+j个像素差异数据;

将更新后未排序的像素差异数据中与第p+j个像素差异数据的差异值小于第一差异阈值的k个像素差异数据,依次沿第p+j个像素差异数据进行排序,直至帧图像si和帧图像si+1间不存在未排序的像素差异数据。

具体的,基于像素差异数据间的差异值,对所述帧图像si和帧图像si+1间的多个像素差异数据进行排序,使得颜色相同或相近的rgba值对应的像素差异数据放在相邻的位置。对于两个像素差异数据间的差异值为该两个像素差异数据的色值信息的差异值,具体是两个像素差异数据中的色值信息之和的差值或者两个像素差异数据中的色值信息所包含的每个颜色通道的差值。例如,存在两个像素差异数据,一个像素差异数据的色值信息记作r1值、g1值、b1值及a1值,另一个像素差异数据的色值信息记作r2值、g2值、b2值及a2值,计算两个像素差异数据的差异值,一种是通过获取(r1值+g1值+b1值+a1值)与(r2值+g2值+b2值+a2值)间的差值作为两个像素差异数据的差异值,当该差值小于第一差异阈值时,表示这两个像素差异数据为颜色相同或相近的两个像素点的像素差异数据;一种是通过分别计算r1值和r2值间的差值、g1值和g2值间的差值、b1值和b2值间的差值及a1值和a2值间的差值,这四个差值均小于第一差异阈值时,表示这两个像素差异数据为颜色相同或相近的两个像素点的像素差异数据。

其中,对像素差异数据排序队列中的像素差异数据进行排序时,该排序的算法可以参见对“1、3、9、4、5”的排序方法,假定此处的第一差异阈值为3,该排序方法具体如下:

获取“1”与“3”间的差异值,该差异值为2,小于第一差异阈值3,将“3”放于“1”之后;获取“1”与“9”之间的差异值,该差异值为8,大于第一差异阈值3;获取“1”与“4”之间的差异值,该差异值为3,不小于第一差异阈值;获取“1”与“5”之间的差异值,该差异值为4,大于第一差异阈值,从而得到与“1”间的差异值小于第一差异阈值的1个数值,并得到“1、3、9、4、5”;

获取“1、3、9、4、5”中第(1+1)个数值“3”,获取“3”与“9”间的差异值,该差异值为6,大于第一差异阈值;获取“3”与“4”间的差异值,该差异值为1,小于第一差异阈值,将“4”放于“3”之后;获取“3”与“5”间的差异值,该差异值为2,小于第一差异阈值,将“5”放于“4”之后,从而得到与“3”间的差异值小于第一差异阈值的2个数值,并得到“1、3、4、5、9”;

获取“1、3、4、5、9”中第(2+2)个数值“5”,获取“5”与“9”间的差异值,该差异值为4,大于第一差异阈值,在更新后未排序的数值中未找到与“5”间的差异值小于第一差异阈值的数值时,获取“1、3、4、5、9”中“5”的下一个数值“9”,“9”为最后一个数值,则结束此次的排序过程,得到最终排序后的“1、3、4、5、9”。

其中,对于帧图像si和帧图像si+1间的多个像素差异数据进行排序的方法可以是如上述“1、3、9、4、5”的排序过程,也可以是其他的排序算法,在本发明实施例中上述排序过程中的差值为像素差异数据间的差异值。

步骤s406,将排序后的像素差异数据确定为帧图像si+1对应的压缩数据。

具体的,排序后的像素差异数据为帧图像si+1中色值信息不同于帧图像si相同位置信息下的色值信息的像素点数据,将排序后的像素差异数据确定为帧图像si+1对应的压缩数据。当i+1小于目标图像中的帧图像的数量时,表示该目标图像中仍存在未进行压缩的帧图像,则返回执行步骤s401,对下一个图像对进行处理;当i+1等于目标图像中的帧图像的数量时,表示该目标图像中所包含的所有帧图像都压缩完成,则执行步骤s407。

具体还可以对排序后的像素差异数据进行无损压缩,如基于“滑动窗”的无损压缩,在排序后的像素差异数据中,色值信息相同或相近的像素差异数据位于相邻位置,使得通过无损压缩减少像素差异数据的存储大小。该无损压缩方法参见图6所示,字符串压缩示意图,具体如下:

确定第一遍历窗口的长度与第二遍历窗口的长度,第一遍历窗口与第二遍历窗口间存在分隔符,第一遍历窗口与第二遍历窗口相邻;将分隔符置于像素差异数据的首位字符,确定像素差异数据中第一遍历窗口与第二遍历窗口中相同字符的最大匹配长度,根据最大匹配长度的相同字符生成第一个压缩节点;移动分隔符l位字符,生成下一个压缩节点,直至第一遍历窗口与第二遍历窗口间的分隔符位于像素差异数据的末尾字符,其中l是基于最大匹配长度所确定的;根据压缩节点以及像素差异数据中不属于压缩节点的字符,生成帧图像si+1对应的压缩数据。

举例来说,通过(q,l,c)表示第二遍历窗口中字符串的最长匹配长度的匹配结果,其中,q表示最长匹配时,字符开始时的位置,相对于分隔符的位置,l表示最长匹配长度,c表示第二遍历窗口中最长匹配长度对应的匹配字符结束时的下一字符,移动分隔符时移动的位数为最新记录的(q,l,c)中的l加一。其中,第一遍历窗口用于存储历史字符,第二遍历窗口用于遍历待压缩的字符。以字符串(a,a,c,a,a,c,a,b,c,a,b,a,a)为例,第一遍历窗口的长度为6,第二遍历窗口的长度为4,将分隔符置于该字符串的首位字符,确定第二遍历窗口中不存在与第一遍历窗口中相同字符,记为(,0,a);移动分隔符1位字符,对比第一遍历窗口(a)和第二遍历窗口(a,c,a,a),存在一个相同字符,最大匹配长度为1,记为(1,1,c);移动分隔符2位,对比第一遍历窗口(a,a,c)和第二遍历窗口(a,a,c,a),存在四个相同字符,最大匹配长度为4,记为(3,4,b);移动分隔符5位,对比第一遍历窗口(c,a,a,c,a,b)和第二遍历窗口(c,a,b,a),存在三个相同字符,最大匹配长度为3,记为(3,3,a);移动分隔符4位,对比第一遍历窗口(a,b,c,a,b,a)和第二遍历窗口(a),存在一个相同字符,最大匹配长度为1,记为(1,1,);移动分隔符2位,此时分隔符位于字符串的末尾字符,完成对字符串的压缩。

具体对于排序后的像素差异数据进行压缩的过程如上述字符串(a,a,c,a,a,c,a,b,c,a,b,a,a)的压缩过程。可选的,该压缩过程也可以在步骤s407中生成目标图像对应的压缩图像时,使用压缩图像对应图像格式本身的无损压缩算法进行实现,在此不做限定。

步骤s407,生成目标图像对应的压缩图像。

具体的,将目标图像中的首帧图像和目标图像中压缩帧图像的压缩数据合成为目标图像对应的压缩图像,其中,压缩帧图像为目标图像中除首帧图像之外的帧图像。

在步骤s406中的可选方式,在生成目标图像对应的压缩图像时,使用压缩图像对应的图像格式本身的无损压缩算法进行实现。例如,将目标图像中每一帧图像的排序后的像素差异数据写入图像中,写入的图像的格式可以是png格式,在将帧图像的像素差异数据写入png格式时,通过该png图像内置的lz77无损压缩算法实现对像素差异数据的压缩。

在本发明实时例中,通过对目标图像中至少一个图像对所包含的两帧图像间的像素差异数据,进行排序并无损压缩,有效实现对目标图像的无损压缩。一方面,是提取目标图像中的压缩帧图像与该压缩帧图像的前一帧图像间的像素差异数据,减少需要存储的图像数据;一方面,对提取到的相邻帧图像间的像素差异数据进行排序,使得色值信息间差异值小于第一差异阈值的像素差异数据放在相邻位置,使得相邻像素差异数据间的相同字符的最大匹配长度变大,从而通过“滑动窗”对排序后的像素差异数据进行无损压缩时,可以提高像素差异数据的压缩率。通过上述两方面,有效实现了对目标图像的无损压缩,在减少传输耗时和缩减存储大小的同时,不影响目标图像的显示效果。

本发明实施例提供了一种帧图像的色值信息提取示意图,如图7a至图7b所示,为对图2中所示目标图像所包含的首帧图像2011和第二帧图像2012中提取的部分像素点的色值信息,假定目标图像中所包含的所有帧图像均为600*500像素大小的图像。如图7a所示,对于首帧图像2011中虚线部分中的3*5个像素大小的图像块,每个位置信息处的像素点包含四个值,分别为该像素点的r值、g值、b值及a值;如图7b所示,对于第二帧图像2012中虚线部分中相同位置信息下的3*5个像素大小的图像块,每个位置信息处的像素点包含四个值,分别为该像素点的r值、g值、b值及a值。获取该首帧图像2011中的部分像素大小的图像块在位置信息为(376,121)处的色值信息为(0,0,0,255),获取第二帧图像2012中的部分像素大小的图像块在位置信息为(376,121)处的色值信息为(0,0,0,255),对比该位置信息下首帧图像2011和第二帧图像2012的色值信息,在位置信息为(376,121)处的色值信息相同;在位置信息为(376,122),对比首帧图像2011的色值信息(1,0,5,230)与第二帧图像2012的色值信息(1,0,5,230),该色值信息相同;在位置信息为(376,123),对比首帧图像2011的色值信息(253,240,243,250)与第二帧图像2012的色值信息(0,0,0,250),该色值信息不同,将该像素点确定为差异像素点,并确定该差异像素点的色值信息(0,0,0,250),结合位置信息(376,123)确定该差异像素点的像素差异数据(376,123,0,0,0,250),并将该位置信息的数据格式转换成色值信息的数据格式,得到转换后的像素差异数据(1,121,0,123,0,0,0,250);在位置信息为(376,124),对比首帧图像2011的色值信息(0,0,0,255)与第二帧图像2012的色值信息(0,0,0,255),该色值信息相同;同理,对比在首帧图像2011和第二帧图像2012其他位置信息下的像素点的色值信息,得到首帧图像2011和第二帧图像2012间的像素差异数据,包括......(1,121,0,123,0,0,0,250)、(1,121,0,123,0,0,0,255)、......、(1,122,0,122,0,0,0,250)、(1,122,0,123,0,0,0,255)、......、(1,123,0,122,234,240,243,255)、(1,123,0,122,230,286,234,248)、......。对首帧图像2011和第二帧图像2012间的像素差异数据进行排序压缩,该排序压缩过程参见图4中所述过程,从而得到第二帧图像2012对应的压缩数据。以相同方式,得到第三帧图像2013及第四帧图像2014的压缩数据。根据首帧图像2011及第二帧图像2012的压缩数据、第三帧图像2013的压缩数据、第四帧图像2014的压缩数据合成目标图像201对应的压缩图像。

进一步,请一并参见图8,图8从功能逻辑的角度更完整地展示了图3及图4所示方法可能涉及到的其他方面,以方便读者进一步理解本申请记载的技术方案,图8为本发明实施例提供的一种功能逻辑模块的示意图。如图8所示,所述功能逻辑模块中可以包括对比分析模块、获取像素差异数据模块、按色值信息进行排序模块及无损压缩模块。这些模块可以分别对获取到的目标图像执行该模块所具备的功能。

该图8所示的各个模块是通过对比分析相邻两帧图像中像素点的色值信息,获取两帧图像间的像素差异数据,将该像素差异数据按色值信息进行排序,并对排序后的像素差异数据进行无损压缩,得到压缩图像。具体的,这些模块分别对应如下过程:801、对比分析;802、获取像素差异数据;803、按色值信息进行排序;804,无损压缩。具体说明如下:

801、对比分析。

具体的,对首帧图像和第二帧图像中所包含的每个像素点的色值信息进行对比分析,将色值信息不同的像素点确定为差异像素点,色值信息相同时,对比下一个像素点的色值信息,具体过程参见图3中步骤s302或图4中步骤s402至步骤s403所示,在此不再赘述。

802、获取像素差异数据。

具体的,根据首帧图像和第二帧图像中确定的差异像素点的位置信息和色值信息确定首帧图像和第二帧图像间的像素差异数据,具体过程参见图3中步骤s302或图4中步骤s404所示,在此不再赘述。

803、按色值信息进行排序。

具体的,根据色值信息对首帧图像和第二帧图像间的像素差异数据进行排序,使得色值信息间差异值小于第一差异阈值的差异像素点放于相邻位置,该排序过程具体参见图4中步骤s405所示排序过程,在此不再赘述。

804,无损压缩。

具体的,对排序后的像素差异数据进行无损压缩,减少图像的存储大小,得到压缩图像1,具体的无损压缩过程参见图4中步骤s406所示压缩过程,在此不再赘述。

再根据第一帧图像和第二帧图像得到第二帧图像对应的压缩图像2,直至得到目标图像中每一个帧图像对应的压缩数据。

请参见图9,图9是本发明实施例提供的一种图像解压缩流程示意图。该方法包括如下步骤:

步骤s901,获取压缩图像中的首帧图像和压缩数据。

具体的,获取压缩图像中的首帧图像和压缩数据,首帧图像为目标图像中的首帧图像,压缩数据为目标图像中的压缩帧图像对应的压缩数据,压缩帧图像为目标图像中除了首帧图像之外的帧图像,压缩图像是目标图像经过无损压缩得到的。

具体的,可以通过canvas中的内置api获取目标图像中的压缩帧图像对应的压缩数据,如getimagedata,获取每一个像素点的数据。其中,若该压缩图像为png格式的图像,通过canvas对压缩图像进行绘制,并获取绘制后的图像中每个像素点的数据,每个数据包括四个数值,从而获取到每个压缩帧图像的压缩数据。

步骤s902,根据压缩数据确定像素差异数据。

具体的,根据压缩数据确定像素差异数据,目标图像包括至少一个图像对,图像对包括目标图像中任意相邻的两帧图像,像素差异数据为相邻的两帧图像间的差异。具体的,获取第一遍历窗口的长度与第二遍历窗口的长度,第一遍历窗口与第二遍历窗口间存在分隔符,第一遍历窗口与第二遍历窗口相邻;将分隔符处于压缩数据的首位字符,滑动第一遍历窗口与第二遍历窗口,遍历压缩数据中的每一个字符;若字符为压缩节点,则将压缩节点还原为数据还原节点;根据数据还原节点压缩数据中不属于压缩节点的字符,确定像素差异数据。

具体该过程是图4中步骤s406对像素差异数据进行压缩的过程的解压缩过程。

步骤s903,根据像素差异数据及首帧图像绘制目标图像。

具体的,绘制所述首帧图像;根据图像对ti中帧图像si和帧图像si+1间的像素差异数据及帧图像si绘制帧图像si+1,直至确定帧图像sm;m为所述目标图像包括的多个帧图像的数量,i为正整数,且i小于m;根据绘制后的所有帧图像,生成所述目标图像。

其中,该根据图像对ti中帧图像si和帧图像si+1间的像素差异数据及帧图像si绘制帧图像si+1过程,是获取图像对ti中像素差异数据的位置信息及色值信息,确定帧图像si+1中的差异像素点,差异像素点为像素差异数据中的位置信息对应的像素点;根据像素差异数据的位置信息和色值信息绘制帧图像si+1中的差异像素点;根据非差异像素点在帧图像si中的位置信息和色值信息,绘制帧图像si+1中的非差异像素点,得到绘制后的帧图像si+1;非差异像素点为帧图像si或帧图像si+1中不为差异像素点的像素点。具体的,依次绘制帧图像si+1中每个像素点的色值信息,当该像素点为差异像素点时,该点的色值信息为对应的像素差异数据中的色值信息,当该像素点为非差异像素点时,该点的色值信息为帧图像si中对应位置信息下的色值信息;再绘制下一个像素点的色值信息,直至绘制出帧图像si+1中的所有像素点。

本发明实施例通过获取到压缩图像后,根据该压缩图像获取到压缩帧图像的压缩数据,并对该压缩数据进行反解压,得到压缩帧图像的像素差异数据,对于每个压缩帧图像,可以通过该压缩帧图像的像素差异数据及前一帧图像得到该压缩帧图像每一个像素点的色值信息,从而对无损压缩后的压缩图像进行还原,得到目标图像,且得到的目标图像与原始图像间不存在数据差异,实现对无损压缩的图像的无损解压,进而实现对目标图像的渲染展示,有效实现了对图像的无损解压缩,进一步提高图片的无损压缩效果。

可选的,参见图10,图10是本发明实施例提供的一种图像压缩装置。如图10所示,该图像压缩装置可以用于上述图3至图8所对应实施例中的电子设备,具体的该图像压缩装置1a包括获取模块10a、确定模块20a和生成模块30a。

获取模块10a,用于获取目标图像中的至少一个图像对,所述目标图像包括多个帧图像,每个图像对均包含所述目标图像中任意相邻的两帧图像;

确定模块20a,用于确定所述至少一个图像对中的两帧图像间的像素差异数据,基于像素差异数据间的差异值,对所述两帧图像间的多个像素差异数据进行排序,将排序后的所述像素差异数据确定为所述目标图像中的压缩帧图像对应的压缩数据;所述压缩帧图像为所述目标图像中除了首帧图像之外的帧图像;

生成模块30a,用于将所述多帧图像中首帧图像和所述压缩数据合成为所述目标图像对应的压缩图像。

其中,所述确定模块20a包括:

获取单元201a,用于获取所述至少一个图像对中的图像对ti,所述图像对ti包括帧图像si和帧图像si+1;i为正整数,且i小于或等于m-1,所述m为所述目标图像中的帧图像的数量;

确定单元202a,用于确定所述帧图像si和帧图像si+1每个像素点间的像素差异数据,所述像素差异数据为帧图像si+1中不同于所述帧图像si的像素点的色值信息;所述帧图像si+1属于所述压缩帧图像;

所述确定单元202a,还用于将所述像素差异数据确定为所述帧图像si+1对应的压缩数据,直至确定出图像对tm-1中的帧图像sm对应的压缩数据。

其中,在确定所述帧图像si和帧图像si+1每个像素点间的像素差异数据方面,所述确定单元202a包括:

第一对比子单元2021a,用于对比所述帧图像si和帧图像si+1中相同位置信息下的像素点的色值信息;

第一确定子单元2022a,用于当存在像素点的色值信息不同时,将所述色值信息不同的像素点确定为差异像素点,根据帧图像si+1中所述差异像素点的色值信息确定所述帧图像si和帧图像si+1间的像素差异数据。

其中,所述第一确定子单元2022a具体用于:

获取所述帧图像si+1中所述差异像素点的色值信息及位置信息;

将所述位置信息的数据格式转换成所述色值信息的数据格式,将格式转换后的位置信息和所述色值信息确定为所述帧图像si和帧图像si+1间的像素差异数据。

其中,在所述将所述像素差异数据确定为所述帧图像si+1对应的压缩数据方面,所述确定单元202a包括:

第二对比子单元2023a,用于基于像素差异数据间的差异值,对所述帧图像si和帧图像si+1间的多个像素差异数据进行排序;

第二确定子单元2024a,用于将排序后的像素差异数据确定为所述帧图像si+1对应的压缩数据。

其中,所述第二对比子单元2023a具体用于:

获取所述图像对ti对应的像素差异数据排序队列;

获取所述像素差异数据排序队列中第j个像素差异数据与未排序的像素差异数据间的差异值,将与所述第j个像素差异数据的差异值小于第一差异阈值的p个像素差异数据,依次沿所述第j个像素差异数据进行排序,将已排序的像素差异数据和更新后未排序的像素差异数据进行拼接,得到更新后的像素差异数据排序队列;p为0或正整数,且p小于所述像素差异数据的数量;

在所述更新后的像素差异数据排序队列中获取第p+j个像素差异数据;

将所述更新后未排序的像素差异数据中与所述第p+j个像素差异数据的差异值小于所述第一差异阈值的k个像素差异数据,依次沿所述第p+j个像素差异数据进行排序,直至所述帧图像si和帧图像si+1间不存在未排序的像素差异数据。

其中,在所述将所述像素差异数据确定为所述帧图像si+1对应的压缩数据方面,所述确定单元202a还包括:

获取子单元2025a,用于确定第一遍历窗口的长度与第二遍历窗口的长度,所述第一遍历窗口与所述第二遍历窗口间存在分隔符,所述第一遍历窗口与所述第二遍历窗口相邻;

第三确定子单元2026a,用于将所述分隔符置于所述像素差异数据的首位字符,确定所述像素差异数据中所述第一遍历窗口与所述第二遍历窗口中相同字符的最大匹配长度;

第一生成子单元2027a,用于根据所述最大匹配长度的相同字符生成第一个压缩节点;

所述第一生成子单元2027a,还用于移动所述分隔符l位字符,生成下一个压缩节点,直至所述第一遍历窗口与所述第二遍历窗口间的所述分隔符位于所述像素差异数据的末尾字符,其中l是基于所述最大匹配长度所确定的;

第二生成子单元2028a,用于根据所述压缩节点以及所述像素差异数据中不属于所述压缩节点的字符,生成所述帧图像si+1对应的压缩数据。

本发明实施例提供了一种图像压缩装置,上述装置在获取到需要进行压缩的目标图像时,该目标图像包括多帧图像,提取目标图像中的图像对,每个图像对包含目标图像中任意相邻的两帧图像;根据这两帧图像间的像素差异数据确定第二个帧图像对应的压缩数据,第二个是相对于帧图像在目标图像中的显示顺序而言,从而根据目标图像中的首帧图像及压缩帧图像的压缩数据得到目标图像的压缩图像,有效实现了图像的无损压缩。而且,本发明实施例一方面是通过提取相邻两帧图像间的像素差异数据,确定为第二个帧图像的压缩数据;另一方面对像素差异数据进行排序,使得排序后的像素压缩数据中相邻位置的数据相近,并对排序后的像素差异数据进行无损压缩,从这两方面进一步提高了对目标图像的压缩率,减少了目标图像压缩后的存储大小,而不影响目标图像的显示效果。

可选的,参见图11,图11是本发明实施例提供的一种图像解压缩装置。如图11所示,该图像压缩装置可以用于上述图9所对应实施例中的电子设备,具体的该图像压缩装置1b包括获取模块10b、确定模块20b和绘制模块30b。

获取模块10b,用于获取压缩图像中的首帧图像和压缩数据,所述首帧图像为目标图像中的首帧图像,所述压缩数据为所述目标图像中的压缩帧图像对应的压缩数据,所述压缩帧图像为所述目标图像中除了首帧图像之外的帧图像;

确定模块20b,根据所述压缩数据确定像素差异数据,所述目标图像包括至少一个图像对,所述图像对包括目标图像中任意相邻的两帧图像,所述像素差异数据为所述相邻的两帧图像间的差异;

绘制模块30b,用于根据所述像素差异数据及所述首帧图像绘制目标图像。

其中,所述确定模块20b包括:

获取单元201b,用于获取第一遍历窗口的长度与第二遍历窗口的长度,所述第一遍历窗口与所述第二遍历窗口间存在分隔符,所述第一遍历窗口与所述第二遍历窗口相邻;

遍历单元202b,用于将所述分隔符处于所述压缩数据的首位字符,滑动所述第一遍历窗口与所述第二遍历窗口,遍历所述压缩数据中的每一个字符;

还原单元203b,用于若所述字符为压缩节点,则将所述压缩节点还原为数据还原节点;

第一确定单元204b,用于根据所述数据还原节点及所述压缩数据中不属于所述压缩节点的字符,确定所述像素差异数据。

其中,所述绘制模块30b,包括:

绘制单元301b,用于绘制所述首帧图像;

第二确定单元302b,用于根据图像对ti中帧图像si和帧图像si+1间的像素差异数据及所述帧图像si绘制所述帧图像si+1,直至确定帧图像sm;m为所述目标图像包括的多个帧图像的数量,i为正整数,且i小于m;

生成单元303b,用于根据绘制后的所有帧图像,生成所述目标图像。

其中,所述第二确定单元具302b体用于:

获取子单元3021b,用于获取所述图像对ti中像素差异数据的位置信息及色值信息;

确定子单元3022b,用于确定所述帧图像si+1中的差异像素点,所述差异像素点为所述像素差异数据中的位置信息对应的像素点;

绘制子单元3023b,用于根据所述像素差异数据的位置信息和色值信息绘制所述帧图像si+1中的所述差异像素点;

所述绘制子单元3023b,还用于根据非差异像素点在所述帧图像si中的位置信息和色值信息,绘制所述帧图像si+1中的所述非差异像素点,得到绘制后的帧图像si+1;所述非差异像素点为所述帧图像si或所述帧图像si+1中不为所述差异像素点的像素点。

本发明实施例提供了一种图像解压缩装置,该装置通过获取到压缩图像后,根据该压缩图像获取到压缩帧图像的压缩数据,并对该压缩数据进行反解压,得到压缩帧图像的像素差异数据,对于每个压缩帧图像,可以通过该压缩帧图像的像素差异数据及前一帧图像得到该压缩帧图像每一个像素点的色值信息,从而对无损压缩后的压缩图像进行还原,得到目标图像,且由于在压缩或解压缩过程中不存在数据删除过程,使得得到的目标图像与目标图像进行压缩前的原始图像间不存在数据差异,实现对无损压缩的图像的无损解压,进而实现对目标图像的渲染展示,有效实现了对图像的无损解压缩,进一步提高图片的无损压缩效果。

参见图12,图12是本申请实施例提供的电子设备的结构示意图。如图12所示,本实施例中的终端设备可以包括:一个或多个处理器1201和存储器1202。上述处理器1201和存储器1202通过总线1203连接。存储器1202用于存储计算机程序,该计算机程序包括程序指令;处理器1201用于执行存储器1202存储的程序指令,执行如下操作:

获取目标图像中的至少一个图像对,所述目标图像包括多个帧图像,每个图像对均包含所述目标图像中任意相邻的两帧图像;

确定所述至少一个图像对中的两帧图像间的像素差异数据,将所述像素差异数据确定为所述目标图像中的压缩帧图像对应的压缩数据;所述压缩帧图像为所述目标图像中除了首帧图像之外的帧图像;

将所述目标图像中首帧图像和所述压缩数据合成为所述目标图像对应的压缩图像。

或者,处理器1201用于执行如下操作:

获取压缩图像中的首帧图像和压缩数据,所述首帧图像为目标图像中的首帧图像,所述压缩数据为所述目标图像中的压缩帧图像对应的压缩数据,所述压缩帧图像为所述目标图像中除了首帧图像之外的帧图像;

根据所述压缩数据确定像素差异数据,所述目标图像包括至少一个图像对,所述图像对包括目标图像中任意相邻的两帧图像,所述像素差异数据为所述相邻的两帧图像间的差异;

根据所述像素差异数据及所述首帧图像绘制目标图像。

在一些可行的实施方式中,上述处理器1201可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

该存储器1202可以包括只读存储器和随机存取存储器,并向处理器1201提供指令和数据。存储器1202的一部分还可以包括非易失性随机存取存储器。例如,存储器1202还可以存储设备类型的信息。

具体实现中,上述电子设备可通过其内置的各个功能模块执行如上述图2至图9各个步骤所提供的实现方式,具体可参见上述图2至图9中各个步骤所提供的实现方式,在此不再赘述。

本发明实施例通过提供一种电子设备,包括:处理器、存储器,通过处理器获取存储器中的计算机指令,执行上述图2至图9中所示方法的各个步骤,进行获取目标图像,提取目标图像中任意相邻的两帧图像间的像素差异数据,将像素差异数据确定为两帧图像中的第二个帧图像的压缩数据,并根据目标图像中的首帧图像和除首帧图像之外的帧图像的压缩数据得到目标图像的压缩图像,从而实现对目标图像的无损压缩,或获取压缩图像,提取该压缩图像中的数据,该数据包括目标图像的首帧图像及除首帧图像之外的帧图像的压缩数据,根据压缩数据得到除首帧图像之外的帧图像与前一个帧图像间的像素差异数据,从而可以根据前一个帧图像和像素差异数据确定该帧图像的初始图像,实现对压缩数据的无损解压缩。在压缩或解压缩过程中不存在数据的删除,且由于不是对整个图像的压缩,使得图像所占的存储大小减少,并且不影响显示效果,减少传输耗时。

本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图2至图9中各个步骤所提供的确定查阅文本数据的用户的方法,具体可参见上述图2至图9各个步骤所提供的实现方式,在此不再赘述。

上述计算机可读存储介质可以是前述任一实施例提供的确定查阅文本数据的用户的装置或者上述终端设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本发明实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。另,术语“至少”是用于列举部分情况,以反映实施过程,而非只包括给出的方法实施要求。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1