通过子像素运动矢量细化对视频数据进行编码或解码的方法和装置与流程

文档序号:19735806发布日期:2020-01-18 04:26阅读:272来源:国知局
通过子像素运动矢量细化对视频数据进行编码或解码的方法和装置与流程

本公开涉及用于编码或解码视频数据的方法和设备。更特别地,其涉及根据使用解码器侧运动矢量推导模式的特定编码模式的编码,该解码器侧运动矢量推导模式被称为帧速率上转换模式或fruc模式。

视频数据的预测编码基于帧划分为多个像素块。对于每个像素块,在可用数据中搜索预测块。预测块可以是在inter编码模式下不同于当前帧的参考帧中的块,或者可以在intra编码模式下从当前帧中的相邻像素生成。根据确定预测块的不同方式来定义不同的编码模式。编码的结果是预测块和残差块的指示,该残差块在于待编码的块与预测块之间的差。

关于inter编码模式,预测块的指示是如下运动矢量,该运动矢量给出了相对于待编码的块的位置的预测块在参考图像中的位置。运动矢量本身基于运动矢量预测值被预测编码。hevc(高效视频编码)标准定义了数种已知的用于运动矢量的预测编码的编码模式,即amvp(高级运动矢量预测)模式、合并推导过程。这些模式基于运动矢量预测值的候选列表的构建以及该列表中要用于编码的运动矢量预测值的索引的信号通知。通常,还用信号通知残差运动矢量。

近来,已经引入了关于运动矢量预测的被称为fruc的新编码模式,其定义了根本没有信号通知的运动矢量预测值的解码器侧推导过程。推导过程的结果将用作运动矢量预测值,而无需解码器传输任何索引或残差运动矢量。

在fruc合并模式中,推导过程包括细化步骤,以提高所获得的运动矢量在子像素层级的精度。该处理涉及根据不同的图案对所获得的运动矢量周围的不同子像素位置的评估。

已经构想出本发明以改进已知的细化步骤。它旨在通过考虑模板内部的信号和/或匹配类型的特性来提高编码效率。

根据本发明的第一方面,提供了一种用于编码或解码包括帧的视频数据的方法,每个帧被分成多个像素块,该方法包括,对于一个像素块:

-使用通过解码器侧运动矢量推导方法获得运动信息的模式来推导运动矢量的运动矢量列表;

-评估运动矢量列表以选择一个运动矢量;

-通过在所选择的运动矢量附近的子像素位置处评估运动矢量来细化所选择的运动矢量;其中

-以1/16子像素或更高分辨率选择至少一些子像素位置。

在一个实施例中,细化所选择的运动矢量包括多个搜索步骤;并且其中,这些搜索步骤中的至少一个涉及1/16子像素或更高分辨率下的子像素位置。

在一个实施例中,多个搜索步骤包括至少三个连续的步骤;三个连续的搜索步骤中的每一个都涉及给定分辨率下的子像素位置;并且其中,与最后两个搜索步骤相关联的每个给定分辨率大于先前搜索步骤的给定分辨率。

在一个实施例中,多个搜索步骤至少包括以第一子像素分辨率进行的基于菱形图案的一个搜索步骤,以及以大于第一子像素分辨率的子像素分辨率进行的基于十字形图案的两个搜索步骤。

在一个实施例中,以取决于用于对像素块进行编码的匹配类型的子像素分辨率进行至少一些搜索步骤。

在一个实施例中,第一搜索步骤是以1/4子像素分辨率进行的基于菱形图案的搜索步骤。第二搜索步骤是以1/8子像素分辨率进行的基于十字形图案的搜索步骤;第三搜索步骤是以1/16子像素分辨率进行的基于十字形图案的搜索步骤。

根据本发明的另一个方面,提供了一种用于编码或解码包括帧的视频数据的方法,每个帧被分成多个像素块,该方法包括,对于一个像素块:

-使用通过解码器侧运动矢量推导方法获得运动信息的模式来推导运动矢量的运动矢量列表;

-评估运动矢量列表以选择一个运动矢量;

-通过在所选择的运动矢量附近的子像素位置处评估运动矢量来细化所选择的运动矢量;其中

