用于改善低成本视频/图像压缩的方法
优先权声明
本申请要求于2015年7月8日提交的临时申请序列号62/189,920,以及于2015年1月9日提交的美国序列号62/101,557以及于2015年12月30日提交的美国专利申请第14/987,713号的题为“Methods For Improving Low-Cost Video/Image Compression”的优先权,通过引用将其全部结合于此。
相关申请的交叉引证
本申请通过引用将以下申请的全部内容结合于本文中:于2010年3月9日提交的题为“Lossless and near-lossless image compression”的美国申请序列号12/720,273('273申请);于2012年10月3日提交的题为“Bounded Rate Near-Lossless And LosslessImage Compression”的临时申请US 61/709,316(‘316申请);于2013年2月28日提交的题为“Indexed Color Cache”的美国临时申请序列号61/770,979('979申请);于2013年2月14日提交的题为“Enhanced Display Stream Compression,”的美国临时申请序列号61/764,891('891申请);于2013年6月7日提交的题为“Adaptive Filtering for Prediction inImage Compression”的美国临时申请序列号61/832,547(‘547申请);题为“Prediction inVideo Compression”的美国临时申请序列号61/765,623(‘623申请);题为“Method andSystem for Zero Overhead Parallel Entropy Decoding”的美国专利申请公开号2011/0305282A1(‘282申请);题为“Bounded Rate Compression with Rate Control forSlices”的美国专利申请公开号14/044,612(‘612申请);以及题为“Hybrid Transform-Based Compression”的美国专利申请公开号14/302,940(‘940申请)。
技术领域
本公开涉及视频压缩的系统和方法。
背景技术
由于巨大的顾客需求驱动了电子和通信技术的迅速增长快速发展,这导致了在全世界范围内采用能够显示各式各样的视频内容的设备。这种设备的实例包括智能手机、平板电视、以及平板电脑。图像处理技术的提高将会继续提高这些设备的功能。
发明内容
根据本发明的一个方面,提供了一种视频编码器,包括:电路,被配置为:接收4:2:0格式图片(format picture);利用来自所述4:2:0格式图片的交替位置(alternatingposition)的第一组亮度样本在4:4:4容器(container)的第一组内形成第一分量;利用第二组亮度样本(luma sample)在所述4:4:4容器的所述第一组内形成第二分量,所述第二组亮度样本来自相对于所述第一分量中的所述第一组亮度样本相对的交替位置的所述4:2:0格式图片;在所述第一组内形成至少一个色度分量,所述至少一个色度分量具有来自所述4:2:0格式图片的第一组色度样本;并且发送所述4:4:4容器。
其中,所述至少一个色度分量(chroma component)包括与所述第一组亮度样本相关联的色度蓝色分量(chroma blue component)。
其中,所述第一组亮度样本和所述第二组亮度样本来自所述4:2:0格式图片的第一行,所述电路被配置为:利用来自所述4:2:0格式图片的第二行的交替位置的第三组亮度值在所述4:4:4容器的第二组内形成第一分量;利用来自所述4:2:0格式图片的所述第二行的第四组亮度值在所述4:4:4容器的所述第二组内形成第二分量,第四组亮度样本具有相对于该第一分量中的第三组亮度样本相对的交替位置;以及在所述第二组内形成至少一个色度分量,所述第二组内的该至少一个色度分量具有来自所述4:2:0格式图片的第二组色度样本。
其中,所述第二组内的所述至少一个色度分量包括与所述第一组亮度样本和所述第三组亮度样本相关联的色度红色分量(chroma red component)。
其中,所述第一组包括三个分量并且所述第二组包括三个分量。
其中,来自所述第一行的六个像素和来自所述第二行的六个像素被映射到所述第一组和所述第二组中。
其中,基于来自紧邻的前一行的偶数亮度样本、紧邻的前一行的奇数亮度样本以及来自前两行的色度样本形成索引颜色历史(ICH)条目(indexed color historyentries)。
根据本发明的另一个方面,提供了一种视频编码器,包括:电路,被配置为:接收色度二次采样图片(chroma subsampled picture);利用来自所述色度二次采样图片的交替位置的第一组亮度样本在非二次采样容器(non-subsampled container)的第一组内形成第一分量;利用第二组亮度样本在所述非二次采样容器的所述第一组内形成第二分量,所述第二组亮度样本来自相对于所述第一分量中的所述第一组亮度样本相对的交替位置的所述色度二次采样图片;在所述第一组内形成至少一个色度分量,所述至少一个色度分量包括来自所述色度二次采样图片的第一组色度样本;以及编码所述非二次采样容器。
其中,所述至少一个色度分量包括与所述第一组亮度样本相关联的色度蓝色分量。
其中,所述第一组亮度样本和所述第二组亮度样本来自所述色度二次采样图片的第一行,所述电路被配置为:利用来自所述色度二次采样图片的第二行的交替位置的第三组亮度样本在所述非二次采样容器的第二组内形成第一分量;利用来自所述色度二次采样图片的所述第二行的第四组亮度样本在所述非二次采样容器的所述第二组内形成第二分量,第四组亮度值具有相对于该第一分量中的所述第三组亮度样本相对的交替位置;并且在所述第二组内形成至少一个色度分量,所述第二组内的所述至少一个色度分量具有来自所述色度二次采样图片的第二组色度值。
其中,所述第二组内的所述至少一个色度分量包括与所述第一组亮度样本的和所述第三组亮度样本相关联的色度红色分量。
其中,所述第一组包括三个分量并且所述第二组包括三个分量。
其中,来自所述第一行的六个像素和来自所述第二行的六个像素被映射到所述第一组和所述第二组中。
其中,所述至少一个色度分量包括第一色度分量和第二色度分量,所述第一色度分量由色度红色样本形成并且所述第二色度分量由色度蓝色样本形成。
其中,所述第一组包括四个分量。
其中,六个像素映被射到所述第一组中。
其中,基于来自紧邻的前一行的偶数亮度样本、紧邻的前一行的奇数亮度样本以及来自前两行的色度样本形成索引颜色历史(ICH)条目。
根据本发明的又一个方面,提供了一种视频解码器,包括:电路,被配置为:利用包括第一分量、第二分量和至少一个色度分量的第一组接收4:4:4容器,所述第一分量具有交替位置的第一组亮度样本,所述第二分量具有在相对于所述第一分量中的所述第一组亮度样本相对的交替位置中的第二组亮度样本,并且所述至少一个色度分量具有与所述第一组亮度样本相对应的第一组色度样本;从所述第一分量提取所述第一组亮度样本;从所述第二分量提取所述第二组亮度样本;从所述至少一个色度分量提取所述第一组色度样本;并且生成包括所述第一组亮度样本、所述第二组亮度样本和所述色度样本的4:2:0图片,所述第一组亮度样本位于交替位置处,所述第二组亮度样本位于相对于所述第一组亮度样本相对的交替位置处并且所述色度样本对应于所述第一组亮度样本。
其中,所述4:4:4容器具有包括第一分量、第二分量和至少一个色度分量的第二组,所述第一分量具有交替位置的第三组亮度样本,所述第二分量具有相对于所述第一分量中的所述第三组亮度样本相对的交替位置中的第四组亮度样本并且所述至少一个色度分量具有与所述第一组亮度样本和所述三组亮度样本相对应的第二组色度样本,所述电路被配置为:从所述第二组的所述第一分量提取所述第三组亮度样本;从所述第二组的所述第二分量提取所述第四组亮度样本;从所述第二组的所述至少一个色度分量提取所述第二组色度样本;并且生成包括所述第三组亮度样本、所述第四组亮度样本和所述第二组色度样本的4:2:0视频,所述第三组亮度样本位于交替位置处,所述第四组亮度样本位于相对于所述第一组亮度样本的相对交替位置处。
其中,所述第一组包括三个分量并且所述第二组包括三个分量,所述电路被配置为将所述第一组和所述第二组映射至所述4:2:0图片的第一行上的六个像素和所述4:2:0图片的第二行上的六个像素中。
根据本发明的又一个方面,提供了一种视频编码器,包括:电路,被配置为:接收4:2:2图片;利用来自色度二次采样图片的交替位置的第一组亮度样本在4:4:4:4容器的第一组内形成第一分量;利用第二组亮度样本在所述4:4:4:4容器的所述第一组内形成第二分量,所述第二组亮度样本来自相对于所述第一分量中的所述第一组亮度样本相对的交替位置的所述4:2:2图片;在所述第一组内形成至少一个色度分量,所述至少一个色度分量包括来自所述4:2:2图片的第一组色度样本;并且编码所述4:4:4:4容器。
附图说明
图1是示出了编码系统的框图。
图2是示出了解码系统的框图。
图3是视频编码器的框图。
图4是视频编码器的框图。
图5是示出了将视频数据格式化成容器像素的示图。
图6是示出了将视频数据格式化成容器的示图。
图7是示出了将视频数据格式化成容器像素的另一示图。
图8是示出了将视频数据格式化成容器的另一示图。
图9是示出了索引颜色历史(ICH)存储器的一个实施方式的示图。
图10是示出了交替的样本分组的一个实施方式的示图。
图11是示出了交替的样本分组的另一个实施方式的示图。
具体实施方式
‘273申请公开了一种图像压缩方法。在方法的一个方面中,利用差分脉码调制(DPCM)编码图像的像素。DPCM可以利用预测器。所描述的预测器之一是中值自适应预测(MAP),其可以称为LS预测器。在另一方面中,可以基于缓冲模型的充溢度和图像活动的测度来调整量化参数(QP)。缓冲模型充溢度可以被分成多个阈值范围。
‘316申请公开了一种方法,其中,实施方式可以降低相对流畅的内容的QP。某些内容可以占用接近或非常靠近流畅区域的“忙碌”区域。当检测到内容为低活动率并且针对每个阈值范围可以使用减小的值时,例如可以在一个组内大量向下调整QP。‘316申请还公开了一种方法,借此,量化(QP)和/或预测的隐式控制被保持并且与量化和/或预测的显示控制结合。在一些实施方式中,可以使用QP控制的明确部分,例如,每个块的像素的1比特,其中,0值对应于使用隐式QP的情况,1值对应于QP从隐式值减少和/或增加预定量的情况。
‘891申请公开了一种用于确定像素在感知上敏感的方法。编码器可以选择被确定为敏感的像素的较小的QP值。在一些实施方式中,编码器可以利用压缩的比特流中的指示以指示一部分图像内容相对平滑,并且可以相应地调整速率控制参数。
‘979申请公开了用于编码像素的索引颜色缓存模式的使用。可以通过转义码指示索引颜色缓存的使用。
‘547申请公开了用于预测的像素的自适应滤波的使用。
‘683申请公开一种在视频编码中块预测的方法。
‘282申请公开了一种用多路复用和解复用的比特流的多个部分平行熵解码比特流的方法。
’612申请公开了一种利用速率控制方法的编码算法,该速率控制方法确保用于编码片段的大量比特适合在预算的比特数目内。
‘940申请公开了混合变换模式的使用。
在‘612申请中描述的压缩方案和以上引用的相关申请利用DPCM并且将中值自适应预测器(MAP)应用于图像中至少样本的子集以改善压缩效率。本公开描述了技术以进一步改善编码效率、减少伪像、和/或降低系统成本。这些技术可以根据系统要求应用于编码器、解码器、或者编码器和解码器两者。
图1中示出了在编码器100的上下文中可以改善编码的示例性设备。在图1中给出的实例中,编码器100包括收发器102和与收发器102通信的系统逻辑103。系统逻辑103可以在硬件、软件或者软件和硬件中实现。在一个实施方式中,系统逻辑103包括一个或多个处理器104、存储器106、以及用户接口108。
收发器102可以是无线收发器,并且发送和接收的信号可以遵循任何不同系列的格式、协议、调制、频道、比特率、以及编码。因此,收发器402可以支持802.11a/b/g/n/ac标准、60GHz WiGig/802.11TGad规范、蓝牙、全球移动通信系统(GSM)、时分多址(TDMA)、频分多址(FDMA)、码分多址(CDMA)、或其他无线接入技术或协议。收发器102可以发送和接收根据如下所述的技术编码的数据。
处理器104执行系统指令110。系统指令110可以包括操作系统、应用程序、设备固件、视频和音频编码器、视频和音频解码器或其他指令。系统指令110包括编码指令112。编码指令112可以用硬件、软件、或硬件和软件两者、使用如下所述的索引颜色缓存的任何处理,诸如,如下所述的任何编码处理来实现。
存储器106还存储要编码的数据(例如,图像或者图像的一部分和它们的像素数据)116和用于编码指令112的操作参数114。尽管应当理解的是操作参数114可以存储在与像素数据不同的物理存储器中。操作参数114的实例包括说明使用索引颜色缓存要处理的内容(例如,像素)、用于选择索引颜色缓存编码模式、索引颜色缓存编码模式、索引值的参数或如下所述的任意其他参数。
编码器100的系统逻辑103可以读取操作参数114、执行编码并且使用索引值指定压缩的比特流中的像素值。
在执行解码的解码器200的上下文中在图2中示出了可以使用索引颜色缓存执行处理的另一示例性设备。在图2中给出的实例中,解码器200包括收发器202和与收发器202通信的系统逻辑203。系统逻辑203可以在硬件、软件或者软件和硬件两者中实现。在一个实施方式中,系统逻辑203包括一个或多个处理器204、存储器206、以及用户界面208。收发器202可以共享上述收发器102的任何特性。
处理器204执行系统指令210。系统指令210可以包括操作系统、应用程序、设备固件、视频和音频编码器、视频和音频解码器或其他指令。系统指令210包括解码指令212。解码指令212可以用硬件、软件、或硬件和软件两者、使用如下所述的索引颜色缓存的任何处理,诸如,如下所述的任何编码处理来实现。
存储器206存储要解码的数据(例如,从可解码成像素数据的编码器接收的压缩位流)216和用于解码指令212的操作参数214。尽管应当理解的是操作参数214可以存储在与像素数据不同的物理存储器中。操作参数214的实例包括说明使用索引颜色缓存要处理的内容(例如,像素)、用于选择索引颜色缓存编码模式、索引颜色缓存编码模式、索引值的参数或如下所述的任意其他参数。
一些源图片(例如,图像和/或视频)被色度二次采样,例如,4:2:2或4:2:0色度二次采样。4:2:0可以是色度分量两次水平地和垂直地二次采样的YCbCr图片的格式。4:2:2可以是色度分量两次水平地二次采样的YCbCr图片的格式。一些图片不是色度二次采样,诸如,4:4:4或4:4:4:4格式。4:4:4和4:4:4:4格式可以是色度分量不被二次采样的RGB、RGBA、YCbCr、或CbCrA视频的格式。
对于某些显示链接,重要的是在不转换为4:4:4格式的情况下发送色度二次采样图片。这使得以较低的比特率能够实现用4:4:4格式可以实现的视觉无损的图片质量。此外,在4:4:4和4:2:2或4:2:0格式之间的转换通常是有损的并且应当避免以免转换伪像。因此,优化的4:2:0模式可以允许编码器和解码器以大约4:4:4模式的吞吐量的两倍运行,这能够降低大的光栅尺寸需要4:2:0支持而不是4:4:4支持的连接中的系统成本。优化的4:2:2模式可以允许编码器和解码器以大约4:4:4模式的吞吐量的两倍运行,这能够降低大的光栅尺寸需要4:2:2支持而不是4:4:4支持的连接中的系统成本。
现在参考图3,提供了编码器300的框图。编码器300接收图片输入310。如果是以RGB格式进行图片输入,那么图像可以通过颜色转换单元312从RGB转换成YCoCgR。图片从颜色转换单元312馈送给缓冲器314。转换的图片然后可以提供至平滑度确定单元318。可以由平滑度确定单元318将量化调整提供至速率控制单元320。速率控制单元320可以将比特率提供至预测、量化以及重构单元316。速率控制单元320可以从预测、量化以及重构单元316接收生成的大量比特作为反馈。预测、量化以及重构单元316可以直接从缓冲器314接收图片数据。此外,ICH单元322可以从缓冲器314接收图片数据。重构像素值326可以提供至行缓冲器324并且在预测、量化以及重构单元316中内部用作反馈。行缓冲器324可以通过预测、量化以及重构单元316以及ICH单元322保持重构的像素值326供以后使用。预测、量化以及重构单元316可以将图片数据提供至熵编码单元328。熵编码单元328还可以使用平滑度确定单元318中的平滑度指示330和ICH单元322中的ICH参数并且基于这些参数编码图像数据。编码数据从熵编码单元328提供至子流多路复用器332。子流多路复用器332的输出存储在速率缓冲器334中,在该速率缓冲器中,子流多路复用器的输出随后被提供至比特流输出单元336。
现在参考图4,提供了解码器400的框图。解码器可以接收比特流输入410。比特流输入410可以存储在速率缓冲器412中。子流解复用单元414可以从速率缓冲器412接收比特流输入。解复用比特流可以从子流解复用单元414提供至熵解码单元416。比特流参数可以从熵解码单元416提供至速率控制单元418。速率控制单元418可以生成量化参数,该量化参数被提供至预测、逆量化以及重构单元420。预测、逆量化以及重构单元420可以从熵解码单元416接收解码的图片数据。此外,熵解码单元416可以将ICH模式控制信号422提供至ICH单元424。ICH单元424可以将ICH参数提供至预测、逆量化以及重构单元420。反馈参数可以从预测、逆量化以及重构单元420提供至ICH单元424。预测、逆量化以及重构单元420还可以与行缓冲器426通信以存储并且从一个或多个先前解码的行中检索重构的像素。图片数据可以从预测、逆量化以及重构单元420提供至颜色转换单元428。可以将转换后的图像数据从颜色转换单元428提供至图像输出单元430。
用于4:2:2和4:2:0的优化模式
4:2:2格式可以解释为包括与4:4:4表示相比导致色度样本减少50%的任何色度格式和任何滤波/下采样。4:2:0格式可以解释为包括与4:4:4表示相比导致色度样本减少75%的任何色度格式和任何滤波/下采样。
一些现有公开内容讨论了本地编码4:2:2视频。例如,‘273申请包括4:2:2模式。这里描述的增强是如何用4:2:2模式处理索引颜色历史(ICH)和子流多路复用(SSM)并且描述了4:2:0模式。
当源图像为4:2:2或4:2:0格式时,以该格式本地编码视频是有利的。4:2:2模式可以编码6像素组的四个3采样单元;单元中的两个可以包含亮度数据并且单元中的两个可以包含色度数据。每单元也可以有其他数量的样本,诸如2或4,并且样本可以来自相同水平线的像素或一个或多个相邻水平线。
4:2:0模式可以用4个亮度单元和2个色度单元编码12像素组。可替换地,4:2:0模式可以用2个色度单元和1个色度单元编码6像素组。在一些实施方式中,4:2:2和4:0:0的交替行可以编码,在适当的情况下在速率控制中对比特分配进行调整以使行的额外预算与色度样本结合。再次,每单元可以有其他数量的样本,并且样本可以来自一个或多个相邻水平线的像素。
对于4:2:2和4:2:0模式,可以对如何编码ICH像素给予特殊的考虑。对于4:2:0,可以有几种方法。例如,亮度样本的子集可以与色度样本对准以形成3组件集,并且就像这些集合是像素一样为ICH指数进行分配。剩余分配的亮度样本可以几种不同的方式编码。剩余未分配的亮度样本可以基于它们与ICH中现有的亮度样本值的接近度分配ICH指数。剩余未分配的亮度样本可以基于可用亮度样本值的某些子集(例如,分配给3组件集的ICH和/或所选择的ICH条目的子集)分配指数。ICH更新算法可以或者可以不基于只有亮度的ICH指数(luma-only ICH index)来更新MRU。剩余未分配的亮度样本还可以使用预测来编码,该预测可能包括3组件集的亮度样本的插值。
4:2:2和4:2:0模式可以利用子流多路复用的不同分组。4:2:2分组可以包括两个子流处理器,一个用于亮度,一个用于色度。对于4:2:2分组四个子流处理器可能是有利的以提供额外的吞吐量,尤其是如果预测设计成使得可以在单个时钟周期中处理所有的亮度样本。
4:2:2和/或4:2:0模式可以与亮度的变换模式或混合模式(例如,使用‘940中的方法)结合使用以便提高编码和吞吐量。例如,2x2变换可以应用于亮度样本,并且亮度系数可以分组成对应于不同频率的单元。变换尺寸可以更大或者非正方形的,诸如4x2,并且可以是DCT、DST、小波、子带分解、或其他类型的转换。
在一些实施方式中,优化的4:2:2模式可以使用6像素组来代替3像素组。每个分组可以由两个亮度单元、Cb单元、以及Cr单元组成。第二亮度单元可以从第一亮度单元预测,并且第二亮度单元的尺寸预测可以从第一亮度单元的残差得出。可以使用两个SSP并且每个分组SSP可以更新两次。可以使用ICH模式中的六个ICH指数,每个像素一个。奇ICH指数可以仅得出亮度信息并且不可以用于更新ICH状态。除了分组尺寸是6像素之外,速率控制可以与4:4:4模式类似地工作。
现在参考图5,示出了将本地数据映射到容器像素中的一个实例。容器像素可以是相关的采样值的单个集合,相关的采样值就像它们取自容器格式中的图片一样来编码。容器可以是通过重新封装色度二次采样的(例如,4:2:0或4:2:2)图片中的样本创造的虚拟的非色度二次采样的(例如,4:4:4或4:4:4:4)图片。在该具体实例中,本地4:2:2模式映射到4:4:4:4容器中。在500提供了屏幕像素的一个可能的空间表示。像素520包括亮度值Y0和两个色度值Cb0和Cr0。像素522仅包括亮度值Y1。像素524包括亮度值Y2和两个色度值Cb1和Cr1。像素526包括亮度值Y3并且像素值528包括亮度值Y4和两个色度值Cb2和Cr2。像素530仅包括亮度值Y5。该4:2:2表示可以映射到4:4:4:4容器的分组510中。分量像素540包括来自像素520的Y0、来自像素522的Y1、来自像素520的Cb0、以及来自像素520的Cr0。因此,第一两个像素的亮度样本和色度样本一起形成分量像素540。接下来,第二两个像素的样本一起形成分量像素542。分量像素542包括来自像素524的Y2、来自像素526的Y3、来自像素524的Cb1、以及来自像素524的Cr1。分量像素544包括最后两个像素的样本、来自像素528的Y4、来自像素530的Y5、来自像素528的Cb2、以及来自像素528的Cr2。
现在参考图6,示出了将本地数据映射到容器中的一个实例。在该具体实例中,本地4:2:2模式映射到4:4:4:4容器中。在600提供了屏幕像素的一个可能的空间表示。像素620包括亮度值Y0和两个色度值Cb0和Cr0。像素622仅包括亮度值Y1。像素624包括亮度值Y2和两个色度值Cb1和Cr1。像素626包括亮度值Y3并且像素值628包括亮度值Y4和两个色度值Cb2和Cr2。像素630仅包括亮度值Y5。在可替换表示中,Cb和Cr样本可以表示相邻亮度样本之间的半个样本位置。4:2:2表示可以映射到4:4:4:4容器的分组610中。单元640包括来自像素620的Y0、来自像素624的Y2、以及来自像素628的Y4。因此,甚至三个像素的亮度值一起形成单元640。单元可以是包括特定分量的量化残差的集合的熵编码构造。可以通过使用偶数或奇数样本实现的位置每隔一个像素或者交替像素形成单元640。接下来,来自三个像素的色度蓝色样本一起形成单元642。单元642包括来自像素620的Cb0、来自像素624的Cb1、以及来自像素628的Cb2。单元644包括来自三个像素的色度红色样本、来自像素620的Cr0、来自像素624的Cr1、以及来自像素628的Cr2。单元646包括来自剩余像素的亮度样本。因此,单元646包括来自像素622的Y1、来自像素626的Y3、以及来自像素630的Y5。单元646可以由通过相对于单元640的位置交替的相对像素形成,当单元640使用偶数像素时通过使用奇数像素能够实现单元640。
实现4:2:0模式的一种可能的方式可以将亮度样本的子集作为虚拟4:4:4容器的分离的“分量”来处理。容器分量可以是将要在一个容器中编码的三个或四个虚拟分量中的一个。当编解码器在4:4:4模式中运行时,通常存在三个分量,一个亮度和两个色度。在4:2:0模式中,三个分量可以是偶数位置的亮度样本、奇数位置的亮度样本以及色度样本。在该实例中,虚拟的4:4:4容器具有4:2:0图片的宽度的一半。在4:2:0模式的另一实例中,三个分量可以是偶数行的亮度样本、奇数行的亮度样本以及色度样本。在该实例中,虚拟的4:4:4容器具有4:2:0图片的高度的一半。色度样本类型可以水平地或者垂直地交替每个像素。在另一实例中,可以用虚拟4:4:4容器的左半部对给定类型的所有色度样本进行分组并且用右半部对另一类型进行分组。可替换地,可以用虚拟4:4:4容器的上半部对给定类型的所有色度样本进行分组并且用右半部对另一类型进行分组。
4:2:0模式中的色度的样本预测可以使用相同色度类型或者相反色度类型的样本或者相反色度类型的某些功能。亮度预测可以或可以不限制使用在虚拟4:4:4容器中已作为相同的分量封装的亮度样本。当使用MMAP或其他垂直预测时,所使用的来自先前的行的亮度样本可以或者可以不限制为虚拟4:4:4容器中的相同的分量。如果使用了量化自适应混合,滤波抽头可以或者可以不限制为仅使用映射至虚拟4:4:4容器中的相同的分量类型的亮度样本。块预测可以或者可以不用于、可以应用于4:4:4容器中的任何或全部分量类型,或者可以不考虑4:4:4容器应用。
在一些实施方式中,4:2:0模式通过将样本封装成看起来像4:4:4图片的一半宽度工作。偶数亮度样本可以作为一个分量处理,奇数亮度样本可以作为第二分量处理,并且色度样本(偶数行上的Cb、奇数行上的Cr)可以作为第三分量处理。预测和尺寸预测可以将偶数和奇数亮度样本作为独立分量处理。除了较小的修改允许从以上行中逐个像素寻址ICH条目之外,ICH可以与4:4:4模式类似地工作。除了像素时间可能变成像素配对时间(因为两个像素可以通过2个亮度和1个色度样本来编码)之外速率控制可以与4:4:4模式相同地工作并且可以对速率控制进行较小的修改确保第二亮度行(其可包含第一Cr样本)没有被过度量化。
现在参考图7,本地4:2:0模式中的像素的表示示出为映射到4:4:4容器中。在该空间表示700中,可以为行0和行1中的每个像素位置提供亮度样本。在行0和行1中相应的偶数像素位置之间共享色度样本。例如,像素720和像素740与位于行0与行1之间的色度样本752相关。每个奇数像素,例如,来自行0的像素722和来自行1的像素742,均包括来自每个行的亮度样本,但不包括色度样本。因此,来自行0和行1中的每一个的六个像素均被映射到两个容器组件710和容器组件712中。容器组件710可以包括来自行1的亮度样本和来自行0和1的色度蓝色样本。容器712可以包括来自行1的亮度样本和来自行0和1的色度红色样本。因此,容器像素760可以包括来自行0的第一两个像素的样本,例如,来自像素720的Y00、来自像素722的Y01、以及来自752的Cb0。容器像素762包括来自行0的第二两个像素的样本,例如,来自像素724的Y02、来自像素726的Y03、以及来自754的Cb1。容器像素764包括最后两个像素的样本,例如,来自像素728的Y04、来自像素730的Y05、以及来自756的Cb2。
容器组件712的容器像素770包括来自行1的第一两个像素的样本,例如,来自像素740的Y10、来自像素742的Y11、以及来自752的Cr0。容器像素772包括来自行1的第二两个像素的样本,例如,来自像素744的Y12、来自像素746的Y13、以及来自754的Cr1。容器像素774包括与行1中最后两个像素相关的样本,例如,来自像素748的Y14、来自像素750的Y15、以及来自756的Cr2。
现在参考图8,本地4:2:0模式中的像素的表示示出为映射到4:4:4容器中。在该空间表示800中,可以为行0和行1中的每个像素位置提供亮度样本。在行0和行1中相应的偶数像素位置之间共享色度样本。例如,像素820和像素840与位于行0与行1之间的色度样本852相关。每个奇数像素,例如,来自行0的像素822和来自行1的像素842,均包括来自每个行的亮度样本,但不包括色度样本。因此,来自行0和行1中的每一个的六个像素被映射到两个分组810和812中。分组810可以包括来自行1的亮度样本和来自行0和1的色度蓝色样本。容器812可以包括来自行1的亮度样本和来自行0和1的色度红色样本。因此,单元860可以包括来自行0的偶数亮度样本,例如,来自像素820的Y0、来自像素824的Y2、以及来自像素828的Y4。可以由通过使用偶数或奇数样本实现的位置每隔一个像素或者交替像素形成单元860。单元862包括来自行0的奇数亮度样本,例如,来自像素822的Y1、来自像素826的Y3、以及来自像素830的Y5。单元862可以由通过相对于单元860的位置交替的相对像素形成,当单元860使用行0的偶数像素时通过使用奇数像素来实现单元860。单元864包括与行0和1相关的色度蓝色样本,例如,来自852的Cb0、来自854的Cb1、以及来自856的Cb2。
分组812的单元870包括来自行1的偶数亮度样本,例如,来自像素840的Y0、来自像素844的Y2、以及来自像素848的Y4。单元872包括来自行1的三个奇数亮度样本,例如,来自像素842的Y1、来自像素846的Y3、以及来自像素850的Y5。单元874包括与行0和1相关的红色色度样本,例如,来自852的Cr0、来自854的Cr1、以及来自856的Cr2。
可以在4:2:0模式中为ICH处理提供特殊考虑。在一个实例中,虚拟4:4:4容器中的ICH不具有任何特殊处理。在另一实例中,来自以上行的ICH指数可以包括在偶数亮度样本组件中可具有奇数亮度样本并且在奇数亮度样本组件中可具有偶数亮度样本的虚拟的4:4:4像素。在另一实例中,比特流代码(或者固定的或者可变长度)可以指示偶数和奇数亮度样本组件交换。在一个实例中,忽视ICH中的色度类型并且色度样本可以用于任何类型。在另一实例中,执行ICH中的色度类型并且参考相同类型的色度样本。在另一实例中,ICH中的色度类型存储在独立的存储单元中并且可以根据色度类型参考任一类型。
在4:2:2模式的一些实施方式中,输入图像中的每个色度实例可以与亮度样本相关,并且某些亮度样本没有相关的色度样本。然而,ICH中的每个条目仍可包括三个分量,并且可以仅忽视未使用的色度分量。参考前一行的色度样本可以返回配置的色度样本或者,如果不可用的,将色度样本立即放到左边。
在如在图9中示出的4:2:0模式的一些实施方式中,每个ICH条目可以包含两个相邻的亮度样本和色度样本(Cb用于偶数行并且Cr用于奇数行)。可以不记录色度类型(Cb或Cr),这样当使用时色度值可以用于填充或者Cb或Cr组件。当参考前一行时,色度类型可以指前两行上的样本因为其具有色度类型。前一行上相邻的亮度样本的配对可以开始于任何像素边界并且不局限于偶数配对。
现在参考图9,提供了示出形成ICH条目的示图。示例性ICH存储器910包括多个ICH条目。例如,在912处的ICH条目I1可以包括偶数行亮度样本914和奇数行亮度样本916。条目I1还可以包括单个色度样本918。该格式可以复制用于每个条目。为了示出每个条目的形成,示出了三行,当前行922、前一行924、前两行926。ICH存储条目I25可以使用前一行的Y-1和Y0亮度样本以及前两行的Cb0色度样本。按类似方式,ICH条目I26可以使用前一行的亮度样本Y0和亮度样本Y1以及来自前两行的Cb0色度样本。ICH条目I27可以使用前一行的Y1和Y2亮度样本以及前两行的Cb1色度样本。可按类似方式组成其他的ICH条目。
可以在4:2:0模式中提供平滑度检测的特殊考虑。在一个实例中,色度和亮度可以在空间上对齐并且不需要特殊处理。在另一实例中,亮度和色度可以不对齐并且平滑度检测可以着眼于原始图像中的多个位置。对于任何模式(4:2:0、4:2:2、或4:4:4),平滑度检测可以呈现有关第一分组的行的平滑度的某些特征(非常平滑、稍微平滑或别的方面)以在搜索下一行的像素可能不切实际的或者实施起来成本高昂时提高左手侧片段的质量。
可以在4:2:0模式中提供速率控制的特殊考虑。在一个实例中,色度类型可以在行间交替。在这种情况下,由于它们不能使用利用相同的色度类型的垂直预测,可以期望尝试减少第二行的片段上的色度样本的量化。在一个实例中,速率控制可以为第二行的片段提供额外的比特分配(second_line_bpg_offset)以确保这些样本较少地被量化,这可以通过其他片段行上的另一参数(nsl_bpg_offset)抵消。在另一实例中,速率控制可以在第二行开始时以固定量偏移速率模型。在另一实例中,速率控制可以强加最大量化电平,最大量化电平可以用于第一分组或第二行的片段上的分组。
中点预测(Midpoint Prediction)
中点预测(MPP)考虑来自片段的前一行的样本中的LSB以在使用时提高质量。中点预测的改善可以在确定用于预测器的LSB时考虑来自前一行的样本。在一个实例中,直接使用来自紧挨着的行中的样本的LSB。在另一实例中,来自前一行中的样本的LSB可以与当前行中先前解码的样本结合(例如,使用MAP)以便创建用于MPP的LSB。
管理多路复用字长
在使用子流多路复用的系统中,可以期望使用可以降低成本的最小的多路复用字长。在其他系统中,最小化最大语法元素大小常常呈现显著的成本效益。几种技术可用于减小多路复用字长。
一种技术可以减小模式的样本深度,在该模式中,增加的样本深度不大可能产生很多视觉冲击。例如,当编码高比特深度(诸如,16比特/分量)时,RGB至YCoCg-R色彩空间转换可以修改如下:
cscCo=R-B
t=B+(cscCo>>1)
cscCg=G-t
Y=t+(cscCg>>1)
Co=((cscCo+1)>>1)+32768
Cg=((cscCg+1)>>1)+32768
并且YCoCg-R至RGB的反向操作可以修改如下:
cscCo=(Co-32768)<<1
cscCg=(Cg–32768)<<1
t=Y-(cscCg>>1)
cscG=cscCg+t
cscB=t-(cscCo>>1)
cscR=cscCo+cscB
R=CLAMP(cscR,0,maxVal);
G=CLAMP(cscG,0,maxVal);
B=CLAMP(cscB,0,maxVal);
这些操作的组合将色度的有效样本深度从17比特减小至16比特,这节省句法中的比特并且通常是觉察不到的。
减小句法的比特深度的另一种方式在某些情况下可以限制DSU-VLC前缀的尺寸。例如,如果QP是0,前缀尺寸可以限于13比特。最大尺寸的前缀然后可以指示使用中点预测。在另一实例中,DSU尺寸预测可以限于最小尺寸以便确保前缀不超过某个最大尺寸。在另一实例中,在一定条件下(例如,当QP是0时)可以禁止句法的某个部分(例如,ICH模式)。
自适应滤波(Adaptive filtering)
输入样本的自适应滤波可以帮助改善某些类型的自然图像的外观。‘547中的自适应滤波适用于用于预测编码器和解码器两者的样本;然而,本公开描述了应用于在量化之前的原始像素的自适应滤波。滤波可以是线性的或非线性的;垂直的、水平的、和/或对角线的;并且可以是FIR、IIR或别的什么。滤波导致滤波的图像f(x,y)。在一些情况下,滤波可以包括参考重构的像素的抽头。
在压缩之前自适应滤波将滤波的图像与源图像混合。自适应滤波的图像可以用作编码器的输入,或者可以仅用于编码器的部分(例如,只是在预测回路的输入处),其中,编码器的其他部分可以使用未滤波的源像素。
混合可以由系统中多种不同的变量来控制。例如,量化参数、缓冲器充溢度、rc_model_fullness、本地图像活动性等可以全部输入至生成混合参数的函数。可以使用不同的混合方法,诸如,α混合或广义混合。例如,一个可能的混合可能是:
Qlevel=MapQPToQlevel(current_QP);
diff=orig(x,y)–filt(x,y);
diff_clamped=CLAMP(diff,-QuantDivisor[Qlevel]/2,+QuantDivisor[Qlevel]/2);
Adapt(x,y)=orig(x,y)+diff_clamped;
编码方案还可以在编码之前将先前重构的误差(例如,已编码的(x,y)的某个子集的g(ABS(orig(x,y)-recon(x,y)))的函数g()添加至源像素。之前重构的误差可能来自当前行或前一行。可以在某些路径(例如,只是预测回路)上或所有源像素上进行该调整。该调整可以在自适应滤波之前或之后。例如:
Adjusted(x,y)=orig(x,y)+1/2*(ABS(orig(x-1,y)–recon(x-1,y))
熵编码
在本节中呈现了对在‘273中呈现的熵编码方案以及其他类似方案的一些改进。
当源内容不可预测时(例如,在所有分量中均匀分布的随机样本),‘273中的DSU-VLC熵编码在可用于改善PSNR和图像质量的句法上花费比特。因此,添加“旁路句法”模式以避免为这种类型的内容花费不必要的比特。
“旁路句法(Bypass syntax)”可意味着不发送某些句法。例如,这可意味着不发送前缀并且因此假定最大尺寸。额外地或可替换地,这可意味着不发送平滑度指示或ICH指数。者可以意味着假定某个预测模式(例如,中点预测)或不使用预测。
“旁路句法”模式可以隐式地或显式地发信号。当预计在“旁路句法”模式中最有效地编码即将到来的编码像素时,可以发送显式指示;例如,如果活动性高同时缓冲器充溢度高。隐式指示可能是QP为>=某些预定值和/或如果缓冲器充溢度为>=阈值。还可以使用隐式/显式信号;例如,假设缓冲器充溢度和/或QP为>=阈值或者临界值,句法中的比特可以给某些数量的组的“旁路句法”发信号。
当源内容不可预测时,速率控制还可以设计成能节约比特。在一个实施方式中,当最近编码的比特流的特征类似于具有不可预测的源内容的编码的比特流时,速率控制提高QP。具有不可预测的源内容的编码的比特流的特征的实例包括跨不同的分量多次选择MPP模式、具有随机指数的ICH选择、大和/或改变的编码的残差、大尺寸的预测、以及类似的特征。
还可以通过改善尺寸预测改善DSU-VLC熵编码方案。可以使用几种技术来完成。在DSU-VLC中,预测尺寸是一个或多个先前的组中的一个或多个残差的实际大小的函数。技术可应用以使函数自适应于内容。简单的实例将会是与给定图片的实际需要的单元尺寸一起收集一个或多个先前组中的一个或多个残差的某个函数(例如,FIR滤波器)的柱状图。可以通过估计(例如,最大似然)在函数输出与最低成本预测的尺寸之间创建映射,其中,在估计中使用的成本函数是错误预测的比特成本。变化可能包括每个片段进行映射、使用一些其他的函数优化方法、以及将更多的信息引入到函数中。
可以用于改善DSU-VLC编码的另一个方法将会是使用来自一个或多个先前的行的预测的尺寸。例如K,QP调整的尺寸(限定为尺寸+qlevel)可以存储在存储器中并且预测的尺寸可以使先前组的QP调整的尺寸的某个函数等于左边竖直相邻的组;例如:
Pred_size=CLAMP(MIN(QP_adj_size_above,QP_adj_size_left)–qlevel,0,max_size-1);
或者:
Pred_size=CLAMP(QP_adj_size_left+QP_adj_size_above–QP_adj_size_top_right)–qlevel,0,max_size-1);
或者:
Pred_size=CLAMP(QP_adj_size_left+QL_adj_size_above–QP_adj_size_top_left)–qlevel,0,max_size-1);
可以通过一些其他的函数或映射对pred_size进行进一步的修改,例如,可以根据先前的片段或帧或一些其他的内容分析改变函数。
ICH
‘979申请描述了具有重新出现的像素值的内容的高效编码的索引颜色缓存。下面描述了用于改善编码器中的IC$/ICH决策的技术。
编码器可以为一个或多个组预先做好准备以改善当前组的决策。在一个实施方式中,编码器使用下一组上的像素执行ICH搜索以确定ICH选择是否有可能是下一组。编码器可以包括来自搜索中的先前组中的原始像素。如果下一组的ICH选择有可能,可以朝向选择ICH更多地偏置当前组的ICH决策以最小化模式切换。
在另一实施方式中,编码器可以完全或部分编码一个或多个后续组。可以计算ICH模式/P模式选择的不同的置换的某一失真量度(诸如,SAD、MSE、或最大样本误差、或它的函数)。此外,可以计算每个可能的编码路径所使用的比特数。计算成本函数,成本函数是失真的函数和比特的数目;例如,成本=失真+lambda*bits_used。当前组的模式选择可以是导致最低成本路径的模式。可以对紧挨着的后续组进行分析,或者可以在不用更进一步的计算的情况下遵循路径。
模式选择可以包括其他明确地发信号的编码模式。在一个实施方式中,平滑度指示包含在速率失真分析中。在支持DPCM/变换决策的编码系统中,该决策可以包含在分析中。
速率控制
在一些实施方式中,可以使用比例-积分-微分(PID)控制器得出速率控制的隐式部分的量化参数。PID控制器求出比例、积分、以及微分项之和以为反馈回路提供控制。在压缩系统的情况下,过程变量可以是在每个组中生成的比特的实数、如果尺寸预测理想(rcSizeGroup)已经生成的比特数、或者当前或下一组的预测尺寸。
设定点可以是常数或缓冲器充溢度的函数。其可以等于通过片段中的当前位置的某个函数修改的额定编程的比特/组。可以通过bpg_offset进一步进行修改,bpg_offset是缓冲器充溢度的函数。
PID控制器等式可以给出如下:
其中,Ti=Kp/Ki并且Td=Kd/Kd。值u(tk)是QP值以确定e(tk)是在设定点过程变量中限定的误差,Δt是采样时间,并且K值是调谐参数。调谐参数或者可以在硬件中固定,明确地发信号,或隐式地自适应。
可以强制控制所得到的量化参数以确保QP值在有效范围内。额外地或可替换地,量化参数可以被强制控制至缓冲器充溢度或某个模拟充溢度(其可以是当前组或来自某个先前的组)的函数的值的范围。可以响应于平滑度的某个明确的信号或者隐式或显式溢出和/或底流防止机制对量化参数进行进一步的修改。
隐式速率控制方案使用的如在‘273中或以上基于PID的方案所使用的活动性的测量可以是平均的或者低通滤波的以便创建活动性的更稳定测量。例如,可以用IIR或FIR滤波器滤波活动性。
如前所述,活动性可以是一个或多个先前组的熵编码结果的测量。可替换地,可以测量作为下一组的预测的尺寸。或者,其可以是一个或多个先前重构的组中的样本的函数。
交替的样本分组
很多系统利用样本的光栅顺序的矩形方块;然而,可以允许改善吞吐量的其他分组是可以的。如下给出一些实例。具体地,某些分组可以是非光栅顺序。在图10中,在1000中示出了一个示例性分组。标记有相同的数字的样本位置属于相同的组。在图10中,w表示线的宽度。在图11中,在1100中示出了另一分组。再次在图11中,标记有相同数字的样本位置属于相同的组并且w表示线的宽度。交替的样本分组提高了相邻样本的可用性,这在解码器吞吐量高时会使编码器吞吐量提高并且质量提高。
可通过多种不同方式以及硬件与软件的多种不同组合实现上述所述方法、设备、处理、以及逻辑。例如,实施方式的全部或者部分可以是电路,包括诸如中央处理单元(CPU)、微控制器、或者微处理器的指令处理器;专用集成电路(ASIC)、可编程逻辑设备(PLD)、或现场可编程门阵列(FPGA);或者是包括离散逻辑或其他电路部件的电路,包括模拟电路部件、数字电路部件或者两者;或者它们的任意组合。例如,电路可包括离散互连硬件部件和/或可被组合在单集成电路裸片上的电路、分布在多个集成电路裸片上的电路、或者通过常见封装件中的多个集成电路裸片中的多个芯片模块(MCM)中实现的电路。
电路可进一步包括或者访问由电路执行的指令。指令可被存储在除瞬时信号之外的有形存储介质中,诸如,闪存、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM);或者指令可被存储在磁盘或者光盘上,诸如,只读光盘存储器(CDROM)、硬盘驱动器(HDD)、或者其他磁盘或光盘;或者指令可被存储在另一机器可读介质中或者上。诸如计算机程序产品等产品可包括存储介质和存储在介质中或上的指令,并且指令在被设备中的电路执行时可使设备实现上述所述或者附图中示出的任一个过程。
实施方式可被分布成多个系统部件之间的电路,诸如,多个处理器与存储器之间的电路,可选地,包括多个分布式处理系统。参数、数据库、以及其他数据结构可被单独存储和管理,可被整合到单个存储器或者数据库中,可以多种不同方式从逻辑或者物理方面组织,并且可通过多种不同方式实现,数据结构包括诸如链表、散列表、数组、资料档案(record)、对象、或者隐式存储机制等数据结构。程序可以是单个程序的部分(例如,子例程)、单独程序,被分布在若干个存储器和处理器上或者通过多种不同方式实现,诸如,库中或者如共享库(例如,动态链接库(DLL))中的程序。例如,DLL可存储在由电路执行时执行上述所述或者附图中所示的任一个过程的指令。
已经具体描述了各种实施方式。然而,还能够具有很多其他实施方式。