使用次分辨率图像的图像压缩的制作方法

文档序号:7991269阅读:212来源:国知局
使用次分辨率图像的图像压缩的制作方法
【专利摘要】公开了用于使用次分辨率图像来图像压缩和解压的方法、系统和制品。对图像进行压缩包括:基于输入图像中的统计相似区域来确定多个熵代码集;生成包括包含多个熵代码集的第一次分辨率图像的一个或多个次分辨率图像;使用所生成的一个或多个次分辨率图像来控制包括熵代码的一个或多个压缩参数,对输入图像进行编码;以及输出经编码的输入图像和所生成的一个或多个次分辨率图像作为压缩的熵编码的图像文件。对图像进行解压包括:对图像文件进行分解来访问经编码的压缩输入图像和关于多个压缩参数中的每一个的相应次分辨率图像;以及使用相应次分辨率图像来控制多个压缩参数中的每一个,而对经编码的压缩输入图像进行解码。
【专利说明】使用次分辨率图像的图像压缩
【技术领域】
[0001]本公开总体上涉及图像压缩。
【背景技术】
[0002]数字相机、装配有相机的移动电话和手持式设备以及其他便利的图像捕捉设备的广泛可用性已导致被定期地上载到各种基于web的图像应用上的大量图像。诸如这些的应用凸显出对提高了效率、质量和灵活性的图像压缩技术的持续需求。
[0003]便携式网络图形(PNG)格式是用于在诸如因特网的网络上存储并传送图像的频繁使用的格式。也在因特网环境中频繁地使用其他图像格式,诸如图形交换格式(GIF)、标记图像文件格式(TIFF)和联合图像专家组(JPEG)。PNG和GIF被认为是无损压缩方法,而JPEG是有损压缩方法。TIFF可以有时使用有损或无损压缩。这些技术中的每一个在图像压缩时提供了许多益处。然而,这些技术中的每一个在效率、质量或灵活性方面具有弱点。
[0004]因此,期望得到可以被广泛采用并支持、并且提供超过当前可用技术的改进的效率和质量的图像压缩技术。

【发明内容】

[0005]公开了用于使用次分辨率图像的图像压缩和解压的方法、系统和制品。对于图像压缩,这些包括:基于输入图像中的统计相似区域来确定多个熵代码集;生成包括包含多个熵代码集的第一次分辨率图像的一个或多个次分辨率图像;使用所生成的一个或多个次分辨率图像来控制包括熵代码的一个或多个压缩参数,而对输入图像进行编码;以及输出经编码的输入图像和所生成的一个或多个次分辨率图像作为压缩的熵编码的图像文件。
[0006]用于图像压缩的另一个实施例包括:从输入图像关于多个压缩参数中的每一个生成相应次分辨率图像;使用相应次分辨率图像来控制多个压缩参数中的每一个,而对输入图像进行编码;以及输出经编码的输入图像和所生成的次分辨率图像作为压缩的熵编码的图像文件。
[0007]用于图像解压的实施例包括:对图像文件进行分解来访问经编码的压缩输入图像和关于多个压缩参数中的每一个的相应次分辨率图像;使用相应次分辨率图像来控制多个压缩参数中的每一个,而对经编码的压缩输入图像进行解码;以及输出经解码的输入图像。
[0008]在下面参考附图详细地描述进一步特征和优势,以及各种实施例的结构和操作。注意的是,本发明并不限于在本文所述的特定实施例。在本文仅出于说明目的提供了这样的实施例。基于在本文包含的教导,另外的实施例将对相关领域技术人员显而易见。
【专利附图】

