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

一种图片编码方法、装置、设备及计算机可读存储介质

文献发布时间:2023-06-19 18:37:28


一种图片编码方法、装置、设备及计算机可读存储介质

技术领域

本申请涉及编码技术领域,特别涉及一种图片编码方法;还涉及一种图片编码装置、设备以及计算机可读存储介质。

背景技术

PNG(Portable Network Graphics,便携式网络图形)是一种采用无损的LZ77算法进行数据压缩的位图格式,应用广泛。无损压缩是指压缩后的文件进行解压得到的文件与压缩前的文件完全一致。采用无损压缩的PNG图片的尺寸较大,需要占用的存储资源就越多。图片的尺寸较大,打开与保存的速度就会较为缓慢,编码或解码需要耗费较多的CPU资源或硬件资源。如果想要较快的处理尺寸较大的PNG图片就需要较优的CPU性能或硬件资源。并且在实际应用中,图片中的一些不影响图片质量的数据采用无损压缩会造成时间与空间上的浪费。

有鉴于此,如何在保障图片质量的同时,节省资源开销,节省成本已成为本领域技术人员亟待解决的技术问题。

发明内容

本申请的目的是提供一种图片编码方法,能够在保障图片质量的同时,节省资源开销,节省成本。本申请的另一个目的是提供一种图片编码装置、设备以及计算机可读存储介质,均具有上述技术效果。

为解决上述技术问题,本申请提供了一种图片编码方法,包括:

获取待压缩图片,将所述待压缩图片划分为多个数据块,并确定各所述数据块的类别;

根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩,得到压缩后的数据;不同的所述类别对应的压缩方式不全为无损压缩;

整合所述压缩后的数据,得到压缩图片。

可选的,所述确定各所述数据块的类别包括:

根据各所述数据块的内容,确定各所述数据块的类别,所述数据块的类别包括不重要数据块、可重复利用数据块与重要数据块。

可选的,所述根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩包括:

若所述数据块为不重要数据块,则采用有损压缩方式对所述数据块进行压缩;

若所述数据块为可重复利用数据块,则将无损压缩算法的滑动窗口的大小设置为所述可重复利用数据的大小,对所述可重复利用数据块进行无损压缩,并将与所述可重复利用数据块相同的数据块使用索引值表示;

若所述数据块为重要数据块,则根据预设压缩策略对所述数据块进行压缩。

可选的,所述根据预设压缩策略对所述数据块进行压缩包括:

将所述重要数据块划分为预设大小,并确定所述预设大小的数据块之间的相似度;

根据所述预设大小的数据块之间的相似度,采取相应的压缩方式对所述预设大小的数据块进行压缩。

可选的,所述确定所述预设大小的数据块之间的相似度包括:

计算所述预设大小的数据块的预设特征值;

根据所述预设特征值,计算所述预设大小的数据块之间的海明距离;

计算所述海明距离与所述预设大小的比值;

根据所述比值,确定所述预设大小的数据块之间的相似度。

可选的,所述根据所述预设大小的数据块之间的相似度,采取相应的压缩方式对所述预设大小的数据块进行压缩包括:

若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度大于第一预设阈值,则沿用上一个所述预设大小的数据块的压缩结果;其中,首个所述预设大小的数据块的压缩方式为无损压缩;

若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度大于第二预设阈值且小于所述第一预设阈值,则采用有损压缩方式对当前的所述预设大小的数据块进行压缩;

若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度小于所述第二预设阈值,则采用无损压缩方式对当前的所述预设大小的数据块进行压缩。

可选的,所述整合所述压缩后的数据,得到压缩图片包括:

整合所述压缩后的数据与图像数据块,得到所述压缩图片;其中,所述图像数据块中记录有所述数据块的类别、压缩方式、相似度以及压缩数据的长度。

为解决上述技术问题,本申请还提供了一种图片编码装置,包括:

类别确定模块,用于获取待压缩图片,将所述待压缩图片划分为多个数据块,并确定各所述数据块的类别;

数据压缩模块,用于根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩,得到压缩后的数据;不同的所述类别对应的压缩方式不全为无损压缩;

数据整合模块,用于整合所述压缩后的数据,得到压缩图片。

为解决上述技术问题,本申请还提供了一种图片编码设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上任一项所述的图片编码方法的步骤。

为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的图片编码方法的步骤。

本申请所提供的图片编码方法,包括:获取待压缩图片,将所述待压缩图片划分为多个数据块,并确定各所述数据块的类别;根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩,得到压缩后的数据;不同的所述类别对应的压缩方式不全为无损压缩;整合所述压缩后的数据,得到压缩图片。

可见,本申请所提供的图片编码方法,将待压缩图片划分为多个数据块,并对各数据块进行分类,对于不同类别的数据块采用相应的压缩方式进行压缩,并且不同的类别对应的压缩方式不全为无损压缩,即对数据块不都采取无损压缩的方式进行压缩,如此可以在保证图片质量的同时,降低存储空间,提高编解码效率。

本申请所提供的图片编码装置、设备以及计算机可读存储介质均具有上述技术效果。

附图说明

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

图1为本申请实施例所提供的一种图片编码方法的流程示意图;

图2为本申请实施例所提供的一种数据块分类示意图;

图3为本申请实施例所提供的一种数据表示示意图;

图4为本申请实施例所提供的一种编码输出结果示意图;

图5为本申请实施例所提供的一种图片编码装置的示意图;

图6为本申请实施例所提供的一种图片编码设备的示意图。

具体实施方式

本申请的核心是提供一种图片编码方法,能够在保障图片质量的同时,节省资源开销,节省成本。本申请的另一个核心是提供一种图片编码装置、设备以及计算机可读存储介质,均具有上述技术效果。

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

请参考图1,图1为本申请实施例所提供的一种图片编码方法的流程示意图,参考图1所示,该方法包括:

S101:获取待压缩图片,将所述待压缩图片划分为多个数据块,并确定各所述数据块的类别;

获取到待压缩的数据后,首先可将待压缩的数据划分为不同大小的数据块,并确定各数据块的类别,进而对不同类别的数据块采取相应的压缩方式进行压缩。数据块的类别可以反映数据块对图片显示的重要程度。

其中,在一些实施例中,所述确定各所述数据块的类别包括:

根据各所述数据块的内容,确定各所述数据块的类别,所述数据块的类别包括不重要数据块、可重复利用数据块与重要数据块。

本实施例中,数据块的类别包括三种,即不重要数据块、可重复利用数据块以及重要数据块。不重要数据块是指不影响图片显示的数据块或者人眼不敏感的数据块。可重复利用数据块是指连续的相同的数据块。重要数据块是指图片中的关键数据块,图片显示中人眼比较关注的数据块。

例如,如果待压缩的数据中包含背景与其它内容,则认为背景是不重要数据块,其它内容可认为是重要数据。如果待压缩数据中存在大量的ARGB一致的数据,则认为其为可重复利用数据块。需要说明的是,整个图片划分出的数据块的类别不一定包含所有的类别,可能只包含其中的一种,可能包含其中的两种,也可能三种都包含。例如,参考图2所示的包含三种类别的数据块划分情况。

S102:根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩,得到压缩后的数据;不同的所述类别对应的压缩方式不全为无损压缩;

本实施例预先设定了数据块的类别与压缩方式的对应关系,在对数据块分类的基础上,即可采用数据块所属类别相应的压缩方式对数据块进行压缩。其中,不同的类别对应的压缩方式不全为无损压缩。

在一些实施例中,所述根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩包括:

若所述数据块为不重要数据块,则采用有损压缩方式对所述数据块进行压缩;