-根据在多个图案中选择的至少一个图案来评估子像素位置;并且其中:

-该多个图案包括水平图案和垂直图案。

在一个实施例中,该多个图案还至少包括对角线图案。

在一个实施例中,该多个图案中的图案基于在相邻像素块中检测到的边缘方向被选择。

在一个实施例中,该多个图案中的至少一个图案在1/16子像素分辨率或更高分辨率下被定义。

根据本发明的另一个方面,提供了一种用于编码或解码包括帧的视频数据的方法,每个帧被分成多个像素块,该方法包括,对于一个像素块:

-使用通过解码器侧运动矢量推导方法获得运动信息的模式来推导运动矢量的运动矢量列表;

-评估运动矢量列表以选择一个运动矢量;

-通过基于至少一个相邻像素块的信号内容,在所选择的运动矢量附近的子像素位置处评估运动矢量,确定细化所选择的运动矢量。

在一个实施例中,信号内容是相邻像素块中的频率。

根据本发明的另一个方面,提供了一种用于编码或解码包括帧的视频数据的方法,每个帧被分成多个像素块,该方法包括,对于一个像素块:

-使用通过解码器侧运动矢量推导方法获得运动信息的模式来推导运动矢量的运动矢量列表;

-评估运动矢量列表以选择一个运动矢量;其中:

-运动矢量的运动矢量列表的推导是基于由像素块的相邻像素的图案定义的模板的;

-用于运动矢量的运动矢量列表的推导的模板基于模板的内容信号被确定。

在一个实施例中,信号内容是模板中的频率。

根据本发明的另一方面,提供了一种用于可编程装置的计算机程序产品,该计算机程序产品包括用于在被加载到可编程装置中并由其执行时实现根据本发明的方法的指令序列。

根据本发明的另一方面,提供了一种计算机可读存储介质,其存储用于实现根据本发明的方法的计算机程序的指令。

根据本发明的另一方面,提供了一种用于对包括帧的视频数据进行解码的解码设备,每个帧被分成多个像素块,该解码设备包括处理器,该处理器被配置为通过以下操作对一个像素块进行解码:

-使用通过解码器侧运动矢量推导方法获得运动信息的模式来推导运动矢量的运动矢量列表;

-评估运动矢量列表以选择一个运动矢量;

-通过在所选择的运动矢量附近的子像素位置处评估运动矢量来细化所选择的运动矢量;其中

-以1/16子像素或更高分辨率选择至少一些子像素位置。

根据本发明的另一方面,提供了一种用于对包括帧的视频数据进行解码的解码设备,每个帧被分成多个像素块,该解码设备包括处理器,该处理器被配置为通过以下操作对一个像素块进行解码:

-使用通过解码器侧运动矢量推导方法获得运动信息的模式来推导运动矢量的运动矢量列表;

-评估运动矢量列表以选择一个运动矢量;

-通过在所选择的运动矢量附近的子像素位置处评估运动矢量来细化所选择的运动矢量;其中

-根据在多个图案中选择的至少一个图案来评估子像素位置;并且其中:

-该多个图案包括水平图案和垂直图案。

根据本发明的另一方面,提供了一种用于对包括帧的视频数据进行解码的解码设备,每个帧被分成多个像素块,该解码设备包括处理器,该处理器被配置为通过以下操作对一个像素块进行解码:

-使用通过解码器侧运动矢量推导方法获得运动信息的模式来推导运动矢量的运动矢量列表;

-评估运动矢量列表以选择一个运动矢量;

-通过基于至少一个相邻像素块的信号内容,在所选择的运动矢量附近的子像素位置处评估运动矢量,确定细化所选择的运动矢量。

根据本发明的另一方面,提供了一种用于对包括帧的视频数据进行解码的解码设备,每个帧被分成多个像素块,该解码设备包括处理器,该处理器被配置为通过以下操作对一个像素块进行解码:

-使用通过解码器侧运动矢量推导方法获得运动信息的模式来推导运动矢量的运动矢量列表;

-评估运动矢量列表以选择一个运动矢量;其中:

-运动矢量的运动矢量列表的推导是基于由像素块的相邻像素的图案定义的模板的;

-用于运动矢量的运动矢量列表的推导的模板基于模板的内容信号被确定。

根据本发明的方法的至少一部分可以是计算机实现的。因此,本发明可以采取完全硬件实施例,完全软件实施例(包括固件,常驻软件,微代码等)或组合了软件和硬件方面的实施例的形式,这些实施例在本文中通常都被统称为“电路”、“模块”或“系统”。此外,本发明可以采取体现在任何有形介质中的计算机程序产品的形式,该计算机程序产品表达为具有体现在该介质中的计算机可用程序代码。

由于本发明可以用软件实现,因此本发明可以体现为用于在任何合适的载体介质上提供给可编程装置的计算机可读代码。有形的非暂时性载体介质可以包括存储介质,例如软盘,cd-rom,硬盘驱动器,磁带设备或固态存储设备等。瞬态载体介质可以包括诸如电信号、电子信号、光信号、声信号、磁信号或电磁信号之类的信号,例如微波或射频信号。

现在将仅作为示例并参考以下附图来描述本发明的实施例,其中:

图1示出了hevc编码器架构;

图2示出了解码器的原理;

图3示出了fruc合并模式下的模板匹配和双边匹配;

图4示出了fruc合并信息的解码;

图5示出了合并模式和合并fruc模式的编码器评估;

图6示出了在jem的编码单元和子编码单元层级的合并fruc模式推导;

图7示出了用于jem模板匹配方法的当前块周围的模板;

图8示出了运动矢量细化;

图9示出了本发明实施例中用于运动矢量细化的自适应子像素分辨率;

图10给出了利用现有技术和本发明的一个实施例获得的结果的示例;

图11示出了在本发明的一个实施例中使用的一些运动矢量细化搜索形状;

图11示出了在本发明的一个实施例中使用的一些运动矢量细化搜索形状;

图12示出了本发明的一个实施例的用于运动矢量细化的自适应搜索形状;

图13示出了本发明的一个实施例的自适应运动矢量细化;

图14示出了本发明的一个实施例的用于运动矢量细化的模板选择;

图15是用于实现本发明的一个或多个实施例的计算设备的示意性框图。

图1示出了hevc编码器架构。在视频编码器中,原始序列101被分成被称为编码单元的像素块102。然后,编码模式将影响到每个块。hevc中通常使用两个编码模式族:基于空间预测的模式或intra模式103,以及基于运动估计104和运动补偿105的inter模式或基于时间预测的模式。intra编码单元通常通过被称为intra预测的过程从在其因果边界处的编码像素被预测。

时间预测首先在于在运动估计步骤104中在被称为参考帧116的先前帧或将来帧中找到最接近编码单元的参考区域。此参考区域构成预测块。接下来,在运动补偿步骤105中,使用预测块来预测此编码单元以计算残差。

在空间和时间预测这两种情况下,都通过从原始预测值中减去编码单元来计算残差。

在intra预测中,对预测方向进行编码。在时间预测中,至少一个运动矢量被编码。然而,为了进一步减少与运动矢量编码有关的比特率成本,不直接对运动矢量进行编码。实际上,假设运动是均匀的,则将运动矢量编码为该运动矢量与其周围的运动矢量之间的差是特别有趣的。例如,在h.264/avc编码标准中,运动矢量相对于在当前块上方和左侧的3个块之间计算的中值矢量被编码。只有在中值矢量和当前块运动矢量之间计算出的差(也称为残差运动矢量)被编码在比特流中。这在模块“mv预测和编码”117中进行处理。每个编码矢量的值存储在运动矢量字段118中。从运动矢量字段118中提取用于预测的相邻运动矢量。

然后,在模块106中选择优化速率失真性能的模式。为了进一步减少冗余,在模块107中将变换(通常为dct)应用于残差块,并在模块108中将量化应用于系数。然后,在模块109中对经量化的系数块进行熵编码,并将结果插入到比特流110中。