【附图说明】
[0009]将参考本发明的实施例,其示例可以在附图中被图示。这些附图意在说明而非限制。尽管在这些实施例的情景下一般地描述了本公开,然而,应当理解的是,这些实施例不是对范围的限制。[0010]图1是图示依据实施例的图像压缩和编码技术的流程图。
[0011]图2是图示依据实施例的在图1的图像压缩和编码技术中使用的预处理技术的流程图。
[0012]图3是图示依据实施例的在图1的图像压缩和编码技术中使用的空间预测技术的流程图。
[0013]图4是图示依据实施例的在图1的图像压缩和编码技术中使用的颜色变换技术的流程图。
[0014]图5是图示依据实施例的在图1的图像压缩和编码技术中使用的基于初始像素的压缩技术的流程图。
[0015]图6是图示依据实施例的在图1的图像压缩和编码技术中使用的用于确定熵代码的技术的流程图。
[0016]图7是图示依据实施例的在图1的图像压缩和编码技术中使用的通用图像编码技术的流程图。
[0017]图8是依据实施例的编码器的框图。
[0018]图9是图示依据实施例的可以与图8的编码器相关联的数据的框图。
[0019]图10是依据实施例的压缩的图像文件格式的框图。
[0020]图11是图示依据实施例的图像解压和解码技术的流程图。
[0021]图12是依据实施例的解码器的框图。
[0022]图13是依据实施例的计算机系统。
【具体实施方式】
[0023]虽然在本公开中描述了针对特定应用的说明性实施例,然而应当理解的是,实施例并不限于此。其他实施例是可能的,并且在本文教导的精神和范围以及实施例将有重大功用的另外领域内,可以对实施例作出修改。进一步,当结合实施例描述特定特征、结构或特性时,应认为,无论是否明确描述,结合其他实施例实现这样的特征、结构或特性在相关领域技术人员的知识范围内。
[0024]本公开总体上涉及用于对图像进行压缩的方法、系统和制品。包括在本文明确公开的那些的实施例实现了无损或近无损图像压缩,同时还在处理效率、图像质量和存储方面取得了巨大优势。在当前受欢迎的PNG图像压缩和实施例之间的一些差异是说明性的。
[0025]实施例为输入图像的具有相似统计量的区域生成单独的熵代码集。相应生成的熵代码被存储在次分辨率图像(即,具有比输入图像低的分辨率,因此比输入图像小的图像)中,其然后被用来控制输入图像中的像素的熵编码。通过这样做,在实施例中,有利地利用了在图像的二维空间中接近的像素的熵特性。相比之下,PNG对线性存储器的块编码熵,即,图像被转换成字节流,然后被熵编码。在PNG中没有有效地利用存在于输入图像中的二维接近地方的熵特性,因为线性字节流被熵编码。此外,通过使用次分辨率图像来为不同区域指定熵代码,实施例能够在解码过程期间更有成本有效地改变熵代码。
[0026]关于空间预测也一样,在实施例中有效地利用在图像中的二维接近地方发生的相似性来为每一个矩形块指定空间预测器。空间预测器被存储在次分辨率图像中,该次分辨率图像然后被用来控制空间预测。相比之下,PNG为输入图像的每一行指定空间预测器,而没有特别考虑局部区域的统计相似性。
[0027]实施例通过使用串色分量预测器来预测空间预测误差,来利用在不同颜色通道之间的相关性。实施例使用单独熵代码来对每一个颜色通道进行编码,以有利地使用在输入图像内的相同颜色的分量之间的相互关系。PNG将共同熵代码用于所有颜色通道。
[0028]鉴于PNG定义静态的颜色调色板,实施例介绍了为输入图像的区域局部定义的颜色调色板。该调色板使用哈希技术来动态地生成,其可以导致改进的颜色特性。
[0029]此外,实施例使用次分辨率图像来控制图像压缩和熵编码的各个方面。次分辨率图像可以使用与用来存储输入图像的技术相同的技术来存储。
[0030]图1-7图示了压缩方法的实施例的各个方面。图8-10和13图示了根据实施例的系统。
[0031]图1图示了依据实施例的用于图像压缩和熵编码的方法100。该方法可以例如使用如在下面关于图8-10和13所述的系统来实现。方法100可以不按照所示的顺序发生,并且可以不要求所有步骤。
[0032]在步骤102,对输入图像执行预处理。输入图像可以是数字化的相片或其他数字图像。输入图像可以在存储器中被表示为逻辑矩形像素阵列。像素可以是一个或多个字节。根据实施例,像素是4字节并且包括红色、绿色、蓝色和阿尔法通道。预处理步骤102可以对输入图像的像素进行处理,使得在预处理之后,输入图像产生改进的压缩。根据实施例,可以在步骤102执行阿尔法替换、颜色离散化和调色板选择。在下面关于图2进一步描述了预处理步骤102。
[0033]在步骤104,输入图像或更具体地经预处理的输入图像经受空间预测。具体地,如本领域技术人员已知的,空间预测是指基于一个或多个先前出现的像素来预测像素。将在预测值和实际值之间的差记录在空间预测的图像中的像素位置中。此外,存储所选择的空间预测器的次分辨率图像。
[0034]可以将输入图像分成预先确定大小的矩形区域(“块”)。块可以是任何大小的,诸如16X16像素。在空间预测、颜色空间变换和熵代码选择中可以使用相同或不同大小的块。
[0035]对于每一个块中的每一个像素,尝试空间预测器集。被尝试的空间预测器集可以被预先配置或可以被动态地确定。根据实施例,空间预测器集包括单独像素或在当前像素左边(用语“当前像素”用来指当前正被处理的像素)的像素和/或是在当前像素上方一个或多个行的像素的组合。注意到,根据图像中的像素的左-右、上-下处理顺序,在当前像素左边或上方的像素在当前像素之前被处理。
[0036]为块选择的空间预测器可以是在该块中的像素的空间预测值和相应实际值之间的差产生最小总和熵的空间预测器。因此,在实施例中,以对每一个块局部地优化熵的方式来确定空间预测器。
[0037]在一些实施例中,在为当前块选择空间预测器时考虑的标准包括最小化在空间预测值和实际值之间的差的绝对值,以及偏爱预先确定的相邻像素作为预测器和/或预测器的部分的偏向。对差的绝对值的最小化可以在图像全局范围内减少熵。根据实施例,对绝对值的最小化可以基于为块内的每一个像素最小化差的绝对值或为块最小化差的总和绝对值。根据另一个实施例,对绝对值的最小化可以至少部分通过最小化差值的全域计数的加权和来实现。该加权例如可以是相对于大绝对值偏爱小绝对值的指数或高斯。
[0038]然后,将为每一个块选择的空间预测器记录在空间预测器次分辨率图像中。在下面关于图3描述了空间预测的进一步细节。
[0039]在步骤106,执行输入图像的颜色空间变换。可以在空间预测之前或之后执行输入图像的颜色空间变换。在所述实施例中,到颜色空间变换的输入是包括空间预测差作为像素值的中间输入图像。
[0040]颜色空间变换包括识别并记录在颜色分量之间的相关性。例如,将在绿色和红色、绿色和蓝色以及红色和蓝色之间的相关性识别并记录为颜色相关因子。因此,最初包括了针对绿色、红色和蓝色的三个单独颜色值的像素可以在颜色变换之后由绿色的原始颜色值和使用红色和蓝色的相关因子来确定的值表示。红色可以被表示为将红色与绿色相关联的相关因子,以及蓝色可以被表示为将蓝色与红色相关联的相关因子或将蓝色与绿色相关联的相关因子中的一个或多个。
[0041]将相关因子存储在次分辨率图像中。基于相应相关因子,对输入图像中的颜色值进行改变以包括红色和蓝色的预测误差。在下面关于图4进一步描述了颜色空间变换。
[0042]在步骤108,执行输入图像的基于初始像素的压缩。在此所述的实施例中,到基于初始像素的压缩的输入是已经受了空间预测和颜色变换处理的输入图像。然而,步骤108可以在方法100的流程的其他位置处执行,因此,可以在其他实施例中具有在步骤104和106之前或之后的输入图像。
[0043]对于每一个像素,基于初始像素的压缩操作来插入向后引用、像素或调色板引用中的一个。本领域技术人员应当认识到,通过插入向后引用的压缩以基于字节的传统LZ77来执行。与LZ77相比,在实施例中,对向后引用的插入基于像素。基于像素的压缩使得能够更好地使用图像中的二维接近特性来改进压缩。根据实施例,调色板(在本文被称为“新出现的颜色调色板”)可以在基于像素的压缩期间被动态地填充。在下面关于图5进一步描述了输入图像的基于初始像素的压缩。
[0044]在步骤110,从步骤108输出的经压缩的输入图像经受二维局部性变换。二维局部性变换操作来识别经压缩的图像中的位置信息,并且用表示对应二维距离的代码对该位置信息进行编码。例如,向后引用可以最初在压缩期间被插入(例如,步骤108)作为像素距离。二维局部性变换可以用针对对应二维距离的短代码替换该像素距离。预先配置的二维局部性代码表指定在相应短代码和所选择的对应相对像素距离之间的关系。根据实施例,预先配置的表为在当前像素周围的16X8像素邻居指定短代码。这些短代码通过其欧几里得距离被安排到当前像素。将短代码用于直接相邻的区域例如使能对来自直接在上面的一个或多个在前行的像素的更廉价(就位而言)引用。
[0045]在步骤112,确定熵代码并且记录针对熵代码的次分辨率图像。为图像的具有相似统计量的局部区域(例如,块或块集群)确定熵代码。将熵代码或对用来对每一个像素进行编码的熵代码的引用存储在被称为熵次分辨率图像的次分辨率图像中。在下面关于图6进一步描述了熵代码确定。
[0046]在步骤114,对输入图像进行熵编码。根据实施例,到熵编码的输入可以是已经受了空间预测、颜色变换、像素压缩和二维局部性变换的输入图像。
[0047]熵编码以从左到右且从上到下的方式逐像素对输入图像进行操作。在图像的每一个位置处,基于在熵次分辨率图像中引用的熵代码来确定熵编码。如在下面关于图6所述,为输入图像的每一个块确定熵代码集。熵代码集可以包括针对颜色、距离等的相应熵代码。熵次分辨率图像可以指定待用于输入图像中的对应像素的熵代码集。基于当前像素的块来访问熵代码。熵代码可以基于例如哈夫曼代码和算术代码。
[0048]在步骤116,将熵编码的压缩图像输出到存储器、永久性存储器或传输给另一个实体。输出熵编码的图像可以包括形成压缩的熵编码的图像文件,诸如关于图10所述的,其包括压缩的熵编码的输入图像、次分辨率图像以及解压来恢复输入图像所需的其他信息。
[0049]图2图示了用于对输入图像进行预处理的方法200的流程图。根据实施例,方法200可以在执行上述方法100的步骤102时使用。方法200可以不按照所示的顺序发生,并且可以不要求所有步骤。
[0050]在步骤202,对输入图像执行阿尔法替换。阿尔法替换是减少输入图像中的熵的技术。阿尔法替换操作来用在图像中更常出现的阿尔法值替换部分阿尔法值,诸如唯一的阿尔法值或在图像中很少出现的那些。根据实施例,例如,对还具有半透明值的特殊颜色值,诸如以诸如PNG、TIFF和GIF的图像格式出现的那些进行处理,来通过将它们校正成包括对应的特定半透明值来移除最初包括的半透明值。该过程操作来减少阿尔法通道中的熵。
[0051]可以将任何数量的像素标记为半透明的,从而,使其经受阿尔法替换。根据实施例,半透明不被指定为针对红色、绿色和蓝色的单独颜色值,并且替代地被指定为与对应阿尔法值的偏移。使用与阿尔法的偏移来指定半透明的红色、绿色和蓝色使实施例能够即使在对于特定RGB三元组存在多个阿尔法时,也保留半透明信息。作为使用偏移来指定阿尔法值的副作用,可以减少阿尔法通道的熵。
[0052]在步骤204,可以执行颜色离散化。根据实施例,颜色离散化和相容性(compatification)操作来封装(to pack)颜色的动态范围,使得预测将仅或大部分产生如在原始图像中的那些那样的颜色值和/或预测误差值。这避免或减少了预测图像具有比原始图像更独特的符号的需求。
[0053]例如,在没有颜色离散化和相容性的实施例中,预测器可以考虑两个颜色值并且将那两个考虑的值的平均预测为像素的预测颜色。然而,平均值可能不是在原始图像中任何地方的颜色,因此,预测信号将引入新的符号。封装颜色的动态范围,使得预测和/或预测误差产生尚未在原始图像中的新的值的可能性导致了最小化新的符号的添加。因此,在与传统技术相比时,预测的图像可能已减少了熵。
[0054]在步骤206,可选地,执行调色板选择。根据实施例,当仅仅少数颜色需要编码在图像中中,才执行调色板选择。调色板选择允许多个像素被封装入单个像素。
[0055]图3图示了用于执行空间预测的方法300。根据实施例,方法300可以在执行上述方法100的步骤104时使用。方法300可以不按照所示的顺序发生,并且可以不要求所有步骤。
[0056]在步骤302,确定空间预测器。如在上面关于步骤104所述,所公开的实施例操作来找到空间预测器,使得最小化块中的预测差。在另一个实施例中,可以使用其他标准,诸如但不限于:最小化在块内的空间预测差的熵、最小化空间预测差的绝对值以及偏好相邻像素块的偏向选择标准,以便优化对针对块的局部特性以及可选地针对全局特性的空间预测器的选择。[0057]如上所述,为预测当前像素而选择的像素可以来自任何先前处理的像素位置。根据实施例,预先配置的空间预测器代码表为多个像素位置和像素组合中的每一个指定代码。例如,空间预测器代码表可以包括用于无预测的代码、用于复制单独像素的多个代码以及用于求两个或更多个像素的平均值的多个代码。因此,对当前像素的预测可以基于一个或多个像素。
[0058]基于上述标准中的一个或多个所确定的成本函数以每块为基础,选择用其来对输入图像进行编码的空间预测器。在块中,所有像素与相同选择的空间预测器相关联。
[0059]在步骤304,将为每一个块所选择的空间预测器存储在空间预测器次分辨率图像中。次分辨率图像中的像素表示输入图像中的块。
[0060]用于存储压缩的熵编码的输入图像的相同存储技术可以用于存储相应的次分辨率图像。在下面关于图7公开了用于存储压缩的熵编码的图像,包括用于次分辨率图像,的通用技术。
[0061]在步骤306,对输入图像(经过或没有经过预处理)进行处理来根据空间预测器次分辨率图像对空间预测进行编码。对于块中的每一个像素,基于存储在空间预测器次分辨率图像中的对应空间预测器来确定预测值。然后,将在预测值和实际值之间的差编码入像素中。当空间预测前进到跨输入图像处理像素时,空间预测器次分辨率图像为每一个块控制所应用的空间预测器。
[0062]图4图示了用于对图像的颜色空间变换的方法400。根据实施例,方法400可以在执行上述方法100的步骤106时使用。方法400可以不按照所示的顺序发生,并且可以不要求所有步骤。
[0063]在步骤402,确定颜色相关性。以块为基础确定颜色分量之间的颜色相关器。对于每一个块,对像素,或更具体地红色、绿色、蓝色(RGB)值,进行分析来确定它们之间的相关性。根据实施例,确定在绿色和红色、红色和蓝色以及绿色和蓝色之间的相关性。颜色相关器操作来减少红色和蓝色通道中的熵。例如,通过将红色表示为该像素中的绿色值的因子,实施例减少了红色通道中的熵。例如,考虑如在传统系统中被编码的、分别具有RGB8:6:2和4:3:0的两个块。根据实施例,可以将该信息编码为8:X:Y和4:Χ:Y,其中X和Y是对于75%和25%的代码。因此,颜色变换可以通过利用在相邻块之间的颜色关系来减少红色和蓝色通道的熵。
[0064]为每一个块确定常见颜色相关器集。可以例如基于平均或基于在当前块中最频繁出现的颜色值来选择块的相关器。根据实施例,可以以最小化将红色和蓝色分量的熵和绝对值相组合的启发的方式确定块的相关器。例如,可以对块中的绿色至红色的所有值进行测试,并且可以选择产生最低启发的值。并且,可以对块中的绿色至蓝色以及红色至蓝色的所有组合进行测试,并且可以选择具有最低启发的组合。此外,在一些实施例中,可以稍微偏爱与来自在当前块之上或左边的块的所选择的相关器相似的相关器值供选择。
[0065]在步骤404,将所选择的相关因子存储在颜色相关性次分辨率图像中。在颜色相关性次分辨率图像中,每一个像素表示输入图像中的块。次分辨率图像中的每一个像素分别存储绿色至红色、绿色至蓝色和红色至蓝色的相关因子。可以以可以使得指示正或负相关这样的方式存储这些因子。
[0066]在步骤406中,在输入图像中对颜色变换进行编码。现将输入图像中的红色和蓝色通道修改成表示颜色相关性预测的预测误差。具体地,如下所述对颜色预测进行编码。绿色没有被预测,因此,所存储的值是实际绿色值。基于在颜色相关性次分辨率图像中所指定的与当前块相对应的绿色至红色相关因子从绿色预测红色。现对在基于颜色相关因子的红色预测值与红色分量的先前编码的空间预测误差之间的差进行编码。可以从绿色和红色中的一个或多个预测蓝色。如果在预测蓝色值时使用绿色和红色两者,则根据实施例,将绿色至蓝色和红色至蓝色预测的平均取作为蓝色分量的预测值。可以预先配置预测蓝色的模式。因此,根据在颜色相关性次分辨率图像中所指定的相关因子来控制对红色和蓝色通道的编码。
[0067]图5图示了用于对输入图像的基于像素的压缩的方法500。根据实施例,方法500可以在执行方法100的步骤108时使用。步骤502-516图示了通过以从左到右且从上到下移动模式来遍历像素对图像的处理。方法500可以不按照所示的顺序发生,并且可以不要求所有步骤。
[0068]在步骤502,选择待被处理的下一像素。处理将典型地在左上像素开始。在其他迭代中,选择随后像素。所选择的下一像素被称为当前像素。
[0069]步骤504-508确定可以在对输入图像进行压缩的过程中对当前像素执行的每一个操作的成本。根据实施例,可以考虑三个单独选项:1)插入向后引用;2)插入像素;以及3)插入调色板条目。
[0070]“向后引用”指示可以在当前像素的位置处复制所指定的一个或多个像素,以便对图像进行压缩。例如,如果当前像素是全部均是颜色C的三个像素的串的开始,并且在当前像素之前200个像素的先前处理位置处,存在三个颜色C像素的串,则实施例可以插入指示对匹配当前像素的200个像素前的引用的向后引用,并且该3个像素的串的长度在所引用的像素处开始。向后引用通过距离和长度值指定。距离是指从当前像素到所引用的像素的距离,以及长度是指自所引用的像素可以被复制到的当前像素的像素数。
[0071]插入像素是指将当前像素插入经压缩的图像中。在一些情况下,对于像素,这可以是最有成本效益的操作。
[0072]插入调色板条目是指将索引插入经压缩的图像中。在一些实施例中,插入调色板条目还可以包括将对应颜色条目插入调色板。新出现的颜色调色板在基于像素的压缩前进通过图像时被动态地构建。在每一个像素位置处,考虑将颜色值插入新出现的调色板以及将对应调色板索引插入经压缩的图像的成本。可以预先配置新出现的调色板的大小。根据实施例,使表示红色/绿色/蓝色/阿尔法值的32位整数与预先确定的乘数相乘。基于该大小,来自作为结果的整数的某些位被用作为表示新出现的颜色调色板的阵列的索引。例如,对于新出现的128位大小的调色板,可以将7位用作索引值。对于来自未经压缩的像素流的每一个颜色值,可以以数个方式中的一个来确定索引。根据实施例,基于自上述颜色的字节表示的预定义起始位置的7个相邻连续位来确定颜色的索引。根据另一个实施例,可以对颜色值执行模操作来确定新出现的调色板的哈希索引。根据实施例,可以将一个新出现的颜色调色板用于输入图像。在其他实施例中,可以为相应区域定义单独的新出现的调色板。例如,可以沿着输入图像的X轴为每32个像素创建新的新出现的调色板。
[0073]在步骤504,确定将向后引用插入在当前像素处的成本。如上所述,插入向后引用包括插入距像素的距离和长度。长度是指可以从所引用的像素开始被复制的像素数。成本包括将距离和长度插入在经压缩的图像中的与当前像素相对应的位置处的成本。可以结合不必复制与来自向后引用的可以在当前像素的位置处开始被复制的像素数相等的像素数的成本节省考虑该插入位的成本。例如,如果向后引用花费5个字节来编码,并且3个像素的长度被指示,则在大小I个字节的像素的情况下,向后引用插入的成本将是5-3=2个字节。根据另一个实施例,向后引用的成本仅基于插入成本,即,如果向后引用花费5个字节来编码,则插入成本是5个字节。
[0074]根据实施例,选择最长向后引用。根据另一个实施例,将可能具有不同距离和长度特性的两个或更多个向后引用进行比较,并且选择最有成本效益的一个。
[0075]在步骤506,确定将像素插入输入图像中的成本。该成本可以被认为是插入一个像素的位成本。
[0076]在步骤508,确定插入新出现的调色板索引的成本。插入新出现的调色板条目的成本可以被认为是索引条目的大小。
[0077]在步骤510,基于在步骤504-508的成本确定,确定最小成本操作,并且将最小成本操作记录在当前像素位置处。基于位成本来确定成本。
[0078]在步骤512,确定是否已达到输入图像的最后像素。如果没有,则为遍历模式中下一像素重复步骤502-512。
[0079]如果在步骤512确定当前像素是最后像素,则处理前进到步骤514。在步骤514,跟踪回自最后像素的路径来确定最小成本路径的反向,以压缩图像。
[0080]在步骤514,然后使所确定的路径反转来产生待执行的压缩操作,以为图像遍历压缩的最小成本路径。该路径可以包括在像素位置处编码向后引用、编码像素值以及编码调色板索引值中的一个或多个。在步骤514结束,输入图像已完成基于像素的压缩。
[0081]图6图不了用于确定熵代码的方法600。根据实施例,方法600可以在执行上述方法100的步骤112时使用。方法600可以不按照所示的顺序发生,并且可以不要求所有步骤。
[0082]在步骤602,接收图像以被熵编码。根据实施例,所接收的图像已经过了基于像素的压缩处理。在基于像素的压缩之前,输入图像可能已经受了空间预测和颜色空间变换。然而,方法600适用于其他类型的输入图像。
[0083]在步骤604,从输入图像确定块。根据实施例,确定大小16 X 16的块。其他块大小是可能的。
[0084]在步骤606,为各个块确定统计量。可以为红色、绿色、蓝色、阿尔法颜色分量、为距离代码、向后引用长度代码以及为调色板哈希值分别确定统计量。可以以可以对每一个统计的像素数进行计数的直方图形式确定统计量。
[0085]在步骤608,根据各个块的统计量的相似性来聚类块。根据实施例,执行随机聚类。随机聚类可以通过最初将每一个块认为是集群,然后迭代地任意选择集群来执行。然后,从所选择的多个集群中找到最相似的集群,并且将所选择的集群和所找到的集群相组合。该聚类操作可以进行,直到集群数被减少至所确定的阈值集群数为止。还可以基于成本函数来确定阈值集群数。例如,可以对为每一个集群存储熵代码的成本建模,其中各个熵代码的大小取决于块到集群的分配。在实施例中,例如,随机算法操作来将集群数从大约1000减少到大约50个集群。[0086]在步骤610,精化聚类。该步骤操作来通过将块(或块统计量)移动到集群来精化随机确定的集群,以便提高在块及其集群之间的匹配的精度。在该步骤中可以使用诸如k均值算法的聚类算法。根据另一个实施例,对每一个块进行分析来为其确定最优集群并且将其移动到那里,以使最小化待输出(存储)的预期位数。在每一个移动之后,对统计量进行调整来补偿该移动。该操作可以被重复预先确定的次数、或直到待输出的预期位数不断减少为止,以供所有块导致精化聚类。
[0087]在步骤612,为每一个集群确定熵代码。如此,由于集群已将具有相似特性的块聚组在一起,因此,为每一个相应集群的特性明确地确定作为结果的熵代码。此外,在每一个集群内,为绿色、红色、蓝色、阿尔法和距离分量确定单独的熵代码。在实施例中,可以将相同熵代码用于绿色、调色板索引和长度分量。可以使用任何技术来确定熵代码,诸如但不限于哈夫曼代码,其特定于每一个集群以及在每一个集群内特定于颜色和距离分量中的每一个。
[0088]在步骤614,确定每一个块的熵代码。具体地,熵代码的集(“熵代码集”)包括针对红色、绿色、蓝色、阿尔法颜色分量、针对距离代码、向后引用长度代码以及针对调色板哈希值的单独熵代码。这可以通过识别特定块所属的集群来确定。
[0089]在步骤616,将熵代码集存储在熵代码次分辨率图像中,并且在熵代码次分辨率图像中指定应用到每一个像素的熵代码。熵代码次分辨率图像例如为输入图像中的每一个16X16块存储一个像素。熵代码次分辨率图像中的每一个像素指定待被应用到输入图像中的对应块的熵代码集。例如,可以用对在所存储的熵代码集中的对应熵代码集的位置的引用对次分辨率图像中的像素的绿色分量进行更新。熵代码集可以包括五个单独的熵代码:绿色/像素索引/向后引用长度的熵代码;以及红色、蓝色、阿尔法和距离分量的熵代码。这些熵代码中的每一个可以使用哈夫曼编码和行程编码来分别编写。
[0090]可以使用在存储其他次分辨率图像和经压缩的熵编码的输入图像时使用的相同技术来存储熵代码次分辨率图像。在下面关于图7描述了对图像的存储。
[0091]图7图示了用于以压缩和熵编码形式存储图像的方法700。根据实施例,方法700可以用来存储经压缩的熵编码的输入图像以及次分辨率图像(例如,熵次分辨率图像、颜色相关性次分辨率图像和空间预测器次分辨率图像)。方法700可以不按照所示的顺序发生,并且可以不要求所有步骤。
[0092]在步骤702,输入图像经受基于像素的压缩。示例性基于像素的压缩,尽管在方面与LZ77相似,被应用到像素而不是字节。图5图示了示例性基于像素的压缩方法。基于像素的压缩的输出是具有像素、向后引用和调色板索引值的像素流。
[0093]在步骤704,来自基于像素的压缩的输出经受二维局部性变换。二维局部性变换基于二维接近性将在像素距离内的距离转换成代码。在上面关于上述方法100的步骤110描述了示例性二维变换。
[0094]在步骤706,将输入图像分成(例如,16X16像素的)块并且为每一个块确定统计量。可以分别为红色、绿色、蓝色、阿尔法和距离分量收集统计量。还可以为(向后引用的)长度和像素索引值收集统计量。根据实施例,可以将绿色/长度/像素索引值的统计量相组合。在上面关于方法600的步骤604-606描述了为块确定统计量。
[0095]在步骤708,根据统计量的相似性对块进行聚类,以及在步骤710,对集群进行精化来提高在块和相应集群之间的匹配。在步骤712,为集群确定熵代码。分别关于方法600的步骤608、610和612描述了对块的聚类、对集群的精化和为各个集群确定熵代码。
[0096]在步骤714,存储熵次分辨率图像。对熵次分辨率图像的存储可以使用与在方法700中定义的相同的存储技术。因此,方法700定义图像的递归存储。在上面关于方法600的步骤616描述了对熵代码次分辨率图像的存储。
[0097]在步骤716,对输入图像进行熵编码。在上面关于方法100的步骤114描述了对输入图像的熵编码。
[0098]图8图示了根据实施例的编码器800。编码器800包括预处理模块802、空间预测器804、颜色空间变换器806、像素压缩器808、二维局部性变换模块810、熵代码生成模块814、图像存储模块812和经压缩的图像文件输出模块816。
[0099]预处理模块802被配置成对图像进行预处理,以使它们能够被更好地压缩。预处理模块802可以例如操作来在图像被压缩之前减少图像中的熵。预处理模块802包括阿尔法替换映射器822、颜色离散器824和调色板选择器826。
[0100]阿尔法替换映射器822被配置成移除或替换所选择的阿尔法值。根据实施例,阿尔法替换模块可以实现方法200的步骤202。
[0101]颜色离散器824被配置成通过为预测器调整值的动态范围来消除或减少不在原始图像中的预测值,而减少作为结果的熵。根据实施例,颜色离散器824可以实现方法200的步骤204。
[0102]调色板选择器826被配置成通过封装在数据结构中更接近的多个颜色在图像仅具有少于预先确定数量的颜色时减少在相邻像素之间的联合分布的熵。根据实施例,调色板选择器826可以实现方法200的步骤206。
[0103]空间预测器804被配置成实现空间预测。例如关于方法100的步骤104和方法300描述了空间预测。
[0104]颜色空间变换器806被配置成实现颜色空间变换。例如在上面关于方法100的步骤106和方法400描述了颜色空间变换。参考RGB颜色模型描述了上述实施例。也可以使用其他颜色模型,诸如但不限于YUV颜色模型。
[0105]像素压缩器808被配置成执行对输入图像的基于像素的压缩。根据实施例,像素压缩器808被配置成实现基于像素的压缩,如关于方法700的步骤702所述。像素压缩器808包括向后引用插入模块832、贪婪压缩器模块834、最小成本压缩器模块836和调色板插入模块838。
[0106]向后引用模块832操作来确定当前像素是否能够通过引用先前出现的像素来压缩,并且如果这样的话,插入距正被引用的像素的像素距离和长度。在上面关于图5的步骤504描述了对向后引用的插入。
[0107]调色板插入模块838操作来为每一个像素确定索引值,并且同时在其对相应像素进行处理时动态地构建新出现的颜色调色板。在为对应像素确定引用调色板条目的索引之后,如果针对向后引用的成本和像素插入的成本的成本比较是有利的,则调色板插入模块838可以将该索引插入经压缩的图像。
[0108]当在压缩过程期间,调色板插入模块838被调用来处理每一个像素时,进行对新出现的调色板的生成。每一个像素可以包括颜色值(例如,RGB或RGBA)。颜色值可以表示对应空间预测和/或颜色变换预测的误差。从当前像素的值生成哈希索引。根据实施例,从像素的预先确定的位位置选择预先确定数量的位。将所选择的位用作为哈希索引。然后,基于哈希索引将像素(例如,颜色值)插入表中。为每一个颜色确定哈希位置的其他方法是可能的,并且预期在本公开的范围内。
[0109]最小成本压缩器836被配置成为输入图像确定最小成本压缩。最小成本压缩器836在输入图像的每一个像素处,在下述一个或多个选项之间进行选择:a)插入向后引用;
b)插入当前像素;以及c)插入对调色板条目的索引。该选择基于成本分析。图5描述了可以由最小成本压缩器836实现来压缩输入图像的方法500。
[0110]贪婪压缩器模块834操作来通过在最长向后引用、对像素的复制以及插入调色板索引之间进行选择来对输入图像进行压缩。在上面分别关于方法500的步骤504、506和508描述了插入向后引用、对像素的复制和对调色板条目的插入的操作。贪婪压缩器模块834可以操作为更快的压缩技术,来在速度比压缩级别更重要时使用。因此,例如,当考虑向后引用时,贪婪压缩器模块834可以仅考虑具有最长匹配序列的向后串,用于针对像素插入和调色板索引插入的成本比较。
[0111]二维变换模块810被配置成基于二维距离来用更短的代码替换像素距离的出现。根据实施例,二维变换模块810可以实现在上面关于方法100的步骤110所述的处理。
[0112]熵代码生成模块814被配置成为输入图像的具有相似统计量的相应区域生成熵代码。根据实施例,块聚类器模块842为输入图像确定预先确定大小的块,然后,根据统计量的相似性对块进行聚类。熵代码生成模块814可以为每一个集群生成单独的熵代码,并且为该集群的特性优化代码。可以为每一个集群生成熵代码集。熵代码生成模块814被进一步配置成生成熵次分辨率图像来为输入图像的每一个块存储熵代码。块聚类器模块842可以实现在上面关于方法600的步骤604-610和/或方法700的步骤706-710所述的处理。熵代码生成模块814可以实现在上面关于方法600的步骤612-616和/或方法700的步骤712-716所述的处理。
[0113]图像存储模块812被配置成存储经压缩的熵编码的输入图像以及基于输入图像所生成的次分辨率图像中的每一个。根据实施例,图像存储模块812可以实现在上面关于方法700所述的处理。如上所述,方法700使用递归定义来存储图像。例如,步骤714要求使用相同方法700来存储熵代码次分辨率图像。
[0114]经压缩的图像文件输出模块816被配置成例如在基于方法100的处理之后,输出完全经压缩的熵编码的输入图像到文件中或以被传输给另一个实体以供解码。作为输出的完全经压缩的熵编码的输入图像包括经压缩的熵编码的输入图像和次分辨率图像等。在下面图10中图示了存储经压缩的熵编码的输入图像的示例性文件。
[0115]图9图示了根据实施例的在图像压缩时的数据实体。输入图像900是被输入到编码器800以被压缩的未压缩的图像。经压缩的熵编码的图像904是完全压缩并熵编码的输入图像。输入图像中间格式902 (也被称为“中间图像”)是指输入图像经受的、在未压缩的输入图像和经压缩的熵编码的图像之间的图像格式的数个中间阶段。示例包括来自预处理模块802和来自任何其子模块的输出、来自空间预测器804的输出、来自颜色空间变换器806的输出、来自像素压缩器808和任何其子模块的输出以及来自二维局部性变换模块810的输出。[0116]空间预测器次分辨率图像906、颜色相关性次分辨率图像908和熵次分辨率图像910每一个包括针对输入图像中的每一个块(例如,16X16像素区域)的像素。空间预测器次分辨率图像906存储为输入图像的各个块所选择的空间预测器。颜色相关性次分辨率图像908为输入图像中的每一个块存储颜色相关因子。熵次分辨率图像910为输入图像的每一个块存储对熵代码集的引用。
[0117]根据实施例,新出现的调色板920是哈希表,其中每一个条目包括哈希索引922和调色板值924。调色板值924包括颜色。哈希索引922对应于使用来自相应颜色值中的一个的位来计算的索引。
[0118]二维颜色表930被配置有针对所选择的像素距离的短代码。短代码表示在图像中的像素位置之间的二维距离。二维代码表930中的每一个条目可以包括表示在两个像素之间的像素距离的相对像素距离条目932和表示该距离的短二维代码936。
[0119]空间预测器代码表940被配置有表示多个空间预测器的代码。如上所述,空间预测器可以基于单个像素或者两个或更多个像素的组合。
[0120]图10图示了可以存储经压缩的熵编码的图像904的文件格式1000的内容的框图。图像格式1000可以用来将经压缩的熵编码的输入图像904存储在永久性存储器中。此夕卜,图像格式1000可以用作为用来将经压缩的熵编码的输入图像904传输给另一个实体以便被解压的格式。本领域技术人员应当理解的是,在文件格式1000中可以包括其他元素。
[0121]图像大小1002表示图像文件的大小。大小可以以字节指定。块大小1006表示在压缩过程中使用的块大小(例如,16X16像素)。调色板哈希信息1004表示关于颜色调色板的信息,包括但不限于:哈希索引大小和调色板条目。所存储的熵次分辨率图像1012、所存储的颜色相关性次分辨率图像1014和所存储的空间预测器次分辨率图像1016是所存储的相应次分辨率图像。所存储的熵次分辨率图像可以包括对熵代码集1008的引用。例如,该引用可以是从熵代码集1008识别熵代码集的整数。如上所述,可以使用与用来压缩并存储输入图像的相同的过程以递归方式来存储每一个次分辨率图像。所存储的经压缩的熵编码的输入图像1022是经压缩的熵编码的输入图像的位流。
[0122]当接收了已使用方法100来被编码的图像,例如诸如所存储的经压缩的熵编码的输入图像1022时,对应解码器可以执行步骤116-102中的部分的反转来获取未压缩且解码的输入图像。图11图示了根据实施例的执行解码过程的方法1100。
[0123]在步骤1102,对经压缩的熵编码的图像文件进行处理来获取经压缩的熵编码的输入图像、经压缩的次分辨率图像和解压以恢复输入图像所需的其他信息。经压缩的次分辨率图像包括熵代码次分辨率图像、空间预测器次分辨率图像和颜色相关性次分辨率图像的压缩版本。在上面关于图10描述了经压缩的熵编码的图像文件的内容。如上所述,每一个经压缩的次分辨率图像可能已通过递归地使用用来压缩输入图像的相同方法100被存储。因此,可以分别对每一个经压缩的熵编码的次分辨率图像执行方法1100来获取对应未压缩的次分辨率图像。为了易于描述,在下面参考对输入图像的解码描述了方法1100的步骤。
[0124]在步骤1104,执行对熵编码的输入图像的解码。基于熵代码次分辨率图像中的对应像素来确定在对输入图像进行编码时使用的熵代码。如上所述,熵代码次分辨率图像的每一个像素对应于输入图像中的块,并且指定用于该块的熵代码集。熵代码次分辨率图像可以为每一个块包括对对应熵代码集的引用。熵代码集可以分别地可用于解码器,在分解的图像中或通过单独传输。通过对熵代码进行解码,从熵编码的输入图像获取经压缩的输入图像。
[0125]在步骤1106,使二维局部性变换反转。例如,在经压缩的输入图像中的包括二维局部性变换代码的每一个位置处,用对应的实际像素距离替换值。二维局部性变换距离代码可以分别地可用于解码器,在分解的图像中、通过单独传输或通过配置。
[0126]在步骤1108,对经压缩的输入图像进行解压。如上所述,在压缩输入图像期间,通过将向后引用、像素或调色板引用中的一个插入从输入图像的左上像素到右下像素的各个像素位置来执行基于像素的压缩。在解压期间,从左上像素到右下像素遍历经压缩的输入图像,插入来自向后引用的数据、像素值或来自颜色调色板的值。如在上面关于输入图像的初始压缩所述,当解压过程前进通过经压缩的输入图像的像素时,构建新出现的调色板。当遍历经压缩的像素位置时,通过填充颜色值的哈希表来动态地构建新出现的调色板。当遇到在经压缩的输入图像中已插入调色板索引的位置时,用来自动态构建的新出现的调色板的对应颜色值来替换其。来自像素解压步骤1108的输出是经解压的输入图像,其仍然包括对颜色空间变换、空间预测和编码器所执行的其他预处理步骤的编码。
[0127]在步骤1110,对输入图像中的颜色空间变换进行解码。编码的颜色空间变换如上所述基于相应相关因子用红色和蓝色的预测误差来替换了颜色值。相关因子在颜色相关性次分辨率图像中可用。使用存储在颜色相关性次分辨率图像中的相关因子,解码过程使颜色值恢复回到其在没有颜色相关性情况下的值。
[0128]在步骤1112,反转在编码期间执行的空间预测。使用在空间预测次分辨率图像中可用的空间预测器来反转空间预测。对于每一个像素,用实际对应的像素值来替换预测值、或更精确地,预测误差值。
[0129]在步骤1114,反转编码器所执行的一个或多个预处理步骤。在编码期间所执行的预处理步骤可以包括例如阿尔法替换、颜色离散化和调色板选择中的一个或多个。在上面关于编码方法100描述了这些预处理步骤中的每一个。
[0130]当完成方法1100时,获取了原始输入图像的解码版本。
[0131]图12图示了根据实施例的解码器1200。解码器1200包括输入图像解码器1201和图像文件分解器1202。输入图像解码器1201包括熵解码器1204、二维变换解码器1206、像素解压器1208、调色板生成器1210、颜色空间变换解码器1212、空间预测解码器1214和预处理解码器1216。根据实施例,解码器1200执行方法1200来对先前使用诸如方法100的过程来编码的图像进行解码。
[0132]图像文件分解器1202操作来将诸如方法100的编码过程所创建的经压缩的编码的图像文件当作为输入,并且提取经编码的压缩的输入图像、次分辨率图像和协助对输入图像进行解码的其他存储的组分。图10图示了被输入到图像文件分解器1202的经压缩的编码的图像文件的示例性格式。输入图像解码器1201操作来对经编码的压缩的输入图像进行解码,如下所述。根据实施例,还使用输入图像解码器1201来对次分辨率图像中的每一个进行解码。
[0133]熵解码器1204操作来反转通过编码过程对经压缩的输入图像执行的熵编码。熵解码过程使用(从经压缩的编码的图像文件解码的)熵次分辨率图像来为输入图像的每一个块选择熵代码。
[0134]二维变换解码器1206操作来用实际像素距离替换编码器插入在经压缩的输入图像中的二维变换代码。
[0135]像素解压器1208操作来反转编码器所执行的初始压缩。根据实施例,图像解压器将在二维距离代码已被替换之后的熵解码的压缩的图像当作为输入。在解压期间,从左上像素到右下像素遍历经压缩的输入图像,插入来自向后引用的数据、像素值或来自颜色调色板的值。
[0136]调色板生成器1210操作来在对输入图像解压期间动态地创建颜色调色板(在上面被称为“新出现的调色板”)。如关于方法1100的步骤1108所述,当遍历经压缩的像素位置时,通过填充颜色值的哈希表来动态地构建新出现的调色板。
[0137]颜色空间变换解码器1212操作来将解压的输入图像取作为输入,并且反转编码器所插入的颜色空间变换编码。在对颜色空间变换进行解码时,使用以每块为基础存储在颜色空间次分辨率图像中的颜色相关器。在上面关于方法1100的步骤1110描述了颜色空间解码。
[0138]空间预测解码器1214操作来对在编码过程期间所编码的空间预测进行解码。每一个块的空间预测器在空间预测器次分辨率图像中可用。
[0139]预处理解码器1216操作来反转可能已在编码过程期间执行的任何预处理步骤,诸如阿尔法替换、颜色离散化和调色板选择。预处理解码器1216的输出是完全解码的输入图像。
[0140]图13图示了其中可以实现诸如图1-7中所图示的编码方法、图11中所图示的解码方法、编码器800和/或解码器1200的实施例的计算机系统1300。系统1300包括处理器1302,其可以包括用于执行指令和用于处理信息,包括像素信息的任何计算机或电子处理器。处理器1302可以包括能够处理任何指令序列的任何设备或是该任何设备的部分。处理器1302可以包括例如计算机处理器、在移动设备中的处理器或其他电子和/或数字处理器。处理器1302可以例如被包括在计算机、移动计算设备、智能手机、机顶盒、娱乐平台、月艮务器、相机或其他图像捕捉设备、服务器群、云计算机等中。
[0141]处理器1302可以通过总线1308连接到存储器1304。存储器1304可以包括用来存储信息以供系统1300使用或由系统1300输出的易失性存储器、永久性的、虚拟的或另外。存储器1304可以包括例如随机存取存储器(RAM)和/或动态RAM (DRAM)0存储器1304可以用来存储任何信息,诸如系统1300的状态信息。存储器1304例如还可以用来存储系统1300的指令,包括图像处理模块112的指令。系统1300可以根据需要或视情况包括一个或多个处理器1302。
[0142]总线1308可以包括允许在系统1300的各种组件之间的交互的通信基础结构。总线1308可以例如在系统1300的组件之间,诸如在处理器1302和存储器1304之间,载送数据。总线1308可以包括在系统1300的组件之间的无线和/或有线通信介质,并且可以包括并行、串行或其他拓扑安排。
[0143]永久性存储1306可以包括组件,如系统1300用来在某一长时间段内(例如,与存储器1304相比)存储数据的存储器或其他永久性存储。永久性存储1306可以包括如在系统1300中的处理器1302所使用的非易失性主存储器。永久性存储1306可以包括例如闪存、硬盘、光盘或其他计算机可读介质。
[0144]输入/输出接口 1310可以包括到键盘、鼠标、语音命令输入、显示器或其他输入或输出设备的接口。可以通过输入/输出设备接口 1310接收配置命令和/或待被压缩的图像。
[0145]网络接口 1312可以包括到诸如局域网或因特网的网络的一个或多个接口。网络接口 1312可以包括用于有线或无线连接的接口。可以通过网络接口 1312接收配置命令和/或待被压缩的图像。
[0146]在上面借助于说明指定功能及其关系的实现的功能构造块来描述了本发明。为了便于描述,在本文中任意地限定了这些功能构造块的边界。可以限定替选边界,只要所指定的功能及其关系被适当地执行。
[0147]特定实施例的前面描述如此充分地揭示了本发明的一般性质,使得其他人可以在不背离本发明的一般概念的情况下,通过应用在本【技术领域】内的知识而为各种应用容易地修改和/或调整这样的特定实施例,而不用进行过度实验。因此,基于在本文中提供的教导和指导,这样的调整和修改意在在所公开的实施例的等价物的含义和范围内。应当理解的是,在本文中的措词或术语出于描述而非限制的目的,因此本说明书的术语或措词应当由技术人员根据所述教导和指导来解释。
[0148]本发明的宽度和范围不应当受任何上述示例性实施例限制,而是应当仅根据所附权利要求及其等价物来限定。
【权利要求】
1.一种用于对输入图像进行压缩的方法,包括: 基于所述输入图像中的统计相似区域来确定多个熵代码集; 生成包括包含对所述多个熵代码集的引用的第一次分辨率图像的一个或多个次分辨率图像,其中所述引用中的每一个指示所述熵代码集中的用来对所述输入图像中的对应像素进行编码的一个; 使用所生成的一个或多个次分辨率图像来控制包括熵代码的一个或多个压缩参数,而对所述输入图像进行编码;以及 至少输出经编码的输入图像和所生成的一个或多个次分辨率图像作为压缩的熵编码的图像文件。
2.一种用于对输入图像进行压缩的方法,包括: 从所述输入图像针对多个压缩参数中的每一个生成相应次分辨率图像; 使用所述相应次分辨率图像来控制所述多个压缩参数中的每一个,而对所述输入图像进行编码;以及 至少输出经编码的输入图像和所生成的次分辨率图像作为压缩的熵编码的图像文件。
3.根据权利要求2所述的方法,其中生成相应次分辨率图像包括: 基于所述输入图像中的统计相似区域来确定多个熵代码集;以及 生成包括对所述多个熵代码集的引用的第一次分辨率图像,其中所述引用中的每一个指示所述熵代码集中的用来对所述输入图像中的对应像素进行编码的一个。
4.根据权利要求3所述的方法,其中确定所述多个熵代码集包括: 将所述输入图像分成多个块; 为来自所述多个块的各个块确定熵统计量; 根据所确定的熵统计量的相似性对所述多个块进行聚类以形成多个块集群;以及 为所述多个块集群中的每一个确定熵代码。
5.根据权利要求4所述的方法,其中所形成的块集群的数目基于使所述第一次分辨率图像的位的大小最小化来确定。
6.根据权利要求2所述的方法,其中生成相应次分辨率图像包括: 为所述输入图像的各个块确定被配置成减少预测的熵的空间预测器;以及 为所述各个块生成包括所述空间预测器的第二次分辨率图像。
7.根据权利要求6所述的方法,其中对所述输入图像进行编码包括: 从所述第二次分辨率图像为所述输入图像的各个块确定所述空间预测器。
8.根据权利要求6所述的方法,其中确定所述空间预测器进一步基于最小化所述块的编码成本、所述多个块的预测误差以及朝为相邻像素选择的空间预测器的偏向。
9.根据权利要求2所述的方法,其中生成相应次分辨率图像包括: 为所述输入图像的各个块,确定与在所述块的像素中的两个或更多个颜色分量之间的相关性相对应的颜色相关因子;以及 为所述各个块生成包括所述颜色相关因子的第三次分辨率图像。
10.根据权利要求9所述的方法,其中为所述块确定所述颜色相关因子进一步基于: 在绿色分量、红色分量和蓝色分量的任何两个之间的相关性;以及 减少所述块中的红色和蓝色通道中的熵。
11.根据权利要求9所述的方法,其中对所述输入图像进行编码包括: 至少部分使用从所述第三次分辨率图像访问的所述颜色相关因子来确定预测误差。
12.根据权利要求2所述的方法,其中对所述输入图像进行编码包括: 使用单独的熵代码来对红色、蓝色、绿色和阿尔法通道进行编码。
13.根据权利要求2所述的方法,其中对所述输入图像进行编码包括: 为所述输入图像的一个或多个块的各个组局部地确定颜色调色板。
14.根据权利要求13所述的方法,其中所述颜色调色板是使用哈希技术来动态地确定的。
15.根据权利要求2所述的方法,其中存储经编码的输入图像和所生成的次分辨率图像的经编码的次分辨率图像包括使用第一编码技术对所述输入图像、所述第一次分辨率图像、所述第二次分辨率图像和所述第三次分辨率图像进行编码。
16.根据权利要求2所述的方法,其中所述编码包括: 对于所述输入图像中的各个像素,基于相应成本,选择来自下述操作中的一个来生成中间图像:将向后引用插入到更早出现的像素、插入所述像素或插入来自颜色调色板条目的索引;以及 确定从所述中间图像的 第一像素到最后像素的操作的最小成本路径。
17.根据权利要求16所述的方法,其中所述向后引用是以像素来指定的。
18.根据权利要求16所述的方法,其中所述向后引用是使用针对二维平面中的距离的预先确定的距离代码来指定的。
19.根据权利要求16所述的方法,其中所述相应成本中的每一个包括针对对应操作的输出位数。
20.根据权利要求2所述的方法,进一步包括: 用偏移对所述输入图像中的具有半透明的红色、绿色和蓝色值的像素的阿尔法值进行调整。
21.根据权利要求20所述的方法,其中替换阿尔法值包括: 对所述输入图像中的颜色的动态范围进行封装,以减少作为结果的预测误差中的新符号。
22.—种编码器,包括: 处理器; 耦接到所述处理器的存储器; 熵代码生成模块,所述熵代码生成模块被配置成当由所述处理器执行时,促使所述处理器: 基于输入图像中的统计相似区域来确定多个熵代码集;以及 生成包括对所述多个熵代码集的引用的第一次分辨率图像,其中所述引用中的每一个指示所述熵代码集中的用来对所述输入图像中的对应像素进行编码的一个; 图像存储模块,所述图像存储模块被配置成当由所述处理器执行时,促使所述处理器: 使用各个次分辨率图像来控制多个压缩参数中的每一个,而对所述输入图像进行编码;以及 经压缩的图像文件输出模块,所述经压缩的图像文件输出模块被配置成当由所述处理器执行时,促使所述处理器: 至少输出经编码的输入图像和所生成的第一次分辨率图像作为压缩的熵编码的图像文件。
23.根据权利要求22所述的编码器,其中所述熵代码生成模块被进一步配置成当由所述处理器执行时,促使所述处理器: 将所述输入图像分成多个块; 为来自所述多个块的各个块确定熵统计量; 根据所确定的熵统计量的相似性对所述多个块进行聚类以形成多个块集群;以及 为所述多个块集群中的每一个确定熵代码。
24.根据权利要求22所述的编码器,其中所述经压缩的图像文件输出模块被进一步配置成当由所述处理器执行时,促使所述处理器使用第一编码技术来存储经编码的输入图像和所生成的第一次分辨率图像的经编码的版本。
25.—种包括其上编码有指令的计算机可读存储介质的制品,所述指令当由计算设备执行时,促使所述计算设备执行操作,所述操作包括: 基于所述输入图像中的统计 相似区域来确定多个熵代码集; 生成包括包含对所述多个熵代码集的引用的第一次分辨率图像的一个或多个次分辨率图像,其中所述引用中的每一个指示所述熵代码集中的用来对所述输入图像中的对应像素进行编码的一个; 使用所生成的一个或多个次分辨率图像来控制包括熵代码的一个或多个压缩参数,而对所述输入图像进行编码;以及 输出经编码的输入图像和所生成的一个或多个次分辨率图像作为压缩的熵编码的图像文件。
26.一种用于对编码的输入图像进行解压的方法,包括: 对压缩的熵编码的图像文件进行分解来访问经编码的输入图像和关于多个压缩参数中的每一个的相应次分辨率图像; 使用所述相应次分辨率图像来控制所述多个压缩参数中的每一个,对经编码的输入图像进行解码;以及 输出经解码的输入图像。
27.一种解码器,包括: 处理器; 耦接到所述处理器的存储器; 图像文件分解器,所述图像文件分解器被配置成当由所述处理器执行时,促使所述处理器: 对压缩的熵编码的图像文件进行分解来访问经编码的压缩的输入图像和关于多个压缩参数中的每一个的相应次分辨率图像;以及 输入图像解码器,所述输入图像解码器被配置成当由所述处理器执行时,促使所述处理器: 使用所述相应次分辨率图像来控制所述多个压缩参数中的每一个,而对经编码的输入图像进行解码。
【文档编号】H04N19/463GK103703779SQ201280036377
【公开日】2014年4月2日 申请日期:2012年11月2日 优先权日:2011年11月3日
【发明者】于尔基·安特罗·阿拉奎加拉 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1