若所述数据块为可重复利用数据块,则将无损压缩算法的滑动窗口的大小设置为所述可重复利用数据的大小,对所述可重复利用数据块进行无损压缩,并将与所述可重复利用数据块相同的数据块使用索引值表示;

若所述数据块为重要数据块,则根据预设压缩策略对所述数据块进行压缩。

针对数据块的类别包括不重要数据块、可重复利用数据块以及重要数据块三种的情况,本实施例对每种类别设置了不同的压缩方式。如果数据块为不重要数据块,则采用有损压缩方式对所述数据块进行压缩处理。例如,对数据进行抽样后,以一个像素代表多个像素或者以多个像素的平均值代表多个像素。

如果数据块为可重复利用数据块,则采用无损压缩方式对该数据块进行压缩处理。其中,无损压缩算法中滑动窗口的大小等于该数据块的大小。后续的各个与此数据块相同的数据块直接使用索引值进行表示。

例如,有m个像素点,后续的(N-1)*m个像素点均与该m个像素点相同。在进行各通道压缩的过程中首先调整LZ77算法中滑动窗口的大小为m,后续的(N-1)*m个像素点直接使用索引值(1,m)表示,表示与第一行相同,第一行有m个像素,在未压缩的数据块中,其存储格式如图3所示。可重复利用数据块使用STATUS CHUNK更新保存的结果如表1所示。

表1

如果数据块为重要数据块,则根据预先设定的压缩策略即上文所述预设压缩策略对重要数据块进行压缩。

其中,在一些实施例中,根据预设压缩策略对所述数据块进行压缩包括:

将所述重要数据块划分为预设大小,并确定所述预设大小的数据块之间的相似度;

根据所述预设大小的数据块之间的相似度,采取相应的压缩方式对所述预设大小的数据块进行压缩。

本实施例中压缩策略是对重要数据块进一步进行划分,并在此基础上确定所划分的预设大小的数据块之间相似度,进而针对不同相似度的预设大小的数据块,采取相应的压缩方式进行压缩处理。

通过对重要数据块进行划分以及根据数据块之间的相似度进行压缩处理,可以进一步的降低存储空间。

可以明白的是,除了上述压缩策略外,还可以采取其他压缩策略。例如,为了加快重要数据块的压缩速率,可对重要数据块整体直接采取无损压缩的方式进行压缩。

在一些实施例中,所述确定所述预设大小的数据块之间的相似度包括:

计算所述预设大小的数据块的预设特征值;

根据所述预设特征值,计算所述预设大小的数据块之间的海明距离;

计算所述海明距离与所述预设大小的比值;

根据所述比值,确定所述预设大小的数据块之间的相似度。

预设特征值可以为数据块的像素差值,也可以为数据块的哈希值。

当预设特征值为数据块的哈希值时,可将重要数据块进一步划分成m*n(n行m列)大小的数据块,在划分得到的m*n大小的数据块中计算相邻行像素的差值。以下以单个通道为例进行说明:

当前行像素值减去前一行像素值,从第2到第n行共(n-1)行,计算n-1次,最终得到一个m*n的差分矩阵N,求取该差分矩阵的平均值a。

从左到右、从上到下遍历差分矩阵N中的每一个像素,如果差分矩阵中第i行j列元素n>=a,则将该位置像素值标记为1;反之,标记为0,最终得到当前数据块的hash值,长度为m*n。

同理,可得到下一个数据块的hash值,对比两个数据块的hash值,计算两个m*n大小的数据块之间的海明距离x,并计算x/(m*n)。

例如,数据块1的hash值为:1001 1100 1111 1000 1011 0010 1001 0100;

数据块2的hash值为:1001 1100 1111 1000 1011 0110 1001 0000;

则,数据块1与数据块2的海明距离为2。

x/(m*n)=2/32=6.25%。