然后,编码器在模块111至116中对编码帧执行解码,以用于将来运动估计。这些步骤允许编码器和解码器具有相同的参考帧。为了重构编码帧,对于残差在模块111中进行逆量化并在模块112中进行逆变换,以便在像素域中提供“重构”的残差。根据编码模式(inter或intra),此残差被添加到inter预测值114或intra预测值113。

然后,此第一重构在模块115中通过一种或数种后置滤波被进行滤波。这些后置滤波器集成在编码和解码循环中。这意味着它们需要在编码器和解码器侧被应用在重构帧上,以便在编码器和解码器侧使用相同的参考帧。此后置滤波的目的是消除压缩伪影。

在图2中已经表示了解码器的原理。首先在模块202中对视频流201进行熵解码。然后,残差数据在模块203中被逆量化并在模块204中被逆变换,以获得像素值。还根据执行intra类型解码或inter类型解码的模式对模式数据进行熵解码。在intra模式的情况下,根据在比特流中指定的intra预测模式205来确定intra预测值。如果模式是inter,则从比特流202提取运动信息。它由参考帧索引和运动矢量残差组成。将运动矢量预测值添加到运动矢量残差以获得运动矢量210。然后,使用运动矢量以在参考帧中定位参考区域206。注意,运动矢量字段数据211被解码的运动矢量更新,以便用于下一解码的运动矢量的预测。然后,使用与在编码器侧使用的后置滤波器完全相同的后置滤波器来对解码帧的第一重构进行后置滤波(207)。解码器的输出是解压缩的视频209。

hevc标准使用3种不同的inter模式:帧间(inter)模式,合并(merge)模式和合并跳过(mergeskip)模式。这些模式之间的主要区别是比特流中的数据信号通知(signalling)。对于运动矢量编码,当前的hevc标准与其前辈相比包括基于竞争性的运动矢量预测方案。这意味着,在编码器侧数个候选根据速率失真准则进行竞争,以便分别针对帧间或合并模式找到最佳运动矢量预测值或最佳运动信息。对应于运动信息的最佳候选或最佳预测值的索引被插入到比特流中。解码器可以得出相同的预测值或候选集合,并根据解码后的索引使用最佳的预测值或候选。

预测值和候选的推导设计对于实现最佳编码效率而又不对复杂性产生重大影响是非常重要的。在hevc中,使用了两种运动矢量推导:一种用于帧间模式(高级运动矢量预测(amvp)),另一种用于合并模式(合并推导过程)。

如已经提到的,合并模式(“经典”或“跳过”)的候选表示所有运动信息:方向、列表和参考帧索引以及运动矢量。通过以下描述的合并推导过程生成数个候选,每个候选都有一个索引。在当前的hevc设计中,两种合并模式的最大候选数等于5。

对于当前版本的jem,可以进行两种类型的搜索:模板匹配和双边匹配(bilateralmatching)。图3说明了这两种方法。双边匹配301的原理是沿着当前编码单元的运动轨迹找到两个块(通过类比下文所述的模板匹配有时也被称为模板)之间的最佳匹配。

模板匹配302的原理是通过计算当前块周围的重构像素与所评估的运动矢量所指向的块周围的相邻像素之间的匹配成本来推导当前编码单元的运动信息。该模板对应于当前块周围的相邻像素的图案,并且对应于预测块周围的相邻像素的对应图案。

对于两种匹配类型(模板匹配或双边匹配),将计算出的不同匹配成本进行比较,以找到最佳匹配成本。选择获得最佳匹配的运动矢量或运动矢量对作为推导出的运动信息。可以在jvet-f1001中找到更多细节。

两种匹配方法都提供了推导全部运动信息、运动矢量、参考帧和预测类型的可能性。在解码器侧的运动信息推导(在jem中记为“fruc”)适用于所有hevc帧间模式:amvp、合并和合并跳过。

对于amvp,用信号通知所有运动信息:单重(uni-prediction)或双重预测(bi-prediction)、参考帧索引、预测值索引运动矢量和残差运动矢量,应用fruc方法来确定被设为预测值列表中的第一预测值的新预测值。因此它的索引为0。

对于合并和合并跳过模式,对于cu发信号通知fruc标志。当fruc标志为假(“false”)时,发信号通知合并索引,并使用常规合并模式。当fruc标志为真(“true”)时,发信号通知附加fruc模式标志,以指示将使用哪种方法(双边匹配或模板匹配)来推导该块的运动信息。请注意,双边匹配仅适用于b帧而不适用于p帧。

对于合并和合并跳过模式,为当前块定义了运动矢量字段。这意味着为小于当前编码单元的子编码单元定义了矢量。此外,关于经典合并,用于每个列表的一个运动矢量可以形成一个块的运动信息。

图4是说明对于块的合并模式的fruc标志的此信令通知的流程图。根据hevc用语,块可以是编码单元或预测单元。

在第一步骤401中,对跳过标志进行解码以了解编码单元是否根据跳过模式被编码。如果在步骤402中测试到此标志为假,则然后在步骤403中对合并标志进行解码,并在步骤405中进行测试。当编码单元根据跳过或合并模式被编码时,在步骤404中对合并fruc标志进行解码。当编码单元没有根据跳过或合并模式被编码时,在步骤406中,对经典amvp帧间模式的帧内预测信息进行解码。当在步骤407中测试到当前编码单元的fruc标志为真时,并且如果当前切片是b切片,则在步骤408中对匹配模式标志进行解码。应注意,fruc中的双边匹配仅适用于b切片。如果切片不是b切片并且选择了fruc,则模式必须是模板匹配,并且不存在匹配模式标志。如果编码单元不是fruc,然后在步骤409中对经典合并索引进行解码。

fruc合并模式在编码器侧在与经典合并模式(以及其他可能的合并模式)进行竞争。图5说明了jem中的当前编码模式评估方法。首先,在步骤501中评估hevc的经典合并模式。在步骤502中首先利用原始块与候选列表的每个候选之间的简单sad(绝对差之和)来评估候选列表。然后,评估受约束候选的列表中的每个候选的真实速率失真(rd)成本,由步骤504至508所示。在评估中,评估具有残差的速率失真(步骤505)和没有残差的速率失真(步骤506)。最后,在步骤509中确定最佳合并候选,该最佳合并候选可以具有或不具有残差。

然后,在步骤510至516中评估fruc合并模式。对于步骤510的每种匹配方法(即,双边和模板匹配),在步骤511中获取当前块的运动矢量字段,并在步骤512和513中计算具有残差或没有残差的全速率失真成本评估。基于这些速率失真成本,在步骤515中确定具有或没有残差的最佳运动矢量516。最后,在其他模式的可能评估之前,在步骤517中确定经典合并模式与fruc合并模式之间的最佳模式。

图6说明了编码器侧的fruc合并评估方法。对于每个匹配类型(步骤601),即模板匹配类型和双边匹配类型,首先由模块61评估编码单元层级,然后由模块62评估子编码单元层级。目的是找到当前编码单元603中的每个子编码单元的运动信息。

模块61处理编码单元层级评估。在步骤611中推导运动信息的列表。对于该列表中的每个运动信息,在步骤612中计算失真成本并将之相互比较。用于模板的最佳运动矢量或用于双边的最佳运动矢量对613是使成本最小的矢量。然后,运动矢量细化步骤614被应用以提高所获得的运动矢量的精度。通过fruc方法,对于模板匹配估计,使用双线性插值,而不是经典的离散余弦变换插值滤波(dctif)插值滤波器。这将块周围的存储器访问减少到仅一个像素,而不是传统dctif的块周围的7个像素。实际上,双线性插值滤波器仅需要2个像素即可获得一个方向上的子像素值。

在运动矢量细化之后,在步骤615中获得当前编码单元的更好的运动矢量。该运动矢量将用于子编码单元层级评估。

在步骤602中,将当前编码单元细分为数个子编码单元。子编码单元是方形块,其取决于四叉树结构中的编码单元的划分深度。最小尺寸为4×4。

对于每个子cu,子cu层级评估模块62评估最佳运动矢量。在步骤621中推导出运动矢量列表,包括在步骤615中在cu层级获得的最佳运动矢量。对于每个运动矢量,在步骤622中评估失真成本。但是,该成本还包括表示用以避免发散运动矢量场的在编码单位层级获得的最佳运动矢量与当前运动矢量之间的距离的成本。基于最小成本获得最佳运动矢量623。然后,以与步骤614中在cu层级相同的方式,通过mv细化过程624细化该矢量623。

在过程结束时,对于一种匹配类型,获得每个子cu的运动信息。在编码器侧,比较两种匹配类型之间的最佳rd成本,以选择最佳的匹配类型。在解码器侧,该信息从比特流被解码(在图4的步骤408)。

对于模板fruc匹配模式,模板702、703包括用于估计速率失真成本的在该块上部的4行和在块701左侧的4行,如图7中的灰色所示。使用了两个不同的模板,即左侧模板702和上部模板703。当前块或匹配块701不被用于确定失真。

图8示出了利用在所识别的最佳预测值(613或623)周围的附加搜索的图6中的运动矢量细化步骤614和624。

该方法将在列表中识别(612或622)的最佳运动矢量预测值801作为输入。

在步骤802,在与1/4像素位置相对应的分辨率下应用菱形搜索。该菱形搜索基于如示图81所示的菱形图案,该图案处于1/4像素分辨率、以最佳运动矢量为中心。该步骤得到在1/4像素分辨率下的新的最佳运动矢量803。

在步骤804中,该菱形搜索获得的最佳运动矢量位置803成为在1/4像素分辨率下的十字搜索(指的是基于十字图案)的中心。该十字搜索模式由示图82示出,处于1/4像素分辨率,以最佳运动矢量803为中心。该步骤得到在1/4像素分辨率下的新的最佳运动矢量805。

在步骤806中,通过该搜索步骤804获得的新的最佳运动矢量位置805成为在1/8像素分辨率下的十字搜索的中心。该步骤得到了1/8像素分辨率下的新的最佳运动矢量807。示图83以1/8分辨率示出了这三个搜索步骤图案,所有位置被测试。

已经构想出本发明以改进已知的细化步骤。它旨在通过考虑模板内部的信号和/或匹配类型的特性来提高编码效率。

在本发明的一个实施例中,在细化方法的每个步骤中提高子像素的细化精度。

通过评估子像素位置处的运动矢量来进行细化步骤。以给定的子像素分辨率确定子像素位置。子像素分辨率确定两个像素之间的子像素位置的数量。分辨率越高,两个像素之间的子像素位置的数量就越高。例如,1/8像素分辨率对应于两个像素之间的8个子像素位置。

图9示出了该实施例。在第一示图91中,以1/16像素分辨率示出了图8中所述的现有技术图案。如在示图92的示例中所描绘的,第一步骤保持1/4像素的菱形搜索,然后是1/8像素的十字搜索,最后的十字搜索在1/16像素。该实施例提供了在良好位置周围获得更准确位置的可能性。此外,运动向量平均而言比先前的子约束更接近初始位置。

在一个附加实施例中,该细化仅应用于模板匹配,而不应用于双边匹配。

图10是表示这些实施例的流程图。与通过先前步骤获得的最佳运动矢量(613或623)相对应的最佳运动矢量1001被设为在1/4像素位置的菱形搜索1002的中心位置。菱形搜索1002得到新的最佳运动矢量1003。在步骤1004中测试匹配类型。如果匹配类型是模板匹配,则通过菱形搜索获得的运动矢量1003为1/8像素精度下的十字形搜索1009的中心,从而得到新的最佳运动矢量1010。对该新的最佳运动矢量1010进行1/16像素精度下的十字形搜索1011,以获得最终的最佳运动矢量1012。

如果匹配类型不是模板匹配,则在步骤1005中完成1/4像素的常规十字形搜索以得到新的最佳运动矢量1006,随后是1/8像素搜索步骤1007,以获得最终的最佳运动矢量1008。

该实施例特别是对于单重预测提高了编码效率。对于双重预测,两个相似块之间的平均有时类似于子像素分辨率的提高。例如,如果用于双重预测的两个块都来自同一参考帧,并且它们的两个运动矢量之间的差等于较低的子像素分辨率,则在这种情况下双重预测对应于子像素分辨率的提高。对于单重预测,不存在两个块之间的这种额外的平均。因此,更重要的是提高用于单重预测的子像素分辨率,在不需要在比特流中用信号通知此更高的分辨率时尤其如此。

