图像压缩方法与流程

文档序号:19150386发布日期:2019-11-16 00:01阅读:384来源:国知局
图像压缩方法与流程

本申请涉及视频编解码技术领域,特别是涉及一种图像压缩方法。



背景技术:

随着高清视频的发展和普及,视频编解码技术面临着严峻的挑战。视频解码是一个对数字视频进行解压缩的过程,其中,h.264视频编解码是一种非常流行的标准算法,该技术具有较高的压缩比,得到了广泛应用。在h.264编码过程中需要使用参考图像来进行运动估计和运动补偿,因此会对参考图像进行大量的读写操作。

传统技术中,在对视频进行编码时,编码器对参考图像数据进行压缩,但是压缩后的参考图像数据仍然比较大,导致编码过程中读写数据量较大,带宽利用率低。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种图像压缩方法。

一种图像压缩方法,包括:

将待压缩图像划分为多个压缩单元;每个压缩单元包括至少两个子块;

基于预设压缩数据格式,分别获取每个压缩单元的压缩数据;

其中,压缩数据包括压缩单元的参考像素值、第一像素关联数据、第二像素关联数据、压缩单元的参考像素值所在的子块位置、各子块的参考像素值所在的像素位置;

第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,第二像素关联数据用于表征每个子块内的像素关系。

在其中一个实施例中,第一像素关联数据为各子块的参考像素值与压缩单元的参考像素值的第一差值。

在其中一个实施例中,若压缩单元的子块个数为n,则第二像素关联数据包括n个第一数据项;

每个第一数据项对应的内容为压缩单元单元内的一个子块内的其它像素值与子块的参考像素值的第二差值。

在其中一个实施例中,压缩单元的参考像素值为压缩单元的最小像素值;子块的参考像素值为子块内的最小像素值。

在其中一个实施例中,压缩数据还包括:第一关联数据项和第二关联数据项;

第一关联数据项包括第一差值的比特数;

第二关联数据项包括n个第二数据项;第二数据项对应的内容为第二差值的比特数。

在其中一个实施例中,压缩数据还包括子块划分模式。

在其中一个实施例中,子块划分模式为根据不同的子块划分模式分别对压缩单元进行压缩后,所获得的压缩数据量最小的子块划分模式。

在其中一个实施例中,基于预设压缩数据格式,分别获取每个压缩单元的压缩数据,包括:

基于多个压缩单元之间的像素关系、各个子块之间的像素关系以及预设压缩数据格式,分别获取每个压缩单元的压缩数据。

在其中一个实施例中,第一关联数据项还包括第一位置关系;

若待压缩图像包括第一压缩单元和第二压缩单元,且第一压缩单元和第二压缩单元的像素相同;

若第一压缩单元的第一压缩数据包括:第一关联数据项、第二关联数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、n个子块的最小像素值所在的像素位置以及n个子块的第二差值,则第二压缩单元的第二压缩数据为第一位置关系,第一位置关系用于表征第二压缩单元与第一压缩单元的位置关系。

在其中一个实施例中,第二关联数据项还包括第二位置关系;

若待压缩图像包括第一子块和第二子块,且第一子块和第二子块的像素相同;

则第一子块所在压缩单元的第三压缩数据包括:第一关联数据项、第一子块的第二位置关系、其它子块的第二数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、其它子块的最小像素值所在的像素位置以及其它子块的第二差值;其中,第二位置关系用于表征第一子块与第二子块的位置关系。

在其中一个实施例中,压缩单元的参考像素值用第一预设比特位表示;

第一像素关联数据的比特位数值用第二预设比特位表示,第二预设比特位的位数等于第一最大差值的比特位数,第一最大差值为压缩单元中,各子块的最小像素值与压缩单元的最小像素值的最大差值;

第二像素关联数据中每个第一数据项的比特位数值用第三预设比特位表示;第三预设比特位的位数等于第二最大差值的比特位数,第二最大差值为第一数据项对应的子块中,子块的其它像素值与子块的最小像素值的最大差值;

各子块的参考像素值所在的像素位置用第四预设比特位表示。

在其中一个实施例中,第一预设比特位为8,第四预设比特位为2。

在其中一个实施例中,方法还包括:

将待压缩图像中各宏块对应的压缩数据进行打包,获得多个压缩包;

根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置;多个压缩包的存储空间大小为固定值。

在其中一个实施例中,将待压缩图像中各宏块中包含压缩单元对应的压缩数据进行打包,获得多个压缩包,包括:

将宏块的y像素块对应的压缩数据分为第一压缩包和第二压缩包;

从宏块的v像素块中,获取与宏块的u像素块中的第一像素块位置匹配的第二像素块;

将第一像素块的压缩数据与第二像素块的压缩数据进行打包,获得第三压缩包。

