CN113452994A - 图像数据压缩 - Google Patents

图像数据压缩 Download PDF

Info

Publication number
CN113452994A
CN113452994A CN202110316254.4A CN202110316254A CN113452994A CN 113452994 A CN113452994 A CN 113452994A CN 202110316254 A CN202110316254 A CN 202110316254A CN 113452994 A CN113452994 A CN 113452994A
Authority
CN
China
Prior art keywords
image data
block
value
compression
level
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.)
Pending
Application number
CN202110316254.4A
Other languages
English (en)
Inventor
杨喜乐
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN113452994A publication Critical patent/CN113452994A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length 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/103Selection of coding mode or of prediction mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/004Predictors, e.g. intraframe, interframe 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/124Quantisation
    • 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/146Data rate or code amount at the encoder output
    • 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/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
    • 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
    • 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

Abstract

本公开涉及图像数据压缩。本发明提供了一种计算机实施的方法和一种压缩单元,用于根据多级差值表对图像数据块执行有损压缩。所述图像数据块包括多个图像元素值,其中多级差值表的每个级别包括多个条目。确定所述图像数据块的起点值。确定所述多级差值表内针对所述图像数据块的级别。对于所述图像数据块中的每个图像元素值,在所述多级差值表内所确定的级别选择所述条目中的一个。形成对于所述图像数据块的压缩数据块,其中,所述压缩数据块包括:(i)表示所确定的起点值的数据,(ii)所确定的级别的指示,以及(iii)对于所述图像数据块中的每个图像元素值,为所述图像元素值选择的条目的指示。

Description

