图像数据的压缩的制作方法

文档序号:6365498阅读:208来源:国知局
专利名称:图像数据的压缩的制作方法
技术领域
本公开概括地涉及压缩,并且更加具体地涉及图像内容的压缩。
背景技术
非常大的用于纹理化(texture)的图像数据典型地存储在图形硬件(例如图像处理单元(GPU))的驻留存储器中,用于由该图形硬件使用。许多GPU实现对于纹理图像的一些压缩方案,可以是硬件专有的,允许GPU从存储器直接读取所压缩的图像。例如,在运行时间,将图像数据编码为与特定GPU兼容的格式并且将其传送到GPU存储器。然后GPU能够解码并且渲染该图像数据
发明内容

本公开描述用于数据的非对称压缩和解压缩的技术和结构。在一个实施方式中,可以接收诸如图像内容的内容。可以使用多个分块截断编码方案对该内容进行编码,产生该图像内容的多个分块截断编码版本。可以将该多个分块截断编码版本组合到一起成为单个数据结构。在一个实施方式中,在组合该多个分块截断编码版本之前,可以进一步压缩每一个分块截断编码版本。在一个实施方式中,利用与分块截断编码方案不同的压缩算法,可以将进一步压缩应用到每一个分块截断编码版本的整体。在一个实施方式中,可以将每一个分块截断编码版本划分为组成分量,并且利用与分块截断编码方案不同的压缩算法,可以通过组成分量类型对该每一个分块截断编码版本进行进一步压缩。在一个实施方式中,可以接收包含多个分块截断编码图像内容版本的数据结构。可以读取该数据结构并且可以确定与渲染硬件的特定片段兼容的分块截断编码版本,并向该渲染硬件提供。然后该硬件可以对所选择的一个分块截断编码格式进行解码用于显示。在一个实施方式中,可以利用与分块截断编码方案不同的压缩算法,对所接收的多个分块截断编码格式版本的每一个进行进一步压缩。在向该硬件提供所选择的版本用于解码之前,可以对进一步对该压缩进行解压缩。


