CN101536526B - 纹理压缩方法和用于纹理解压缩的计算机处理系统 - Google Patents

纹理压缩方法和用于纹理解压缩的计算机处理系统 Download PDF

Info

Publication number
CN101536526B
CN101536526B CN2007800308877A CN200780030887A CN101536526B CN 101536526 B CN101536526 B CN 101536526B CN 2007800308877 A CN2007800308877 A CN 2007800308877A CN 200780030887 A CN200780030887 A CN 200780030887A CN 101536526 B CN101536526 B CN 101536526B
Authority
CN
China
Prior art keywords
subregion
texture
compression
block
subset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2007800308877A
Other languages
English (en)
Other versions
CN101536526A (zh
Inventor
K·尤查
A·S·C·波米阿诺斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38973124&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101536526(B) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of CN101536526A publication Critical patent/CN101536526A/zh
Application granted granted Critical
Publication of CN101536526B publication Critical patent/CN101536526B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Generation (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

描述了一种纹理压缩方法。该方法包括将具有多个象素的原始纹理分割成原始象素块。接着,对于每个原始象素块,确认一个分区,该分区具有一个或多个不相交的象素子集,这些子集合并在一起就是原始象素块。根据确认的分区,原始象素块被进一步细分成一个或多个子集。最后,每个子集被独立地压缩以形成压缩的纹理块。

Description

纹理压缩方法和用于纹理解压缩的计算机处理系统
技术领域
本发明一般涉及计算机图形中的纹理压缩和解压缩领域。 
背景技术
纹理是在计算因计算机图形画面的光栅化所产生的片段的色彩或外观时使用的一维、二维或多维数据项阵列。纹理可以是图像数据(照相的或计算机生成的)、颜色或透明度数据、粗糙度/光滑度数据、反射率数据等等。提供逼真的计算机图形一般要求很多高质量的细节纹理。提供这样的纹理可能加重可用的计算机内存和带宽的负担。由此,纹理压缩可以降低内存和带宽要求。 
纹理压缩由此变成一般图形硬件特别是3D图形硬件的被广泛接收的特征。的确,纹理压缩的形式可追溯至最早的图形硬件。纹理压缩的目的是降低图形系统的存储和带宽成本,同时尽可能地保持原始纹理的质量。然而,达到这个目的已经被证明是复杂的,已经产生了几种不同方案,下面简要描述其中的一些。 
堆垛化(palettisation)是纹理压缩的最老的形式之一。其根源可追溯至彩色计算机图形的早期。典型地,堆垛化格式用每象素8位数据表示,允许从完整的颜色空间(通常量化成16或32位)中选择最多256种颜色。用这种方案可以很好地表示一些图像,但是对于堆垛化处理则经常产生视觉伪像(visual artifact)。在处理真实世界的图像例如照片时,有限集合的可用颜色很快被用完,堆垛化明显是有局限的。诸如调色(dithering)一类的图像空间技术被用于提高堆垛化图像的质量,但是与纹理一起使用很困难,因为即使纹理被放大,调色的预期效果也可能丢失,而且调色本身也可能引入不想要的伪像。堆垛化方法具有一些其它属性,使它们在图形硬件实施方面的 吸引力减小,例如,在寻找颜色值时它们导致间接性。堆垛化也可能需要存储多个调色板,同时用于多纹理支持。一般而言,利用堆垛化,每比特获得的质量相当低,并且其很大程度上已经被更先进的方法取代。 
由PowerVR开发的矢量量化(“VQ”)是另一种特定的纹理压缩技术。它的工作方式是存储代表性条目的有限“码本”来定义纹理。码本条目是某一尺寸的象素块(典型的2×2或更大)。对于原始纹理中的每个象素块,一个指数被存储到最接近该块的码本条目。VQ可以实现非常高的压缩率(低至约每象素2位),且仍保持不错的质量。虽然如此,对于纹理压缩它将共有一些堆垛化中不想要的质量。例如,在纹理图像上由VQ压缩引入的伪像类型可以是相当明显的,其频繁地显示一些常见纹理内容的视觉伪像,例如平滑渐变(gradient)。 
联合图像专家组(JPEG)算法是另一种图像压缩技术。JPEG以低比特率获得非常高的压缩质量,但是压缩的比率是可变的。与固定比率的方案相比,可变比率压缩使得处理纹理图变得非常困难。结果,除了为降低系统存储器占用的有限目的之外,在消费用3D图形系统中都不采用JPEG压缩。例如,JPEG压缩被用在Sony’sPlaystation(索尼游戏机)2上以降低系统存储器占用,但是系统不直接从压缩的JPEG表示进行纹理化。 
DXTC(有时称为DXTn)是被所有主要硬件供应商采用并且现今被最广泛使用的、基于块的纹理压缩方案。块截断编码(BTC)的扩展显式地存储每4×4象素块的两种16位颜色以及隐式表示为这些端点之间的插值的两种其它色彩,以每象素2位的指数为象素块选择颜色。结果,它实现将全部的颜色压缩为每象素4位。在大多数情况下,DXTC相当好地表示原始纹理数据。然而,对于在每个块内具有很多不同色调的纹理,DXTC存在问题。另外,端点的精度低和插值的数量少可能产生一些渐变上的噪声,尤其是在象素块的对角线方向上。对于包含在不同方向上具有多个独立的颜色渐变的块 的纹理,DXTC也存在问题,因为在将多点映射成穿过颜色空间的一条线时典型地必须牺牲一个渐变的准确压缩。这频繁地发生在诸如标准图的图像中。DXTC扩展允许4分量图像(带α)被表示为每象素8位。 
FXT1是与DXTC竞争的压缩方案。其一般用一些可以在任意给定图像内混合的附加块类型来扩展DXTC,也可以为带α的纹理提供每象素4位的压缩模式。相对DXTC的图像质量增益从来不确定,所以FAT1得到有限的工业支持。 
PVR-TC是近来发展的压缩方案,该方案将图像缩小为其原始尺寸的分数,然后再将其放大回去以获得原始图像的良好的第一近似。这样,通过存储缩小比例的版本然后再添加一些调制以建立原始数据的相当准确的重构来实现纹理压缩。这种纹理压缩方案对于一些类型的数据(尤其是平滑渐变)效果好,并且适度地缩至低比特率。然而,PVR-TC具有使图像有些模糊并且失去高频细节的倾向。有时,PVR-TC压缩似乎也引入其它伪像,例如高频调制噪声和边缘振荡效应(ringing)。 
当前的纹理压缩技术和它们的局限性的回顾表明需要改进这些技术。理想的解决方案应当允许各种类型的数据的压缩并且具有充分利用可用的存储器和带宽的灵活性。另外,传统的纹理压缩方案把特定类型的纹理内容(如JPEG用于拍摄图像)作为目标并且在该集合中表现良好,但是一旦用于指定集合外的图像类型就表现较差。由此,另一个挑战是扩大纹理压缩的范围以充分覆盖更广泛的图像类型。 
附图说明
并入本文中并形成说明书一部分的附图用于图解本发明,并且与说明书一起进一步解释本发明的原理,以使本领域的技术人员能够制造和使用本发明。 
图1示出描述的实施例可以运行的示例性系统; 
图2示出穿过示例性系统的纹理数据流; 
图3是描述压缩方法的流程图; 
图4示出各种分区; 
图5是示出解压缩方法的流程图; 
图6A-D示出64分区的示例性集合,每个分区具有5个不相交子集; 
图7示出32分区的示例性集合,每个分区具有2个不相交子集; 
图8示出12分区的示例性集合,每个分区具有3个不相交子集。 
现在将参考附图描述本发明。在附图中,同样的附图标记指示同样的或功能相似的元件。另外,附图标记最左边的数字代表首次出现该附图标记的附图。 
具体实施方式
序言
纹理是一维、二维或多维数据阵列。纹理有时用于增强或改变图形中表面的外观。“纹理象素(texel)”是纹理基本单位,就像“象素”是照片基本单位一样。术语“象素”和“纹理象素”在本文中可以同义地使用,并且仅指离散的数据单元——如在帧缓冲器、纹理缓冲器和其它类型的存储器或阵列中(x,y)位置上的数据。本文描述的压缩和解压缩方法可以用于压缩多种类型的纹理信息,包括图像数据、照片数据、透明度(α)信息、光滑度或粗糙度数据或其它类似结构的数据。因此,术语“纹理”在本文中泛指使用描述的方法被压缩或解压缩的数据。 
纹理映射是将纹理应用到表示要显示的表面的片段、象素或图元(primitive)中的处理。纹理映射经常用于使画面更真实。例如,可以将建筑正面的照片应用到表示墙的多边形。在纹理映射期间,压缩的纹理基本单位如纹理象素块被从纹理存储器中获得,并表示在 要显示的表面上对应的片段或象素的颜色或其它表面特征。 
随着硬件和软件图形平台支持越来越复杂的纹理映射技术,开发者想要渲染的画面变得更为复杂。这样,复杂的画面经常更好地利用纹理。纹理映射的一个成本是纹理图像经常要求大量的存储器。纹理的存储器可能是有限的,尤其是在硬件渲染系统中,纹理被置于图形子系统的专用存储器中。降低存储纹理映射图像需要的数据量的纹理压缩允许用户将更多的纹理数据装入可用的存储器中。结果是能够使用更多的纹理来实现更高的精度和提高的渲染质量。 
存在“有损”和“无损”两类纹理压缩方案。有损纹理压缩方案是指在解压缩时不能准确还原纹理的压缩技术——即原始纹理数据被不可恢复地改变了。另一方面,无损纹理压缩方案是指允许准确还原原始纹理的那些技术——即通过对经无损压缩技术压缩的纹理进行解压缩,原始纹理数据可以被丝毫不差地恢复。本发明典型地采用有损纹理压缩技术。 
有损纹理压缩技术寻求纹理压缩率(即压缩量)和图像质量之间的平衡。高纹理压缩率提供在存储器使用和速度方面的优势,但一般牺牲图像质量。另一方面,可以高质量地存储纹理,但一般以降低压缩率为成本。计算机图形领域的技术人员将认识到某些应用可能重视图像质量,而其它应用可能重视高纹理压缩率(即低的每象素位数)。因此,总体目标是在满足应用、用户以及用户的图形系统的需要和限制的同时最有效地利用可用的资源。 
随着计算机图形中越来越期望高水平的图像质量,上述的DXTC和其它有损纹理压缩方法的局限变得越来越明显。假定可用的存储器和带宽的量是持续增加的,本发明允许在较低的压缩率下实现更高的图像质量,及在同样的压缩率下实现比现有方法更高质量的压缩。当每象素位数更高时,存在一个挑战是试图达到与具有较高压缩率的方案相同的每位质量。为了应对这个挑战,本发明进一步完善基于块的图像压缩技术例如DXTC,以灵活的方法对纹理块进行预压缩分区。预压缩分区通过灵活地选择适合被压缩的纹理块的特征的分区 来改进图像质量,而不是采用在其它方法中建议的一个尺寸适用全部的方案。 
示例环境
在详细描述本发明的实施例之前描述可以安装数据压缩设备的示例环境。图1示出图形系统100。图形系统100包括但不限于计算机110、诸如键盘或鼠标(未示出)的多种输入设备160、诸如液晶显示(LCD)监视器或阴极射线管(CRT)监视器(未示出)的输出设备170。计算机110可以包括但不限于中央处理器(CPU)120、图形处理单元(GPU)140、主存储器130和图形存储器150。本领域普通技术人员应该理解,组件可以用各种方式组合。例如,CPU和GPU可以被组合为单个设备。类似地,本发明的示例性实施例可以将主存储器和图形存储器组合为单个存储器。类似地,其它组合也是可以的。 
计算机110可以是便携计算机、膝上计算机、桌上计算机、服务器、大型机、手提设备(如移动电话、相机、便携媒体播放器)、数字电视等。主存储器130可以是随机访问存储器(RAM)或一些其它存储设备。对于静态数据,主存储器也可以包含只读存储器(ROM)。主存储器130可以用于在CPU 120执行指令期间存储信息,例如处理器指令、临时变量或缓存信息。图形存储器150也可以由RAM、ROM或其它存储装置构成,并且主要用于存储诸如画面信息和纹理数据的图形信息。还示出外部存储器或外部存储装置135,例如可以用于存储纹理数据的硬盘或其它存储装置。应当注意,纹理可以用未压缩的格式或压缩的格式存储。预压缩的数据将通过CPU而不被修改。 
图形系统100也可以包括外部通信设备180,例如调制解调器、有线或无线网络接口卡或其它已知的接口设备。外部通信设备180允许与局域网(LAN)、广域网(WAN)、因特网或任何其它已知类型的外部网络之间的通信链接。图形系统100的所有元件典型地被耦合到用于路由信息和指令的通信总线190。 
GPU 140包含图形硬件,图形硬件一般包括将画面和纹理数据转化为准备显示的信息的渲染流水线。一些图形硬件系统可以包括专用于纹理信息的单独流水线。GPU 140典型地也具有保存要输出到视觉显示设备的信息的本地存储装置。 
图2进一步示出纹理数据通过示例性的图形系统可以采用的路径。未压缩的纹理源210(如纹理数据库或库)被耦合到CPU 120。纹理压缩引擎220在CPU 120内。纹理压缩引擎220主要负责使用硬件、软件或两者的组合来实施本发明的纹理压缩方法。 
压缩的纹理接着可以被存储于耦合到CPU 120的图形存储器150或外部存储器135中。GPU 140所使用的纹理数据被存储于图形存储器150中。在一些实施中,这可以是存储器的专用区域——即纹理存储器250。图形存储器150和CPU 120都耦合到GPU 140。纹理解压缩引擎240在GPU 140内。纹理解压缩引擎240主要负责解压缩或解码经过压缩的纹理数据,以便其可以被GPU 140使用。GPU可以使用该纹理数据产生由输出设备170或在进一步处理中使用的数据。 
压缩原理
如上所述,本发明表示诸如DXTC的基于块的纹理压缩方案的进一步完善。象DXTC,在优选实施例中实施的基本压缩算法将图像划分或分割为离散的象素块(如4×4象素或8×8象素块)并将它们压缩。 
然而,不是机械地压缩常规纹理块,本发明引入了在压缩前将块在内部进一步细分或分区为不同形状和尺寸的“子集”的构思。接着,每个子集被用类似于DXTC的方式压缩。预压缩细分解决了已有的DXTC压缩的几个图像质量问题,并且导致感知和测量的质量的显著的全面改进。另外,它提高了压缩不常见类型的纹理数据(例如非写实的纹理、卡通等等)的能力。 
图3A-C是更具体地示出本发明实施例的流程图。首先,在纹理压缩引擎中接收要被压缩的原始纹理。与其它基于块的纹理压 缩方案一样,接着,原始纹理被按照步骤305分割或划分为原始象素块。典型地,原始象素块是正方或矩形块——如4×4或8×8象素。原始象素块的尺寸是可变的,并且可以根据用户需要、应用需要和/或系统容量来选择原始象素块的尺寸。 
如310中所示,每个原始象素块接着从步骤315进行到325。按照步骤315,确认分区,它描述了原始象素块被进一步分割的方式。每个分区定义多个不相交的象素子集,这些子集合并在一起就是原始象素块。分区可以由单个子集构成,在这种情况下,子集等同于单个象素块。图4示出多种类型的分区及其包含的子集的一些基本例子。分区内子集的尺寸和排列是全部可变的,即除了专用于定义子集的位数之外,不限制子集的数目或构造。例如,分区可以具有8个或16个子集,如分别在分区402和404中的情形。替代地,分区也可以具有3个或6个子集,如分别在分区408和406中的情形。 
典型地,从分区的预定义集合中选择分区。在预定义集合中可用分区的数目可以变化,但是受限于专用于中继信息的数据结构中的位数。例如,如果有6个专用于描述分区的“分区位”,则预定义的分区集合可以包含多达64个不同分区。一些实施例可以具有几个分区集合,每个集合中的分区将块划分为同样数目的子集,将被使用的分区集合(因此块的子集数目)由选择器确认。例如,如果选择器具有两位,并且有6个分区位,则可以有64个两子集分区构成的一个集合、64个三子集分区构成的另一集合、64个四子集分区构成的第三集合以及64个五子集分区构成的第四集合。下面更具体地描述这个实施例的具体数据结构。 
在图6A-D中示出一个由64个分区组成的示例性集合,每个分区具有5个子集。为了清楚起见,完整的分区集合在4页图中示出,其中16个这样的分区由图6A的分区600A示出。一个示例性的分区602在图6A中被示出。其中,8×8象素块被细分为5个不相交子集,第一子集包含标记为0的象素,第二子集包含标记为1的象素,第三子集包含标记为2的象素,第四子集包含标记为3的象素,第五 子集包含标记为4的象素。 
类似地,图7示出32个分区,每个分区具有两个不相交子集。示例性的分区702在图7中被示出。其中,4×4象素块702被细分为2个不相交子集,第一子集包含标记为0的象素,第二子集包含标记为1的象素。图8示出16个分区构成的集合,每个分区被细分为3个不相交子集。示例性的分区802在图8中被示出。其中,4×4象素块802被细分为3个不相交子集,第一子集包含标记为0的象素,第二子集包含标记为1的象素,第三子集包含标记为2的象素。 
分区集合可以是任意尺寸,最多达到对块分区的方式数的组合极限。在为有效编码而设计的实施例中,为了限制在想要的码尺寸内,将定义更加受限的分区集合。一个实施例对每个纹理可以允许一个唯一的分区集合,或者要求所有的纹理共用同样的固定的分区集合。可以对于每个原始象素块评估质量函数,以帮助选择合适的分区。一旦分区被确认,原始象素块就根据确认的分区被细分为一个或多个子集,如步骤320中所示。 
接着,按照步骤325,每个子集接着被独立地压缩以形成压缩的纹理块。在一个实施例中,可以使用在颜色空间中定义一条线的两个显式端点参数以及根据预定义的量化所选择的线上的多个隐式点来压缩每个子集。然而,描述的方法不局限于这一特定压缩方案。例如,也可以采用堆垛化或其它矢量量化压缩算法。 
在压缩象素的子集之后,压缩的纹理块可以被评估以进一步细化分区选择。在图3B-3C中示出两个这样的评估实施例。评估典型地要求(i)对压缩的纹理块进行解压缩以获得原始象素块的近似以及(ii)比较原始象素块和原始象素块的所述近似以获得质量参数。这些步骤被反映在图3B的步骤330和332以及图3C的步骤340和342中。 
从用于量化解压缩的纹理块与原始象素块相比时的某一方面的预定义函数中导出质量参数。例如,预定义函数可以评估原始象素块中的象素颜色与原始象素块的近似中的象素颜色相比的结果, 以获得总误差近似。误差近似可以是均方根(RMS)误差,由例如各个象素颜色误差相对于块中所有象素的贡献的平方和构成。替代地,可以取决于用户需要采用其它函数。例如,该函数可以评估亮度或透明度或用户认为重要的任何其它纹理参数。如下面详细描述的,质量参数被用于衡量在选择的分区下进行的压缩相对于其它分区或相对于预选的质量参数阈值的相对成功。 
在图3B的实施例中,在步骤334中判断在确认的分区下的质量参数是否达到预选阈值。如果达到,则按照步骤336,确认的分区变成当前象素块的最终分区。如果质量参数没有达到预选的阈值,则根据步骤335,确定是否还有没有获得质量参数的分区。如果仍有这样的未测试分区,则该方法返回到步骤315。在这个实施例中,用户可以基于各种参数选择纹理块压缩的最低质量标准。在这个实施例中,质量参数值也被跟踪,如果没有达到阈值质量值,则产生最佳质量值的分区被选择,如步骤337所示。 
接着,在步骤338中,原始象素块被根据最终分区细分成一个或多个最终子集。最终细分产生的子集接着被独立地压缩以形成压缩的纹理块,如步骤339所示。 
在替代实施例中,如图3C所示,从预定义的分区集合来确认分区。接着,对于分区集合中的每个分区获得质量参数。按照图3C的步骤344,如果对于预定义分区集合的每个分区还没有获得质量参数,则该方法返回到步骤315,在步骤315中选择另一个分区。在这个实施例中,系统接着选择产生最佳质量参数的分区,如步骤346所示。接着,在步骤348中,根据最终分区将原始象素块细分为一个或多个最终子集。最终细分产生的子集接着被独立地压缩,以形成压缩的纹理块,如步骤349所示。 
本领域的技术人员可以采用多种其它方式来确认和选择适当的分区。上述实施例可以根据程序设计者的具体需要来修改,取决于具体实施想要哪种数据压缩。 解压缩原理 
对根据本方法压缩的纹理块进行解压缩本质上涉及逆向作业。图5是描述这样的解压缩方案的流程图。按照步骤505,接收代表原始纹理块的压缩纹理块。 
接下来的解压缩步骤510包括确定原先用于压缩纹理的分区,该分区定义压缩纹理块要被分拆成的一个或多个不相交子集。如压缩讨论中提及的,分区定义在压缩前未压缩的纹理块被进一步细分为不相交子集的方式。因此,必须在解压缩子集之前确定子集的尺寸和形状。 
按照步骤515,接着基于确定的分区对每个子集的数据进行分拆。“分拆”是指从被要求对存储在子集中的数据进行解压缩的块中提取信息。最后,按照步骤520,子集被独立地解压缩,以生成原始纹理块的近似。典型地,该近似随后将被GPU的纹理映射算法使用,并且应用到渲染的表面以便显示,但是在某些情况下,它也可以用于进一步的处理阶段。 
示例性的实施例
下面描述的是上述压缩方法的几个示例性实施例。它们包括用于实现上述压缩原理的示例性数据结构和伪码。本发明不局限于这些实施例,而仅由所附权利要求的范围限制。本领域的技术人员可以预见和实现对这些实施例的改变,只要它们处在本发明的精神和范围内。 
第一实施例是对于DXTC压缩的直接的、更高质量的替换。它将24位RGB数据压缩为每象素4位。来自DXTC的穿透(punch-through)α编码也被支持,其中数据结构中的指数之一支持完全透明的“黑象素”用于所谓的“穿透”纹理。如下面描述的,纹理被划分为8×8象素块以便压缩。每个压缩块具有下述的名义格式。然而,合并(packing)和存储的确切细节将依赖于实施,并且可以被重新排序以使硬件解压缩尽可能地简单。在第一实施例中,纹理块被细分为2、3、4或5个子集。具体的数据结构在下面被更全面地描述。 
具有2个子集的分区数据结构: typedef union{struct{unsigned int blockType:2;unsigned int colour0:14,colour1:14,colour2:14,colour3:14;unsigned int partitionBits:6;unsigned int t00:3,t01:3,t02:3,t03:3,t04:3;unsigned int t05:3,t06:3,t07:3,t08:3,t09:3;unsigned int t0a:3,t0b:3,t0c:3,t0d:3,t0e:3;unsigned int t0f:3,t10:3,t11:3,t12:3,t13:3;unsigned int t14:3,t15:3,t16:3,t17:3,t18:3;unsigned int t19:3,t1a:3,t1b:3,t1c:3,t1d:3;unsigned int t1e:3,t1f:3,t20:3,t21:3,t22:3;unsigned int t23:3,t24:3,t25:3,t26:3,t27:3;unsigned int t28:3,t29:3,t2a:3,t2b:3,t2c:3;unsigned int t2d:3,t2e:3,t2f:3,t30:3,t31:3;unsigned int t32:3,t33:3,t34:3,t35:3,t36:3;unsigned int t37:3,t38:3,t39:3,t3a:3,t3b:3;unsigned int t3c:3,t3d:3,t3e:3,t3f:3;}twoPartitionMode; 
具有3个子集的分区数据结构:struct{unsigned int blockType:2;unsigned int colour0:20,colour1:20,colour2:20;unsigned int colour3:20,colour4:20,colour5:20;unsigned int partitionBits:6;unsigned int t00:2,t01:2,t02:2,t03:2,t04:2;unsigned int t05:2,t06:2,t07:2,t08:2,t09:2;unsigned int t0a:2,t0b:2,t0c:2,t0d:2,t0e:2;unsigned int t0f:2,t10:2,t11:2,t12:2,t13:2;unsigned int t14:2,t15:2,t16:2,t17:2,t18:2,t19:2;unsigned int t1a:2,t1b:2,t1c:2,t1d:2,t1e:2,t1f:2;unsigned int t20:2,t21:2,t22:2,t23:2,t24:2,t25:2,t26:2,t27:2;unsigned int t28:2,t29:2,t2a:2,t2b:2,t2c:2,t2d:2,t2e:2,t2f:2;unsigned int t30:2,t31:2,t32:2,t33:2,t34:2,t35:2,t36:2,t37:2;unsigned int t38:2,t39:2,t3a:2,t3b:2,t3c:2,t3d:2,t3e:2,t3f:2;}threePartitionMode; 
具有4个子集的分区数据结构:struct{unsigned int blockType:2;unsigned int colour0:15,colour1:15,colour2:15,colour3:15;unsigned int colour4:15,colour5:15,colour6:15,colour7:15;unsigned int partitionBits:6;unsigned int t00:2,t01:2,t02:2,t03:2,t04:2,t05:2,t06:2,t07:2;unsigned int t08:2,t09:2,t0a:2,t0b:2,t0c:2,t0d:2,t0e:2,t0f:2;unsigned int t10:2,t11:2,t12:2,t13:2,t14:2,t15:2,t16:2,t17:2;unsigned int t18:2,t19:2,t1a:2,t1b:2,t1c:2,t1d:2,t1e:2,t1f:2;unsigned int t20:2,t21:2,t22:2,t23:2,t24:2,t25:2,t26:2,t27:2;unsigned int t28:2,t29:2,t2a:2,t2b:2,t2c:2,t2d:2,t2e:2,t2f:2;unsigned int t30:2,t31:2,t32:2,t33:2,t34:2,t35:2,t36:2,t37:2;unsigned int t38:2,t39:2,t3a:2,t3b:2,t3c:2,t3d:2,t3e:2,t3f:2;}fourPartitionMode; 
具有5个子集的分区数据结构: struct{unsigned int blockType:2;unsigned int colour0:12,colour1:12,colour2:12,colour3:12;unsigned int colour4:12,colour5:12,colour6:12,colour7:12;unsigned int colour8:12,colour9:12;unsigned int partitionBits:6;unsigned int t00:2,t01:2,t02:2,t03:2,t04:2,t05:2,t06:2,t07:2;unsigned int t08:2,t09:2,t0a:2,t0b:2,t0c:2,t0d:2,t0e:2,t0f:2;unsigned int t10:2,t11:2,t12:2,t13:2,t14:2,t15:2,t16:2,t17:2;unsigned int t18:2,t19:2,t1a:2,t1b:2,t1c:2,t1d:2,t1e:2,t1f:2;unsigned int t20:2,t21:2,t22:2,t23:2,t24:2,t25:2,t26:2,t27:2;unsigned int t28:2,t29:2,t2a:2,t2b:2,t2c:2,t2d:2,t2e:2,t2f:2;unsigned int t30:2,t31:2,t32:2,t33:2,t34:2,t35:2,t36:2,t37:2;unsigned int t38:2,t39:2,t3a:2,t3b:2,t3c:2,t3d:2,t3e:2,t3f:2;}fivePartitionMode;} 
对于上述示例性的数据结构,<blockType>字段具有2个固定位来指示分区中有多少子集。下一个字段指示子集的颜色端点。在每个子集中显式存储2种颜色的情形下,具有2个子集的分区存储4种颜色,具有5个子集的分区存储10种颜色。每个数据结构具有6个“partitionBits(分区位)”,用于从64种可能的分区模式组成的预定义集合中选择分区。每个<blockType>具有由64个可能的预定义分区组成的它自己的集合。 
实际上,为了简化解压缩和使其更便宜,第一实施例仅使用由64个显式预定义的分区组成的一个基础集合,其对于5个子集的情形而定义,如图6A-D所示。接着,例如可以通过合并该表内的区域,即对分区内的子集执行合并来创建具有较少子集的分区表。例如,可以通过合并子集4+3获得4个子集,而通过合并子集4+3和0+1可以获得3个子集。其它组合当然也可以。通过从上述表中获得所有模式的分区,可以降低硬件中对表的存储要求。 
优选地,分区子集的颜色如下重构:每个子集使用直接映射到该子集的、显式定义的颜色中的两种。在这个实施例中,通过从高位移动和复制到低位,将显式颜色从它们的基本表示提升到高达每分量8位。即,红色、绿色和蓝色每种颜色8位(“RGB 8.8.8”),称为“RGB”颜色空间。 
接着使用所述两种显式颜色作为RGB颜色空间中的一条线的端点来为子集生成颜色。剩余(隐式)颜色均匀地沿该线分布。 在这个实施例中,为了更高的质量希望获得比端点精度更高的隐式颜色——即高于每分量8位。子集中的每个象素或纹理象素具有从线上查找使用哪种颜色的指数。每个子集可以使用隐式颜色沿着线相对于端点的两种不同分布之一。今后我们将这些不同的分布称为颜色渐变坡(color ramp)——渐变坡由端点和分布的颜色构成。通过把端点看作无符号的数字并且执行下列简单的比较:如果(颜色0<颜色1)使用渐变坡0,否则使用渐变坡1,来确定使用哪种渐变坡。最后,在下面的每个数据结构的部分中定义确切的颜色推导。 
例如,在具有2个子集的分区中,以14位(RGB 5.5.4)精度存储4种颜色。每个纹理象素或象素指数是3位,所以渐变坡具有8个位置。该渐变坡推导如下:unsigned BYTE c[8][4];if(colour0>colour1){c[0]=colour0;c[7]=colour1;//Set alpha to 1.0c[0][0]=0xff;c[7][0]=0xff;for(i=0;i<4;i++){c[1][i]=(6*c[0][i]+1*c[7][i]+3)/7;c[2][i]=(5*c[0][i]+2*c[7][i]+3)/7;c[3][i]=(4*c[0][i]+3*c[7][i]+3)/7;c[4][i]=(3*c[0][i]+4*c[7][i]+3)/7;c[5][i]=(2*c[0][i]+5*c[7][i]+3)/7;c[6][i]=(1*c[0][i]+6*c[7][i]+3)/7;}}e1se{c[0]=colour0;c[7]=colour1;//Set alpha to 1.0c[0][0]=0xff;c[7][0]=0xff;for(i=0;i<4;i++){c[1][i]=(5*c[0][i]+1*c[7][i]+2)/6;c[2][i]=(4*c[0][i]+2*c[7][i]+2)/6;c[3][i]=(3*c[0][i]+3*c[7][i]+2)/6;c[4][i]=(2*c[0][i]+4*c[7][i]+2)/6;c[5][i]=(1*c[0][i]+5*c[7][i]+2)/6;}//Colour 6 is treated as transparentc[6]=transparent;c[6][0]=0;} 
在上述例子中,子集中的每个象素用颜色集合中的3位指 数表示。 
在具有3个子集的分区中,替代地,可以20位(RGB 7.7.6)精度存储6种色彩。每个纹理象素指数是2位,所以渐变坡具有4个位置。该渐变坡推导如下:unsigned BYTE c[4][4];if(colour0>colour1){c[0]=colour0;c[4]=colour1;//Set alpha to 1.0c[0][0]=0xff;c[4][0]=0xff;for(i=0;i<4;i++){c[1][i]=(2*c[0][i]+1*c[4][i]+1)/3;c[2][i]=(1*c[0][i]+2*c[4][i]+1)/3;}}else{c[0]=colour0;c[4]=colour1;//Set alpha to 1.0c[0][0]=0xff;c[4][0]=0xff;for(i=0;i<4;i++){c[1][i]=(c[0][i]+c[4][i]+1)/2;}//Colour 3 is treated as transparentc[3]=transparent;c[3][0]=0;} 
在上述例子中,子集中的每个象素用颜色集合中的2位指数表示。 
在具有4个子集的分区中,替代地,可以15位精度(RGB5.5.5)存储8种色彩。每个象素用颜色集合中的2位指数表示。颜色推导与3分区模式相同。类似地,在具有5个子集的分区中,替代地,可以12位精度(RGB 4.4.4)存储10种色彩,纹理象素表示类似于4子集模式。 
应当注意,用于格式的最优分区集合将由用户和应用的性质来确定。本领域的技术人员将认识到一个分区集合不可能对于所有图像都是最优的。与DXT1相比的图像质量 
使用图6描述的64分区集合相对于S3图形的DXT1(有时也称为DXTn或DXTC)测试上述第一实施例。该测试表明这个实施例在测试的均方根误差和感知的图像质量两个方面对于所有测试的图像都给出比DXT1更高质量的压缩。采用均方根(RMS)误差作为基本质量参数,所获得的增益一般在降低总RMS误差的10-15%到降低50%或更大比例的范围内变化。 
小范围的RMS改进典型地在更写实的纹理上被发现,即使在总RMS只有相对小的改进的情形下,由于上述实施例在一些DXT1最显著的质量问题,尤其是容易引入低频噪声(或“模块化”)和从一个区域到另一个区域的渗色方面的改进,所以它可以给出显著更好的感知质量。RMS的最大改进倾向于发生在非写实的纹理例如卡通或象“标题显示”的项上,其中上述实施例在视觉质量上通常给出非常显著的改进。 
上述的可变分区的方案在RMS误差方面是有优势的。另外,它也显著改进感知质量,并且几乎全部消除一些图像伪像。下表示出对于各种图像类型的一些测试结果。 
Figure G2007800308877D00161
与其它压缩方法相比的图像质量 
在测试中,上述实施例一贯地产生比本文的介绍中讨论的其它压缩方法例如堆垛化和矢量量化更高质量的图像。在同样的压缩 率上比较这些方案已经显示上述实施例在RMS误差和主观质量方面与其它固定比率的压缩格式相比有更高的质量。它也很好地适用于多种输入图像类型,很大程度上不依赖于输入数据的特定类型(如照片)来产生高质量压缩——已讨论的其它压缩方法中的一些对某一子集的图像表现相当好,但是在给出更大范围的数据时失效。 
替代实施例
第二实施例意在作为DXT5的直接替换。它的数据结构类似于上述的第一实施例和DXT1。它使用与第一实施例相同的颜色编码,但是每个8×8颜色块附有下列格式的8×8α块。struct{unsigned int alpha0:8;unsigned int alpha1:8;unsigned int alpha2:8;unsigned int alpha3:8;unsigned int alpha4:8;unsigned int alpha5:8;unsigned int alpha6:8;unsigned int alpha7:8;unsigned int t00:3,t01:3,t02:3,t03:3,t04:3,t05:3,t06:3,t07:3;unsigned int t08:3,t09:3,t0a:3,t0b:3,t0c:3,t0d:3,t0e:3,t0f:3;unsigned int t10:3,t11:3,t12:3,t13:3,t14:3,t15:3,t16:3,t17:3;unsigned int t18:3,t19:3,t1a:3,t1b:3,t1c:3,t1d:3,t1e:3,t1f:3;unsigned int t20:3,t21:3,t22:3,t23:3,t24:3,t25:3,t26:3,t27:3;unsigned int t28:3,t29:3,t2a:3,t2b:3,t2c:3,t2d:3,t2e:3,t2f:3;unsigned int t30:3,t31:3,t32:3,t33:3,t34:3,t35:3,t36:3,t37:3;unsigned int t38:3,t39:3,t3a:3,t3b:3,t3c:3,t3d:3,t3e:3,t3f:3;}APC2_ALPHA_BLOCK; 
α块象颜色块一样被细分成子集,但是没有在该格式中使用的显式分区位。相反,在分区中对于每个子集排序端点,以获得从16个可能分区组成的表中选择的4位。 
对于α编码,由于一般高质量的基本压缩方案,从附加子集获得的质量增益很快达到递减回报,所以每个分区较少数目的子集是可以接受的。避免显式分区位允许在DXT5中保持尽量高的端点的精度。不再使用显式的0和1下的6插值编码,但这个损失一般比增加预压缩分区引起的偏移大。α推导典型地应当保持至少12位的分数精度。尽管旧DXT5对于推导仅需要8位精度,但是它更灵活地允许使用插值的全部潜在精度的格式。 
对于颜色块,用上述格式解码一般意味着不再需要透明度 穿透α编码。然而,对于分区中的每个子集解码到3或4种颜色的能力可能导致质量差异。如下面所述,对这种第二实施例格式有很多可能的扩展。 
一个例子是α扩展。如上面指出的,在第一实施例下颜色块的分区数目被限制为仅64种可能性,仅留下两个“空”位。在第二实施例的格式下,一种另外的可能性是利用这两位逐个块地判断哪个信道被表示在α块中。给定2位,具有4种可能性:0——颜色块包含RGB,α块包含A1——颜色块包含AGB,α块包含R2——颜色块包含RAB,α块包含G3——颜色块包含RGA,α块包含B 
在解码后,信道将被搅拌回正常的次序。为每个块选择不同的搅拌(swizzle),可以显著地提高压缩质量。 
第三到第六实施例与上述第一实施例的不同在于它们压缩不同数目的分量——即,不是压缩RGB空间内的三种颜色,而是压缩单个分量或其它纹理变量。例如第三实施例对于单个信道数据是1分量压缩格式。它使用与第二实施例中的α块相同的压缩并且允许将约12位精度的原始数据压缩到4位。 
第四实施例是2分量压缩格式。它与ATI2N/3DC压缩(由ATI Technologies开发)基本类似,并且与上述第三实施例使用相同的用于每个分量的块格式。 
第五实施例是4分量压缩格式,与第三实施例使用相同的用于每个分量的块格式。 
第六实施例格式是为要求比上述第一实施例提供更高质量的压缩的开发人员设计的。它压缩到每象素8位(与第一实施例的每象素4位相比),但是压缩的纹理质量高得多,并且该格式可以处理具有3个或4个信道的图像。用第六实施例压缩的纹理一般几乎与未压缩的源纹理难以区分。第六实施例的原理非常类似于第一实施例,但是通过压缩4×4象素块来工作。 
在第六实施例中,每块包含每个分区2个或3个子集。typedef union{struct{unsigned int blockType:1;unsigned int colour0:19;unsigned int t0:3;unsigned int t1:3;unsigned int t2:3;unsigned int t3:3;unsigned int partitionBit0:1;unsigned int colour1:19;unsigned int t4:3;unsigned int t5:3;unsigned int t6:3;unsigned int t7:3;unsigned int partitionBit1:1;unsigned int colour2:19;unsigned int t8:3;unsigned int t9:3;unsigned int tA:3;unsigned int tB:3;unsigned int partitionBit2:1;unsigned int colour3:19;unsigned int tC:3;unsigned int tD:3;unsigned int tE:3;unsigned int tF:3;}twoPartitionMode;struct{unsigned int blockType:1;unsigned int colour0:13;unsigned int t0:3;unsigned int t1:3;unsigned int t2:3;unsigned int t3:3;unsigned int t4:3;unsigned int t5:3;unsigned int colour1:13;unsigned int colour2:13;unsigned int t6:3;unsigned int t7:3;unsigned int colour3:13;unsigned int colour4:13;unsigned int t8:3; unsigned int t9:3;unsigned int colour5:13;unsigned int tA:3;unsigned int tB:3;unsigned int tC:3;unsigned int tD:3;unsigned int tE:3;unsigned int tF:3;unsigned int partitionBit:1;}threePartitionMode;DWORD rawData[4];}OPC8_BLOCK; 
<blockType>指定数据结构包含每个分区两个还是三个子集。没有透明度编码,颜色渐变坡总是有8个点。如上所述,第六实施例具有很多不同的分区。 
对于两子集分区,数据结构包含4个端点,以19位(RGB6.7.6)精度来指定。指数尺寸是3位,存在32个可能的分区,以类似于下述方式选择:partition=(block->colour0>block->colour1)?0x1:0;partition|=(block->colour2>block->colour3)?0x2:0;partition|=(block->partitionBit0)?0x4:0;partition|=(block->partitionBit1)?0x8:0;partition|=(block->partitionBit2)?0x10:0; 
对于3子集分区,数据结构包含6个端点,以13位(RGB4.5.4)精度来指定。指数尺寸是3位。存在16个可能的块分区,以类似于下述方式选择:partition=(block->partitionBit)?0x1:0;partition=(block->colour0>block->colour1)?0x2:0;partition|=(block->colour2>block->colour3)?0x4:0;partition|=(block->colour4>block->colour5)?0x8:0; 
第六实施例的一个实施已经被测试并显示给出对于最多3个信道(RGB)的纹理可以被认为“感觉无损”的质量水平。换句话说,如果压缩的和未压缩的表示被并排比较,即便被放大和近距离注视,观察者也很难确定哪个是哪个。细节和颜色保存得非常好,并且引人注意的伪像非常少。压缩质量在真实图像和人造图像两方面都很高,在比较第六实施例和DXT1时,3信道纹理上的RMS误差典型地被降低至少50%,更普遍地降低70%或更多。在标准图即表面标准图 压缩也可能以这种格式实现时,质量不如其它替代方案(3DC/BC5)高。 
结论
尽管上面已经描述了本发明的多个实施例,但应该理解,这些实施例只是为了举例而并没有限制的含义。应当注意,可以用纹理压缩领域之外的数据压缩方法来实现上述众多特征。对本领域技术人员来说在形式和细节上可以做出众多改变是清楚的,只要它们处在本发明的精神和范围内。因此,本发明的范围不局限于任何上述示例性实施例,而应当根据所附权利要求或其等同物来定义。 

Claims (20)

1.一种纹理压缩方法,包括:
(a)将具有多个象素的原始纹理分割成原始象素块;
对于每个原始象素块:
(b)从预先定义的分区集合中确认一个分区,所述分区具有一个或多个不相交的象素子集,这些象素子集合并在一起就是所述原始象素块;
(c)根据确认的分区将所述原始象素块细分成一个或多个子集;以及
(d)独立地压缩每个子集以形成压缩的纹理块;
其中,所述预定义的分区集合包括显式定义的分区基础集合以及从该基础集合导出的分区的附加集合。
2.根据权利要求1的方法,还包括:
对于每个原始象素块,
对于该原始象素块评估一函数;
基于被评估的函数来确认分区;以及
重复步骤(c)和(d)。
3.根据权利要求1的方法,还包括:
(e)对所述压缩的纹理块进行解压缩以获得原始象素块的近似;
(f)比较原始象素块与所述原始象素块的近似,以获得所确认的分区的质量参数;
(g)如果所确认的分区的质量参数满足预选阈值,则选择所确认的分区作为象素块的最终分区,否则,对于还没有获得质量参数的分区,重复步骤(b)到(g),其中,如果不存在还没有获得质量参数的分区,则前进到步骤(h);
(h)根据最终分区将原始象素块细分成一个或多个最终子集,其中如果没有任何分区具有满足预选阈值的质量参数,则选择产生最接近预选阈值的质量参数的分区作为最终分区;以及
(i)独立地压缩每个最终子集以形成压缩的纹理块。
4.根据权利要求1的方法,还包括:
(e)对所述压缩的纹理块进行解压缩以获得原始象素块的近似;
(f)比较原始象素块与所述原始象素块的近似,以获得所确认的分区的质量参数;
(g)对于预定义的分区集合中的每个分区,重复步骤(b)到(f),以获得每个分区的质量参数;
(h)选择产生最优质量参数的分区作为原始象素块的最终分区;
(i)根据所述最终分区将原始象素块细分成一个或多个最终子集;以及
(j)独立地压缩每个最终子集以形成压缩的纹理块。
5.根据权利要求1的方法,其中,步骤(b)还包括从预定义的分区集合中确认分区,其中所述子集具有不同数量的象素。
6.根据权利要求1的方法,其中,通过执行一些子集的合并,从该基础集合的一个分区获得每个导出的分区。
7.根据权利要求1的方法,其中,步骤(d)还包括使用有损压缩方法来压缩每个子集中的象素。
8.根据权利要求1的方法,其中,步骤(d)包括使用两个显式端点参数和在颜色空间中定义一个渐变坡的多个中间点来压缩每个子集。
9.根据权利要求1的方法,其中,步骤(d)包括使用堆垛化技术来压缩每个子集。
10.根据权利要求3的方法,其中,所述质量参数基于块的均方根误差。
11.根据权利要求4的方法,其中,所述质量参数基于块的均方根误差。
12.根据权利要求3的方法,其中,所述质量参数基于块的色度误差参数。
13.根据权利要求4的方法,其中,所述质量参数基于块的色度误差参数。
14.根据权利要求3的方法,其中,所述质量参数基于块的亮度参数。
15.根据权利要求4的方法,其中,所述质量参数基于块的亮度参数。
16.根据权利要求1的方法,还包括将纹理分割成8×8象素的规则块。
17.根据权利要求1的方法,还包括将纹理分割为4×4象素的规则块。
18.一种纹理解压缩方法,包括:
接收压缩的纹理块;
从预定义的分区集合中确定用于该压缩的纹理块的分区,该分区定义所述压缩的纹理块要被分拆成的一个或多个不相交子集;
基于确定的分区将每个子集的数据分拆;以及
独立地解压缩每个子集以形成原始纹理块的近似;
其中,所述预定义的分区集合包括显式定义的分区基础集合以及从该基础集合导出的分区的附加集合。
19.根据权利要求18的方法,其中,通过执行一些子集的合并,从该基础集合的一个分区获得每个导出的分区。
20.一种用于纹理解压缩的计算机处理系统,包括:
接收压缩的纹理块的装置,所述压缩的纹理块包含代表原始纹理块的数据;
从预定义的分区集合确定用于该压缩的纹理块的分区的装置,所述分区定义该压缩的纹理块要被分拆成的一个或多个不相交子集;
基于确定的分区将每个子集的数据分拆的装置;以及
独立地解压缩每个子集以形成原始纹理块的近似的装置;
其中,所述预定义的分区集合包括显式定义的分区基础集合以及从该基础集合导出的分区的附加集合。
CN2007800308877A 2006-08-31 2007-08-29 纹理压缩方法和用于纹理解压缩的计算机处理系统 Active CN101536526B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/513,190 2006-08-31
US11/513,190 US9418450B2 (en) 2006-08-31 2006-08-31 Texture compression techniques
PCT/US2007/018965 WO2008027413A2 (en) 2006-08-31 2007-08-29 Texture compression techniques

Publications (2)

Publication Number Publication Date
CN101536526A CN101536526A (zh) 2009-09-16
CN101536526B true CN101536526B (zh) 2013-01-23

Family

ID=38973124

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800308877A Active CN101536526B (zh) 2006-08-31 2007-08-29 纹理压缩方法和用于纹理解压缩的计算机处理系统

Country Status (4)

Country Link
US (7) US9418450B2 (zh)
EP (2) EP2064891A2 (zh)
CN (1) CN101536526B (zh)
WO (1) WO2008027413A2 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0504570D0 (en) * 2005-03-04 2005-04-13 Falanx Microsystems As Method of and apparatus for encoding data
US7742646B1 (en) * 2006-12-20 2010-06-22 Nvidia Corporation Modified high dynamic range color decompression
US7920749B1 (en) 2006-12-20 2011-04-05 Nvidia Corporation Modified high dynamic range color decompression
US7983498B1 (en) 2007-08-06 2011-07-19 Nvidia Corporation Low dynamic range 3-channel color compression
US7987161B2 (en) * 2007-08-23 2011-07-26 Thomson Reuters (Markets) Llc System and method for data compression using compression hardware
EP2107812A1 (en) * 2008-04-03 2009-10-07 STMicroelectronics (Grenoble) SAS Compression/decompression of digital images
US8165393B2 (en) 2008-06-05 2012-04-24 Microsoft Corp. High dynamic range texture compression
US8508543B2 (en) 2008-06-18 2013-08-13 Microsoft Corporation Layered texture compression architecture
US20090322777A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Unified texture compression framework
EP2327058A4 (en) * 2008-09-23 2017-03-29 Telefonaktiebolaget LM Ericsson (publ) Pixel block processing
US8577164B2 (en) * 2009-01-19 2013-11-05 Telefonaktiebolaget L M Ericsson (Publ) Image processing
US8542243B2 (en) * 2009-11-19 2013-09-24 Douglas H. Rogers High-compression texture mapping
KR101630006B1 (ko) * 2009-12-04 2016-06-13 톰슨 라이센싱 텍스처 패턴 적응형 파티션 블록 변환
US20110157192A1 (en) * 2009-12-29 2011-06-30 Microsoft Corporation Parallel Block Compression With a GPU
EP2556492A4 (en) 2010-04-07 2016-08-31 Ericsson Telefon Ab L M COMPRESSION AND DECOMPRESSION OF TEXTURE
CN102215396A (zh) 2010-04-09 2011-10-12 华为技术有限公司 一种视频编解码方法和系统
US8625910B2 (en) 2011-02-25 2014-01-07 Adobe Systems Incorporated Compression of image data
US9652016B2 (en) * 2011-04-27 2017-05-16 Nvidia Corporation Techniques for degrading rendering quality to increase operating time of a computing platform
GB2491688B (en) 2011-05-05 2014-08-27 Advanced Risc Mach Ltd Method of and apparatus for encoding and decoding data
GB2495301B (en) * 2011-09-30 2018-01-17 Advanced Risc Mach Ltd Method of and apparatus for encoding data
US9025899B2 (en) 2011-10-14 2015-05-05 Advanced Micro Devices, Inc. Region-based image compression
US8564608B2 (en) 2011-10-28 2013-10-22 Palm, Inc. Display of visual images by fractional color gradient increments
WO2013144942A1 (en) * 2012-03-28 2013-10-03 I.C.V.T. Ltd. Controlling a compression of an image according to a degree of photo-realism
US9734598B2 (en) * 2013-01-15 2017-08-15 Microsoft Technology Licensing, Llc Engine for streaming virtual textures
US9177415B2 (en) * 2013-01-30 2015-11-03 Arm Limited Methods of and apparatus for encoding and decoding data
US8989486B2 (en) * 2013-03-04 2015-03-24 Zynga Inc. Generation of intermediate images for texture compression
KR102269590B1 (ko) * 2014-02-19 2021-06-24 삼성전자주식회사 바이너리 생성 방법 및 그 전자 장치
US10067951B2 (en) * 2014-02-19 2018-09-04 Samsung Electronics Co, Ltd Method for creating binary code and electronic device thereof
WO2015135175A1 (en) * 2014-03-13 2015-09-17 Mediatek Singapore Pte. Ltd. Simplified depth based block partitioning method
WO2016007028A1 (en) * 2014-07-10 2016-01-14 Intel Corporation Method and apparatus for efficient texture compression
US9857888B2 (en) 2015-03-17 2018-01-02 Behr Process Corporation Paint your place application for optimizing digital painting of an image
US10244250B2 (en) * 2015-05-29 2019-03-26 Samsung Electronics Co., Ltd. Variable-rate texture compression using fixed-rate codes
US20170085886A1 (en) * 2015-09-18 2017-03-23 Qualcomm Incorporated Variable partition size for block prediction mode for display stream compression (dsc)
CN105224698A (zh) * 2015-11-17 2016-01-06 盛趣信息技术(上海)有限公司 图片存储系统及方法
CN105761296B (zh) * 2016-01-15 2018-09-18 网易(杭州)网络有限公司 一种压缩纹理的拼装系统及方法、终端
CN105787987B (zh) * 2016-03-15 2019-07-30 广州爱九游信息技术有限公司 一种纹理处理方法及电子设备
US10599935B2 (en) * 2017-02-22 2020-03-24 Arm Limited Processing artificial neural network weights
EP3484137A1 (en) * 2017-11-09 2019-05-15 Thomson Licensing Method and device for generating a second image from a first image
CN107945239A (zh) * 2017-11-24 2018-04-20 中国航空工业集团公司西安航空计算技术研究所 一种纹理s3tc压缩解压单元结构
US10970880B2 (en) * 2018-08-09 2021-04-06 Electronic Arts Inc. Texture compression
CN111131828B (zh) * 2019-12-30 2022-02-25 芯颖科技有限公司 一种图像压缩方法、装置、电子设备和存储介质
US11308648B2 (en) * 2020-09-23 2022-04-19 Advanced Micro Devices, Inc. Compressing texture data on a per-channel basis
US11647193B2 (en) 2020-12-18 2023-05-09 Meta Platforms Technologies, Llc Adaptive range packing compression
US11270468B1 (en) * 2020-12-18 2022-03-08 Facebook Technologies, Llc. Joint color image and texture data compression
CN113687773B (zh) * 2021-07-16 2023-08-11 深圳智慧林网络科技有限公司 数据压缩模型训练方法及装置、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040228527A1 (en) * 2003-02-13 2004-11-18 Konstantine Iourcha Method and apparatus for block based image compression with multiple non-uniform block encodings
CN1672177A (zh) * 2002-07-30 2005-09-21 高通股份有限公司 数据压缩和解压缩中的参数选择

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5051840A (en) * 1988-12-14 1991-09-24 Fuji Photo Film Co., Ltd. Device for coding a picture signal by compression
FI92272C (fi) * 1992-05-20 1994-10-10 Valtion Teknillinen Kuvansiirtojärjestelmän tiivistyskoodausmenetelmä
US5321520A (en) * 1992-07-20 1994-06-14 Automated Medical Access Corporation Automated high definition/resolution image storage, retrieval and transmission system
KR100276427B1 (ko) 1993-01-30 2000-12-15 윤종용 화상데이타의 압축 및 복원장치
US5420639A (en) * 1993-04-01 1995-05-30 Scientific-Atlanta, Inc. Rate adaptive huffman coding
JP3247804B2 (ja) * 1993-08-17 2002-01-21 株式会社リコー データ圧縮方法、データ圧縮/伸長方法、符号語データ数制限装置
JPH09505188A (ja) * 1993-11-15 1997-05-20 ナショナル・セミコンダクター・コーポレイション 4分木構造walsh変換符号化
US5488365A (en) * 1994-03-01 1996-01-30 Hewlett-Packard Company Method and apparatus for compressing and decompressing short blocks of data
US5585944A (en) 1994-05-10 1996-12-17 Kaleida Labs, Inc. Method for compressing and decompressing images by subdividing pixel color distributions
WO1996002895A1 (en) 1994-07-14 1996-02-01 Johnson Grace Company Method and apparatus for compressing images
US5764802A (en) 1994-09-09 1998-06-09 Intel Corporation Encoding image signals using a blur image
US5798762A (en) 1995-05-10 1998-08-25 Cagent Technologies, Inc. Controlling a real-time rendering engine using a list-based control mechanism
US5751292A (en) 1995-06-06 1998-05-12 Hewlett-Packard Company Texture mapping method and system
JP4540753B2 (ja) 1995-08-04 2010-09-08 マイクロソフト コーポレーション グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム
US5943058A (en) 1996-01-25 1999-08-24 Silicon Graphics, Inc. Texture mapping circuit for performing data interpolations
US5870502A (en) * 1996-04-08 1999-02-09 The Trustees Of Columbia University In The City Of New York System and method for a multiresolution transform of digital image information
US6990248B2 (en) 1996-05-09 2006-01-24 Koninklijke Philips Electronics N.V. Segmented video coding and decoding method and system
FR2760872B1 (fr) * 1997-03-17 2000-06-09 Alsthom Cge Alcatel Procede d'optimisation de la compression de donnees d'image, a selection automatique de conditions de compression
US6633611B2 (en) 1997-04-24 2003-10-14 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for region-based moving image encoding and decoding
JPH11122116A (ja) 1997-04-30 1999-04-30 Canon Inf Syst Res Australia Pty Ltd 圧縮装置及びその方法
EP0891100A1 (en) 1997-07-08 1999-01-13 Canon Kabushiki Kaisha Method and device for coding and decoding data, notably digital images and sequences of digital images
US6658146B1 (en) 1997-10-02 2003-12-02 S3 Graphics Co., Ltd. Fixed-rate block-based image compression with inferred pixel values
US5956431A (en) 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
US6775417B2 (en) 1997-10-02 2004-08-10 S3 Graphics Co., Ltd. Fixed-rate block-based image compression with inferred pixel values
US6683978B1 (en) 1997-10-02 2004-01-27 S3 Graphics Co., Ltd. Fixed-rate block-based image compression with inferred pixel values
US6285796B1 (en) 1997-11-03 2001-09-04 Intel Corporation Pseudo-fixed length image compression scheme
JP3205532B2 (ja) 1997-12-04 2001-09-04 松下電器産業株式会社 画像処理方法及び画像処理装置,並びにデータ記憶媒体
WO1999030483A1 (en) 1997-12-05 1999-06-17 Force Technology Corp. Continuous gradation compression device and method, continuous gradation expansion device and method, data processor and device and memory medium in which programs for executing the programs
US6545705B1 (en) * 1998-04-10 2003-04-08 Lynx System Developers, Inc. Camera with object recognition/data output
DE19817720A1 (de) 1998-04-21 1999-10-28 Heidelberger Druckmasch Ag Verfahren zur Bilddatenkomprimierung für Zwei-Farben-Bilder
GB2343599B (en) 1998-11-06 2003-05-14 Videologic Ltd Texturing systems for use in three dimensional imaging systems
JP2000209287A (ja) * 1999-01-20 2000-07-28 Fujitsu Ltd ネットワ―クシステム
US6208273B1 (en) * 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
GB2348334A (en) 1999-03-22 2000-09-27 Videologic Ltd A method of compressing digital image data
US7050503B2 (en) 1999-04-17 2006-05-23 Pts Corporation Segment-based encoding system using residue coding by basis function coefficients
US6339428B1 (en) 1999-07-16 2002-01-15 Ati International Srl Method and apparatus for compressed texture caching in a video graphics system
JP2001096460A (ja) 1999-09-28 2001-04-10 Toyoda Mach Works Ltd 研削盤における定寸装置の装備方法及び装備装置
US7050639B1 (en) 1999-11-24 2006-05-23 General Electric Company Image data compression employing multiple compression code tables
JP2001223913A (ja) 1999-11-30 2001-08-17 Matsushita Electric Ind Co Ltd 画像処理装置、画像処理方法および記録媒体
US6819793B1 (en) 2000-06-30 2004-11-16 Intel Corporation Color distribution for texture and image compression
US6959110B1 (en) 2000-08-17 2005-10-25 Nvidia Corporation Multi-mode texture compression algorithm
US7224840B2 (en) 2000-10-26 2007-05-29 International Business Machines Corporation Method, system, and program for error recovery while decoding compressed data
US6778181B1 (en) 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
JP4086520B2 (ja) 2001-03-19 2008-05-14 株式会社リコー 多値画像の符号化及び復号化方法並びに装置
US7102636B2 (en) 2001-03-31 2006-09-05 Intel Corporation Spatial patches for graphics rendering
US7266150B2 (en) 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
GB0128888D0 (en) 2001-12-03 2002-01-23 Imagination Tech Ltd Method and apparatus for compressing data and decompressing compressed data
US6940511B2 (en) 2002-06-07 2005-09-06 Telefonaktiebolaget L M Ericsson (Publ) Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filtering
JP3790728B2 (ja) 2002-09-11 2006-06-28 株式会社東芝 画像符号化装置、画像復号化装置及びそれらの方法
JP4097587B2 (ja) 2002-10-16 2008-06-11 松下電器産業株式会社 画像処理装置および画像処理方法
US7082217B2 (en) 2002-10-28 2006-07-25 Web Technology Corp. Method and apparatus for image compression in block units
US7903892B2 (en) 2002-10-29 2011-03-08 Ati Technologies Ulc Image analysis for image compression suitability and real-time selection
WO2004054268A1 (en) 2002-12-10 2004-06-24 Kyung-Soo Rim Method and apparatus for compressing and decompressing moving picture data
US7532765B2 (en) * 2002-12-30 2009-05-12 Intel Corporation Run length encoded digital image
DE60309430D1 (de) 2003-01-31 2006-12-14 St Microelectronics Srl Verfahren und Vorrichtung zum Komprimierung von Texturen
JP4192640B2 (ja) 2003-03-19 2008-12-10 セイコーエプソン株式会社 ブロック内のエッジを検出しながら処理を行う画像処理装置、および画像処理方法
JP2005005925A (ja) * 2003-06-11 2005-01-06 Olympus Corp 画像圧縮装置及び画像処理システム
US7171051B1 (en) 2003-06-17 2007-01-30 Nvidia Corporation Method and apparatus for performing fixed blocksize compression for texture mapping
SE0401850D0 (sv) 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
JP4805924B2 (ja) 2004-07-08 2011-11-02 テレフオンアクチーボラゲット エル エム エリクソン(パブル) マルチモード画像処理のための方法、システム、及びシステムを具備するユーザ端末
US7848567B2 (en) 2004-09-23 2010-12-07 Fuji Xerox Co., Ltd. Determining regions of interest in synthetic images
JP2006121645A (ja) 2004-09-24 2006-05-11 Fuji Photo Film Co Ltd 画像圧縮装置および画像圧縮プログラム
US7415473B2 (en) * 2004-09-30 2008-08-19 Sap Ag Multi-dimensional set object
US7961195B1 (en) 2004-11-16 2011-06-14 Nvidia Corporation Two component texture map compression
FI20050113A (fi) 2005-02-01 2006-08-02 Paavo Eskelinen Menetelmä kuvainformaation käsittelemiseksi
US8023752B1 (en) 2005-03-04 2011-09-20 Nvidia Corporation Decompression of 16 bit data using predictor values
GB0504570D0 (en) 2005-03-04 2005-04-13 Falanx Microsystems As Method of and apparatus for encoding data
US8208564B2 (en) 2005-06-24 2012-06-26 Ntt Docomo, Inc. Method and apparatus for video encoding and decoding using adaptive interpolation
WO2007021227A1 (en) 2005-08-19 2007-02-22 Telefonaktiebolaget Lm Ericsson (Publ) Texture compression based on two hues with modified brightness
US7385611B1 (en) 2005-12-07 2008-06-10 Nvidia Corporation Decompression of block encoded texture data
US7873212B2 (en) 2006-01-24 2011-01-18 Nokia Corporation Compression of images for computer graphics
KR101246294B1 (ko) 2006-03-03 2013-03-21 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
US8401082B2 (en) 2006-03-27 2013-03-19 Qualcomm Incorporated Methods and systems for refinement coefficient coding in video compression
US7787691B2 (en) 2006-04-11 2010-08-31 Telefonaktiebolaget Lm Ericsson (Publ) High quality image processing
US7714873B2 (en) 2006-06-29 2010-05-11 Microsoft Corporation Strategies for compressing textures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1672177A (zh) * 2002-07-30 2005-09-21 高通股份有限公司 数据压缩和解压缩中的参数选择
US20040228527A1 (en) * 2003-02-13 2004-11-18 Konstantine Iourcha Method and apparatus for block based image compression with multiple non-uniform block encodings

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Leonld Levkovich-Maslyuk 等.Texture compression with adaptive block partitions.《Proceedings of multimedia 2000 30 OCT.-4 NOV., LOS ANGELES, CA, USA》.2000,401-403. *
说明书第5、7、34-44段
附图1、9-13.
附图4、5、7、9.

Also Published As

Publication number Publication date
US11184628B2 (en) 2021-11-23
US20240179333A1 (en) 2024-05-30
US10205956B2 (en) 2019-02-12
US20170195683A1 (en) 2017-07-06
EP2364022A2 (en) 2011-09-07
EP2364022A3 (en) 2013-04-24
US9418450B2 (en) 2016-08-16
WO2008027413A3 (en) 2008-06-19
US20190174140A1 (en) 2019-06-06
EP2064891A2 (en) 2009-06-03
US11825106B2 (en) 2023-11-21
US20080055331A1 (en) 2008-03-06
US11843793B2 (en) 2023-12-12
WO2008027413A2 (en) 2008-03-06
US20230388527A1 (en) 2023-11-30
US20230156205A1 (en) 2023-05-18
CN101536526A (zh) 2009-09-16
US20220053202A1 (en) 2022-02-17

Similar Documents

Publication Publication Date Title
CN101536526B (zh) 纹理压缩方法和用于纹理解压缩的计算机处理系统
US7787691B2 (en) High quality image processing
ES2728097T3 (es) Procesamiento de imágenes basado en peso
US7734105B2 (en) Multi-mode image processing
US20040151372A1 (en) Color distribution for texture and image compression
US7526125B2 (en) Method of and apparatus for compressing and uncompressing image data
US20230108967A1 (en) Micro-meshes, a structured geometry for computer graphics
US6683979B1 (en) Image data compression and decompression
US8437563B2 (en) Vector-based image processing
US11568572B2 (en) Texture compression
US11263786B2 (en) Decoding data arrays
Krause ftc—floating precision texture compression
KR102531605B1 (ko) 하이브리드 블록 기반 압축
CN117853641A (zh) 纹理编解码方法、装置、设备及存储介质
Andujar Topographic map visualization from adaptively compressed textures
KR20030054606A (ko) 3차원 텍스춰 매핑을 위한 부호화/복호화 장치 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: ATI TECHNOLOGIES ULC

Free format text: FORMER NAME: ATI TECHNOLOGIES INC.

CP01 Change in the name or title of a patent holder

Address after: Ontario

Patentee after: ATI. Technologies Ulc

Address before: Ontario

Patentee before: ATI Technologies Inc.