当预设特征值为数据块的像素差值时,可将重要数据块进一步划分成m*n大小的数据块,在划分得到的m*n大小的数据块中计算相邻像素的差值,可以得到(m-1)*n个差值。其中,如果前一个像素大于后一个像素,则记为1,否则记为0。

计算m*n大小的数据块之间的海明距离x,并计算x/(m*n)。

例如,数据块1的相邻像素的差值为:1001 1100 1111 1000 1011 0010 10010100;

数据块2的相邻像素的差值为:1001 1100 1111 1000 1011 0110 1001 0000;

则,数据块1与数据块2的海明距离为2。

x/(m*n)=2/32=6.25%。

预先可设定能够反映数据块之间的相似度的区间,计算得到比值后,根据该比值,确定所述预设大小的数据块之间的相似度。

在具体的实施例中,根据比值确定所述预设大小的数据块之间的相似度可以为用1减去比值得到相似度,即相似度=1-比值。

如上例中比值等于6.25%,则相似度为1减去6.25%等于93.75%,表明数据块1与数据块2一致,数据块2可由数据块1直接表示,即比值越小,则相似度越大,表明数据块数据一致性越高。

在一些实施例中,所述根据所述预设大小的数据块之间的相似度,采取相应的压缩方式对所述预设大小的数据块进行压缩包括:

若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度大于第一预设阈值,则沿用上一个所述预设大小的数据块的压缩结果;其中,首个所述预设大小的数据块的压缩方式为无损压缩;

若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度大于第二预设阈值且小于所述第一预设阈值,则采用有损压缩方式对当前的所述预设大小的数据块进行压缩;

若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度小于所述第二预设阈值,则采用无损压缩方式对当前的所述预设大小的数据块进行压缩。

例如,第一预设阈值可以设置为90%,第二预设阈值可以设置为50%。

如果当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度大于90%,即0<=x/(m*n)<=10%,当前的预设大小的数据块与上一个预设大小的数据块高度相似,二者基本为重复数据,此时可对当前的预设大小的数据块不进行压缩处理,而是沿用上一个预设大小的数据块的压缩结果。

如果当前的预设大小的数据块与上一个预设大小的数据块的相似度小于90%而大于50%,即10%

如果当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度小于50%,即50%

S103:整合所述压缩后的数据,得到压缩图片。

本步骤旨在完成压缩后,整合所述压缩后的数据,得到最终的压缩图片。

其中,所述整合所述压缩后的数据,得到压缩图片包括:

整合所述压缩后的数据与图像数据块,得到所述压缩图片;其中,所述图像数据块中记录有所述数据块的类别、压缩方式、相似度以及压缩数据的长度。

具体而言,参考图4所示,可自定义状态标记块(图4中所示STATUS CHUNK),用于记录数据块的类别信息、压缩方式信息以及压缩数据的长度。数据压缩完成后,插入图像数据块(图4中所示的IDAT CHUNK)。一个图像数据块可以包含0个、1个或者两个及两个以上的状态标记块。图片的IHDR即文件头数据添加混合编码的标记即采取的编码方式,图片的IEND即图片结束数据保持不变。状态标记块的组成可参考表2所示:

表2

压缩图片的解压过程与压缩过程相反,基于压缩过程进行反推即可,在此不再赘述。

综上所述,本申请所提供的图片编码方法,将待压缩图片划分为多个数据块,并对各数据块进行分类,对于不同类别的数据块采用相应的压缩方式进行压缩,并且不同的类别对应的压缩方式不全为无损压缩,即对数据块不都采取无损压缩的方式进行压缩,如此可以在保证图片质量的同时,降低存储空间,提高编解码效率。

本申请还提供了一种图片编码装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图5,图5为本申请实施例所提供的一种图片编码装置的示意图,结合图5所示,该装置包括:

类别确定模块10,用于获取待压缩图片,将所述待压缩图片划分为多个数据块,并确定各所述数据块的类别;

数据压缩模块20,用于根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩,得到压缩后的数据;不同的所述类别对应的压缩方式不全为无损压缩;