在其中一个实施例中,第一压缩包对应的y像素块的大小为16*12,第二压缩包对应的y像素块的大小为16*4;第一像素块的大小为8*4。

在其中一个实施例中,根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置,包括:

根据宏块在待压缩图像中的位置,确定第一压缩包的起始位置,在第一压缩包之后依次确定宏块的第二压缩包以及宏块第三压缩包的存储位置。

在其中一个实施例中,根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置之后,还包括:

统计各个压缩包的数据长度,并存储压缩包的数据长度。

一种图像压缩装置,装置包括:

划分模块,用于将待压缩图像划分为多个压缩单元;每个压缩单元包括至少两个子块;

压缩模块,用于基于预设压缩数据格式,分别获取每个压缩单元的压缩数据;其中,压缩数据包括压缩单元的参考像素值、第一像素关联数据、第二像素关联数据、压缩单元的参考像素值所在的子块位置、各子块的参考像素值所在的像素位置;第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,第二像素关联数据用于表征每个子块内的像素关系。

一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述图像压缩方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述图像压缩方法的步骤。

上述图像压缩方法,计算机设备将待压缩图像划分为多个压缩单元;每个压缩单元包括至少两个子块;然后,基于预设压缩数据格式,分别获取每个压缩单元的压缩数据;其中,压缩数据包括压缩单元的参考像素值、第一像素关联数据、第二像素关联数据、压缩单元的参考像素值所在的子块位置、各子块的参考像素值所在的像素位置;第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,第二像素关联数据用于表征每个子块内的像素关系。由于计算机设备对待压缩图像进行压缩后,所获得的压缩数据中包括压缩单元的参考像素值以及第一像素关联数据和第二关联数据,也就是说压缩数据中不是对所有的像素值进行存储,而是存储了参考像素值以及表征像素关系的第一像素关联数据和第二关联数据;由于第一像素关联数据和第二关联数据相比压缩单元的像素值的数据较小,因此计算机设备可以获得比较小的压缩数据,提升对待压缩图像进行压缩的压缩比,从而提升带宽利用效率并降低读取压缩数据的时延;进一步地,计算机设备对待压缩图像中每一个像素的信息均通过第一像素关联关系和第二像素关联关系进行存储,是一种无损的压缩方法,可以避免对待压缩图像进行压缩造成的信息失真。

附图说明

图1为一个实施例中图像压缩方法的应用环境图;

图2为一个实施例中图像压缩方法的流程示意图;

图2a为一个实施例中子块划分示意图;

图3为另一个实施例中图像压缩方法的流程示意图;

图3a为一个实施例中数据包打包示意图;

图3b为一个实施例中数据包位置示意图;

图4为一个实施例中图像压缩装置的结构框图;

图5为一个实施例中图像压缩装置的结构框图;

图6为一个实施例中图像压缩装置的结构框图;

图7为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的图像压缩方法,可以应用于如图1所示的应用环境中。其中,计算机设备100将待压缩图像进行压缩获得压缩数据,其中,计算机设备100可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑。

在一个实施例中,如图2所示,提供了一种图像压缩方法,以该方法应用于图1中的计算机设备为例进行说明,包括:

s101、将待压缩图像划分为多个压缩单元;每个压缩单元包括至少两个子块。

上述待压缩图像可以是视频帧中的其中一帧,也可以是其它图像,对于上述待压缩图像的类型在此不做限定。

具体地,计算机设备可以根据预设的压缩单元大小,对待压缩图像进行划分,获得多个压缩单元;例如,压缩单元的大小可以是4×4个像素,包含16个像素值。

进一步地,计算机设备还可以对压缩单元进行进一步地划分,获得多个子块。例如,如图2a所示,对于上述4×4的压缩单元,可以分成4个子块,上述4个子块的大小可以是1×4,也可以是4×1,还可以是2×2,在此不做限定。

s102、基于预设压缩数据格式,分别获取每个压缩单元的压缩数据;其中,压缩数据包括压缩单元的参考像素值、第一像素关联数据、第二像素关联数据、压缩单元的参考像素值所在的子块位置、各子块的参考像素值所在的像素位置;第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,第二像素关联数据用于表征每个子块内的像素关系。

上述预设的压缩数据格式中包含多个数据项,具体地,计算机设备在对压缩单元进行压缩时,可以获取压缩数据格式中每一个数据项的值,组成待压缩图像的压缩数据;也可以获取压缩数据格式中部分数据项的值组成待压缩图像的压缩数据,能够完成记录待压缩图像中每一个像素的信息即可。

其中,上述压缩单元的参考像素值可以是压缩单元中的第一个像素值,例如4×4的压缩单元第一行第一列的像素值,也可以是压缩单元中的最大像素值,在此不做限定。可选地,压缩单元的参考像素值为压缩单元的最小像素值。

