使用受控质量损失的图像压缩和解压缩的制作方法

文档序号:22627486发布日期:2020-10-23 19:36阅读:112来源:国知局
使用受控质量损失的图像压缩和解压缩的制作方法

相关申请的交叉引用

本公开要求于2018年2月17日提交的美国临时申请第62/631,725号的权益,其公开内容通过引用全部并入本文。

图像内容表示大量的在线内容。网页可以包括多个图像,并且花费在渲染网页上的大部分时间和资源专用于渲染那些图像以进行显示。接收和渲染用于显示的图像所需的时间和资源量部分取决于图像的压缩方式。这样,可以通过使用压缩和解压缩技术减小图像的总数据大小来更快地渲染图像以及因此包括该图像的网页。



背景技术:

一种根据本公开的实施方式的用于压缩图像的方法包括:接收表示用于压缩图像的最大量化误差的误差级定义,并且识别在图像的区域内的用于量化的变换系数以。基于误差级定义选择质量控制度量序列以控制变换系数的量化。通过根据误差级定义和质量控制度量序列量化变换系数的第一副本来确定第一候选比特成本。通过根据修改误差级和质量控制度量序列量化变换系数的第二副本来确定第二候选比特成本。关于第二候选比特成本是否低于第一候选比特成本做出确定。响应于确定第二候选比特成本低于第一候选比特成本,根据修改误差级和质量控制度量序列来迭代地处理变换系数,以产生量化变换系数。基于量化变换系数产生压缩图像。

在该方法的一些实施方式中,根据修改误差级和质量控制度量序列来迭代地处理变换系数以产生量化变换系数包括:使用质量控制度量序列中的第一质量控制度量来量化变换系数。使用第一质量控制度量量化变换系数会导致量化误差。关于量化误差超过与第一质量控制度量相关联的质量分数校准做出确定。响应于确定量化误差超过质量分数校准,使用质量控制度量序列中的第二质量控制度量来进一步量化变换系数。

在该方法的一些实施方式中,图像的区域是第一区域且质量控制度量序列是第一质量控制度量序列,并且该方法进一步包括:使用第二质量控制度量序列来迭代地处理图像的第二区域的变换系数。

在该方法的一些实施方式中,修改误差级是第一修改误差级,并且使用第二质量控制度量序列来迭代地处理图像的第二区域的变换系数包括:通过根据第二修改误差级和第二质量控制度量序列量化图像的第二区域的变换系数来确定候选比特成本。

在该方法的一些实施方式中,选择质量控制度量序列以控制变换系数的量化包括:基于误差级定义来查询查找表。

在该方法的一些实施方式中,查找表包括与多个质量控制度量相关联的记录,并且选择质量控制度量序列以控制变换系数的量化包括:确定多个质量控制度量的子集与超过误差级定义的误差级相关联,并且从质量控制度量序列中排除多个质量控制度量的子集中的一个或多个质量控制度量。

在该方法的一些实施方式中,响应于确定第二比特成本不低于第一比特成本,根据误差级定义和质量控制度量序列来迭代地处理变换系数,以产生量化变换系数。

在该方法的一些实施方式中,由修改误差级表示的量化误差大于最大量化误差。

一种根据本公开的实施方式的用于压缩图像的装置包括处理器和存储器。处理器被配置为执行存储在存储器中的指令,该指令用于:接收表示用于压缩图像的最大量化误差的误差级定义,选择质量控制度量序列以基于误差级定义控制图像的变换系数的量化,根据误差级定义和质量控制度量序列来压缩图像,并且输出压缩图像以进行存储或显示。用于根据误差级定义和质量控制度量序列来压缩图像的指令包括用于使用质量控制度量序列中的第一质量控制度量来量化变换系数的指令。做出由使用第一质量控制度量来量化变换系数而导致的量化误差超过与第一质量控制度量相关联的质量分数校准的确定。响应于确定量化误差超过质量分数校准,使用质量控制度量序列中的第二质量控制度量来进一步量化变换系数,以产生量化变换系数。基于量化变换系数产生压缩图像。

在该装置的一些实施方式中,该指令包括用于通过根据误差级定义和质量控制度量序列量化变换系数的第一副本来确定第一候选比特成本,并且通过根据修改误差级和质量控制度量序列量化变换系数的第二副本来确定第二候选比特成本的指令。然后基于第一候选比特和第二候选比特成本来做出确定根据误差级定义或修改误差级中的一个来压缩图像。

在该装置的一些实施方式中,用于确定根据误差级定义或修改误差级中的一个来压缩图像的指令包括用于确定第二候选比特成本是否低于第一候选比特成本的指令,并且该指令包括用于以下操作的指令:响应于确定第二候选比特成本低于第一候选比特成本,根据修改误差级和质量控制度量序列来压缩图像;以及,响应于确定第二候选比特成本不低于第一候选比特成本,根据误差级定义和质量控制度量序列来压缩图像。

在该装置的一些实施方式中,量化变换系数是第一量化变换系数且量化误差是第一量化误差,修改误差级对应于图像的区域,并且用于根据修改误差级和质量控制度量序列来压缩图像的指令包括用于使用质量控制度量序列中的第一质量控制度量来量化变换系数的子集的指令。变换系数的子集位于图像的区域内。做出由使用第一质量控制度量来量化变换系数的子集而导致的第二量化误差超过与第一质量控制度量相关联的质量分数校准的确定。响应于确定第二量化误差超过质量分数校准,使用质量控制度量序列中的第二质量控制度量来进一步量化变换系数,以产生第二量化变换系数。基于第二量化变换系数产生压缩图像。

在该装置的一些实施方式中,由修改误差级表示的量化误差大于最大量化误差。

在该装置的一些实施方式中,修改误差级是第一修改误差级,变换系数的第二副本对应于位于图像的第一区域内的变换系数的第一子集,并且该指令包括用于通过根据第二修改误差级和质量控制度量序列量化位于图像的第二区域内的变换系数的第二子集来确定第三候选比特成本的指令。用于根据误差级定义和质量控制度量序列来压缩图像的指令包括用于根据第一修改误差级压缩变换系数的第一子集,并且根据第二修改误差级压缩变换系数的第二子集的指令。

在该装置的一些实施方式中,用于选择质量控制度量序列以控制图像的变换系数的量化的指令包括用于确定可用于压缩图像的质量控制度量的子集与超过误差级定义的误差级相关联,并且从质量控制度量序列中排除质量控制度量的子集中的一个或多个质量控制度量的指令。

一种根据本公开的实施方式的非暂时性计算机可读存储介质包括处理器可执行例程,该处理器可执行例程在由处理器执行时帮助执行用于压缩图像的操作。该操作包括:选择质量控制度量序列以控制图像的变换系数的量化。该操作进一步包括:根据误差级定义和质量控制度量序列来迭代地处理位于图像的第一区域内的变换系数的第一子集,以产生第一量化变换系数。该操作进一步包括:根据修改误差级和质量控制度量序列来迭代地处理位于图像的第二区域内的变换系数的第二子集,以产生第二量化变换系数。该操作进一步包括:基于第一量化变换系数和第二量化变换系数来产生压缩图像。

在该非暂时性计算机可读存储介质的一些实施方式中,质量控制度量序列定义了用于应用一个或多个质量控制度量以迭代地量化图像的变换系数中的一些或所有的顺序。

在该非暂时性计算机可读存储介质的一些实施方式中,误差级定义表示用于压缩图像的最大误差级,并且用于选择质量控制度量序列以控制图像的变换系数的量化的操作包括:确定可用于压缩图像的质量控制度量的子集与超过误差级定义的误差级相关联,并且从质量控制度量序列中排除质量控制度量的子集中的一个或多个质量控制度量。

在该非暂时性计算机可读存储介质的一些实施方式中,用于根据误差级定义和质量控制度量序列来迭代地处理位于图像的第一区域内的变换系数的第一子集以产生第一量化变换系数的操作包括:使用质量控制度量序列中的第一质量控制度量来量化变换系数的第一子集。使用第一质量控制度量量化变换系数的第一子集会导致量化误差。做出量化误差超过与第一质量控制度量相关联的质量分数校准的确定。响应于确定量化误差超过质量分数校准,使用质量控制度量序列中的第二质量控制度量来进一步量化变换系数的第一子集。

在该非暂时性计算机可读存储介质的一些实施方式中,用于根据误差级定义和质量控制度量序列来迭代地处理位于图像的第一区域内的变换系数的第一子集以产生第一量化变换系数的操作包括:根据误差级定义和质量控制度量序列来迭代地处理位于图像的第二区域内的变换系数的第二子集以产生第三量化变换系数。做出关于第二量化变换系数的比特成本是否低于第三量化系数的比特成本的确定。响应于确定第二量化变换系数的比特成本不低于第三量化系数的比特成本,使用第三量化系数而不是第二量化系数来产生压缩图像。

将了解,上面关于一个实施方式描述的特征可以与另一实施方式的特征组合。

附图说明

当结合附图阅读时,通过以下详细描述来最好地理解本公开。要强调的是,根据惯例,附图的各种特征未按比例绘制。相反,为了清晰起见,任意地扩大或减小各种特征的尺寸。

图1是图像压缩和解压缩系统的图。

图2是可以在图像压缩和解压缩系统中使用的计算设备的内部配置的示例。

图3是图像压缩器和图像解压缩器的示例的框图。

图4是用于根据所选择的误差级和质量控制度量序列来压缩图像的技术的示例的流程图。

图5是用于使用质量控制度量序列来迭代地处理图像的技术的示例的流程图。

图6是使用质量控制度量序列来迭代地处理的图像区域的图示。

具体实施方式

有损图像压缩涉及诸如使用量化来减少要压缩的图像内的数据量。作为减少所得到的压缩图像的比特成本的交换,图像遭受了一定的质量损失。质量损失的程度在很大程度上取决于在压缩期间量化图像数据的方式。某种量化策略可能在一定范围内有效,但在其他范围内却无效。例如,jpeg压缩格式允许对高质量图像进行相对有效的代码化,但是当将其量化策略用于较低质量的图像时,可能会产生不期望的伪像。

典型的图像压缩格式得出用于控制整个图像的图像质量损失的量化策略。使用用于评估质量损失的度量来得出量化策略,所述度量的示例包括峰值信噪比(psnr)、人类视觉系统(hvs)、psnr和hvs的组合(psnrhvs)以及该组合的掩蔽版本(psnrhvs-m)。这些度量被设计为沿着质量损失曲线线性地测量给定点的图像质量。这样,将使用这些度量中的一个评估的图像质量损失外推到整个图像上。因此,即使使用多个模型评估质量损失,也将相同的模型应用于整个图像。然而,由于图像的不同区域包括不同的图像内容,因此线性图像质量测量的使用是次优的。

此外,通过典型的图像压缩格式得出的量化策略不限于特定的量化误差。由有损图像压缩导致的量化误差对应于由压缩导致的伪像量。这样,量化误差越大,伪像量越多,因此质量损失也越大。然而,可能期望将有损图像压缩限制为特定的量化误差值,诸如以控制稍后将解压缩并输出以进行显示的图像质量。

本公开的实施方式通过使用模型或质量控制度量序列控制图像质量在压缩期间的损失来解决诸如这些的问题。选择质量控制度量序列以根据表示要从压缩变换系数导致的最大量化误差的误差级定义来量化图像的局部区域内的变换系数。根据误差级定义和质量控制度量序列来迭代地处理变换系数,以产生量化变换系数。

在一些情况下,可以通过根据误差级定义和质量控制度量序列或根据修改误差级和质量控制度量序列量化变换系数来确定候选比特成本。在由使用修改误差级而导致的候选比特成本低于由使用误差级定义而导致的候选比特成本的情况下,根据修改误差级和质量控制度量序列来量化变换系数。否则,根据误差级定义和质量控制度量序列来量化变换系数。

本公开的实施方式描述了整体形式体系,其允许沿着最小破坏路径的图像质量退化。将质量控制度量序列应用于图像内的变换系数,以测量图像损失。基于所测量的图像损失,图像的压缩可以遵循非线性曲线,其中,比特成本和质量损失都被最小化。

本文首先参照可以实施这种技术的系统来描述用于使用受控质量损失进行图像压缩和解压缩的技术的其他细节。图1是图像压缩和解压缩系统100的图。图像压缩和解压缩系统100包括发送站102、接收站104和网络106。