图像数据压缩
技术领域
本公开涉及数据压缩和数据解压缩。
背景技术
数据压缩,无论是无损的还是有损的,在将数据存储在存储器中和/或从存储器中读取数据的许多应用中都是人们所期望的。通过在将数据存储在存储器中之前压缩数据,可以减少传输到存储器的数据量。数据压缩对其而言特别有用的数据的示例是图像数据。术语“图像数据”在本文中用以指具有对应于图像的相应像素或采样位置的值的二维数据。例如,图像可以作为图形处理单元(GPU)上的渲染过程的一部分而产生。图像数据包括但不限于:将存储在深度缓冲器中的深度数据、将存储在帧缓冲器中的像素数据(例如,颜色数据)、将存储在纹理缓冲器中的纹理数据,以及将存储在表面法线缓冲器中的表面法线数据。这些缓冲器可以是任何合适类型的存储器,例如高速缓冲存储器、单独的存储器子系统、共享存储器系统中的存储区域或它们的某种组合。
GPU可用于处理数据以便生成图像数据。例如,GPU可以确定将存储在帧缓冲器中的图像的像素值(例如,颜色值),该像素值可以输出到显示器。GPU通常具有高度并行化的结构,用于并行处理大型数据块。使GPU(尤其是旨在在移动/嵌入式装置上实施的那些GPU)以减少的延时、降低的功耗和减少的物理尺寸(例如,减少的硅面积)操作有很大的商业压力。针对这些目标的竞争期望使用更高质量的渲染算法来产生更高质量的图像。降低存储器带宽(即,降低GPU与存储器之间传输的数据量)可显著降低系统的延时和功耗,这是在传输数据之前压缩数据可能特别有用的原因。当考虑在GPU自身内四处移动的数据时,这在较小程度上也同样适用。而且,同样的问题可能与其他处理单元,例如中央处理单元(CPU)以及GPU相关。
图1示出了可以在诸如移动/嵌入式装置的电子装置中实现的示例性计算系统100。计算系统100包括主机CPU 102、GPU 104、存储器106(例如,图形存储器)和显示器108。CPU 102被配置为与GPU 104进行通信。可以是压缩数据的数据可以在GPU 104与存储器106之间沿任一方向传输。由GPU 104渲染的图像(例如,利用像素值表示)可以存储在存储器106中并经由显示器接口116显示在显示器108上。
GPU 104包括渲染逻辑110、压缩/解压缩单元112和存储器接口114。图形渲染系统100被布置成使得数据可以在(i)CPU 102与渲染逻辑110;(ii)CPU 102与存储器接口114;(iii)存储器接口114与存储器106;(iv)渲染逻辑110与压缩/解压缩单元112;(v)压缩/解压缩单元112与存储器接口114;以及(vi)存储器106与显示器接口116之间在任一方向上传递。在一些示例中,图形渲染系统100可进一步被布置成使得数据可以在压缩/解压缩单元112和显示器接口116之间在任一方向上传递,且使得数据可从显示器接口116传递到显示器108。
在操作中,GPU 104可以个别地处理图像数据的区域。所述区域例如可以表示渲染空间(即,表示例如待渲染的图像区域的二维空间)的矩形(包括正方形)部分(或“分块”)。渲染逻辑110可以使用诸如深度测试和纹理映射的已知技术执行图形原语(例如但不限于,三角形和线)的扫描转换和光栅化。渲染逻辑110可以包含高速缓存单元以减少存储器流量。一些数据由渲染逻辑110经由存储器接口114(其可以包括高速缓存)从存储器106读取或写入到存储器中,但是对于其他数据,例如要存储在缓冲器(例如,帧缓冲器)中的数据,数据优选地从渲染逻辑110经由压缩/解压缩单元112传输到存储器接口114。压缩/解压缩单元112通过压缩数据来减少要通过外部存储器总线传输到存储器106的数据量。
显示器接口116将定义完整图像的数据发送到显示器108。可以直接从存储器106存取未压缩图像。可以经由压缩/解压缩单元112对压缩数据解压缩,并将其作为未压缩数据发送到显示器108。在替代性示例中,压缩数据可以直接被显示器接口116读取,并且显示器接口116可以包括用于以与压缩/解压缩单元112的解压缩等效的方式解压缩压缩数据的逻辑。尽管示为单个实体,但是出于增强性能的原因,压缩/解压缩单元112可以包含多个并行压缩和/或解压缩单元。
如本领域的技术人员已知的,渲染逻辑110可以针对渲染空间中的每个像素生成一组一个或多个颜色值(例如,RGB或RGBA),并将颜色值存储在帧缓冲器中。帧的颜色值的集合在本文中可以称作颜色数据、图像数据、帧缓冲数据或简称为帧数据。渲染逻辑110还可以生成其它图像数据,例如深度数据、表面法线数据、照明数据等,并且可以将那些图像数据值存储在存储器中的一个或多个缓冲器中。在一些情况下,这些缓冲器可被称为帧缓冲器,而在其它情况下,术语“帧缓冲器”可为存储颜色值或存储要发送到显示器的数据的缓冲器保留。在一些图形渲染系统中,在执行一次或多次后续渲染时,渲染逻辑110可以使用存储在缓冲器中的用于特定渲染的图像数据值。例如,由一次渲染生成的颜色值可以表示可以(例如,以压缩形式)存储在存储器106中的纹理,并且纹理可以从存储器106读取(例如,并且解压缩)以在一次或多次后续渲染中作为纹理施加到表面。类似地,在一次渲染中为几何模型生成的表面法线值可以用于在渲染一个或多个后续渲染期间对相同模型施加照明效果。此外,在一次渲染中生成并存储的表面深度值可以被回读以用于渲染相同模型的一次或多次后续渲染。
由于图像数据(例如,颜色数据)可能相当大,因此与将图像数据写入到存储器中的缓冲器以及从存储器中的缓冲器读取图像数据相关联的存储器带宽可能是图形处理系统和/或GPU的总存储器带宽的相当大的部分。因此,图像数据在存储在缓冲器中之前通常通过压缩/解压缩单元112被压缩,并且在从缓冲器中读取之后,通过压缩/解压缩单元112被解压缩。
当使用无损压缩技术压缩数据并且然后使用互补无损解压缩技术解压缩数据时,可以恢复原始数据,而不会丢失数据(假设在压缩或解压缩过程中没有出现错误)。数据被压缩的程度可以表示为压缩比,其中通过将未压缩数据的大小除以压缩数据的大小得到压缩比。通过无损压缩技术实现的压缩比通常取决于被压缩的数据。例如,无损压缩技术往往能够在压缩高度相关的数据时实现相对高的压缩比;而无损压缩技术往往在压缩不相关(例如,随机)数据时实现相对低的压缩比。因此,难以保证无损压缩技术将实现特定的压缩比(例如,2:1的压缩比)。因此,如果仅使用无损压缩技术,那么系统通常必须要能够处理无法实现所期望的压缩比(例如,2:1)的情况,以及例如有时使用无损压缩技术根本不能产生压缩的情况。
在一些情况下,可以认为保证压缩比比保证在压缩期间不会丢失数据更重要。在这些情况下,可以使用有损压缩技术,这可以实现保证压缩比,但是在压缩过程中可能丢失一些数据。
发明内容
提供本发明内容是为了介绍在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供了一种根据多级差值表对图像数据块执行有损压缩的计算机实施的方法,其中,所述图像数据块包括多个图像元素值,其中,多级差值表的每个级别包括多个条目,所述方法包括:确定图像数据块的起点值;确定多级差值表内针对图像数据块的级别;对于图像数据块中的每个图像元素值,在多级差值表内在所确定级别选择条目中的一个;以及形成图像数据块的压缩数据块,所述压缩数据块包括:(i)表示所确定起点值的数据,(ii)所确定级别的指示,以及(iii)对于图像数据块中的每个图像元素值,图像元素值的所选条目的指示。
对于多级差值表的不同级别,由级别中的条目表示的值域的大小可以不同。
多级差值表中的每个条目可以表示值,该值可用于表示图像元素值与该图像数据块的起点值之间的差值。
多级差值表可以是预定的,即,在对图像数据块执行有损压缩的方法开始之前,可以确定多级差值表的条目的值。
可以基于图像数据块中的图像元素值来确定起点值。所述确定所述图像数据块的起点值可以包括识别图像数据块中的最小图像元素值。所述确定图像数据块的起点值还可以包括减少用于表示最小图像元素值的位数。表示所确定的起点值的所述数据可以具有的位少于图像数据块中的图像元素值中的任一个。
可以基于所确定起点值和图像数据块中的一个或多个图像元素值来确定多级差值表内的级别。所述确定针对图像数据块的多级差值表内的级别可以包括:确定所确定起点值和图像数据块中的任一图像元素值之间的最大差值;以及从多级差值表中选择其最大条目最接近地表示所确定的最大差值的级别。
对于每个图像元素值,可以基于图像元素值和所确定的起点值来选择所确定级别的条目中的所述一个。所述在多级差值表内在所确定的级别针对图像数据块中的每个图像元素值选择条目中的一个可以包括:通过确定所确定起点值和图像元素值之间的差值来确定图像元素值的差值;以及从多级差值表的所确定级别选择最接近地表示所确定差值的条目。
多级差值表的每个级别中的第一条目可以表示零值。
在一些示例中,用于表示压缩数据块的位数不取决于图像数据块中的图像元素值的值,从而保证有损压缩的压缩比。
图像元素值可以各自具有8位,其中,图像数据块可以包括四个图像元素值,使得图像数据块可以具有32位,并且其中,压缩数据块可以具有16位,包括(i)表示所确定起点值的5位数据,(ii)用于所确定级别的指示的3位,以及(iii)用于指示该图像元素值的所选条目的针对四个图像元素值的每个的2位。
图像元素值可以为整数格式。可以通过以整数格式对图像元素值执行包括加法运算、减法运算和比较运算中的一个或多个的运算来压缩图像数据块,但是压缩图像数据块的方法可以不涉及执行任何乘法运算或除法运算。
图像数据块可以涉及多通道图像数据块的一个通道,其中,多通道图像数据的不同通道可以被独立地压缩。
多通道图像数据块可以是颜色值块的颜色数据,包括:(i)与颜色值块的红色通道有关的第一图像数据块,(ii)与颜色值块的绿色通道有关的第二图像数据块,以及(iii)与颜色值块的蓝色通道有关的第三图像数据块,并且其中,在独立压缩三个图像数据块之前,可以对颜色值执行颜色去相关。多通道图像数据可以是RGB格式的颜色数据,使得每个颜色值包括红色值(R)、绿色值(G)和蓝色值(B),其中,所述颜色去相关可以包括根据方程R’=R-G计算第一图像数据块的图像元素值(R’),其中,所述颜色去相关可以包括根据方程G’=G确定第二图像数据块的图像元素值(G’),并且其中,所述颜色去相关可以包括根据方程B’=B-G计算第三图像数据块的图像元素值(B’)。
多通道图像数据可以是呈RGB格式的颜色数据,使得每个颜色值包括红色值(R)、绿色值(G)和蓝色值(B),所述方法可以包括将所述颜色数据转换为亮度-色度格式,所述亮度-色度格式包括:(i)与颜色值块的亮度通道(Y)有关的第一图像数据块,(ii)与颜色值块的第一色度通道(Cb)有关的第二图像数据块,以及(iii)与颜色值块的第二色度通道(Cr)有关的第三图像数据块,其中,在已经将颜色数据转换成亮度-色度格式之后,可以独立地压缩三个图像数据块。
可以提供一种压缩图像数据块的方法,包括:确定图像数据块的无损压缩是否将满足图像数据块的目标压缩比;并且如果确定图像数据块的无损压缩将不满足目标压缩比,对图像数据块执行本文所述的有损压缩方法中的任一种,其中,保证有损压缩的压缩比以满足图像数据块的目标压缩比。如果确定图像数据块的无损压缩将满足目标压缩比,则可以对图像数据块执行无损压缩以形成压缩数据块。所述确定图像数据块的无损压缩是否将满足图像数据块的目标压缩比可以包括:预测对图像数据块执行所述无损压缩将获得的压缩数据量;以及确定压缩数据的所述预测量是否满足目标压缩比。所述确定图像数据块的无损压缩是否将满足图像数据块的目标压缩比的步骤可以包括:对图像数据块执行无损压缩,以及确定对图像数据块执行所述无损压缩所获得的压缩数据量是否满足目标压缩比。
所述方法还可以包括将指示存储在与压缩数据块相关联的标头中,以指示所述块是利用无损压缩还是利用有损压缩压缩的。
图像数据块可以是表示图像的多个图像数据块中的一个,其中,存在与整个图像相关的总图像目标压缩比,并且其中,所述方法可以包括根据已针对与同一图像有关的其他图像数据块形成的压缩数据量来修改图像数据块的目标压缩比,使得满足总图像目标压缩比。
所述方法还可以包括将压缩数据块存储在存储器中。
可以使用专用硬件来执行所述方法。
提供了一种压缩单元,所述压缩单元被配置成根据多级差值表对图像数据块执行有损压缩,其中,图像数据块包括多个图像元素值,其中,多级差值表的每个级别包括多个条目,所述压缩单元包括:配置成确定图像数据块的起点值的起点值确定逻辑;配置成确定多级差值表内针对图像数据块的级别的级别确定逻辑;配置成对于图像数据块中的每个图像元素值,在多级差值表内在所确定级别选择条目中的一个的条目选择逻辑;以及配置成形成图像数据块的压缩数据块的压缩块形成逻辑,所述压缩数据块包括:(i)表示所确定起点值的数据,(ii)所确定级别的指示,以及(iii)对于图像数据块中的每个图像元素值,图像元素值的所选条目的指示。
可以提供一种被配置成压缩图像数据块的压缩单元,所述压缩单元包括:第一压缩单元,所述第一压缩单元被配置成对图像数据块执行无损压缩;如本文任何示例所述的第二压缩单元,所述第二压缩单元被配置成对图像数据块执行有损压缩;以及压缩技术确定逻辑,所述压缩技术确定逻辑被配置成确定由第一压缩单元执行的图像数据块的无损压缩是否将满足图像数据块的目标压缩比,其中,压缩技术确定逻辑被配置成,如果确定图像数据块的无损压缩将不满足目标压缩比,使第二压缩单元对图像数据块执行有损压缩,其中,保证有损压缩的压缩比以满足图像数据块的目标压缩比。
可以提供一种被配置成执行本文所述的任何压缩方法的压缩单元。
可以提供一种使用集成电路制造系统制造如本文中描述的压缩单元的方法,所述方法包括:使用布局处理系统处理所述压缩单元的计算机可读描述,以便生成包含所述压缩单元的集成电路的电路布局描述;以及使用集成电路生成系统,根据所述电路布局描述制造所述压缩单元。
可以提供一种根据多级差值表对压缩数据块进行解压缩的计算机实施的方法,其中,压缩数据块表示包括多个图像元素值的图像数据块,其中,多级差值表的每个级别包括多个条目,所述方法包括:使用表示来自压缩数据块的起点值的数据确定图像数据块的起点值;使用来自压缩数据块的级别的指示来识别多级差值表内针对图像数据块的级别;对于图像数据块中的每个图像元素值:使用来自压缩数据块的相应条目指示来识别多级差值表内的所识别级别的条目中的一个;以及使用:(i)图像数据块的所确定起点值,和(ii)多级差值表内针对图像元素值的所识别级别的所识别条目来确定图像元素值。
可以提供一种配置成根据多级差值表对压缩数据块进行解压缩的解压缩单元,其中,压缩数据块表示包括多个图像元素值的图像数据块,其中,多级差值表的每个级别包括多个条目,所述解压缩单元包括:配置成使用表示来自压缩数据块的起点值的数据确定图像数据块的起点值的起点值确定逻辑;配置成使用来自压缩数据块的级别的指示来识别多级差值表内针对图像数据块的级别的级别识别逻辑;图像元素值确定逻辑,所述图像元素值确定逻辑被配置成对于图像数据块中的每个图像元素值:使用来自压缩数据块的相应条目指示来识别多级差值表内的所识别级别的条目中的一个;以及使用:(i)图像数据块的所确定起点值,和(ii)多级差值表内针对图像元素值的所识别级别的所识别条目来确定图像元素值。
压缩单元和/或解压缩单元可以包含在集成电路上的硬件中。可以提供一种在集成电路制造系统中制造压缩单元和/或解压缩单元的方法。可以提供集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集将系统配置为制造压缩单元和/或解压缩单元。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造系统中处理时,该计算机可读描述使集成电路制造系统制造包含压缩单元和/或解压缩单元的集成电路。
可以提供一种集成电路制造系统,所述集成电路制造系统包括:非暂时性计算机可读存储介质,其上存储有描述了压缩单元和/或解压缩单元的计算机可读集成电路描述;布局处理系统,所述布局处理系统被配置为处理集成电路描述,以便生成包含压缩单元和/或解压缩单元的集成电路的电路布局描述;以及集成电路生成系统,所述集成电路生成系统被配置为根据电路布局描述来制造压缩单元和/或解压缩单元。
可以提供用于执行如本文所述的方法的计算机程序代码。换言之,可以提供一种计算机可读代码,其被配置成在代码运行时使得本文所述的任一方法得以执行。可以提供其上存储有计算机可读指令的非暂态计算机可读存储介质,当在计算机系统处执行时,所述计算机可读指令使计算机系统执行如本文所述的方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
参考附图通过示例的方式描述本发明。在附图中:
图1示出了在图形处理单元上实现压缩/解压缩单元的计算机系统;
图2示出了包括图像数据块的图像数据阵列;
图3a示出了有损压缩单元;
图3b是对图像数据块执行有损压缩的方法的流程图;
图4是确定用于压缩图像数据块中的多级差值表内的级别的方法的流程图;
图5是在针对图像数据块内每个图像元素值确定的级别选择条目的方法的流程图;
图6示出了压缩数据块的示例性格式;
图7示出了有损解压缩单元;
图8是对压缩数据块进行解压缩的方法的流程图;
图9示出了压缩单元,其包括无损压缩单元和有损压缩单元;
图10是使用图9的压缩单元压缩图像数据块的方法的流程图;
图11示出了解压缩单元,其包括无损解压缩单元和有损解压缩单元;
图12是使用图11的解压缩单元对压缩数据块进行解压缩的方法的流程图;以及
图13示出了用于生成包含如本文所述的压缩单元或解压缩单元的集成电路的集成电路制造系统。
附图示出了各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施例,并且对所公开的实施例的各种修改对于所属领域的技术人员而言将是显而易见的。仅通过示例的方式描述实施例。
如上所述,在不过多损失数据质量,例如,没有由于有损压缩导致视觉上可觉察的伪影引入到图像中的情况下,有一种保证满足固定压缩比(例如,2:1)的有损压缩技术(以及互补解压缩技术)可能是有用的。一些先前的高端有损压缩算法可以实现固定压缩比,而不会过多损失数据质量,但这些先前的高端有损压缩算法涉及对浮点或定点值执行复杂运算(例如,滤波、乘法和除法运算),并且可能需要在压缩过程期间对值进行内部缓冲。因此,这些先前的高端有损压缩算法通常被认为不适合用于小型低成本和/或低功率计算系统,例如,可以在移动装置(诸如,智能电话和平板电脑或者大小、成本和/或功率受到限制的其它装置)中实施。
一种先前的低端有损压缩技术涉及通过截断值来压缩数据值,即简单地从数据值中移除一些最低有效位(LSB)。为了实现2:1的压缩比,将需要移除数据值的一半的位。尽管这种低端有损压缩技术可以在小型、低成本和低功耗系统中实施,但它经常导致数据质量不可接受地劣化。例如,如果数据值是图像的像素值,那么这种低端有损压缩技术通常会将可见的条带效应引入图像中,这通常是不希望有的。
本文描述了有损压缩和解压缩技术的示例,其保证满足固定压缩比(例如,2:1),而不过多损失数据质量(例如,不会由于有损压缩导致大量视觉上可觉察的伪影引入到图像中),并且可以在小型、低成本和低功率计算系统中实施。本文所述的示例易于实施。例如,这些示例可以整数格式而非浮点格式对图像元素值进行操作,并且可以通过执行简单运算(例如,加法运算、减法运算和比较运算)而不执行更复杂的运算(其例如在表示值所需的数据量方面可能是庞大的),例如,乘法运算或除法运算,并且在压缩或解压缩过程期间不需要对值进行内部缓冲来执行。在这些示例中,这些简单运算(例如,加法运算、减法运算和比较运算)是“整数运算”,意味着它们对整数进行运算,例如以整数格式对图像元素值进行运算。
本文中所描述的有损压缩技术可以在以专用硬件实现的压缩单元中(例如,使用固定功能电路)实施。类似地,本文中描述的有损解压缩技术可以在以专用硬件实施的解压缩单元中(例如,使用固定功能电路)实施。在这些示例中,当与以硬件实施的先前的高端压缩和解压缩单元相比时,压缩单元和解压缩单元可以在物理尺寸(例如,硅面积)方面较小。本文中描述的有损压缩单元和解压缩单元适合于在具有小的硅面积和低功耗及低延时的小型低成本处理单元(例如,GPU或CPU)中实施。这在不过多降低数据质量(例如,图像质量)的情况下实现。
待压缩的图像数据可表示为图像元素值(例如,像素值)的2D阵列。如果图像数据包括多个通道,则独立地压缩不同通道(尽管针对压缩的预处理步骤可以为了颜色去相关而被执行或将RGB值转换为YCbCr值,并且在解压缩之后可以执行对应的后处理步骤)。在本文中所描述的示例中,以有损方式压缩阵列内的至少一个图像元素块(例如2x2块)。
图2示出了包括图像数据块的图像数据阵列。在此示例中,图像数据阵列200表示由像素值表示的图像,其中图像数据块是像素值的2x2块。像素值的左上块用附图标记202表示,该附图标记由高达四个像素值2040、2041、2042和2043组成。在其它示例中,图像数据块可以具有不同大小和/或形状。例如,在其它示例中,仅给出两个示例,图像数据块可以是图像元素值的4x1块,或图像元素值的4x4块。
本文中描述的示例涉及压缩像素值块,其中像素值表示图像。然而,应理解,像素值仅是可使用本文中所描述的技术压缩的图像元素值的一个示例。更一般地,图像数据块可被压缩以形成压缩数据块,且压缩数据块可被解压缩以形成图像数据块,其中图像数据包括多个图像元素值。为了给出一些示例,图像元素值可以是:(i)表示纹理的纹素值;(ii)表示图像的像素值;(iii)表示场景内不同采样位置处的表面深度的深度值;(iv)表示场景内不同采样位置处的表面的法线向量的方向的表面法线值;或(v)表示场景内不同采样位置处的表面上的照明的照明值。照明值表示“光图”。光图可被认为是一种纹理,使得可以按照与纹理相同的方式使用和处理光图。像素值和纹素值是颜色值的示例(其中像素值表示图像,纹素值表示纹理)。这些颜色值可以是单色的,即,它们具有单色通道。然而,在一些示例中,颜色值可以是多通道值。例如,颜色值可以是RGB格式,其中它们具有红色通道(R)、绿色通道(G)和蓝色通道(B)。在其他示例中,颜色值可以是RGBA格式,其中它们具有红色通道(R)、绿色通道(G)、蓝色通道(B)和α通道(A)。在其它示例中,颜色值可以是YCbCr格式,其中颜色值具有亮度(luma)通道(Y)、第一色度通道(Cb)和第二色度通道(Cr)。如本领域已知的,多通道颜色值可以具有许多其它格式。多通道颜色值的每个通道包括与该特定通道有关的值。多通道值的不同通道的值可以被独立地压缩和解压缩。在本文描述的示例中,当我们提到“像素值”时,我们可以指多通道颜色值的一个通道的值。
作为本文所述的有损压缩技术的简要概述,可以通过以下方式压缩像素值块202:确定块202的起点值(例如,基值),选择(或“确定”或“识别”)多级差值表(其可被称为多级量化增量表)内的级别,以及对于块202中的每个像素值204,使用一些位(例如,每像素值2位)来选择多级差值表的所选级别的条目中的一个。多级差值表中的条目表示与起点值的差值(即调整值)。对于多级差值表的不同级别,由级别中的条目表示的值域的大小不同。这允许根据像素值块内的像素值范围的大小来选择级别。
现在参考图3a和图3b描述有损压缩技术的示例。图3a示出了被配置成根据多级差值表对图像数据块执行有损压缩的压缩单元302。压缩单元302可以实现为GPU 104内的压缩/解压缩单元112的一部分。压缩单元302被配置成接收图像数据块,对图像数据块执行有损压缩以形成压缩数据块,并输出压缩数据块,例如以在存储器中存储。压缩单元302包括起点值确定逻辑304、级别确定逻辑306、条目选择逻辑308和压缩块形成逻辑310。起点值确定逻辑304、级别确定逻辑306、条目选择逻辑308和压缩块形成逻辑310可以在专用硬件中实施,例如在固定功能电路中实施。
图3b是对图像数据块202执行有损压缩的方法的流程图。如下文更详细所述,在步骤S312中,可以对图像数据块执行预处理。此步骤在图3b中利用虚线示出,因为此步骤是任选的。在步骤S314中,在压缩单元302处接收图像数据块202。图像数据块202被提供给起点值确定逻辑304、级别确定逻辑306和条目选择逻辑308。如图2中所示,在此示例中,图像数据块202是像素值2040至2043的2x2块。
在步骤S316中,起点值确定逻辑304确定像素数据块202的起点值。基于像素数据块202中的像素值204确定起点值。例如,起点值可以是基值,其中,通过识别像素值块202中的最小像素值来确定基值。从一组值中识别最小值是在处理逻辑中要执行的简单过程,并且从一组值中识别最小值的方法是本领域已知的。
基值的确定还可以包括减少用于表示像素值块202中最小像素值的位数。基值的一些位可以是隐式的,例如,一个或多个最低有效位可以隐示为零,使得当存储基值时不需要存储它们。例如,像素值204中的每一个可以使用8位表示,并且基值可以使用小于8位,例如使用5位表示。通过这种方式,表示基值的数据可以包括比像素数据块202中的像素值204中的任何一个(例如,8位)更少的位(例如,5位)。用于表示基值的位数的减少可以包括在像素值块202中识别最小像素值204,并根据舍入模式对最小像素值进行舍入。例如,舍入模式可以是朝向零舍入的舍入模式,且舍入可以涉及截断(或“夹断”)最小像素值,即用零替换最小像素值的一个或多个(例如,三个)最低有效位(LSB)以使得这些位不需要存储。这实施起来非常简单。在其它示例中,舍入模式可以是从远离零舍入的舍入模式或舍入至最近值的舍入模式,但与简单地夹断最小像素值相比,这些舍入模式在实施上可能略微更复杂。
级别确定逻辑306接收:(i)像素数据块202,以及(ii)来自起点值确定逻辑304的所确定起点值的指示。在步骤S318中,级别确定逻辑306例如基于所确定的起点值和像素值块202中的一个或多个像素值204来确定像素数据块202的多级差值表内的级别。此步骤在本文中被描述为“确定”多级差值表内的级别,并且应理解,这还可以被描述为“选择”或“识别”多级差值表内的级别。多级差值表的每个级别包括多个条目。多级差值表中的每个条目表示值,该值可用于表示像素值与起点值之间的差值(或“增量”)。在示例中,本文所述每个级别包括相同数目的条目。如上所述,对于多级差值表的不同级别,由级别中的条目表示的值域的大小不同。通过这种方式,不同级别适合于表示在其内具有像素值的不同分布的像素数据块。例如,多级差值表的一些级别具有表示小值域的条目,并且这些级别将可用于压缩像素值变化不大的像素数据块;而多级差值表的一些其他级别具有表示大值域的条目,并且这些级别将可用于压缩像素值确实变化很大的像素数据块。通常小块内的像素值之间存在一些相关性,因此像素数据块内的像素值通常彼此非常相似(例如,如果所有像素值都表示图像中的相同对象)。多级差值表的较小级别在这些情况下将是有用的,并且不会将较大误差引入像素值中。然而,多级差值表的较大级别仍能够压缩块中像素不太相似的块。表1中示出了示例性多级差值表。此示例针对8位像素值,使得每个像素值在0到255的范围内。在不同的示例中,多级差值表可以与表1中所示的不同。
级别 条目0 条目1 条目2 条目3
0 0 2 4 8
1 0 4 8 16
2 0 8 16 32
3 0 16 32 64
4 0 32 64 96
5 0 48 96 128
6 0 64 128 176
7 0 96 192 248
表1:多级差值表
在此示例中,多级差值表的每个级别中的第一条目表示零值。这不是必需的,但在一些情况下它可能有用,因为它允许在不改变其值的情况下压缩零像素值(例如,其可用于表示完全黑色)。因此,在这些示例中,使用多级差值表来压缩图像的像素值并不会将伪影引入图像的完全黑色区域中。此外,由于每个级别都以零作为其第一条目,因此可能不需要存储多级差值表中各级别的第一条目的值,从而减少用于存储多级差值表的存储器的量。
多级差值表是预定的。换句话说,在对图像数据块执行有损压缩(或有损解压缩)的方法开始之前确定多级差值表的条目的值。在一些示例中,多级差值表存储于例如压缩单元302上的一小块专用存储器中,且级别确定逻辑306和条目选择逻辑308可以执行对此存储器的查找以从存储的多级差值表访问数据。在其它示例中,多级差值表的值可以被硬编码到级别确定逻辑306和条目选择逻辑308的电路中。将多级差值表存储在存储器中将允许在已制造压缩单元302之后改变多级差值表中的条目的值,因此其允许压缩单元302执行有损压缩的方式具有更多灵活性。但是,将多级差值表的值硬编码到级别确定逻辑306和条目选择逻辑308的电路中将提供更快的执行(从而减少压缩过程的延时),并且将避免使用存储器来存储多级差值表(从而减小压缩单元302的硅面积),但是在制造压缩单元302之后将难以改变多级差值表的值,因此,将多级差值表的值硬编码到压缩单元302的电路中是相对不灵活的方法。
在表1所示的示例中,条目的值具有低汉明权重,即当被表示为二进制数字时,它们在二进制表示中具有相对低数目的1和相对较多数目的零。这可以使将这些值与这些数字进行比较在对二进制数字进行运算的硬件中实现起来更简单。
图4是示出如何在级别确定逻辑306中执行步骤S318以确定(即,识别)像素数据块202的多级差值表内的级别的示例的流程图。根据图4中所示的方法,确定所确定的起点值与像素数据块202中的像素值204中的任一个之间的最大差值,然后从多级差值表中选择其最大条目最接近地表示确定的最大差值的级别。
具体而言,在步骤S402中,在级别确定逻辑306处接收图像数据块(例如像素数据块202)和由起点值确定逻辑304确定的起点值(例如基值)。在步骤S404中,级别确定逻辑306识别像素数据块202中的最大像素值(pixmax)。在步骤S406中,通过从最大像素值减去起点值(在本示例中是基值(baseValue))来确定最大差值(Diffmax)。换言之,Diffmax=pixmax-baseValue。
通过将多级差值表的一个或多个级别中的最后一个条目与最大差值Diffmax进行比较来确定多级差值表中的级别。具体而言,在步骤S408中,将最大差值Diffmax与多级差值表的最大级别中的最大条目进行比较。在上文表1所示的示例中,最大级别是级别7,并且级别7中的最大条目表示值248。如果最大差值Diffmax大于或等于多级差值表的最大级别中的最大条目,则方法进行到步骤S410,其中将级别设定为最大级别(例如,级别7)。该级别允许表示像素块202内的像素值204之间的非常大的差值。在像素块内可能发生类似这种大差值的情况的一个示例是当块内的一个或多个像素表示完全明亮的白色区域(例如,每个8位颜色通道中的值255),并且块内的一个或多个像素表示完全黑色区域(例如,每个颜色通道中的值0)时,例如当像素表示文本时,例如,白色背景上的黑色文本,可能会发生上述情况。
如果最大差值Diffmax小于多级差值表的最大级别中的最大条目,则方法从步骤S408进行到步骤S412,其中将参数i设定为零。然后,在步骤S414中,级别确定逻辑306确定最大差值Diffmax是否小于或等于多级差值表的级别i中的最大条目。在上文表1所示的示例中,级别0中的最大条目表示值8。如果Diffmax不小于或等于多级差值表的级别i中的最大条目,则方法从步骤S414进行到步骤S416,其中递增参数i,且接着方法返回到步骤S414以考虑下一级别(例如,在此迭代中为级别1)。在上文表1所示的示例中,级别1中的最大条目表示值16。步骤S414和步骤S416的这种循环一直继续,直到在步骤S414中确定Diffmax小于或等于多级差值表的级别i中的最大条目,接着方法进行到步骤S418。
在步骤S418中,确定级别i中的最大条目与最大差值Diffmax之间的差值(Di),并且确定最大差值Diffmax与级别(i-1)中的最大条目之间的差值(Di-1)。在步骤S420中,级别确定逻辑306确定是否Di-1<Di。如果Di-1小于Di,则方法进行到步骤S422,其中将级别设定为级别(i-1)。然而,如果Di-1不小于Di(例如,如果Di-1大于Di),则方法进行到步骤S424,其中将级别设定为级别i。因此,步骤S408至S424是实施从多级差值表选择其最大条目最接近地表示最大差值Diffmax的级别的过程的方式的示例。
例如,如果像素数据块202内的四个像素值204是表示值52(即,二进制的00110100)、46(即,二进制的00101110)、60(即,二进制的00111100)和66(即,二进制的01000010)的8位值,那么在示例中可以通过如下方式来确定起点值,即基值:利用零替换这四个值中的最小值(即,值46)的三个最低有效位,使得基值为40(即,二进制值00101000)。此基值可以通过仅存储前五个位(00101)来存储。在此示例中,最大差值Diffmax将为26,因为66-40=26。因此,在此示例中,步骤S414和S416的循环将选择i为2,因为26大于16(这是级别1中的最大条目)但小于32(这是级别2中的最大条目)。因此,在本示例中,Di=6且Di-1=10,因此级别将被设定为级别2。
返回图3b,在步骤S318之后,在步骤S320中,对于像素数据块202中的每个像素值204,例如,基于像素值204和起点值,选择在多级差值表内所确定级别的条目之一。
图5是示出如何在条目选择逻辑308中执行步骤S320以在针对像素数据块202中的每个像素值204确定的级别选择条目的示例的流程图。根据图5中所示的方法,在步骤S502中,条目选择逻辑308接收:(i)像素数据块202,(ii)由起点值确定逻辑304确定的起点值,以及(iii)由级别确定逻辑306确定的级别(在本文中称为“levelset”)的指示。
在步骤S504中,条目选择逻辑308将参数j设定为零。在步骤S506中,条目选择逻辑508确定像素j的差值Diffj。这可以通过从第j像素值(“pixelValuej”)减去起点值(即基值)来完成。换言之,Diffj=pixelValuej-baseValue。
在步骤S508中,将像素j的差值Diffj与多级差值表的所确定级别(即,levelset)中的最大条目进行比较。在表1所示的示例中,并且在levelset是级别2的示例中,最大条目表示值32。如果Diffj大于或等于多级差值表的levelset中的最大条目,则方法进行到步骤S510,其中将像素j的条目设定为levelset中的最大条目。
如果Diffj小于多级差值表的levelset中的最大条目,则方法进行到步骤S512,其中将参数k设定为零。然后,在步骤S514中,条目选择逻辑308确定像素j的差值Diffj是否小于或等于多级差值表的所确定级别(即,levelset)中的第k个条目。例如,在上文所示的表1中,级别2中的条目0表示值0。如果Diffj不小于或等于多级差值表的levelset中的第k个条目,则方法从步骤S514进行到步骤S516,其中递增参数k,且接着方法返回到步骤S514以考虑levelset的下一条目(例如,在此迭代中为条目1)。在上文表1所示的示例中,级别2中的条目1表示值8。步骤S514和步骤S516的这种循环一直继续,直到在步骤S514中确定Diffj小于或等于多级差值表的levelset中的第k个条目,接着方法进行到步骤S518。
在步骤S518中,确定levelset中的第k个条目与像素j的差值Diffj之间的差值(Diffk),并且确定像素j的差值Diffj与levelset中的第(k-1)个条目之间的差值(Diffk-1)。在步骤S520中,条目选择逻辑308确定是否Diffk-1<Diffk。如果Diffk-1小于Diffk,则方法进行到步骤S522,其中将像素j的条目设定为levelset的条目(k-1)。不过,如果Diffk-1不小于Diffk,则方法进行到步骤S524,其中将像素j的条目设定为levelset的条目k。
因此,步骤S508至S524是实施从多级差值表的所确定级别选择最接近地表示第j个像素的所确定差值Diffj的条目的过程的方式的示例。
在步骤S526中,条目选择逻辑308确定(j+1)是否等于像素块202中的像素204的数目。如果(j+1)不等于像素数据块202中的像素204的数目,则这意味着像素数据块202中存在更多要为其选择条目的像素值。因此,所述方法进行至步骤S528,其中,递增参数j,且所述方法返回到步骤S506,使得像素块中的下一个像素值可以具有由条目选择逻辑308为其选择的条目。
如果在步骤S526中确定(j+1)确实等于像素块202中的像素204的数目,则这意味着已经为像素数据块202中的每个像素值选择了条目。因此,步骤S320已完成,且方法进行到步骤S322。
将继续上文给出的示例,其中像素数据块202内的四个像素值204是表示值52(即,二进制的00110100)、46(即,二进制的00101110)、60(即,二进制的00111100)和66(即,二进制的01000010)的8位值,并且其中基值为40(即,二进制值00101000),且其中级别确定逻辑306从针对此像素数据块的多级差值表选择级别2。此基值可以通过仅存储五个最高有效位(00101)来存储,其中三个最低有效位隐式地为零,不需要存储。在此示例中,四个像素值的差值为12、6、20和26。因此,从以上表1可以看出,这四个像素值的所选条目将分别是条目2(表示值16)、条目1(表示值8)、条目2(表示值16)和条目3(表示值32)。
返回图3b,在步骤S320之后,所述方法进行到步骤S322,其中压缩块形成逻辑310形成像素数据块的压缩数据块。压缩块形成逻辑310接收:(i)表示来自起点值确定逻辑304的所确定起点值的数据,(ii)来自级别确定逻辑306的所确定级别的指示,以及(iii)来自条目选择逻辑308的针对每个图像元素值(例如,针对像素数据块202中的每个像素值204)的选定条目的指示。由压缩块形成逻辑310形成的压缩数据块包括:(i)表示像素数据块202的所确定起点值的数据,(ii)像素数据块202的所确定级别的指示,以及(iii)针对像素数据块202中的每个像素值204,针对该像素值204的选定条目的指示。
在步骤S324中,从压缩单元302输出压缩数据块。压缩数据块可以例如存储在存储器中,例如存储器106中。
图6示出了压缩数据块600的格式的示例。图6中所示的示例涉及压缩包括四个像素值204的像素数据块202,且每个像素值204具有8位的示例。在本示例中,利用32位表示未压缩像素数据块202。在图6所示的示例中,压缩数据块具有16位,使得其实现2:1的压缩比。换句话说,用于表示压缩数据块600的位数是用于表示(未压缩)图像数据块的位数的一半,使得有损压缩具有2:1的压缩比。该压缩比是有保证的。换句话说,用于表示压缩数据块600的位数不取决于像素数据块202中的像素值204的值。压缩数据块600包括:(i)表示所确定起点值602的5位数据,(ii)表示所确定级别604的指示的3位,以及(iii)针对四个像素值的每个,用于指示该像素值6060、6061、6062和6063的所选条目的2位。应当注意,使用3位指示级别允许在多级差值表中指示多达八个不同的级别,对于所选条目的每个指示使用2位允许每个级别具有多达四个条目。因此,图6中所示的压缩数据块600的格式适合(即,兼容)与上文表1中所示的多级差值表一起使用。
在其它示例中,可以使用不同的多级差值表,并且压缩数据块可以具有不同的格式。可以一起选择压缩数据块的格式和多级差值表中的级别的数目以及多级差值表的每个级别中的条目的数目,例如,使得多级差值表中的级别的数目(L)和用于指示级别的位数(NL)相关,使得
Figure BDA0002991400700000121
并且使得多级差值表的每个级别中的条目数目(E)和用于指示每个像素值的选定条目的位数(NE)相关,使得
Figure BDA0002991400700000131
Figure BDA0002991400700000132
例如,在不同的系统中,如果压缩8位像素值的4x4块(使得未压缩像素数据块具有128位),则压缩数据块可以具有用于起点值的8位,用于指示级别的8位,以及用于16个像素值中的每一个以指示所选条目的3位。因此,压缩数据块将具有64位,并且压缩比将为2:1。在此示例中,多级差值表可以具有高达256个级别(因为28=256),且每个级别可以具有8个条目(因为23=8)。
在另一不同示例中,目标压缩比可以是4:3,并且可以压缩8位像素值的2x2块,使得未压缩像素数据块将具有32位并且压缩数据块将具有24位。在此示例中,压缩数据块可以具有用于起点值的8位、用于指示级别的4位,以及用于4个像素值中的每一个以指示所选择条目的3位。在此示例中,多级差值表可以具有高达16个级别(因为24=16),且每个级别可以具有8个条目(因为23=8)。
应注意,在上文给出的两个替代示例中,起点值用与原始像素值之一相同的位数表示,因此在这些示例中,它不需要被舍入或“夹断”或“截断”。
上文描述的示例涉及压缩单元302(例如,配置在专用硬件(例如,固定功能电路)中),其执行有损压缩以压缩图像数据块以形成压缩数据块。现在继续描述解压缩单元(例如,配置在专用硬件(例如,固定功能电路)中),其执行有损解压缩以对压缩数据块进行解压缩以形成图像数据块。解压缩单元执行解压缩技术,所述解压缩技术与用于压缩数据的压缩技术互补,使得解压缩图像数据块与压缩之前的原始图像数据块相似(尽管解压缩图像数据块不一定与压缩之前的原始图像数据块完全相同,因为在有损压缩和解压缩期间一些数据可能会丢失)。作为解压缩过程的简要概述,读取压缩数据块(例如,对于2x2像素块),从而读取表示起点值的数据(例如,基值)、多级差值表中的级别的指示以及每个图像元素值(例如,像素值)的所选条目的指示。然后,可以通过将基值和由来自多级差值表的相应条目表示的值相加来确定解压缩像素值。
现在参照图7和图8描述解压缩技术的一个示例。图7示出了被配置成根据多级差值表对压缩数据块执行有损解压缩的解压缩单元702。解压缩单元702可以实现为GPU 104内的压缩/解压缩单元112的一部分。解压缩单元702被配置成接收压缩数据块,对压缩数据块执行解压缩以形成(解压缩)图像数据块,并输出图像数据块,例如以在GPU 104中进一步处理。解压缩单元702包括起点值确定逻辑704、级别识别逻辑706和图像元素值确定逻辑708。起点值确定逻辑704、级别识别逻辑706和图像元素值确定逻辑708可以在专用硬件中实施,例如在固定功能电路中实施。
图8是使用解压缩单元702对压缩数据块进行解压缩的方法的流程图。在步骤S802中,在解压缩单元702处接收压缩数据块。压缩数据块被提供给起点值确定逻辑704、级别识别逻辑706和图像元素值确定逻辑708。压缩数据块可能已经使用上述示例性压缩技术中的一种进行了压缩。具体而言,在本文所述的示例中,压缩数据块600具有图6中所示的格式。
在步骤S804中,起点值确定逻辑704使用表示来自压缩数据块的起点值的数据来确定图像数据块的起点值。例如,这可能涉及将一个或多个位(例如零)附加到表示压缩数据块中的起点值602的数据。例如,如果(未压缩)像素值具有8位,并且如果存在表示压缩数据块600中的起点值的5位602,则步骤S804可以包括将三个零附加到表示压缩数据块600中的起点值的5位602的最低有效末端。如上所述,在一些其它示例中,表示压缩数据块中的起点值的数据可以具有与图像元素值之一相同的位数,在这种情况下,步骤S804将仅涉及从压缩数据块读取那些位(即,在这些其它示例中,不需要将另外的位附加到表示起点值的数据)。
在步骤S806中,级别识别逻辑706使用来自压缩数据块600的级别的指示604识别图像数据块的多级差值表内的级别。例如,级别604的指示包括三个位,其可以充当指示多级差值表内的八个级别中的一个的索引,例如,如上文表1中所示。如上所述,对于多级差值表的不同级别,由级别中的条目表示的值域的大小不同。
图像元素值确定逻辑708接收由级别识别逻辑706识别的级别的指示和由起点值确定逻辑704确定的起点值。在步骤S808中,图像元素值确定逻辑708使用来自压缩数据块600的相应条目指示606,以针对像素数据块中的每个像素值识别多级差值表内处于所识别级别的条目中的一个。
在步骤S810中,图像元素值确定逻辑710使用为像素数据块所确定的起点值和多级差值表内针对像素值所识别的级别处的所识别条目来确定像素值的每个。例如,步骤S810可以包括对为像素数据块所确定的起点值和多级差值表内针对像素值所识别的级别处的所识别条目表示的值求和。如果总和的结果大于最大可能像素值,则像素值被设定为该最大可能像素值。例如,如果像素值具有8位,则255(以二进制表示为11111111)为最大可能像素值,从而如果用于确定像素值的总和结果大于255,则将该像素值设定为255。如果像素值具有不同位数,则最大可能的像素值将不同。
与上文参考压缩单元302所提及的类似,多级差值表可存储在解压缩单元702内的存储器中,其中级别识别逻辑706和图像元素值确定逻辑708可以执行对存储器的查找以访问多级差值表;或多级差值表可被硬编码到级别识别逻辑706和图像元素值确定逻辑708的电路中。
在步骤S812中,从解压缩单元702输出(解压缩)像素数据块,例如用于在GPU 104中进一步处理。如下文更详细所述,在步骤S814中,可以对图像数据块执行后处理。此步骤在图8中利用虚线示出,因为此步骤是任选的。
解压缩过程实施起来非常简单,并且可以例如包括执行加法运算(或一些示例中的减法运算),但可以不涉及在解压缩期间执行复杂运算,例如乘法或除法或对内部值进行任何缓冲。如上所述,像素值可以采用整数格式(而不是更复杂的格式,例如浮点格式)。
在上述示例中,起点值是基值(即表示像素数据块内的最小像素值),由多级差值表中的条目表示的差值表示要对基值进行的添加,从而表示像素数据块内的像素值。不过,在其他示例中,起点值可以是最高值(即表示像素数据块内的最大像素值),由多级差值表中的条目表示的差值可以表示要从最高值进行的减除,从而表示像素数据块内的像素值。在其他示例中,起点值可以是某个中间值(即表示像素数据块内的最大像素值和最小像素值之间的中点),由多级差值表中的条目表示的差值可以为带符号格式,使得它们可以表示要相对于中间值进行的添加或减除,从而表示像素数据块内的像素值。
如上所述,本文中参考包括像素值的像素数据块详细描述了一些示例,但更一般地,可以对包括图像元素值的图像数据块执行解压缩过程,其中,略举数例,图像元素值可以是像素值、纹素值、深度值、表面法线值或照明值。
如上所述,在一些示例中,可能存在对图像数据块执行的一些预处理(在步骤S312中)和一些后处理(在步骤S814中)。例如,图像数据块可以涉及多通道图像数据块的一个通道,其中多通道图像数据的不同通道可以被独立地压缩和解压缩。例如,多通道图像数据块可以是颜色值块的颜色数据,包括:(i)与颜色值块的红色通道有关的第一图像数据块,(ii)与颜色值块的绿色通道有关的第二图像数据块,以及(iii)与颜色值块的蓝色通道有关的第三图像数据块。在独立压缩三个图像数据块之前,在步骤S312中,可以对颜色值执行颜色去相关。
颜色值误差可能发生在已经使用有损压缩技术压缩然后解压缩的图像中。由有损压缩引入的误差可将颜色通道值进一步拉开。此外,在红色、绿色和蓝色通道高度相关(例如,以表示灰色)的状况中,在不同颜色通道之间变化的误差可能更容易被观看者察觉。例如,有损压缩可能会将明显的颜色引入应当为灰色的图像区域中。在单独通道中的每一个的(独立)有损压缩之前向通道应用颜色去相关可以帮助减少引入图像(例如,引入图像的灰色区域)中的颜色畸变。
当多通道图像数据呈RGB格式时,可以使用简单颜色去相关技术,使得每个颜色值包括红色值(R)、绿色值(G)和蓝色值(B)。颜色去相关过程(例如,步骤S312)可以包括:
根据方程R’=R-G计算第一图像数据块的图像元素值(R’);
根据方程G’=G确定第二图像数据块的图像元素值(G’);以及
根据方程B’=B-G计算第三图像数据块的图像元素值(B’)。
然后,可以如上所述独立地压缩第一、第二和第三图像数据块(具有值R’、G’和B’)。
当数据被解压缩时,如上所述,在已经独立对与三个图像数据块相关的压缩数据块解压缩之后,后处理步骤S814可以对颜色值进行颜色再相关。例如,颜色再相关过程(例如,步骤S814)可以包括:
根据方程R=R’+G’,使用已经从第一压缩数据块解压缩的图像元素值(R’)并使用已经从第二压缩数据块解压缩的图像元素值(G’)计算红色值(R);
根据方程G=G’,使用已经从第二压缩数据块解压缩的图像元素值(G’)确定绿色值(G);以及
根据方程B=B’+G’,使用已经从第三压缩数据块解压缩的图像元素值(B’)并使用已经从第二压缩数据块解压缩的图像元素值(G’)计算蓝色值(B)。
在其它示例中,这些预处理和后处理步骤可能涉及将多通道值转换到不同颜色空间中,而不是在预处理和后处理步骤(步骤S312和S814)中执行颜色去相关和颜色再相关。例如,如果多通道图像数据是呈RGB格式的颜色数据,使得每个颜色值包括红色值(R)、绿色值(G)和蓝色值(B),则步骤S312可以包括将颜色数据转换为亮度-色度格式,例如,其包括:(i)与颜色值块的亮度通道(Y)有关的第一图像数据块,(ii)与颜色值块的第一色度通道(Cb)有关的第二图像数据块,以及(iii)与颜色值块的第二色度通道(Cr)有关的第三图像数据块。在颜色数据已经被转换成亮度-色度格式之后,可以如上所述独立地压缩三个图像数据块。在有损压缩之前将颜色数据转换到YCbCr颜色空间中可以帮助减少图像中(例如,在图像的灰色区域中)的颜色畸变。
用于从RGB格式转换为YCbCr格式的方法是本领域已知的,并且可以根据以下方程实施:
Y=0+0.299R+0.587G+0.114B
Cb=128–0.168736R–0.331264G+0.5B
Cr=128+0.5R–0.418688G–0.081312B
当数据被解压缩时,如上所述,在已经独立对与三个图像数据块相关的压缩数据块解压缩之后,后处理步骤S814可以将颜色数据从YCbCr格式转换回RGB格式。例如,对三个压缩数据块进行独立解压缩以确定亮度-色度格式的多通道颜色数据,其包括:(i)与亮度通道(Y)有关的第一图像数据块,(ii)与第一色度通道(Cb)有关的第二图像数据块,以及(iii)与第二色度通道(Cr)有关的第三图像数据块,并且步骤S814可以包括将颜色数据转换成RGB格式,使得每个颜色值包括红色值(R)、绿色值(G)和蓝色值(B)。
用于从YCbCr格式转换为RGB格式的方法是本领域已知的,并且可以根据以下方程实施:
R=Y+1.402*(Cr–128)
G=Y–0.344136*(Cb–128)–0.714136*(Cr–128)
B=Y+1.772*(Cb–128)
在上述示例中,单独实施有损压缩技术以对图像数据块执行有损压缩,从而保证特定目标压缩比(例如2:1)。然而,在一些情况下,无损压缩技术可能已经满足图像数据块中的至少一些的目标压缩比,并且无损压缩技术不会向图像数据中引入误差。因此,在一些情况下,如果无损压缩将满足目标压缩比,那么对图像数据块执行无损压缩可能是有用的,但如果图像数据的无损压缩将不满足目标压缩比,那么可以使用有损压缩技术(例如,本文所述的有损压缩技术之一)来压缩图像数据块。这可以被描述为使用有损压缩作为无损压缩的“应变计划”。这实现了有保证的压缩比,并且与仅使用有损压缩相比,减少了压缩引入的误差。然而,为了实施这种“应变计划”压缩技术,压缩单元需要能够执行无损压缩和有损压缩两者,因此压缩单元的物理大小(例如硅面积)可能大于仅实施有损压缩的示例。然而,物理大小的这种增加可能很小,并且在一些情况下,这可以被认为是可接受的,以便与仅使用有损压缩相比,通过使用这种应变计划压缩技术可以实现误差的减少。
图9示出了压缩单元902,其包括被配置成对图像数据块执行无损压缩的第一压缩单元904、被配置成对图像数据块执行有损压缩的第二压缩单元(在此示例中是上文所描述的有损压缩单元302),以及压缩技术确定逻辑906。压缩单元904和302以及压缩技术确定逻辑906可以在专用硬件,例如,固定功能电路中实施。
图10是使用压缩单元902压缩图像数据块的方法的流程图。在步骤S 1002中,压缩单元902接收待压缩的图像数据块。
在步骤S1004中,压缩技术确定逻辑906确定图像数据块的无损压缩是否将满足图像数据块的目标压缩比。例如,压缩技术确定逻辑906可以通过预测对图像数据块执行无损压缩将获得的压缩数据量,然后确定压缩数据的预测量是否满足目标压缩比,从而确定图像数据块的无损压缩是否将满足图像数据块的目标压缩比。在该示例中,可以执行对图像数据块执行无损压缩所将获得的压缩数据量的预测,而无需完成对图像数据块的无损压缩。例如,可以执行在执行无损压缩时涉及的一些操作或不执行任何操作,以便预测对图像数据块执行无损压缩所将获得的压缩数据量的预测。
如果在步骤S1004中确定图像数据块的无损压缩将不会满足目标压缩比,则方法进行到步骤S1006,其中有损压缩单元302对图像数据块执行有损压缩以形成压缩数据块。例如,由有损压缩单元302执行的有损压缩可以如上文给出的示例中所述。由有损压缩单元302执行的有损压缩的压缩比保证能满足图像数据块的目标压缩比。
在步骤S1008中,有损压缩单元302将指示存储在与压缩数据块相关联的标头中,以指示所述块已经用有损压缩技术压缩。在步骤S1010中,从压缩单元902输出有损压缩数据块,例如,以在存储器中存储。
如果在步骤S1004中确定图像数据块的无损压缩将满足目标压缩比,则方法进行到步骤S1012,其中无损压缩单元904对图像数据块执行无损压缩以形成压缩数据块。对图像数据块执行无损压缩的方法是本领域已知的。
在步骤S1014中,无损压缩单元904将指示存储在与压缩数据块相关联的标头中,以指示所述块已经用无损压缩技术压缩。在步骤S1016中,从压缩单元902输出无损压缩数据块,例如,以在存储器中存储。
在其他示例中,确定图像数据块的无损压缩是否将满足图像数据块的目标压缩比的步骤可以包括:对图像数据块执行无损压缩,以及确定对图像数据块执行无损压缩所获得的压缩数据量是否满足目标压缩比。这可以比尝试预测将由无损压缩产生的数据量而不完全执行无损压缩更简单,但它可能涉及执行比所必要的更多的操作,使得功耗和延时可能增加。
在一些示例中,图像数据块是表示图像的多个图像数据块中的一个,并且存在与整个图像相关的总图像目标压缩比。由于由无损压缩实现的压缩比将取决于被压缩的图像数据,因此图像数据块中的一些可以用超过该特定图像数据块的目标压缩比的压缩比来进行无损压缩。这样可能产生过剩的数据,所述过剩的数据可以用于表示与同一图像有关的其它压缩数据块。因此,可以根据已针对与相同图像有关的其它图像数据块形成的压缩数据量来修改(例如减小)图像数据块的目标压缩比,从而满足总图像目标压缩比。例如,如果与图像有关的先前图像数据块已经被无损压缩,实现了比块的目标压缩比更大的压缩比,则可以降低待压缩的与同一图像有关的后续图像数据块的目标压缩比,同时仍然满足总图像目标压缩比。这样可以允许对该图像的更大数量的图像数据块进行无损压缩(因此对该图像的更低数量的图像数据块进行有损压缩),因此可以减少由于有损压缩过程而引入到图像中的误差数量。换句话说,当与图像有关的一图像数据块以比图像数据块的目标压缩比更大的压缩比进行无损压缩时,通过允许修改(例如减小)与同一图像有关的另一图像数据块的目标压缩比,可以减轻由于有损压缩而导致的图像质量的降低。
图11示出了解压缩单元1102,其包括被配置成对压缩数据块执行无损解压缩的第一解压缩单元1104,被配置成对压缩数据块执行有损解压缩的第二解压缩单元(在此示例中是上文所描述的有损解压缩单元702),以及解压缩技术确定逻辑1106。解压缩单元1104和702以及解压缩技术确定逻辑1106可以在专用硬件,例如,固定功能电路中实施。
图12是使用解压缩单元1102对压缩数据块进行解压缩的方法的流程图。在步骤S1202中,解压缩单元1102接收待解压缩的压缩数据块。压缩数据块已经使用上述压缩单元902进行了压缩。
在步骤S1204中,解压缩技术确定逻辑1106读取与压缩数据块相关联的标头中的指示,其指示压缩数据块是以无损压缩技术还是以有损压缩技术压缩的。在步骤S1206中,解压缩技术确定逻辑1106使用从与压缩数据块相关联的标头读取的指示来确定压缩数据块是以无损压缩技术还是以有损压缩技术压缩的。
如果在步骤S1206中,确定压缩数据块是用无损压缩技术压缩的,则方法进行到步骤S1208,其中无损解压缩单元1104对压缩数据块执行无损解压缩技术,从而对压缩数据块进行解压缩。由无损解压缩单元1104使用的解压缩技术与由无损压缩单元904使用的无损压缩技术互补,使得无损解压缩单元1104可以正确地解压缩已被压缩单元904压缩的数据。用于执行无损解压缩的方法是本领域已知的。在步骤S1208之后,该方法进行至步骤S1212。
如果在步骤S1206中,确定压缩数据块是用有损压缩技术压缩的,则方法进行到步骤S1210,其中有损解压缩单元702对压缩数据块执行有损解压缩技术,从而对压缩数据块进行解压缩。可以如上文给出的示例所述来执行有损解压缩。
在步骤S1210之后,该方法进行至步骤S1212。在步骤S1212中,从解压缩单元1102输出解压缩图像数据块,例如用于在GPU 104中进一步处理。
在此“应变计划”系统中,当无损压缩满足目标压缩比时,使用无损压缩来压缩图像数据块,并且如果无损压缩不满足目标压缩比,则使用有损压缩来压缩图像数据块(由此保证实现压缩比)。当图像包括多个图像数据块时,图像中的图像数据块中的一些可以被无损压缩,而图像中的图像数据中的一些其它图像数据块可以被有损压缩。图像数据块的大小可以是任何合适的大小,例如如上文所描述的2x2图像数据块或某种其它大小和/或形状的图像数据块。
压缩单元和解压缩单元在本文中描述为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应理解,在本文中被描述为由压缩单元或解压缩单元形成的中间值不需要由压缩单元或解压缩单元在任何时间点物理地生成,并且可以仅仅表示方便地描述由压缩单元或解压缩单元在其输入与输出之间执行的处理的逻辑值。
如本文所述的压缩单元和解压缩单元可以包含在集成电路上的硬件中。本文所述的压缩单元和解压缩单元可被配置为执行本文所述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序代码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图包围限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中被处理(即运行)时,这种集成电路定义数据集将该系统配置为制造被配置为执行本文所述的任何方法的压缩单元和/或解压缩单元,或者制造包括本文所述的任何装置的压缩单元和/或解压缩单元。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统中制造如本文所述的压缩单元和/或解压缩单元的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集使得制造压缩单元和/或解压缩单元的方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图13描述在集成电路制造系统处处理集成电路定义数据集以便将该系统配置为制造压缩单元和/或解压缩单元的示例。
图13示出了集成电路(IC)制造系统1302的示例,该集成电路制造系统被配置为制造如本文的任一示例中所描述的压缩单元和/或解压缩单元。具体地,IC制造系统1302包括布局处理系统1304和集成电路生成系统1306。IC制造系统1302被配置为接收IC定义数据集(例如,定义如本文的任一示例中描述的压缩单元和/或解压缩单元),处理IC定义数据集,并根据IC定义数据集来生成IC(例如,其包含如本文的任一示例中描述的压缩单元和/或解压缩单元)。对IC定义数据集的处理将IC制造系统1302配置为制造包含如本文的任一示例中描述的压缩单元和/或解压缩单元的集成电路。
布局处理系统1304被配置成接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1304已经确定电路布局时,其可将电路布局定义输出到IC生成系统1306。电路布局定义可以是例如电路布局描述。
如本领域已知的,IC生成系统1306根据电路布局定义来生成IC。例如,IC生成系统1306可实现生成IC的半导体装置制造工艺,其可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统1306的电路布局定义可呈计算机可读代码的形式,IC生成系统1306可使用所述计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统1302执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统1302可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统处处理集成电路定义数据集可以将系统配置为制造压缩单元和/或解压缩单元,而不对IC定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,由集成电路制造定义数据集以上文关于图13所描述的方式对集成电路制造系统进行的配置可以制造如本文中所描述的装置。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图13所示的示例中,IC生成系统可以由集成电路定义数据集进一步配置成在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包括计算性能提高、延时缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