在一个实施例中,菱形或十字形搜索图案被水平、对角线或垂直图案代替。图11示出了可以在该实施例中使用的各种示图。示图1101示出了根据1/8像素水平图案所搜索的位置。示图1102示出了根据1/8像素垂直图案所搜索的位置。示图1103示出了根据1/8像素对角线图案所搜索的位置。示图1104示出了根据另一1/8像素对角线图案所搜索的位置。示图1105示出了根据1/16像素水平图案所搜索的位置。

水平图案是水平对准的子像素位置的图案。垂直图案是垂直对准的子像素位置的图案。对角线图案是沿对角线对准的子像素位置的图案。

这些图案的优点主要是在块包含边缘时令人感兴趣,因为它为预测提供了该边缘的更好的细化。实际上,在经典运动矢量估计中,当在检测到的边缘的垂直轴中选择额外的测试位置时,运动矢量的细化会给出更高的结果。

图12给出了根据该实施例的选择图案的方法的示例。该流程图可以用于改变例如图8中的模块802、804、806的一个或多个图案搜索。当在步骤1201中测试到匹配类型是模板匹配时,在步骤1202中提取当前块的左侧模板。然后确定该块是否包含边缘。如果存在,则在步骤1203中确定边缘的方向。例如,可以计算当前块上的梯度以确定边缘的存在及其方向。如果在步骤1204中测试到该“directionleft(左方向)”是水平的,则在步骤1205中选择垂直图案,例如图案1102,以用于运动矢量细化。

如果左侧模板中没有边缘,或者如果所识别的方向不是水平的,则在步骤1206中提取当前块的上部模板。确定模板是否包含边缘,如果存在,则在步骤1207中确定方向。如果在步骤1208中测试出该“directionup(上方向)”是垂直的,则在步骤1209中为运动矢量细化选择的图案是水平图案,例如图案1101或1105。否则,在步骤1210中选择初始图案(81、82、83)。

请注意,如果左侧块包含水平边缘,则该边缘应穿过当前块。同样,如果上部块包含垂直边缘,则该边缘应穿过当前块。相反,如果左侧块包含垂直边缘,则该边缘不应穿过当前块,等等。

如果在步骤1201中确定匹配类型为双边匹配,则在步骤1211中选择一个模板块。然后,在步骤1212中确定模板是否包含方向以及该方向是哪个方向。如果在步骤1213中测试到该方向是水平的,则在步骤1205中选择垂直模式。如果在步骤1214中测试到该方向是垂直的,则在步骤1209中选择水平图案。对于双边匹配,可以将其他一些线性图案用作对角线图案1103和1104。在那种情况下,选择最垂直于在1212中确定的边缘的方向的线性图案。如果在步骤1212中未检测到边缘,则保留初始图案。

用于运动矢量细化的图案的这种改变的优点是编码效率的提高,因为该图案适应于包含在模板内部的信号。

图案也可以被改变。例如,示图1105示出了在1/16像素精度下的水平图案,其中更多的位置已经以高运动矢量精度被集中在初始运动矢量位置周围。

在一个实施例中,模板的信号内容被用于确定为运动矢量细化而测试的位置的数量。例如,当前块周围的模板中高频的存在被用于确定细化步骤的应用。原因是在没有足够高的频率的情况下,运动矢量的子像素细化是不相关的。

图13给出了该实施例的示例。

如果在步骤1301中测试到匹配模式是模板匹配,则在步骤1302中提取左侧模板,通常是当前块的相邻4行。然后在步骤1303中确定该块是否包含高频。例如,可以通过将梯度的总和与阈值进行比较来获得该确定。如果在步骤1304中测试到该左侧模板包含高频,则应用运动矢量细化步骤1305,其对应于图6的步骤614和624。

如果该左侧模板没有包含足够高频,则在步骤1306中提取上部模板。在步骤1307中确定所提取的模板是否包含高频。如果在步骤1308中测试出情况正是如此,然后在步骤1305中应用运动矢量细化步骤。否则,在步骤1309中跳过运动矢量细化步骤。