发送站102是压缩并发送图像的计算设备。可替代地,发送站102可以包括用于压缩和发送图像的两个或多个分布式设备。接收站104是接收并解压缩压缩图像的计算设备。可替代地,接收站104可以包括用于接收和解压缩压缩图像的两个或多个分布式设备。下面关于图2描述用于实施发送站102或接收站104中的一个或两个的计算设备的示例。

网络106连接发送站102和接收站104以进行图像的压缩、传输、接收和解压缩。网络106可以是例如互联网。网络106也可以是局域网(lan)、广域网(wan)、虚拟专用网络(vpn)、蜂窝电话网络或者将图像从发送站102传递到接收站104的另一装置。

压缩和解压缩系统100的实施方式可能与关于图1示出和描述的实施方式不同。在一些实施方式中,压缩和解压缩系统100可以省略网络106。在一些实施方式中,可以压缩图像,然后将其存储以用于在稍后的时间的到接收站104或具有存储器的另一设备的传输。在一些实施方式中,接收站104可以接收(例如,经由网络106、计算机总线和/或某个通信路径)压缩图像并存储该压缩图像以用于稍后的解压缩。

在一些实施方式中,发送站102和接收站104的功能性可以基于所执行的特定操作而改变。例如,在用于压缩图像的操作期间,发送站102可以是用于上传用于压缩的图像到服务器的计算设备,并且接收站104可以是从发送站102接收图像并压缩图像以供稍后(例如,在渲染网页时)使用的服务器。在另一示例中,在用于对压缩图像进行解压缩的操作期间,发送站102可以是对压缩图像进行解压缩的服务器,并且接收站104可以是从发送站102接收解压缩图像并渲染解压缩图像(例如,作为网页的一部分)的计算设备。

图2是可以在图像压缩和解压缩系统——例如,图1所示的图像压缩和解压缩系统100——中使用的计算设备200的内部配置的示例。计算设备200可以例如实施发送站102或接收站104中的一个或两个。计算设备200可以是包括多个计算设备的计算系统的形式或者是一个计算设备的形式,例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。

计算设备200中的处理器202可以是传统的中央处理单元。可替代地,处理器202可以是现有的或此后开发的另一类型的设备或多个设备,其能够操纵或处理信息。例如,尽管所公开的实施方式可以用所示的一个处理器(例如,处理器202)来实践,但是可以通过使用一个以上的处理器来实现速度和效率上的优势。

在实施方式中,计算设备200中的存储器204可以是只读存储器(rom)设备或随机存取存储器(ram)设备。然而,其他合适类型的存储设备可以用作存储器204。存储器204可以包括由处理器202使用总线212访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括至少一个程序,该程序允许处理器202执行本文描述的技术。例如,应用程序210可以包括应用1至n,其进一步包括执行本文描述的一些或所有技术的图像压缩和/或解压缩软件。计算设备200还可以包括辅助存储214,其可以是例如与移动计算设备一起使用的存储器卡。例如,图像可以全部或部分地存储在辅助存储214中,并根据需要加载到存储器204中以进行处理。

计算设备200还可以包括一个或多个输出设备,诸如,显示器218。在一个示例中,显示器218可以是将显示器与可操作以感测触摸输入的触敏元件组合的触敏显示器。显示器218可以经由总线212耦合至处理器202。除了显示器218之外或作为显示器218的替代,可以提供允许用户编程或以其他方式使用计算设备200的其他输出设备。当输出设备是显示器或包括显示器时,可以以各种方式实施显示器,包括作为液晶显示器(lcd)、阴极射线管(crt)显示器或发光二极管(led)显示器,诸如,有机led(oled)显示器。

计算设备200还可以包括图像感测设备220或者现有的或此后开发的可以感测诸如操作计算设备200的用户图像的图像的另一图像感测设备或者与其通信,所述图像感测设备220例如是相机。图像感测设备220可以被定位为使得它朝向操作计算设备200的用户。例如,图像感测设备220的位置和光轴可以被配置为使得视野包括与显示器218直接相邻的区域,并且从该区域可看到显示器218。

计算设备200还可以包括声音感测设备222或者现有的或此后开发的可以感测计算设备200附近的声音的另一声音感测设备,或者与其通信,所述声音感测设备222例如是麦克风。声音感测设备222可以被定位为使得它朝向操作计算设备200的用户,并且可以被配置为在用户操作计算设备200时接收用户发出的声音,例如,语音或其他话语。

计算设备200的实施方式可以与关于图2示出和描述的实施方式不同。在一些实施方式中,处理器202的操作可以分布在可以直接耦合或者跨局域网或其他网络耦合的多个机器(其中,单个机器可以具有一个或多个处理器)上。在一些实施方式中,存储器204可以分布在多个机器上,诸如,基于网络的存储器或执行计算设备200的操作的多个机器中的存储器。在一些实施方式中,计算设备200的总线212可以由多个总线组成。在一些实施方式中,辅助存储214可以直接耦合至计算设备200的其他组件或者可以经由网络访问,并且可以包括诸如存储器卡的集成单元或诸如多个存储器卡的多个单元。

图3是图像压缩器300和图像解压缩器302的示例的框图。图像压缩器300和图像解压缩器302例如可以分别使用图1所示的发送站102和接收站104来实施。图像压缩器300压缩输入图像304以产生压缩图像306。图像解压缩器302接收并解压缩压缩图像306以产生与输入图像304可感知地相同或类似的输出图像308。

图像压缩器300包括变换和量化机制310、退化机制312和心理视觉建模机制314。变换和量化机制310将输入图像304的块变换到频域中,并量化所得到的变换系数。例如,变换和量化机制310可以使用离散余弦变换(dct)来将输入图像304的块从空间域变换到频域。可替代地,变换和量化机制310可以使用另一傅里叶相关变换或离散傅里叶变换来将输入图像304的块从空间域变换到频域。

如下面将讨论的,心理视觉建模机制314和退化机制312用于确定在压缩期间如何减少输入图像304中的数据量。变换和量化机制310根据使用心理视觉建模机制314和退化机制312做出的确定来量化变换系数。