数据整合模块30,用于整合所述压缩后的数据,得到压缩图片。

在上述实施例的基础上,作为一种具体的实施方式,类别确定模块10具体用于:

根据各所述数据块的内容,确定各所述数据块的类别,所述数据块的类别包括不重要数据块、可重复利用数据块与重要数据块。

在上述实施例的基础上,作为一种具体的实施方式,数据压缩模块20包括:

第一压缩单元,用于若所述数据块为不重要数据块,则采用有损压缩方式对所述数据块进行压缩;

第二压缩单元,用于若所述数据块为可重复利用数据块,则将无损压缩算法的滑动窗口的大小设置为所述可重复利用数据的大小,对所述可重复利用数据块进行无损压缩,并将与所述可重复利用数据块相同的数据块使用索引值表示;

第三压缩单元,用于若所述数据块为重要数据块,则根据预设压缩策略对所述数据块进行压缩。

在上述实施例的基础上,作为一种具体的实施方式,第三压缩单元包括:

相似度确定单元,用于将所述重要数据块划分为预设大小,并确定所述预设大小的数据块之间的相似度;

数据压缩单元,用于根据所述预设大小的数据块之间的相似度,采取相应的压缩方式对所述预设大小的数据块进行压缩。

在上述实施例的基础上,作为一种具体的实施方式,相似度确定单元包括:

特征值计算子单元,用于计算所述预设大小的数据块的预设特征值;

海明距离计算子单元,用于根据所述预设特征值,计算所述预设大小的数据块之间的海明距离;

比值计算子单元,用于计算所述海明距离与所述预设大小的比值;

相似度确定子单元,用于根据所述比值,确定所述预设大小的数据块之间的相似度。

在上述实施例的基础上,作为一种具体的实施方式,数据压缩单元包括:

第一处理子单元,用于若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度大于第一预设阈值,则沿用上一个所述预设大小的数据块的压缩结果;其中,首个所述预设大小的数据块的压缩方式为无损压缩;

第二处理子单元,用于若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度大于第二预设阈值且小于所述第一预设阈值,则采用有损压缩方式对当前的所述预设大小的数据块进行压缩;

第三处理子单元,用于若当前的所述预设大小的数据块与上一个所述预设大小的数据块的相似度小于所述第二预设阈值,则采用无损压缩方式对当前的所述预设大小的数据块进行压缩。

在上述实施例的基础上,作为一种具体的实施方式,数据整合模块30具体用于:

整合所述压缩后的数据与图像数据块,得到所述压缩图片;其中,所述图像数据块中记录有所述数据块的类别、压缩方式、相似度以及压缩数据的长度。

本申请所提供的图片编码装置,将待压缩图片划分为多个数据块,并对各数据块进行分类,对于不同类别的数据块采用相应的压缩方式进行压缩,并且不同的类别对应的压缩方式不全为无损压缩,即对数据块不都采取无损压缩的方式进行压缩,如此可以在保证图片质量的同时,降低存储空间,提高编解码效率。

本申请还提供了一种图片编码设备,参考图6所示,该设备包括存储器1和处理器2。

存储器1,用于存储计算机程序;

处理器2,用于执行计算机程序实现如下的步骤:

获取待压缩图片,将所述待压缩图片划分为多个数据块,并确定各所述数据块的类别;根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩,得到压缩后的数据;不同的所述类别对应的压缩方式不全为无损压缩;整合所述压缩后的数据,得到压缩图片。

对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:

获取待压缩图片,将所述待压缩图片划分为多个数据块,并确定各所述数据块的类别;根据各所述数据块的类别,采用所述类别对应的压缩方式对各所述数据块进行压缩,得到压缩后的数据;不同的所述类别对应的压缩方式不全为无损压缩;整合所述压缩后的数据,得到压缩图片。

该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的图片编码方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。

技术分类

06120115631437