Claims (22)

1.一种根据多级差值表对图像数据块执行有损压缩的计算机实施的方法,其中,所述图像数据块包括多个图像元素值,其中,所述多级差值表的每个级别包括多个条目,所述方法包括:
确定所述图像数据块的起点值;
确定所述多级差值表内针对所述图像数据块的级别;
对于所述图像数据块中的每个图像元素值,在所述多级差值表内所确定的级别选择所述条目中的一个;以及
形成所述图像数据块的压缩数据块,所述压缩数据块包括:(i)表示所确定的起点值的数据,(ii)所确定的级别的指示,以及(iii)对于所述图像数据块中的每个图像元素值,为所述图像元素值选择的条目的指示。
2.根据权利要求1所述的方法,其中,对于所述多级差值表的不同级别,由级别中的条目表示的值域的大小不同。
3.根据任一项前述权利要求所述的方法,其中,所述确定所述图像数据块的起点值包括识别所述图像数据块中的最小图像元素值。
4.根据任一项前述权利要求所述的方法,其中,表示所确定的起点值的所述数据具有的位少于所述图像数据块中的所述图像元素值中的任一个。
5.根据任一项前述权利要求所述的方法,其中,所述确定所述多级差值表内针对所述图像数据块的级别包括:
确定所确定的起点值与所述图像数据块中的图像元素值中的任一个之间的最大差值;以及
从所述多级差值表中选择其最大条目最接近地表示所确定的最大差值的级别。
6.根据任一项前述权利要求所述的方法,其中,对于所述图像数据块中的所述图像元素值中的每一个,在所述多级差值表内的所确定的级别所述选择所述条目中的一个包括:
通过确定所确定的起点值和所述图像元素值之间的差值来确定所述图像元素值的差值;以及
从所述多级差值表的所确定的级别中选择最接近地表示所确定差值的条目。
7.根据任一项前述权利要求所述的方法,其中,所述多级差值表的每个级别中的第一条目表示零值。
8.根据任一项前述权利要求所述的方法,其中,用于表示所述压缩数据块的位数不取决于所述图像数据块中的所述图像元素值的值,从而保证所述有损压缩的压缩比。
9.根据任一项前述权利要求所述的方法,其中,所述图像元素值是整数格式,并且其中,通过以所述整数格式对所述图像元素值执行包括加法运算、减法运算和比较运算中的一个或多个的运算来压缩所述图像数据块,但是压缩所述图像数据块的所述方法不涉及执行任何乘法运算或除法运算。
10.根据任一项前述权利要求所述的方法,其中,所述图像数据块涉及多通道图像数据块的一个通道,其中,所述多通道图像数据的不同通道被独立地压缩。
11.根据权利要求10所述的方法,其中,所述多通道图像数据块是颜色值块的颜色数据,包括:(i)与所述颜色值块的红色通道有关的第一图像数据块,(ii)与所述颜色值块的绿色通道有关的第二图像数据块,以及(iii)与所述颜色值块的蓝色通道有关的第三图像数据块,并且其中,在独立压缩三个图像数据块之前,对所述颜色值执行颜色去相关。
12.根据权利要求10所述的方法,其中,所述多通道图像数据是呈RGB格式的颜色数据,使得每个颜色值包括红色值(R)、绿色值(G)和蓝色值(B),并且所述方法包括将所述颜色数据转换为亮度-色度格式,所述亮度-色度格式包括:(i)与颜色值块的亮度通道(Y)有关的第一图像数据块,(ii)与所述颜色值块的第一色度通道(Cb)有关的第二图像数据块,以及(iii)与所述颜色值块的第二色度通道(Cr)有关的第三图像数据块,
其中,在所述颜色数据已经被转换成所述亮度-色度格式之后,独立地压缩三个图像数据块。
13.一种压缩图像数据块的方法,包括:
确定所述图像数据块的无损压缩是否将满足所述图像数据块的目标压缩比;以及
如果确定所述图像数据块的所述无损压缩将不会满足所述目标压缩比,则对所述图像数据块执行根据任一项前述权利要求所述的有损压缩方法,其中,保证所述有损压缩的压缩比以满足所述图像数据块的所述目标压缩比。
14.根据权利要求13所述的方法,其中,如果确定所述图像数据块的所述无损压缩将满足所述目标压缩比,则对所述图像数据块执行所述无损压缩以形成压缩数据块。
15.根据权利要求13或14所述的方法,其中,所述确定所述图像数据块的无损压缩是否将满足所述图像数据块的目标压缩比包括:
预测对所述图像数据块执行所述无损压缩而获得的压缩数据量;以及
确定所述压缩数据的预测量是否满足所述目标压缩比。
16.根据权利要求13所述的方法,其中,所述确定所述图像数据块的无损压缩是否将满足所述图像数据块的目标压缩比包括:
对所述图像数据块执行所述无损压缩;以及
确定对所述图像数据块执行所述无损压缩所获得的所述压缩数据量是否满足所述目标压缩比。
17.根据权利要求13至16中任一项所述的方法,其中,所述图像数据块是表示图像的多个图像数据块中的一个,其中,存在与整个图像相关的总图像目标压缩比,并且其中,所述方法包括根据已针对与同一图像有关的其他图像数据块形成的所述压缩数据量来修改所述图像数据块的所述目标压缩比,使得满足所述总图像目标压缩比。
18.一种压缩单元,所述压缩单元被配置成根据多级差值表对图像数据块执行有损压缩,其中,所述图像数据块包括多个图像元素值,其中,所述多级差值表的每个级别包括多个条目,所述压缩单元包括:
起点值确定逻辑,所述起点值确定逻辑被配置成确定所述图像数据块的起点值;
级别确定逻辑,所述级别确定逻辑被配置成确定所述多级差值表内针对所述图像数据块的级别;
条目选择逻辑,所述条目选择逻辑被配置成对于所述图像数据块中的每个图像元素值,在所述多级差值表内所确定的级别选择所述条目中的一个;以及
压缩块形成逻辑,所述压缩块形成逻辑被配置成形成所述图像数据块的压缩数据块,所述压缩数据块包括:(i)表示所确定的起点值的数据,(ii)所确定的级别的指示,以及(iii)对于所述图像数据块中的每个图像元素值,为所述图像元素值选择的条目的指示。
19.一种压缩单元,所述压缩单元被配置成压缩图像数据块,所述压缩单元包括:
被配置成对图像数据块执行无损压缩的第一压缩单元;
被配置成对图像数据块执行有损压缩的根据权利要求18所述的第二压缩单元;以及
压缩技术确定逻辑,所述压缩技术确定逻辑被配置成确定由所述第一压缩单元执行的所述图像数据块的无损压缩是否将满足所述图像数据块的目标压缩比,
其中,所述压缩技术确定逻辑被配置成,如果确定所述图像数据块的所述无损压缩将不会满足所述目标压缩比,则使所述第二压缩单元对所述图像数据块执行有损压缩,其中,保证所述有损压缩的压缩比以满足所述图像数据块的所述目标压缩比。
20.一种使用集成电路制造系统制造根据权利要求18或19所述的压缩单元的方法,所述方法包括:
使用布局处理系统处理所述压缩单元的计算机可读描述,以便生成包含所述压缩单元的集成电路的电路布局描述;以及
使用集成电路生成系统,根据所述电路布局描述制造所述压缩单元。
21.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读代码,所述计算机可读代码被配置成在运行所述代码时使得根据权利要求1至17中任一项所述的方法被执行。
22.一种计算机可读存储介质,所述计算机可读存储介质上存储有集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时,配置所述集成电路制造系统以制造根据权利要求18或19所述的压缩单元。
CN202110316254.4A 2020-03-26 2021-03-24 图像数据压缩 Pending CN113452994A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2004420.2A GB2593523B (en) 2020-03-26 2020-03-26 Image data compression
GB2004420.2 2020-03-26