退化机制312做出用于使用质量控制度量来量化输入图像304的区域的决策。具体地,退化机制312针对输入图像304的不同区域做出不同的量化决策。使用这些不同的量化决策允许输入图像304的压缩遵循非线性质量损失曲线(例如,与在针对整个输入图像304做出单个量化决策时使用的线性质量损失曲线相反)。即,尽管可以线性地表达图像的给定区域的质量损失,但是整体上非线性地表达图像的总体质量损失。

图像的区域是指图像的mxn大小的区,其中,m和n可以是相同或不同的值。例如,图像的区域可以是图像内的单个块(例如,8x8块)。在另一示例中,图像的区域可以是图像内的多个块。在再一示例中,要压缩的图像的不同区域可以是不同大小的块(例如,一些8x8,一些4x4,一些16x16等)。

质量控制度量是指用于在减少、去除或以其他方式修改某些图像内容之后评估图像质量的模型。质量控制度量通过确定应用于图像的量化的质量分数来评估图像的质量。可以重构量化变换系数以产生解压缩图像。质量控制度量使用参数化模型来将该解压缩图像与原始图像(例如,输入图像304)进行比较。比较的结果反映了量化对图像造成的可感知的质量损失的程度。质量分数提供了对比较的结果的估值。每个质量控制度量可以使用相同或不同的参数来对解压缩图像和原始图像之间的质量损失进行建模。

根据被定义用于与图像压缩器300一起使用的误差级来以特定序列应用质量控制度量,以优化输入图像304中的数据量的减少。应用质量控制度量指的是通过以某种方式量化图像的变换系数来测量质量损失。可能有许多质量控制度量可用于处理输入图像304。质量控制度量序列定义了用于应用一个或多个质量控制度量来迭代地量化输入图像304内(例如,整个输入图像304内或输入图像304的区域内)的一些或所有变换系数的顺序。

质量控制度量的示例可以包括但不限于原始(pristine)图像质量控制度量、高信息密度纹理质量控制度量中的相位损失、结构类似性(ssim)质量控制度量、卡通图像质量控制度量、色损质量控制度量、视距损失质量控制度量、每比特较少像素质量控制度量、胶片颗粒和/或数字噪声保留质量控制度量、色差质量控制度量和纹理聚类质量控制度量。

利用原始质量控制度量,即使在原状翻转测试中,也无法将再现与原版区分开。这种测量包括图像纹理的相位相干表示、脊线和边缘检测、视觉掩蔽、最小均方(lms)颜色建模以及其他建模。

视觉掩蔽允许以不同的准确度(例如,多达量化差的六倍)存储图像的不同区域。这是因为视觉掩蔽的较暗区域要求对细节进行不太精确的再现。存在原始质量控制度量可以使用一个或多个掩蔽模型。例如,第一掩蔽模型可以用于低空间频率颜色建模,并且第二掩蔽模型可以用于高空间频率颜色建模。第一掩蔽模型和第二掩蔽模型可以单独地或组合地应用。

利用高信息密度纹理质量控制度量中的相位损失,基于图像纹理将图像压缩为卡通(例如,使用高斯混合模型)。在loggabor空间中压缩具有密集信息内容的纹理,其中,对频率进行聚类并且对相位进行随机化。例如,砖房的图像可能会使用大量信息来表示每个砖块的确切位置。在这种情况下,由于每个砖块的确切位置对于人类观看者来说不是必要信息,因此可以将图像压缩为没有每个位置中的砖块的结构。然后,可以将砖块建模为压缩结构内的纹理以创建砖房的外观,而无需花费比特来指定砖块的位置。可以在其他上下文中应用相同的原理,例如,使用纹理表示海滩上的沙子。

利用ssim质量控制度量,ssim被用于通过其近似的噪声级保留高信息密度纹理。从噪声合成过程中重构噪声级,以再现匹配的平均值和方差。ssim在重构图像中创建与原始图像相同量的噪声和蚀刻的视觉。然而,该系统可能并不总是识别准确的噪声表示。例如,如果原始图像中有细线,则使用ssim可能会导致具有类似方差的不同对象。

利用卡通图像质量控制度量,关于图像的材料信息消失了,但是保留了边缘和平均颜色,使得图像看起来经过了中值滤波。(例如,树叶、石头、布料、皮肤、头发的)纹理的精细细节丢失了,并且由于该变换而可能具有塑料般的外表。

利用色损质量控制度量,颜色信息以平衡颜色的种类和以该颜色表示的特征的空间分辨率的方式丢失。该损失类似于yuv420损失,但在适当的颜色空间中执行以避免可见的伪像。首先可以去除高频蓝黄轴颜色,接着去除高频绿红轴颜色。使用该质量控制度量可能会导致平坦外观。

利用视距损失质量控制度量,较低比特率所需的增加的损失被认为是与远离图像移动的人相匹配的事物。所得到的差异几乎不能注意到,并用于代码化。例如,用于压缩图像的(例如,图3所示的心理视觉建模机制314的)心理视觉建模通常可以在1,000像素的距离处比较原始图像和重构图像。然而,当距离改变时(例如,从1,000像素到2,000像素),可能会观察到进一步的质量损失。

利用每比特较少像素质量控制度量,较少像素而不是每像素较少比特也会导致更少的字节要传递。当使用较少像素会导致更好的图像质量时,它指示当用户请求极大损失时如何以及何时选择使用较少像素。通过这种方式,即使在较低的分辨率下,所得到的图像也可以具有更好的总体质量。

利用胶片颗粒和/或数字噪声保留质量控制度量,图像的颗粒或噪声区域得以保留。这些区域可以通过在其系数上使用一致的量化来保留。

利用色差质量控制度量,从图像中去除了色差和其他类似的空间相关性。通常在图像中,红色和绿色数据会彼此偏移。例如,当图像中相对于黑色背景存在物体时,可能会感知到一侧有轻微的红色眩光,而另一侧有轻微的绿色眩光。这种眩光需要比特来进行存储。去除诸如这些眩光等色差(例如,通过计算红色信号的偏移以与绿色信号相匹配)会导致较低的比特成本。

利用纹理聚类质量控制度量,可以在快速傅里叶变换(fft)空间中将纹理和纹理的旋转不变模型压缩为聚类。针对已经分离了卡通和纹理模型的图像,该质量控制度量可能特别有效。

退化机制312可以根据表示要从压缩输入图像304导致的最大量化误差的误差级定义来使输入图像304退化。例如,最大量化误差可以指代由压缩输入图像304导致的视觉伪像的数目或量。误差级定义可以反映默认值、根据图像压缩器300的用户接收的输入进行配置或者基于输入图像304的特性确定(例如,使用针对输入图像304执行的预处理的结果来确定其分辨率或文件大小)。

每个质量控制度量可以与误差级或误差级范围相关联。在这种情况下,将仅考虑与为压缩图像而定义的误差级定义相关联的质量控制度量以进行选择。与质量控制度量相关联的数据可以存储在查找表(lut)中。可以基于误差级定义查询lut。因此,查询结果可以包括可用于根据误差级定义压缩图像的质量控制度量。

退化机制312包括用于基于误差级定义对输入图像304进行比特预算压缩的功能性。退化机制312使用误差级定义根据质量控制度量来识别通过减少输入图像304的数据而节省的比特数目。然而,退化机制312也可以使用量化误差值而不是误差级定义根据质量控制度量来识别通过减少输入图像304的数据而节省的比特数目。这种比特预算技术是在输入图像304的区域处局部执行的,而不是针对整个输入图像304全局执行的。

用于图像退化的比特预算可以包括通过根据误差级定义对图像中的所有变换系数进行量化来产生全局量化的图像。单独地,可以以不同的误差级对位于图像的不同区域中的变换系数进行量化。将通过以不同的误差级(此后称为修改误差级)对图像的给定区域进行量化而节省的比特数目与通过对全局量化图像中的对应区域进行量化而节省的比特数目进行比较。在通过以修改误差级进行量化而节省的比特数目大于通过以误差级定义进行量化而节省的比特数目的情况下,将修改误差级用于压缩图像的对象区域。否则,将误差级定义用于压缩图像的主题区域。

例如,误差级定义可以被设置为1.3。使用处于误差级1.3的给定质量控制度量,退化机制312可以量化输入图像304的区域内的变换系数,以导致0.5比特的比特节省。然而,使用相同的质量控制度量,但是以1.4的修改误差级,退化机制312可以确定量化那些相同的变换系数会导致7比特的比特节省。给定比特节省的增加,退化机制312使用误差级1.4来使输入图像304的该区域退化。

心理视觉建模机制314使用感知距离度量来指导压缩优化。心理视觉建模机制314包括用于基于输入图像304的可感知质量来处理输入图像304的软件规则。心理视觉建模机制314的软件规则专注于视觉的三个属性:第一,伽玛校正不应单独适用于每个红绿蓝(rgb)通道;第二,蓝色数据中的高频变化可能被不太精确地压缩;以及第三,图像内包括较大视觉噪声量的区域可能被不太精确地压缩。

视觉的第一属性由人眼视锥的敏感度光谱的重叠来驱动。例如,因为看到的黄光的量与对蓝光的敏感度之间存在某种关系,所以可以不太精确地压缩黄色数据附近的蓝色数据的变化。亮度色度(yuv)颜色空间被定义为伽玛压缩rgb的线性变换,因此不够强大来对这种现象进行建模。

视觉的第二属性由人眼视网膜的颜色受体驱动。具体地,人眼在蓝色中具有低于在红色和绿色中的空间分辨率,而在高分辨率区域中,视网膜几乎没有蓝色受体。

视觉的第三属性是基于可见性和近端视觉活动之间的关系定义的。即,图像区域中的精细结构的可见性可以取决于该区域附近的视觉活动量。

尽管参照视觉的三个属性描述了心理视觉建模机制314的软件规则,但是其他数目的视觉属性、与图像压缩或图像可感知性有关的其他规则或其组合可以用于定义或以其他方式配置心理视觉建模机制314的软件规则。

退化机制312与心理视觉建模机制314结合使用,以减小输入图像304的总数据大小,而不会影响输入图像304的受误差级定义的影响的感知视觉质量。例如,可以结合使用心理视觉建模机制314定义的阈值来处理退化机制312。该阈值可以表示输入图像304的颜色数据和使用退化机制312产生的压缩图像的最大可接受感知距离。可替代地,该阈值可以表示这种颜色数据的可接受感知距离的范围。

此外,数据减少的特定类型可以是非线性的。例如,在一些情况下,高频蓝色数据可以完全去除,因为中央凹的受体无法感知。然而,当红色和绿色数据不存在时,中央凹的红色和绿色受体可能会感知到蓝色数据。这样,质量控制度量可以反映当红色和绿色数据的值较高时(例如,当它们满足阈值时),而不是当红色数据的值和/或绿色数据的值较低时(例如,当它们不满足阈值时),可以减少或去除高频蓝色数据。

压缩图像306可以被存储在服务器处(例如,数据库或类似的数据存储库中),以用于稍后的检索和解压缩。例如,压缩图像306可以是网站上托管的图像或提供用于在网页上显示的图像。图像解压缩器302从存储或存储器中检索压缩图像306,并将其解压缩以产生输出图像308。由于输入图像304的压缩是有损的,因此输出图像308可能看起来与输入图像304基本上相同,但不一定是完全相同的。

图像解压缩器302包括逆退化机制316、心理视觉建模机制318以及去量化和逆变换机制320。逆退化机制316使用与压缩图像306相关联的信息来确定用于产生压缩图像306的质量控制度量序列。例如,包括在压缩图像306中或以其他方式与压缩图像306相关联的元数据可以反映用于在压缩期间使来自输入图像304的图像内容迭代地退化的质量控制度量及其序列。

心理视觉建模机制318用于确定使用逆退化机制316添加回压缩图像306中的图像质量与图像的视觉感知的规则一致。例如,心理视觉建模机制318可以使用与心理视觉建模机制314相同的规则;然而,心理视觉建模机制318用于确定人类观看者可感知添加回压缩图像306中的图像内容。

去量化和逆变换机制320根据用于产生压缩图像306的量化因数(例如,误差级定义或修改误差级)来对压缩图像306的系数进行去量化。然后,去量化和逆变换机制320诸如通过将去量化的系数从频域变换到空间域来逆变换去量化的系数。在使用逆退化机制316和心理视觉建模机制318之前,去量化和逆变换机制320处理压缩图像306。

图像压缩器300和/或图像解压缩器302的实施方式可以与关于图3示出和描述的实施方式不同。在一些实施方式中,图像解压缩器302可以省略心理视觉建模机制318。例如,图像解压缩器302的逆退化机制316可以使用质量控制度量来识别特定的质量控制度量以及在图像压缩器300处应用的操作序列以使输入图像304退化以压缩为压缩图像306。可替代地,心理视觉建模机制318可以替换为序列识别机制,以识别在图像压缩器300处应用的操作和质量控制度量的序列。

在一些实施方式中,图像压缩器300或图像解压缩器302中的一个或两个可以包括用于分别压缩或解压缩图像的附加软件机制。例如,除了变换和量化机制310之外,图像压缩器300还可以包括图像预测机制、熵代码化机制、图像重构机制等或其组合。可替代地,这种附加机制可以被组合到变换和量化机制310中,而不是被实施为单独的软件机制。同样地,图像解压缩器302可以包括被组合到去量化和逆变换机制320中或者作为单独的软件机制的图像预测机制、熵代码化机制、图像重构机制等或其组合。

在一些实施方式中,可以不选择特定的质量控制度量来处理图像的区域。例如,在对图像进行处理时通过在压缩期间发送较少像素然后在解压缩期间执行上采样导致质量损失的质量控制度量被应用在图像级而不是块级。在另一示例中,用于噪声保留的质量控制度量在块级进行处理时可能会导致奇怪的伪像,但在图像级进行处理时会如期望地执行。

在一些实施方式中,图像压缩器300可以接收表示要产生的压缩图像306的最大总文件大小的输入。最大总文件大小可以用于做出有关误差级的决策,以用于压缩输入图像304的特定区域。例如,如果在达到最大总文件大小之前几乎没有比特剩余,则可以使用高于为输入图像304定义的误差级定义的修改误差级来压缩尚未处理的输入图像304的区域。这样做时,即使质量将略有降低,也可以使用较少比特来压缩该区域。这种比特成本减少将允许图像压缩器300保持在最大总文件大小内。

在一些实施方式中,图像压缩器300可以使用变换和量化机制310、退化机制312和心理视觉建模机制314来使用应用于输入图像304的不同区域的不同的质量控制度量序列生成和评估候选压缩图像。在这种情况下,图像压缩器300此后可以处理所生成的候选压缩图像并选择其中之一。例如,可以选择具有最低的总数据大小的所生成的候选压缩图像。然后,将应用于输入图像304的区域以产生所选择的候选压缩图像的质量控制度量序列用于压缩输入图像304,诸如以产生压缩图像306。

现在参照图4至5描述用于使用受控质量损失进行图像压缩和解压缩的技术。图4是用于根据所选择的误差级和质量控制度量序列来压缩图像的技术400的示例的流程图。图5是用于使用质量控制度量序列来迭代地处理图像的技术500的示例的流程图。

技术400或技术500中的一种或多种例如可以被实施为可以由诸如发送站102或接收站104的计算设备执行的软件程序。例如,该软件程序可以包括机器可读指令,该机器可读指令可以存储在诸如存储器204或辅助存储214的存储器中,并且在由诸如处理器202的处理器执行时,可以使计算设备执行技术400或技术500中的一种或多种。可以使用专用硬件或固件来实施技术400或技术500中的一种或多种。如上面所说明的,一些计算设备可以具有多个存储器或处理器,并且可以使用多个处理器、存储器或两者来分布在技术400或技术500中的一种或多种中描述的操作。

为了简化说明,将技术400和技术500分别描绘和描述为一系列步骤或操作。然而,根据本公开的步骤或操作可以以各种顺序发生和/或同时发生。附加地,可以使用本文未提出和描述的其他步骤或操作。此外,可能不需要所有图示的步骤或操作来实施根据所公开的主题的技术。

首先参照图4,示出了用于根据所选择的误差级和质量控制度量序列来压缩图像的技术400的示例的流程图。在402中,接收误差级定义。误差级定义表示用于压缩图像的最大量化误差。接收误差级定义包括识别被定义为由图像压缩器使用以用于压缩图像的误差级。

误差级定义可以反映图像压缩器的默认配置。例如,误差级定义可以反映针对要压缩的图像使用的静态值。在另一示例中,误差级定义可以反映基于要压缩的图像的特性(例如,分辨率、颜色复杂度等)识别的值。可替代地,误差级定义可以反映基于从用户接收的输入而配置的值。例如,将图像上传到服务器以进行压缩的计算设备的用户可以定义用于压缩图像的误差级。

在404中,在图像的区域内识别要量化的变换系数。如上面关于图3所陈述的,图像的区域是指图像的mxn大小的区(例如,一个或多个块),其中,m和n可以是相同或不同的值。变换系数是使用基于块的变换(例如,dct)处理的系数。

在406中,选择质量控制度量序列以控制变换系数的量化。质量控制度量序列包括可用于迭代地处理所识别的变换系数的一个或多个质量控制度量,诸如以通过根据不同的误差级对变换系数进行量化来由此使图像内容退化。

基于误差级定义来选择质量控制度量序列中包括的质量控制度量。例如,每个质量控制度量可以与指示误差级的误差级值或值范围相关联,该质量控制度量可用于针对所述误差级使图像内容退化。查找表可以用于存储与可用于选择的质量控制度量相对应的记录。因此,选择质量控制度量可以包括基于误差级定义来查询查找表。响应于该查询,选择具有等于误差级定义或在误差级定义的范围内的误差级值的质量控制度量。同样地,可以执行查询以确定质量控制度量的子集与超过误差级定义的误差级相关联。因此可以从质量控制度量序列中排除该子集的一些或所有质量控制度量。

可替代地,可以基于图像或所识别的变换系数的特性来选择质量控制度量。例如,每个质量控制度量可以与该质量控制度量可用于使图像内容退化的特定色度、频率值范围、分辨率或其他图像特性相关联。与查找表内的质量控制度量相对应的记录可以指示哪些质量控制度量可用于各种图像特性或对各种图像特性有效。