图I是根据一些实施方式用于对图像内容进行编码并且对所编码的版本进行组合的方法的流程图。图2是根据一些实施方式用于对图像内容进行编码并且对所编码的版本进行组合的另一方法的流程图。图3是根据一些实施方式用于对所编码的图像内容进行进一步压缩的方法的流程图。图4是根据一些实施方式用于选择所压缩的媒体内容的格式并且向渲染硬件提供所选择的格式的方法的流程图。图5是根据一些实施方式用于选择所压缩的媒体内容的格式并且向渲染硬件提供所选择的格式的另一方法的流程图。图6a示出了根据一些实施方式对RAW纹理进行编码的示例。图6b示出了根据一些实施方式对所编码的RAW纹理进行进一步压缩的示例。图6c示出了根据一些实施方式选择所压缩的图像内容的格式并且对所选择的格式进行解码的示例。图7示出了根据一些实施方式可以实现对图像内容进行编码并且对所编码的版本进行组合的示例服务器和示例客户端。图8示出了可以在所述实施方式中使用的示例计算机系统。图9a_9c示出了根据一些实施方式用于将DXTl内容、PVRTC内容以及ETC I内容划分为组成分量的示例。 尽管以几个实施方式的示例和说明性附图的方式描述了本公开,但是本领域的普通技术人员将意识到,本公开并不局限于所描述的实施方式或者附图。应该理解,附图及对其的详细描述并非旨在将本公开局限于所公开的特定形式,而是相反,本发明旨在覆盖落入当前公开的精神和范围内的全部变型,等同物和替代物。这里使用的标题仅用于组织目的而并非意味着用于限制本描述的范围。如在整个该申请中使用的,在允许意义上(即意味着具有潜在可能)而非强制意义上(即意味着必须)使用“可以”一词。类似地,词语“包括”意味着包括但不局限于。
具体实施例方式在下面的详细描述中,阐述了各种具体细节以提供对请求保护的主题的全面理解。然而,本领域的普通技术人员将理解,可以在没有这些具体细节的情况下实践请求保护的主题。在其他实例中,没有详细描述本领域的普通技术人员将熟知的方法、装置或者系统以不混淆请求保护的主题。按照对存储在特定装置或者专用计算设备或者平台的存储器内的二进制数字信号进行的算法、或者操作的符号表示的形式,来表示下面详细描述的一些部分。在该具体说明书的上下文中,术语特定装置等等包括通用计算机,一旦对其进行编程则该通用计算机可以执行遵照来自程序软件的指令的具体功能。算法描述或者符号表示是信号处理或者相关领域中的普通技术人员用于向该领域的其他技术人员传达其工作的本质的技术示例。这里认为算法通常为导致期望结果的操作或者类似信号处理的自洽序列。在该上下文中,操作或者处理涉及物理量的物理操控。典型地,尽管不是必要的,这样的量可以采取能够被存储、传输、组合、比较或者以其他方式操控的电或者磁信号的形式。已经证明,理论上出于公共用途的原因,将这样的信号指代为比特、数据、值、要素、符号、字符、项、数量、数字等等有时是方便的。然而,应该理解,要将这些或者类似项的全部与适当的物理量相关联并且只是方便的标签。除非以其他方式专门表述,通过下面的讨论显然的是,将意识到,在整个说明书中,使用诸如“处理”、“计算”、“算术计算(calculate) ”、“确定”等等的术语的讨论,指代诸如专用计算机或者类似专用电子计算设备的特定装置的行为或者过程。因此,在该说明书的上下文中,专用计算机或者类似专用电子计算设备能够操控或者转换在专用计算机或者类似专用电子计算设备的存储器、寄存器、或者其他信息存储设备、传输设备、或者显示设备内典型地表示为物理上的电或者磁量的信号。
如这里所使用的,“第一”,“第二”等等这些术语用作跟随其后的名词的标签,并且并不暗含任何类型的排序(例如空间,时间、逻辑等等)。例如,在具有多个算法的计算机可读存储介质中,术语“第一”和“第二”算法可以用于指代所述算法中的任意两个。换句话说,“第一”和“第二”算法并不局限于逻辑算法0和I。如这里所使用的,术语“以......为基础”用于描述影响确定的一个或者多个因
素。该术语不排除会影响确定的附加因素。即,确定可以仅以那些因素或者至少部分地以那些因素为基础。考虑短语“以B为基础确定A”。尽管B可以是影响A的确定的因素,但 是这样的短语不排除A的确定也以C为基础。在其他实例中,A可以仅以B为基础进行确定。在计算设备上执行的数字图像编辑应用可以用于操控、增强、变换、创建和渲染诸如向量图形、3D图形和视频的图像、图形和视频。根据这里描述的各种实施方式,数字图像编辑应用可以用于渲染、修改和编辑这样的对象,并且可以使用诸如OpenGL、DirectX或者Direct3D的应用编程接口(API)。描述了用于对图像内容进行编码并且对所编码的图像内容进行组合、以及用于选择所压缩的媒体内容的版本并且向渲染硬件提供所选择的格式的方法和装置的各种实施方式。一些实施方式可以包括用于对图像内容进行编码并且对所编码的图像内容进行组合的装置、和/或用于选择所编码的内容的版本并且向渲染硬件提供所选择的版本的装置。例如,编码模块可以接收图像内容作为输入并且利用分块截断编码算法压缩所述图像内容。在一个实施方式中,编码模块可以使用不同的压缩算法进一步压缩相同的内容。组合模块可以将不同压缩的内容的每一个组合为单个数据结构。选择模块可以选择所压缩的图像内容的适当格式用于硬件的特定片段。选择模块可以向渲染硬件进一步提供所选择的版本。在一些实施方式中,可以通过存储在计算机可读存储介质中并且可由计算装置的一个或者多个处理器执行的程序指令实现所述编码、组合和选择模块。如这里所描述的,计算机可读存储介质可以存储可由一个或者多个处理器执行的程序指令以使计算装置执行对图像内容进行编码、并且对所编码的图像内容进行组合、和/或选择所压缩的图像内容的版本并且向渲染硬件提供所选择的版本。编码、组合和选择模块的其他实施方式可以至少部分地通过硬件电路和/或例如存储在非易失性存储器中的固件实现。现在转到图1,该图示出了用于对图像内容进行编码并且对所编码的版本进行组合的一个实施方式。尽管出于容易理解目的按照特定顺序示出了方框,但是可以使用其他顺序。在一些实施方式中,图I的方法可以包括比所示出的更多(或者更少)方框。方框100-120可以自动执行或者可以接收用户输入。如在100处表明的,可以接收图像内容。图像内容可以包括二维(2D)图像数据(例如纹理数据)、向量图形、RGB数据、视频帧等等。例如,图像内容可以包括具有2D木头纹理的栅栏的3D图形的2D木头纹理。在这样的示例中,2D图像部分、木头纹理可以用于在栅栏的3D渲染中进行纹理化。可以以RAW格式接收纹理数据。如在110处示出的,可以使用多个不同的分块截断编码(BTC)方案将图像内容编码为不同的分块截断编码版本。这里可以将图像内容的分块截断编码版本称为“BTC内容” 或者“BTC版本”。BTC方案可以是非对称的。进而,BTC方案可以是具有固定压缩比的基于分块的纹理压缩格式。固定压缩比可以描述压缩全部具有相同大小的像素分块的压缩格式。这与诸如其中每一个压缩的分块可以具有不同大小的JPEG的分块压缩方案形成对比。 在一个实施方式中,BTC方案可以将图像内容的每4X4像素分块编码为32比特。较大的固定压缩比可以产生较大的压缩而以降低的质量为代价。同样,较小的固定压缩比可以产生较小的压缩但是会产生较高质量压缩。与大小无关,这样的编码方案在本质上会是有损的。然而,利用固定压缩比编码的BTC内容会使例如GPU的存储器控制器的存储器控制器从硬件直接读取。可以在各种实施方式中使用的具有固定压缩比的BTC方案的一些示例包括也被称为DXTn或者DXTC的S3纹理压缩(S3TC)、PVRTC-I、PVRTC-II、以及爱立信纹理压缩(ETC)。每一个BTC版本可以与某一图形硬件兼容。例如,一个GPU可以与S3TC编码内容兼容而另一 GPU可以与ETC编码内容兼容。在一个实施方式中,可以利用S3TC、PVRTC、 以及ETC方案中的每一个对图像内容进行编码,以使得该图像内容可以与广泛的硬件相兼容。可以将各种BTC方案包括在服务器上的库中,可以根据其执行编码。在120处,可以将图像内容的不同分块截断编码版本组合为单个数据结构。例如, 在其中使用S3TC、PVRTC和ETC方案的每一个对图像内容进行编码/压缩的实施方式中,可以将编码版本(例如S3TC编码图像内容、PVRTC编码图像内容、以及ETC编码图像内容)组合为单个数据结构。该单个数据结构可以是用于存储、上传和/或传输的单个文件。在一个实施方式中,可以通过分块截断编码版本对所组合的单个数据结构进行结构化。因此,在具有S3TC、PVRTC和ETC版本的示例中,数据结构的第一部分可以是S3TC编码内容,中间部分可以是PVRTC编码内容,并且最后部分可以是ETC编码内容。可以按照与通过格式类型顺序进行的不同方式对数据结构进行结构化。在一个实施方式中,可以在组合为单个数据结构之前对每一个编码类型进行划分,以使得所压缩的格式可以例如通过通道在整个数据结构上散布。数据结构可以包括头部或者其他格式以使得数据结构的适当部分可以通过媒体内容传输协议进 行解析。然后将文件存储到存储介质(例如硬盘),或者可以向客户端传输文件。图2示出了用于对图像内容进行编码并且对所编码的版本进行组合的另一实施方式。尽管出于容易理解目的按照特定顺序示出了方框,但是可以使用其他顺序。在一些实施方式中,图2的方法可以包括比所示出的更多(或者更少)方框。方框200-230可以自动执行或者可以接收用户输入。在200和210处,可以接收图像内容并且可以使用多个不同的分块截断编码(BTC) 方案将其编码为不同的分块截断编码版本。因此,方框200-210的接收和编码可以分别按照与图I的方框100-110的相同或者基本上相同的方式操作。如在220处示出的,可以使用与在210处使用的分块截断编码方案的任意一个不同的压缩算法对图像内容的分块截断编码版本进行进一步编码。进一步编码可以向已经压缩的BTC内容提供附加压缩。按照一些方式,BTC方案可能不提供最有效的压缩。而且,附加压缩可以提供图像内容的更加有效的编码,并且可以允许在附加应用中使用组合的数据结构。在一个实施方式中,可以对全部BTC内容使用通用算法(例如LZMA),压缩BTC内容版本的一个或者多个。如在图3处描述的,BTC内容可以包括包含组成分量的字。在其中使用单个整体压缩算法对整个BTC内容进行编码的实施方式中,在执行附加编码之前可能不需要将“字”解交织为组成分量。然而,通过划分为组成分量,可以实现附加带宽和性能增益。尽管如果组合的文件不用于传输,则带宽考虑不会太明显并且BTC内容的整体通用附加压缩会是充分的。图3示出了对分块截断编码版本的一个或者多个进行进一步编码的一个实施方式。尽管出于容易理解目的按照特定顺序示出了方框,但是可以使用其他顺序。在一些实施方式中,图3可以包括比所示出的更多(或者更少)方框。方框300-320可以自动执行或者可以接收用户输入。如在300处示出的,可以将分块截断编码内容版本的一个或者多个分离为组成分量。诸如S3TC、PVRTC和ETC版本的图像内容的分块截断编码版本可以分别包括组成分量或者通道。通道的数量以及通道的类型可以以BTC的类型为基础进行变化。作为一个示例,BTC内容的组成分量可以包括图像部分和剩余部分。图像部分可以包括两个颜色分量,并且剩余部分可以包括选择器/修改器分量。可以将两个颜色分量以及选择器/修改器分量交织为字。在一个实施方式中,将分块截断编码内容版本分离为组成分量可以包括,将所述分块截断编码内容解交织或者划分为其各自的图像部分和剩余部分。图9a-9c示出了用于将DXTl内容、PVRTC内容以及ETCl内容分别划分为组成分量的示例。在一个实施方式中,在 划分PVRTC内容之前可能需要对该内容进行解旋转。在310处,可以利用压缩算法对组成分量的一个类型进行编码。组成分量的类型可以与压缩内容的图像部分相对应。对于压缩内容,可以使用与在初始编码中使用的BTC方案不同的算法对每一个流(例如图像部分、剩余部分)进行压缩。一些流可以容许有损压缩算法而其他流可以容许无损压缩算法。在一个实施方式中,可以使用可以是无损或者有损的诸如JPEG、PNG、JPEG-XR的颜色压缩技术,对两个颜色图像流进行压缩。如在320处示出的,可以利用另一压缩算法对组成分量的另一类型进行编码。在一些实施方式中,组成分量的另一类型可以与BTC内容的剩余部分相对应。与对BTC内容的图像部分进行编码类似,也可以使用与在初始编码中使用的BTC方案不同的算法对BTC内容的剩余部分进行压缩。在一个实施方式中,用于对BTC内容的剩余部分进行压缩的算法也可以与用于对BTC内容的图像部分进行压缩的算法不同。例如,选择器/修改器流可以包括噪声数据,并且可以使用可以是无损的类似LZ77/霍夫曼或者LZMA的通用标准图像压缩算法进行压缩。返回到图2,在230处,可以将图像内容的双重压缩的分块截断编码版本组合为单个数据结构。方框230可以与方框120基本上类似,除了在组合为单个数据结构之前,BTC版本中的一个或者多个可以包括通用的或者通过组成分量类型的压缩的附加层。双重压缩或者双重的压缩是指附加层的压缩/编码。对图像内容的多个分块截断编码版本进行打包可以提供许多优点。首先,其允许内容创建器设计支持大多数现有GPU的纹理包。进而,在内容授权时刻使用非对称的图像压缩方案(诸如分块截断编码方案),可以允许媒体播放器避免在运行时重新压缩从而降低反应时间。而且,通过对多个分块截断编码版本进行进一步编码,可以实现附加的时间、带宽和存储增益。可以按照下面表示可以与图1-3的编码技术中的一个或者多个相对应的媒体内容的示例编码和组合,其中ATF格式可以是用于存储、上传和/或传输的数据流
权利要求
1.一种方法,包括 接收图像内容; 将所述图像内容编码为多个分块截断编码版本,其中所述压缩包括对于所述多个分块截断编码版本中的每一个使用不同的分块截断编码方案;以及将所述多个分块截断编码版本组合为单个数据结构。
2.根据权利要求I所述的方法,其中所述多个分块截断编码版本至少包括ETCl编码版本、PVRTC编码版本、以及DXTl编码版本。
3.根据权利要求I所述的方法,进一步包括,在将所述多个分块截断编码版本组合为所述单个数据结构之前,利用与所述分块截断编码方案不同的压缩算法进一步压缩所述分块截断编码版本中的每一个。
4.根据权利要求3所述的方法,其中进一步压缩所述分块截断编码版本中的一个包括 将所述分块截断编码内容版本中的一个分离为组成分量; 利用压缩算法对所述组成分量中的一种类型进行编码;以及 利用另一压缩算法对所述组成分量中的另一类型进行编码。
5.根据权利要求4所述的方法,其中所述分块截断编码内容的所述组成分量包括交织为字的两个颜色分量和选择器/修改器分量,以及其中所述分离所述分块截断编码内容包括对所述字进行解交织。
6.根据权利要求4所述的方法,其中所述利用所述压缩算法对所述组成分量的一种类型进行编码包括,利用颜色压缩方案对两个颜色图像分量进行压缩,其中所述颜色压缩方案包括JPEG、PNG或者JPEG-XR中的至少一个。
7.一种存储程序指令的非瞬态计算机可读存储介质,其中所述程序指令为计算机可执行以实现 接收图像内容; 将所述图像内容压缩为多个分块截断编码内容版本,其中所述压缩包括对于所述多个分块截断编码内容版本中的每一个使用不同的分块截断编码方案; 将所述多个分块截断编码内容版本组合为单个数据结构。
8.根据权利要求7所述的非瞬态计算机可读存储介质,其中所述多个分块截断编码内容版本至少包括ETCl编码版本、PVRTC编码版本、以及DXTl编码版本。
9.根据权利要求7所述的非瞬态计算机可读存储介质,其中所述程序指令进一步为计算机可执行以在将所述多个分块截断编码内容版本组合为所述单个数据结构之前,实现利用与所述分块截断编码方案不同的压缩算法对所述分块截断编码内容版本中的每一个进行进一步压缩。
10.根据权利要求9所述的非瞬态计算机可读存储介质,其中对所述压缩内容以及另一压缩内容进行进一步压缩包括 将所述分块截断编码内容分离为组成分量; 利用压缩算法对所述组成分量中的一种类型进行编码;以及 利用另一压缩算法对所述组成分量中的另一类型进行编码。
11.根据权利要求10所述的非瞬态计算机可读存储介质,其中所述分块截断编码内容的所述组成分量包括交织为字的两个颜色分量以及选择器/修改器分量,以及其中所述分离所述分块截断编码内容包括对所述字进行解交织。
12.根据权利要求10所述的非瞬态计算机可读存储介质,其中所述利用所述压缩算法对所述组成分量中的一种类型进行编码包括,利用颜色压缩方案对两个颜色图像分量进行压缩,其中所述颜色压缩方案包括JPEG、PNG或者JPEG-XR中的至少一个。
13.—种方法,包括 在计算设备处接收数据结构,其中所述数据结构包括多个不同的分块截断编码图像内容版本; 确定所述多个不同的分块截断编码图像内容版本中的哪一个与所述计算设备的渲染硬件兼容;以及 向所述渲染硬件提供所确定的一个分块截断编码图像内容版本。
14.根据权利要求13所述的方法,其中利用与分块截断编码方案不同的压缩算法,对所述多个不同的分块截断编码内容版本中的每一个进行进一步压缩。
15.根据权利要求14所述的方法,进一步包括,在向所述渲染硬件提供所确定的一个分块截断编码内容版本之前,对进一步压缩的所确定的一个分块截断编码内容版本进行解压缩,其中所述解压缩针对与所述分块截断编码方案不同的所述压缩算法进行解压缩,以使得在所述解压缩之后,所确定的一个分块截断编码内容版本仍然是分块截断编码的。
16.根据权利要求15所述的方法,其中所述解压缩包括 利用与分块截断编码解码器不同的解码器,对所确定的一个分块截断编码内容版本的组成分量的一种类型进行解压缩;以及 利用与分块截断解码器不同的另一解码器,对所确定的一个分块截断编码内容版本的组成分量的另一类型进行解压缩。
17.根据权利要求13所述的方法,其中利用具有固定压缩比的基于分块的纹理压缩算法,对所述分块截断编码内容版本的每一个进行编码。
18.一种存储程序指令的非瞬态计算机可读存储介质,其中所述程序指令为计算机可执行以实现 在计算设备处接收数据结构,其中所述数据结构包括多个不同的分块截断编码内容版本; 确定所述多个不同的分块截断编码内容版本中的哪一个与所述计算设备的渲染硬件兼容;以及 向所述渲染硬件提供所确定的一个分块截断编码内容版本。
19.根据权利要求18所述的非瞬态计算机可读存储介质,其中利用与分块截断编码方案不同的压缩算法对所述多个不同的分块截断编码内容版本中的每一个进行进一步压缩。
20.根据权利要求19所述的非瞬态计算机可读存储介质,其中所述程序指令进一步为计算机可执行,以实现在向所述渲染硬件提供所确定的一个分块截断编码内容版本之前,对进一步压缩的所确定的一个分块截断编码内容版本进行解压缩,其中所述解压缩针对与所述分块截断编码方案不同的所述压缩算法进行解压缩,以使得在所述解压缩之后所确定的一个分块截断编码内容版本仍然是分块截断编码的。
21.根据权利要求20所述的非瞬态计算机可读存储介质,其中所述解压缩包括利用与分块截断编码解码器不同的解码器,对所确定的一个分块截断编码内容版本的组成分量的一种类型进行解压缩;以及 利用与分块截断解码器不同的另一解码器,对所确定的一个分块截断编码内容版本的组成分量的另一类型进行解压缩。
22.根据权利要求18所述的非瞬态计算机可读存储介质,其中利用具有固定压缩比的基于分块的纹理压缩算法,对所述分块截断编码内容版本的每一个进行编码。
全文摘要
本发明的各实施方式涉及图像数据的压缩。具体地,可以使用多个分块截断编码方案对图像内容进行压缩,产生图像内容的多个压缩版本。可以将多个压缩版本组合到一起成为单个数据结构。在组合多个压缩版本之前,可以对每一个压缩版本进行进一步压缩。在一个实施方式中,可以接收包含图像内容的多个分块截断编码格式版本的数据结构。可以确定来自多个压缩版本的渲染硬件兼容的分块截断编码内容并且向渲染硬件提供。该硬件然后可以对所选择的一个分块截断编码格式进行解码用于显示。在一个实施方式中,可以对所接收的多个分块截断编码内容版本中的每一个进行进一步压缩。在向硬件提供所选择的版本用于解码之前,可以对进一步压缩进行解压缩。
文档编号G06T9/00GK102708574SQ20121004869
公开日2012年10月3日 申请日期2012年2月27日 优先权日2011年2月25日
发明者S·马克特慕伊勒, T·宇罗 申请人:奥多比公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1