利用自适应运动信息细化的视频编码的制作方法

文档序号:16995992发布日期:2019-03-02 01:22阅读:145来源:国知局
利用自适应运动信息细化的视频编码的制作方法
本原理一般涉及用于视频编码和解码的方法和装置,更具体地,涉及用于利用运动信息细化进行视频编码和解码的方法和装置。
背景技术
:为了实现高压缩效率,图像和视频编码方案通常采用预测和变换来利用视频内容中的空间和时间冗余。一般地,帧内或帧间预测用于利用帧内或帧间相关性,然后原始图像和预测图像之间的差异(通常表示为预测误差或预测残差)被变换,量化和熵编码。为了重构视频,通过与预测,变换,量化和熵编码对应的逆处理来解码压缩的数据。技术实现要素:根据一般方面,提出视频解码的方法,包括:访问视频中当前块的初始运动矢量,该初始运动矢量基于运动矢量预测器和运动矢量差中的至少一个,初始运动矢量与第一运动分辨率相关联;搜索参考画面中由初始运动矢量指示的位置周围的一个或多个位置,该一个或多个位置与第二运动分辨率相关联,并且第二运动分辨率高于第一运动分辨率;基于搜索确定当前块的细化的运动矢量;以及基于细化的运动矢量解码当前块。当搜索初始运动矢量周围时,可以使用以下之一:(1)当前块的预测和与当前块相邻的解码块之间的不连续性;和(2)在预测块和解码块之一处的梯度,来确定当前块的细化运动矢量。一个或者多个搜索位置可以基于第一分辨率和第二分辨率确定。如果运动矢量预测器在第二分辨率,则可以例如通过舍入运动矢量预测器将运动矢量预测器转换为低于第一分辨率的分辨率。运动矢量预测器可以基于与当前块相邻的解码块的至少两个运动矢量的平均值。根据另一个一般方面,提出视频编码的方法,包括:访问视频中当前块的初始运动矢量,该初始运动矢量基于运动矢量预测器和运动矢量差中的至少一个,初始运动矢量与第一运动分辨率相关联;搜索参考画面中由初始运动矢量指示的位置周围的一个或多个位置,该一个或多个位置与第二运动分辨率相关联,并且第二运动分辨率高于第一运动分辨率;基于搜索确定当前块的细化的运动矢量;基于细化的运动矢量编码当前块。为了决定细化的运动矢量,可以访问多个运动矢量预测器,其中对应于多个运动矢量预测器中的每一个执行访问,搜索和确定,以形成多个细化的运动矢量,并且选择多个细化的运动矢量之一用于编码当前块。当搜索初始运动矢量周围时,使用以下之一:(1)当前块的预测和与当前块相邻的重构块之间的不连续性;和(2)在预测块和重构块之一处的梯度;来确定当前块的细化的运动矢量。一个或者多个搜索位置可以基于第一分辨率和第二分辨率确定。如果运动矢量预测器在第二分辨率,则可以例如通过舍入运动矢量预测器将运动矢量预测器转换为低于第一分辨率的分辨率。运动矢量预测器可以基于与当前块相邻的解码块的至少两个运动矢量的平均值。本实施例也提供用于执行这些方法的装置。本实施例也提供非暂时性计算机可读存储介质,具有存储于其上的用于执行上述任何方法的指令。本实施例也提供根据上述任何方法生成的比特流。附图说明图1图示示例性hevc(高效视频编码)编码器。图2a是描绘当前块的五个空间候选{a1,b1,b0,a0,b2}的位置的图示示例。图2b是描绘使用amvp(高级运动矢量预测)的示例性运动矢量表示的图示示例,并且图2c是描绘运动补偿预测的图示示例。图3图示示例性hevc视频解码器的框图。图4图示根据本原理的实施例的用于在解码器处执行运动矢量细化的示例性方法。图5是描绘整数像素,半像素,四分之一像素和八分之一像素的像素位置的图示示例。图6a图示要解码的示例性pu,并且图6b是图示用于量度不连续性的l形集合的相邻重构样本和l形集合的预测样本的图示示例。图7a是图示局部梯度的图示示例,并且图7b是图示梯度的二阶矩的图示示例。图8图示根据本原理的实施例的用于在编码器处执行运动矢量细化的示例性方法。图9图示根据本原理的实施例的用于在解码器处执行运动矢量预测器细化的示例性方法。图10图示根据本原理的实施例的用于在编码器处执行运动矢量预测器细化的示例性方法。图11图示根据本原理的实施例的用于在解码器处利用自动运动细化激活执行运动矢量预测器细化的示例性方法。图12图示根据本原理的实施例的用于在编码器处利用自动运动细化激活执行运动矢量预测器细化的示例性方法。图13图示根据本原理的实施例的用于确定是否使用自适应运动细化用于具体mvp的示例性方法。图14图示可以实现本原理的示例性实施例的各个方面的示例性系统的框图。具体实施方式图1图示示例性hevc(高效视频编码)编码器100。为了编码具有一个或多个画面的视频序列,将画面划分为一个或多个条带,其中每个条带可以包括一个或多个条带片段。条带片段被组织成编码单元,预测单元和变换单元。hevc规范区分“块”和“单元”,其中“块”寻址样本阵列中的特定区域(例如,亮度,y),并且“单元”包括所有编码颜色分量(y,cb,cr或单色),语法元素和与块相关联的预测数据(例如,运动矢量)的并置块。对于编码,将画面划分为具有可配置尺寸的正方形形状的编码树块(ctb),并且将连续的一组编码树块分组为条带。编码树单元(ctu)包含编码颜色分量的ctb。ctb是划分成编码块(cb)的四叉树的根,并且编码块被划分为一个或多个预测块(pb)并形成划分成变换块(tb)的四叉树的根。对应于编码块,预测块和变换块,编码单元(cu)包括预测单元(pu)和树形结构的变换单元(tu)组,pu包括所有颜色分量的预测信息,以及tu包括每个颜色分量的残差编码语法结构。亮度分量的cb,pb和tb的尺寸应用于对应的cu,pu和tu。在本申请中,术语“块”可用于指代ctu,cu,pu,tu,cb,pb和tb中的任何一个。另外,“块”也可以用于指代h.264/avc或其他视频编码标准中规定的宏块,分区和子块,更一般地,指代各种尺寸的数据的阵列。在示例性编码器100中,画面由编码器元件编码,如下所述。要编码的画面以cu为单位处理。使用帧内或帧间模式编码每个cu。当cu以帧内模式编码时,其执行帧内预测(160)。在帧间模式中,执行运动估计(175)和补偿(170)。编码器判定(105)用于编码cu的帧内模式或帧间模式中的哪一个,并且通过预测模式标志指示帧内/帧间判定。通过从原始图像块中减去(110)预测块来计算预测残差。从同一条带内的重构的相邻样本预测帧内模式中的cu。在hevc中可用一组35个帧内预测模式,包括dc,平面和33个角度预测模式。从与当前块相邻的行和列重构帧内预测参考。使用来自先前重构块的可用样本,将参考在水平和垂直方向上延伸块尺寸的两倍。当角度预测模式用于帧内预测时,可以沿着由角度预测模式指示的方向复制参考像素。可以使用两个不同选项编码当前块的可应用亮度帧内预测模式。如果可应用模式包括在三个最可能模式(mpm)的构造列表中,则模式由mpm列表中的索引用信号通知。否则,通过模式索引的固定长度二值化来用信号通知模式。三个最可能模式从顶部和左侧相邻块的帧内预测模式推导出。对于帧间cu,对应编码块被进一步划分为一个或多个预测块。在pb级上执行帧间预测,并且对应pu包含关于如何执行帧间预测的信息。可以用两种方法,即“合并模式”和“高级运动矢量预测(amvp)”来用信号通知运动信息(即,运动矢量和参考索引)。在合并模式中,视频编码器或解码器基于已经编码的块来组装候选列表,并且视频编码器用信号通知候选列表中的候选之一的索引。在解码器侧,基于用信号通知的候选重构运动矢量(mv)和参考画面索引。合并模式中的一组可能候选包括空间邻居候选,时间候选和生成的候选。图2a示出当前块210的五个空间候选{a1,b1,b0,a0,b2}的位置。对于每个候选位置,根据a1,b1,b0,a0,b2的顺序检查可用性,然后去除候选中的冗余。在条带报头中指定合并候选的最大数量n。如果合并候选的数量大于n,则仅使用前n-1个空间候选和时间候选。否则,如果合并候选的数量小于n,则候选组被填充到最大数量n。在amvp中,视频编码器或解码器基于从已经编码的块确定的运动矢量来组装候选列表。然后,视频编码器用信号通知候选列表中的索引以标识运动矢量预测器(mvp)并且用信号通知运动矢量差(mvd)。在解码器侧,运动矢量(mv)被重构为mvp+mvd。在amvp中仅选择两个空间运动候选。第一空间运动候选从左侧位置{a0,a1}中选择,并且第二空间运动候选从上述位置{b0,b1,b2}中选择,同时保持两组中指示的搜索顺序。如果运动矢量预测器的数量不等于2,则可以包括时间mv预测候选。如果时间候选不可用,则使用零运动矢量来填充候选组。图2b图示使用amvp的示例性运动矢量表示。对于要编码的当前块(240),可以通过运动估计获得运动矢量(mvcurrent)。使用来自左侧块(230)的运动矢量(mvleft)和来自上面块(220)的运动矢量(mvabove),可以选择运动矢量预测器作为mvpcurrent。然后可以将运动矢量差计算为mvdcurrent=mvcurrent-mvpcurrent。在hevc中,用于运动补偿的运动信息的精度是亮度分量的四分之一样本(也称为四分之一像素或1/4像素)和色度分量的八分之一样本(也称为1/8像素)。7抽头或8抽头插值滤波器用于分数-样本像素位置的插值,即,可以针对亮度寻址水平和垂直方向上的全像素位置的1/4,1/2和3/4。然后,变换(125)和量化(130)预测残差。熵编码(145)量化变换系数以及运动矢量和其他语法元素以输出比特流。编码器还可以跳过变换并且以4×4tu为基础将量化直接应用于未变换的残差信号。编码器还可以绕过变换和量化,即,在不需要应用变换或量化处理的情况下直接编码残差。在直接pcm编码中,不应用预测,并且编码单元样本被直接编码到比特流中。编码器解码编码块以提供进一步预测的参考。量化变换系数被去量化(140)和逆变换(150)以解码预测残差。组合(155)解码的预测残差和预测块,重构画面块。例如,将滤波器(165)应用于重构画面,以执行去块/sao(样本自适应偏移)滤波以减少块效应伪像。经滤波的图像存储在参考画面缓冲器(180)处。图3图示示例性hevc视频解码器300的框图。在示例性解码器300中,比特流由解码器元件解码,如下所述。视频解码器300一般执行与图1中描述的编码途径相反的解码途径,其执行视频解码作为编码视频数据的一部分。具体地,解码器的输入包括视频比特流,其可以由视频编码器100生成。首先熵解码(330)比特流以获得变换系数,运动矢量和其他编码信息。变换系数被去量化(340)和逆变换(350)以解码预测残差。组合(355)解码预测残差和预测块,重构图像块。可以从帧内预测(360)或运动补偿预测(即,帧间预测)获得(370)预测块(375)。如上所述,amvp和合并模式技术可用于推导用于运动补偿的运动矢量,其可使用插值滤波器来计算参考块的子整数像素的插值。将滤波器(365)应用于重构图像。经滤波的图像存储在参考画面缓冲器(380)处。在视频压缩中,帧间预测模式允许使用来自先前重构/解码画面的至少一个运动补偿块来预测一个块(例如,预测单元)。例如,在图2c中图示,使用帧间预测模式编码当前块(255),块225和245是参考画面中的同位置块,并且块215和235是用于运动补偿预测的块。标识在解码画面缓冲器(dpb)中的重构画面的至少一个参考索引(例如,refidx0)和一个运动信息(运动矢量差,mvd)被编码,以使得能够在解码器处重构至少一个运动矢量(例如,mv0)。当使用双向预测时,编码加法参考索引(例如,refidx1)和运动信息以重构运动矢量(例如,mv0和mv1)。在一些情况下,可以从先前解码数据(例如,hevc中的合并模式)推断运动矢量。mv值的重构可以如下进行:mvx=mvpx+mvdx,mvy=mvpy+mvdy,(1)其中mvx和mvy分别是水平和垂直运动矢量分量,mvp(mvpx,mvpy)是从先前重构数据建立的运动矢量预测器,以及mvd(mvdx,mvdy)是在比特流中编码和传送的运动矢量差。通常以对应于解码mv值的精度来编码mvd值。例如,hevc使用四分之一像素(即,1/4像素)作为运动矢量分辨率。例如将mv分辨率从1/4像素增加到1/8像素可以一般提高预测。然而,对于低比特率,相对于按块编码的其他数据,mvd数据的编码可以具有相对高的比特率成本。因此,整体压缩效率可能不一定随mv分辨率而提高。为了提高压缩效率,存在一些关于使用自适应运动分辨率的现有工作,例如,选择整数像素或1/4像素之间的运动分辨率,或者在1/4像素和1/6像素之间选择。然而,指示使用哪个运动矢量分辨率可能导致压缩效率的降低,因为需要在比特流中发送额外的辅助信息。为了减少开销,lakshman,haricharan等人的题为“conditionalmotionvectorrefinementforimprovedprediction”,画面编码研讨会(pcs),2012.ieee的文章(以下称“lakshman”)定义编码器和解码器已知的一组规则,以在四分之一样本mv分辨率和1/6样本mv分辨率之间推断mv分辨率,而不需要任何显式逐块前向信令。高分辨率mv作为用细化信息增强的常规四分之一样本mv传送,这将运动矢量的分辨率从四分之一样本分辨率增加到样本的六分之一。指向整数或半样本位置的重构mv分量保持不变。对于指向四分之一或四分之三位置的mv分量,解码器使用以下条件推断出细化的存在:-在p条带的情况下,总是发送mv细化信息。-在双向预测的情况下,针对从包含高纹理的参考画面访问样本的预测发送mv细化。-在双向预测不访问高纹理参考画面的情况下,仅针对来自预定义参考画面列表的画面发送mv细化。-对于b条带中的单个假设预测,不使用mv细化。chen,jianle等人题为“furtherimprovementstohmkta-1.0”,vceg-az07,itu-t/sg16视频编码专家组(vceg)第52次会议:2015年6月19日至26日,华沙,波兰的文章(以下简称“chen”)描述一种高级运动矢量分辨率(amvr)模式。具体地,pu的运动矢量和预测运动矢量之间的mvd可以用四分之一像素分辨率或整数像素分辨率来编码。在编码单元(cu)级别控制mvd分辨率,并且对于具有至少一个非零mvd分量的每个cu有条件地用信号通知整数mvd分辨率标志。当整数mvd分辨率标志为假或不针对cu编码时,默认的四分之一像素mv分辨率用于属于cu的所有pu。否则,用属于cu的amvp模式编码的所有pu使用整数mv分辨率,而用合并模式编码的pu仍然使用四分之一像素mv分辨率。当pu使用整数mv分辨率时,通过将四分之一像素mv舍入到整数像素mv,用整数mv填充amvp候选列表。本原理涉及视频编码和解码中的运动矢量细化。在一个实施例中,在比特流中接收第一分辨率mvd(例如,1/4像素),并且解码器基于mvd获得初始运动矢量,并且使用已经解码的相邻样本,细化初始运动矢量以获得高于第一分辨率的第二运动分辨率(例如,1/8像素)。还在编码器处执行运动信息的细化以避免不匹配。因为在编码器和解码器二者处执行运动细化,所以在比特流中不发送附加信息来指示运动细化,例如,没有使用显式信令来指示从1/4像素到1/8像素的运动矢量的细化。在变型中,合并模式用于当前块(即,在比特流中没有接收到mvd),并且作为候选列表中的运动矢量预测器获得的初始运动矢量(可能舍入到第一分辨率)被细化以获得第二运动分辨率。可以使用编码器或解码器处的运动估计来执行运动信息细化。与在不需要运动分辨率细化的情况下使用第一运动分辨率(例如,1/4像素)的方法相比,提出的实施例可以在不需要传送细化运动信息的开销的情况下提高运动精度。与在解码器处在不需要运动分辨率细化的情况下使用第二运动分辨率(例如,1/8-pel)的方法相比,提出的实施例可以减少传送运动细化信息的开销。应当注意,根据本原理的解码器还可以执行运动搜索,并因此可以比不需要运动搜索的解码器更复杂。图4图示根据本原理的实施例的用于在解码器处执行运动矢量细化的示例性方法400。在该示例中,我们假设解码器可以将运动矢量分辨率从1/4像素细化到1/8像素。应当注意,本原理可以应用于其他运动分辨率之间的细化,例如但不限于从整数像素到1/4像素,从1/4像素到1/6像素。对于要解码的块,解码器例如使用比特流中的标志或使用如上所述的现有方法检查自适应运动矢量分辨率是否被启用(410)。如果自适应运动矢量分辨率被启用,则解码器例如使用hevc的amvp模式以1/4像素分辨率(420)生成mv预测器(mvp)。如果预测器在1/8像素,则将其舍入为1/4像素。解码器然后以1/4像素分辨率解码mvd(430)。可以获得初始运动矢量(440)作为mv0=mvp+mvd。然后,初始运动矢量(mv0)可以被细化为1/8像素分辨率(450)并且可以用于运动补偿预测。在420处,mv预测器也可以以1/8像素生成。mv预测器无论以1/4像素还是1/8像素生成,应该与编码器使用的一致。从由参考画面索引标识的参考画面中的运动矢量移位的位置处的对应块的样本获得运动补偿预测块的样本。当运动矢量不是整数时,使用分数样本插值来生成预测样本。hevc支持1/4像素的运动矢量。让我们将运动矢量表示为mv=imv+smv,其中imv是mv的整数部分,并且smv是1/4像素部分(第一运动分辨率),smv=p/4,p=0,1,2,3,然后插值样本值可以计算为:其中x是像素位置,c[p][i],i=0,...n-1是对应于p/4像素位置的滤波器系数,并且n是滤波器抽头的数量。hevc中1/4像素插值的滤波器系数如下:c[p=0][]={0,0,0,64,0,0,0,0},对应于整数位置,并且只有缩放,c[p=1][]={-l,4,-10,58,17,-5,1,0},对应于1/4像素位置,和7抽头滤波器,c[p=2][]={-1,4,-11,40,40,-11,4,-1},对应于1/2像素位置,和8抽头滤波器,c[p=3][]={0,1,-5,17,58,-10,4,-1},对应于1/4像素位置,和7抽头滤波器。当使用更高分辨率的1/8像素时,使用1/8像素插值滤波器来插值1/8像素部分,包括smv=p/8,p=0,1,2,3,4,5,6,7,8。例如,可以使用以下1/8像素插值滤波器(n=4):c[p=0][]={0,64,0,0},c[p=1][]={-2,58,10,-2},c[p=2][]={-4,54,16,-2},c[p=3][]={-6,46,28,-4},c[p=4][]={-4,36,36,-4},c[p=5][]={-4,28,46,-6},c[p=6][]={-2,16,54,-4},c[p=7][]={-2,10,58,-2}。运动细化处理可以被视为运动估计,其具有与细化之前的运动分辨率相关的范围。例如,当运动矢量从1/4像素的第一分辨率细化到1/8像素的第二分辨率,运动搜索范围包括初始运动矢量周围的候选。更一般地,用于运动细化的搜索候选可以分别在水平方向和垂直方向上是mvx0-δmvx~mvx0+δmvx,mvy0-δmvy~mvy0+δmvy,其中mvx0和mvy0分别是初始运动矢量mv0的水平和垂直分量,并且δmvx和δmvy分别定义水平和垂直方向上的搜索范围。例如,水平方向上的细化候选可以是(mvx0-k×step2,mvx0+k×step2,其中k是整数并且被定义为-stepl<(k*step2)<step1,(3)其中step1是第一分辨率,并且step2是第二分辨率。当step1=1/4且step2=1/8时,-2<k<2。图5图示整数像素,半像素,四分之一像素和八分之一像素的像素位置。为了便于表示,我们也可以将这些候选称为运动细化候选,并且我们表示通过利用运动细化候选作为运动细化预测块和运动细化预测块内的样本作为运动细化预测样本的运动补偿构建的预测块。当(mvx0,mvy0)对应于位置510时,示例性搜索候选集合包括块520内的位置。搜索范围,更一般地,搜索候选组可以与图5中所示的不同。应该在编码器和解码器处使用同一搜索候选组。如果没有启用自适应运动矢量分辨率,则解码器以用于解码运动矢量的运动分辨率获得mvp和mvd,并且在解码器处不执行运动细化。如图4所示,解码器可以以1/8像素分辨率获得(460,470)mvp和mvd二者,并且以1/8像素分辨率将运动矢量解码(480)为mv=mvp+mvd。在变型中,解码器可以以1/4像素分辨率获得(460,470)mvp和mvd二者,并且以1/4像素分辨率将运动矢量解码(480)为mv=mvp+mvd。在下文中,我们进一步详细描述可以用于执行运动矢量细化(450)的若干实施例。为了在解码器处细化运动矢量,我们使用画面信号通常是平滑且连续的特性。因此,在解码器侧,如果运动矢量是准确的,则解码块典型应该相对于相邻块是连续的。在一个实施例中,我们使用重构相邻样本来细化mv。具体地,通过量度利用运动细化候选的运动补偿建立的预测块和先前重构样本(例如,图6a中图示的相邻上侧和左侧块的样本)之间的不连续性来评估如上所述的搜索候选组。图6a图示要解码的示例性pu(650)。当前pu上面或左侧的其他pu(610,620,630,640)已经被解码,并且可用于解码当前pu。具体地,相邻块(610,620,640)中的l形解码样本组(670)可以用于细化当前pu(650)的运动矢量。应该注意的是,pu可以是与图6a中所示不同的尺寸或形状,并且可以使用更大或更小的相邻重构样本组用于细化当前pu的运动矢量。在本申请中,我们使用l形样本组用于运动细化。更一般地,不同样本组可以用于运动细化,并且细化可以应用于块。在一个实施例中,我们使用基于相邻块中的l形解码样本组(670)(称为“相邻l形”)和当前预测块中的l形样本组(680)的不连续性。可以将不连续性量度为重构样本(n)与最接近的运动细化预测样本(p)之间的绝对差之和(sad),如图6b图示。在数学上,细化的运动矢量差可以计算为:其中p是pu的l形中位置为(xp,yp)的运动细化预测样本,σp||是pu的l形组的总和,mv0=mvp+mvd是要细化的运动矢量,n是紧接着位置在(xn,yn)的p的l形中的重构样本(例如xn=xp-l,yn=yp,如果p属于pu的左边界,并且xn=xp,yn=yp-1,如果p属于pu的上边界),irec(n)是当前画面的重构(或解码)样本值,iref(p+mvp+mvd+mvdrefine)是当选择mvdrefined时的运动补偿预测值。在变型中,我们考虑残差和运动补偿预测块的总和,并且如果选择mvdrefine,则iref(p+mv0+mvdrefine)+res(p)将是样本p的重构值。然后,细化运动矢量差可以计算为:其中res(p)是样品p的残差。当根据本原理修改hevc解码器以包括运动矢量细化时,可以将mv0设置为amvp中的mvd+mvp或者以合并模式在候选列表中用信号通知的那个,其中获得mvd和mvp作为由hevc指定的。一般地,mv0是在不需要在解码器处执行运动搜索的情况下解码器获得的运动矢量。运动细化可以被视为解码器处的运动搜索,其中候选运动矢量组以较高的运动分辨率从初始运动矢量周围选择。最佳运动矢量的选择可以是使某个标准最小化的运动矢量,例如,如公式(4)或(5)中描述的不连续性量度。也就是说,在获得初始运动矢量mv0之后,进一步执行运动搜索以细化初始运动矢量。解码器中的额外复杂性通常很小,因为只需要检查初始运动矢量周围的一小组搜索候选。在数学上,导出的细化mv可以表达为:然后,例如,使用如上所述的插值滤波器,将与参考画面中的细化mv对应的块用作用于解码pu的预测块。典型地,运动细化使得编码器能够以低分辨率编码mvd,并且因此与以全分辨率编码mvd相比,降低编码运动信息的成本,而解码器仍然可以以全分辨率恢复mv。在本申请中,我们使用sad作为各种实施例中的差异量度。应该注意,可以使用其他差异量度(例如但不限于平方误差和(sse))来代替sad。在另一个实施例中,我们使用相邻像素处的梯度通常相似的属性,并且我们计算位置(n)和(p)的局部梯度来量度不连续性。假设信号(即画面样本)在空间上是静止的,可以将信号局部建模为泰勒级数,截断为线性项:i(x+d)=i(x)+g(x).d(7)其中i(x)是位置x处的画面样本值,g是用局部梯度估计的2×2矩阵。使用公式(7),相邻重构样本r(x)和运动细化预测块p(x)之间的关系变为:r(n)=p(p)+g(p).(n-p)(8)p(p)=iref(p+mv0+mvdrefine),并且r(n)=irec(n)。在变型中,当计算p(p)时可以包括残差。位置p=(xp,yp)处的局部梯度可以表达为图7a中所示。g11(p)=r(n)-p(p),其中n=(xp-1,yp-1)g12(p)=r(n)-p(p),其中n=(xp-1,yp)g13(p)=r(n)-p(p),其中n=(xp-1,yp+1)然后可以使用局部梯度的绝对值之和来计算不连续性,并选择最小化不连续性的运动矢量细化:位置p=(xp,yp)处的二阶矩可以表达为图7b所示(当n和p位于l形的垂直左边界时):g21(p)=r(n2)-r(n)-g11,其中n=(xp-1,yp-1),并且n2=(xp-2,yp-2)g22(p)=r(n2)-r(n)-g12,其中n=(xp-1,yp),并且n2=(xp-2,yp)g23(p)=r(n2)-r(n)-g13,其中n=(xp-1,yp+1),并且n2=(xp-2,yp+2)g24(p)=r(n2)-r(n)-p(p)+p(p2),其中n=(xp-1,yp),并且n2=(xp-1,yp+1),p2=(xp,yp+1)。当样本p在pu的上边界处时,可以相似地导出梯度。对于左上角,可以以其在左边界或上边界处理,或者可以处理两次(一次作为边界,一次作为上部)。然后,可以使用梯度的二阶矩的绝对值之和来计算不连续性,并且选择最小化不连续性的运动矢量细化:不连续性也可以计算为局部梯度和二阶矩的绝对值之和:应该注意,本原理也可以应用于其他形式的梯度计算。图8图示根据本原理的实施例的用于在编码器处执行运动矢量细化的示例性方法800。方法800的输出可以用作方法400的输入比特流。在初始化步骤(805),编码器可以访问要编码为输入的视频序列。另外,编码器可以将参数设置为初始值,例如,设置best_flag=1,并将best_rdcost设置为大值。以1/8分辨率执行运动估计(810)以获得运动矢量(mv)。然后,编码器检查使用自适应运动细化来编码运动矢量是否更有效。从步骤820-840,编码器利用运动细化来检查mv编码成本,例如,使用rd(率-失真)成本。从步骤845-875,编码器在不需要运动细化的情况下检查mv编码成本。然后,基于最终mv(best_mv)执行运动补偿,并且可以计算残差(885)。将残差,最终mvd(best_mvd)和自适应运动细化标志(best_flag)编码(890)到比特流中。更具体地,在步骤815,例如,使用来自amvp的运动矢量预测器候选列表,1/8像素初始化运动矢量预测器的舍入版本或相邻运动矢量的平均值,以1/4像素分辨率建立运动矢量预测器列表,与对应解码器如何建立运动矢量预测器列表一致。降低分辨率可以使运动矢量预测器成为更“相关”的预测器(即,可以精确地预测所预测的运动矢量,使得可以仅传送索引以指示运动矢量预测器),并且使运动细化获得高分辨率部分(即较少“相关”部分)。在某些情况下,mvp列表可能只包含一个mvp。对于mvp列表中的每个mvp,运动矢量差(mvd)被计算(820)为mvd=mv-mvp,并且初始运动矢量可以被计算为mv0=mvp+mvd。在变型中,可以在步骤815以1/8像素分辨率建立运动矢量预测器候选列表,并且在步骤820将运动矢量差mvd舍入为1/4像素。注意,因为应用于mvp或mvd的舍入,mv0可以与mv不同。执行细化(825)以获得例如公式(4)或(5)中描述的mvdrrefine以及细化的运动矢量作为mv*=mv0+mvdrefine。然后可以基于mv*计算残差(827)。在步骤830,可以使用rd(率-失真)成本来估计调整的运动矢量(mv*)的编码成本。在步骤835,编码器检查当前调整的运动矢量是否具有比当前best_rdcost更小的rd成本。如果是,则将参数best_rdcost,best_mv,best_mvd设置为当前rd成本,当前调整的运动矢量和当前mvd,并且还可以存储一些其他相关编码信息。在步骤845,例如,使用来自amvp的运动矢量预测器候选列表,以1/8像素分辨率建立运动矢量预测器列表。除了编码器不将运动分辨率调整为1/4像素,步骤845类似于步骤815。对于mvp列表中的每个mvp,基于1/8像素分辨率的mvp计算(850)mvd。可以计算(852)残差用于运动矢量mv1=mvp+mvd,并且可以在步骤855使用rd成本估计运动矢量mv1的编码成本。在步骤865,编码器检查当前运动矢量是否具有比当前best_rdcost更小的rd成本。如果是,则将参数best_rdcost,best_mv和best_mvd设置为当前rd成本,当前运动矢量和当前mvd,并且将自适应运动细化标志设置为假(0)。还可以存储其他相关编码信息。当mvd是0时,例如,当使用合并模式时,不需要步骤820和850,并且在步骤840和875,不需要不计算best_mvd,并且在步骤890,不需要编码best_mvd。运动细化可以应用于对应于运动矢量预测器的所有运动矢量,或者可以应用于子组。例如,运动细化仅用于amvp运动矢量预测器,或仅用于合并模式。在方法800中,编码器基于编码成本决定是否使用自适应运动细化,并通过比特流中的标志用信号通知该选择。在其他实施例中,编码器可以在不需要检查编码成本的情况下基于视频特性决定是否使用自适应运动细化,例如,如下面进一步描述或在lakshman和chen中。因此,编码器可能仅需要执行方法800的一部分(例如,具有运动细化的部分,或者没有运动细化的部分)。注意,可能需要根据方法800发送附加语法元素best_flag。然而,发送best_flag仍然比以1/8像素分辨率发送mvd更有效,因为运动矢量的高分辨率部分通常是随机且对于编码昂贵。通过细化运动矢量,编码器可以达到1/8像素运动分辨率,而运动矢量差mvd以1/4像素运动分辨率在比特流中传送。因此,mvd可能要求更少的比特用于编码。例如,如表1所示,来自运动估计(810)的当前块的运动矢量(mv)是3.625,运动矢量预测器列表(815)包括{3.0,...}。对于运动矢量预测器mvp0=3.0,当没有启用运动细化时,mvd(850)是mv-mvp=0.625(以1/8像素编码)。另一方面,当启用运动细化时,mvd被舍入到0.5(1/4像素)并且初始运动矢量(820)mv0=mvp+mvd=3.5。然后将运动矢量mv0细化(825)到mv*=3.625。在该示例中,细化的运动与从运动估计获得的mv相同并且mvd以1/4像素传送,并且因此可能比当不使用运动细化时(即,mvd在1/8像素传送)需要更少的比特。因此,编码器可能选择启用运动细化。表格1分辨率示例mvp列表(左,上)1/4{3.0…}mvp1/43.0mvd1/40.5mv*1/83.625来自me的mv1/83.625用于mc的mv1/83.625在以上示例中,细化的运动矢量与来自运动估计的运动矢量相同。应当注意,细化的运动矢量可以与从运动估计获得的运动矢量不同。mvp细化在上文中,我们讨论了对基于运动矢量预测器mvp和运动矢量差mvd生成的初始运动矢量的细化。在另一实施例中,可以关于运动矢量预测器(不包括mvd)执行细化。返回参考图6,在例如使用hevc规定的amvp获得初始运动矢量预测器(mvp0)之后,可以使用重构l形来细化运动矢量预测器(670)。具体地,解码器可以形成与初始运动矢量预测器周围的运动矢量预测器对应的mcl形(680),例如,mvp0+δmv,然后解码器可以比较重构l形(670)和不同mcl形(680)之间的差异,例如,上面讨论的不连续性或梯度,并选择产生最小差异的运动细化(δmv*)作为对初始运动矢量预测器的细化,也就是说,细化的运动矢量预测器可以被计算为mvp*=mvp0+δmv*。注意,重构l形(670)和mcl形(680)二者基于解码样本,使得可以在编码器侧和解码器侧二者执行相同的处理。一般地,运动矢量预测器的运动细化可以被视为具有搜索范围的运动搜索,该搜索范围包括在初始运动矢量预测器周围的全运动分辨率下的几个子样本位移。例如,可以使用520内的搜索候选来细化510处的运动矢量预测器mvp0,如图5中图示。类似于细化运动矢量(利用mvd),可以使用与图5所示的不同组搜索候选。在变型中,可以对初始运动矢量预测器的舍入版本(舍入(mvp0))执行运动细化,并且运动细化的搜索范围包括舍入的运动矢量预测器周围的全运动分辨率的子样本位移。例如,当细化的运动分辨率是1/8像素时,mvp0的舍入版本可以是整数像素,半像素或四分之一像素分辨率。这是因为实际运动矢量更可能集中在较低分辨率的运动矢量周围,并且初始运动矢量预测器的舍入版本可以为搜索提供更好的起始点。在另一变型中,可以关于在mvp候选列表中使用的相邻运动矢量的平均值来执行运动细化。例如,运动细化可以使用左侧和上面运动矢量的平均值(mvleft+mvabove)/2作为初始运动矢量预测器,然后在初始运动矢量预测器周围执行运动搜索。我们观察到通常在几乎或相对均匀的运动区域中选择运动细化。通过对与当前块相邻的运动矢量求平均,我们可以为搜索提供更好的起始点。当选择运动细化时,即,当运动场是均匀的时,可以将预测器候选列表缩小为仅使用列表中的一个(左侧或上面)候选,并且因此减少可能候选的数量。这可以提高压缩效率,因为不需要在比特流中编码或传送amvp列表的索引。图9图示根据本原理的实施例的用于在解码器处执行运动矢量预测器细化的示例性方法900。在该示例中,我们假设解码器可以将运动矢量预测器分辨率从1/4像素细化到1/8像素。对于块,解码器例如使用比特流中的标志或者使用上面描述的现有方法检查(910)是否启用自适应运动矢量分辨率。如果启用自适应运动矢量分辨率,则解码器以1/4像素分辨率生成mv预测器(mvp)(920)。例如但不限于使用hevc的amvp模式,使用相邻运动矢量的平均值,或者使用运动矢量预测器的舍入版本,可以生成初始运动矢量预测器。然后,例如使用上面描述的实施例,可以将运动矢量预测器细化为1/8像素分辨率(930)。解码器以1/8像素分辨率(940)解码mvd。然后可以获得运动矢量(950)作为mv=mvp*+mvd并且用于运动补偿预测。如果没有启用自适应运动矢量分辨率,则解码器以用于解码的运动矢量的运动分辨率获得mvp和mvd,并且在解码器处不执行运动细化。如图9所示,解码器可以以1/8像素分辨率获得(960,970)mvp和mvd二者,并且以1/8像素分辨率解码(980)运动矢量作为mv=mvp+mvd。在变型中,解码器可以以1/4像素分辨率获得(960,970)mvp和mvd,并且以1/4像素分辨率将运动矢量解码(980)为mv=mvp+mvd。图10图示根据本原理的实施例的用于在编码器处执行运动矢量预测器细化的示例性方法1000。方法1000的输出可以用作方法900的输入比特流。在初始化步骤(1005),编码器可以访问要编码为输入的视频序列。另外,编码器可以将参数设置为初始值,例如,设置best_flag=1,并将best_rdcost设置为大值。以1/8分辨率执行运动估计(1010)以获得运动矢量mv。然后,编码器检查使用自适应运动细化来编码运动矢量是否更有效。从步骤1020-1040,编码器例如使用rd(率-失真)成本利用运动细化来检查mv编码成本。从步骤1045-1075,编码器在不需要运动细化的情况下检查mv编码成本。然后,基于最终mv(best_mv)执行运动补偿,并且可以计算残差(1085)。将残差,最终mvd(best_mvd)和自适应运动细化标志(best_flag)编码(1090)到比特流中。更具体地,在步骤1015,例如,使用来自amvp的运动矢量预测器候选列表,初始运动矢量预测器的舍入版本(例如,以期望分辨率的最接近整数)或相邻运动矢量的平均值,以1/4像素分辨率建立运动矢量预测器列表,与对应的解码器如何构建运动矢量预测器列表一致。在一些情况下,mvp列表可能只包含一个mvp。在步骤1015,也可以以1/8像素分辨率建立运动矢量预测器列表。然而,使用较低分辨率(1/4像素)的一个优点是可以避免平坦区域中的漂移,其中rd优化不能区分1/8像素或1/4像素分辨率的mv。使用降低的分辨率允许可以减少mv噪声的mv预测器的一种平滑。此外,如果用于细化的搜索窗口的大小相对较小(1/8细化的±1/4),则搜索窗口的起始/中心mv的精度可能改变结果。对于mvp列表中的每个mvp,执行mvp细化(1020),例如,如上面针对解码器描述。基于细化的mvp(mvp*)计算mvd(1025),并且还可以计算可以用于运动补偿的调整的运动矢量(mv*)(mv*=mvd+mvp*)。在步骤1030,可以使用rd成本来估计调整的运动矢量(mv*)的编码成本。在步骤1035,编码器检查当前调整运动矢量是否具有比当前best_rdcost更小的rd成本。如果是,则将参数best_rdcost,best_mv和best_mvd设置(1040)到当前rd成本、当前调整的运动矢量和当前mvd,并且best_flag保持为真(1)。在步骤1045,例如,使用来自amvp的运动矢量预测器候选列表,以1/8像素分辨率建立运动矢量预测器列表。对于mvp列表中的每个mvp,基于1/8像素分辨率的mvp计算(1050)mvd。在步骤1055,可以使用rd成本来估计运动矢量(mv)的编码成本。在步骤1065,编码器检查当前运动矢量是否具有比当前best_rdcost更小的rd成本。如果是,则将参数best_rdcost,best_mv和best_mvd设置(1075)为当前rd成本、当前运动矢量和当前mvd,并且将自适应运动细化标志(best_flag)设置为假(0)。在方法1000中,编码器基于编码成本决定是否使用自适应运动细化,并通过比特流中的标志用信号通知选择。在其他实施例中,编码器可以基于视频特性在不需要检查编码成本的情况下决定是否使用自适应运动细化,例如,如下面进一步描述或在lakshman和chen中。因此,编码器可能仅需要执行方法1000的一部分(例如,具有运动细化的部分,或者没有运动细化的部分)。通过细化运动矢量预测器,mv预测器可以更精确。因此,mvd在统计上可以具有较低的值,并且然后可以降低编码成本。例如,如表2所示,来自运动估计(1010)的当前块的运动矢量(mv)是3.625,运动矢量预测器列表(1015)包括{3.0,...}。对于运动矢量预测器mvp0=3.0,通过运动细化将其细化(1020)到mvp*=3.5。随后,运动矢量差是mvd=mv-mvp*=0.125。与不使用运动细化mv-mvp0=0.625的运动矢量差相比,要编码的mvd更小并且可能需要更少的比特来编码。在该示例中,使用运动细化可以提高压缩效率,并且因此编码器很可能选择启用自适应运动细化。用于运动补偿的运动矢量是mvp*+mvd=3.625。表2当mvd是0时,例如,当使用合并模式时,不需要步骤1025和1050,并且在步骤1040和1075,不需要计算best_mvd,并且在步骤1090,不需要编码best_mvd。注意,当mvd是0时,方法1000可以变得与方法800相同。运动细化可以应用于对应于运动矢量预测器的所有运动矢量,或者可以应用于子组。例如,运动细化仅用于amvp运动矢量预测器,或仅用于合并模式。自动运动细化激活在以上实施例中,我们描述标志(例如,图8或图10中所示的best_flag)可以用于指示是否启用自适应运动矢量分辨率。在下文中,我们描述自动激活或去激活运动矢量分辨率细化的各种实施例。因此,编码器可以在不需要显式标志的情况下指示是否启用自适应运动矢量分辨率,并且解码器也可以在不参考显式标志的情况下决定是否自适应运动矢量分辨率。在一个实施例中,我们提出基于以下标准中的一个或多个来自动激活自适应运动细化:-运动相似性:当前块的运动相似于周围块的运动,使得编码器或解码器可以使用周围块的运动矢量用于运动细化。-纹理(或纹理级别):当前块和周围块包含可以允许鲁棒性的子像素运动细化的一些纹理。-运动矢量差(mvd):mvd在编码器和解码器二者处可用,并且可以用于确定是使用自动自适应运动细化还是显式地发信号通知自适应运动细化。可以使用以下一个或多个条件来量度运动相似性标准:1)存在mvpleft和mvpabove(可选地mvpabove-left),即,当前块周围存在运动场。更一般地,存在具有运动矢量的一个或多个相邻块。2)|mvpleft-mvpcurrent|<t2,|mvpabove-mvpcurrent|<t2,和|mvpleftabove-mvpcurrent|<t2。该条件也可以是这三个子条件的不同逻辑组合:|mvpleft-mvpcurrent|<t2,|mvpabove-mvpcurrent|<t2,以及|mvpleftabove-mvpcurrent|<t2。也就是,周围块的运动矢量是相似的,并且当前块周围的运动场有些均匀。这里,我们使用相同的t2来检查mvpleft和mvpcurrent之间,mvpabove和mvpcurrent之间以及mvpleftabove和mvpcurrent之间的差异。应该注意,不同阈值可以用于这些差异。可以使用以下一个或多个条件来量度纹理度标准:1)texture(l)>t3,其中l是用于执行运动细化的相邻区域,例如,图6a所示的670,并且texture(x)是纹理化的量度,例如,x的亮度方差。也就是,相邻区域具有一些纹理。2)err(mc(l,mvp,iref),l)<err(mc(l,mvp+mvr,iref),l)+t4,其中mvp是对应于在比特流中用信号通知的mvd的所选运动矢量预测器,使得编码器和解码器二者可以使用相同的mvp用于检查该条件,err(x,y)是一组像素x和一组像素y之间的误差量度,例如,sad,had或sse,mc(x,v,i)是使用参考图像i中的运动矢量v的像素组x的运动补偿,iref是与运动矢量预测器mvp相关联的参考图像,t4是关于误差相似性的阈值,mvp+mvr是细化后的运动矢量预测器。如前所述,mvp可以在较低的运动分辨率,例如,被整数舍入。自动运动细化激活可以基于运动相似性或纹理性标准下的所有条件,或者也可以使用条件的子组。是否用信号通知运动细化激活或去激活可以基于运动矢量差(mvd)。当|mvd|≤t1时,其中mvd是在比特流中指示的运动矢量差,并且t1是运动阈值,在典型示例中,我们可以选择在不需要显式信令的情况下激活运动矢量细化。也就是,当运动矢量差小并且当前运动矢量接近当前运动矢量预测器时,编码器和解码器可以自动地激活运动细化。另外,编码器和解码器二者可以访问mvd,并且可以使用mvd以相同的方式确定运动细化激活,从而同步编码器和解码器。另一方面,当|mvd|变大时,编码器和解码器可以在不需要显式信令的情况下自动去激活运动细化。在另一示例中,当使用时间候选来建立运动矢量预测器列表时,也就是,当mvpleft和mvpabove不共存或相同时,不使用运动相似性标准中的条件1)和2)。编码器可以选择是否使用时间候选用于自动细化。图11图示根据本原理的实施例的用于在解码器处利用自动运动细化激活或去激活来执行运动矢量预测器细化的示例性方法1100。对于要解码的块,解码器生成(1110)mv预测器(mvpcurrent)并解码(1120)mv差(mvd)。当|mvd|≤t1(1125)为真时,解码器检查其他条件以查看是否要激活运动细化。否则,如果|mvd|>t1,则解码器检查是否在一个示例中,s=1/2,指示用于细化的运动搜索在[-1/2,1/2]中。如果则解码器基于从比特流解码的标志(1140)来决定是否使用运动细化。否则,如果则解码器不执行运动细化(即,运动细化被自动去激活)并且基于mvp和mvd解码(1180)运动矢量,即,mv=mvp+mvd。更具体地,解码器检查(1155)是否|mvpleft-mvpcurrent|<t2和|mvpabove-mvpcurrent|<t2。如果是,则解码器检查(1165)texture(l)>t3。如果满足1155和1165处的两个条件,则解码器例如使用上述各种实施例执行运动矢量预测器细化,并基于细化的运动矢量预测器(mvp*)和mvd解码(1170)运动矢量,即mv=mvp*+mvd。这里,运动细化在不需要标志的情况下自动激活。当时,解码器解码(1140)指示是否可以使用运动细化的标志(例如,refine_flag)。如果标志为真(1145),则解码器继续到步骤1155。否则,如果标志为假(1145),则基于mvp和mvd获得运动矢量(1180)。在图11中,解码器在一些条件下自动去激活或激活运动细化,并在其他条件下依赖于标志去激活或激活运动细化。对应编码器使用相同的条件来确保编码器和解码器之间的同步。当mvd为0时,例如,当使用合并模式时,步骤1125处的条件总是为真并且可以被移除,并且不需要步骤1120,1130,1140,1145和1180。替代地,在合并模式中,可以禁用运动细化以避免在合并推导的运动矢量预测器上添加噪声。与图11中所示不同,方法1100还可以跳过步骤1130-1145。也就是,当|mvd|>t1时,解码器在不需要运动细化的情况下执行步骤1180。也可以实现其他变型,例如但不限于,跳过步骤1155和/或步骤1165,在步骤1155检查两个条件中的一个。图12图示根据本原理的实施例的用于在编码器处执行自动运动细化的示例性方法1200。方法1200的输出可以用作方法1100的输入比特流。在初始化步骤(1205),编码器可以访问要编码为输入的视频序列。另外,编码器可以将参数设置为初始值,例如,将best_rdcost设置为大值。以1/8像素分辨率执行运动估计(1210)以获得运动矢量mv。在步骤1220,例如,使用来自amvp的运动矢量预测器候选列表来建立运动矢量预测器列表。可以使用初始运动矢量预测器的舍入版本(例如,到期望分辨率的最接近整数)或相邻运动矢量的平均值,与对应解码器如何建立运动矢量预测器列表一致。在一些情况下,mvp列表可能只包含一个mvp。在步骤1220,还可以以其他分辨率建立运动矢量预测器列表。在步骤1225,对于具体mvp,编码器然后检查使用自适应运动细化是否更有效地编码运动矢量并且将refine_flag设置为0或1。当运动细化更有效时,refine_flag设置为1,否则为0。在步骤1225也计算对应mvd。图13图示根据本原理的实施例的用于确定是否使用自适应运动细化用于具体mvp的示例性方法1300。方法1300可以用于实现方法1200的步骤1225。具体地,编码器检查(1305)|mvpleft-mvpcurrent|<t2,|mvpabove-mvpcurrent|<t2,并且texture(l)>t3。如果满足1305处的条件,则编码器例如使用上述各种实施例执行运动矢量预测器细化(1330),并基于细化的运动矢量预测器(mvp*)计算(1340)运动矢量差,即,mvd=mv-mvp*。当使用运动细化时,估计rd成本(rdcostl)(1350)。编码器也计算(1360)不需要细化的运动矢量预测器情况下的运动矢量差,即mvd=mv-mvp。当不使用运动细化时,估计rd成本(rdcost2)(1370)。比较需要和不需要运动细化的rd成本(1375)。如果rdcostl较小,则将refine_flag设置(1380)为1,并将mvd设置为mv-mvp*。否则,将refine_flag设置(1390)为0,并将mvd设置为mv-mvp。如果不满足1305处的条件,则基于运动矢量预测器(mvp)计算运动矢量差(1310),即,mvd=mv-mvp,并且将refine_flag设置(1320)为0。在步骤1225确定mvd和refine_flag之后,在步骤1230,编码器检查是否|mvd|≤t1。如果是,则编码器进一步检查(1235)refine_flag是否等于1。如果refine_flag设置为1,则编码器估计(1270)rd成本。如果rd成本小于当前best_rdcost(1275),则将参数best_rdcost和best_mvd设置(1280)为当前rd成本和当前mvd,并且将write_flag设置为否,以指示没有使用显式信令来指示自适应运动细化。也就是,如果选择当前mvp用于编码,则在不需要发送标志的情况下自动激活运动细化。当|mvd|>t1(1230)时,编码器估计(1240)rd成本。如果rd成本小于best_rdcost(1245),则设置参数best_rdcost和best_mvd(1250)为当前rd成本和当前mvd。然后,编码器检查(1255)是否|mvd|≤tl+s*如果是,则write_flag设置为是。这里,如果选择对应于条件分支1260的运动矢量预测器,则将基于refine_flag显式地用信号通知运动细化是否被激活。否则,如果不满足1255处的条件,则将write_flag设置(1265)为否。也就是,如果选择对应于条件分支1265的运动矢量预测器,则将在不需要发送标志的情况下自动去激活运动细化。编码器检查(1285)是否到达mvp列表的末端。如果是,则编码器编码best_mvd,所选mvp的索引以及对应残差(如果有的话)进行。如果write_flag设置为是,则也编码refine_flag。否则,如果不满足1285处的条件,则控制返回到步骤1225。如果选择合并模式,则在步骤1290不需要编码best_mvd。对应于方法1100,方法1200也可以不同于如图12所示,例如,可以跳过步骤1240-1260。在上文中,关于运动矢量预测器讨论了运动细化的去激活的自动激活。应该注意,自动激活或去激活可以应用于其他类型的运动信息,例如但不限于已经包括了运动矢量差的运动矢量。在本申请中使用各种数值,以例如基于阈值确定运动相似性或纹理。应该注意,特定值是用于示例性目的,并且本原理不限于这些特定值。在上文中,关于hevc标准描述各种实施例。例如,如上所述的各种运动细化或自动激活方法可以用于修改图1所示的hevc编码器的运动估计模块(175)或图3所示的hevc解码器的运动补偿模块(375)。然而,本原理不限于hevc,并且可以应用于其他标准,推荐和扩展。在上文中,我们讨论了从1/4像素到1/8像素的运动细化。应该注意,本原理可以应用于其他运动分辨率之间的细化,例如但不限于,从整数像素到1/4像素,从1/4像素到1/6像素。图14图示可以实现本原理的示例性实施例的各个方面的示例性系统的框图。系统1400可以体现为包括下面描述的各种组件的设备,并且被配置为执行上述过程。这样的设备的示例包括但不限于个人计算机,膝上型计算机,智能电话,平板计算机,数字多媒体机顶盒,数字电视接收器,个人视频记录系统,连接的家用电器和服务器。系统1400可以通信地耦合到其他类似系统,并且可以通过图14所示的并且本领域技术人员所知的通信信道耦合到显示器,以实现上述示例性视频系统。系统1400可以包括至少一个处理器1410,其被配置为执行加载在其中的指令,用于实现上面讨论的各种处理。处理器1410可以包括嵌入式存储器,输入输出接口和本领域已知的各种其他电路。系统1400还可以包括至少一个存储器1420(例如,易失性存储器设备,非易失性存储器设备)。系统1400可以另外包括存储设备1440,其可以包括非易失性存储器,包括但不限于eeprom,rom,prom,ram,dram,sram,闪存,磁盘驱动器和/或光盘驱动器。作为非限制性示例,存储设备1440可以包括内部存储设备,附加存储设备和/或网络可存取存储设备。系统1400还可以包括编码器/解码器模块1430,其被配置为处理数据以提供编码的视频或解码的视频。编码器/解码器模块1430表示可以被包括在设备中以执行编码和/或解码功能的(多个)模块。如所知,设备可以包括编码和解码模块中的一个或两个。另外,编码器/解码器模块1430可以实现为系统1400的单独元件,或者可以并入处理器1410内作为本领域技术人员已知的硬件和软件的组合。要加载到处理器1410上以执行上文描述的各种处理的程序代码可以存储在存储设备1340中,并且随后加载到存储器1420上用于由处理器1410执行。根据本原理的示例性实施例中,处理器1410,存储器1420,存储设备1440和编码器/解码器模块1430中的一个或多个可以在执行上文讨论的处理期间存储各种项目中的一个或多个,包括:但不限于输入视频,比特流,方程,公式,矩阵,变量,操作和操作逻辑。系统1400也可以包括通信接口1450,其使得经由通信信道1460能够与其他设备通信。通信接口1450可以包括但不限于被配置为从通信信道1460传送和接收数据的收发器。通信接口可以包括但不限于调制解调器或网卡,并且通信信道可以在有线和/或无线介质中实现。系统1400的各种组件可以使用各种合适的连接(包括但不限于内部总线,电线和印刷电路板)而连接或通信地耦合在一起。可以通过由处理器1410实现的计算机软件或通过硬件或通过硬件和软件的组合来实施根据本原理的示例性实施例。作为非限制性示例,根据本原理的示例性实施例可以由一个或多个集成电路实现。存储器1420可以是适合于技术环境的任何类型,并且可以使用任何适当数据存储技术(诸如,作为非限制性示例的光学存储器设备,磁存储器设备,基于半导体的存储器设备,固定的存储器和可移除的存储器)来实现。处理器1410可以是适合于技术环境的任何类型,并且可以包括作为非限制性示例的微处理器,通用计算机,专用计算机和基于多核架构的处理器中的一个或多个。本文描述的实现方式可以在例如方法或处理,装置,软件程序,数据流或信号中实现。即使仅在单个实现形式的上下文中讨论(例如,仅作为方法讨论),讨论的特征的实现方式也可以以其他形式(例如,装置或程序)来实现。装置可以在例如适当的硬件,软件和固件中实现。方法例如可以在例如诸如处理器之类的装置中实现,该处理器一般指代处理设备,包括例如计算机,微处理器,集成电路或可编程逻辑器件。处理器也包括通信设备,诸如例如计算机,蜂窝电话,便携/个人数字助理(“pda”),以及便于终端用户之间的信息通信的其他设备。对本原理的“一个实施例”或“实施例”或“一个实现方式”或“实现方式”的引用以及其其他变型意味着结合实施例描述的具体特征,结构,特性等包括在本原理的至少一个实施例中。因此,在整个说明书中出现在各个地方的短语“在一个实施例中”或“在实施例中”或“在一个实现方式中”或“在实现方式中”以及任何其他变型的出现不一定都指代同一个实施例。另外,本申请或其权利要求可以指“确定”各种信息。确定信息可以包括例如估计信息,计算信息,预测信息或从存储器检索信息中的一个或多个。此外,本申请或其权利要求可以指“访问”各种信息。访问信息可以包括例如接收信息,检索信息(例如,从存储器中),存储信息,处理信息,传送信息,移动信息,复制信息,擦除信息、计算信息,确定信息,预测信息或估计信息中的一个或多个。另外,本申请或其权利要求可以指“接收”各种信息。与“访问”一样,接收意图是广义术语。接收信息可以包括例如访问信息或检索信息(例如,从存储器中)中的一个或多个。此外,“接收”典型在操作期间以一种方式或其他涉及,例如,存储信息,处理信息,传送信息,移动信息,复制信息,擦除信息,计算信息,确定信息,预测信息或估计信息。将对于本领域技术人员显而易见的是,实现方式可以产生被格式化以携带可以例如存储或传送的信息的各种信号。该信息可以包括例如用于执行方法的指令或由描述的实施方式之一产生的数据。例如,可以格式化信号以携带描述的实施例的比特流。这样的信号可以被格式化,例如作为电磁波(例如,使用频谱的射频部分)或者作为基带信号。格式化可以包括,例如编码数据流和用编码数据流调制载波。信号携带的信息可以是例如模拟或数字信息。如已知的,信号可以通过各种不同的有线或无线链路传送。信号可以存储在处理器可读介质上。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1