一种图像压缩和解压缩方法转让专利

申请号 : CN201810109934.7

文献号 : CN108200433B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张辉

申请人 : 重庆乐潮信息技术有限公司

摘要 :

本发明公开了一种图像压缩和解压缩方法,包括将多幅图像分为多个子区域以生产缩小图像,以及根据子区域与其近邻子区域的像素分布情况构建解压缩表来用于之后的图像还原。按照本发明的实施例构建的解压缩表将有助于进一步减小批量处理多幅内容相似图片时解压缩数据所需的存储空间和处理时间,并且降低图像压缩造成的质量降质对用户的视觉影响。

权利要求 :

1.一种图像压缩和解压缩方法,其特征在于包括:

将多幅图像在空间上以相同方式划分为多个大小相同的正方形子区域,每个子区域包括分别位于笛卡尔坐标系中第一、第二、第三和第四象限中的四个像素;

将每幅图像的每个子区域第一象限中的像素值作为缩小图像中对应该子区域的像素值以得到将图像尺寸缩小到四分之一的缩小图像;

确定每幅图像的每个子区域,分别确定四个像素值相等的第一类型子区域、包含两种像素值且最近邻象限中也包括与该子区域第一象限像素值之外的另一像素值相同的像素值的第二类型子区域、包含两种像素值且最近邻象限中不包括与该子区域第一象限像素值之外的另一像素值相同的像素值的第三类型子区域以及包含三种以上像素值的第四类型子区域,所述最近邻象限是所述第二、第三和第四象限之中每个的相邻子区域中的相邻象限;以及对于每幅图像创建解压缩表,所述解压缩表包含对应于每个子区域的所述第二、第三、第四象限的像素的解压缩数据以及所述第一类型、第二类型、第三类型和第四类型子区域的数量,所述解压缩数据对于一种类型的子区域仅包括像素值与具有相同像素值的最近邻象限位置两者中的一个;以及在所述解压缩表中存储的所述第一类型和第二类型子区域的数量之和大于所述第三类型和第四类型子区域的数量之和时,对所述缩小图像进行无损压缩,以及在所述解压缩表中存储的所述第一类型和第二类型子区域的数量之和小于或等于所述第三类型和第四类型子区域的数量之和时,对所述缩小图像进行有损压缩。

2.权利要求1所述的方法,其特征在于还包括将每幅所述缩小图像与所对应的所述解压缩表相关联进行存储。

3.权利要求1所述的方法,其特征在于还包括将每幅所述缩小图像与所对应的所述解压缩表的偏移量相关联进行存储,所述偏移量为一幅缩小图像所对应解压缩表的解压缩数据与上一幅缩小图像所对应解压缩表的解压缩数据的差值。

4.权利要求1所述的方法,其特征在于所述第二类型子区域的所述解压缩数据包括在在该子区域内的像素分布布局以及在最近邻象限中具有相同像素值时具有该相同像素值的该最近邻象限的位置。

5.权利要求4所述的方法,其特征在于所述第三类型子区域和所述第四类型子区域的所述解压缩数据包括所述第二、第三和第四象限的像素值。

6.权利要求5所述的方法,其特征在于还包括在所述多幅图像的解压缩表中所有第一类型和第二类型子区域的数量之和大于所有第三类型和第四类型子区域的数量之和时,对所述多幅图像进行无损压缩。

7.权利要求6所述的方法,其特征在于还包括在所述多幅图像的解压缩表中所有第一类型和第二类型子区域的数量之和小于或等于所有第三类型和第四类型子区域的数量之和时,对所述多幅图像进行有损压缩。

8.权利要求1所述的方法,其特征在于所述像素值为RGB色彩通道值和透明通道值之中的任一种。

说明书 :

一种图像压缩和解压缩方法

技术领域

[0001] 本发明关于图像处理技术的领域,更确切地关于一种图像压缩和解压缩方法。

背景技术