如果在步骤1301中确定匹配类型为双边匹配,则在步骤1310中提取一个模板。然后在步骤1314中确定所提取的模板是否包含高频。如果在步骤1313中测试到提取的模板不包含高频,则在步骤1309中不应用运动矢量细化,否则在步骤1305中应用运动矢量细化。

在又一个实施例中,模板的信号内容被用于确定要用于失真估计的模板,该失真估计被用于确定用于模板匹配类型fruc评估的运动矢量。

图14示出了该实施例。

该过程开始于步骤1401。在步骤1402和1403中提取左侧模板和上部模板。对于每个提取的模板,在步骤1404和1405中确定所提取的模板是否包含高频。如果在步骤1406和1407中测试到被测试的模板包含高频,则在步骤1408和1409中,将它们用于fruc评估中的失真估计。当两个模板都包含高频时,它们都将用于fruc评估中。当没有模板包含高频时,在步骤1411中选择上部模板以用于失真估计。

所有这些实施例可以组合。

图15是用于实现本发明的一个或多个实施例的计算设备1500的示意性框图。计算设备1500可以是诸如微型计算机、工作站或轻便便携式设备之类的设备。计算设备1500包括通信总线,其连接到:

-中央处理单元1501,例如微处理器,表示为cpu;

-随机存取存储器1502,表示为ram,用于存储本发明实施例的方法的可执行代码,以及适于记录用于实现根据本发明的实施例的用于对图像的至少一部分进行编码或解码的方法所必需的变量和参数的寄存器,其存储容量可以通过例如连接到扩展端口的可选ram来扩展;

-只读存储器1503,表示为rom,用于存储用于实现本发明的实施例的计算机程序;

-网络接口1504通常连接到通信网络,通过该通信网络发送或接收要处理的数字数据。网络接口1504可以是单个网络接口,或者由一组不同的网络接口(例如,有线和无线接口,或者不同种类的有线或无线接口)组成。在cpu1501中运行的软件应用程序的控制下,数据分组被写入网络接口以进行发送或被从网络接口读取以进行接收。

-用户界面1505可用于接收来自用户的输入或向用户显示信息;

-表示为hd的硬盘1506可被提供为大容量存储设备;

-i/o模块1507可以用于从诸如视频源或显示器的外部设备接收数据/向该外部设备发送数据。

可执行代码可以存储在只读存储器1503中、硬盘1506上或可拆装数字介质(例如磁盘)上。根据变型,可以经由网络接口1504通过通信网络来接收程序的可执行代码,以便将其存储在通信设备1500的存储装置之一中,例如硬盘1506中,然后再执行。

中央处理单元1501适于控制和引导根据本发明实施例的一个或多个程序的指令或软件代码的各部分的执行,这些指令被存储在上述存储装置之一中。在加电之后,cpu1501能够在例如已经从程序rom1503或硬盘(hd)1506加载了来自主ram存储器1502的与软件应用有关的指令之后,执行那些指令。这种软件应用程序在由cpu1501执行时使得执行本发明的流程图的步骤。

本发明的算法的任何步骤都可以通过可编程计算机(例如pc(“个人计算机”),dsp(“数字信号处理器”)或微控制器执行一组指令或程序而以软件实现;或者通过机器或专用组件(例如fpga(“现场可编程门阵列”)或asic(“专用集成电路”))以硬件实现。

尽管以上已经参考特定实施例描述了本发明,但是本发明不限于特定实施例,并且对于本领域技术人员而言,在本发明的范围内的修改将是显而易见的。

在参考前述说明性实施例时,许多进一步的修改和变型将向本领域技术人员给出启示,前述说明性实施例仅以示例的方式给出并且不预期限制本发明的范围,本发明的范围仅由所附权利要求确定。特别地,在适当的情况下,来自不同实施例的不同特征可以互换。

在权利要求中,词语“包括”不排除其他元件或步骤,并且不定冠词“一”或“一个”不排除多个。在互不相同的从属权利要求中记载不同特征这一事实并非指示不能有利地使用这些特征的组合。

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