上述各子块的参考像素值可以是子块中的第一个像素值,例如2×2的子块中第一行第一列的像素值,也可以是子块中的最大像素值,在此不做限定。可选地,子块的参考像素值为子块内的最小像素值。

上述第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,上述像素关系可以是像素值的比值,也可以是像素值的差值;可选地,第一像素关联数据为各子块的参考像素值与压缩单元的参考像素值的第一差值。

上述第二像素关联数据用于表征每个子块内的像素关系,类似地,上述像素关系可以是像素值的比值,也可以是像素值的差值;可选地,若压缩单元的子块个数为n,则第二像素关联数据包括n个第一数据项;每个第一数据项对应的内容为压缩单元单元内的一个子块内的其它像素值与子块的参考像素值的第二差值。例如,4×4的压缩单元中包含4个2×2的子块,上述第二像素关联数据中包含4个第一数据项,每一个第一数据项都为2×2的子块的其它三个像素值与子块的最小像素值的第二差值,也就是说上述第二像素关联数据包含4个第一数据项,每一个第一数据项中包含依次排列的三个第二差值。

上述压缩数据中还包括压缩单元的参考像素值所在的子块位置以及各子块的参考像素值所在的像素位置,例如4×4的压缩单元,压缩单元中的最小像素值位于该压缩单元的第四个子块时,可以用2个比特位的数据表示,可以用11表示该最小像素值所在的子块位置,同样地,子块的最小像素值为子块的第四个像素值时,可以用11表示子块的最小像素值在子块中的像素位置。

另外,上述压缩数据还包括:第一关联数据项和第二关联数据项;其中,第一关联数据项包括第一差值的比特数;第二关联数据项包括n个第二数据项;第二数据项对应的内容为第二差值的比特数。例如,4×4的压缩单元中,第一差值包括其他子块的最小像素值与压缩单元的最小像素值的三个第一差值,上述第一差值的比特数可以是上述三个第一差值中,最大的第一差值占的比特位的数值;上述第二关联数据项包括4个第二数据项,上述第二数据项为对应第一数据项中三个第二差值中最大值所占的比特位的位数。

以上述4×4的压缩单元为例,压缩单元的压缩数据格式如下表:

上述图像压缩方法,计算机设备将待压缩图像划分为多个压缩单元;每个压缩单元包括至少两个子块;然后,基于预设压缩数据格式,分别获取每个压缩单元的压缩数据;其中,压缩数据包括压缩单元的参考像素值、第一像素关联数据、第二像素关联数据、压缩单元的参考像素值所在的子块位置、各子块的参考像素值所在的像素位置;第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,第二像素关联数据用于表征每个子块内的像素关系。由于计算机设备对待压缩图像进行压缩后,所获得的压缩数据中包括压缩单元的参考像素值以及第一像素关联数据和第二关联数据,也就是说压缩数据中不是对所有的像素值进行存储,而是存储了参考像素值以及表征像素关系的第一像素关联数据和第二关联数据;由于第一像素关联数据和第二关联数据相比压缩单元的像素值的数据较小,因此计算机设备可以获得比较小的压缩数据,提升对待压缩图像进行压缩的压缩比,从而提升带宽利用效率并降低读取压缩数据的时延;进一步地,计算机设备对待压缩图像中每一个像素的信息均通过第一像素关联关系和第二像素关联关系进行存储,是一种无损的压缩方法,可以避免对待压缩图像进行压缩造成的信息失真。

在一个实施例中,在上述实施例的基础上,计算机设备对待压缩图像进行压缩后,压缩数据还包含子块划分模式。

计算机设备在对压缩单元划分成多个子块时,可以针对同一个待压缩图像中的多个压缩单元采用不同的子块划分模式进行划分,例如,对待压缩图像中的多个4×4的压缩单元的进行子块划分时,可以将其中部分压缩单元划分为四个1×4的子块,然后将其它压缩单元划分为四个2×2的子块,因此,在压缩单元的压缩数据中可以包括子块划分模式,可以按照预设匹配规则,当子块为1×4时,对应的子块划分模式用2个比特位10表示,当子块为2×2时,对应的对应的子块划分模式用2个比特位01表示。

进一步地,计算机设备可以对同一个压缩单元采用多种不同的子块划分模式进行子块划分,然后获得不同子块划分模式下对应的多个压缩数据,通过比较上述多个压缩数据的数据量大小,将数据量最小的压缩数据对应的子块划分模式确定为目标子块划分模式,并将该目标子块划分模式对应的标识记录在压缩数据中,通过上述方法可以使压缩单元的压缩数据量更小,进一步提升压缩比。也就是说,压缩数据中的子块划分模式为根据不同的子块划分模式分别对压缩单元进行压缩后,所获得的压缩数据量最小的子块划分模式。

上述图像压缩方法,在压缩数据中包含子块划分模式,并可以根据不同的子块划分模式分别对压缩单元进行压缩后,所获得的压缩数据来确定最终的子块划分模式,通过上述方法可以使压缩单元的压缩数据量更小,进一步提升图像压缩比。

在一个实施例中,本实施例涉及计算机设备获取压缩数据的一种具体方式,在上述实施例的基础上,计算机设备可以基于多个压缩单元之间的像素关系、各个子块之间的像素关系以及预设压缩数据格式,分别获取每个压缩单元的压缩数据。

具体地,计算机设备可以考虑待压缩图像中,各个压缩单元在空间上的相关性,进一步地降低压缩数据在空间上的冗余,从而使获得的压缩数据的数据量更小。上述多个压缩单元之间的像素关系可以是相邻的两个压缩单元的像素值相同,也可以是间隔预设数量的两个压缩单元的像素值相同,还可以是多个压缩单元的像素值均相同,对于上述像素关系的类型在此不做限定。

同样地,上述子块之间的像素关系可以是相邻的两个子块的像素值相同,也可以是间隔预设数量的两个子块的像素值相同,还可以是多个子块的像素值均相同;另外,可以是同一个压缩单元中的子块的像素关系,也可以是不同的压缩单元中的子块的像素关系,在此不做限定。

计算机设备在基于多个压缩单元之间的像素关系对待压缩图像进行压缩时,若待压缩图像包括第一压缩单元和第二压缩单元,且第一压缩单元和第二压缩单元的像素相同;若第一压缩单元的第一压缩数据包括:第一关联数据项、第二关联数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、n个子块的最小像素值所在的像素位置以及n个子块的第二差值,则第二压缩单元的第二压缩数据为第一位置关系,第一位置关系用于表征第二压缩单元与第一压缩单元的位置关系。

也就是说,当第一压缩单元和第二压缩单元相同时,计算机设备在对第二压缩单元进行压缩时,不需要记录第二压缩单元的最小像素值以及第一关联数据项等,只需要通过第一位置关系表征第二压缩单元与第一压缩单元的位置关系即可。例如,两个4×4的压缩单元中,第一压缩单元的第一压缩数据如下表,其中k0表示第一差值的比特数。

在第一压缩单元和第二压缩单元的像素相同时,第二压缩单元的第二压缩数据可以只用第一关联数据项k0表示,此时,第一关联数据项ko表示第二压缩单元和第一压缩单元的第一位置关系,k0可以为4个比特位的数据,可以表示如下:

当k0=1~8时,表示第一差值的比特数为k0;

当k0=9时,表示该4x4的第二压缩单元和其左上的第一压缩单元完全相同;

当k0=10时,表示该4x4的第二压缩单元和其顶部的第一压缩单元完全相同;

当k0=11时,表示该4x4的第二压缩单元和其右上的第一压缩单元完全相同;

当k0=12时,表示该4x4的第二压缩单元和其左边的第一压缩单元完全相同;

另外,当k0=0,可以表示4x4的压缩单元中的最小像素值值和其4个子块的最小像素值均相同;当k0=13,可以表示4x4的压缩单元中16个数具有相同的像素值;当k0=14时,可以表示当前4x4的压缩单元不压缩,该压缩单元的压缩数据为k0后依次排列该压缩单元的各个像素值。

进一步地,计算机设备还可以基于多个子块之间的像素关系对待压缩图像进行压缩。若待压缩图像包括第一子块和第二子块,且第一子块和第二子块的像素相同;则第一子块所在压缩单元的第三压缩数据包括:第一关联数据项、第一子块的第二位置关系、其它子块的第二数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、其它子块的最小像素值所在的像素位置以及其它子块的第二差值;其中,第二位置关系用于表征第一子块与第二子块的位置关系。

也就是说,当压缩单元中第一子块与第二子块相同时,那么则该压缩单元的第三压缩数据中不需要记录第一子块对应的第二差值,以及第一子块对应的第一子块的最小像素值所在的像素位置,以及该子块对应的第一差值,而只需要记录表征第一子块和第二子块的位置关系即可继续以4×4的压缩单元为例,该压缩单元的第一个子块与第二个子块相同,且第一个子块位于第二个子块的顶部,那么该压缩单元的第三压缩数据可以表示为下表。其中第二关联数据项k2表示第二个子块的第二差值的比特数。

在该压缩单元的第一个子块与第二个子块相同时,第三压缩数据可以表示为,其中第二关联数据项k2表示第一子块与第二子块的位置关系。

其中,k2可以为一个4个比特位的数据,可以表示如下:

当k2=1~8时,表示该子块第二差值的比特数为k2;

当k2=9时,表示该子块和其左上的子块完全相同;

当k2=10时,表示该子块和其顶部的子块完全相同;

当k2=11时,表示该子块和其右上的子块完全相同;

当k2=12时,表示该子块和其左边的子块完全相同;

另外,当k2=0时,还可以表示该子块的4个像素具有相同的值。