Publications (1)

Publication Number Publication Date
CN113452994A true CN113452994A (zh) 2021-09-28

Family

ID=70553374

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110316254.4A Pending CN113452994A (zh) 2020-03-26 2021-03-24 图像数据压缩

Country Status (4)

Country Link
US (1) US20210304446A1 (zh)
EP (1) EP3896656A1 (zh)
CN (1) CN113452994A (zh)
GB (1) GB2593523B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2619573A (en) * 2022-12-07 2023-12-13 Imagination Tech Ltd Image data compression

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6915014B1 (en) * 1990-07-31 2005-07-05 Canon Kabushiki Kaisha Image processing apparatus and method
US5150208A (en) * 1990-10-19 1992-09-22 Matsushita Electric Industrial Co., Ltd. Encoding apparatus
JP2876258B2 (ja) * 1991-01-23 1999-03-31 株式会社リコー デジタル電子スチルカメラ
JPH06125533A (ja) * 1992-10-13 1994-05-06 Sony Corp エラー訂正コード付加装置及びエラー訂正装置
US5850261A (en) * 1992-10-15 1998-12-15 Sony Corporation Efficient variable length encoder and decoder
US7190284B1 (en) * 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US6256347B1 (en) * 1996-12-17 2001-07-03 Thomson Licensing S.A. Pixel block compression apparatus in an image processing system
US6621934B1 (en) * 1996-12-17 2003-09-16 Thomson Licensing S.A. Memory efficient compression apparatus in an image processing system
US6704455B1 (en) * 1997-05-29 2004-03-09 Ricoh Company, Ltd. Image processing system and image processing method
JP3750128B2 (ja) * 1997-12-09 2006-03-01 ソニー株式会社 画像復号装置および画像復号方法、並びに、画像処理装置および画像処理方法
EP1124384A1 (en) * 2000-02-10 2001-08-16 Sony Corporation Information processing apparatus for compressed image data using class-classification adaptive processing
US20070132860A1 (en) * 2000-04-14 2007-06-14 Prabhu Girish V Method for customizing a digital camera using queries to determine the user's experience level
US6983017B2 (en) * 2001-08-20 2006-01-03 Broadcom Corporation Method and apparatus for implementing reduced memory mode for high-definition television
US7003167B2 (en) * 2001-11-01 2006-02-21 Hewlett-Packard Development Company, L.P. Single-pass guaranteed-fit data compression using rate feedback
JP2004198760A (ja) * 2002-12-19 2004-07-15 Fuji Xerox Co Ltd 圧縮暗号化装置及び伸長復号化装置
JP4337911B2 (ja) * 2007-05-24 2009-09-30 ソニー株式会社 撮像装置、撮像回路、および撮像方法
EP2081155B1 (en) * 2008-01-21 2011-11-16 Telefonaktiebolaget LM Ericsson (publ) Prediction-based image processing
US8379715B2 (en) * 2009-08-27 2013-02-19 Nxp B. V. System and method for video compression using non-linear quantization and modular arithmetic computation
US8855432B2 (en) * 2012-12-04 2014-10-07 Sony Corporation Color component predictive method for image coding
US9621764B2 (en) * 2013-07-31 2017-04-11 Hewlett-Packard Development Company, L.P. Printer cartridge and memory device containing a compressed color table
GB2545503B (en) * 2015-12-18 2020-04-08 Imagination Tech Ltd Lossy data compression
US10019836B2 (en) * 2016-05-27 2018-07-10 Intel Corporation Planar depth representations for block compression
TWI593272B (zh) * 2016-06-04 2017-07-21 晨星半導體股份有限公司 壓縮影像資料的方法及影像資料壓縮系統
EP3556097B1 (en) * 2016-12-19 2021-12-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Image coding using a subband dependent prediction adaption for gcli entropy coding
GB2575122B (en) * 2018-06-29 2021-12-01 Imagination Tech Ltd Mapping an n-bit number to an m-bit number
GB2593522B (en) * 2020-03-26 2023-02-22 Imagination Tech Ltd Image data decompression

Also Published As

Publication number Publication date
GB2593523B (en) 2023-06-14
EP3896656A1 (en) 2021-10-20
US20210304446A1 (en) 2021-09-30
GB2593523A (en) 2021-09-29
GB202004420D0 (en) 2020-05-13

Similar Documents

Publication Publication Date Title
EP3886047A1 (en) Image data decompression
CN110662066B (zh) 有保证的数据压缩
CN110662049A (zh) 有保证的数据压缩
CN112422981B (zh) 图像数据压缩
US20220256164A1 (en) Data Compression and Packing
EP3896656A1 (en) Image data compression
US20220256178A1 (en) Data Decompression and Packing
US20230334707A1 (en) Data compression and decompression
GB2619574A (en) Image data decompression
GB2619573A (en) Image data compression
CN116896387A (zh) 数据压缩和解压缩

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