掌桥专利:专业的专利平台
掌桥专利
首页

基于块压缩技术的自适应压缩方法、电子设备、存储介质

文献发布时间:2024-04-18 20:02:18


基于块压缩技术的自适应压缩方法、电子设备、存储介质

技术领域

本申请涉及图像处理技术领域,特别涉及一种基于块压缩技术的自适应压缩方法、电子设备、计算机可读存储介质。

背景技术

块压缩技术用于对图像进行无损压缩,应用于移动设备、虚拟现实和游戏等场景,可以在保证图像高质量的情况下,显著减少存储和传输成本。块压缩技术可以将一张图像分成若干个块进行压缩,压缩过程借助最小值树和比特计数树来实现。典型的块压缩技术包括AFBC(Arm Frame Buffer Compression,帧缓冲压缩)、ASTC(Adaptive ScalableTexture Compression)、Qualcomm的UBWC算法、BCn算法等。

然而,一般的块压缩技术对于数值动态范围较大的像素块,可能存在压缩效率低、压缩失效的问题。

发明内容

本申请实施例的目的在于提供一种基于块压缩技术的自适应压缩方法、电子设备、计算机可读存储介质,用于解决对数值动态范围较大的像素块出现压缩效率低、压缩失效的问题。

一方面,本申请提供了一种基于块压缩技术的自适应压缩方法,包括:

针对待压缩图像中的目标像素块,在预设多种像素块分组模式下,分别计算每一像素块分组模式对应的多个比特数;其中,所述比特数为各组像素的最大像素值与最小像素值之间差值所需的存储信息量;

根据每一像素块分组模式对应的多个比特数,通过代价函数,计算出每一像素块分组模式对应的函数值;

选择最小函数值对应的像素块分组模式,作为所述目标像素块在最小值树的目标分组模式,对所述目标像素块进行压缩。

在一实施例中,在所述针对待压缩图像中的目标像素块,在预设多种像素块分组模式下,分别计算每一像素块分组模式对应的多个比特数之前,所述方法还包括:

对所述待压缩图像中多个像素块组,分别检测所述像素块组是否为HDR像素块组;

若任一像素块组为HDR像素块组,确定所述HDR像素块组内的多个像素块为目标像素块。

在一实施例中,所述对所述待压缩图像中多个像素块组,分别检测所述像素块组是否为HDR像素块组,包括:

针对每一像素块组,遍历所述像素块组中各个像素块内像素值,判断是否存在至少一个像素块内像素值为单一数值;

若存在,确定所述像素块组为HDR像素块组。

在一实施例中,所述对所述待压缩图像中多个像素块组,分别检测所述像素块组是否为HDR像素块组,包括:

针对每一像素块组,遍历所述像素块中各个像素块内像素值,判断是否存在至少一个像素块内像素值,全部大于预设第一门限或全部小于预设第二门限;

若存在,确定所述像素块组为HDR像素块组。

在一实施例中,所述对所述待压缩图像中多个像素块组,分别检测所述像素块组是否为HDR像素块组,包括:

针对每一像素块组,获取指定软件模块传递的属性信息;

基于所述属性信息确定所述像素块组是否为HDR像素块组。

在一实施例中,所述方法还包括:

在压缩所述目标像素块的过程中,对所述目标像素块的比特计数树的各个层级节点进行固定比特数编码。

在一实施例中,所述根据每一像素块分组模式对应的多个比特数,通过代价函数,计算出每一像素块分组模式对应的函数值,包括:

将每一像素块分组模式对应的多个比特数进行累加,得到所述像素块分组模式对应的代价函数的函数值。

在一实施例中,所述像素块分组模式包括以十字形将像素块划分为四个分组、以像素块中每一行作为一个分组、以像素块中每一列作为一个分组、以三条平行虚线在多个倾斜角度对像素块划分出的多个分组中的至少两个的组合。

在一实施例中,所述方法还包括:

响应于解压指令,获取待解压图像中各个像素块的最小值树的目标分组模式;

基于各个像素块对应的目标分组模式,对各个像素块进行解压。

另一方面,本申请提供了一种基于块压缩技术的自适应压缩装置,包括:

第一计算模块,用于针对待压缩图像中的目标像素块,在预设多种像素块分组模式下,分别计算每一像素块分组模式对应的多个比特数;其中,所述比特数为各组像素的最大像素值与最小像素值之间差值所需的存储信息量;

第二计算模块,用于根据每一像素块分组模式对应的多个比特数,通过代价函数,计算出每一像素块分组模式对应的函数值;

压缩模块,用于选择最小函数值对应的像素块分组模式,作为所述目标像素块在最小值树的目标分组模式,对所述目标像素块进行压缩。

进一步的,本申请提供了一种电子设备,所述电子设备包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行上述基于块压缩技术的自适应压缩方法。

此外,本申请提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述基于块压缩技术的自适应压缩方法。

本申请方案,借助多种像素块分组模式和代价函数,确定待压缩图像中目标像素块在技术下存储开销最小的像素块分组模式,作为目标像素块的目标分组模式,该目标分组模式自适应目标像素块中像素值的变化方向,以此对目标像素块进行压缩,可以避免压缩效率低、压缩失效的问题。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。

图1为本申请一实施例提供的最小值树的示意图;

图2为本申请一实施例提供的比特计数树的示意图;

图3为本申请一实施例提供的压缩失效的示意图;

图4为本申请一实施例提供的电子设备的结构示意图;

图5为本申请一实施例提供的基于块压缩技术的自适应压缩方法的流程示意图;

图6为本申请一实施例提供的像素块分组模式的示意图;

图7为本申请一实施例提供的像素块分组模式的示意图;

图8为本申请一实施例提供的基于块压缩技术的自适应压缩装置的框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

参见图1,为本申请一实施例提供的最小值树的示意图,如图1所示,第一步,可以将图像的每一通道划分为多个4*4的像素块,该像素块包括16个像素。针对每一个4*4像素块,以十字形划分为4个2*2的子块,并可以确定每一子块内最小的像素值。图1右上角各个子块内灰色数值即为最小像素值。第二步,从4个子块内的最小像素值中,进一步选出4*4像素块内的最小像素值,进而以该最小像素值为根节点,构建最小值树。如图1所示,根节点为4*4像素块内的最小像素值14,根节点的子节点为4个子块内的最小像素值14、33、35和14,叶子节点为各个子块内的4个像素值。第三步,将每一叶子节点,分别减去该叶子节点的父节点,从而得到新的叶子节点;在处理所有叶子节点之后,将根节点的每一子节点,分别减去根节点,从而更新根节点的子节点,得到如图1最下方所示的最小值树。最小值树的根节点可称为第一层节点,第一层节点为最小值树对应的像素块内的最小像素值;根节点的子节点可称为第二层节点,第二层节点为像素块的各个子块内的最小像素值与像素块内最小像素值的差值;最小值树的叶子节点可称为第三层节点,第三层节点为像素块内各个像素的像素值,与像素块内的最小像素值、以及其所在子块内的最小像素值的差值。

这种情况下,原本4*4的像素块内各个像素值,可以通过最小值树来表示。由于最小值树中各个像素值相比像素块内像素值更小,相应的,通过二进制存储时可以占据更小的空间,有效地进行了无损压缩(相对应的解压过程可以得到无损图像)。

对于一个4*4的像素块而言,在确定其对应的最小值树后,还可以为其创建比特计数树,用于记录最小值树中各个节点内像素值的存储空间,后续可以借助比特计数树所记录的存储空间读取最小值树内的像素值。

参见图2,为本申请一实施例提供的比特计数树的示意图,如图2所示,对于最小值树的根节点,以默认大小的存储空间记录(比如:对于像素值在0到255之间的图像,根节点的像素值通过8比特的存储空间来记录),比特计数树记录最小值树的第二层节点和第三层节点所需的存储空间。对于最小值树的第二层节点,可以选择第二层节点中的最大数值,以该最大数值确定第二层节点中任一数值可满足的存储空间。以图2为例,最小值树的第二层节点的最大值为21,以二进制存储占用5个比特,则比特计数树的根节点为5。进一步的,对于任意一个第二层节点的4个子节点,可以从这4个第三层节点中选择最大数值,以该最大数值确定可满足的存储空间。以图2为例,第二层节点21的子节点46、32、1、0的最大数值为46,以二进制存储占用6个比特,则比特计数树中对应这4个子节点的节点为6。相应的,为最小值树的第二层节点0(第二个第二层节点)的4个子节点所确定的二进制存储空间为6个比特;为最小值树的第二层节点19的4个子节点所确定的二进制存储空间为6个比特;为最小值树的第二层节点0(第四个第二层节点)的4个子节点所确定的二进制存储空间为6个比特。

此外,为提高压缩效率,块压缩技术中使用了两种特殊模式来表示4*4像素块。第一种情况,如果整个4*4像素块内所有像素值为默认值,则只需要以比特计数树的根节点设置特殊值来表示这种情况。比如,4*4像素块的所有像素值均为255,则该像素块对应的比特计数树的根节点设为-2。第二种情况,如果整个4*4像素块内所有像素值为同一取值(但不是默认值),则只需要以比特计数树的根节点设置特殊值(比如,根节点设为-1),且最小值树的第一层节点记录该取值,即可表示这种情况。

为了进一步压缩比特计数树所占存储空间,可以在比特计数树的根节点和叶子节点数值相差较小时,使用差分编码方式进行存储。这里,差分编码指的是在根节点所需占用的比特数基础上,使用差分的方式确定叶子节点所需占用的比特数。以图2为例,经过差分后根节点仍为5,叶子节点为1、1、1和1,进一步的,以3个比特存储比特计数树的根节点数值,以1个比特存储差分后的叶子节点数值。

然而,对于数值动态范围较大的像素块,基于一般的块压缩技术进行压缩,可能导致压缩效率低、压缩失效的问题。

参见图3,为本申请一实施例提供的压缩失效的示意图,如图3所示,图像中的数字为多个像素块(比如16*16的像素区域包括16个4*4的像素块)所需占用的比特数的平均数。图3中灯所在的位置同一像素块的像素值相同,可以通过现有的块压缩技术进行压缩,从而占用较少的比特数。然而,在灯周围区域,像素块内像素值范围较大,此时,以现有块压缩技术无法有效进行压缩,压缩后仍占有较多的比特数。这里,压缩失效的原因包括对比特计数树以差分编码方式进行存储时,额外增加了存储空间。

如图4所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图4中以一个处理器11为例。处理器11和存储器12通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备1可以是主机、手机、平板电脑、服务器、服务器集群或云计算中心等,用于执行基于块压缩技术的自适应压缩方法。下文以电子设备为执行主体描述方案。

存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。

本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器11执行以完成本申请提供的基于块压缩技术的自适应压缩方法。

参见图5,为本申请一实施例提供的基于块压缩技术的自适应压缩方法的流程示意图,如图5所示,该方法可以包括以下步骤510-步骤530。

步骤510:针对待压缩图像中的目标像素块,在预设多种像素块分组模式下,分别计算每一像素块分组模式对应的多个比特数;其中,比特数为各组像素的最大像素值与最小像素值之间差值所需的存储信息量。

其中,像素块分组模式用于表征对4*4像素块划分为4个子块的分组方式。块压缩技术默认通过十字形将左上角4个像素、左下角4个像素、右上角4个像素、右下角4个像素划分为子块。由于像素块内像素值变化方向不定,以默认的像素块分组模式进行分组后,可能导致压缩失效。为解决这一问题,本申请方案提供了多种像素块分组模式,每一像素分组模式可以对应一种像素块内像素值变化方向。

参见图6,为本申请一实施例提供的像素块分组模式的示意图,图6示出三种像素块分组模式,第一种为现有的像素块分组模式,以十字形将像素块划分为四个分组;第二种像素块分组模式以像素块中每一行作为一个分组,以每一列4个像素为一个子块;第三种像素块分组模式以像素块中每一列作为一个分组,以每一行4个像素为一个子块。图6中同一子块的像素以相同的图案来表示。

参见图7,为本申请一实施例提供的像素块分组模式的示意图,图7示出多种像素块分组模式,以三条平行虚线在多个倾斜角度对像素块划分出的多个分组。以三条平行虚线,将像素块分为4个子块。基于平行虚线的倾斜角度的变化,可以获得多种分组模式。图7中同一子块的像素以相同的图案来表示。

另外,可能通过排列组合的方式,生成多种可行的分组模式。

根据应用需求,本申请可以配置多种像素块分组模式。比如:如果图像的像素值变化情况沿横向或纵向进行,则可以配置图6示出的三种像素块分组模式。或者,如果图像的像素值变化情况较为复杂,可以配置所有可行的像素块分组模式。

待压缩图像可以是单通道图像(比如:灰度图),也可以是多通道图像(比如:RGB图、YUV图等)。如果待压缩图像为单通道图像,可以直接对待压缩图像进行像素块划分,得到多个4*4的像素块。如果待压缩图像为多通道图像,可以分别对每一通道图像进行划分,从每一通道图像得到多个4*4的像素块。待压缩图像可以是深度图、视差图、点云图等任意可以等效为图像的数据。

电子设备可以从待压缩图像划分出的像素块中,选择若干像素块分别作为目标像素块,执行本申请自适应压缩方法。示例性的,电子设备可以将待压缩图像划分出的所有像素块,分别作为目标像素块。

在每一像素块分组模式下,电子设备可以分别计算各组像素的最大像素值和最小像素值的差值,进而依据该差值确定对应的存储信息量(比特数)。

示例性的,对于任意一组像素,基于如下公式(1)计算对应的比特数:

b=ceil(log

其中,max表示一组像素中的最大像素值;min表示一组像素中的最小像素值;b表示该组像素对应的比特数。

对于一个目标像素块,在任意一种像素块分组模式下,可以划分出4个子块,得到4组像素,相应的,可以计算出4个比特数。

步骤520:根据每一像素块分组模式对应的多个比特数,通过代价函数,计算出每一像素块分组模式对应的函数值。

对于任一像素块分组模式,在获得目标像素块对应的4个比特数之后,可以通过代价函数,计算出对应的函数值。代价函数的函数值与目标像素块的存储开销呈正相关关系。换而言之,函数值越大,说明像素块分组模型下目标像素块的存储占用空间越大。代价函数的计算方式可根据需要进行配置。

在一实施例中,电子设备可以将每一像素块分组模式对应的多个比特数进行累加,从而将累加结果作为该像素块分组模式对应的代价函数的函数值。

示例性的,代价函数通过如下公式(2)来表示:

c=b

其中,c为函数值;b

步骤530:选择最小函数值对应的像素块分组模式,作为目标像素块在最小值树的目标分组模式,对目标像素块进行压缩。

为每一像素块分组模式计算出代价函数的函数值之后,可以从多个函数值中确定最小函数值,相比其它像素块分组模式,最小函数值对应的像素块分组模式下,像素块内各个分组内数值动态范围较小。此时,电子设备可以确定该最小函数值对应的像素块分组模式,就是对目标像素块进行压缩时压缩效率最大的像素块分组模式。电子设备可以将该最小函数值对应的像素块分组模式,作为目标分组模式在最小值树的目标分组模式,为目标像素块生成最小值树,从而对目标像素块进行压缩。

通过上述措施,每一种像素块分组模式对应一种像素块内像素值的变化方向,借助多种像素块分组模式和代价函数,确定待压缩图像中目标像素块在技术下存储开销最小的像素块分组模式,作为目标像素块的目标分组模式,该目标分组模式自适应目标像素块中像素值的变化方向,以此对目标像素块进行压缩,可以避免压缩效率低、压缩失效的问题。

在一实施例中,执行步骤510之前,可以从待压缩图像中划分出的多个像素块中,选择部分像素块作为目标像素块。

电子设备可以对待压缩图像中多个像素块组,分别检测像素块组是否为HDR(HighDynamic Range)像素块组。其中,HDR像素块组为像素值的动态范围较大的像素块组。像素块组包括多个像素块,像素块组的尺寸可以根据需要进行配置。示例性的,由于像素块的尺寸为4*4,像素块组的尺寸可以是8*8、12*12、16*16、20*20、24*24等。

一方面,如果任一像素块组不是HDR像素块组,电子设备可以通过通用的技术对该像素块组内的像素块进行压缩。

另一方面,如果任一像素块组为HDR像素块组,电子设备可以确定HDR像素块组内的多个像素块为目标像素块。

通过上述措施,电子设备可以选择HDR像素块组内的像素块作为目标像素块,而对其它像素块以通用的技术进行压缩,可以对待压缩图像中数值动态范围较大的像素块进行针对性的压缩处理,从而减少了压缩过程中的计算量,提高了压缩效率。

在一实施例中,电子设备在检测带压缩图像中像素块组是否为HDR像素块组时,针对每一像素块组,可以遍历像素块组中各个像素块内像素值,并判断是否存在至少一个像素块内像素值为单一数值。比如:在单通道8-bit图像中,像素块内16个像素的像素值均为0、255或其它数值。

一方面,存在至少一个像素块内像素值为单一数值,这种情况下,可以确定该像素块组为HDR像素块组。另一方面,不存在至少一个像素块内像素值为单一数值,这种情况下,可以确定该像素块组不是HDR像素块组。

在一实施例中,电子设备在检测带压缩图像中像素块组是否为HDR像素块组时,针对每一像素块组,可以遍历像素块组中各个像素块内像素值,并判断是否存在至少一个像素块内像素值,全部大于预设第一门限或全部小于预设第二门限。这里,第一门限和第二门限可以根据经验进行配置,第一门限接近像素值上限,第二门限接近像素值下限。示例性的,在单通道8-bit图像中,第一门限可以为245,第二门限可以为10。

一方面,存在至少一个像素块内像素值,全部大于第一门限或全部小于第二门限,这种情况下,可以确定该像素块为HDR像素块组。另一方面,不存在这样的像素块,可以确定该像素块组不是HDR像素块组。

在一实施例中,电子设备在检测带压缩图像中像素块组是否为HDR像素块组时,针对每一像素块组,可以获取指定软件模块传递的属性信息。该属性信息可以表征该像素块组是否为HDR像素块组。这里,指定软件模块可以是压缩图像的功能模块上游的图像处理模块,示例性的,指定软件模块可以是ISP(Image Signal Processing,图像信号处理)模块、AEC(Automatic Exposure Control,自动曝光控制)模块、特征提取模块、光流提取模块等任意一种或多种的组合。

电子设备可以基于像素块组的属性信息,确定该像素块组是否为HDR像素块组。

在一实施例中,在压缩目标像素块的过程中,可以对目标像素块的比特计数树的各个层级节点进行固定比特数编码。这种情况下,为比特计数树的根节点和叶子节点分别确定所需占用的比特数,进而以根节点所需占用的比特数存储根节点数值,以叶子节点所需占用的比特数存储各个叶子节点数值。

对于数值动态范围较大的图像块,对比特计数树的各个层级节点进行固定比特数编码,可以避免差分编码造成的压缩失效的问题。

在一实施例中,在对图像进行压缩之后,后续应用过程中可以对已压缩的各个像素块进行解压。电子设备可以响应于解压指令,获取待解压图像中各个像素块对应的比特计数树,进而从比特计数树中读取到像素块对应的最小值树的各个节点的数值。此外,在此前压缩过程中,记录了各个像素块的目标分组模式。在解压阶段,电子设备可以获取待解压图像中各个像素块的最小值树的目标分组模式。电子设备可以基于各个像素块对应的目标分组模式,对各个像素块进行解压。

通过该措施,在以本申请方案对图像进行压缩后,可以自适应对已压缩的图像进行解压处理。

图8是本发明一实施例的一种基于块压缩技术的自适应压缩装置的框图,如图8所示,该装置可以包括:

第一计算模块810,用于针对待压缩图像中的目标像素块,在预设多种像素块分组模式下,分别计算每一像素块分组模式对应的多个比特数;其中,所述比特数为各组像素的最大像素值与最小像素值之间差值所需的存储信息量;

第二计算模块820,用于根据每一像素块分组模式对应的多个比特数,通过代价函数,计算出每一像素块分组模式对应的函数值;

压缩模块830,用于选择最小函数值对应的像素块分组模式,作为所述目标像素块在最小值树的目标分组模式,对所述目标像素块进行压缩。

上述装置中各个模块的功能和作用的实现过程具体详见上述基于块压缩技术的自适应压缩方法中对应步骤的实现过程,在此不再赘述。

在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

技术分类

06120116581195