如果选择了多个质量控制度量,为多个质量控制度量中的每一个确定候选质量分数。候选质量分数反映了将由根据给定的质量控制度量量化图像区域内的变换系数而导致的质量损失。给定质量控制度量的候选质量分数是通过根据与质量控制度量相关联的量化矩阵对变换系数进行量化直到所得到的量化误差满足误差级定义为止来确定的。然后重构量化的变换系数以产生解压缩图像。

然后,使用质量控制度量的模型将解压缩图像的质量与原始图像的质量进行比较。比较结果被指示为质量控制度量的质量分数。例如,可以基于解压缩图像和原始图像之间的逐像素差异来计算质量分数。在另一示例中,可以基于由量化导致的伪像的数目或量来计算质量分数。

在选择要包括在序列中的质量控制度量之后,可以根据将受其使用影响的图像内容对它们进行排序。可以训练处理图像的图像压缩器以辨识通过某些质量控制度量减少,去除或以其他方式修改的图像内容的类型。该顺序可以基于人类视觉无法感知的图像内容的各个方面(例如,高频蓝色数据)。可以在质量控制度量序列中较早地排列这种质量控制度量。

(例如,图3所示的心理视觉模型机制314的)心理视觉模型可以用于确定序列的顺序。心理视觉模型可以例如指示在序列中较早地排列几乎没有导致可感知的图像内容损失的质量控制度量。例如,心理视觉模型可以指示用于减少高频纹理数据的第一质量控制度量可以在操作序列中排列在用于减少低频纹理数据的第二质量控制度量之前。例如,这可能是因为低频纹理数据的减少更能够由人类观察者注意到。

在408中,根据误差级定义并根据修改误差级来确定用于压缩图像的区域的比特成本。例如,可以根据误差级定义和质量控制度量序列确定第一比特成本,并且可以根据修改误差级和质量控制度量序列确定第二比特成本。修改误差级表示不同于误差级定义的值的量化误差的值。具体地,修改误差级表示量化误差,该量化误差如果代替误差级定义使用,则可能会导致用于压缩图像的潜在不同的图像质量和比特成本。

例如,修改误差级可以是在误差级定义之上或之下的几个小数(例如,在误差级定义为1.3的情况下,修改误差级可以为1.4)。在另一示例中,修改误差级在与误差级定义的差异中可以是整数或更多。确定比特成本包括根据误差级定义和所选择的质量控制度量序列来确定用于压缩所识别的变换系数的第一副本的第一比特成本。确定比特成本还包括根据修改误差级和所选择的质量控制度量序列来确定用于压缩所识别的变换系数的第二副本的第二比特成本。变换系数的第一和第二副本可以表示所识别的变换系数的重复数据,使得确定比特成本不会改变所识别的变换系数本身。可替代地,作为确定比特成本的一部分,可以改变并重置所识别的变换系数的值。

在410中,关于第二比特成本是否低于第一比特成本来做出确定。确定第二比特成本是否低于第一比特成本包括将第二比特成本与第一比特成本进行比较。响应于确定第二比特成本低于第一比特成本,技术400进行到412,其中,根据修改误差级和所选择的质量控制度量序列来迭代地处理所识别的变换系数以产生第一量化变换系数。

响应于确定第二比特成本不低于第一比特成本,技术400进行到414,其中,根据误差级定义和所选择的质量控制度量序列来迭代地处理所识别的变换系数以产生第二量化变换系数。下面关于图5描述用于使用质量控制度量来迭代地处理图像的区域的实施方式和示例。

在416中,基于第一量化变换系数或第二量化变换系数来产生压缩图像。产生压缩图像可以包括对第一量化变换系数或第二量化变换系数(如果适用的话)进行熵处理或以其他方式进行完成压缩,然后将它们输出到数字文件。可替代地,产生压缩图像可以包括将第一量化变换系数或第二量化变换系数(如果适用的话)存储在缓冲区内,以用于稍后的处理。

在一些实施方式中,技术400可以包括识别最大数据大小值且基于其来约束输入图像的压缩。例如,最大数据大小值可以表示压缩图像的最大文件大小(例如,150千字节)。最大数据大小值可以作为输入从使得执行技术400的用户接收、由默认设置(例如,设置为用于执行技术400的软件的默认配置)或者基于输入图像的特性(例如,其大小或内容)确定。最大数据大小值可以用于控制误差级定义、修改误差级或两者的值。

在一些实施方式中,选择质量控制度量序列可以包括比较来自使用质量控制度量的各种组合和序列以使图像的识别区域内的图像内容退化的预期的比特减少。例如,可能有n个候选被评估,其中,每个候选都包括给定的执行顺序中的m个质量控制度量。

在另一示例中,给定候选序列中的m个质量控制度量可以基于其退化的图像内容的特定类型来被排序。用于从图像的区域中去除高频蓝色数据的质量控制度量可以比用于使用噪声合成来增强量化的质量控制度量更早地排列在候选序列中。可以选择将导致最大的预期比特减少的候选序列作为用于迭代地处理在图像区域内识别的变换系数的序列。

在一些实施方式中,修改误差级可以反映从可能的修改误差级的范围中选择的值。例如,修改误差级可能反映出比误差级定义的值大或小0.1的值。可以评估多个候选修改误差级,诸如通过确定那些候选中的每一个的比特成本。然后可以选择与那些比特成本中的最低比特成本相关联的候选作为修改误差级。

在一些实施方式中,修改误差级可以是用于处理图像的每个区域的相同的值或值的范围。在一些实施方式中,可以使用不同的值或值的范围作为修改误差级来处理图像的每个区域。

在一些实施方式中,可以对要压缩的图像的多个区域执行技术400。例如,可以使用与为第一区域的变换系数选择的质量控制度量序列相同的质量控制度量序列来压缩在图像的第二区域内识别的变换系数。在另一示例中,可以使用与为第一区域的变换系数选择的质量控制度量序列不同的质量控制度量序列来压缩在图像的第二区域内识别的变换系数。

在一些实施方式中,技术400可以省略用于确定使用误差级定义或修改误差级是否导致较低的比特成本来压缩所识别的变换系数的操作。例如,技术400可以包括用于通过选择用于压缩变换系数的质量控制度量序列然后使用所选择序列迭代地量化变换系数来压缩图像的操作。

在一些实施方式中,技术400可以省略用于选择质量控制度量序列的操作。例如,技术400可以包括用于使用(例如,默认地或根据配置)所提供的质量控制度量序列来确定使用误差级定义或修改误差级是否会导致较低的比特成本来压缩所识别的变换系数的操作。