具体地,计算机设备获得的压缩单元的各个数据项的比特位数值可以通过如下方式确定:压缩单元的参考像素值用第一预设比特位表示,例如可以用8个比特位表示;第一像素关联数据的比特位数值用第二预设比特位表示,第二预设比特位的位数等于第一最大差值的比特位数,第一最大差值为压缩单元中,各子块的最小像素值与压缩单元的最小像素值的最大差值;第二像素关联数据中每个第一数据项的比特位数值用第三预设比特位表示;第三预设比特位的位数等于第二最大差值的比特位数,第二最大差值为第一数据项对应的子块中,子块的其它像素值与子块的最小像素值的最大差值;各子块的参考像素值所在的像素位置用第四预设比特位表示,例如,可以是2个比特位。

计算机设备根据上述方法确定各个数据项的比特位数之后,就可以基于压缩数据格式来计算出压缩数据的比特位数。

继续以4×4的压缩单元为例,当压缩单元中4个子块均与其它子块不同,且该压缩单元与其它压缩单元不同时,压缩数据格式为:

其中,k0、k1、k2、k3和k4均固定为4个比特位的数据,子块划分模式mode为2个比特位数据,压缩单元的最小像素值固定为8个比特位数据,压缩单元的最小像素位置用2个比特位表示,第一差值的比特数均为k0,四个子块的第二差值的比特数分别为k1、k2、k3和k4,四个子块中最小像素的位置均用2个比特位表示,因此压缩数据中:

k0-data的比特位为:m0=8+2+3k0;

ki-data的比特位为:mi=2+3ki,其中i=1,2,3,4;

那么,该压缩单元的压缩数据的比特位为:22+m0+m1+m2+m3+m4。

当该压缩单元与其它相邻的压缩单元相同时,该压缩单元的压缩数据的比特位为4。

当该压缩单元与其它压缩单元不同,但是该压缩单元的4个子块均具有相同的压缩单元时,该压缩单元的压缩数据的比特位为:20。

当该压缩单元中,m个子块与相邻子块相同时,该压缩单元的压缩数据的比特位为:22+(10+(3-m)k0)+m1(1-n1)+m2(1-n2)+m3(1-n3)+m4(1-n4),其中ni为1表示第i个子块具有相同的相邻子块,ni为0表示第i个子块不具有相同的相邻子块。

上述图像压缩方法,计算机设备基于各个压缩单元在空间上的相关性,进一步地降低压缩数据在空间上的冗余,从而使获得的压缩数据的数据量更小,进一步提升图像压缩的压缩比。

图3为一个实施例中图像压缩方法的流程示意图,本实施例涉及计算机设备在获得压缩数据后,对压缩数据进行存储的过程,在上述实施例的基础上,如果3所示,上述方法还包括:

s201、将待压缩图像中各宏块对应的压缩数据进行打包,获得多个压缩包。

具体地,计算机设备在获得各个压缩单元的压缩数据后,可以根据待压缩图像中宏块的划分,对每一个宏块中包含的压缩单元对应的压缩数据进行打包,获得多个压缩包。

计算机设备可以按照压缩单元在宏块中的位置进行打包,可选地,还可以将宏块的y像素块对应的压缩数据分为第一压缩包和第二压缩包;然后从宏块的v像素块中,获取与宏块的u像素块中的第一像素块位置匹配的第二像素块;将第一像素块的压缩数据与第二像素块的压缩数据进行打包,获得第三压缩包;将每个宏块的u和v按上述方式打包存储,方便了在运动补偿阶段对u和v的访问且不会导致过多的数据读取。

计算机设备可以将y像素块对应的压缩数据平均分为两个压缩包,获得第一压缩包和第二压缩包,另外,还可以按照设定的第一压缩包和第二压缩包对应的像素块的大小,来进行打包;例如,第一压缩包对应的y像素块的大小为16×12,第二压缩包对应的y像素块的大小为16×4。进一步地,计算机设备还可以按照预设的第一像素块的大小对u像素和v像素块对应的压缩数据进行打包,例如第一像素块的大小为8×4。

例如,如图3a所示,宏块的y像素块的大小为16×16,u像素块和v像素块的大小分别为8×8,计算机设备可以将y像素块的上部分16×16作为一包数据进行压缩,记为y_a包,下部分16×4作为另一包数据进行压缩,记为y_b包;然后,将8x8的u像素块的上部分8×4和8×8的v像素块的上部分8×4作为一包数据进行压缩,记为uv_a包,8×8的u像素块的下部分8×4和8×8的v像素块的下部分8×8作为一包数据进行压缩,记为uv_b包。

s202、根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置;多个压缩包的存储空间大小为固定值。

在获得了宏块的各个数据包之后,可以根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置,可以设定y_a压缩包的存储空间为12×16byte,其余压缩包的存储空间均为4×16byte。