[0002] 在图像的处理和存储时,经常需要对图片的大小进行压缩,以便于节省处理资源和存储空间。例如原图片可能像素数过多,而实际使用时将其缩小也不会在视觉上产生影响时,可以将图片缩小为原来的四分之一,并随后再使用图片压缩技术来进一步减小图像大小,这样可以将处理时间和存储空间都降为原先的四分之一左右。在大批量处理图像的应用场景中,类似的操作是非常频繁且必要的。用户经常需要将相机所拍摄的大量高分辨率图片上传到手机,并通过手机上的APP进行图像修改,由于手机处理器性能和存储空间相对于PC端差距较大,一般都需要对图片进行缩小和压缩之后再进行滤镜等图像修改操作。此外,手机用户还可能需要对多幅近似的图像进行同类的操作,比如进行批量快速图像修改,或者进行动态自定义表情制作等。由于手机图像修改APP性能相对于PC端的专业图像修改系统非常有限,且用户触屏操作的准确性也相比PC端大幅下降,因此需要以自动的图像处理方式进行大批量的图像缩小和压缩,以便适应在手机上进行图片修改、动态表情制作、短视频剪接或简单幻灯片编辑等操作。图片压缩目前主要分为有损压缩和无损压缩两大种类,无损压缩典型包括相机所直接拍摄的RAW格式图像,而有损压缩例如包括流行的JPEG有损压缩格式图像。无损压缩相比有损压缩压缩率可能较低,但可以更好地保护图像质量,有损压缩虽然压缩率较理想,但一般会舍弃图像中某些种类的图像信息,在打印或者放大时可能会出现较明显的图像瑕疵。如何在保证处理速度的情况下尽量提升压缩图像的质量是提供更好的用户体验的关键所在。尤其是在手机上缩小图片之后再进行图像压缩更容易使图像质量受损,这就需要一种简单易行的方法来根据不同性质的图像在压缩率和图像质量之间进行折中。手机上的图像修改APP所处理的图像可能包含明显不同种类的场景,例如拍摄文字、人脸等对比较强烈的场景时图像质量一旦受损在缩小后会更容易被用户感知,而例如拍摄自然风景、演出赛场等背景较为复杂的场景时即使图像质量受损也不容易被用户感知,因此应当设法通过对图像内容的判断,有针对性地选择压缩方式和缩小方式以便在用户视觉难以察觉变化的前提下尽可能地节省尤其是对多张图片进行批量修改时所需要的处理资源和存储空间,使得用户能通过更便利的加工方式得到适合在手机上进行再现的图片或视频。

发明内容

[0003] 本发明的一个目的在于提供一种图像编码方式以用于节省批量图像压缩或解压缩时的处理效率和存储空间。
[0004] 本发明的实施例关于一种图像压缩和解压缩方法,其包括将多幅图像在空间上以相同方式划分为多个大小相同的正方形子区域,每个子区域包括分别位于笛卡尔坐标系中第一、第二、第三和第四象限中的四个像素;将每幅图像的每个子区域第一象限中的像素值作为缩小图像中对应该子区域的像素值以得到将图像尺寸缩小到四分之一的缩小图像;确定每幅图像的每个子区域,分别确定四个像素值相等的第一类型子区域、包含两种像素值且最近邻象限中也包括与该子区域第一象限像素值之外的另一像素值相同的像素值的第二类型子区域、包含两种像素值且最近邻象限中不包括与该子区域第一象限像素值之外的另一像素值相同的像素值的第三类型子区域以及包含三种以上像素值的第四类型子区域,最近邻象限是第二、第三和第四象限之中每个的相邻子区域中的相邻象限;以及对于每幅图像创建解压缩表,解压缩表包含对应于每个子区域的第二、第三、第四象限的像素的解压缩数据以及第一类型、第二类型、第三类型和第四类型子区域的数量,解压缩数据对于一种类型的子区域仅包括像素值与具有相同像素值的最近邻象限位置两者中的一个。
[0005] 在一些实施例中,将每幅缩小图像与所对应的解压缩表相关联进行存储。
[0006] 在一些实施例中,将每幅缩小图像与所对应的解压缩表的偏移量相关联进行存储,偏移量为一幅缩小图像所对应解压缩表的解压缩数据与上一幅缩小图像所对应解压缩表的解压缩数据的差值。
[0007] 在一些实施例中,第二类型子区域的解压缩数据包括在该子区域内的像素分布布局以及在最近邻象限中具有相同像素值时具有该相同像素值的该最近邻象限的位置。
[0008] 在一些实施例中,第三类型子区域和第四类型子区域的解压缩数据包括第二、第三和第四象限的像素值。
[0009] 在一些实施例中,在解压缩表中存储的第一类型和第二类型子区域的数量之和大于第三类型和第四类型子区域的数量之和时,对缩小图像进行无损压缩。
[0010] 在一些实施例中,在解压缩表中存储的第一类型和第二类型子区域的数量之和小于或等于第三类型和第四类型子区域的数量之和时,对缩小图像进行有损压缩。
[0011] 在一些实施例中,在多幅图像的解压缩表中所有第一类型和第二类型子区域的数量之和大于所有第三类型和第四类型子区域的数量之和时,对多幅图像进行无损压缩。
[0012] 在一些实施例中,在多幅图像的解压缩表中所有第一类型和第二类型子区域的数量之和小于或等于所有第三类型和第四类型子区域的数量之和时,对多幅图像进行有损压缩。
[0013] 在一些实施例中,像素值为RGB色彩通道值和透明通道值之中的任一种。
[0014] 本发明的实施例有助于包括以更高的处理资源和存储空间的利用效率来在手机上批量处理多幅图片,同时确保所压缩的图像质量降低难以被手机用户视觉察觉。本发明的实施例还允许通过解压缩表随时将压缩后的图片还原为原先的图像质量,既可以方便用户以更加自动的方式在手机上批量处理图片供手机所使用,又可以在节约存储空间的情况下随后在PC段还原原始图片以进行更细致的图像修改。在例如制造动态表情等时进行批量处理的图片类似的情况下,按照本发明的实施例构建的解压缩表将有助于进一步减小解压缩数据所需的存储空间。