接下来参照图5,示出了用于使用质量控制度量序列来迭代地处理图像的技术500的示例的流程图。在502中,选择第一质量控制度量。第一质量控制度量是被选择用于迭代地处理要压缩的图像的识别区域的质量控制度量序列中的第一个。

在504中,使用第一质量控制度量来量化在要压缩的图像的区域内识别的变换系数。使用第一质量控制度量对那些变换系数进行量化包括基于第一质量控制度量的模型来使由那些变换系数表示的图像内容退化。例如,在第一质量控制度量是用于从图像的区域中去除高频蓝色数据的质量控制度量的情况下,针对变换系数来处理第一质量控制度量以从其去除高频蓝色数据。在另一示例中,在第一质量控制度量是卡通图像质量控制度量的情况下,对变换系数进行处理以去除精细细节但保有边缘。

在506中,关于所选择的质量控制度量,检测到退化失效。在当前质量控制度量开始失效时,新的质量控制度量替换当前的质量控制度量。当由使用该当前质量控制度量处理变换系数而导致的量化误差超过与该当前质量控制度量相关联的质量分数校准时,当前质量控制度量开始失效。例如,当由使用当前质量控制度量而导致的量化误差比对该质量控制度量进行校准的质量分数大两倍或更多倍时,则认为当前质量控制度量已失效。在这种情况下,根据操作序列选择下一质量控制度量来替换当前的质量控制度量。

在508中,关于所选择的质量控制度量是否是被选择用于压缩图像区域的质量控制度量序列中的最后一个质量控制度量来做出确定。响应于确定所选择的质量控制度量不是最后一个质量控制度量,在510中,选择下一个质量控制度量。技术500然后返回到504,其中,使用新选择的质量控制度量来处理所识别的变换系数。在检测到新选择的质量控制度量的退化失效时,关于该新选择的质量控制度量是否是序列中的最后一个质量控制度量做出另一确定。相应地重复技术500,直到当前选择的质量控制度量是序列中的最后一个为止。

响应于确定所选择的质量控制度量是最后一个质量控制度量,在512中,输出图像的已处理区域。所得到的量化变换系数被输出到执行技术500的图像压缩器的另一部分,诸如以准备用于压缩的已处理区域。

在一些实施方式中,可以执行技术500来确定质量控制度量序列以用于迭代地处理图像的区域。例如,可以使用技术500通过针对要压缩的图像的给定区域处理多个候选序列的质量控制度量中的每个来单独评估多个候选序列。作为评估这种候选序列的结果,可以确定该候选序列的总比特减少作为技术500的输出。

图6是使用质量控制度量序列来迭代地处理的图像600的区域的图示。图像600可以例如是图3所示的输入图像304。可以使用一个或多个质量控制度量来迭代地处理图像600。针对图像600处理第一质量控制度量以产生图像600a。图像600a具有与图像600相同的纹理,但是去除了高频蓝黄轴(例如,以五个像素的西格玛)。由于中央凹不具有蓝色受体,因此这可能是处理图像时典型的第一信息去除。

针对图像600a处理第二质量控制度量以产生图像600b。图像600b表示去除红绿高频信息(例如,以五个像素的西格玛)之后的图像600a。针对图像600b处理第三质量控制度量以产生图像600c。图像600c表示在使用相位和频率量化来重构纹理之后(例如,使纹理更加近似)的图像600b。针对图像600c处理第四质量控制度量以产生图像600d。图像600d表示在应用更多量化之后的图像600c,其可以利用噪声合成来增强更多量化。

针对图像600d处理第五质量控制度量以产生图像600e。图像600e表示在去除了进一步的高频信息之后并且仅基于噪声合成对图像进行处理之后的图像600d。图像600f和600g表示由完全去除了高频信息而导致的进一步按顺序产生的图像。因此,图像600g表示响应于使用多个质量控制度量处理原始图像(例如,图像600)而产生的重构图像。图像600g的量化变换系数可以被压缩并输出以进行传输。

在一些实施方式中,不同的误差级可以用于量化图像600(或随后产生的图像600a-g)的不同区域。例如,可以为整个图像600定义误差级定义(例如,1.3)。然而,在确定修改误差级(例如,1.4)将导致更大的比特节省(例如,更低的比特成本)来压缩对象区域时,处理图像600的图像压缩器可以替代使用修改误差级。例如,可以以误差级定义来压缩图像600的最左侧区域中的白砖纹理,而可以以修改误差级来压缩具有叶绿色纹理的朝向图像600的右侧的区域。

上面描述的压缩和解压缩的各个方面图示了压缩和解压缩技术的一些示例以及被配置为执行压缩和/或解压缩技术的那些示例中的所有或一部分的硬件组件。然而,要理解的是,如权利要求中使用的那些术语,压缩和解压缩可能意味着对数据的编码、解码、变换或者另一处理或改变。

词语“示例”在本文中用于意指充当示例、实例或图示。本文作为“示例”描述的任何方面或设计不必解释为比其他方面或设计更优选或有利。相反,词语“示例”的使用旨在以具体方式呈现构思。如本申请中所使用的,术语“或”旨在意指包括性的“或”而不是排他性的“或”。即,除非另外指定或者通过上下文清晰指示,否则语句“x包括a或b”旨在意指其任何自然的包括性置换。即,如果x包括a;x包括b;或x包括a和b,那么在任何前述情况下均满足“x包括a或b”。另外,在本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为意指“”一个或多个,除非另外指定或通过上下文中清晰指示以指向单数形式。而且,贯穿本公开,除非如此描述,否则术语“实施方式”或者术语“一个实施方式”的使用并不旨在意指相同的实施例或实施方式。

本公开的所有或部分实施方式可以采取可从例如计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如可以有形地包含、存储、传送或传输程序以供任何处理器使用或与其结合使用的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体设备。其他合适的介质也是可用的。

已经描述了上述实施例、实施方式和方面,以帮助容易地理解本公开并且不限制本公开。相反,本公开旨在覆盖包括在所附权利要求的范围内的各种修改和等效布置,该范围应被赋予法律允许的最广泛的解释,以涵盖所有这种修改和等效布置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1