计算机设备可以将每个宏块的各个数据包挨近存储,可以根据宏块在待压缩图像中的位置,确定第一压缩包的起始位置,在第一压缩包之后依次确定宏块的第二压缩包以及宏块第三压缩包的存储位置,通过将一个宏块的y压缩包和uv压缩包挨近存储,使得计算机设备在调用同一个宏块的压缩数据时不需要频繁地切换地址行,从而避免造成带宽资源的浪费。例如,待压缩图像的压缩数据可以存储如图3b所示。

进一步地,计算机设备还可以统计各个压缩包的数据长度,并存储压缩包的数据长度,使得计算机设备可以直接获取到该压缩包的数据长度。

上述图像压缩方法计算机设备将待压缩图像中各宏块对应的压缩数据进行打包,获得多个压缩包;然后根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置,使得计算机设备随时可以根据压缩包的位置对宏块的压缩数据进行读取,存储方式更加合理;另外,通过将一个宏块的y压缩包和uv压缩包挨近存储,使得计算机设备在调用同一个宏块的压缩数据时不需要频繁地切换地址行,从而避免造成带宽资源的浪费。

应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种图像压缩装置,包括:划分模块10和压缩模块20,其中:

划分模块10,用于将待压缩图像划分为多个压缩单元;每个压缩单元包括至少两个子块;

压缩模块20,用于基于预设压缩数据格式,分别获取每个压缩单元的压缩数据;其中,压缩数据包括压缩单元的参考像素值、第一像素关联数据、第二像素关联数据、压缩单元的参考像素值所在的子块位置、各子块的参考像素值所在的像素位置;第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,第二像素关联数据用于表征每个子块内的像素关系。

本申请实施例提供的图像压缩装置,可以实现上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

在一个实施例中,在上述实施例的基础上,第一像素关联数据为各子块的参考像素值与压缩单元的参考像素值的第一差值。

在一个实施例中,在上述实施例的基础上,若压缩单元的子块个数为n,则第二像素关联数据包括n个第一数据项;每个第一数据项对应的内容为压缩单元单元内的一个子块内的其它像素值与子块的参考像素值的第二差值。

在一个实施例中,在上述实施例的基础上,压缩单元的参考像素值为压缩单元的最小像素值;子块的参考像素值为子块内的最小像素值。

在一个实施例中,在上述实施例的基础上,压缩数据还包括:第一关联数据项和第二关联数据项;第一关联数据项包括第一差值的比特数;第二关联数据项包括n个第二数据项;第二数据项对应的内容为第二差值的比特数。

在一个实施例中,在上述实施例的基础上,压缩数据还包括子块划分模式。

在一个实施例中,在上述实施例的基础上,子块划分模式为根据不同的子块划分模式分别对压缩单元进行压缩后,所获得的压缩数据量最小的子块划分模式。

在一个实施例中,在上述实施例的基础上,上述压缩模块20具体用于:基于多个压缩单元之间的像素关系、各个子块之间的像素关系以及预设压缩数据格式,分别获取每个压缩单元的压缩数据。

在一个实施例中,在上述实施例的基础上,第一关联数据项还包括第一位置关系;若待压缩图像包括第一压缩单元和第二压缩单元,且第一压缩单元和第二压缩单元的像素相同;若第一压缩单元的第一压缩数据包括:第一关联数据项、第二关联数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、n个子块的最小像素值所在的像素位置以及n个子块的第二差值,则第二压缩单元的第二压缩数据为第一位置关系,第一位置关系用于表征第二压缩单元与第一压缩单元的位置关系。

在一个实施例中,在上述实施例的基础上,第二关联数据项还包括第二位置关系;若待压缩图像包括第一子块和第二子块,且第一子块和第二子块的像素相同;则第一子块所在压缩单元的第三压缩数据包括:第一关联数据项、第一子块的第二位置关系、其它子块的第二数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、其它子块的最小像素值所在的像素位置以及其它子块的第二差值;其中,第二位置关系用于表征第一子块与第二子块的位置关系。

在一个实施例中,在上述实施例的基础上,压缩单元的参考像素值用第一预设比特位表示;第一像素关联数据的比特位数值用第二预设比特位表示,第二预设比特位的位数等于第一最大差值的比特位数,第一最大差值为压缩单元中,各子块的最小像素值与压缩单元的最小像素值的最大差值;第二像素关联数据中每个第一数据项的比特位数值用第三预设比特位表示;第三预设比特位的位数等于第二最大差值的比特位数,第二最大差值为第一数据项对应的子块中,子块的其它像素值与子块的最小像素值的最大差值;各子块的参考像素值所在的像素位置用第四预设比特位表示。

在一个实施例中,在上述实施例的基础上,第一预设比特位为8,第四预设比特位为2。

在一个实施例中,在上述实施例的基础上,如图5所示,上述装置还包括:

打包模块30,用于将待压缩图像中各宏块对应的压缩数据进行打包,获得多个压缩包;

存储模块40,用于根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置;多个压缩包的存储空间大小为固定值。

在一个实施例中,在上述实施例的基础上,如图6所示,上述打包模块30包括:

第一打包单元301,用于将宏块的y像素块对应的压缩数据分为第一压缩包和第二压缩包;

获取单元302,用于从宏块的v像素块中,获取与宏块的u像素块中的第一像素块位置匹配的第二像素块;

第二打包单元302,用于将第一像素块的压缩数据与第二像素块的压缩数据进行打包,获得第三压缩包。

在一个实施例中,在上述实施例的基础上,第一压缩包对应的y像素块的大小为16*12,第二压缩包对应的y像素块的大小为16*4;第一像素块的大小为8*4。

在一个实施例中,在上述实施例的基础上,上述存储模块40具体用于:根据宏块在待压缩图像中的位置,确定第一压缩包的起始位置;在第一压缩包之后依次确定宏块的第二压缩包以及宏块第三压缩包的存储位置。

在一个实施例中,在上述实施例的基础上,上述存储模块40还用于:统计各个压缩包的数据长度,并存储压缩包的数据长度。

本申请实施例提供的图像压缩装置,可以实现上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

关于图像压缩装置的具体限定可以参见上文中对于图像压缩方法的限定,在此不再赘述。上述图像压缩装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种图像压缩方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

将待压缩图像划分为多个压缩单元;每个压缩单元包括至少两个子块;

基于预设压缩数据格式,分别获取每个压缩单元的压缩数据;

其中,压缩数据包括压缩单元的参考像素值、第一像素关联数据、第二像素关联数据、压缩单元的参考像素值所在的子块位置、各子块的参考像素值所在的像素位置;

第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,第二像素关联数据用于表征每个子块内的像素关系。

在其中一个实施例中,第一像素关联数据为各子块的参考像素值与压缩单元的参考像素值的第一差值。

在其中一个实施例中,若压缩单元的子块个数为n,则第二像素关联数据包括n个第一数据项;每个第一数据项对应的内容为压缩单元单元内的一个子块内的其它像素值与子块的参考像素值的第二差值。

在其中一个实施例中,压缩单元的参考像素值为压缩单元的最小像素值;子块的参考像素值为子块内的最小像素值。

在其中一个实施例中,压缩数据还包括:第一关联数据项和第二关联数据项;第一关联数据项包括第一差值的比特数;第二关联数据项包括n个第二数据项;第二数据项对应的内容为第二差值的比特数。

在其中一个实施例中,压缩数据还包括子块划分模式。

在其中一个实施例中,子块划分模式为根据不同的子块划分模式分别对压缩单元进行压缩后,所获得的压缩数据量最小的子块划分模式。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:基于多个压缩单元之间的像素关系、各个子块之间的像素关系以及预设压缩数据格式,分别获取每个压缩单元的压缩数据。

在其中一个实施例中,第一关联数据项还包括第一位置关系;若待压缩图像包括第一压缩单元和第二压缩单元,且第一压缩单元和第二压缩单元的像素相同;若第一压缩单元的第一压缩数据包括:第一关联数据项、第二关联数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、n个子块的最小像素值所在的像素位置以及n个子块的第二差值,则第二压缩单元的第二压缩数据为第一位置关系,第一位置关系用于表征第二压缩单元与第一压缩单元的位置关系。

在其中一个实施例中,第二关联数据项还包括第二位置关系;若待压缩图像包括第一子块和第二子块,且第一子块和第二子块的像素相同;则第一子块所在压缩单元的第三压缩数据包括:第一关联数据项、第一子块的第二位置关系、其它子块的第二数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、其它子块的最小像素值所在的像素位置以及其它子块的第二差值;其中,第二位置关系用于表征第一子块与第二子块的位置关系。

在其中一个实施例中,压缩单元的参考像素值用第一预设比特位表示;第一像素关联数据的比特位数值用第二预设比特位表示,第二预设比特位的位数等于第一最大差值的比特位数,第一最大差值为压缩单元中,各子块的最小像素值与压缩单元的最小像素值的最大差值;第二像素关联数据中每个第一数据项的比特位数值用第三预设比特位表示;第三预设比特位的位数等于第二最大差值的比特位数,第二最大差值为第一数据项对应的子块中,子块的其它像素值与子块的最小像素值的最大差值;各子块的参考像素值所在的像素位置用第四预设比特位表示。

在其中一个实施例中,第一预设比特位为8,第四预设比特位为2。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:将待压缩图像中各宏块对应的压缩数据进行打包,获得多个压缩包;根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置;多个压缩包的存储空间大小为固定值。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:将宏块的y像素块对应的压缩数据分为第一压缩包和第二压缩包;从宏块的v像素块中,获取与宏块的u像素块中的第一像素块位置匹配的第二像素块;将第一像素块的压缩数据与第二像素块的压缩数据进行打包,获得第三压缩包。

在其中一个实施例中,第一压缩包对应的y像素块的大小为16*12,第二压缩包对应的y像素块的大小为16*4;第一像素块的大小为8*4。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据宏块在待压缩图像中的位置,确定第一压缩包的起始位置,在第一压缩包之后依次确定宏块的第二压缩包以及宏块第三压缩包的存储位置。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:统计各个压缩包的数据长度,并存储压缩包的数据长度。

本实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

将待压缩图像划分为多个压缩单元;每个压缩单元包括至少两个子块;

基于预设压缩数据格式,分别获取每个压缩单元的压缩数据;

其中,压缩数据包括压缩单元的参考像素值、第一像素关联数据、第二像素关联数据、压缩单元的参考像素值所在的子块位置、各子块的参考像素值所在的像素位置;

第一像素关联数据用于表征压缩单元与压缩单元内各个子块的像素关系,第二像素关联数据用于表征每个子块内的像素关系。

在其中一个实施例中,第一像素关联数据为各子块的参考像素值与压缩单元的参考像素值的第一差值。

在其中一个实施例中,若压缩单元的子块个数为n,则第二像素关联数据包括n个第一数据项;每个第一数据项对应的内容为压缩单元单元内的一个子块内的其它像素值与子块的参考像素值的第二差值。

在其中一个实施例中,压缩单元的参考像素值为压缩单元的最小像素值;子块的参考像素值为子块内的最小像素值。

在其中一个实施例中,压缩数据还包括:第一关联数据项和第二关联数据项;第一关联数据项包括第一差值的比特数;第二关联数据项包括n个第二数据项;第二数据项对应的内容为第二差值的比特数。

在其中一个实施例中,压缩数据还包括子块划分模式。

在其中一个实施例中,子块划分模式为根据不同的子块划分模式分别对压缩单元进行压缩后,所获得的压缩数据量最小的子块划分模式。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:基于多个压缩单元之间的像素关系、各个子块之间的像素关系以及预设压缩数据格式,分别获取每个压缩单元的压缩数据。

在其中一个实施例中,第一关联数据项还包括第一位置关系;若待压缩图像包括第一压缩单元和第二压缩单元,且第一压缩单元和第二压缩单元的像素相同;若第一压缩单元的第一压缩数据包括:第一关联数据项、第二关联数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、n个子块的最小像素值所在的像素位置以及n个子块的第二差值,则第二压缩单元的第二压缩数据为第一位置关系,第一位置关系用于表征第二压缩单元与第一压缩单元的位置关系。

在其中一个实施例中,第二关联数据项还包括第二位置关系;若待压缩图像包括第一子块和第二子块,且第一子块和第二子块的像素相同;则第一子块所在压缩单元的第三压缩数据包括:第一关联数据项、第一子块的第二位置关系、其它子块的第二数据项、子块划分模式、压缩单元的最小像素值所在的子块位置、压缩单元的最小像素值、第一差值、其它子块的最小像素值所在的像素位置以及其它子块的第二差值;其中,第二位置关系用于表征第一子块与第二子块的位置关系。

在其中一个实施例中,压缩单元的参考像素值用第一预设比特位表示;第一像素关联数据的比特位数值用第二预设比特位表示,第二预设比特位的位数等于第一最大差值的比特位数,第一最大差值为压缩单元中,各子块的最小像素值与压缩单元的最小像素值的最大差值;第二像素关联数据中每个第一数据项的比特位数值用第三预设比特位表示;第三预设比特位的位数等于第二最大差值的比特位数,第二最大差值为第一数据项对应的子块中,子块的其它像素值与子块的最小像素值的最大差值;各子块的参考像素值所在的像素位置用第四预设比特位表示。

在其中一个实施例中,第一预设比特位为8,第四预设比特位为2。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将待压缩图像中各宏块对应的压缩数据进行打包,获得多个压缩包;根据宏块在待压缩图像中的位置,确定多个压缩包的存储位置;多个压缩包的存储空间大小为固定值。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将宏块的y像素块对应的压缩数据分为第一压缩包和第二压缩包;从宏块的v像素块中,获取与宏块的u像素块中的第一像素块位置匹配的第二像素块;将第一像素块的压缩数据与第二像素块的压缩数据进行打包,获得第三压缩包。

在其中一个实施例中,第一压缩包对应的y像素块的大小为16*12,第二压缩包对应的y像素块的大小为16*4;第一像素块的大小为8*4。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据宏块在待压缩图像中的位置,确定第一压缩包的起始位置,在第一压缩包之后依次确定宏块的第二压缩包以及宏块第三压缩包的存储位置。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:统计各个压缩包的数据长度,并存储压缩包的数据长度。

本实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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