附图说明

[0015] 本文提供了附图以便结合说明书对实施例进行图示说明,但给出附图并不是为了做出限制。
[0016] 图1是根据一些实施例的图像子区域划分的示意图。
[0017] 图2是根据一些实施例的压缩图像方法的流程图。

具体实施方式

[0018] 本领域技术人员应理解尽管术语第一、第二等可在本文用于描述各种元件,但这些元件不应由这些术语限制。这些术语仅用于将元件彼此区分开。例如,第一元素可以称作第二元素,并且相似地,第二元素可以称作第一元素,而不偏离本发明的范围。如本文使用的,术语“和/或”包括关联的列出项目中的一个或多个中的任一个或全部组合。
[0019] 图1是根据一些实施例的图像子区域划分的示意图。多幅尺寸相同的图像将在空间上以相同方式划分为多个大小相同的正方形子区域,每个子区域包括分别位于笛卡尔坐标系中第一、第二、第三和第四象限中的四个像素。这样,例如1024*768的图片将被分为196608个子区域,并可以映射为大小为512*384的小尺寸图片。如图1所示,第一子区域包括分别位于第一、第二、第三和第四象限内的四个像素101、102、103和104。类似地,第二子区域包括分别位于第一、第二、第三和第四象限内的四个像素111、112、113和114,第三子区域包括分别位于第一、第二、第三和第四象限内的四个像素121、122、123和124,且第四子区域包括分别位于第一、第二、第三和第四象限内的四个像素131、132、133和134。除位于图像边缘或四角处的子区域的边缘象限以外,其余象限将具有最近邻象限,即该象限的相邻子区域中的临近象限。例如,第一子区域中第四象限104具有三个最近邻象限113、121和132,而类似地,第三子区域中的第一象限121也具有三个最近邻象限104、113和132。
[0020] 图2是根据一些实施例的压缩图像方法的流程图。在步骤S201中,首先在读取多幅图像后,按照上述划分方式对每幅图像进行子区域划分。完成子区域划分之后,将每幅图像的每个子区域的一个象限中的像素值映射为缩小图像中的一个像素,以得到将图像尺寸缩小到四分之一的缩小图像。这主要是为了降低缩小图像操作所需的处理时间,虽然也可采用求平均、插值等其他采样方法确定缩小图像中的像素,但直接使用一个象限中的像素值作为代表像素效率较高,且对于移动端足以提供所需的图像质量。所使用的作为代表像素的象限可以是第一、第二、第三和第四象限中的任何一个,本文中作为示例使用第一象限作为代表像素。
[0021] 在步骤S202中,确定每个子区域的像素分布的情况来降低不同类型子区域的解压缩数据所需的处理和存储资源。本文中,子区域的每个像素的像素值可以是RGB色彩通道值和透明通道值之中的任一种。为了便于下文中的说明,每个像素值例如包含8个比特。在进行解压缩处理时,可以将RGB色彩通道和透明通道分别或一起进行处理。如子区域中所有像素的像素值均一致,例如图1第一子区域的四个像素101、102、103和104均具有相同的像素值,则此时不需要生产解压缩数据,也可从像素101直接还原整个子区域。四个像素值相对的子区域称为第一类型子区域。此外,还应确定包含两种像素值且最近邻象限中也包括与该子区域第一象限像素值之外的另一像素值相同的像素值的第二类型子区域。例如图1中包括四个像素111、112、113和114的第二子区域中的代表像素为111,而像素112和114与111相同,仅有像素113具有不同的颜色,但在第三子区域中像素121的像素值与113相同。此时,并不需要使用8比特来存储像素113的像素值,而是可以利用2比特的位置数据来存储具有相同像素值的最近邻象限位置,例如用10来指示113的最近邻像素121。在三个最近邻像素中两个以上具有相同像素值时,可以存储任意其中一个的位置。为了进一步缩小包含两种颜色的子区域的解压数据大小,可以以3比特来定义该子区域内的像素分布布局,例如以111表示第一象限以外的像素一致,以001表示第二和第三象限与第一象限的像素不同而第四象限与第一象限相同,以101表示第二和第四象限与第一象限相同而第三像素与第一象限不相同等。在包含两种像素的情况下,像素分布布局共有8种,可以通过简单的对应表与上述3比特进行相对应。还应确定包含两种像素值且最近邻象限中不包括与该子区域第一象限像素值之外的另一像素值相同的像素值的第三类型子区域,此类情况下无法通过2比特的位置数据来确定与代表像素不同的像素值,需要在解压数据中存储像素值。这些方法均可以相比于存储8比特的解压缩数据更具有效率。最后,还应确定包括三种或更多颜色的第四类型子区域,对于三种以上颜色的情况,利用像素分布布局和最近邻象限来存储解压缩数据所节省的资源相比于直接存储像素较为有限,因此可以直接存储像素值。综上,第二类型子区域的解压缩数据包括在该子区域内的像素分布布局以及在最近邻象限中具有相同像素值时具有该相同像素值的该最近邻象限的位置。而第三类型子区域和第四类型子区域的解压缩数据包括第二、第三和第四象限的像素值。对于一般的图片而言,在子区域包含四个像素时第二类型和子区域数量将占据大部分的比例,而提高资源利用效率的关键也在于处理第二类型的子区域。
[0022] 在步骤S203中,根据上述步骤来建立图像的解压缩表,解压缩表包含对应于每个子区域的第二、第三、第四象限的像素的解压缩数据以及第一类型、第二类型、第三类型和第四类型子区域的数量。对于第一类型的子区域,并不需要提供解压缩数据,可以仅使用1比特的指示位来指示利用缩小图像中的一个像素还原为原先的子区域。对于第二类型的子区域,将子区域内的上述像素分布情况和具有相同像素值的最近邻象限情况存入解压缩表而无需存储像素值。对于第三和第四类型的子区域则相反,在压缩表中存储像素值而无需存储像素分布情况或最近邻象限情况。可以将每幅缩小图像与所对应的解压缩表相关联进行存储在相同或不同存储器上以用于随时还原图片。在批量处理多幅图像的情况下,将每幅缩小图像与所对应的解压缩表的偏移量相关联进行存储,偏移量为一幅缩小图像所对应解压缩表的解压缩数据与上一幅缩小图像所对应解压缩表的解压缩数据的差值,且可以仅包括出现变化的位置,这对于处理相邻图像差别较小的自定义表情或动图较为有利。解压缩表还包括第一类型、第二类型、第三类型和第四类型子区域的数量。这些数量可用于判定对缩小图像采用何种压缩方法来进一步提高存储效率。在解压缩表中存储的第一类型和第二类型子区域的数量之和大于第三类型和第四类型子区域的数量之和时,可对缩小图像进行无损压缩。此时图片一般相对较为简单,可能包括文字、人脸等具有明显边缘的物体,需要进行无损压缩以避免出现明显可见的图片质量降质,否则在缩小图片基础上再进行有损压缩容易在用户放大图片或解压缩图片出现明显的断裂、噪点、模糊等情况。如果在解压缩表中存储的第一类型和第二类型子区域的数量之和小于或等于第三类型和第四类型子区域的数量之和,则对缩小图像进行有损压缩。此时图片一般包含较为复杂的图像信息,例如绘画、CG、自然风景等,即使进行有损压缩也难以被用户视觉发现,因此可以通过有损压缩提升压缩比。第一和第二类型子区域数量与第三和第四类型子区域数量的相对比例是衡量进行无损或有损压缩方式的较简易指标。还可以在此基础上,判断第一和第四类型子区域数量比值,第二和第三类型子区域数量比值等其他本领域技术人员容易想到的指标。在处理例如动图、表情等多幅图像时,如多幅图像的解压缩表中所有第一类型和第二类型子区域的数量之和大于所有第三类型和第四类型子区域的数量之和时,则对多幅图像进行无损压缩。而在多幅图像的解压缩表中所有第一类型和第二类型子区域的数量之和小于或等于所有第三类型和第四类型子区域的数量之和时,则对多幅图像进行有损压缩。这样在处理多幅图像时,可以根据图像总体的特征来选择压缩方式。
[0023] 上述实施例仅为本发明原则之下的示例,本领域技术人员在查看所示附图和描述时所能预想到的替代实施方式或者等同实施方式也应包括在本发明的范围之内。