CN112422981B - 图像数据压缩 - Google Patents
图像数据压缩 Download PDFInfo
- Publication number
- CN112422981B CN112422981B CN202010847036.9A CN202010847036A CN112422981B CN 112422981 B CN112422981 B CN 112422981B CN 202010847036 A CN202010847036 A CN 202010847036A CN 112422981 B CN112422981 B CN 112422981B
- Authority
- CN
- China
- Prior art keywords
- bits
- channels
- channel
- determined
- block
- 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
Links
- 238000013144 data compression Methods 0.000 title abstract description 6
- 238000007906 compression Methods 0.000 claims abstract description 301
- 230000006835 compression Effects 0.000 claims abstract description 296
- 238000000034 method Methods 0.000 claims abstract description 111
- 238000004519 manufacturing process Methods 0.000 claims description 52
- 238000012545 processing Methods 0.000 claims description 48
- 238000012937 correction Methods 0.000 claims description 17
- 238000005286 illumination Methods 0.000 claims description 9
- 230000006837 decompression Effects 0.000 description 130
- 230000000875 corresponding effect Effects 0.000 description 23
- 239000000872 buffer Substances 0.000 description 17
- 238000009877 rendering Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 16
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 11
- 229910052710 silicon Inorganic materials 0.000 description 11
- 239000010703 silicon Substances 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000006872 improvement Effects 0.000 description 6
- 230000009467 reduction Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005389 semiconductor device fabrication Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 235000012431 wafers Nutrition 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/115—Selection of the code volume for a coding unit prior to coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/727—Modulo N arithmetic, with N being either (2**n)-1,2**n or (2**n)+1, e.g. mod 3, mod 4 or mod 5
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
- H04N19/126—Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/186—Methods 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 colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/192—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/33—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Discrete Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及图像数据压缩。本发明提供了用于压缩图像数据块以满足目标压缩水平的计算机实施的方法和压缩单元,该方法包括:对于一个或多个通道中的每个通道:(i)为块确定通道的原点值;(ii)确定表示数据值与为块确定的通道的原点值之间的差的差值;以及(iii)确定用于无损地表示用于块的通道的差值中的最大差值的第一位数。使用为一个或多个通道中的每个通道确定的第一位数,确定一个或多个通道中的每个通道的相应的一个或多个第二位数,一个或多个第二位数被确定使得用相应的一个或多个第二位数表示一个或多个通道的差值中的每个差值满足用于压缩图像数据块的目标压缩水平以及形成压缩数据。
Description
技术领域
本公开涉及数据压缩和数据解压缩。
背景技术
数据压缩,无论是无损的还是有损的,在将数据存储在存储器中和/或从存储器中读取数据的许多应用中都是人们所期望的。通过在将数据存储在存储器中之前压缩数据,可以减少传输到存储器的数据量。数据压缩对其特别有用的数据的示例是图像数据。术语“图像数据”在本文中用以指具有对应于图像的相应像素或采样位置的值的二维数据。例如,图像可以作为图形处理单元(GPU)上的渲染过程的一部分而产生。图像数据可包括但不限于:将存储在深度缓冲器中的深度数据、将存储在帧缓冲器中的像素数据(例如,颜色数据)、将存储在纹理缓冲器中的纹理数据、将存储在表面法线缓冲器中的表面法线数据和将存储在照明缓冲器中的照明数据。这些缓冲器可以是任何合适类型的存储器,例如高速缓冲存储器、单独的存储器子***、共享存储器***中的存储区域或它们的某种组合。
GPU可用于处理数据以便生成图像数据。例如,GPU可以确定将存储在帧缓冲器中的图像的像素值(例如,颜色值),该像素值可以输出到显示器。GPU通常具有高度并行化的结构,用于并行处理大型数据块。使GPU(尤其是旨在在移动/嵌入式装置上实施的那些GPU)以减少的延时、降低的功耗和减少的物理尺寸(例如,减少的硅面积)操作有很大的商业压力。针对这些目标的竞争期望使用更高质量的渲染算法来产生更高质量的图像。降低存储器带宽(即,降低GPU与存储器之间传输的数据量)可显著降低***的延时和功耗,这是在传输数据之前压缩数据可能特别有用的原因。当考虑在GPU自身内四处移动的数据时,这在较小程度上也同样适用。而且,同样的问题可能与其他处理单元,例如中央处理单元(CPU)以及GPU相关。
图1示出了可以在诸如移动/嵌入式装置的电子装置中实施的示例性图形处理***100。图形处理***100包括GPU 102和存储器104(例如,图形存储器)。数据(可以是压缩数据)可以在GPU 102与存储器104之间沿任一方向传输。
GPU 102包括处理逻辑106、存储器接口108、压缩单元110和解压缩单元112。在一些示例中,压缩单元和解压缩单元可以组合成可以执行压缩和解压缩两者的单个单元。
在操作中,GPU 102可以个别地处理图像数据区域。所述区域例如可以表示渲染空间(即,表示例如待渲染的图像区域的二维空间)的矩形(包括正方形)部分(或“分块”)。处理逻辑106可以使用例如深度测试和纹理映射的已知技术来执行图形基元(例如,但不限于三角形和直线)的栅格化。处理逻辑106可以包含高速缓存单元以减少存储器流量。一些数据由处理逻辑106通过存储器接口108从存储器104读取或写入到该存储器。在图1所示的示例中,正从处理逻辑106写入到存储器104的数据经由压缩单元110从处理逻辑106传递到存储器接口108。压缩单元110可在将数据传递到存储器接口之前对数据进行压缩。类似地,在图1所示的示例中,正由处理逻辑106从存储器104读取的数据经由解压缩单元112从存储器接口108传递到处理逻辑106。解压缩单元112可以在将数据(如果其已被压缩)传递到处理逻辑106之前对数据进行解压缩。压缩单元110和解压缩单元112的使用意味着可以在存储器接口108与存储器104之间传递压缩数据,从而减少将通过外部存储器总线传输到存储器104的数据量。
如本领域技术人员已知的,GPU 102的处理逻辑106可以在渲染空间中为每个像素生成一组一个或多个颜色值(例如,RGB或RGBA),并且使颜色值存储在帧缓冲器(例如,在存储器104)中。用于帧的颜色值的集合在本文中可以被称为颜色数据或图像数据。处理逻辑106还可以生成其它图像数据,例如,深度数据、表面法线数据、照明数据等,并且可以将那些图像数据值存储在存储器中的一个或多个缓冲器中。在一些情况下,这些缓冲器可被称为帧缓冲器,而在其它情况下,术语“帧缓冲器”可为存储颜色值或存储将被发送到显示器的数据的缓冲器预留。在一些图形渲染***中,在执行一个或多个后续渲染时,处理逻辑106可以使用存储在缓冲器中的用于特定渲染的图像数据值。例如,由一次渲染生成的颜色值可以表示可以(例如,以压缩形式)存储在存储器104中的纹理,并且纹理可以从存储器104读取(例如,并且解压缩)以在一个或多个后续渲染中作为纹理施加到表面。类似地,在一次渲染中为几何模型生成的表面法线值可以用于在渲染一个或多个后续渲染期间对相同模型施加照明效果。此外,在一次渲染中生成并存储的表面深度值可以被回读以用于渲染相同模型的一个或多个后续渲染。
由于图像数据(例如,颜色数据)可能相当大,因此与将图像数据写入到存储器中的缓冲器以及从存储器中的缓冲器读取图像数据相关联的存储器带宽可能是图形处理***和/或GPU的总存储器带宽的相当大的部分。因此,图像数据在存储在缓冲器中之前通常经由压缩单元110压缩,并且在从缓冲器读取之后经由解压缩单元112解压缩。
当使用无损压缩技术压缩数据并且然后使用互补无损解压缩技术解压缩数据时,可以恢复原始数据,而不会丢失数据(假设在压缩或解压缩过程中没有出现错误)。数据被压缩的程度可以表示为压缩比,其中通过将未压缩数据的大小除以压缩数据的大小得到压缩比。通过无损压缩技术实现的压缩比通常取决于被压缩的数据。例如,无损压缩技术往往能够在压缩高度相关的数据时实现相对高的压缩比;而无损压缩技术往往在压缩不相关(例如,随机)数据时实现相对低的压缩比。因此,难以保证无损压缩技术将实现特定的压缩比(例如,2:1的压缩比)。因此,如果仅使用无损压缩技术,那么***通常必须能够处理无法实现所期望的压缩比(例如,2:1)的情况,以及例如有时使用无损压缩技术根本不能产生压缩的情况。
在一些情况下,可以认为保证压缩比比保证在压缩期间不会丢失数据更重要。例如,保证压缩比允许存储器足迹减小,这是确保可存储压缩数据块所必需的。保证压缩比可允许减小存储器104的大小(例如,硅面积)。在这些情况下,可以使用有损压缩技术,这可以实现保证压缩比,但是在压缩过程中可能丢失一些数据。
发明内容
提供本发明内容是为了介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供了一种压缩图像数据块以满足目标压缩水平的计算机实施的方法,其中所述图像数据块包括多个图像元素值,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值,所述方法包括:
对于所述一个或多个通道中的每个通道:
为所述块确定所述通道的原点值;
确定表示所述数据值与为所述块确定的所述通道的原点值之间的差的差值;以及
为所述块确定用于无损地表示所述通道的差值中的最大差值的第一位数;
使用为所述一个或多个通道中的每个通道确定的所述第一位数,确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数,所述一个或多个第二位数被确定使得用所述相应的一个或多个第二位数表示所述一个或多个通道的每个差值满足用于压缩所述图像数据块的目标压缩水平;以及
形成压缩数据,其中对于所述一个或多个通道中的每个通道,所述压缩数据包括:
为所述通道确定的原点值的指示;
为所述通道确定的所述第一位数的指示;以及
为所述通道确定的差值的表示,其中,为所述通道确定的差值的表示中的每个表示使用为所述通道确定的所述第二位数,使得满足所述目标压缩水平。
所述使用为所述一个或多个通道中的每个通道确定的所述第一位数,确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数可以包括确定用相应的确定的一个或多个第一位数表示所述一个或多个通道的差值是否满足所述目标压缩水平;其中,如果确定用所述相应的确定的一个或多个第一位数表示所述一个或多个通道的差值满足所述目标压缩水平,则对于所述一个或多个通道中的每个通道,所述第二位数等于该通道的第一位数;并且其中,如果确定用所述相应的确定的一个或多个第一位数表示所述一个或多个通道的差值不满足所述目标压缩水平,则对于所述一个或多个通道中的至少一个通道,所述第二位数小于该通道的第一位数。
可以根据预定方案使用为所述一个或多个通道确定的所述第一位数确定所述一个或多个通道的所述相应的一个或多个第二位数。
所述使用为所述一个或多个通道中的每个通道确定的所述第一位数,确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数可以包括将所述一个或多个第一位数减少零、一或更大值,从而确定所述一个或多个第二位数,使得通过从具有确定的第一位数的差值的表示中去除零个、一个或多个最低有效位(LSB),用所述相应的一个或多个第二位数表示所述一个或多个通道的每个差值满足用于压缩所述图像数据块的目标压缩水平。
所述一个或多个第一位数被减少以由此确定所述一个或多个第二位数的所述一个或多个第一位数的减少量可以由所述预定方案限定。
所述一个或多个通道中的每个通道可以存在阈值位数,其中如果对于所述一个或多个通道中的每个通道,所述第二位数等于所述阈值位数,则将满足用于压缩所述图像数据块的目标压缩水平,其中,如果通道的第一位数小于或等于所述通道的阈值位数,则所述通道的第一位数减少零,使得所述通道的第二位数等于所述通道的第一位数,并且其中,如果通道的第一位数大于所述通道的阈值位数,则所述第一位数减少的量不会使得所述通道的第二位数小于所述阈值位数。阈值位数对于一个或多个通道中的每个通道可以是相同的。替代性地,可能的情况是阈值位数对于一个或多个通道中的每个通道是不相同的。
对于所述一个或多个通道中的每个通道,可以通过识别与用于所述块的通道有关的数据值中的最小值,确定用于所述块的通道的原点值,其中,可以通过识别与用于所述块的通道有关的数据值中的最大值并且从所识别的与用于所述块的通道有关的数据值中的最大值减去所识别的与用于所述块的通道有关的数据值中的最小值,确定用于所述块的通道的差值中的所述最大差值。
对于所述一个或多个通道中的每个通道,可以通过识别与用于所述块的通道有关的数据值的最大值,确定用于所述块的通道的原始值,其中,可以通过识别与用于所述块的通道有关的数据值中的最小值并且从所识别的与用于所述块的通道有关的数据值中的最大值减去所识别的与用于所述块的通道有关的数据值中的最小值,确定用于所述块的通道的差值中的所述最大差值。
对于所述一个或多个通道中的每个通道,用于所述块的通道的原点值和差值可以根据模运算确定,其中,所述一个或多个通道中的每个通道的原点值可以被确定为与根据所述模运算相对于所述原点值确定所述差值时产生最小的最大差值的通道有关的所述块的数据值中的一个数据值。
对于所述一个或多个通道中的每个通道,所述通道的原始值的指示可具有与与所述图像数据块中的图像元素值中的一个图像元素值的通道有关的数据值中的一个数据值相同的位数。
可以为所述一个或多个通道中的至少一个通道确定多个原点值,其中,所述一个或多个通道中的所述至少一个通道的差值中的每个差值可以是相对于所述多个原点值中的一个原点值确定的,并且其中,所述差值中的每个差值的指示可以包括在所述压缩数据中以指示已经从所述多个原点值中的哪一个原点值确定了所述差值。
对于所述一个或多个通道中的每个通道,所述确定第一位数可以包括:获得用于所述块的通道的差值中的最大差值;以及确定在没有任何前导零的情况下使用多少位来表示所述最大差值,其中确定的所述位数是所述第一位数。所述获得所述最大差值可以包括以下当中的一者:接收为所述块确定的所述通道的差值,并确定所确定差值中的哪一个是最大的;或识别与用于所述块的通道有关的数据值中的最小值和最大值,并确定所识别的最小数据值与最大数据值之间的差。
为所述一个或多个通道中的每个通道确定的所述第二位数的指示可以不包括在所述压缩数据中。替代性地,对于所述一个或多个通道中的每个通道,所述压缩数据还可以包括为所述通道确定的所述第二位数的指示。
所述压缩数据可以形成为压缩数据块,所述压缩数据块包括:头部部分,所述头部部分具有固定大小,且所述头部部分包括为所述一个或多个通道中的每个通道确定的原点值的指示和确定的第一位数的指示;以及主体部分,所述主体部分具有可变大小,且所述主体部分包括为所述一个或多个通道中的每个通道确定的差值的表示。所述压缩数据块可以具有基地址,并且其中,所述头部部分可以在由所述基地址限定的第一地址处开始,其中所述头部部分的数据在第一方向上从所述第一地址运行,并且其中,所述主体部分可以在由所述基地址限定的第二地址处开始,其中,所述主体部分的数据在第二方向上从所述第二地址运行,其中,在地址空间中,所述第一方向与所述第二方向相反。
所述方法还可以包括从一组预定的目标压缩水平中选择用于压缩所述图像数据块的目标压缩水平。
所述一个或多个通道可包括多个通道。所述多个通道可以包括红色通道、绿色通道、蓝色通道和α通道。所述方法还可以包括在所述多个通道上执行去相关,从而降低或去除与图像元素值的不同通道有关的不同数据值之间的相关性。
所述一个或多个通道可由单个通道组成。
所述方法还可以包括:通过确定通过正确地解压缩所述压缩数据获得的图像元素值来确定一个或多个误差校正指示;以及在所述压缩数据中包括所确定的误差校正指示。
图像元素值可以是像素值、纹素值(texel value)、深度值、表面法线或照明值。
所述方法还可以包括将所述压缩数据存储在存储器中。
可以使用专用硬件来执行所述方法。
提供了一种被配置成压缩图像数据块以满足目标压缩水平的压缩单元,其中所述图像数据块包括多个图像元素值,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值,所述压缩单元包括:
分析器逻辑,所述分析器逻辑被配置成对于所述一个或多个通道中的每个通道确定:
用于所述块的所述通道的原点值;以及
用于无损地表示用于所述块的所述通道的最大差值的第一位数;
差值确定逻辑,所述差值确定逻辑被配置成对于所述一个或多个通道中的每个通道,确定表示所述数据值与为所述块确定的所述通道的原点值之间的差的差值;
差值大小确定逻辑,所述差值大小确定逻辑被配置成使用为所述一个或多个通道中的每个通道确定的所述第一位数确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数,所述一个或多个第二位数使得用所述相应的一个或多个第二位数表示所述一个或多个通道的差值的每个差值满足用于压缩图像数据块的目标压缩水平;以及
压缩数据形成逻辑,所述压缩数据形成逻辑被配置成形成压缩数据,其中对于所述一个或多个通道中的每个通道,所述压缩数据包括:
为所述通道确定的原点值的指示;
为所述通道确定的所述第一位数的指示;以及
为所述通道确定的差值的表示,其中,为所述通道确定的差值的表示中的每个表示使用为所述通道确定的所述第二位数,使得满足所述目标压缩水平。
可以提供一种被配置成执行本文所述的任何压缩方法的压缩单元。
可以提供一种使用集成电路制造***制造如本文中描述的压缩单元的方法,所述方法包括:使用布局处理***处理所述压缩单元的计算机可读描述,以便生成体现所述压缩单元的集成电路的电路布局描述;以及使用集成电路生成***,根据所述电路布局描述制造所述压缩单元。
可以提供一种执行解压缩以从压缩数据确定一个或多个图像元素值的计算机实施的方法,其中所述压缩数据表示包括多个图像元素值的图像数据块,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值,所述方法包括:
从所述压缩数据读取所述一个或多个通道中的每个通道的原点值的指示;
对于所述一个或多个通道中的每个通道,从所述压缩数据读取用于表示差值的第一位数的指示,所述差值表示所述数据值与所述通道的原点值之间的差;
对于所述一个或多个通道中的每个通道,获得第二位数,其中,使用该通道的第二位数将所述一个或多个通道中的每个通道的差值的表示包括在所述压缩数据中;
使用为所述相应的一个或多个通道获得的一个或多个第二位数,从所述压缩数据读取用于被解压缩的一个或多个图像元素值的所述差值的表示;
基于从所述压缩数据读取的所述差值的表示,对于所述一个或多个通道中的每个通道并且对于被解压缩的一个或多个图像元素值中的每个图像元素值,根据通道的所述第一位数确定差值;以及
对于所述一个或多个通道中的每个通道,使用:(i)所述通道的原点值,以及(ii)为所述图像元素值确定的所述通道的差值,为被解压缩的一个或多个图像元素值中的每个图像元素值确定与所述通道有关的数据值。
可以提供一种被配置成执行解压缩以从压缩数据确定一个或多个图像元素值的解压缩单元,其中所述压缩数据表示包括多个图像元素值的图像数据块,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值,所述解压缩单元包括:
数据值确定逻辑,所述数据值确定逻辑被配置成从所述压缩数据读取所述一个或多个通道中的每个通道的原点值的指示;以及
差值确定逻辑,所述差值确定逻辑被配置成:
对于所述一个或多个通道中的每个通道,从所述压缩数据读取用于表示差值的第一位数的指示,所述差值表示所述数据值与所述通道的原点值之间的差;
对于所述一个或多个通道中的每个通道,获得第二位数,其中,使用该通道的第二位数将所述一个或多个通道中的每个通道的差值的表示包括在所述压缩数据中;
使用为所述相应的一个或多个通道获得的一个或多个第二位数,从所述压缩数据读取被解压缩的一个或多个图像元素值的差值的表示;以及
基于从所述压缩数据读取的所述差值的表示,对于所述一个或多个通道中的每个通道并且对于被解压缩的一个或多个图像元素值中的每个图像元素值,根据通道的所述第一位数确定差值;
其中所述数据值确定逻辑还被配置成对于所述一个或多个通道中的每个通道,使用:(i)所述通道的原点值,以及(ii)为所述图像元素值确定的所述通道的差值,为被解压缩的一个或多个图像元素值中的每个图像元素值确定与所述通道有关的数据值。
压缩单元和/或解压缩单元可以在集成电路上的硬件中实现。可以提供一种在集成电路制造***中制造压缩单元和/或解压缩单元的方法。可以提供集成电路定义数据集,当在集成电路制造***中被处理时,该集成电路定义数据集将***配置为制造压缩单元和/或解压缩单元。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造***中处理时,该计算机可读描述使集成电路制造***制造包含压缩单元和/或解压缩单元的集成电路。
可以提供一种集成电路制造***,所述集成电路制造***包括:非暂时性计算机可读存储介质,其上存储有描述了压缩单元和/或解压缩单元的计算机可读集成电路描述;布局处理***,所述布局处理***被配置为处理集成电路描述,以便生成体现压缩单元和/或解压缩单元的集成电路的电路布局描述;以及集成电路生成***,所述集成电路生成***被配置为根据电路布局描述来制造压缩单元和/或解压缩单元。
可以提供一种用于执行如本文所述的方法的计算机程序代码。换言之,可以提供一种计算机可读代码,其被配置成在代码运行时使得本文所述的任一方法得以执行。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,所述计算机可读指令在计算机***处执行时使计算机***执行如本文所述的方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
参考附图通过示例的方式描述本发明。在附图中:
图1示出了图形处理***,其中压缩单元和解压缩单元在图形处理单元内实施;
图2示出了包括图像数据块的图像数据阵列;
图3示出了压缩单元;
图4是压缩图像数据块以满足目标压缩水平的方法的流程图;
图5a示出了用于存储四个压缩数据块的示例性格式;
图5b示出了用于压缩数据块的头部部分内的数据的示例性格式;
图6示出了解压缩单元;
图7是执行解压缩以从压缩数据确定一个或多个图像元素值的方法的流程图;
图8示出了实施图形处理单元的计算机***;以及
图9示出了用于生成体现如本文所述的压缩单元或解压缩单元的集成电路的集成电路制造***。
附图示出了各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施例,并且对所公开的实施例的各种修改对于所属领域的技术人员而言将是显而易见的。仅通过示例的方式描述实施例。
如上所述,在不过多损失数据质量,例如,没有由于压缩导致的损失造成视觉上可觉察的伪影引入到图像中的情况下,保证满足目标压缩水平(例如,保证满足压缩比,例如,2:1)的压缩技术(以及互补解压缩技术)可能是有用的。如果实现的压缩比等于或大于目标水平的压缩比,则满足目标压缩水平。一些先前的高端有损压缩算法可以实现固定压缩比,而不会过多损失数据质量,但这些先前的高端有损压缩算法涉及对浮点或定点值执行复杂运算(例如,滤波、乘法和除法运算),并且可能需要在压缩过程期间对值进行内部缓冲。因此,这些先前的高端有损压缩算法通常被认为不适合用于小型低成本和/或低功率计算***,例如,可以在移动装置(诸如,智能电话和平板电脑或者大小、成本和/或功率受到特别限制的其它装置)中实施。
本文描述了压缩和解压缩技术的示例,其保证满足目标压缩水平(例如,满足固定压缩比,例如2:1),而不过多损失数据质量(例如,没有由于压缩导致的损失造成大量视觉上可觉察的伪影引入到图像中),并且可以在小型低成本和低功率计算***中实施。本文所述的示例易于实施。例如,这些示例可以整数格式而非浮点格式对图像元素值进行操作,并且可以通过执行简单运算(例如,加法运算、减法运算和比较运算)而不执行更复杂的运算(其例如在表示值所需的数据量或实施值所需的硬件逻辑的大小方面可能是庞大和/或昂贵的),例如,乘法运算或除法运算,并且在压缩或解压缩过程期间不需要像上文所述的先前高端压缩和解压缩算法中一样多的对值进行内部缓冲来执行。在这些示例中,这些简单运算(例如,加法运算、减法运算和比较运算)是“整数运算”,意味着它们对整数进行操作,例如以整数格式对图像元素值进行操作。
本文中所描述的压缩技术可以在以专用硬件实施的压缩单元中(例如,使用固定功能电路)实施。类似地,本文中描述的解压缩技术可以在以专用硬件实施的解压缩单元中(例如,使用固定功能电路)实施。在这些示例中,当与以硬件实施的先前的高端压缩和解压缩单元相比时,压缩单元和解压缩单元可以在物理尺寸(例如,硅面积)方面较小。本文中描述的压缩单元和解压缩单元适合于在具有小的硅面积和低功耗及低延时的小型低成本处理单元(例如,GPU或CPU)中实施。这在不过多降低数据质量(例如,图像质量)的情况下实现。
此外,如果这将满足用于压缩图像数据块的目标压缩水平,那么本文中描述的压缩技术允许压缩是无损的。然而,如果图像数据块的无损压缩不满足目标压缩水平,那么压缩变成有损的以便确保满足目标压缩水平。在本文中描述的示例中,不是具有单独的无损压缩单元和有损压缩单元,而是可以使用单个压缩单元来执行无损压缩或有损压缩以压缩图像数据块。与实施用于无损压缩和用于有损压缩的单独单元相比,使用单个压缩单元执行无损压缩和有损压缩可减少装置中实施的总硬件(例如,可以减少装置中实施的硅面积),并且可以降低装置的功耗。类似地,在本文描述的示例中,不是具有单独的无损和有损解压缩单元,而是可以使用单个解压缩单元来执行无损解压缩或有损解压缩以压缩图像数据块。与实施用于无损解压缩和用于有损解压缩的单独单元相比,使用单个解压缩单元执行无损解压缩和有损解压缩可减少装置中实施的总硬件(例如,可以减少装置中实施的硅面积),并且可以降低装置的功耗。
待压缩的图像数据可表示为图像元素值(例如,像素值)的2D阵列。每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值。例如,可以存在多个通道,例如红色(R)、绿色(G)、蓝色(B)和α(A)通道。图2示出了包括图像数据块的图像数据阵列200。在此示例中,图像数据阵列200表示由像素值表示的图像,其中图像数据块是图2中表示为2020、2021、2022和2023的4x4个像素值块。在其它示例中,图像数据块可以具有不同大小和/或形状。此外,在其它示例中,在图像数据阵列中可能存在多于(或少于)四个图像数据块。
本文中描述的示例涉及压缩和解压缩像素值块,其中像素值表示图像。然而,应理解,像素值仅是可使用本文中所描述的技术压缩的图像元素值的一个示例。更一般地,图像数据块可被压缩以形成压缩数据块,且压缩数据块可被解压缩以形成图像数据块,其中图像数据包括多个图像元素值。为了给出一些示例,图像元素值可以是:(i)表示纹理的纹素值;(ii)表示图像的像素值;(iii)表示场景内不同采样位置处的表面深度的深度值;(iv)表示场景内不同采样位置处的表面的法线向量的方向的表面法线值;或(v)表示场景内不同采样位置处的表面上的照明的照明值。照明值表示“光图”。光图可被认为是一种纹理,使得可以按照与纹理相同的方式使用和处理光图。像素值和纹素值是颜色值的示例(其中像素值表示图像,纹素值表示纹理)。这些颜色值可以是单色的,即,它们具有单色通道。然而,在一些示例中,颜色值可以是多通道值。例如,颜色值可以是RGB格式,其中存在红色通道(R)、绿色通道(G)和蓝色通道(B)。在其他示例中,颜色值可以是RGBA格式,其中存在红色通道(R)、绿色通道(G)、蓝色通道(B)和α通道(A)。在其它示例中,颜色值可以是YCbCr格式,其中颜色值具有亮度(luma)通道(Y)、第一色度通道(Cb)和第二色度通道(Cr)。如本领域已知的,多通道颜色值可以具有许多其它格式。多通道颜色值的每个通道包括与该特定通道有关的值。在本文描述的示例中,当我们提到“像素值”时,我们可以指多通道颜色值的一个通道的值。
在本文描述的示例中,压缩数据被存储为压缩数据块。例如,头部和差值可以存储在相同的连续压缩数据块中。然而,更一般地,应理解,压缩数据不需要存储为数据块,例如,存储为连续数据块。例如,头部和差值可单独地存储,例如存储在存储器的不同区段中。
压缩
作为本文中描述的压缩技术的概述,图像数据块被压缩以满足目标压缩水平。图像数据块包括多个图像元素值,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值。可以使用原点值和差值表示用于通道的块内的数据值,其中原点值对于用于通道的块内的所有数据值是共同的,而差值对于每个数据值是特定的。用于通道的块内的数据值的差值各自可以用第一位数表示。选择此第一位数,使得可以在没有任何前导零的情况下使用所述第一位数来无损地表示用于块的所述通道的最大差值。用于块的通道中的每个通道的原点值和第一位数的指示包括在压缩数据块的头部部分中。压缩数据块的头部部分具有固定大小。差值的表示包括在压缩数据块的主体部分中。压缩数据块的主体部分不具有固定大小(即,压缩数据块的主体部分的大小取决于被压缩的实际数据),但是压缩数据块的主体部分具有最大大小,该最大大小将不会被存储在压缩数据块的主体部分中的差值的表示超过。主体部分的最大大小取决于目标压缩水平。对于一个或多个通道中的每个通道,基于一个或多个通道的所有通道的第一位数确定第二位数。对于一个或多个通道中的每个通道,使用该通道的第二位数将该通道的差值的表示中的每个表示存储在压缩数据块中。如果使用第一位数表示压缩数据块中的差值将满足用于压缩图像数据块的目标压缩水平,则使用第一位数表示压缩数据块中的差值,即,对于一个或多个通道中的每个通道,确定第二位数等于该通道的第一位数。然而,如果使用第一位数表示压缩数据块中的差值将不满足用于压缩图像数据块的目标压缩水平,则确定一个或多个通道中的至少一个通道的第二位数小于该通道的第一位数,从而确保使用第二位数将差值的表示存储在压缩数据块中将满足目标压缩水平。
现在参考图3和图4描述压缩技术的一个示例。图3示出了被配置成对图像数据块执行压缩的压缩单元302。压缩单元302可实施为图1中所示的图形处理***中的压缩单元110。压缩单元302包括分析器逻辑304、差值确定逻辑306、差值大小确定逻辑308和压缩数据形成逻辑310。在压缩单元302中实施的逻辑块304到310中的每个可在硬件(例如,用固定功能电路实施的专用硬件)、软件(例如,作为在处理器上执行的软件模块)或其组合中实施。在硬件中实施逻辑块通常比在软件中实现逻辑块提供更低的操作延时。然而,在软件中实施逻辑块允许在制造压缩单元302之后改变逻辑块的功能方面有更多的灵活性。因此,在一些***中,(例如,当需要快速执行压缩时)硬件实施可能比软件实施更合适,而在一些其他***中,(例如,当压缩单元的功能需要是可变的时)软件实施可能比硬件实施更合适。
图4示出了使用压缩单元302压缩图像数据块以满足目标压缩水平的方法的流程图。
在步骤S402中,在压缩单元302处接收图像数据块。如上文所描述,图像数据块包括多个图像元素值,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值。
在步骤S404中,分析器逻辑304为一个或多个通道中的每个通道确定用于图像数据块的通道的原点值。例如,可以通过识别与块的通道有关的数据值中的最小值来确定通道的原点值。
在步骤S406中,分析器逻辑304为一个或多个通道中的每个通道确定块的最大差值。用于块的通道的差值(也可以称为“增量值”)表示数据值与为块确定的通道的原点值之间的差值。可以通过识别与用于块的通道有关的最小数据值和最大数据值,并且然后从所识别的最大数据值中减去所识别的最小数据值,来确定用于块的通道的最大差值。
在步骤S408中,分析器逻辑304为一个或多个通道中的每个通道确定第一位数。所确定的通道的第一位数是数字。具体地,所确定的通道的第一位数是用于无损地表示通道的最大差值的位数。在本文描述的示例中,所确定的通道的第一位数是可以用于无损地表示所确定的通道的最大差值的最小位数。术语“压缩格式”可以用于指为一个或多个通道确定的一个或多个第一位数的指示。通过确定在没有任何前导零的情况下有多少位可用来表示为块获得的通道的最大差值,来为一个或多个通道中的每个通道确定第一位数,其中,所确定的位数为第一位数。注意,用于块的通道的第一位数对于与用于块的该通道有关的所有数据值相关,而对于与块中的通道有关的不同数据值无关,所述通道具有为不同数据值确定的不同的第一位数。
为一个或多个通道中的每个通道确定的第一位数传递到差值大小确定逻辑308。在步骤S410中,差值大小确定逻辑308使用(例如,分析)为一个或多个通道中的每个通道确定的第一位数为一个或多个通道中的每个通道确定相应的一个或多个第二位数。确定一个或多个第二位数,使得(例如,以确保)用相应的一个或多个第二位数表示一个或多个通道的差值中的每个差值满足用于压缩图像数据块的目标压缩水平。第二位数是数字。在本文描述的示例中,依赖于用于块的相应一个或多个通道的所有一个或多个第一位数来为用于块的相应一个或多个通道确定一个或多个第二位数中的每个第二位数。注意,用于块的通道的第二位数对于与用于块的该通道有关的所有数据值相关,而对于与块中的通道有关的不同数据值无关,所述通道具有为不同数据值确定的不同的第二位数。
步骤S410可包括差值大小确定逻辑308确定用相应的确定的一个或多个第一位数表示一个或多个通道的差值是否满足目标压缩水平。如果确定用相应的确定的一个或多个第一位数表示一个或多个通道的差值将满足目标压缩水平,则对于一个或多个通道中的每个通道,第二位数等于该通道的第一位数。换句话说,如果块中的图像元素值的无损压缩满足目标压缩水平,那么图像元素值是被无损地压缩的。然而,如果确定用相应的确定的一个或多个第一位数表示一个或多个通道的差值不满足目标压缩水平,则对于一个或多个通道中的至少一个通道,第二位数小于该通道的第一位数。换句话说,如果块中的图像元素值的无损压缩不满足目标压缩水平,那么以有损方式压缩一个或多个通道中的至少一个通道的数据值以确保满足目标压缩水平。例如,引入到被压缩的图像元素值的数据值中的损失量可能不大于为满足目标压缩水平所需的量。
在本文描述的示例中,根据预定方案使用为一个或多个通道确定的所述第一位数确定一个或多个通道的一个或多个第二位数。根据预定方案从第一位数确定第二位数意味着以确定性方式确定第二位数。在这些示例中,相同预定方案由压缩单元302和解压缩单元602使用(如下文参考图6和图7更详细地描述)。由于使用第一位数确定第二位数的相同预定方案用在压缩单元302和解压缩单元602两者中,因此一个或多个第二位数的指示不需要包括在压缩数据中。如下所述,一个或多个第一位数的指示包括在压缩数据中,因此解压缩单元602可以使用一个或多个第一位数和预定方案来确定与压缩单元302中确定的相同的一个或多个第二位数。预定方案可以被称为预定技术或预定算法。
在步骤S412中,差值确定逻辑306为一个或多个通道中的每个通道确定表示数据值与为块确定的通道的原点值之间的差的差值。例如,如果原点值是块中的通道的数据值中的最小值,那么可通过从块中的通道的数据值减去原点值来确定差值。
在图3和图4所示的示例中,在确定第一位数和第二位数之后确定差值。在一些其他示例中,可以在确定第一位数和第二位数之前确定差值。具体地,在这些其他示例中,可以使用确定的差值以便例如,通过识别最大差值确定第一位数。
对于一个或多个通道中的每个通道,压缩数据形成逻辑310接收原点值、第一位数、第二位数和差值。在步骤S414中,压缩数据形成逻辑310形成压缩数据,例如,作为压缩数据块,其中对于一个或多个通道中的每个通道,所述压缩数据包括:
-为所述通道确定的原点值的指示;
-为所述通道确定的第一位数的指示;以及
-为所述通道确定的差值的表示,其中为所述通道确定的差值的表示中的每个表示使用为所述通道确定的第二位数,从而满足目标压缩水平。
压缩数据(例如,压缩数据块)从压缩单元302输出,且可例如经由存储器接口108传递到存储器104。然后,压缩数据可存储在存储器104中。替代性地,压缩数据可以存储在存储器104以外的存储器中,例如,压缩数据可以存储在GPU 102上的本地存储器中。
目标压缩水平对应于目标压缩块大小。对于具有固定大小的图像数据块,用于压缩图像数据块的目标压缩水平意味着压缩数据块不超过目标压缩块大小。如果图像数据块的压缩“满足目标压缩水平”,这意味着所得的压缩数据块不超过目标压缩块大小。例如,如果图像数据块的无损压缩使得压缩块小于目标压缩块大小,压缩数据块可以小于目标压缩块大小。在这个意义上,目标压缩块大小表示压缩块的最大大小。压缩单元302可具有一组固定的目标压缩水平。例如,所述一组目标压缩水平可以包括:
(i)无损压缩水平,其中所有图像元素值均被无损压缩,即使这并不使得数据的大小有任何减小(这可被认为等同于1:1的目标压缩比,其可以根据目标压缩块大小被称为是未压缩图像数据块大小的100%);
(ii)75%的压缩水平,其中目标压缩块大小是未压缩图像数据块的大小的75%。这对应于4:3的压缩比;
(iii)50%的压缩水平,其中目标压缩块大小是未压缩图像数据块的大小的50%。这对应于2:1的压缩比;和
(iv)25%的压缩水平,其中目标压缩块大小是未压缩图像数据块的大小的25%。这对应于4:1的压缩比。
在本文描述的示例中,目标压缩水平是指用于存储差值的数据量。用于存储原点值的指示和第一位数的指示的数据的大小是固定的,并且不取决于压缩单元102所使用的目标压缩水平,并且不包括在确定如上所列的示例中的“1:1”、“4:3”、“2:1”和“4:1”的压缩比中。
如果压缩单元在专用硬件(例如,作为固定功能电路)中实施,则压缩单元302可以在硬件中配置成能够根据在一组目标压缩水平中的任意一个目标压缩水平执行压缩。可以从一组目标压缩水平中做出一个目标压缩水平的选择,以在压缩图像数据块时由压缩单元302使用。例如,由压缩单元302实施的目标压缩水平可以在运行时之前例如由在GPU初始化时执行的固件指令配置。以此方式,压缩单元302将根据相同目标压缩水平压缩所有图像数据块,除非压缩单元302的配置随后被更改。替代性地,当将图像数据块提供到压缩单元302以待压缩时,可与图像数据块一起向压缩单元302提供指示以指示哪种目标压缩水平是用于压缩图像数据块的。这将允许压缩单元302根据不同目标压缩水平压缩不同的图像数据块,而不需要被重新配置,但由于目标压缩水平的指示将与图像数据块一起发送到压缩单元302,因此将给***增加一点额外的复杂性。在解压缩期间,用于GPU的驱动器向解压缩单元发送目标压缩水平的指示。如果在运行时针对不同的图像数据块的目标压缩水平不变,那么这可以相对简单。然而,如果在运行时针对不同的图像数据块的目标压缩水平可能改变,那么驱动器可以保持跟踪不同的压缩数据块的目标压缩水平,并且将这些目标压缩水平指示给解压缩单元,使得解压缩单元可根据其目标压缩水平对压缩数据块进行正确的解压缩。在一些其它示例中,对于块的目标压缩水平的指示可以包括在压缩数据块的头部部分中,使得在对压缩数据块进行解压缩时,解压缩单元可以从压缩数据块的头部部分读取目标压缩水平的指示,从而确定块的目标压缩水平,而不是驱动器跟踪目标压缩水平。
在不同的示例中,在步骤S410中,可以基于一个或多个第一位数以不同方式确定一个或多个第二位数。例如,为了确定一个或多个第二位数,一个或多个第一位数可以减少零、一或更大值,使得通过从具有确定的第一位数的差值的表示中去除零个、一个或多个最低有效位(LSB),用所述相应的一个或多个第二位数表示一个或多个通道的差值中的每个差值满足用于压缩图像数据块的目标压缩水平。一个或多个第一位数被减少以由此确定一个或多个第二位数的一个或多个第一位数的减少量可以由预定方案限定。如果通道的第一位数减少零,这意味着通道的第二位数将等于通道的第一位数。类似地,如果从具有第一位数的差值的表示中去除零个LSB,则不会改变差值的表示。从差值的表示中去除LSB(而不是去除其它位),因为这些是在表示差值的值方面最低有效的位,使得去除LSB将比从差值去除其它位时失去更少的信息。以此方式,尽管通过从差值去除LSB而将一些信息损失引入到压缩过程中,但信息损失较小,并且例如仅达到确保满足目标压缩水平的程度。
如上所述,在不同的示例中,用于从一个或多个第一位数确定一个或多个第二位数的预定方案可以是不同的。此外,在本文描述的示例中,对于一个或多个通道中的每个通道存在阈值位数,其中如果对于一个或多个通道中的每个通道的第二位数等于阈值位数,则将满足用于压缩图像数据块的目标压缩水平。在这些示例中,如果通道的第一位数小于或等于通道的阈值位数,则通道的第一位数减少零,使得通道的第二位数等于通道的第一位数;并且如果通道的第一位数大于通道的阈值位数,则第一位数减少的量不会使得通道的第二位数小于阈值位数。对于一个或多个通道中的每个通道使用阈值位数可以防止用于任何一个特定通道的差值的位数减少太多。例如,如果通道的差值已经有小位数(例如2位),那么相比于从具有更多位(例如6位)的不同通道的差值丢失LSB的情况,从那些差值中丢失LSB是相对显著的信息损失。例如,如果目标压缩水平为50%(即,如果图像元素值的一个或多个差值的大小不能超过图像元素值的一个或多个数据值的大小的50%),则每个通道的阈值位数可以被设置为用于每个数据值的位数的一半,或者可以被设置为小于用于每个数据值的位数的一半,仅举两个示例。阈值位数对于一个或多个通道中的每个通道可以是相同的。替代性地,可能的情况是阈值位数对于一个或多个通道中的每个通道是不相同的。例如,如果图像元素值表示在红色、绿色、蓝色和α通道中具有数据值的颜色值,则用于α通道的阈值位数可以不同于用于红色、绿色和蓝色通道的阈值位数。在一些示例中,可以例如通过将一个或多个所选通道的阈值位数设置为比其它通道的阈值位数更高的值,一个或多个所选通道可以优先于其它通道。
除了对于一个或多个通道中的每个通道使用阈值位数之外,所述预定方案可以旨在均匀地减少一个或多个通道中的每个通道,例如减少相同或相似的量。例如,根据预定方案,可以从个别通道依序地丢弃最低有效位,直到满足目标压缩水平。换句话说,依次从上述阈值通道中的每个通道去除一个位,直到总位数符合目标压缩水平。从不同通道丢弃LSB的顺序由预定方案限定。
在上面描述的示例中,在步骤S406中,分析器逻辑304通过识别与用于块的通道有关的最小数据值和最大数据值,并且从所识别的最大数据值中减去所识别的最小数据值,来获得用于块的通道的最大差值。然而,在其它示例中,可以通过为块确定的通道的所有差值并且然后识别那些确定的差值中的最大值来为块确定通道的最大差值。在这些其它示例中,分析器逻辑可以通过接收为块确定的通道的差值并确定哪个确定的差值是最大的来获得用于块的通道的最大差值。
注意,如果块中的通道的所有数据值具有相同值,那么在压缩数据块中不存储该通道的差值。在这种情况下,通道的第一位数和通道的第二位数均为零,并且存储在头部中的通道的原点值指示每个数据值在块中具有的用于通道的单个值。
如上所述,在一些示例中,通过识别与用于块的通道有关的数据值中的最小值来确定用于块的通道的原点值,并且通过识别与用于块的通道有关的数据值中的最大值并从所识别的与用于块的通道有关的数据值中的最大值减去所识别的与用于块的通道有关的数据值中的最小值,来确定用于块的通道的差值的最大差值。在这些示例中,通过从与通道有关的数据值中减去通道的原点值,确定通道的差值。在这些示例中,通道的原点值表示与用于块的通道有关的数据值的下限(即,最小值),并且通道的差值表示在对压缩数据块进行解压缩时对通道的原点值所做的加法。
然而,在其它示例中,通过识别与用于块的通道有关的数据值中的最大值来确定用于块的通道的原点值,并且通过识别与用于块的通道有关的数据值中的最小值并从所识别的与用于块的通道有关的数据值中的最大值减去与所识别的用于块的通道有关的数据值中的最小值来确定用于块的通道的差值的最大差值。在这些示例中,通过从通道的原点值减去与通道有关的数据值来确定通道的差值。在这些示例中,通道的原点值表示与用于块的通道有关的数据值的上限(即,最大值),并且通道的差值表示在对压缩数据块解压缩时从通道的原点值所做的减法。
在一些示例中,可以将通道的原点值设置在用于块的通道的数据值的范围内(例如,在用于块的通道的数据值的范围中间的值,例如,在与用于块的通道有关的最大数据值与最小数据值之间的一半处的值),其中,差值可以是有符号值。
在一些示例中,可以根据模运算确定用于块的一个或多个通道中的每个通道的原点值和差值。在这些示例中,当根据模运算的模相对于原点值确定差值时,一个或多个通道中的每个通道的原点值可被确定为与产生最小的最大差值的通道有关的块的数据值中的一个数据值。例如,差值可以确定为模2n,其中,n为每个数据值的位数。例如,如果数据值为8位值,则差值可以确定为模256。例如,如果与用于块的通道有关的数据值为表示十进制的251、255、7和16的值的8位值(即,以二进制表示,数据值为11111011、11111111、00000111和00010000),则原点值可被确定为251(当这些值以模256表示时,其可以被认为表示值-5)。将251作为这四个数据值的原点值,差值可以被确定为0、4、12和21,使得为这些差值确定的第一位数是五,即,最大差值(21)可以用五位无损地表示(为10101)。注意,如果模运算不用于压缩此四个数据值的块,那么差值各自将需要具有八位,例如,如果原点值被确定为块中的最小值(即,7),那么最大差值将是248,需要八位无损地表示(为11111000)。
在上文所描述的示例中,为块的一个或多个通道中的每个通道确定单个原点值。在一些其它示例中,可为一个或多个通道中的至少一个通道确定多个原点值。在这些其它示例中,相对于多个原点值中的一个原点值为一个或多个通道中的至少一个通道(其存在多个原点值)确定每个差值,并且对于差值中的每个差值的指示包括在压缩块中以指示从多个原点值中的哪个原点值确定差值。如果在块内与通道有关的数据值形成数据值的多个组,其中每组数据值具有小范围,则这可以是有用的。例如,如果图像数据块内的图像元素值与场景中的多个不同物体有关,则此情形可相对频繁地出现。例如,如果与用于块的通道有关的数据值为3、5、3、4、6、132、132、133,那么可确定第一原点值为3并且可确定第二原点值为132,且接着对于前五个数据值的差值可相对于第一原点值确定为0、2、0、1和3,且对于最后三个数据值的差值可相对于第二原点值确定为0、0和1。在这种情况下,为这些差值确定的第一位数为二,即,最大差值(3)可以无损地用两位表示(为11)。注意,如果使用单个原点值压缩此数据值块,则差值各自需要具有八位,例如,如果原点值被确定为最小值(即3),那么最大差值将是130,需要八位无损地表示(为10000010)。
如上文所提及,在本文描述的示例中,压缩数据被存储为压缩数据块,例如,头部和差值可存储在相同的连续压缩数据块中。然而,更一般地,应理解,压缩数据不需要存储为数据块,例如,存储为连续数据块。例如,头部和差值可单独地存储,例如存储在存储器的不同区段中。
图5a和5b表示用于压缩数据块的示例性格式。具体地,图5a示出了用于存储四个压缩数据块(在图5a中表示为块0、块1、块2和块3)的示例性格式500。每个压缩数据块包括头部部分(存储在区段502中),该头部部分具有固定大小,并且包括所确定的原点值的指示和为块的一个或多个通道中的每个通道确定的第一位数的指示。每个压缩数据块还包括主体部分(存储在区段504中),该主体部分具有可变大小,并且包括为一个或多个通道中的每个通道确定的差值的表示。在图5a所示的示例中,多个(即,四个)压缩数据块存储在一起,使得压缩块的头部部分一起存储在区段502中,并且压缩块的主体部分一起存储在区段504中。在其它示例中,每个压缩数据块可单独地存储,即存储在不同地址空间中,使得每个压缩数据块的头部部分和主体部分存储在连续地址范围中。
图5a中表示的四个压缩块可以对应于图2中示出的相应四个图像数据块2020、2021、2022和2023,使得每个图像数据块包括十六个图像元素值。在此示例中,每个图像元素值分别包括与红色、绿色、蓝色和α通道有关的四个8位数据值,使得每个图像元素值用32位表示。因此,每个未压缩图像数据块用512位表示。此示例中的目标压缩水平为50%。这意味着,在此示例中,可以表示每个压缩数据块的差值的最大总位数为256(即每个图像元素值十六位,以在四个通道之间分配)。在图5a所示的示例中,压缩数据块的头部部分中的每个头部部分包括64位。在图5a所示的示例中,地址空间的每一行表示128位,因此两个压缩块的头部部分可以在相同行上,并且为不同压缩数据块的主体部分中的每个主体部分提供对应于地址空间的两行的最大存储器足迹(即,256位)。因为保证本文中描述的压缩技术满足目标压缩水平(例如,50%压缩目标),所以压缩数据块的主体部分将不超过在图5a中所示的示例中为其提供的256位。每个压缩数据块具有不会超过并且由目标压缩水平确定的固定存储分配(即,固定存储器足迹)。
举有n个通道(通道0到通道(n-1))的示例,与m个数据值(数据值0到数据值(m-1))有关的差值按以下顺序存储在压缩数据块的主体部分中:数据值0,通道0;数据值0,通道1;……数据值0,通道(n-1);数据值1,通道0;……数据值1,通道(n-1);……数据值(m-1),通道0;……数据值(m-1),通道(n-1)。换句话说,为不同通道中的每个通道存储与特定数据值有关的差值,且接着为不同通道中的每个通道存储与下一数据值有关的差值,等等。这允许从一个组块中的压缩数据块读取与针对不同通道中每个通道的特定数据值有关的差值。如果压缩数据块中的数据值的一些但并非全部将被解压缩,则这可以是有用的。
图5b示出了压缩数据块的头部部分内的数据的示例性格式510。在此示例中,压缩数据块的头部部分中包括64位数据。具体来说,头部部分包括用于四个通道512的原点值的指示。在本示例中,32位用于这些原点值的指示,使得8位用于通道的原点值的每个指示。以此方式,对于一个或多个通道中的每个通道,通道的原点值的指示具有与与图像数据块中的一个图像元素值的通道有关的数据值中的一个数据值相同的位数。以此方式,原点值的精度不降低,因此即使正在实施有损压缩,原点值中也没有数据丢失。头部部分还包括三个保留位514,所述保留位在不同示例中可以用于不同目的。在不同示例中,保留位允许存储在压缩块中的数据有一定灵活性。头部部分还包括一些误差校正指示516,例如循环冗余校验(CRC)位,其在下文描述。在图5b中所示的示例中,13位用于误差校正指示。头部部分还包括通道518中的每个通道的第一位数的指示。在此示例中,有四个通道,并且第一位数的每个指示具有四位,使得有十六位用于第一位数的指示。使用四位来指示第一位数允许由每个第一位数表示从0到15的值。
在本文描述的示例中,压缩数据块具有基地址,并且头部部分在由基地址限定的第一地址处开始,其中头部部分的数据在第一方向上从第一地址运行,并且其中,主体部分在由基地址限定的第二地址处开始,其中主体部分的数据在第二方向上从第二地址运行,其中,在地址空间中,第一方向与第二方向相反。例如,如果每个压缩数据块被单独地存储,则基地址可以指向压缩数据块的主体部分的开始,并且主体部分的地址从该点增加,头部部分可从基地址减1开始,头部部分的地址从该点减少。图5a中所示的示例略微更复杂,原因是四个压缩数据块被存储在一起。然而,即使在这种情况下,不同压缩数据块中的每个压缩数据块的头部部分的起始地址由基地址限定,并且不同的压缩数据块中的每个压缩数据块的主体部分的起始地址由基地址限定。
在上面描述的示例中,压缩数据块不包括为一个或多个通道中的每个通道确定的第二位数的指示。相反,一个或多个通道中的每个通道的第一位数的指示包括在压缩数据块中,并且用于从第一位数确定第二位数的相同预定方案可用在解压缩单元112中以确定第二位数,如下文更详细地描述的。
然而,在其他示例中,对于一个或多个通道中的每个通道,压缩数据块还可(例如,在压缩数据块的头部部分中)包括为通道确定的所述第二位数的指示。例如,压缩数据块的头部部分可不包括保留位514或误差校正指示516,在这种情况下,这些位(例如,十六位)可以用于存储用于相应通道的第二位数的指示。
在一些示例中,在存在多个通道的情况下,压缩单元302可在多个通道上执行去相关(例如,颜色去相关),从而减少或去除与图像元素值的不同通道有关的不同数据值之间的相关性。例如,在图4的流程图中所示的方法中的步骤S402与S404之间,压缩单元302可以执行颜色去相关。执行颜色去相关的方法是本领域已知的,但是作为简单示例,当图像数据呈RGB格式时,可使用颜色去相关技术,使得每个图像元素值包括红色数据值(R)、绿色数据值(G)和蓝色数据值(B)。颜色去相关过程可包括:
根据等式R’=R-G计算红色通道(R')的数据值;
根据等式G’=G确定绿色通道(G’)的数据值;以及
根据等式B’=B-G计算蓝色通道(B')的数据值。
R’、G’和B'的值接着可用于压缩过程的其余部分,例如从图4的流程图中示出的步骤S404向前。
如上文所提及,在一些示例中,一个或多个误差校正指示可包括在压缩数据块中。这些误差校正指示可由压缩单元302通过确定图像元素值来确定,所述图像元素值将通过正确地对压缩数据块进行解压缩而获得。误差校正指示可以是可以已知方式计算的CRC位。如果差值在压缩数据块中无损地表示,例如,如果第一位数等于一个或多个通道中的每个通道的第二位数,则可以从图像数据块的原始数据值计算CRC位,因为这些是通过正确地对压缩数据块进行解压缩应当获得的值。然而,如果差值中的任一个在压缩数据块中被有损地表示,例如,如果第一位数不等于一个或多个通道中的任一通道的第二位数,则压缩单元302可以确定解压缩单元602通过正确地对压缩数据块进行解压缩应当获得的数据值,然后可以从由压缩单元302确定的数据值计算CRC位。压缩单元可例如确定解压缩单元通过分析输入数据块和在压缩过程期间进行的各种确定应当获得的数据值。替代性地,压缩单元可以对压缩数据块进行解压缩以确定解压缩单元应当获得的数据值。以这种方式,即使正在执行有损压缩时,也可使用误差校正技术,以确定在表示压缩数据块的数据的传输中,例如,在从压缩单元110经由存储器接口108到存储器104的传输中,并从存储器104经由存储器接口108返回到解压缩单元112的传输中是否存在任何错误。
示例性压缩
现在描述每个图像元素值具有与四个颜色通道(红色通道(R)、绿色通道(G)、蓝色通道(B)和α通道(A))有关的数据值的示例。在此示例中,将压缩四个像素值的块。每个像素值以R8G8B8A8格式用32位表示(即,每个数据值用8位表示),因此未压缩图像数据块用128位表示。目标压缩水平为50%,因此压缩数据块的主体部分不能超过64位。块中的红、绿、蓝和α值可以表示为单独数据集。在此示例中,在不同通道中,块中的四个像素的值为:
R=[16,24,9,45]
G=[89,89,94,84]
B=[240,215,204,228]
A=[255,255,250,255]
在此示例中,对于每个通道原点值被确定为块中的最小值。因此,原点值和差值为:
R:原点=9,差值=[7,15,0,36]。红色通道的无损差值可以二进制用6位表示(即,红色通道的第一位数为6),即,它们可以表示为:[000111,001111,000000,100100]。
G:原点=84,增量值=[5,5,10,0]。绿色通道的无损差值可以二进制用4位表示(即,绿色通道的第一位数为4),即,它们可以表示为:[0101,0101,1010,0000]。
B:原点=204,增量值=[36,11,0,24]。蓝色通道的无损差值可以二进制用6位表示(即,蓝色通道的第一位数为6),即,它们可以表示为:[100100,001011,000000,011000]。
A:原点=250,增量值=[5,5,0,5]。α通道的无损差值可以二进制用3位表示(即,α通道的第一位数为3),即,它们可以表示为:[101,101,000,101]。
50%的压缩目标允许对于差值每个像素值为16位,但如果在此示例中所有通道都被无损压缩,则对于差值每个像素值将为19位(即,6+4+6+3=19)。在此示例中,每个差值大小的每通道阈值为4位,因此我们不会降低在上面的示例中绿色或α通道的差值的位数。根据预定方案,确定通道的第二位数为:R=4位,G=4位,B=5位,以及A=3位。每个通道的原点值的指示包括8位,并且每个通道的第一位数的指示包括4位。
因此,在压缩块中,我们以二进制将不同通道的原点值的指示、第一位数的指示和差值存储为:
R:原点值=00001001,第一位数=0110,差值:[0001,0011,0000,1001]
G:原点值=01010100,第一位数=0100,差值:[0101,0101,1010,0000]
B:原点值=11001100,第一位数=0110,差值:[10010,00101,00000,01100]
A:原点值=11111010,第一位数=0011,差值:[101,101,000,101]
解压缩
作为本文描述的解压缩技术的概述,可以对压缩数据(例如,压缩数据块)执行解压缩以确定压缩数据表示的图像数据块的一个或多个图像元素值。如上文所描述,图像数据块包括多个图像元素值,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值。对于一个或多个通道中的每个通道,压缩数据包括原点值的指示、用于无损地表示差值的第一位数的指示以及差值的表示。为一个或多个通道中的每个通道获得第二位数,其中第二位数是将差值的表示包括在压缩数据中所使用的位数。如果第二位数小于通道的第一位数,则将一个或多个LSB加入(即,附加)到来自压缩数据的差值以确定具有第一位数的差值。然后,对于每个通道,可以通过将该通道的原点值和该通道的差值(具有该通道的第一位数)组合来确定与该通道有关的数据值。
压缩数据可以存储为具有上文描述的格式(例如,如图5a和图5b中所示)的压缩数据块。如上文所提及,在本文描述的示例中,压缩数据被存储为压缩数据块,例如,头部和差值可存储在相同的连续压缩数据块中。然而,更一般地,应理解,压缩数据不需要存储为数据块,例如,存储为连续数据块。例如,头部和差值可单独地存储,例如存储在存储器的不同区段中。在图5a和图5b所示的压缩数据块的示例性格式中,压缩数据块的头部部分具有固定大小。此外,可以基于头部部分中的信息来确定第二位数,而不需要从压缩数据块的主体部分读取任何数据。当已经确定第二位数时,可确定每个差值的位置。例如,对一个或多个通道的第二位数求和得到与一个图像元素值的数据值有关的差值的总体压缩大小,该差值的总体压缩大小可用于确定用于被解压缩的图像元素值的所需差值的偏移量。因此,可以读取一些数据值的差值,而不一定读取所有差值。这意味着解压缩单元112可以确定图像数据块中的一个或多个图像元素值的解压缩值,而不一定对整个压缩数据块进行解压缩。例如,图像数据块可以包括十六个纹素值,并且双线性纹理滤波操作可能需要仅从压缩数据块中确定四个纹素值。使用本文示例中描述的解压缩技术,解压缩单元112可以确定四个期望的纹素值,而不对压缩数据块中的另外12个纹素值进行解压缩。这样,压缩数据块是“随机可访问的”。此外,甚至可以从压缩数据块中解压缩与个别通道有关的单独数据值,而不必从压缩数据块解压缩其它数据值(甚至与相同图像元素值的不同通道有关的数据值)。
现在参照图6和图7描述解压缩技术的一个示例。图6示出了被配置成执行解压缩以从压缩数据(例如,压缩数据块)确定一个或多个图像元素值的解压缩单元602。解压缩单元602可以实施为图1所示的图形处理***中的解压缩单元112。解压缩单元602包括差值确定逻辑604和数据值确定逻辑606。差值确定逻辑604包括差值大小确定逻辑608和解包器逻辑610。在解压缩单元602中实施的逻辑块604到610中的每一个可以在硬件(例如,用固定功能电路实施的专用硬件)、软件(例如,作为在处理器上执行的软件模块)或其组合中实施。在硬件中实施逻辑块通常比在软件中实现逻辑块提供更低的操作延时。然而,在软件中实施逻辑块允许在制造解压缩单元602之后更改逻辑块的功能方面有更多的灵活性。因此,在一些***中,(例如,当需要快速执行压缩时)硬件实施可能比软件实施更合适,而在一些其他***中,(例如,当压缩单元的功能需要可变时)软件实施可能比硬件实施更合适。
图7示出了执行解压缩以从压缩数据块确定一个或多个图像元素值的方法的流程图,所述压缩数据块已经如上文所描述被压缩以满足目标压缩水平。在此示例中,压缩数据在压缩数据块中,但在其它示例中,压缩数据不一定在压缩数据块中。
在步骤S702中,在解压缩单元602处接收压缩数据块。例如,如果解压缩单元602实现为图1所示的图形处理***中的解压缩单元112,那么可通过存储器接口108从存储器104接收压缩数据块。
在步骤S704中,差值大小确定逻辑608从一个或多个通道中的每个通道的压缩数据块读取第一位数的指示。如上所述,通道的第一位数是可用于无损地表示用于块的通道的差值的位数。
在步骤S706中,差值大小确定逻辑608为一个或多个通道中的每个通道获得存储在压缩块中的差值的差值大小。换句话说,在步骤S706中,差值大小确定逻辑608为一个或多个通道中的每个通道获得(例如,确定)第二位数,其中使用该通道的第二位数将一个或多个通道中的每个通道的差值的表示包括在压缩数据块中。如上所述,确定一个或多个第二位数以确保压缩数据块满足用于压缩图像数据块的目标压缩水平。所确定的差值大小(即,第二位数)和一个或多个通道的第一位数的指示被提供到解包器逻辑610。
在本文描述的在压缩数据块中不包括第二位数的指示的示例中,步骤S706涉及使用一个或多个通道中的每个通道的第一位数根据预定方案确定该通道的第二位数。具体地,预定方案与上文所描述的压缩单元302中使用的方案是相同的方案,使得给定一个或多个第一位数的相同集合,解压缩单元602将确定与在压缩单元302中确定的一个或多个第二位数的相同集合。换句话说,压缩单元302和解压缩单元602都使用共同函数来确定多少LSB从一个或多个通道中的每个通道的差值丢弃。
具体地,类似于如上文关于压缩过程所描述的,步骤S706可涉及确定用相应的确定的一个或多个第一位数表示一个或多个通道的差值是否满足目标压缩水平。如果确定用相应的确定的一个或多个第一位数表示一个或多个通道的差值将满足目标压缩水平,则对于一个或多个通道中的每个通道,第二位数等于该通道的第一位数。然而,如果确定用相应的确定的一个或多个第一位数表示一个或多个通道的差值不满足目标压缩水平,则对于一个或多个通道中的至少一个通道,第二位数小于该通道的第一位数。
此外,如上文关于解压缩过程所描述的,在一些示例中,对于一个或多个通道中的每个通道存在阈值位数。如果通道的第一位数小于或等于该通道的阈值位数,则该通道的第二位数等于该通道的第一位数。如果通道的第一位数大于该通道的阈值位数,则该通道的第二位数在该通道的阈值位数到该通道的第一位数的范围内。如上所述,在一些示例中,阈值位数对于一个或多个通道中的每个通道是相同的;而在一些其它示例中,不是阈值位数对于一个或多个通道中的每个通道是相同的这种情况。
此外,如上所述,在一些示例中,一个或多个通道中的每个通道的第二位数的指示可以包括在压缩数据块中。在这些示例中,不需要在解压缩单元中实施差值大小确定逻辑608。在这些示例中,由差值确定逻辑604针对一个或多个通道中的每个通道,通过从压缩数据块读取该通道的第二位数的指示来获得第二位数。
在步骤S708中,解包器逻辑610使用相应的一个或多个通道的一个或多个第二位数从压缩数据块读取用于被解压缩的一个或多个图像元素值的差值的表示。
在步骤S710中,基于从压缩数据块读取的差值的表示,解包器逻辑610根据通道的所述第一位数为一个或多个通道中的每个通道并为被解压缩的一个或多个图像元素值中的每个图像元素值确定差值。例如,为通道确定的差值具有为该通道指示的第一位数。为相应通道确定的具有适当第一位数的差值提供至数据值确定逻辑606。
在本文描述的示例中,在步骤S710中,对于一个或多个通道中的每个通道并且对于被解压缩的一个或多个图像元素值中的每个图像元素值,根据通道的所述第一位数确定差值包括将零个、一个或多个最低有效位(LSB)加入(即,附加)到从压缩数据块读取的差值的表示,从而为一个或多个通道中的每个通道确定具有所述第一位数的差值。如果第一位数与通道的第二位数相同,则将零个LSB加入到从压缩数据块读取的差值的表示。如果第一位数大于通道的第二位数,则将一个或多个LSB加入到从压缩数据块读取的差值的表示以为该通道确定具有第一位数的差值。
在不同的示例中,加入的位的值可以是不同的。在简单示例中,加入到从压缩数据块读取的差值的表示的零个、一个或多个LSB全部为零。使用零作为被加入的LSB意味着当将差值加入到原点值时,保证结果不溢出,使得与其它值用于被加入的LSB相比,更简单(例如,在硅面积方面更小)的加法器可用来将差值加入到原点值。此外,使用零作为被加入的LSB意味着为被压缩且接着被解压缩的为零的数据值将仍然为零。这可以例如对表示红色、蓝色和绿色通道值有用,使得完全黑色区域(例如,其具有为零的红色值、绿色值和蓝色值)将在压缩和解压缩图像元素值之后将仍保持完全黑色。这也可以对表示α通道值有用,使得完全透明的图像元素值(即,α值为零的图像元素值)在压缩和解压缩图像元素值之后将仍保持完全透明。
在另一示例中,加入到从压缩数据块读取的差值的表示的零个、一个或多个LSB全部是一。使用一作为被加入的LSB意味着被压缩且接着被解压缩的最大数据值(例如,对于8位数据值,值为255)将仍是最大数据值。这可以对例如表示红色、蓝色和绿色通道值是有用的,使得完全白色区域(例如,其具有最大红色值、绿色值和蓝色值(例如,对于8位值,值为255))在压缩和解压缩图像元素值之后将仍保持完全白色。这也可以对表示α通道值是有用的,使得完全不透明的图像元素值(即,具有最大α值的图像元素值(例如,对于8位值,α值为255))在压缩和解压缩图像元素值之后将仍保持完全不透明。如果使用一作为被加入到差值的LSB,那么可采取预防措施以确保差值和原点值的总和不会溢出。例如,当对差值和原点值求和时,原点值的对应LSB可被掩蔽。
在另一示例中,加入到从压缩数据块读取的差值的表示的零个、一个或多个LSB是随机位或伪随机位。使用随机位或伪随机位作为被加入的LSB可有助于减少通过压缩和解压缩图像元素值而引入到图像元素值中的视觉上可感知的条带效应。
在又一个示例中,加入到从压缩数据块读取的差值的表示的零个、一个或多个LSB对于原点值的不同范围或对于不同值的不同范围是不同的。例如,对于低原点值,例如,对于阈值以下的原点值,加入到差值的表示的零个、一个或多个LSB为零;而对于高原点值,例如,对于高于阈值的原点值,加入到差值的表示的零个、一个或多个LSB为一。阈值可以是任何合适的值,例如1与(2n-1)之间的任何值。这可以有助于保持真正的黑色(用零表示)并且保持真正的白色(用一表示)。作为另一示例,对于其MSB为零的差值,加入到差值的表示的零个、一个或多个LSB为零;而对于其MSB为一的差值,加入到差值的表示的零个、一个或多个LSB为一。
在不同示例中,加入到从压缩数据块读取的通道的差值的表示的零个、一个或多个LSB等于通道的原点值的对应的零个、一个或多个最高有效位。这可以是有用的,使得对于大体上高值的块(原点值的MSB为一),将一作为LSB加入到差值的表示,并且对于大体上低值的块(原点值的MSB为零),将零作为LSB加入到差值的表示。这种压缩/解压缩技术往往会:(i)以使得零值被解压缩以得到零的方式压缩零值,和(ii)以使得最大值被解压缩以得到最大值的方式压缩最大值。类似于上文所描述的,如果加入到差值的表示的LSB包括一个或多个一,那么可采取预防措施以确保差值和原点值的总和不会溢出。例如,当对差值和原点值求和时,原点值的对应LSB可被掩蔽。
所述方法可包括:对从压缩数据块读取的差值的表示的位执行左移位零个、一个或多个位位置的操作;以及接着在移位后在LSB位置中加入零个、一个或多个LSB,其中,根据如上所述确定零个、一个或多个LSB,从而为一个或多个通道中的每个通道确定具有所述第一位数的差值。
在步骤S712中,数据值确定逻辑606从压缩数据块读取一个或多个通道中的每个通道的原点值的指示。
在步骤S714中,数据值确定逻辑606使用(i)通道的原点值,以及(ii)为图像元素值确定的通道的差值,为一个或多个通道中的每个通道确定与被解压缩的一个或多个图像元素值中的每个图像元素值的通道有关的数据值。使用差值和通道的原点值确定数据值的方式与基于数据值在压缩单元302中确定差值和原点值的方式匹配。如上文所描述,压缩单元302可在不同示例中不同地使用数据值来确定原点值和差值。例如,如果原点值是块内的最小数据值,那么对于一个或多个通道中的每个通道,通过对通道的原点值和为图像元素值确定的通道的差值求和来为被解压缩的一个或多个图像元素值中的每个图像元素值确定与通道有关的数据值。作为另一示例,如果原点值是块内的最大数据值,那么对于一个或多个通道中的每个通道,通过从通道的原点值中减去为图像元素值确定的通道的差值,来为被解压缩的一个或多个图像元素值中的每个图像元素值确定与通道有关的数据值。在上述段落中给出的两个示例中,可采取预防措施,以确保不存在从已经加入到差值的LSB到解压缩数据值的最高有效位的进位。例如,如果原点值和差值相加在一起,那么原点值的对应的零个、一个或多个LSB(对应于加入到差值的零个、一个或多个LSB)在被加入到差值之前用零填充。作为另一示例,如果从原点值中减去差值,那么原点值的对应的零个、一个或多个LSB(对应于加入到差值的零个、一个或多个LSB)在减去差值之前用一填充。例如,使用8位数据值,这意味着不存在00000000到11111111的溢出,反之亦然。
在另一示例中,对于一个或多个通道中的每个通道,可通过使用模运算中的加法或减法将通道的原点值与为图像元素值确定的通道的差值组合,来为被解压缩的一个或多个图像元素值中的每个图像元素值确定与通道有关的数据值。在此示例中,可采取预防措施以确保解压缩值位于模运算的模的正确侧。例如,如果通道的四个8位数据值的块是251、255、0和1,那么根据使用模运算的示例,原点值可以被设置为251(即,二进制表示为11111011),差值可以为0、4、5和6。这些差值可以用三个位无损地表示为000、100、101和110,因此第一位数是三。在此示例中,用于块的通道的第二位数被确定为二,以便满足目标压缩水平。简单地讲,差值可以存储为00、10、10和11,不过可以使得解压缩数据值为251、255、255和1(如果加入解压缩单元中的LSB为零)。第三数据值中的数据丢失已从0值改变为255值,这可能是非常明显的。因此,当差值被压缩时,压缩单元可识别差值的舍入是否将使得所得的解压缩数据值在模运算的模上交叉,并且如果这样的话,那么可修改该差值的舍入,以避免在模运算的模上交叉。应注意,压缩单元知道将如何对压缩数据进行解压缩,因此它可以确定差值中的舍入是否将使得所得的解压缩数据值在模运算的模上交叉。例如,在上面的示例中的第三差值可以是向上舍入而不是向下舍入(但其它三个差值将仍然向下舍入),使得三个差值可以在压缩数据中存储为00、10、11和11。这会导致解压缩值为251、255、1和1。第三数据值中的数据丢失已从0值改变为1值,这不如从0改变到255那么明显。
在又一示例中,压缩数据块包括一个或多个通道中的至少一个通道的多个原点值,其中指示包括在压缩数据块中,以指示已经从多个原点值中的哪一个确定了一个或多个通道中的所述至少一个通道的每个差值。在此示例中,对于一个或多个通道中的所述至少一个通道,使用:(i)通道的原点值,该原点值由为图像元素值确定的通道的差值的指示来指示;以及(ii)为图像元素值确定的通道的差值,为被解压缩的一个或多个图像元素值中的每个图像元素值确定与通道有关的数据值。
所确定的数据值表示解压缩图像元素值。所述方法还可包括输出所确定的被解压缩的一个或多个图像元素值的数据值以用于进一步处理。例如,在解压缩单元602被实施为图形处理***100中的解压缩单元112的情况下,所确定的数据值可以从解压缩单元112输出到GPU 102的处理逻辑106,例如,以由处理逻辑106处理。
如上文所描述,在存在多个通道的一些示例中,压缩单元302可在多个通道上执行去相关(例如,颜色去相关),从而在压缩图像元素值之前减少或去除与图像元素值的不同通道有关的不同数据值之间的相关性。如果在压缩单元302中执行此去相关,那么解压缩单元602执行对应的再相关过程,以便确定对应于提供到压缩单元302的原始图像元素值的图像元素值。具体地,在步骤S714之后,解压缩单元602可对为解压缩的一个或多个图像元素值中的每个图像元素值确定的与多个通道有关的数据值执行再相关(例如,颜色再相关),从而在与图像元素值的不同通道有关的不同数据值之间引入相关性。例如,可以有三个颜色通道(红色、绿色和蓝色),并且颜色再相关过程可以包括:
根据等式R=R’+G’,使用已在步骤S714中确定的红色通道(R')的数据值并使用已在步骤S714中确定的绿色通道(G’)的数据值,计算红色值(R);
根据等式G=G’使用已在步骤S714中确定的绿色通道(G')的数据值确定绿色值(G);以及
根据等式B=B’+G’,使用已在步骤S714中确定的蓝色通道(B')的数据值并使用已在步骤S714中确定的绿色通道(G')的数据值,计算蓝色值(B)。
如上文所提及,在一些示例中,一个或多个误差校正指示可包括在压缩数据块中。解压缩单元602可基于所确定的被解压缩的一个或多个图像元素值的数据值(即,基于在步骤S714中确定的数据值),确定一个或多个误差校正指示。误差校正指示可以是可以已知方式计算的CRC位。解压缩单元602可从压缩数据块读取一个或多个误差校正指示。然后,解压缩单元602可将确定的一个或多个误差校正指示与从压缩数据块读取的一个或多个误差校正指示进行比较,以确定所确定的被解压缩的一个或多个图像元素值的数据值中是否存在错误。如果确定在解压缩图像元素值中没有错误,那么可信任且可信任地使用图像元素值。这在实现功能安全的***中特别有用。例如,图形处理***102可以被配置成如果图形处理***102正在汽车中实施则根据安全标准(诸如,ISO 26262标准)操作,以用于渲染被认为是安全关键的图像(例如,以用于渲染包括显示在汽车的仪表板上的警告符号的图像)。如果解压缩单元602确定在所确定数据值中存在错误,那么这意味着在压缩单元302与解压缩单元602之间的数据传输中(例如,当压缩数据已经被传输到存储器或者从存储器传输时)出现错误。在这种情况下,解压缩单元602可输出错误信号以指示发生错误。***的其余部分可以任何合适方式,例如通过丢弃解压缩图像数据块和/或请求再次压缩和传输图像数据块,响应此错误信号。
示例性解压缩
在上面给出的压缩图像数据块的示例中,在不同通道中块中的四个像素的值为:
R=[16,24,9,45]
G=[89,89,94,84]
B=[240,215,204,228]
A=[255,255,250,255]
并且所得的压缩数据块具有以下四个通道的数据:
R:原点值=00001001,第一位数=0110,差值:[0001,0011,0000,1001]
G:原点值=01010100,第一位数=0100,差值:[0101,0101,1010,0000]
B:原点值=11001100,第一位数=0110,差值:[10010,00101,00000,01100]
A:原点值=11111010,第一位数=0011,差值:[101,101,000,101]
现在我们描述此压缩数据块的所有图像元素值可通过解压缩单元602解压缩的方式。在步骤S704中,从压缩数据块读取第一位数,并且对于相应的红色通道、绿色通道、蓝色通道和Α通道,这些第一位数为6、4、6和3。在步骤S706中,解压缩单元602将确定如果使用无损压缩,那么对于差值,每个图像元素值将有19位,而在此示例中目标压缩水平(50%)仅允许对于差值,每个图像元素值最大为16位。相同算法用于上述压缩技术中,因此差值大小确定逻辑608确定通道的差值大小(即,第二位数)为R=4位,G=4位,B=5位和A=3位。
在步骤S708中,解包器逻辑610根据确定的第二位数从压缩数据块读取差值。在步骤S710中,在适当情况下,解包器逻辑610将LSB加入到差值,以对通道中的每个通道形成具有第一位数的差值。在此示例中,所加入的位全部为零,因此差值将被确定为(其中粗体的位已经由解包器逻辑加入到压缩块中的不同值):
红色增量值:[000100,001100,000000,100100](以十进制表示:[4,12,0,36])
绿色增量值:[0101,0101,1010,0000](以十进制表示:[5,5,10,0])
蓝色增量值:[100100,001010,000000,011000](以十进制表示:[36,10,0,24])
α增量值:[101,101,000,101](以十进制表示:[5,5,0,5])
在步骤S712中,数据值确定逻辑606从压缩数据块读取原点值。在步骤S714中,数据值确定逻辑606将差值加入到原点值以确定解压缩图像元素值的数据值为:
红色值被确定为(以二进制表示):00001001+[000100,001100,000000,100100]=[00001101,00010101,00001001,00101101](或以十进制表示:9+[4,12,0,36]=[13,21,9,45])
绿色值被确定为(以二进制表示):01010100+[0101,0101,1010,0000]=[01011001,01011001,01011110,01010100](或以十进制表示:84+[5,5,10,0]=[89,89,94,84])
蓝色值被确定为(以二进制表示):11001100+[100100,001010,000000,011000]=[11110000,11010110,11001100,11100100](或以十进制表示:204+[36,10,0,24]=[240,214,204,228])
α值被确定为(以二进制表示):11111010+[101,101,000,101]=[11111111,11111111,11111010,11111111](或以十进制表示:250+[5,5,0,5]=[255,255,250,255])
通过将这些解压缩值与原始输入值进行比较,可以看出,在此示例中,一些小错误已被引入到红色通道和蓝色通道中,但没有引入到绿色通道和α通道中。
如上文所描述,本文中参考包括像素值的像素数据块详细描述了一些示例,但更一般地,压缩过程和解压缩过程可针对包括图像元素值的图像数据块执行,其中举一些示例,图像元素值可以是像素值、纹素值、深度值、表面法线值或照明值。
由上述压缩单元302和解压缩单元602执行的所有操作易于在硬件中,例如使用移位器、加法器和比较器来实施。压缩单元302和解压缩单元602不执行例如除法的复杂运算。此外,对于压缩单元302和解压缩单元602的操作,不需要大的高速缓存或其它类型的大型本地存储器。出于这些原因,压缩单元302和解压缩单元602易于在硬件中实施,这与更复杂的压缩和解压缩单元相比可使得硬件较小(例如,较小的硅面积)、功耗较低和/或操作延时较低。此外,相同的压缩单元(例如,压缩单元302)可以执行无损和有损压缩,因此如果期望实现无损和有损压缩两者,则无需两个单独的压缩单元。类似地,相同的解压缩单元(例如,解压缩单元602)可以对压缩数据块执行无损和有损解压缩,因此如果期望实现无损和有损解压缩两者,则无需两个单独的解压缩单元。当期望无损和有损技术两者时,(与实施无损压缩单元、单独的有损压缩单元、无损解压缩单元和单独的有损解压缩元件)使单个压缩单元和单个解压缩单元被配置成以无损和有损方式操作,降低了在压缩单元和解压缩单元上实现的硅面积的数量。
图8示出了计算机***,其中可以实现本文所述的压缩单元和解压缩单元。计算机***包括CPU 802、GPU 102、存储器804和其他装置806,诸如显示器808、扬声器810和摄像头812。计算机***的部件可以通过通信总线814彼此通信。存储器804的至少部分可用作图1中所示的存储器104。
压缩单元和解压缩单元在本文中描述为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应理解,在本文中被描述为由压缩单元或解压缩单元形成的中间值不需要由压缩单元或解压缩单元在任何时间点物理地生成,并且可以仅仅表示方便地描述由压缩单元或解压缩单元在其输入与输出之间执行的处理的逻辑值。
如本文所述的压缩单元和解压缩单元可以在集成电路上的硬件中实现。本文所述的压缩单元和解压缩单元可被配置为执行本文所述的任何方法。一般来说,上文所描述的功能、方法、技术或部件中的任一个可以在软件、固件、硬件(例如,固定逻辑电路***)或其任何组合中实施。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实施方案的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序代码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并可以由机器访问的其他存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机***的处理器执行由所述代码指定的任务。
处理器、计算机或计算机***可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上***、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机***可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造***中被处理(即运行)时,这种集成电路定义数据集将该***配置为制造被配置为执行本文所述的任何方法的压缩单元和/或解压缩单元,或者制造包括本文所述的任何装置的压缩单元和/或解压缩单元。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造***中制造如本文所述的压缩单元和/或解压缩单元的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造***中被处理时,该集成电路定义数据集使得制造压缩单元和/或解压缩单元的方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机***上处理,该计算机***被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机***处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机***配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图9描述在集成电路制造***处处理集成电路定义数据集以便将该***配置为制造压缩单元和/或解压缩单元的示例。
图9示出了集成电路(IC)制造***902的示例,该集成电路制造***被配置为制造如本文的任一示例中所描述的压缩单元和/或解压缩单元。具体地说,IC制造***902包括布局处理***904和集成电路生成***906。IC制造***902被配置为接收IC定义数据集(例如,定义如本文的任一示例中描述的压缩单元和/或解压缩单元),处理IC定义数据集,并根据IC定义数据集来生成IC(例如,其体现如本文的任一示例中描述的压缩单元和/或解压缩单元)。对IC定义数据集的处理将IC制造***902配置为制造体现如本文的任一示例中描述的压缩单元和/或解压缩单元的集成电路。
布局处理***904配置成接收并处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。在布局处理***904确定了电路布局后,它可以将电路布局定义输出到IC生成***906。电路布局定义可以是例如电路布局描述。
如本领域已知的,IC生成***906根据电路布局定义来生成IC。例如,IC生成***906可以实现生成IC的半导体器件制造工艺,其可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩码的形式,其可以在光刻工艺中用于根据电路定义来生成IC。或者,提供给IC生成***906的电路布局定义可以呈计算机可读代码的形式,IC生成***906可以使用该计算机可读代码来形成用于生成IC的合适掩模。
由IC制造***902执行的不同过程可以全部在一个位置中实施,例如由一方实施。或者,IC制造***902可以是分布式***,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置中和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩码;以及(iv)使用掩码来制造集成电路。
在其他示例中,在集成电路制造***处处理集成电路定义数据集可以将***配置为制造压缩单元和/或解压缩单元,而不对IC定义数据集进行处理以便确定电路布局。举例来说,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造***配置成(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施例中,当在集成电路制造***中处理时,集成电路制造定义数据集可以使集成电路制造***生成如本文中描述的装置。例如,由集成电路制造定义数据集以上文参考图9描述的方式对集成电路制造***进行配置,可以制造如本文所述的装置。
在一些示例中,集成电路定义数据集可以包含在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图9所示的示例中,IC生成***可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实施方式相比,在本申请中阐述的概念在装置、设备、模块和/或***中(以及在本文中实施的方法中)的实施方式可以引起性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和***(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方案的性能,但使用更少的硅。例如,这可以通过以串行方式再使用功能块或在装置、设备、模块和/或***的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和***的物理实施方式的改进(例如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个例项来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (33)
1.一种压缩图像数据块以满足目标压缩水平的计算机实施的方法,其中所述图像数据块包括多个图像元素值,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值,所述方法包括:
对于所述一个或多个通道中的每个通道:
为所述块确定所述通道的原点值;
确定表示所述数据值与为所述块确定的所述通道的原点值之间的差的差值;以及
为所述块确定用于无损地表示所述通道的差值中的最大差值的第一位数;
使用为所述一个或多个通道中的每个通道确定的所述第一位数,确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数,所述一个或多个第二位数被确定使得用所述相应的一个或多个第二位数表示所述一个或多个通道的每个差值满足用于压缩所述图像数据块的目标压缩水平;以及
形成压缩数据,其中对于所述一个或多个通道中的每个通道,所述压缩数据包括:
为所述通道确定的原点值的指示;
为所述通道确定的所述第一位数的指示;以及
为所述通道确定的差值的表示,其中,为所述通道确定的差值的表示中的每个表示使用为所述通道确定的所述第二位数,使得满足所述目标压缩水平。
2.根据权利要求1所述的方法,其中,所述使用为所述一个或多个通道中的每个通道确定的所述第一位数,确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数包括确定用相应的确定的一个或多个第一位数表示所述一个或多个通道的差值是否满足所述目标压缩水平,
其中,如果确定用相应的确定的一个或多个第一位数表示所述一个或多个通道的差值满足所述目标压缩水平,则对于所述一个或多个通道中的每个通道,所述第二位数等于该通道的第一位数;并且
其中,如果确定用相应的确定的一个或多个第一位数表示所述一个或多个通道的差值不满足所述目标压缩水平,则对于所述一个或多个通道中的至少一个通道,所述第二位数小于该通道的第一位数。
3.根据权利要求1或权利要求2所述的方法,其中,根据预定方案,使用为所述一个或多个通道确定的所述第一位数确定所述一个或多个通道的所述相应的一个或多个第二位数。
4.根据权利要求1或权利要求2所述的方法,其中,所述使用为所述一个或多个通道中的每个通道确定的所述第一位数,确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数包括将所述一个或多个第一位数减少零、一或更大值,从而确定所述一个或多个第二位数,使得通过从具有确定的第一位数的差值的表示中去除零个、一个或多个最低有效位(LSB),用所述相应的一个或多个第二位数表示所述一个或多个通道的每个差值满足用于压缩所述图像数据块的目标压缩水平。
5.根据权利要求3所述的方法,其中,所述使用为所述一个或多个通道中的每个通道确定的所述第一位数,确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数包括将所述一个或多个第一位数减少零、一或更大值,从而确定所述一个或多个第二位数,使得通过从具有确定的第一位数的差值的表示中去除零个、一个或多个最低有效位(LSB),用所述相应的一个或多个第二位数表示所述一个或多个通道的每个差值满足用于压缩所述图像数据块的目标压缩水平,并且所述一个或多个第一位数被减少以由此确定所述一个或多个第二位数的所述一个或多个第一位数的减少量由所述预定方案限定。
6.根据权利要求4所述的方法,其中,所述一个或多个通道中的每个通道存在阈值位数,其中如果对于所述一个或多个通道中的每个通道,所述第二位数等于所述阈值位数,则将满足用于压缩所述图像数据块的目标压缩水平,
其中,如果通道的第一位数小于或等于所述通道的阈值位数,则所述通道的第一位数减少零,使得所述通道的第二位数等于所述通道的第一位数,并且
其中,如果通道的第一位数大于所述通道的阈值位数,则所述第一位数减少的量不会使得所述通道的第二位数小于所述阈值位数。
7.根据权利要求6所述的方法,其中,以下当中一者成立:(i)所述阈值位数对于所述一个或多个通道中的每个通道是相同的,或(ii)不是所述阈值位数对于所述一个或多个通道中的每个通道是相同的这种情况。
8.根据权利要求1或权利要求2所述的方法,其中,对于所述一个或多个通道中的每个通道,通过识别与用于所述块的通道有关的数据值中的最小值,确定用于所述块的通道的原点值,其中,通过识别与用于所述块的通道有关的数据值中的最大值并且从所识别的与用于所述块的通道有关的数据值中的最大值减去所识别的与用于所述块的通道有关的数据值中的最小值,确定用于所述块的通道的差值中的所述最大差值。
9.根据权利要求1或权利要求2所述的方法,其中,对于所述一个或多个通道中的每个通道,通过识别与用于所述块的通道有关的数据值中的最大值,确定用于所述块的通道的原点值,其中,通过识别与用于所述块的通道有关的数据值中的最小值并且从所识别的与用于所述块的通道有关的数据值中的最大值减去所识别的与用于所述块的通道有关的数据值中的最小值,确定用于所述块的通道的差值中的所述最大差值。
10.根据权利要求1或权利要求2所述的方法,其中,对于所述一个或多个通道中的每个通道,用于所述块的通道的原点值和差值是根据模运算确定的,其中,所述一个或多个通道中的每个通道的原点值被确定为与根据所述模运算相对于所述原点值确定所述差值时产生最小的最大差值的通道有关的所述块的数据值中的一个数据值。
11.根据权利要求1或权利要求2所述的方法,其中,对于所述一个或多个通道中的每个通道,所述通道的原始值的指示具有与和所述图像数据块中的图像元素值中的一个图像元素值的通道有关的数据值中的一个数据值相同的位数。
12.根据权利要求1或权利要求2所述的方法,其中,为所述一个或多个通道中的至少一个通道确定多个原点值,其中,所述一个或多个通道中的所述至少一个通道的差值中的每个差值是相对于所述多个原点值中的一个原点值确定的,并且其中,所述差值中的每个差值的指示包括在所述压缩数据中以指示已经从所述多个原点值中的哪一个原点值确定了所述差值。
13.根据权利要求1或权利要求2所述的方法,其中,对于所述一个或多个通道中的每个通道,所述确定第一位数包括:
获得用于所述块的通道的差值中的最大差值;以及
确定在没有任何前导零的情况下使用多少位来表示所述最大差值,其中确定的所述位数是所述第一位数。
14.根据权利要求13所述的方法,其中,所述获得所述最大差值包括以下当中的一者:
接收为所述块确定的所述通道的差值,并且确定所确定的差值中的哪一个差值是最大的,或
识别与用于所述块的通道有关的数据值中的最小值和最大值,并且确定所识别的最小数据值与最大数据值之间的差。
15.根据权利要求1或权利要求2所述的方法,其中,为所述一个或多个通道中的每个通道确定的所述第二位数的指示不包括在所述压缩数据中。
16.根据权利要求1或权利要求2所述的方法,其中,对于所述一个或多个通道中的每个通道,所述压缩数据还包括为所述通道确定的所述第二位数的指示。
17.根据权利要求1或权利要求2所述的方法,其中,所述压缩数据形成为压缩数据块,所述压缩数据块包括:
头部部分,所述头部部分具有固定大小,并且所述头部部分包括为所述一个或多个通道中的每个通道确定的原点值的指示和确定的第一位数的指示;以及
主体部分,所述主体部分具有可变大小,并且所述主体部分包括为所述一个或多个通道中的每个通道确定的差值的表示。
18.根据权利要求17所述的方法,其中,所述压缩数据块具有基地址,并且其中,所述头部部分在由所述基地址限定的第一地址处开始,其中所述头部部分的数据在第一方向上从所述第一地址运行,并且其中,所述主体部分在由所述基地址限定的第二地址处开始,其中所述主体部分的数据在第二方向上从所述第二地址运行,其中,在地址空间中,所述第一方向与所述第二方向相反。
19.根据权利要求1或权利要求2所述的方法,还包括:从一组预定的目标压缩水平中选择用于压缩所述图像数据块的目标压缩水平。
20.根据权利要求1或权利要求2所述的方法,其中,所述一个或多个通道包括多个通道。
21.根据权利要求20所述的方法,其中,所述多个通道包括红色通道、绿色通道、蓝色通道和α通道。
22.根据权利要求20所述的方法,还包括:在所述多个通道上执行去相关,从而降低或去除与图像元素值的不同通道有关的不同数据值之间的相关性。
23.根据权利要求1或权利要求2所述的方法,其中,所述一个或多个通道由单个通道组成。
24.根据权利要求1或权利要求2所述的方法,还包括:
通过确定通过正确地解压缩所述压缩数据获得的图像元素值来确定一个或多个误差校正指示;以及
在所述压缩数据中包括所确定的误差校正指示。
25.根据权利要求1或权利要求2所述的方法,其中,所述图像元素值是像素值、纹素值、深度值、表面法线值或照明值。
26.根据权利要求1或权利要求2所述的方法,还包括:将所述压缩数据存储在存储器中。
27.根据权利要求1或权利要求2所述的方法,其中,使用专用硬件来执行所述方法。
28.一种被配置成压缩图像数据块以满足目标压缩水平的压缩单元,其中所述图像数据块包括多个图像元素值,每个图像元素值包括与相应的一个或多个通道有关的一个或多个数据值,所述压缩单元包括:
分析器逻辑,所述分析器逻辑被配置成对于所述一个或多个通道中的每个通道确定:
用于所述块的所述通道的原点值;以及
用于无损地表示用于所述块的所述通道的最大差值的第一位数;
差值确定逻辑,所述差值确定逻辑被配置成对于所述一个或多个通道中的每个通道,确定表示所述数据值与为所述块确定的所述通道的原点值之间的差的差值;
差值大小确定逻辑,所述差值大小确定逻辑被配置成使用为所述一个或多个通道中的每个通道确定的所述第一位数确定所述一个或多个通道中的每个通道的相应的一个或多个第二位数,所述一个或多个第二位数使得用所述相应的一个或多个第二位数表示所述一个或多个通道的差值的每个差值满足用于压缩图像数据块的目标压缩水平;以及
压缩数据形成逻辑,所述压缩数据形成逻辑被配置成形成压缩数据,其中对于所述一个或多个通道中的每个通道,所述压缩数据包括:
为所述通道确定的原点值的指示;
为所述通道确定的所述第一位数的指示;以及
为所述通道确定的差值的表示,其中,为所述通道确定的差值的表示中的每个表示使用为所述通道确定的所述第二位数,使得满足所述目标压缩水平。
29.根据权利要求28所述的压缩单元,其中,所述压缩单元在集成电路上的硬件中实现。
30.一种压缩单元,包括处理器,被配置为执行如权利要求1至27中任一项所述的方法。
31.一种使用集成电路制造***制造根据权利要求28至30中任一项所述的压缩单元的方法,所述方法包括:
使用布局处理***处理所述压缩单元的计算机可读描述,以便生成体现所述压缩单元的集成电路的电路布局描述;以及
使用集成电路生成***,根据所述电路布局描述制造所述压缩单元。
32.一种计算机可读存储介质,其上存储有计算机可读代码,其被配置为在所述代码运行时使得执行权利要求1至27中任一项所述的方法。
33.一种计算机可读存储介质,其上存储有集成电路定义数据集,当在集成电路制造***中被处理时,所述集成电路定义数据集将所述集成电路制造***配置为制造如权利要求28至30中任一项所述的压缩单元。
Applications Claiming Priority (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1912184.7 | 2019-08-23 | ||
GBGB1912183.9A GB201912183D0 (en) | 2019-08-23 | 2019-08-23 | Random accessible image data compression |
GBGB1912184.7A GB201912184D0 (en) | 2019-08-23 | 2019-08-23 | Methods and decompression units for decompressing a compressed block of image data |
GB1912183.9 | 2019-08-23 | ||
GB1912800.8 | 2019-09-05 | ||
GB1912800.8A GB2586517B (en) | 2019-08-23 | 2019-09-05 | Methods and decompression units for decompressing a compressed block of image data |
GB1912795.0 | 2019-09-05 | ||
GB1912795.0A GB2586516B (en) | 2019-08-23 | 2019-09-05 | Random accessible image data compression |
GB2004716.3A GB2586532B (en) | 2019-08-23 | 2020-03-31 | Image data compression |
GB2004716.3 | 2020-03-31 | ||
GB2004715.5 | 2020-03-31 | ||
GB2004715.5A GB2586531B (en) | 2019-08-23 | 2020-03-31 | Image data decompression |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112422981A CN112422981A (zh) | 2021-02-26 |
CN112422981B true CN112422981B (zh) | 2023-09-08 |
Family
ID=68240926
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010846903.7A Pending CN112422980A (zh) | 2019-08-23 | 2020-08-21 | 图像数据解压缩 |
CN202010851053.XA Pending CN112422982A (zh) | 2019-08-23 | 2020-08-21 | 可随机存取的图像数据压缩 |
CN202010851062.9A Pending CN112422972A (zh) | 2019-08-23 | 2020-08-21 | 用于对图像数据的压缩块进行解压缩的方法和解压缩单元 |
CN202010847036.9A Active CN112422981B (zh) | 2019-08-23 | 2020-08-21 | 图像数据压缩 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010846903.7A Pending CN112422980A (zh) | 2019-08-23 | 2020-08-21 | 图像数据解压缩 |
CN202010851053.XA Pending CN112422982A (zh) | 2019-08-23 | 2020-08-21 | 可随机存取的图像数据压缩 |
CN202010851062.9A Pending CN112422972A (zh) | 2019-08-23 | 2020-08-21 | 用于对图像数据的压缩块进行解压缩的方法和解压缩单元 |
Country Status (4)
Country | Link |
---|---|
US (11) | US11335031B2 (zh) |
EP (4) | EP3783892B1 (zh) |
CN (4) | CN112422980A (zh) |
GB (7) | GB2611864B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2611864B (en) * | 2019-08-23 | 2023-12-06 | Imagination Tech Ltd | Random accessible image data compression |
KR20220090920A (ko) * | 2020-12-23 | 2022-06-30 | 삼성전자주식회사 | 이미지 센서, 이미지 센서의 동작 방법 및 이를 포함하는 이미지 센싱 장치 |
US20230004533A1 (en) * | 2021-07-01 | 2023-01-05 | Microsoft Technology Licensing, Llc | Hybrid intermediate stream format |
EP4383706A1 (en) | 2022-12-07 | 2024-06-12 | Imagination Technologies Limited | Image data decompression |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512784A (zh) * | 2002-12-30 | 2004-07-14 | ض� | 最高有效位匹配数字图像压缩 |
CN1993976A (zh) * | 2004-07-29 | 2007-07-04 | 奥西-技术有限公司 | 利用熵编码的彩色图像数据的无损压缩 |
CN101562749A (zh) * | 2008-04-15 | 2009-10-21 | 索尼株式会社 | 具有集成的有损压缩和无损压缩的视频数据压缩 |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6373986B1 (en) * | 1998-04-08 | 2002-04-16 | Ncr Corporation | Compression of data transmission by use of prime exponents |
JP4125565B2 (ja) * | 2001-08-31 | 2008-07-30 | 松下電器産業株式会社 | 画像符号化方法、画像復号化方法及びその装置 |
CN1767656B (zh) * | 2001-11-29 | 2013-02-20 | 松下电器产业株式会社 | 编码失真消除方法、视频编码方法、视频解码方法、装置 |
JP4197262B2 (ja) * | 2002-03-27 | 2008-12-17 | パナソニック株式会社 | 可変長符号化方法、可変長復号化方法、記憶媒体、可変長符号化装置、可変長復号化装置、及びビットストリーム |
JP4107314B2 (ja) * | 2005-03-30 | 2008-06-25 | 日本電気株式会社 | 画像処理、圧縮、伸長、伝送、送信、受信装置及び方法並びにそのプログラム、及び表示装置 |
JP4475189B2 (ja) * | 2005-07-11 | 2010-06-09 | セイコーエプソン株式会社 | 画像処理装置 |
JP4610450B2 (ja) * | 2005-09-07 | 2011-01-12 | 株式会社リコー | 固定長圧縮画像と属性情報のパッキングデータを処理する画像処理装置 |
US8306112B2 (en) * | 2005-09-20 | 2012-11-06 | Mitsubishi Electric Corporation | Image encoding method and image decoding method, image encoder and image decoder, and image encoded bit stream and recording medium |
JP4895567B2 (ja) * | 2005-10-07 | 2012-03-14 | パナソニック株式会社 | 画像符号化方法及び装置、画像復号化方法及び装置、撮像装置 |
US8711925B2 (en) * | 2006-05-05 | 2014-04-29 | Microsoft Corporation | Flexible quantization |
US7626518B2 (en) * | 2006-06-08 | 2009-12-01 | Via Technologies, Inc. | Decoding systems and methods in computational core of programmable graphics processing unit |
US8085274B2 (en) * | 2006-07-18 | 2011-12-27 | Via Technologies, Inc. | Video data compression |
KR101442278B1 (ko) * | 2007-03-30 | 2014-09-22 | 소니 주식회사 | 정보 처리 장치 및 방법 |
GB0716158D0 (en) | 2007-08-17 | 2007-09-26 | Imagination Tech Ltd | Data compression |
WO2009035410A2 (en) * | 2007-09-12 | 2009-03-19 | Telefonaktiebolaget L M Ericsson (Publ) | Depth buffer compression |
US8547382B2 (en) | 2008-05-30 | 2013-10-01 | Advanced Micro Devices, Inc. | Video graphics system and method of pixel data compression |
WO2010017480A1 (en) | 2008-08-07 | 2010-02-11 | Centrose, Llc | Glycoside compounds and pharmaceutical compositions thereof |
JP5124527B2 (ja) * | 2009-05-26 | 2013-01-23 | 株式会社日立製作所 | メール中継装置 |
JP5595151B2 (ja) * | 2010-07-13 | 2014-09-24 | キヤノン株式会社 | 画像処理装置、画像処理装置における圧縮方法、および、プログラム |
JP5529685B2 (ja) * | 2010-09-03 | 2014-06-25 | パナソニック株式会社 | 画像符号化方法、画像復号化方法、画像符号化装置及び画像復号化装置 |
GB2483502B (en) | 2010-09-10 | 2014-05-07 | Imagination Tech Ltd | Random accessible lossless parameter data compression for title based 3D computer graphics system |
US9185424B2 (en) * | 2011-07-05 | 2015-11-10 | Qualcomm Incorporated | Image data compression |
US10237565B2 (en) * | 2011-08-01 | 2019-03-19 | Qualcomm Incorporated | Coding parameter sets for various dimensions in video coding |
GB2526943B (en) * | 2011-12-20 | 2016-04-27 | Imagination Tech Ltd | Method and apparatus for compressing and decompressing data |
JP6066557B2 (ja) * | 2011-12-26 | 2017-01-25 | 株式会社メガチップス | データ記憶制御装置、データ記憶装置、データ記憶方法、圧縮回路、および圧縮方法 |
JP5947405B2 (ja) * | 2012-02-01 | 2016-07-06 | ノキア テクノロジーズ オーユー | ビデオ符号化方法および装置 |
MX347522B (es) * | 2012-04-13 | 2017-04-27 | Mitsubishi Electric Corp | Dispositivo de codificación de imagen, dispositvo de decodificación de imagen, método de codificación de imagen, y método de decodificación de imagen. |
KR20130126876A (ko) * | 2012-04-30 | 2013-11-21 | 삼성전자주식회사 | 통신 시스템에서 패킷 송수신 방법 및 장치 |
FR2996706A1 (fr) * | 2012-10-05 | 2014-04-11 | I Ces Innovative Compression Engineering Solutions | Procede de codage d'une matrice, notamment d'une matrice representative d'une image fixe ou video. |
US10387372B2 (en) * | 2012-11-09 | 2019-08-20 | o9 Solutions, Inc. | Value-based differential data |
CN102984517B (zh) * | 2012-11-21 | 2016-03-30 | 华为技术有限公司 | 视频数据压缩和解压缩的方法、装置、设备和*** |
KR102063385B1 (ko) * | 2013-01-30 | 2020-01-07 | 인텔 코포레이션 | 차세대 비디오용 콘텐츠 적응적 엔트로피 코딩 |
EP2936814B1 (en) * | 2013-03-26 | 2018-03-14 | Dolby Laboratories Licensing Corporation | Encoding perceptually-quantized video content in multi-layer vdr coding |
GB2507838B (en) | 2013-05-09 | 2014-09-24 | Imagination Tech Ltd | Vertex parameter data compression |
US9762920B2 (en) * | 2013-06-07 | 2017-09-12 | Qualcomm Incorporated | Dynamic range control of intermediate data in resampling process |
US8836548B1 (en) * | 2013-12-05 | 2014-09-16 | Emc Corporation | Method and system for data compression at a storage system |
US20150178951A1 (en) * | 2013-12-23 | 2015-06-25 | Panamorph, Inc. | Image processing system and method |
GB2530311B (en) | 2014-09-19 | 2017-01-11 | Imagination Tech Ltd | Data compression |
GB2530312B (en) | 2014-09-19 | 2016-09-14 | Imagination Tech Ltd | Data compression |
US9729885B2 (en) * | 2015-02-11 | 2017-08-08 | Futurewei Technologies, Inc. | Apparatus and method for compressing color index map |
US9686560B2 (en) * | 2015-02-23 | 2017-06-20 | Teledyne Dalsa, Inc. | Lossless data compression and decompression apparatus, system, and method |
GB2539488B8 (en) * | 2015-06-18 | 2020-08-19 | Gurulogic Microsystems Oy | Encoder, decoder and method employing palette utilization and compression |
US9640149B2 (en) * | 2015-07-21 | 2017-05-02 | Think Silicon Sa | Methods for fixed rate block based compression of image data |
JP6551073B2 (ja) * | 2015-09-03 | 2019-07-31 | 株式会社Jvcケンウッド | 画像符号化装置及び方法、並びに、画像復号装置及び方法 |
GB2545503B (en) * | 2015-12-18 | 2020-04-08 | Imagination Tech Ltd | Lossy data compression |
US10453169B2 (en) * | 2016-03-28 | 2019-10-22 | Intel Corporation | Method and apparatus for multi format lossless compression |
GB2549957B (en) * | 2016-05-03 | 2018-08-08 | Imagination Tech Ltd | Compressing and decompressing image data |
KR102601732B1 (ko) * | 2016-05-31 | 2023-11-14 | 삼성디스플레이 주식회사 | 영상 부호화 방법 및 영상 복호화 방법 |
CN107547903A (zh) * | 2016-06-29 | 2018-01-05 | 晨星半导体股份有限公司 | 压缩影像数据的方法及影像数据压缩*** |
US20180014021A1 (en) * | 2016-07-05 | 2018-01-11 | Cisco Technology, Inc. | Prediction in image and video compression |
GB2552323B (en) * | 2016-07-18 | 2020-04-29 | Imagination Tech Ltd | Mip map compression |
US10304155B2 (en) * | 2017-02-24 | 2019-05-28 | Advanced Micro Devices, Inc. | Delta color compression application to video |
US10769818B2 (en) * | 2017-04-09 | 2020-09-08 | Intel Corporation | Smart compression/decompression schemes for efficiency and superior results |
GB2567427B (en) * | 2017-10-06 | 2020-10-07 | Imagination Tech Ltd | Data compression |
GB2599315B (en) * | 2017-10-09 | 2022-06-15 | Canon Kk | Method and apparatus for deblocking filtering a block of pixels |
GB2570879B (en) * | 2018-02-06 | 2022-08-17 | Advanced Risc Mach Ltd | Encoding data arrays |
GB2575434B (en) * | 2018-06-29 | 2020-07-22 | Imagination Tech Ltd | Guaranteed data compression |
CN109600618B (zh) * | 2018-12-19 | 2021-12-24 | 上海数迹智能科技有限公司 | 视频压缩方法、解压缩方法、装置、终端和介质 |
GB2611864B (en) * | 2019-08-23 | 2023-12-06 | Imagination Tech Ltd | Random accessible image data compression |
-
2019
- 2019-09-05 GB GB2211918.4A patent/GB2611864B/en active Active
- 2019-09-05 GB GB1912800.8A patent/GB2586517B/en active Active
- 2019-09-05 GB GB2205150.2A patent/GB2607692B/en active Active
- 2019-09-05 GB GB2206465.3A patent/GB2608679B/en active Active
- 2019-09-05 GB GB1912795.0A patent/GB2586516B/en active Active
-
2020
- 2020-03-31 GB GB2004715.5A patent/GB2586531B/en active Active
- 2020-03-31 GB GB2004716.3A patent/GB2586532B/en active Active
- 2020-08-17 EP EP20191327.4A patent/EP3783892B1/en active Active
- 2020-08-17 EP EP20191295.3A patent/EP3783891B1/en active Active
- 2020-08-21 CN CN202010846903.7A patent/CN112422980A/zh active Pending
- 2020-08-21 EP EP20192251.5A patent/EP3783894A1/en active Pending
- 2020-08-21 CN CN202010851053.XA patent/CN112422982A/zh active Pending
- 2020-08-21 CN CN202010851062.9A patent/CN112422972A/zh active Pending
- 2020-08-21 CN CN202010847036.9A patent/CN112422981B/zh active Active
- 2020-08-21 EP EP20192247.3A patent/EP3783893A1/en active Pending
- 2020-08-24 US US17/000,550 patent/US11335031B2/en active Active
- 2020-08-24 US US17/001,160 patent/US11443457B2/en active Active
- 2020-08-24 US US17/000,694 patent/US11423579B2/en active Active
- 2020-08-24 US US17/001,269 patent/US11443458B2/en active Active
-
2022
- 2022-04-13 US US17/720,188 patent/US11823419B2/en active Active
- 2022-07-15 US US17/866,438 patent/US11823420B2/en active Active
- 2022-08-18 US US17/890,920 patent/US11790560B2/en active Active
- 2022-08-18 US US17/890,463 patent/US11915455B2/en active Active
-
2023
- 2023-11-21 US US18/515,397 patent/US20240087171A1/en active Pending
- 2023-11-21 US US18/515,491 patent/US20240087172A1/en active Pending
-
2024
- 2024-02-26 US US18/586,746 patent/US20240212217A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512784A (zh) * | 2002-12-30 | 2004-07-14 | ض� | 最高有效位匹配数字图像压缩 |
CN1993976A (zh) * | 2004-07-29 | 2007-07-04 | 奥西-技术有限公司 | 利用熵编码的彩色图像数据的无损压缩 |
CN101562749A (zh) * | 2008-04-15 | 2009-10-21 | 索尼株式会社 | 具有集成的有损压缩和无损压缩的视频数据压缩 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112422981B (zh) | 图像数据压缩 | |
US11663743B2 (en) | Image data decompression | |
US20220256164A1 (en) | Data Compression and Packing | |
US12008791B2 (en) | Image data compression | |
US20220256178A1 (en) | Data Decompression and Packing | |
US20240236295A1 (en) | Image data decompression | |
CN118158423A (zh) | 图像数据压缩 | |
CN118158393A (zh) | 图像数据解压缩 | |
US20230334707A1 (en) | Data compression and decompression | |
CN116896387A (zh) | 数据压缩和解压缩 | |
CN116896389A (zh) | 数据压缩和解压缩 | |
GB2622123A (en) | Decoding a compressed data structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |