专利名称:基于纹理水平的量化调整的制作方法
基于纹理水平的量化调整本发明专利申请是国际申请号为PCT/US2007/008937,国际申请日为2007年4月 9日,进入中国国家阶段的申请号为200780012500. 5,名称为“基于纹理水平的量化调整” 的发明专利申请的分案申请。背景随着DVD的日益流行,经因特网、和数码相机、数字媒体传递音乐也变得愈发平 常。工程师使用各种技术在维持质量的同时有效处理数字音频、视频和图像。为了理解这 些技术,理解音频、视频和图像信息是如何在计算机内表示和处理是有帮助的。I.计算机中媒体信息的表示计算机将媒体信息作为表示该信息的一系列数字来处理。例如,单个数字可以表 示图片的每个基本小区域的亮度强度或诸如红色、绿色或蓝色等色彩分量的强度,使得图 片的数字表示由这些数字的一个或多个阵列组成。每个这样的数字可以被称为一个样本。 对于彩色图像,常规上用一个以上的样本来表示每个基本区域的色彩,且通常使用三个样 本。用于一基本区域的这些样本的集合可被称之为像素,其中单词“像素”指的是“图片元 素”这一概念的缩写。例如,一个像素可以由代表表示该基本区域所必需的红光、绿光和蓝 光强度的三个样本组成。这一像素类型被称为RGB像素。若干因素影响媒体信息的质量, 包括样本深度、分辨率和帧速率(用于视频)。样本深度是指示能够用来表示一样本的数字范围的通常以比特为单位的测得的 特性。当用于该样本的可能值越多,质量就越高,因为该数字能够捕捉更精细的强度变化和 /或更大的值范围。分辨率通常指的是某一持续时间(对于音频)或空间(对于图像或单 独的视频图片)内的样本数。分辨率更高的图像往往比其他图像看上去更明快,并且包含 更多可辨别的有用细节。帧速率是视频的时间分辨率的常用术语。较高帧速率的视频往往 比其他视频更能模拟自然物体的平滑运动,并且也可以类似地认为其在时间维度上包含更 多细节。鉴于所有这些因素,如下表1所示,对高质量的折衷是存储和传输信息的表示样本 深度、分辨率和帧速率所需的比特率方面的成本。 表1 用于原始视频的不同质量等级的比特率尽管有存储和发送高质量视频(诸如HDTV)所需的高比特率,但公司和消费者仍
3愈发依赖计算机来创建、分发和回放高质量内容。为此,工程师使用压缩(也称为源译码或 源编码)来降低数字媒体的比特率。压缩通过将信息转换成较低比特率的形式来降低存储 和传送信息的成本。压缩可以是无损的,其中视频质量不受损害,但是比特率的降低受到视 频复杂度的限制。或者,压缩可以是有损的,其中视频质量受到损害,但是比特率的降低更 显著。解压(也被称为解码)从已压缩形式中重构一种版本的原始信息。“编解码器”是编 码器/解码器系统。一般而言,视频压缩技术包括“帧内”压缩和“帧间”或预测压缩。对于视频帧,帧 内压缩技术压缩个别的帧,通常称为I帧或关键帧。帧间压缩技术参考前导和/或后续帧 来压缩各帧,且帧间压缩的帧通常被称为预测帧、P帧或B帧。IL Windows Media Video版本8和9中的帧间和帧内压缩微软公司的Windows Media Video (Windows媒体视频)版本8 [ "WMV8"]包括视 频编码器和视频解码器。WMV8编码器使用帧内和帧间压缩,而WMV8解码器使用帧内和帧间 解压。Windows Media Video版本9[ “WMV9”]对许多操作使用类似的体系结构。A.帧内压缩
图1示出了 WMV8编码器中关键帧中的样本块105的基于块的帧内压缩100。块 是一组样本,例如,8x8的样本排列。WMV8编码器将关键视频帧拆分成8x8的块并向诸如块 105等各个块应用8x8的离散余弦变换[“DCT”] 110。DCT是将8x8的样本块(空间信息) 转换成8x8的DCT系数块115的一类频率变换,该系数块是频率信息。DCT操作本身是无损 或接近无损的。然而,与原始样本值相比,DCT系数对于编码器的压缩更高效,因为大多数重 要信息集中在低频系数中(常规上,块115的左上角),并且许多高频系数(常规上,块115 的右下角)具有零或接近零的值。编码器然后量化(120)该DCT系数,得到8X8的经量化的DCT系数块125。量化 是有损的。由于低频DCT系数往往具有更高的值,因此量化通常导致精度的损失,但是不会 完全损失关于系数的信息。另一方面,由于高频DCT系数往往具有零或接近零的值,因此高 频系数的量化通常导致连续的零值区域。另外,在某些情况中,高频DCT系数比低频DCT系 数更粗略地量化,导致对于高频DCT系数的更大精度/信息损失。编码器然后准备8x8的量化DCT系数块125以供熵编码,这是一种形式的无损压 缩。熵编码的确切类型可以取决于一系数是DC系数(最低频率)、顶行或左列中的AC系数 (其它频率)还是另一 AC系数而变化。编码器将DC系数126编码为与相邻的8x8块的DC系数136的差分,该相邻块是 正被编码的块的先前已编码的邻居(例如,顶部或左边)。(图1示出了位于帧中正被编码 的块的左边的邻居块135)。编码器对该差分进行熵编码140。熵编码器可以将左列或顶行的AC系数编码为与相邻的8x8块的对应左列或顶行 的差分。这是AC系数预测的一个示例。图1示出了被编码为与相邻(实际上在左边)块 135的左列137的差分147的左列127的AC系数。该差分编码增加了差分系数具有零值的 几率。其余AC系数来自量化的DCT系数块125。编码器将8x8的量化的AC DCT系数块145扫描150到一维阵列155中,然后使用 行程长度编码160的变体来对扫描的AC系数进行熵编码。编码器从一个或多个“行程/等 级/最后”表165中选择熵码,并输出该熵码。
B.帧间压缩WMV8编码器中的帧间压缩使用基于块的经运动补偿的预测编码,之后是残留误差 的变换编码。图2和3示出了用于WMV8编码器中的预测帧的基于块的帧间压缩。具体地, 图2示出了用于预测帧210的运动估计,而图3示出了用于预测帧的经运动补偿的块的预 测残差的压缩。例如,在图2中,WMV8编码器为预测帧210中的宏块115计算运动矢量。为计算运 动矢量,编码器在参考帧230的搜索区域235中进行搜索。在搜索区域235中,编码器将来 自预测帧110的宏块215与各种候选宏块进行比较,以找出作为良好匹配的候选宏块。编 码器输出指定匹配宏块的运动矢量(经熵编码的)的信息。该运动矢量相对于一运动损耗 量预测值来进行差分编码。在通过将差分加到运动矢量预测值来重构运动矢量之后,解码器使用该运动矢 量,利用来自参考帧230的信息来为宏块215计算预测宏块,参考帧130是在编码器和解码 器处可用的先前重构的帧。预测很少是完美的,因此编码器通常对预测宏块和宏块215本 身之间的像素差块(也称为误差或残差块)进行编码。图3示出了 WMV8编码器中的误差块235的计算和编码的示例。误差块335是预 测的块315和原始的当前块325之差。编码器向误差块335应用DCT340,得到8X8的系 数块345。编码器然后量化(350)该DCT系数,得到8X8的经量化的DCT系数块355。编 码器将8X8的块355扫描(360)成一维数组365,使得系数一般从最低频率到最高频率排 序。编码器使用行程长度编码370的变体对扫描的系数进行熵编码。编码器从一个或多个 行程/等级/最后表375中选择熵码,并输出该熵码。图4示出了用于帧间编码块的对应解码过程400的示例。在图4的概述中,解码器 使用可变长度解码410,利用一个或多个行程/级别/最后表415和行程长度解码420,对 表示预测残差的经熵编码的信息进行解码(410、420)。解码器将储存经熵编码的信息的一 维数组425反扫描(430)成二维块435。解码器对该数据进行反量化和反DCT (共同在440 处),得到重构的误差块445。在独立的运动补偿路径中,解码器对从参考帧的偏移使用运 动矢量信息455计算预测块465。解码器将预测块465与重构的误差块445组合470,以形 成重构块475。编码器也执行反量化、反DCT、运动补偿和组合以重构帧以便用作参考帧。III.有损压缩和量化上节提到了作为一种用于有损压缩的机制的量化,以及也称为无损压缩的熵编 码。无损压缩通过从信息中移除冗余来降低信息的比特率,而在保真度中没有任何减小。例 如,全部都完全是相同的红色着色的一系列10个连贯的像素可被表示为用于该特定的红 色着色的代码,并且数量10被表示为连贯像素的“行程长度”,且该系列可以通过从用于红 色着色的代码以及所指示的具有该红色着色的连贯像素的数量(10)进行解压来完美地重 构。无损压缩技术在没有质量代价的前提下降低比特率,但是只能将比特率降低到某一程 度。比特率的减小受到输入数据的统计特性中的内在可变性数量的限制,该可变性被称为 源熵。相反,采用有损压缩,质量在某种程度上受损,但是可用的比特率减小更为显著。 例如,各自是略微不同的红色着色的一系列10个像素可以被近似为具有完全相同的特定 近似红色色彩的10个像素。有损压缩技术可用于比无损压缩技术更显著地降低比特率,但是某些比特率的降低是通过降低质量来实现的,并且损失的质量不能被完全恢复。有损 压缩通常结合无损压缩来使用一在其中有损压缩建立信息的近似而无损压缩技术被用来 表示该近似的系统设计中。例如,各自是略微不同的红色着色的该一系列10个像素可被表 示为用于一个特定的红色着色的代码,并且数量10被表示为连贯像素的行程长度。一般而 言,编码器改变量化以在质量和比特率之间进行折衷。较粗略的量化导致更大的质量降低 但是允许更大的比特率减小。在解压时,原始系列将被重构为具有相同的近似的红色色彩 的10个像素。根据一个可能的定义,量化是用于通常用于有损压缩的近似不可逆映射函数的术 语,其中有一组指定的可能输出值,并且该组可能的输出值中的每一成员具有导致对该特 定输出值的选择的一组相关联的输入值。已经开发了各种量化技术,包括标量或矢量、均勻 或非均勻、以及自适应或非自适应量化。A.标量量化器根据一种可能的定义,标量量化器是输入值χ到经量化的值Q[x](有时称为重构 值)的近似函数映射X —Q[x]。图5示出了用于标量量化器的“阶梯”I/O函数500。水平 轴是用于实数输入变量χ的数字线,而垂直轴指示了相应的量化值Q[x]。数字线按诸如阈 值510等阈值划分。一对相邻阈值之间的给定范围中的每一 χ值被分配相同的量化值Q[x]。 例如,范围520中的每一 χ值被分配相同的量化值530。(在阈值处,两个可能的量化值之 一被分配给输入X,取决于系统)。总体上,量化值Q[x]展示了一离散的阶梯模式。映射沿 着数字线继续的距离取决于系统,通常在有限个数的阈值之后结束。阈值在数字线上的放 置可以是均勻间隔(如图5所示)或非均勻间隔的。标量量化器可被分解成两个截然不同的级。第一级是分类器级,其中分类器函数 映射χ —A[x]将输入χ映射到通常为整数值的量化索引A[x]。本质上,分类器对输入数字 行或数据集分段。图6A示出了用于标量量化器的通用分类器600和阈值。如在图5中一 样,用于实数变量χ的数字线按照诸如阈值610等阈值来分段。诸如范围620等给定范围 中的每一 χ值被分配相同的量化值Q[x]。图6B示出了用于标量量化器的分类器650和阈 值的数值示例。在第二级中,重构器函数映射k — β [k]将每一量化索引k映射到重构值β [k]。 本质上,重构器设置具有相对于输入数字线的各段的特定高度的阶(或选择数据集值的一 个子集)以便重构由分类器确定的每一区域。重构器函数映射例如可使用查找表来实现。 总体上,分类器涉及如下重构器Q[x] = β [Α[χ]](1)在常见的使用中,术语“量化”通常用于描述在编码期间执行的分类器级。术语“反 量化”类似地用于描述无论在编码还是解码期间执行的重构器级。通过使用这一量化器而引入的失真可以用基于差的失真度量d(X_Q[X])来计算。 通常,这一失真度量具有d(X-Q[X])随着x-Q[x]偏离零而增加的性质;并且通常每一重构 值位于对应的分类区域的范围之内,使得由函数方程Q[x] = χ形成的直线将穿过阶梯图 (如图5所示)的每一阶,并且因此Q[Q[x]]通常等于Q[x]。一般而言,如果对于给定的 输出比特率,一量化器与其它量化器相比导致较低的平均失真值,则该量化器被认为在码 率-失真方面是较好的。更正式地,如果对于源随机变量X,失真度量的期望值(即,平均或统计均值)D = Ex{d(X-Q[X])}对于A[X]的相等或更低的熵H较低,则一量化器被认为较 好。最常用的失真度量是平方误差失真度量,对于该度量d( I x-y I) = x-y|20当使用平方 误差失真度量时,失真度量的期望值(D)被称为均方误差。B.死区+均勻阈值量化器非均勻量化器具有对所有分类器区域非均勻地间隔的阈值。根据一种可能的定 义,死区加均勻阈值量化器[“DZ+UTQ”]是具有对除了包含零输入值的区域(称为死区 [“DZ”])之外的所有分类器区域都具有均勻间隔的阈值的量化器。在一般的意义上,DZ+UTQ 是非均勻量化器,因为DZ的大小不同于其它分类器区域的大小。DZ+UTQ具有可基于两个参数来表达的分类器索引映射规则χ — A[χ]。图7示出 了用于DZ+UTQ的阶梯I/O函数700,而图8A示出了用于DZ+UTQ的通用分类器800和阈值。 大于0的参数s指示用于除了 DZ之外的所有阶的步长。在数学上,i兴0,对所有Si等于 s。大于或等于0的参数ζ指示DZ大小与其它阶的大小之比。在数学上,Stl = Z *S。在图 8A中,ζ为2,因此DZ的宽度是其它分类区的两倍。用于DZ+UTQ的索引映射规则χ — A[x] 可被表达为 其中u表示小于或等于自变量的最小整数,并且其中Sign(X)是定义如下的函 数 图8B示出了其中s = 1且ζ = 2的用于DZ+UTQ的分类器850和阈值的数值示例。 图5、6A和6B示出了其中ζ = 1的特殊情况的DZ+UTQ。UTQ形式的量化器对于各种统计源 都具有良好的性能。特别地,DZ+UTQ形式对于被称为拉普拉斯源的统计随机变量源是最优 的。在某些系统设计(未示出)中,可能需要附加的考虑来完全表征DZ+UTQ分类规 则。出于实践原因,可能需要将可从分类函数A[x]所得的值的范围限于某一合理的有限范 围。该限制被称为限幅。例如,在某些这样的系统中,分类规则可以更精确地被定义为 其中g是对A[x]的绝对值的限制。可以使用不同的重构规则来对每一量化索引确定重构值。仅集中于实现互操作性 的标准和产品规范通常指定重构值而不必指定分类规则。换言之,某些规范可定义函数映 射k — β [k]而不定义函数映射χ —A[x]。这允许被构建为遵守该标准/规范的解码器正 确地重构信息。相反,编码器通常被给予以它们希望的任何方式改变分类器的自由,而同时 仍遵守该标准/规范。已经开发了用于调整量化阈值的众多系统。许多标准和产品出于简明的目的指定
7了对应于典型的中点重构规则(例如,对于典型的简单分类规则)的重构值。然而,对于分 类,阈值实际上可被调整以使某些输入值被映射到更常见(且因此有更低比特率)的索弓丨, 这使得重构值更接近最优。在许多系统中,量化的范围是按照量化步长大小来测量的。较粗略的量化使用更 大的量化步长,这对应于更宽的输入值范围。较精细的量化使用较小的量化步长。通常,出 于信令和重构的目的,量化步长被参数化为最小量化步长的倍数。C.量化伪像如上所述,有损压缩往往会导致质量的下降。例如,一系列10个略微不同的值的 样本可以使用量化而被近似为具有完全相同的特定近似值的10个样本。这种量化会降低 编码该一系列10个样本的比特率,但是以损失原始的10个样本中的细节为代价。在某些情况下,量化产生往往有更伪像性外观且与简单的精细细节损失相比在视 觉上更分散注意的视觉伪像。例如,平滑的、未纹理化的内容易受轮廓伪像一出现在两个不 同量化输出值的区域之间的伪像一的影响,因为人类视觉系统对于平滑内容中的微小变化 (尤其是亮度差)很敏感。使用以上示例,考虑其中该系列10个样本的亮度值从第一个样 本到第十个样本逐步且一致地改变的情况。量化可以将前五个样本值近似为一个值,而将 后五个样本值近似为另一值。尽管这种量化可能不会由于掩蔽效应而造成纹理化区域中的 视觉伪像,但是在平滑区域中,它会在重构图像中造成两组5个样本之间的可见线或阶。IV. VC-I中的差分量化在差分量化中,编码器对于图片的不同部分改变量化步长(此处在某些实现中也 称为量化参数或QP)。通常,这涉及在宏块级或其它子图像级上改变QP。编码器做出关于 如何改变QP的判决,并且将这些判决适当地用信号通知给解码器。例如,VC-I编码器可任选地选择差分量化来进行压缩。编码器在图像级上的句法 级发送比特流元素(DQUANT)以指示QP是否可在各个图像中的宏块之中变化。编码器发送 图像级比特流元素PQINDEX以指示图像QP。如果DQUANT = 0,则对该图像中的所有宏块使 用PQINDEX所指示的QP。如果DQUANT= 1或2,则同一图像中的不同宏块可使用不同的 QP。VC-I编码器可以使用一种以上方法来进行差分量化。在一种方法中,对一图像仅 使用两个不同的QP。这被称为双级(bi-level)差分量化。例如,对图像边缘处的宏块使 用一个QP,而对图像其余部分中的宏块使用另一 QP。这对于在图像边缘处节省比特是有用 的,在边缘处,精细细节对于保持总体视觉质量较不重要。或者,对每一宏块用信号表示1 比特的值指示对该宏块使用两个可用QP值中的哪一个。在被称为多级差分量化的另一种 方法中,可对图像中的各个宏块使用更大数量的不同QP。编码器在DQUANT为非零时发送图像级比特流元素VOPDQUANT。V0PDQUANT由可能 包括DQPR0FILE的其它元素组成,DQPR0FILE指示图像的哪些部分可使用除了图像QP之外 的QP。当DQPR0FILE指示任意的、不同的宏块可以使用除了图像QP之外的QP时,存在比特 流元素DQBILEVEL。如果DQBILEVEL = 1,则每一宏块使用两个QP之一(双级量化)。如果 DQBILEVEL = 0,则每一宏块可使用任何QP (多级量化)。比特流元素MQDIFF在宏块级发送以用信号表示对于双级量化的宏块的1比特选 择器。对于多级量化,MQDIFF指示图像QP和宏块QP之间的差分,或者对于宏块的经转移编码的绝对QP。V.其它标准和产品众多国际标准指定了用于压缩的视频信息的视频解码器和格式的各方面。这些标 准直接或隐含地也指定了某些编码器细节,但是未指定其它编码器细节。某些标准着重于 静止图像压缩/解压,而其它标准着重于音频压缩/解压。众多公司已经生产了用于音频、 静止图像和视频的编码器和解码器。各种其它种类的信号(例如,高光谱图像、图形、文本、 财务信息等)通常也使用压缩技术来表示和储存或传输。各种视频标准允许对不同图像类型使用不同量化步长,并且允许出于码率和质量 控制来改变量化步长。各标准通常未完全指定量化器设计。大多数标准允许编码器分类规则χ — A [χ]和 /或解码器重构规则k— β [k]中的某些变化。对DZ比ζ = 2或更大的使用已经蕴含在多 种编码设计中。例如,某些标准中对预测区域的重构值定范围隐含了对ζ >2的使用。这 些示例形式的标准中的重构值被适当地间隔以使用ζ = 2的DZ+UTQ分类。基于ζ = 1 (或 至少z<2)的设计已经在若干标准中用于量化。在这些情况下,重构值被围绕零相等地间 隔并且离开0。给定视频压缩对于数字视频的关键重要性,视频压缩是充分开发的领域并不令人 惊奇。然而,不论早先的视频压缩技术的好处如何,它们都没有以下技术和工具的优点。概述本申请描述了用于基于视频中的纹理水平来调整量化的技术和工具。例如,一种 视频编码器对平滑区域使用自适应平滑度阈值,并在编码期间分配比特时使用对平滑区域 的时间分析来改进视频的感知质量。提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。 本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要 求保护的主题的范围。在一方面,一种视频编码器标识视频图像序列中的当前视频图像的当前平滑区域 (例如,梯度斜率区域)。该序列具有其中先前图像的显示发生在当前图像的显示之前而将 来图像的显示发生在当前图像的显示之后的显示次序。该编码器对当前平滑区域执行时间 分析。该时间分析包括确定先前和/或将来图像的至少一个中的相应区域是否为平滑的。 至少部分地基于该时间分析,编码器调整当前平滑区域中的量化(例如,减小量化步长以 避免引入轮廓伪像)。该时间分析可以对可调整数量的将来图像执行。该时间分析可以将 更大的权重归于在时间上更接近当前图像的将来图像的相应区域中的平滑度。该编码器可 以分析一纹理图以标识当前平滑区域,并且可以分析该时间分析中的平均亮度值。在另一方面,一种视频编码器对于一视频图像序列确定差分量化区间(例如固定 的或可自适应地调整的区间),该区间包括一区间数。该编码器在对该序列中的预测的经差 分量化的图像执行差分量化时使用该区间。该区间约束编码器至少对于预测的经差分量化 的图像之一之后的区间数量的预测图像跳过差分量化。例如,差分量化包括对第一预测图 像选择一个或多个差分量化步长,并且对于第二预测图像改变一个或多个差分量化步长, 其中一个或多个差分量化步长不同于用于第一预测图像的图像量化步长,并且第二预测图 像在离第一预测图像的区间之外。
在另一方面,一种视频编码器分析当前视频图像中的纹理(例如,通过分析纹理 图),并至少部分地基于所分析的纹理对当前图像设置平滑度阈值。该编码器将当前图像的 纹理数据与平滑度阈值进行比较,并基于根据该平滑度阈值对当前图像中的至少一个平滑 区域的发现来调整用于当前图像的至少部分的差分量化。该编码器可通过向块梯度值的梯 度值直方图应用滑动窗来分析纹理。为了调整差分量化,编码器可确定当前图像中的平坦 块的百分比,并且将该百分比与一个或多个百分比阈值进行比较。或者,该编码器可标识当 前图像中的纹理区域中的隔离平坦块,并对该隔离平坦块跳过差分量化。参考附图阅读以下详细描述,将更清楚前述和其它目的、特征和优点。附图简述图1是示出8x8的样本块的基于块的帧内压缩的图示。图2是示出视频编码器中的运动估计的图示。图3是示出视频编码器中的8X8的预测残差块的基于块的压缩的图示。图4是示出视频解码器中的8X8的预测残差块的基于块的解压的图示。图5是示出用于标量量化器的阶梯I/O函数的曲线图。图6A和6B是示出用于标量量化器的分类器和阈值的曲线图。图7是示出用于DZ+UTQ的阶梯I/O函数的曲线图。图8A和8B是示出用于DZ+UTQ的分类器和阈值的曲线图。图9是可结合其实现所描述的若干实施例的合适的计算环境的框图。图10是可结合其实现所描述的若干实施例的通用视频编码器系统的框图。图11是在所描述的若干实施例中使用的宏块格式的图示。图12是自适应视频编码方法的流程图。图13是示出使用块的亮度和色度数据的像素梯度计算的图示。图14是对图13的块的多个像素梯度的直方图。图15是示例块值表征框架的图。图16是示出用于基于纹理信息来应用差分量化的通用技术的流程图。图17是示出用于使用时间分析来做出纹理DQ判定的技术的流程图。图18是示出用于使用百分比阈值和隔离平滑块滤波来做出纹理DQ判定的技术的 流程图。图19是示出用于对高纹理图像选择性地调整纹理水平阈值的技术的流程图。图20是示出用于确定自适应纹理水平阈值的示例伪代码的代码图。图21是示出梯度斜率区域的两个示例的图示。图22A是示出具有梯度斜率区域、纹理化区域、锐边区域和平坦区域的示例帧的 图示。图22B是示出图22A的梯度斜率区域中的轮廓伪像的图示。图22C示出了图22B的 轮廓伪像的宏块级细节。图23是示出通用的基于区域的梯度斜率检测技术的流程图。图24是根据一个实现的示例梯度斜率检测器的框图。图25是描绘具有可能会导致异常梯度斜率方向的膜颗粒的梯度斜率区域的4-1 降采样的图示。图26是用于16x16的罗盘算子Kh和Kv的等式图。
图27是示出用于使用图26的罗盘算子来计算区域的梯度方向的示例伪代码的代 码图。图28是示出用于对梯度斜率区域执行一致性检验的技术的流程图。图29是描绘了桶投票技术中的桶的图示。图30是示出用于选择宏块QP来帮助保存一个或多个非零AC系数的示例技术的 流程图。图31是示出在量化和反量化之后在梯度斜率区域中的三个相邻块的DC漂移的图
7J\ ο图32是示出用于调整量化以减少或避免DC漂移区域中的轮廓伪像的引入的通用 技术的流程图。图33是示出用于调节DC漂移区域中量化以减少或避免量化伪像的引入的组合技 术的流程图。详细描述本申请涉及用于高效的视频压缩的技术和工具。在各个所描述的实施例中,一种 视频编码器结合了用于编码视频的技术,以及用于包括不同层或级的比特流格式或句法的 对应的信令技术。所描述的技术和工具中的某一些可被应用于隔行或逐行帧。对此处所描述的实现的各种替换是可能的。例如,参考流程图所描述的技术可以 通过改变流程图中所示的级的排序,通过重复或省略某些级等来改变。例如,在初始级中的 分析(例如,获得关于图像的纹理信息或在检测平滑区域时执行纹理分析)可在稍后的级 (例如,对于图像做出编码判决或在检测平滑区域时执行时间分析)开始之前完成,或者对 不同级的操作可以在逐块、逐宏块或其它逐区域的基础上交错。作为另一示例,尽管某些实 现此处是参考特定宏块格式描述的,但是也可使用其它格式。各种技术和工具可组合或单独使用。不同的实施例实现所描述的技术和工具的一 个或多个。此处所描述的某些技术和工具可以在视频编码器中使用,或在不特别限于视频 编码的某一其它系统中使用。I.计算环境图9示出了其中可实现所描述的若干实施例的合适计算环境900的一个通用示 例。计算环境900并非旨在对使用范围或功能提出任何限制,因为这些技术和工具可以在 完全不同的通用或专用计算环境中实现。参考图9,计算环境900包括至少一个处理单元910和存储器920。在图9中,这一 最基本配置930包括在虚线内。处理单元910执行计算机可执行指令,且可以是真实或虚 拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储 器920可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、 EEPR0M、闪存等)或两者的某一组合。存储器920储存用此处所描述的一个或多个技术或 工具实现视频编码器的软件980。计算环境可具有额外的特征。例如,计算环境900包括存储940、一个或多个输入 设备950、一个或多个输出设备960以及一个或多个通信连接970。诸如总线、控制器或网 络等互连机制(未示出)将计算环境900的组件互连。通常,操作系统软件(未示出)为 在计算环境900中执行的其它软件提供了操作环境,并协调计算环境900的组件的活动。
存储940可以是可移动或不可移动的,且包括磁盘、磁带或磁带盒、⑶_R0M、DVD或 可用于储存信息并可在计算环境900内访问的任何其它介质。存储940储存用于实现视频 编码器的软件980的指令。输入设备950可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备、语音输入设 备、扫描设备或可向计算环境900提供输入的另一设备。对于音频或视频编码,输入设备 950可以是声卡、显卡、TV调谐卡、或接受模拟或数字形式的音频或视频输入的类似的设 备、或将音频或视频样值读入计算环境900的CD-ROM或CD-RW。输出设备960可以是显示 器、打印机、扬声器、CD刻录机、或从计算环境900提供输出的另一设备。通信连接970允许通过通信介质到另一计算实体的通信。通信介质传达诸如已调 制数据信号形式的计算机可执行指令、音频或视频输入或输出、或其它数据等信息。已调制 数据信号是其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作为示例而 非局限,通信介质包括以电、光、RF、红外、声学或其它载波实现的有线或无线技术。各种技术和工具可以在计算机可读介质的一般上下文中描述。计算机可读介质可 以是可在计算环境内访问的任何可用介质。作为示例而非局限,对于计算环境900,计算机 可读介质包括存储器920、存储940、通信介质以及上述任一个的组合。该技术和工具可在诸如程序模块中所包括的在目标真实或虚拟处理器上的计算 环境中执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定 任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功 能可以如各实施例中所需的组合或在程序模块之间分离。用于程序模块的计算机可执行指 令可以在本地或分布式计算环境中执行。为了呈现,详细描述使用了如“判定”和“分析”等术语来描述计算环境中的计算机 操作。这些术语是由计算机执行的操作的高级抽象,且不应与人类所执行的动作混淆。对 应于这些术语的实际的计算机操作取决于实现而不同。II.通用视频编码器图10是可结合其实现所描述的某些实施例的通用视频编码器1000的框图。编码 器1000接收包括当前图像1005的视频图像序列,并产生压缩的视频信息1095作为对存 储、缓冲区或通信连接的输出。输出比特流的格式可以是Windows媒体视频或VC-I格式、 MPEG-x 格式(例如,MPEG-I、MPEG-2 或 MPEG-4)、H. 26x 格式(例如,H. 261, H. 262, H. 263 或H. 264)或其它格式。编码器1000处理视频图像。术语图像一般指的是源、已编码的或已重构的图像数 据。对于逐行视频,图像是逐行视频帧。对于隔行视频,图像可以指的是隔行视频帧、帧的上 半帧、或帧的下半帧,取决于上下文。编码器1000是基于块的,并且对帧使用4:2:0的宏块 格式。如图11所示,宏块1100包括四个8X8的亮度块(Yl到Y4)以及两个8X8的色度 块(U和V),这些色度块与四个亮度块位于同处,但是水平和垂直分辨率都是一半,遵循常 规的4:2:0的宏块格式。对于半帧,可使用相同或不同的宏块组织和格式。8X8的块还可 在不同的级上细分,例如在频率变换和熵编码级。编码器1000可以对除8x8的块和16x16 的宏块之外的不同大小或配置的样本集执行运算。或者,编码器1000是基于对象的,或使 用不同的宏块或块格式。返回到图10,编码器系 1000压缩预测图像和帧内编码的关键图像。为演示起见,图10示出了关键图像通过编码器系统1000的路径以及用于预测图像的路径。编码器 系统1000的许多组件用于同时压缩关键图像和预测图像两者。由这些组件执行的确切操 作可以取决于所压缩的信息类型而变化。预测图像(例如,逐行P帧或B帧、隔行P半帧或B半帧、或隔行P帧或B帧)按 照来自一个或多个其它图像(通常被称为参考图像或锚)的预测(或差)来表示。预测残 差是所预测的和原始图像之差。相反,关键图像(例如,逐行I帧、隔行I半帧或隔行I帧) 不参考其它图像来压缩。如果当前图像1005是预测图像,则运动估计器1010估计当前图像1005的宏块或 其它样本集相对于一个或多个参考图像(例如,缓存在图像存储1020中的重构的前一图像 1025)的运动。如果当前图像1005是双向预测图像,则运动估计器1010估计当前图像1005 中相对于多达四个重构的参考图像(例如,对于隔行B半帧)的运动。通常,运动估计器估 计B图像中相对于一个或多个在时间上先前的参考图像以及一个或多个在时间上未来的 参考图像的运动,但是B图像不需要从不同的时间方向来预测。编码器系统1000可对多个 参考图像使用单独的存储1020和1022。运动估计器1010可按照全样本、1/2样本、1/4样本或其它增量来估计运动,并可 在逐图像的基础或其它基础上切换运动估计的精度。运动估计器1010 (和补偿器1030)也 可在每一帧或其它基础上在参考图像样本内插的类型之间切换(例如,在双三次内插和双 线性内插之间)。运动估计的精度可以在水平和垂直上相同或不同。运动估计器1010输出 运动信息1015,诸如差分运动矢量信息作为辅助信息。编码器1000通过例如为运动矢量计 算一个或多个预测值,计算运动矢量和预测值之间的差分,以及对差分进行熵编码,来对运 动信息1015进行编码。为重构运动矢量,运动补偿器1030将预测值与差分运动矢量信息 组合。运动补偿器1030将重构的运动矢量应用于重构的图像1025,以形成经运动补偿 的当前图像1035。然而,预测很少是完美的,且经运动补偿的当前图像1035和原始的当前 图像1005之差是预测残差1045。在稍后的图像重构期间,将预测残差1045加到经运动补 偿的当前图像1035,以获得更接近于原始的当前图像1005的经重构的图像。然而,在有损 压缩中,某些信息仍从原始当前图像1005中丢失。或者,运动估计器和运动补偿器应用另 一类型的运动估计/补偿。频率变换器1060将空间域视频信息转换成频域(即,频谱)数据。对于基于块的 视频图像,频率变换器1060向样本数据或预测残差数据的块应用DCT、DCT的变体或其它块 变换,从而产生频率变换系数块。或者,频率变换器1060应用诸如傅立叶变换等另一常规 频率变换或使用小波或子带分析。频率变换器1060可应用8X8、8X4、4X8、4X4或其它 大小的频率变换。量化器1070然后量化频谱数据系数块。量化器向频谱数据应用均勻的标量量化, 其步长在逐图像的基础或其它基础(例如,逐宏块的基础)上变化。或者,量化器向频谱数 据系数应用另一类型的量化,例如非均勻的、矢量或非自适应量化,或直接在不使用频率变 换的编码器系统中量化空间域数据。以下详细描述某些实现中涉及量化的技术和工具。除自适应量化之外,编码器1000可使用帧丢弃、自适应滤波或其它技术用于码率 控制。
编码器1000可对跳过宏块使用特殊信令,该跳过宏块是某一特定类型的信息(例 如,没有关于宏块的差分运动矢量以及没有残差信息)的宏块。当需要重构的当前图像用于后续的运动估计/补偿时,反量化器1076在量化的频 谱数据系数上执行反量化。反频率变换器1066然后执行频率变换器1060的逆运算,从而 产生重构的预测残差(对于预测图像)或重构的关键图像。如果当前图像1005是关键图 像,则重构的关键图像用作重构的当前图像(未示出)。如果当前图像1005是预测图像, 则重构的预测残差被加到经运动补偿的当前图像1035,以形成重构的当前图像。图像存储 1020、1922之一或两者缓存重构的当前图像,以在经运动补偿的预测中使用。在某些实施例 中,编码器向重构的帧应用分块滤波器,以自适应地平滑图像中的不连续性和其它伪像。熵编码器1080压缩量化器1070的输出以及某些辅助信息(例如,运动信息1015、 量化步长(QP))。典型的熵编码技术包括算术编码、差分编码、哈夫曼编码、行程长度编码、 LZ编码、字典式编码以及上述的组合。熵编码器1080通常对不同种类的信息(例如,DC系 数、AC系数、不同种类的辅助信息)使用不同的编码技术,并可从特定编码技术内的多个代 码表中进行选择。熵编码器1080向多路复用器(“MUX”) 1090提供压缩的视频信息1095。MUX 1090 可包括缓冲区,并且一缓冲区等级指示符可被反馈给控制器。在MUX 1090之前或之后,压 缩的视频信息1095可被信道编码用于通过网络发送。信道编码可向压缩的视频信息1095 应用检错和纠错数据。控制器(未示出)接收来自诸如运动估计器1010、频率变换器1060、量化器1070、 反量化器1076、熵编码器1080和缓冲区1090等各个模块的输入。控制器评估编码期间的 中间结果,例如估计失真并执行其它码率_失真分析。控制器与诸如运动估计器1010、频 率变换器1060、量化器1070和熵编码器1080 —起工作以设置并改变编码期间的编码参 数。当编码器评估编码期间的不同编码参数选择时,编码器可迭代地执行某些级(例如,量 化和反量化)以评估不同的参数设置。编码器可以在前进到下一级之前设置一个级处的参 数。或者,编码器可以对不同的编码参数进行联合评估。要评估的编码参数判决的树以及 相应编码的定时取决于实现。编码器1000内的模块之间所示的关系指示了编码器中的一般信息流;为简明起 见,未示出其它关系。具体地,图10 —般不示出指示用于视频序列、图像、宏块、块等的编码 器设置、模式、表等辅助信息。这一辅助信息一旦被最终化,通常在该辅助信息的熵编码之 后在输出比特流中发送。视频编码器的具体实施例通常使用通用编码器1000的变体或补充版本。取决于 所需的实现和压缩类型,编码器的模块可被添加、省略、分成多个模块、与其它模块组合、和 /或用相似的模块来替代。例如,控制器可被拆分成与编码器的不同模块相关联的多个控制 器模块。在替换实施例中,具有不同模块和/或其它模块配置的编码器执行一个或多个所 描述的技术。III.使用知觉模型的视频内容的表征视频内容可以使用知觉模型来表征。这可以帮助编码器对不同种类的视频内容做 出适当的编码判决。编码器可在编码之前分析图像以提供对该图像的不同部分(例如,块、 宏块等)中的内容的表征。例如,视频图像中诸如蓝天等相对平滑的部分可被表征为对于引入失真是较不可接受的,因为在平滑区域中某些种类的质量降级(例如,量化伪像)更容 易被人类感知到。相反,在纹理区域中,失真一般较不会引起注意(因此较可接受)。参考图12,诸如以上参考图10描述的视频编码器在表征视频图像(例如,表征为 平滑区域、边缘区域、纹理区域等)的各部分(例如,宏块的块、宏块或其它区域)的过程 1200中实现自适应编码技术,并且根据该表征来自适应一个或多个编码技术。许多所描述 的技术提供了图像内的自适应编码,诸如在块、宏块或其它区域上。这些技术使用信息来对 图像的不同部分分类并相应地编码它们。更具体地,视频编码器基于其知觉特性来表征图 像的各部分以对内容进行分类。在1210处,视频编码器表征视频图像的一个或多个部分。例如,编码器基于块内 的强度变化来表征视频图像的块。在一个实现中,编码器对于块中的像素或块的经降采样 的版本计算一像素及其相邻像素之间的差的和。该差值的和测量了一像素及其周围像素之 间的强度变化。例如,周围像素包括与一像素相邻或近乎相邻的两个或更多其它像素,诸如 在一像素的上方或下方、左边或右边、或对角。一像素的强度与其周围像素的强度之差基于 亮度和/或色度数据中的差来计算。换言之,差是用亮度样本和/或色度样本来计算的。 一平均计算的差值被分配给该像素(例如,像素梯度)。对块中的各像素(例如,块梯度) 或对其某一二次采样集计算差值。评估分配给块中的像素的差值以确定对该块的表征或分 类(例如,平滑、边缘或纹理;纹理或非纹理;平滑或非平滑;等等),这可被表达为块值。在 一个示例中,评估对于块中的像素的像素梯度以确定对该块梯度的中间差值(例如,块中 值)。由此,块内的像素之间的强度差提供了对块、宏块或其它视频图像区域的强度变化的 测量。不需要块中值来确定块值。强度变化或块表征也可基于分配给块中的像素的差值 的平均值(例如,块平均值)。块中值或平均值可以用于对块进行分类和/或可用作对更细 粒度的控制函数的输入。该表征或控制函数自适应地改变编码的一个或多个方面。或者,代替计算强度变化来表征块,编码器使用另一度量。在1220处,编码器基于表征来自适应地编码视频图像。在一个实现中,用于轮廓 伪像的移除或减少的编码技术是基于块表征来执行的。例如,对某些平滑区域执行梯度斜 率检测、DC漂移检测、AC系数保存以及自适应差分量化,并且纹理化区域被更强地量化以 节省比特率。尽管图12示出了对于图像的多个部分表征级1210在自适应编码级1220之前,但 这些级也可在图像中在逐块的基础上迭代进行或者可以在某一其它基础上排序。在1230处,编码器用信号表示经自适应地编码的比特流。当编码器使用差分量化 来基于块表征编码时,例如,视频编码器使用用于向视频解码器发信号表示差分量化的信 令方案来编码压缩的比特流中的信息。在1240处,相应的视频解码器读取自适应地编码的比特流,包括对视频图像已编 码数据。例如,视频解码器读取用信号表示的差分量化信息。在1250处,解码器解码压缩 的比特流,例如根据用信号表示的差分量化信息来对块解量化。A.示例的基于块的表征图13是示出用于使用亮度和/或色度数据来表征块的基于块的操作的图示。亮 度块“Y”(1302)是4:2:0宏块格式的宏块的8x8的块。尽管并非所需,但在该示例中,在计
15算梯度块1308时也使用了像素块的相应色度块1304、1306。尽管并非所需,但如在本示例 中所示的,亮度块1302在水平和垂直上按照因子2来降采样1312 (例如,通过对样本对进 行简单的求平均)以创建匹配色度块的4x4维度的亮度块1310。如在经降采样的亮度块1310中所示的,将像素1314的亮度样本的强度值与在经 降采样的亮度块1310中靠近它的四个像素的样本进行比较,并且计算像素1314的样本与 其周围的垂直和水平像素的样本之差的平均和。在该示例中,像素1314位于位置Y’ (r,c) 处。与其周围像素比较的该像素1314的亮度强度值的差的平均和为L1 (r, c) = [| Y,(r, c)_Y,(r, c_l) | + |Y,(r, c)_Y,(r-1, c) | + |Y,(r, c)_Y,(r, c+1) I +1 Y,(r, c) -Y (r+1,c) | ] /4(5)如图所示,Y’(r,c)是经降采样的块Y'中行r列c处的像素1314的亮度分量。 L1(I^c)提供了像素1314的亮度强度如何有别于块Y'内的其邻居的指示。该亮度强度差 测量是像素梯度的一个示例。可任选地,色度数据1304、1306可代替亮度数据被单独考虑,或者可与亮度数据 一起考虑来确定强度差。对于像素1314的亮度强度值和色度强度值的差的平均和可被表 示为周围像素的样本的强度值中的差的平均值,如在以下等式中所示G1 (r, c) = {[|Y,(r,c)_Y,(r,c_l)| + |Y,(r,c)_Y,(r_l,c)| + |Y,(r,c)_Y,(r, c+1) | + |Y,(r,c)-Y,(r+l,c) ] + [|U(r,c)-U (r, c-1) | +1U (r,c)-U (r_l,c) | +1U (r,c)-U (r, c+1) +|U(r, c)-U(r+1, c) ] + [|V(r, c)-V(r, c-1) | + |V(r,c)-V(r-1, c) | + |V(r,c)-V(r, c+1) +|V(r, c)-V(r+1,c) ]}/12(6)G1 (r, c)是对于经降采样的块中位于(r,c)处的像素的像素梯度,并且该像素梯 度提供了关于像素1314的亮度和色度强度如何有别于其周围像素邻居的指示。在此示例 中,像素梯度值G1(I^c)基于直接垂直或水平的像素,但是未考虑邻域中的其它像素。构想 了在其它变体中在创建像素梯度时也可考虑其它像素数据。例如,作为所提供的安排的一 部分或其替代,可考虑对角像素。或者,可考虑较长一段路程(例如,2或3个像素)上的强 度差οG^r, c)提供了关于单个像素的亮度和色度强度如何有别于其邻居的指示。为了 表征整个块的强度变化,对块内的多个或所有像素执行相同的分析。在一个这样的示例中, 创建像素梯度块1308,并且从中导出块梯度。如所指出的,计算像素梯度或块梯度可以包括 单独的亮度比较、单独的色度比较、或亮度比较和色度比较两者。如有需要,可改变以上用于找出G1(I^c)的等式以解决遗漏的块边界值。例如,在 块外部的样本在自适应等式G1 (r, c)以解决边界值时可被外插或假定为与块内的其它相邻 样本相同。或者,可以减少该等式的分母且在比较中忽略某些方向上的周围样本,例如在这 些周围样本位于块外的情况下。如图所示,像素梯度块1308可以提供关于块中的所有像素 的像素梯度数据。或者,像素梯度块1308可以包括关于块中少于所有像素的像素梯度数 据。图14是图13的块1308中的多个像素梯度的直方图。更具体而言,直方图1400提 供了关于块可如何被表征或求值的可视化。在该示例中,存在30以下的8个像素梯度值,以 及30以上的8个像素梯度值。因此,对于该块梯度的中值是30。(对于偶数的候选值,中 值可以被计算为两个中间候选值的平均,或被计算为两个中间候选值中的一个或另一个。)中值可用于将块表征为平滑、纹理或边缘。当然,一旦获得了像素梯度或像素梯度块,就可 使用其它度量来表征块。例如,块可以根据像素梯度值的平均值来表征。一旦分配了块值, 它就可在表征方案(例如,平滑或非平滑;平滑、纹理、边缘;等等)中使用或在更细粒度的 控制函数中使用。块值可用于确定在自适应编码策略中如何处理块。块值可通过对多个像素梯度排序并从经排序的值中选择中间梯度值来选择。例 如,块内的一组像素梯度,诸如{10,14,28,36,38},具有所分配的等于该组中的中间像素梯 度,即28的块值。在另一示例中,块值基于该组中的平均梯度,即对于前述数值示例为25. 2 来确定。当然,该组可以从完整的块梯度或其子集中获得。C.对表征信息的示例使用图15是继续了图13和14的示例的示例块表征框架的图。如图所示,具有范围从 0直到30 (包括30)的块值的块将被表征为平滑块。具有大于30但小于或等于60的范围 内的块值的块将被表征为纹理块,而具有大于60的块值的块将被表征为边缘块。或者,编码器使用例如包括关于块或视频图像的其它部分的其它和/或附加表征 的另一表征框架。对于不同的梯度和度量,该框架可在比例和/或维数上变化。编码器可在做出编码判决时使用块或视频图像的其它部分的表征。表2涉及如参 考图15所描述的块表征的一个示例性自适应编码方案的特征。如图所示,不同地表征的块 在一个或多个自适应特征方面被不同地对待。 表2:自适应编码特征表2所示的各种自适应特征贯穿本文讨论,并且将在下文中进一步讨论。或者,编 码器对于块表征使用另一自适应特征判定映射。此外,此处所描述的某些特征不需要考虑 视频内容的表征。IV.基于纹理水平的差分量化在差分量化中,编码器对于图片的不同部分改变量化步长(此处在某些实现中也 称为量化参数或QP)。通常,这涉及在宏块级或其它子图像级上改变QP。编码器做出关于 如何改变QP的判决,并且可将这些判决适当地用信号通知给解码器。早先的解码器使用了双级差分量化(在两个QP之间变化)和多级差分量化(在 三个或更多QP之间变化)。例如,在一个双级差分量化方法中,对图像边缘处的宏块使用一 个QP,而对图像其余部分中的宏块使用另一 QP。这对于在图像边缘处节省比特是有用的, 在边缘处,精细细节对于保持总体视觉质量较不重要。在多级差分量化方法中,可对图像中 的各个宏块使用更大数量的不同QP。例如,编码器可对宏块选择一 QP并用信号表示用于当 前图像的QP和用于宏块的QP之间的差分。
对量化伪像的知觉敏感性与空间和时间域中视频的纹理水平高度相关。高纹理水 平通常导致可能会隐藏质量降级和量化伪像的掩蔽效应。然而,在具有较低纹理水平的区 域(例如,平滑区域)中,降级和量化伪像更可见。尽管早先的编码器对于视频图像的某些 部分(例如,图像边缘)做出了量化调整,但是此处所描述的更全面的基于内容的差分量化 策略在许多情形中提供了改进的码率_失真性能。因此,许多所描述的技术和工具使用基于纹理的差分量化(此处称为纹理DQ)来 基于各种纹理水平分配比特以实现更好的感知质量。在纹理DQ中,基于纹理信息,并且在 某些情况下基于诸如时间分析信息等其它信息,选择不同QP来编码视频。编码器分析纹理 信息(以及可能的其它信息)并向适当的区域(纹理DQ区域),诸如图像中的8x8的块或 宏块应用纹理DQ。许多所描述的技术和工具集中于平滑区域作为潜在纹理DQ区域。平滑 区域包括平坦区域(恒定或几乎恒定色彩的区域)以及梯度斜率区域(以恒定或几乎恒定 的速率在区域上变化的色彩的区域)。平滑区域即使在被小噪声区域、膜颗粒或其它色彩变 化中断时也可被认为是平滑的。图16是示出用于基于纹理信息来应用差分量化的通用技术1600的流程图。诸如 图10的编码器1000等编码器或其它工具执行技术1600。在1610处,编码器获得关于当前图像的纹理信息(例如,指示不同区域是平滑、 边缘还是纹理区域的表征或块值)。在1620处,编码器找出当前图像中的一个或多个纹理 DQ区域(例如,其中可能存在轮廓伪像的平滑区域)。在1630处,编码器向(诸)纹理DQ 区域应用纹理DQ并编码该图像。例如,平滑区域用比高纹理区域小的QP来编码。如果有 更多图像要编码,则编码器在1640处取下一图像,并适当地向下一图像选择性地应用纹理 DQ。编码器将关于视频图像的已编码数据输出到例如存储、通信连接或缓冲区。可使用不同的纹理DQ区域检测技术来确定一区域是否应作为平滑区域来对待。 例如,编码器可使用不同的纹理度量和/或不同的纹理阈值(并且可自适应地调整阈值) 来确定一特定区域是否应被认为是纹理DQ区域。可使用自适应量化值映射来分配比特以 得到更好的感知视频质量。差分量化判决也可基于时间分析(例如,查看将来的图像以随 时间的推移基于区域的特性来做出判决)。可对帧内图像和预测图像两者做出差分量化判决。对于预测的图像,可控制差分 地量化的图像之间的P和B图像差分量化区间。此外,通过观察当存在主导高纹理区域时 的图像纹理,可放松平滑区域纹理阈值以用较小的QP来编码相对平滑的区域(与主导高纹 理区域相比)。类似于以上第III节中参考图12-15描述的那些技术的技术可用于对当前图像生 成纹理图。例如,如在第III节中所描述的,编码器将关于图像的纹理水平的梯度计算为该 图像的Y、u和V通道中的一阶倒数(差)。当宏块格式是4:2:0时,为加速计算过程,编码 器可按照2:1的因子水平和垂直地对Y通道进行降采样。编码器对水平和垂直方向中的每 一像素的Y、U和V的梯度求和。对于全分辨率的8x8的块,编码器计算经降采样的图像中 的相应4x4的块中的梯度的和的均值以用作块梯度值。计算梯度均值与计算如第III节中 所描述的中值相比具有较低的计算复杂度。或者,编码器以某一其它方式获得关于图像的纹理信息。例如,编码器选择不同的 梯度方向来计算梯度、仅对亮度通道计算梯度等等。然而,获得或计算纹理信息,其然后可
18用于做出纹理DQ判决。纹理图指示了图像的不同部分的纹理水平。例如,纹理图可用于标识图像中的平 滑区域(例如,块、宏块、边缘或其它区域)和纹理化区域。所描述的差分量化技术可以基 于纹理图中的信息来对图像的适当部分执行。或者,编码器使用纹理信息而不首先创建纹 理图。A.时间分析除了来自当前视频图像的纹理信息之外,可使用时间分析来做出准确的差分量化 判决。使用时间分析的一个理由是对平滑区域使用较小QP的影响在该平滑区域在几个图 像上都保持平滑的情况下,尤其是当其它图像在运动补偿中引用该平滑区域的时候将变得 更大。相反,使用较小QP的一个好处在用将来图像中的高纹理或边缘块替换平滑块的情况 下将失去。因此,编码器在找到当前图像中的平滑区域之后查看将来图像,并且基于将来图 像中的区域改变的平滑度如何来做出差分量化判决。编码器还可查看先前的图像,例如显 示次序在当前视频图像之前但在运动补偿中引用了当前视频图像的B图像。图17示出了用于使用时间分析来做出纹理DQ判决的示例技术1700。诸如图10 的编码器1000等编码器或其它工具执行技术1700。在1710处,编码器对视频序列中的当前图像中的当前块执行纹理分析。例如,编 码器查看该块的梯度信息。编码器可将该梯度信息与用于该块的梯度阈值进行比较,并将 该块分类为平滑或非平滑(例如,纹理、边缘),其中梯度阈值是固定的或对视频序列的当 前图像或其它部分动态地设置。或者,编码器对当前图像中的某一其它部分执行纹理分析。在1720处,编码器执行时间分析。编码器可以自动执行该时间分析,或者仅当当 前块被分类为平滑块时执行该分析。例如,编码器确定当前图像中的平滑块是否在将来图 像中保持平滑。如果是,则当前图像中的平滑区域稍后用较小的QP来编码。或者,编码器 确定当前图像中的平滑块是否在先前的图像或者先前和将来的图像两者中也是平滑的。编码器所分析的先前和/或将来图像的数目可以取决于实现而变化。如果平滑区 域在将来图像(例如,下一图像或某一其它时间上接近的图像)中被一纹理化区域替换,则 当前图像中的该平滑区域可能用较大的QP来编码,因为使用较小QP的优点可能并不那么 持久。在一个实现中,在做出差分量化判决时,时间上更靠近的图像与更远的图像相比被加 权更多。编码器所查看的先前和/或将来图像的加权和数目可以取决于实现而变化。为简化计算,编码器可找到单个值以比较当前块和将来图像中的相应块。例如,由 于亮度值在平滑块中是相当一致的,因此计算块的亮度值的均值以测量将来图像中的相应 块的相似性。在以下示例等式中,将来图像中的相应块的将来平滑度的“强度”S(t)通过当 前块和将来块中的相应块的平均亮度值、两个将来图像中的相应块的平均亮度值等等之间 的加权绝对差的和来计算。 其中η是时间上“超前”的图像的总数,C(n)是归一化因子,其被定义为2/ (n*(n+l)),而M(t)是时刻t处图像中的块(或相应块)的亮度值的均值。编码器还可测 量过去的平滑度来代替将来的平滑度或作为其补充。或者,编码器在平滑度的时间分析中 使用另一加权系统和/或平滑度度量。
再次参考图17,在1730处,编码器使用纹理分析和时间分析的结果来确定是否将 该块分类为纹理DQ块。例如,编码器对平滑块(但非其它块)计算平滑度强度S (t),并将 该平滑度强度S(t)与时间平滑度阈值进行比较。该时间平滑度阈值可以是固定或动态地 设置的。在图17中,如果编码器发现当前块是平滑块并且先前和/或将来图像中的相应块 也是平滑的,则编码器在1740处将当前块加到纹理DQ块的计数。编码器可使用纹理DQ块 的计数来确定是否对该图像执行纹理DQ。或者,编码器以某一其它方式使用时间分析来做 出纹理DQ判决。如果有更多的块要分析,则编码器在1750处取下一块并重复图17所示的过程。这 继续直到编码器评估了当前视频图像的各块。此时,编码器在编码判决中使用平滑块计数 或时间分析的其它结果。尽管图17示出了在逐块的基础上执行时间分析,但是替换地,编码器在逐宏块的 基础或某一其它逐区域基础上执行时间分析。 B.纹理DQ阈值和隔离平滑块滤波不论编码器是否使用时间分析,编码器在决定何时应用纹理DQ时都可使用若干 其它机制。编码器可使用一个或多个流行的阈值(例如,图像中的平滑块的百分比)来做 出关于是否执行DQ、以及如果是则用于纹理DQ区域的QP应有多精细的判决。例如,如果图 像中的平滑块的数目或百分比在一阈值之上,则编码器可选择一较粗略的步长来避免花费 太多比特来用小QP编码平滑内容。编码器还可具有较低的阈值来确定平滑块的数目或百 分比是否足够以在图像中完全使用纹理DQ。降低比特率的另一种方法是在某些平滑块位于主导的纹理化区域中时将这些平 滑块作为纹理块来对待。这可被称为隔离平滑块滤波(尽管平滑块不必完全“隔离”以用 此方式来滤波)。例如,纹理化块所围绕的平滑块不必用比纹理化块小的QP来编码,因为平 滑块中的量化伪像可能被周围的纹理化内容所掩蔽。结果,编码器可选择不对隔离平滑块 执行纹理DQ。编码器还可在计算图像中的平滑块的数目或百分比时不考虑隔离平滑块。图18示出了用于使用阈值和隔离平滑块滤波来做出纹理DQ判决的示例技术 1800。诸如图10的编码器1000等编码器或其它工具执行技术1800。在1810处,编码器找出当前图像中的平滑块。例如,编码器如参考图17所描述地 执行纹理分析和时间分析。或者,编码器以某一其它方式找出当前图像中的平滑块。在1820处,编码器执行隔离平滑块滤波。例如,编码器移除当前图像中被非平滑 块围绕的单个平滑块。编码器可使用不同的判决模型来执行隔离平滑块滤波。例如,编码 器可选择仅在一平滑块的所有相邻块都是纹理化块时才将该平滑块作为纹理化块来对待。 或者,编码器可选择在一平滑块的特定数目的相邻块是纹理化块时将该平滑块作为纹理化 块来对待。或者,编码器移除较大组(例如,2或3)中的隔离平滑块,和/或使用对于块是 否被隔离的某一其它测试。在1830处,编码器对照一低阈值(例如,图像中的总块数的1-2% )来检查图像中 的平滑块的百分比。如果平滑块的百分比落在该低阈值之下,则编码器确定对该图像将不 使用纹理DQ(1840)。如果平滑块的百分比在该低阈值之上,则编码器在1850处对照一高阈 值检查该百分比。该较高的阈值用于为平滑块选取QP。如果该百分比高于该高阈值,则编码器执行纹理DQ,但是对平滑块选择较粗略的QP(1860)来降低比特率。否则,编码器对平 滑块选择较精细的QP (1870)。如果有更多图像要分析(1880),则编码器可对其它图像重复 该过程。阈值的数目和阈值百分比值可以取决于实现而变化。或者,编码器执行隔离平滑块滤波而不使用纹理DQ阈值,或使用纹理DQ阈值而不 执行隔离平滑块滤波。或者,编码器执行纹理DQ而不执行隔离平滑块滤波,也不使用DQ阈值。C.自适应纹理水平阈值编码器可使用固定纹理水平或平滑度阈值来确定给定块是否应被认为是纹理DQ 块(例如,平滑块)。考虑DQ信令的比特率成本(例如,在“全宏块”双级DQ信令情形中为 每宏块一比特)和以较小的QP量化图像的某些部分的比特率成本,阈值担当对纹理DQ的 成本的检验。例如,编码器获得关于块的块值(使用参考图13和14所描述的技术或某一 其它技术)并将该块值与一固定纹理水平/平滑度阈值(例如,参考图15所描述的阈值) 进行比较。编码器还可自适应地改变纹理水平/平滑度阈值。例如,由于平滑块的可感知性 可能在具有大量高纹理内容的图像中改变,因此用于将块分类为平滑块的纹理水平阈值在 中等纹理或高纹理图像中可被放松。这是自适应纹理水平阈值的一个示例。编码器可允许 在一阈值范围内选择若干不同的阈值。在一个实现中,用于平滑块的自适应纹理水平阈值 可以在块值14和块值30之间变化。可对不同的纹理水平阈值使用不同的差分量化映射。 自适应纹理水平阈值可用于向较高纹理帧中的较平滑区域分配比特以改进较平滑区域中 的质量。图19示出了用于对高纹理图像选择性地调整纹理水平阈值的技术19。诸如图10 的编码器1000等编码器或其它工具执行技术1900。编码器通过检测图像中主导高纹理内 容的存在来确定是否要调整纹理水平阈值。在一个实现中,对高纹理内容的检测是通过计 算纹理直方图中大小为10的滑动窗中的纹理“能量”来实现的。参考图19,编码器在1910处以自适应纹理水平阈值技术1900获得图像的纹理信 息(例如,纹理水平直方图)。例如,编码器获得如上所述的纹理图并从该信息中创建纹理 水平直方图。在1920处,编码器检查该图像是否是高纹理图像。如果该图像是高纹理图像,则 编码器在1930处调整用于该图像的纹理水平阈值。如果该图像不是高纹理图像,则编码器 处理该图像而不调整纹理水平阈值(1940)。编码器然后可分析并选择用于其它图像的纹理 水平阈值(1950)。或者,编码器对图像中不同水平的高纹理内容应用不同纹理水平阈值的 滑动比例。例如,为检查图像中主导高纹理内容的范围,编码器为该图像计算纹理直方图。编 码器应用纹理直方图中的滑动窗以计算纹理能量并确定峰值或主导高纹理带。等式(8) 示出了供编码器用于在该窗中计算纹理能量的一种方式。该滑动窗从最小纹理水平阈值 g0(默认为30)开始滑动,并且编码器计算g0处的窗值W(g)。该滑动窗在为该窗计算了纹 理能量之后向右移动1,并且编码器计算在新的g0值处开始的下一窗值W(g)。该过程继续, 直到编码器到达直方图中所示的纹理水平的最大值。设F(g)为每一像素的纹理水平的直方图。设E(g)为该纹理水平的纹理能量,其中E(g) =F(g)*g。编码器如下计算滑动窗的纹理能量W(g) g0+l0W{g)= Y{F{gyg)(8) 如果最大滑动窗能量W(g)超过总图像能量的某一特定百分比阈值,则使用对于 该最大滑动窗能量w(g)的go来调整用于平滑区域的阈值。图20示出了用于从g0确定新的自适应平滑区域阈值的伪代码2000。如果g0大 于100,则自适应阈值被设为30。编码器还检查go是否小于30,如果是,则将自适应阈值设 为14。否则,如果30彡g0 < 100,则自适应阈值被设为来自表gjFlatThTable的值。为 帮助维持视频质量,对除了场景改变关键图像之外的所有图像,将新的自适应阈值与上一 个自适应阈值的最大差设限为+/-4。自适应平滑阈值不应超过用于标识纹理化块的阈值一 例如,在图20中,最高自适应阈值为30。或者,编码器以某一其它方式(例如,采用不同的纹理强度或能量度量、不使用滑 动窗、使用不同地配置的滑动窗、使用表或其它数据结构中的不同阈值、不对自适应阈值之 差设限、以某一其它方式对自适应阈值之差设限等等)来自适应地调整纹理水平阈值。D. I图像和P图像差分量化所描述的差分量化技术和工具可单独或组合地用于帧内图像和预测图像。术语I 图像差分量化(I图像DQ)指的是向I图像应用差分量化,而术语P图像差分量化(P图像 DQ)指的是向P图像应用差分量化。使用I图像DQ得到更高质量的I图像,并且对于依赖 于这些I图像的预测图像可以更长时间地维持质量改进。P图像DQ可以进一步在帧内和帧 间块中改进P图像质量,但是这些P图像的质量也依赖于从中预测它们的图像的质量。类 似地,P图像DQ对稍后预测的图像的质量的影响将依赖于稍后预测的图像与从中预测它们 的图像的相似度。E.差分量化区间I图像DQ和P图像DQ都使用一种或多种此处所描述的技术来决定是否对不同纹 理水平的块应用不同的QP。为平衡质量和比特使用,可使用P图像DQ区间来控制花费在P 图像DQ上的比特量。例如,编码器选择对每η个P图像中的一个使用P图像DQ,其中η彡1, 但是对差分地量化的P图像之间的区间中的图像跳过P图像DQ。编码器将比特花费在差分 量化上以改进某些P图像的感知质量,并且这些质量改进延续到其它预测图像中。同时,DQ 区间有助于约束编码器花费在预测图像的差分量化上的总比特数。或者,编码器选择另一区间。例如,编码器可选择对每一 I图像仅对一个P图像使 用P图像DQ,或选择某一其它区间。区间可以是固定或自适应的。例如,编码器可以基于所 编码的内容的类型来自适应地调整P图像DQ区间。V.梯度斜率检测在引入到视频压缩中的各种视觉伪像中,轮廓是因量化引起的一种具体伪像。轮 廓伪像被人类眼睛感知为在诸如天空、水等本应是连续的、非常平滑的区域中的结构化的、 梯度不连续性。这一不连续性可能非常令人分心,并且可能导致人类观察者即使在图像的 其它部分是以极少的视觉失真编码的情况下也得出整个图像有较坏的失真的结论。梯度斜率区域可以引起轮廓伪像。根据一种定义,如果一区域是平滑或相对平滑 的,但是像素值在该区域内逐渐改变,则该区域被认为是梯度斜率区域。由此,尽管梯度斜
22率区域和平坦区域都被认为是平滑区域,但梯度斜率区域与平坦区域不同。根据一种定义, 平坦区域是由遍布整个平坦区域恒定或相对恒定的像素值来表征的。梯度斜率区域通常缺 少强边缘和大范围的纹理细节。图21示出了梯度斜率区域的两个示例。每一区域中的梯度斜率方向由箭头来表 示。在梯度斜率区域2100中,亮度值从该区域的顶部到底部逐渐增加。梯度斜率区域2100 中的斜率的方向在该区域的每一部分中都是相同的。在梯度斜率区域2110中,亮度值从该 区域的中心到边缘逐渐增加。梯度斜率的方向在梯度斜率区域2110内变化。然而,在小邻 域中,每一点处的梯度斜率方向在该邻域中的其它点处的梯度斜率方向的小角θ内,包括 该中心点的邻域除外。如图21所示,梯度斜率区域包括其中梯度斜率方向在整个区域中恒 定的区域,以及其中梯度斜率方向在邻域中具有小变化的区域。图22Α是示出具有梯度斜率区域2210、纹理化区域2220、锐边区域2230和平坦区 域2240的示例图像2200的图示。图22Β是示出梯度斜率区域2210中的量化结果的图示。 现在可见(例如,在宏块2250内)带状效应是轮廓伪像。图22C示出了宏块2250的细节。 宏块2250中的上半部分亮度样本的变换系数的量化导致起源于DC值68的均勻值。宏块 2250中的下半部分亮度样本的变换系数的量化导致起源于DC值70的均勻值。由此,亮度 样本的变换系数的量化造成了宏块2250中上半部分8x8的块和下半部分8x8的块之间的 可见轮廓伪像。许多现有的视频编码器使用了应用于整个视频图像的技术以试图减少图像中的 轮廓伪像。这些技术可导致花费过多的比特,尤其是在包含极少或没有轮廓伪像的区域中。 因此,若干所描述的技术和工具允许编码器检测可能发生轮廓伪像的梯度斜率区域。当检 测到梯度斜率区域时,编码器可以做出减少或避免在梯度斜率区域中引入轮廓伪像的编码 判决(例如,对QP的调整)。通过这样做,编码器可以更高效地分配比特并达到更好的视觉 质量。为检测梯度斜率区域,编码器可实现以下技术中的一种或多种1.具有集中于减少或移除所检测的区域中的轮廓伪像的引入的编码判决的地图 斜率区域检测。2.减少计算成本和/或尽管在存在诸如膜颗粒等异常的情况下也允许准确的梯 度斜率区域检测的基于区域的梯度估计和降采样。3.检测局部邻域中的逐步梯度改变的梯度一致性检验。4.做出关于图像中的梯度斜率区域的存在的二分判决的桶投票。5.帮助编码器做出适当的编码判决的梯度斜率掩码(例如,在宏块级)和梯度方 向图的生成。图23示出了通用的基于区域的梯度斜率检测技术2300。诸如图10的编码器1000 等编码器或其它工具执行技术2300。在某些情况下,基于区域的梯度斜率检测技术2300允 许通过消除对图像中的每一像素找到梯度斜率方向的需求来允许对梯度斜率内容的更快 检测。例如,图像被划分成相同大小的非重叠矩形区域。区域的大小可以取决于实现而变 化。在一个实现中,区域是16x16的宏块(4个8x8的块)。较佳地,区域是允许宏块对齐的 大小。在2310处,编码器检查当前区域是否是平滑区域。例如,编码器使用其中如果8x8
23的块被分配的块梯度值小于30则该块被表征为平滑的图像的纹理图,或者编码器使用利 用在第III或IV节中描述的另一技术的对当前区域是否为平滑的检验。当一区域包括多 个块时,如果包含在该区域中的所有块都是平滑的(或者替换地,如果某一最小数量块是 平滑的),则该区域被认为是平滑区域。不同的实现可使用不同的准则来确定一特定区域或 块是否为平滑的。例如,用于确定一区域是否平滑的准则在图像被降采样的情况下可以不 同。如果一区域不是平滑的,则处理下一区域(2230)。对于平滑区域,编码器在2330 处找出梯度方向。例如,编码器使用诸如参考图26和27所描述的技术来找出梯度方向。或 者,编码器用某一其它技术来找出梯度方向。在2340处,编码器使用依赖于用于对该区域找出梯度方向的技术和度量的阈值 和/或判决制定逻辑来对该区域做出梯度斜率判决。如果有更多区域要处理,则编码器处 理下一区域(2320)。在一个实现中,在对图像中的不同区域计算了初始梯度方向之后,编码 器通过在图像中应用滑动窗来生成指示不同区域中是否存在梯度斜率的二进制掩码。该二 进制掩码中的信息允许编码器做出准确的梯度斜率判决。图24是诸如图10所示的视频编码器中的示例梯度斜率区域检测器(GSR检测 器)2400的框图。GSR检测器2400取来自当前图像2405的像素数据作为输入。取决于图像大小和可能的其它因素,GSR检测器2400确定是否在降采样模块2410 中执行降采样。示例降采样技术如下所述。梯度计算器2420取(可能经降采样的)像素数据和纹理图2425作为输入,并计 算平滑区域的梯度。例如,梯度计算器使用诸如参考图26和27所描述的技术或使用某一 其它技术。梯度计算中的一个示例区域大小是16x16,但是区域的大小可以取决于实现而变 化。取决于是否应用降采样以及应用了多少降采样,对其计算梯度的区域可以表示原始图 像2405中不同数量的区域。梯度计算器2420输出指示平滑区域的梯度方向的映射表或其 它数据结构。一致性检验器2430取对平滑区域所计算的梯度,并例如如下所述地检验这些梯 度的角一致性。一致性检验器24产生指示所计算的梯度的一致性信息的一致性映射表或 其它数据结构。判决模块2440使用附加判决规则(在一致性检验之后)来确定平滑区域是否应 被认为是梯度斜率区域。示例判决规则和准则如下所述。判决模块2440考虑指示一致性 信息的一致性映射表或其它数据结构,并且还考虑所计算的梯度方向或其它信息。判决模 块2440输出关于与梯度计算中使用的区域大小相同或不同大小的区域的映射表或其它数 据结构中的判决信息。对每一区域的判决被提供给掩码生成器2450,后者产生指示用于图像中的各区域 的梯度斜率判决的梯度斜率掩码和/或二进制梯度斜率掩码2495。例如,掩码2495包括对 每一梯度斜率区域等于“1”的比特,以及对其它区域等于“0”的比特。接受所计算的梯度 作为输入,考虑了降采样和掩码判决,掩码生成器2450可产生指示原始图像的不同区域的 最终梯度斜率的另一掩码2495。当GSR检测器2400在梯度计算之前执行降采样时,掩码生 成器2450可以将经降采样的区域的梯度斜率分配给原始图像的相应区域。GSR检测器2400的组件在图24中被示为分开的模块,但是这些组件的功能可取决于实现被重新排列、组合或拆分成不同的模块。此外,梯度斜率检测器2400的组件在其它 实现中可被省略。例如,不需要降采样。GSR检测器不需要取纹理图作为输入,并且可改为 从某一其它源获得关于一区域是否平滑的指示。GSR检测器不需要使用一致性检验器。尽 管GSR检测器将做出关于一区域是否为梯度斜率区域的某种判决,但是如何做出判决的细 节(包括判决模块中的判决规则)可以取决于实现而变化。梯度斜率判决不需要被包括在 二进制掩码中,并且可以某一其它方式传递给编码器的其它部分。A.具有降采样的基于区域的梯度方向估计降采样可在找出区域的梯度方向之前使用以降低计算成本。在一种实现中,如果 原始图像宽度大于1280且高度大于720,则对原始图像进行4-1降采样。例如,在图像宽度 为1920像素且图像高度为1080像素的IOSOp安排中,解码器产生宽度为480像素且高度 为270像素的经降采样的图像。通常,经降采样的图像被划分成相同大小的非重叠矩形区域。例如,在降采样之 后,每一 16x16的区域对应于原始的、全分辨率图像的4个宏块(16个块)。如果经降采样 的图像中的区域所对应的至少12个块是平滑的,则该区域被认为是平滑区域。区域大小取 决于实现,并且梯度估计中的区域和原始图像中的区域之间的关系取决于降采样比率而变 化。降采样也可用于在尽管存在诸如膜颗粒等异常的情况下也能改进梯度斜率区域 检测的准确度。例如,考虑如图25所示的具有DC块值的一部分图像2500。图像部分2500 的大部分具有一致的梯度斜率方向,如由从该图像部分的顶部到底部逐渐增加的DC值所 示的。然而,白样本值表示受到膜颗粒影响的DC值,这造成了全分辨率下的异常梯度斜率 方向。采用水平和垂直的简单2-1降采样,使用深色边框的样本值来计算梯度斜率方向。由 于经降采样的值维持一致的梯度斜率,因此膜颗粒不影响梯度斜率的检测。降采样可用于其它图像分辨率,并且也可使用其它降采样比率。B.计算梯度斜率方向在一个实现中,为对平滑区域计算梯度斜率方向,向该区域应用两个16x16的罗 盘算子Kh和Kv (在图26中定义)。这产生对于该区域的两个梯度&、gY,一个对应于水平方 向,一个对应于垂直方向。对于16x16的区域,该罗盘算子对该区域的某些值给予正权重, 而对该区域的其它值给予负权重。或者,该罗盘算子以某一其它方式计算梯度。从两个梯度中导出梯度方向的角表示,表示为θ,并将其映射到
中的整 数。图27中的伪代码2700示出了用于使用图26的罗盘算子来对区域计算梯度方向的示 例例程( 表示逐元素的乘积)。如果该区域是纹理化区域或边缘区域,则该例程返回-2。 如果该区域是平滑但是平坦的(由关于该区域的梯度&和gY的低绝对值指示),则该例程 返回-1。否则,该例程计算梯度斜率为垂直梯度gY在水平梯度&上的反正切,其中使用偏 移量以在同一反正切值的梯度斜率之间区分(例如,正的反正切值是指示右上斜率还是左 下斜率),并将斜率值的范围表示为正数。或者,以某一其它方式计算梯度。例如,编码器使用不同的罗盘算子、对斜率区域 的不同阈值、计算斜率的不同逻辑、和/或对斜率信息的不同表示。C.邻域梯度一致性检验编码器可以对区域执行梯度一致性检验以帮助做出关于一区域是否应被认为是梯度斜率区域的准确判决。梯度一致性检验有助于避免梯度斜率内容检测中的“假警报”。 在一个实现中,梯度斜率一致性检验涉及使用3x3的滑动窗(三个区域乘三个区域)来确 定梯度斜率一致性。图28示出了用于对梯度斜率区域执行一致性检验的技术。诸如图10的编码器 1000等编码器或其它工具执行技术2800。在2810处,编码器将滑动窗定位在图像中的当前区域处。在2820处,编码器检验 滑动窗中的区域的梯度方向。然后,在2830处,编码器对当前区域做出一致性判决。例如, 给定(可能经降采样的)图像中所检测的平滑区域的梯度方向,使用包含3x3的相邻区域 的滑动窗来执行梯度一致性检验。该窗以光栅扫描顺序移动,从而将该窗定位在图像中的 一区域上(例如,通过使窗中心位于该区域上、执行一致性检验、然后将该窗在图像中从左 向右移动)。对于给定窗值,一致性检验要求该窗内的所有9个区域的最大和最小梯度方向 (参见例如图27)之差小于32 (等价于当斜率由从0到255的数字来表示时的45度)。如 果满足该条件,则对于3x3的区域集的移动窗值为1 ;否则其为0。或者,编码器使用一不同 的机制来检验斜率方向的一致性,例如,使用不同大小的滑动窗、对最大斜率一最小斜率的 不同斜率范围阈值、诸如关于斜率一致性的方差等不同的度量、和/或不同的检验模式,或 对每一区域而非对区域集计算滑动窗值。一致性检验对斜率信息的不同表示变化。编码器然后可处理下一区域集(2840)。作为输出,编码器产生指示判决信息的掩 码或其它数据结构。例如,编码器产生通过定位滑动窗并对图像中的区域集执行一致性检 验,并向每一区域集分配判决1( 一致斜率)或0来获得的二进制一致性掩码(此处称为 consistencyMask)。可任选地,编码器对判决信息执行进一步的处理。在某些实现中,编码器对一致性 掩码执行形态运算以帮助细化关于图像的梯度一致性判决。两种可能的形态运算是侵蚀 (Erode)和膨胀(Dilate)。例如,侵蚀运算对consistencyMask中的每一比特执行,之后是膨胀运算。在侵蚀 运算中,如果在四个最接近的像素(此处为consistencyMask中的值)中,有一个以上最初 被标记为0,则最初被标记为1的比特被标记为0。在膨胀运算中,如果在四个最接近的像 素中有一个以上最初被标记为1,则最初被标记为0的比特被标记为1。或者,编码器生成掩码而不使用形态运算或判决信息的其它后处理。D.判决规则和桶投票即使是在执行了一致性检验之后,平滑区域的发生率也可能相当低,或者平滑区 域可能被隔离,以致于其不足以被特别地编码。例如,即使在应用了形态运算之后,仍可能 有consistencyMask中所表示的被足够隔离以致于不需要差分量化的梯度斜率区域。在某 些实现中,编码器使用判决规则(包括例如桶投票)来帮助决定是否应向图像中的梯度斜 率区域应用DQ。在图24的GSR检测器2400中,判决模块2440做出这些判决。在一个实现中,编码器基于consistencyMask做出关于当前图像是否包含显著梯 度斜率的一个或多个二进制判决。掩码consistencyMask被划分成相同大小的25个矩形 区域(称为桶(bucket)),其中每一行有5个桶,每一列有5个桶。(“桶”区域因此大于用 于判决的区域和用于梯度计算的区域。)对每一桶中的1计数。设BUcketS[i] [j]是包含 在位置(i,j)处的桶中的1的个数,其中0彡i,j彡4。水平和垂直桶投影一分别是桶的每一列中的1的个数和桶的每一行中的1的个数一也根据以下关系来计算 在该实现中,如果满足以下条件中的任一个,则图像被认为包含显著的梯度斜 率1. consistencyMask中至少6%的像素(不管桶分布如何)被标记为1,或者2.在一个或多个桶中,至少75%的像素被标记为1,或者3.在一个或多个桶投影中,至少20%的像素被标记为1。例如,对于大小为960x1440的经降采样的图像的16x16个区域用大小为20x30的 掩码(每一值用于经降采样的图像的3x3的区域集)来表示,这些区域进而被划分成25个 桶,每一个桶对应于一致性掩码的24个区域。每一桶包括来自consistencyMask的24个比 特,总共有25 χ 24 = 600个比特。编码器对每一桶中的1的个数计数,其分布如图29所 示。编码器检查1的总数是否大于所有比特的6%。在这一情况下,1的总数(如图29所 示)是83,这大于全部比特的6%。因此,这一情况中的编码器将由于以上对条件1的满足 而跳过桶投影。如果1的总数低于条件1的阈值,则编码器将检查任何桶中的75%的比特 是否为1(条件2),且如有必要,检查水平和垂直桶投影(条件3)来确定被指示为梯度斜率 区域的区域是否使得应生成梯度斜率掩码和判决掩码,诸如以下所述的宏块级梯度斜率掩 码。或者,编码器使用其它判决规则来处理掩码consistencyMask或其它表示中的一 致性信息。例如,条件1、2和3中所示的百分比阈值可以取决于实现而变化。或者,省略一 个或多个条件,或者对条件进行重新排序、用其它条件(例如,桶投影的不同方向等)来替 换或补充。除了检验一致性信息之外,编码器在决定是否应向图像中的梯度斜率区域应用 DQ以及应用多少DQ时还可考虑梯度值和/或其它信息。作为另一替换,编码器可以将这些 判决规则一起省略,且在生成梯度斜率掩码时仅使用consistencyMask。Ε.宏块级梯度斜率掩码生成为了提供可用于稍后编码器的判决制定形式的梯度斜率信息,编码器将信息置于 映射表、掩码或其它数据结构中。该信息可包括梯度斜率区域存在/缺失信息,以及梯度斜 率区域的实际梯度方向值。对于梯度斜率存在/缺失信息,如果检测到梯度斜率区域,则编码器产生梯度斜 率掩码。例如,编码器通过将区域级掩码(诸如consistencyMask)转换回原始图像的宏 块级并考虑可能的降采样,来产生宏块级梯度斜率掩码(此处称为MBSlopeMask)。注意, consistencyMask中的每一值对应于原始图像中的9个宏块,或者如果图像被4-1降采样则 对应于36个宏块。对于consistencyMask中值为1的每一比特,编码器在MBSlopeMask中 将相应宏块标记为1,不平滑的宏块除外。检验平滑度再次有助于避免梯度斜率检测中的假 警报。例如,在一个实现中,编码器使用纹理图来获得关于宏块中的块的纹理信息,并且仅 当宏块内的所有四个块都是平滑的时候该宏块才被认为是平滑的。或者,编码器提供某一其它形式的梯度判决信息和/或对宏块平滑度使用某一其 它判决。
对于梯度方向信息,通过将每一区域的梯度方向分配给所有其相应的平滑宏块来 生成梯度方向图。通过这样做,编码器解决了由于梯度计算之前的降采样而引起的原始图 像的宏块和梯度区域之间的可能的大小差。所生成的梯度斜率掩码和梯度方向图然后在编码器中用于做出更好的编码判决。 一般而言,由梯度斜率区域检测器生成的结果可由编码器用于做出其它编码判决。例如,编 码器可基于所生成的梯度斜率掩码和/或梯度方向图来做出量化判决。一些可能的编码器 判决如下所述。VI.调整量化以保存非零AC系数通常,由编码器中的码率控制单元向图像分配图像级量化参数。使用相同的图像 级QP,用于表示高度纹理化的宏块的比特的数量通常要比用于表示低纹理化宏块的比特的 数量要大得多(多达10到50倍)。然而,由于人类视觉系统对于繁忙的、高度纹理化的区 域中的失真要比平滑的、低纹理化区域中的失真更不敏感,对低纹理化宏块使用较小QP而 对高度纹理化的宏块使用较大QP是有意义的。这导致常用的根据人类视觉重要性来分类宏块(通常使用块或块内梯度强度的 方差)并分配与某一感知加权成比例的目标个数的比特的策略。用于要修改的每一宏块的 量化参数通过根据加权来修改图像级量化器来选择。实验表明,在非常低变化的平滑区域中,块通常被量化为仅在DC系数中有能量 (没有剩余非零AC系数),即使是在合理的低QP下也是如此。令人惊奇的是,当极度平滑 区域中的相邻块中的DC值在各块之间仅改变1时,所感知到的成块的轮廓伪像要比使用绝 对值方面小的这一差所预期的严重得多。此类伪像在本应是良好编码的图像内部的相对小 区域中的出现会导致对整个图像的总体感知质量被降低。传统的基于码率_失真和基于感知的宏块QP选择技术没有很好地处理这一情形。 采用码率-失真优化,由于绝对值上小的失真,平滑块将被认为是良好编码的,并且因此不 对这些块花费进一步的比特。另一方面,典型的基于感知的方法将宏块分类到感知类中,并 且通过根据宏块的感知类对图像级量化参数加上或减去预定义的偏移量来向每一宏块分 配一量化参数。除非该预定义偏移量非常具侵略性(例如,将用于平滑区域的QP减少为 1),否则这些方法不能保证具有小变化的平滑块不会被量化为单个非零DC系数,且所有AC 系数被量化为0。但是设置一非常侵略性的偏移量会增加花费在宏块上的比特,而这些宏块 可能不需要这些比特来改进感知质量,从而低效地提高了比特率并且与由编码器对码率控 制所选择的图像级量化参数冲突。因此,以下描述的若干技术和工具选择性地且明智地分配图像内的比特,使得向 平滑区域分配足够的比特以减少或去除成块或轮廓伪像的引入。例如,编码器对I图像内的每一宏块计算QP并选择一量化参数以向平滑块分配足 够的比特,由此减少了 I图像中感知到的成块伪像。对于具有一个或多个平滑块的每一宏 块,选择一 QP,使得对该宏块的每一块有至少N个非零量化的AC系数,其中N是大于或等 于1的整数。通常,所保存的AC系数是用于变换的最低频率AC基函数的系数,这表征了块 上水平和/或垂直地改变的渐进值。这往往有助于每一块的感知到的视觉质量,尤其是对 于具有低变化的平滑区域。在一个实现中,编码器选择不超过图像QP的最大QP,该QP如 所需地保存了 AC系数。可以存在未保存非零AC系数的情形(例如,非常平坦的块)。然
28而,一般而言,以此方式,编码器不会在以较小QP花费比特上过度侵略,并且减少或避免了 与图像QP的冲突。采用合理的N值,所选的QP不会对大多数宏块改变;它对于大多数宏块与图像QP 相同,并且仅几个平滑块受到影响。合理的N值是1、2、3或4。所选QP更有可能对具有低 纹理的宏块改变。在一个实现中,N= 1或2改进了感知的质量,而图像比特率没有太多增 加。图30示出用于选择宏块QP来帮助保存一个或多个非零AC系数的示例技术3000。 诸如图10的编码器1000等编码器或其它工具执行技术3000。在3010处,编码器找出宏块的每一亮度块的第N大的AC系数。例如,如果N = 2, 则编码器找出16x16的宏块的四个8x8的块的每一个的次大的AC系数。设AC(0)、AC(1)、 AC(2)、AC(3)分别是四个亮度块0、1、2和3的第N大的系数。对于宏块中的不同块组织, 第N大的系数可以来自宏块中的更多或更少块。在3020处编码器找出这些第N大系数值中的最小值。对于四个块的第N大系数, ACmin = min (AC (0),AC(I),AC (2),AC (3))。对于其它块数,不同地计算 ACmin。在3030处,编码器对宏块设置QP,使得ACmin位于该QP的死区阈值之外。死区阈 值是用于在使用QP的值来量化时将AC系数量化为0的“截止”阈值。死区阈值通常是对给 定QP预定的,并且与该QP成比例。死区阈值是在0和第一个重构点之间的某一点处选择 的。当编码器使用均勻量化器或非均勻量化器时,第一个重构点取决于QP值以及是使用了 均勻还是非均勻量化。在一个实现中,第一个重构点是量化系数水平=1的重构值,这对于 均勻量化为2*QP,而对于非均勻量化为3*QP。对于均勻量化,截止阈值因此落在0和2*QP 之间。对于非均勻量化,截止阈值因此落在0和3*QP之间。例如,死区阈值Z(QP)对均勻 量化被选为Z(QP) =6*QP/5,而对于非均勻量化被选为Z(QP) = 2*QP。或者,可使用其它 截止阈值。如果Abs (AC) < Z (QP),则AC系数AC将被量化为0为对宏块设置(3030) QP,编码 器可通过从图像QP开始并递减QP直到达到用于量化器的最小QP (例如QP= 1)或满足不 等式Abs (ACmin) >= Z(QP),将ACmin与用于候选的QP值的Z(QP)进行比较,来对宏块找出 保存至少N个AC系数的QP (QPffl)。如果满足不等式Abs (ACmin) > = Z (QP),则编码器将该宏 块的阈值QP设为满足该不等式的第一个QP (即,最高合格QP)。或者,编码器使用其它逻辑 来计算宏块的QP,例如从最低QP开始或使用对QP值的二分搜索。使用QPm来量化宏块中的所有块的过程可被称为非约束比特率量化。在约束比特 率量化技术中,编码器如上所述对宏块的每一亮度块单独确定产生所需个数的非零AC系 数所需的最大QP (不大于图像QP)(例如,对于块0、1、2和3分别为QP0, QP1、QP2^P QP3)。 它遵循QPm等于QPpQPpQh和QP3的最小值。为减少比特使用,编码器可使用QPi代替QPm 来量化块i (其中i = 0,1,2,3等等)。在对整个宏块制定单个QP的编码器中,编码器可改 为当使用QPm量化该块时在对每一块i使用QPi来量化时仅保持那些非零的AC系数,从而 仅保持了给定块中前N个非零AC系数,即使该块中的AC系数将随着通过QPm的量化而被 保存也是如此。对于图30所示的量化过程,对每一亮度块的量化过程可作为一个两遍过程 来执行。在第一遍中,编码器在DCT系数小于Z(QPi)时将该系数“阈限”为0,否则保持相 同的DCT系数。然后,使用QPm以相同的方式来量化“阈限”的DCT系数。
或者,编码器以某一其它方式保存非零AC系数。例如,编码器可在除了逐宏块的 基础之外的其它基础(例如,逐块的基础)上选择QP。编码器可对I图像、P图像或B图像 或其组合保存AC系数。如果在最小可能QP下非零的量化系数的个数小于N,则N可以被相应地调整。VII.对DC漂移的差分量化在典型的有损编码情形中,并非所有量化的DC和AC系数都可在反量化之后精确 地恢复。例如,在某些视频编解码器中,对于某些QP和DC系数值,DC系数值漂移了 1(即, 相对于其量化前的值增加或减少了 1)。该现象是DC漂移的一个示例。某些DC系数值的表 示通过一个或多个较低QP的量化和反量化是无损的,但是在其它较高QP中是有损的。具有其中所有AC系数都被量化为0且DC系数不能被精确恢复的若干块的区域可 能在DC漂移区域中展示出可见的轮廓伪像。这些具有轮廓伪像的区域通常是诸如天空、水 或光线等平滑的梯度斜率区域。图31是示出在量化和反量化之后在梯度斜率区域中的三 个相邻块的DC漂移的图示。梯度斜率区域中的三个相邻的块3102、3104、3106的DC值在 量化之前分别为68、69和70。在量化和反量化之后,块3104的DC值漂移到70。如图31 所示,这三个相邻块的DC值现在是68、70和70。当这些块在梯度斜率区域中时,量化的DC 值可以引起可感知的轮廓伪像。例如,再次参考图22A-C,梯度斜率区域2210已被量化,导 致图22B中的可见的轮廓伪像。如图22C所示,对宏块2250的上半部分块的DC系数的量 化导致从DC值68重构的均勻值,而对下半部分的块的DC系数的量化导致从DC值70重构 的均勻值。因此,以下描述的若干技术和工具由视频编码器用于检测DC漂移区域并调整量 化以减少或避免在DC漂移区域中的轮廓伪像的引入。图32是示出用于调整量化以减少或避免DC漂移区域中的轮廓伪像的引入的通用 技术3200的流程图。诸如图10的编码器1000等编码器或其它工具执行技术3200。在3210处,编码器检测漂移区域。对DC漂移区域的搜索可以通过先前的梯度斜 率检测来协助。例如,如下所述,编码器通过检测一个或多个梯度斜率区域(或使用先前计 算的梯度斜率检测信息)然后标识梯度斜率区域中的DC漂移块来检测DC漂移区域。在3220处,编码器调整DC漂移区域中的量化。例如,编码器可使用差分量化(DQ) 来编码DC漂移块以减少或避免因DC漂移引起的轮廓伪像的引入。编码器对某些宏块(具 有DC漂移块的宏块)减小QP,但对其它块不改变QP。对具有DC漂移块的宏块减小QP有 助于对这些宏块保持DC值无损,由此减少或避免了轮廓伪像的引入。编码器可使用双级DQ 或多级DQ来解决DC漂移问题,且因此在控制比特使用的同时改进视觉质量。如果有更多 图像要分析,则编码器处理下一图像(3230)。或者,编码器在逐宏块的基础上或某一其它基础上调整对DC漂移区域的量化。A.梯度斜率检测可使用梯度斜率检测来标识图像中的一个或多个梯度斜率区域。梯度斜率区域往 往展示出轮廓伪像,尤其是在区域中的块具有非零DC系数值和在量化之后仅有0的AC系 数的时候。一旦找到,可对这些区域检验可能会导致轮廓伪像的DC漂移块。例如,编码器使用此处所描述的(第V节)技术或某一其它技术来找出梯度斜率 区域。如果块中仅有的非零系数是量化之后的DC系数,则编码器将这些块作为要进行DC
30漂移区域调整的候选块来对待。或者,编码器将其它块认为是要进行DC漂移区域调整的候 选块。B.标识DC漂移块编码器将某些候选块标识为DC漂移块。DC漂移块的标识取决于用于压缩这些块 的量化器和QP的细节。例如,某些重构的DC系数在一个QP下将不会从其原始值漂移,但 是在较粗略的QP下将漂移。一个编码器中用于不同QP的DC漂移系数的示例在下表中提供。该表指示DC系 数值对不同的QP值展示了 DC漂移,其中QP是从参数PQIndex (以及可能的半步参数)中 显式地导出,或从参数PQIndeX(以及可能的半步参数)中隐式导出的。未在表中列出的 DC值对于示例编码器中所指示的QP是无损的;用于3以下的QP的DC值(未在表中示出) 都是无损的。示例编码器不对高于表中所示的那些QP执行DC漂移调整。在该示例编码器 中,DC系数的量化对于不同的量化器(例如,均勻、非均勻)是相同的。哪些DC系数值是 DC漂移系数在不同的视频编解码器中不同。不同的量化器(例如,均勻、非均勻)在DC系 数的量化在不同量化器中不同的情况下可导致不同的漂移模式。表3:示例DC漂移系数 具有表3所示的DC漂移系数的示例编码器一般对纹理化区域使用与用与平滑区 域不同的QP。示例编码器通常使用范围3-5中的QP来编码平滑区域。如以上表3所示,对于QP 3-5,所有漂移的DC值都比原始DC值大1。其它编码器可对平滑区域使用与纹理区 域不同的QP。为在检测DC漂移块时帮助减少或避免轮廓伪像的引入,示例编码器改变包含DC 漂移块的宏块的QP以保持DC值在这些宏块中是无损的。具体地,示例编码器将包含DC漂 移块的宏块的QP减少为QP = 2。(其它编码器可对DC漂移区域使用某一其它QP。)一般 而言,编码器可选择导致宏块的块的DC系数的无损处理的最大可用QP。编码器计算每一块的平均亮度值以确定梯度斜率区域中的DC漂移块,因为平均 亮度值对应于DC漂移值(在补偿了变换中的扩充之后)。平均亮度值允许编码器估计或预 测哪些块具有DC漂移。或者,编码器计算真实的DC值并在DC漂移表中查找它们以精确地 标识哪些块将具有漂移。编码器可以执行附加处理来排除梯度斜率区域中的某些隔离DC漂移块。在该示 例编码器中,一旦当前块被标识为位于梯度斜率区域中的DC漂移块,就检验周围的四个相 邻块。如果周围的四个相邻块中的任一个是平滑块且具有低于当前块的漂移的DC值的DC 值,则编码器对包含当前块的宏块使用QP = 2来保持DC值无损。或者,编码器不对相邻块 进行检验,或者检验相邻块的其它排列以确定是否在用于DC漂移区域的QP中做出改变。C.多级差分量化成本模型双级DQ和多级DQ通常具有不同的比特率成本。在一个实现中,使用每宏块1比 特来用信号表示图像QP或“全宏块”双级DQ中的替换QP,并且使用每宏块至少3比特来用 信号表示图像QP或多级DQ中的替换QP。尽管编码器可使用多级DQ来允许减少包含DC漂移块的平滑区域中的QP,但编码 器可以在双级DQ情形中改为选择对所有平滑区域调整QP (例如,调整为QP = 2)并对图像 的其余部分使用较粗略的图像QP。例如,编码器可以在多级DQ的信令成本被发现为相对于 双级DQ的成本过于昂贵的情况下这样做。在一个实现中,使用下表来计算分别从QP = 3,4,5和6到QP = 2的平滑块的成本。g_iSmoothBlockDiffQPCost[4] = {18,22,28,36} ·该表在以下双级DQ成本B(QP)成本计算的示例中使用。B(QP)=宏块的总计数+(双级差分量化宏块的计数-DC漂移块的计数)*g_ iSmoothBlockDiffQPCost[QP-3];成本B (QP)解出了每宏块的双级成本信令的成本,并估计了对块使用QP = 2代替 3、4、5或6的增加的比特成本。多级DQ成本M(QP)被计算为M(QP)=(帧QP宏块的计数*3) + (双级差分量化宏块的计数-DC漂移块的计 数)*8+(DC漂移块的计数*3);成本M(QP)解出了多级DQ的信令成本,假定对某些宏块量化参数的转义编码。如 果B(qp) <M(qp),则将使用双级DQ,并且将对所有平滑块使用QP = 2。否则,将使用多级 DQ。或者,编码器对不同类型或配置的DQ使用其它成本模型。或者,编码器在检测到 DC漂移块时对整个图像减小QP,或使用某一其它技术来改变量化以在检测到DC漂移块时 减少或避免轮廓伪像的引入。
D.图像QP切换在一个示例编码器中,多级DQ需要3个比特来用信号表示从图像QP到图像QP+6 的任何QP。该范围之外的任何QP将用8比特通过转义编码来用信号表示。用于平滑区域 的替换QP —般小于图像QP,且因此需要转义编码。切换图像QP因此可节省对多级DQ的编码开销。例如,编码器可使用上述多级DQ 成本模型来选择图像QP。例如,对于三级情形(例如,图像QP、平滑区域QP和DC漂移QP), 对图像QP的不同候选值计算多级DQ成本。编码器可以选择具有最小开销成本的图像QP。或者,编码器使用其它准则来切换图像QP,或者不执行图像QP切换。E.对高纹理宏块的粗略量化如果做出使用多级DQ的判决,则可通过向高纹理宏块分配比图像QP高(更粗略) 的QP来对这些宏块使用粗略量化。对图像使用多级DQ(例如,为了对DC漂移宏块使用较 小QP)的判决意味着没有用信号表示高于图像QP的每宏块粗略QP的附加开销成本。例如, 图像QP+1可被用作粗略QP以避免量化等级中的可被注意到的差别,或者可使用某一其它 QP。在编码器决定对当前图像使用多级DQ之后,可使用纹理阈值来确定哪些宏块将用粗略 QP来量化。或者,编码器使用其它准则来确定某些区域(例如,宏块)是应使用粗略QP还是 不使用粗略QP。F.用于DC漂移量化的示例技术图33是示出用于调节DC漂移区域中的量化以减少或避免量化伪像的引入的组合 技术3300的流程图。诸如图10的编码器1000等编码器或其它工具执行技术3300。该组 合技术是组合了上述若干方面的一个示例。其它技术将不使用参考该示例描述的所有方 面,或将以不同的次序或替换方式来执行它们。在3310处,编码器例如如第V节中所描述的那样检测当前图像中的一个或多个梯 度斜率区域。在3320处,编码器例如使用DC漂移表来检测梯度斜率区域中的DC漂移块。编码器然后决定如何量化图像。在3330处,编码器决定是否对该图像使用双级 DQ。如果是,则编码器对DC漂移区域(3340)和其它平滑区域使用小于图像QP的QP。否 则,在3350处,编码器决定是否对该图像使用多级DQ。如果是,则编码器对DC漂移区域使 用小于图像QP的QP (3360),可对其它平滑区域使用不同的QP,并且如果存在高纹理宏块, 则对高纹理宏块使用粗略QP (诸如大于图像QP的QP) (3370)。如果编码器没有选择双级或 多级DQ,则编码器减小图像QP并对DC漂移区域(3380)以及其它区域使用减小的图像QP。 或者,如果双级DQ和多级DQ的成本都太高,则编码器对DC漂移区域跳过QP减小。当编码 器选择了一量化方案时,编码器在3390处压缩该图像,并在还剩余任何图像要处理时处理 下一图像(3395)。参考各实施例描述和示出了本发明的原理之后,可以认识到,可以在排列和细节 上修改各实施例,而不脱离这些原理。应当理解,此处所描述的程序、过程或方法不相关于 或不限于任何特定类型的计算环境,除非另外指明。可依照此处所描述的教导来使用各种 类型的通用或专用计算环境或执行操作。以软件示出的实施例的元素可以用硬件来实现, 反之亦然。鉴于可应用本发明的原理的许多可能的实施例,要求保护落入所附权利要求书及其等效技术方案的范围和精神之内的所有这样的实施例作为本发明。
权利要求
一种在视频编码器中的方法,包括确定用于一视频图像序列的差分量化区间,所述区间包括区间数;在对所述视频图像序列中的多个预测的经差分量化的图像执行差分量化时使用所述区间,其中所述区间约束所述编码器对在所述多个预测的经差分量化的图像之一之后的至少所述区间数的预测图像跳过差分量化;以及输出所述视频图像序列的编码的数据。
2.如权利要求1所述的方法,其特征在于,所述差分量化包括对所述多个预测的经差分量化的预测图像中的第一个预测图像选择一个或多个差分 量化步长,所述一个或多个差分量化步长不同于用于所述第一个预测图像的图像量化步 长;对所述多个预测的经差分量化的预测图像中的第二个预测图像改变所述一个或多个 差分量化步长,其中所述第二个预测图像在离所述第一个预测图像的区间之外。
3.如权利要求1所述的方法,其特征在于,所述多个预测的经差分量化的图像包括至 少一个P图像。
4.如权利要求1所述的方法,其特征在于,所述多个预测的经差分量化的图像包括至 少一个B图像。
5.如权利要求1所述的方法,其特征在于,所述差分量化区间是固定区间。
6.如权利要求1所述的方法,其特征在于,所述差分量化区间是可自适应地调整的区间。
全文摘要
一种视频编码器标识序列中的当前图像的当前平滑区域,并通过确定至少一个先前和/或将来图像中的相应区域是否平滑来执行时间分析。至少部分地基于该时间分析,该编码器调整当前平滑区域中的量化。编码器确定用于序列的差分量化区间,该区间包括区间数。该区间约束编码器至少对于一个预测的经差分量化的图像之后的区间数量的预测图像跳过差分量化。编码器分析当前图像中的纹理并设置平滑度阈值。该编码器将纹理数据与该平滑度阈值进行比较,并基于根据该平滑度阈值对当前图像中的至少一个平滑区域的发现来调整用于当前图像的至少部分的差分量化。
文档编号H04N7/26GK101931815SQ20101027486
公开日2010年12月29日 申请日期2007年4月9日 优先权日2006年4月7日
发明者C-L·林, X·左 申请人:微软公司