使用先前帧残差的运动矢量预测的制作方法

文档序号:11524706阅读:255来源:国知局
使用先前帧残差的运动矢量预测的制造方法与工艺



背景技术:

数字视频流通常使用帧序列或静止图像来表示视频。每个帧可以包括多个块,该块进而又可以包含描述像素的颜色、亮度或其他属性的值的信息。视频流中的数据量很大,并且视频的传输和存储可以使用大量的计算或通信资源。由于视频数据中涉及大量数据,因此需要高性能压缩以用于传输和存储。这通常涉及使用运动矢量的帧间预测。



技术实现要素:

本发明总体上涉及利用使用先前帧残差的运动矢量预测来编码和解码视觉数据,诸如视频流数据。

根据本公开的一个方面的用于编码或解码视频信号的方法包括:从作为除当前帧之外的至少两个帧的像素值之间的差的残差中生成当前帧内的当前块的掩模,以及通过使用该掩模的帧间预测编码或解码当前块。视频信号包括定义视频序列的帧,这些帧具有由像素组成的块。

本文描述的装置的一个方面是用于编码或解码视频信号的装置,该视频信号包括定义视频序列的多个帧,这些帧具有由像素组成的块。该装置包括处理器和非暂时性存储器,非暂时性存储器存储包括使处理器执行方法的指令,所述方法包括:根据残差生成视频序列中的当前帧内的当前块的掩模,残差是除当前帧之外的至少两个帧的像素值之间的差,并且使用掩模通过帧间预测编码或解码当前块。

本文中所描述的设备的另一方面是一种用于生成用于编码或解码视频信号的当前块的掩模的装置,该视频信号包括定义视频序列的多个帧,这些帧具有块,且这些块由像素组成。该装置包括处理器和非暂时性存储器,非暂时性存储器存储包括使处理器执行方法的指令,方法包括:通过从第二帧内的像素值减去第一帧内的像素值来计算残差,第一帧和第二帧中的每一个帧均位于视频序列内的当前帧之前,将阈值应用于残差内的相应像素位置的像素值,以生成包括像素的阈值残差,该阈值残差内的每一像素具有第一值或不同于第一值的第二值中的一个,以及扩展包括具有第一值的像素的阈值残差的第一区域或包括具有第二值的像素的阈值残差的第二区域中的至少一个,以形成具有第一值的具有像素位置的第一连续部分和具有第二值的像素位置的第二连续部分的掩模,第一连续部分和第二连续部分不重叠,并且第一连续部分和第二连续部分之间的边界在掩模的两边延伸;并且,其中掩模具有与所述当前块相同的像素大小。

在以下详细说明书、所附权利要求和附图中更详细地描述本公开的这些和其它方面。

附图说明

本说明书参考了下面描述的附图,其中在几个视图中相同的附图标记指代相同的部件。

图1是视频编码和解码系统的示意图。

图2是能够实现发送站或接收站的计算设备的示例的框图。

图3是要编码并随后解码的视频流的图。

图4是根据本文教导的一个方面的视频压缩系统的框图。

图5是根据本文教导的另一方面的视频解压缩系统的框图。

图6是根据本公开的一个实施方式的通过使用前帧残差的运动矢量预测编码或解码块的过程的流程图。

图7是根据本公开的一个实施方式的用于使用前帧残差生成掩模的过程的流程图。

图8a-8c是用于说明图7的过程的图。

具体实施方式

视频流可以通过各种技术被压缩以减少所需的传输或存储视频流的带宽。视频流可以被编码到比特流中,比特流可以涉及压缩,然后被发送到解码器,解码器可以解码或解压缩视频流以使其准备用于观看或进一步处理。编码视频流可以涉及在视频质量和比特流大小之间的权衡的参数,其中,增加解码的视频流的感知质量可以增加传输或存储比特流所需的比特数。

一种实现优良压缩性能的技术通过空间和/或运动补偿预测利用视频信号的空间和时间相关性。例如,帧间预测使用运动矢量来识别类似于要被编码的当前块的先前编码和解码的块。通过编码运动矢量以及两个块之间的差,解码器可以重新创建当前块。然而,对象很少落在图像中的常规块边界上。其结果是编码效率。

相反,本文的教导描述了不需要块(例如,正方形)帧间预测器的生成和使用,以便更好地匹配帧内的对象。这可以通过使用先前帧的残差来创建用于块的悬崖掩模(cliffmask)来实现,其允许将两个不同的运动矢量应用于该块。在对其中可以使用本文的教导的环境的初始讨论之后描述进一步的细节。

图1是视频编码和解码系统100的示意图。发送站102可以是例如具有诸如图1所描述的硬件的内部配置的计算机。然而,发送站102的其他合适的实施方式是可能的。例如,发送站102的处理可以分布在多个设备之间。

网络104可以连接发送站102和接收站106,用于视频流的编码和解码。具体地,可以在发送站102中编码视频流,并且编码的视频流可以在接收站106中被解码。网络104可以是例如因特网。网络104还可以是局域网(lan),广域网(wan),虚拟专用网络(vpn),蜂窝电话网络或在此示例中将视频流从发送站102传送到例如接收站106的任何其它手段。

在一个示例中,接收站106可以是具有诸如图1所描述的硬件的内部配置的计算机。然而,接收站106的其他合适的实施方式是可能的。例如,接收站106的处理可以分布在多个设备之间。

视频编码和解码系统100的其它实施方式是可能的。例如,实施方式可以省略网络104。在另一实施方式中,视频流可以被编码,然后被存储以便稍后传输到接收站106或具有存储器的任何其他设备。在一个实施方式中,接收站106接收(例如,经由网络104、计算机总线和/或一些通信路径)编码的视频流,并存储视频流以供稍后解码。在示例实施方式中,实时传输协议(rtp)用于通过网络104传输编码的视频。在另一实施方式中,可以使用除rtp之外的传输协议,例如基于超文本传输协议(http)的视频流协议。

当在视频会议系统中使用时,例如,发送站102和/或接收站106可以包括如下所述的编码和解码视频流的能力。例如,接收站106可以是视频会议参与者,其从视频会议服务器(例如,发送站102)接收编码视频比特流以解码和观看,并进一步编码并将其自身的视频比特流发送到视频会议服务器用于由其他参与者解码和观看。

图2是可以实施发送站或接收站的计算设备200的示例的框图。例如,计算设备200可以实施图1的发送站102和接收站106中的一个或两个。计算设备200可以是包括多个计算设备的计算系统的形式,或者可以是单个计算设备的形式,例如移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。

计算设备200中的cpu202可以是中央处理单元。或者,cpu202可以是能够操纵或处理现在或将来开发的信息的任何其他类型的设备或多个设备。尽管所公开的实施方式可以用如图所示的单个处理器,例如cpu202来实施,但是可以使用多于一个处理器来实现速度和效率方面的优点。

在实施方式中,计算设备200中的存储器204可以是只读存储器(rom)设备或随机存取存储器(ram)设备。任何其它合适类型的存储设备可以用作存储器204。存储器204可以包括由cpu202使用总线212访问的代码和数据206。存储器204还可以包括操作系统208和应用程序210,应用程序210包括允许cpu202执行在这里描述的方法的至少一个程序。例如,应用程序210可以包括应用1至n,其还包括执行在这里描述的方法的视频编码应用。计算设备200还可以包括储存器214,储存器214例如可以是与移动计算设备一起使用的存储卡。因为视频通信会话可以包含大量的信息,所以它们可以全部或部分地存储在储存器214中,并且根据处理需要被加载到存储器204中。

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

计算设备200还可以包括图像感测设备220或者与图像感测设备220通信,图像感测设备220例如是相机,或者现在存在或者将来开发的可以感测诸如图像操作计算设备200的用户的图像的任何其他图像感测设备220。图像感测设备220可以被定位成使得其指向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以被配置使得视场包括与显示器218直接相邻并且显示器218从其可见的区域。

计算设备200还可以包括声音感测设备222,或者与声音感测设备222通信,声音感测设备222例如是麦克风,或者现在存在的或今后开发的可以感测计算设备200附近的声音的任何其它声音感测设备。声音感测设备222可以被定位成使得其指向操作计算设备200的用户,并且可以被配置为在用户操作计算设备200时接收由用户发出的声音,例如语音或其他发声。

尽管图2将计算设备200的cpu202和存储器204描述为集成到单个单元中,但是可以利用其他配置。cpu202的操作可以分布在可以直接或跨越局域或其他网络耦合的多个机器(每个机器具有一个或多个处理器)上。存储器204可以分布在多个机器上,例如基于网络的存储器或者在执行计算设备200的操作的多个机器中的存储器。尽管这里被描绘为单个总线,但是计算设备200的总线212可以由多个总线组成。此外,储存器214可以直接耦合到计算设备200的其他组件,或者可以经由网络访问,并且可以包括诸如存储卡的单个集成单元或诸如多个存储卡的多个单元。计算设备200因此可以以各种各样的配置来实施。

图3是要编码并随后解码的视频流300的示例图。视频流300包括视频序列302。在下一级,视频序列302包括多个相邻帧304。虽然三个帧被描绘为相邻帧304,但是视频序列302可以包括任何数量的相邻帧304然后可以将相邻帧304进一步细分为单独的帧,例如帧306。在下一级,帧306可以被划分为一系列平面或片段308。片段308可以是例如允许并行处理的帧的子集。片段308还可以是可以将视频数据分离成单独颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。可以以不同的分辨率对片段308进行采样。

无论帧306是否被划分为片段308,帧306可以进一步细分为块310,块310可以包含对应于例如帧306中的16×16像素的数据。块310也可以被布置以包括来自像素数据的一个或多个平面的数据。块310还可以是任何其它合适的大小,例如4×4像素,8×8像素,16×8像素,8×16像素,16×16像素或更大。除非另有说明,否则术语‘块’和‘宏块’在本文中可互换使用。如下面更详细的讨论的那样可以根据本文的教导来将帧306分区。

图4是根据实施方式的编码器400的框图。如上所述,编码器400可以在发送站102中诸如通过提供存储在例如存储器204的存储器中的计算机软件程序来实施。计算机软件程序可以包括机器指令,当由处理器例如cpu202执行时,机器指令使发送站102以图4所述的方式对视频数据进行编码。编码器400还可以被实施为包括在例如发送站102中的专用硬件。编码器400具有以下各级以在正向路径(由实连接线示出)中执行各种功能,以产生使用视频流300作为输入来编码或压缩的比特流420:帧内/帧间预测级402,变换级404,量化级406和熵编码级408。编码器400还可以包括重构路径(由虚连接线示出)以重构用于编码未来块的帧。如图4所示,编码器400具有以下各级来执行重构路径中的各种功能:去量化级410,逆变换级412,重构级414和环路滤波级416。编码器400的其它结构变化可以用于编码视频流300。

当视频流300被呈现用于编码时,帧306可以以块为单位来处理。在帧内/帧间预测级402,可使用帧内-预测(也称为帧内预测)或帧间预测(本文中也称为帧间预测或帧间-预测)来编码块。在任何情况下,可以形成预测块。在帧内预测的情况下,可从先前已经编码和重建的当前帧中的样本形成预测块。在帧间预测的情况下,可从一个或一个以上先前建构的参考帧中的样本形成预测块,如下文更详细地论述的。

接下来,仍参考图4,可以在帧内/帧间预测级402从当前块减去预测块,以产生残差块(也称为残差)。变换级404使用基于块的变换在例如频域中将残差变换为变换系数。这种基于块的变换包括例如离散余弦变换(dct)和非对称离散正弦变换(adst)。其他基于块的变换是可能的。此外,不同变换的组合可以应用于单个残差。在变换的应用的一个示例中,dct将残差块变换到频域中,其中变换系数值基于空间频率。矩阵左上角的最低频率(dc)系数和矩阵右下角的最高频率系数。值得注意的是,预测块的大小以及因此得到的残差块可以不同于变换块的大小。例如,预测块可以被分割成对其应用单独的变换的更小的块。

量化级406使用量化器值或量化等级将变换系数转换为离散量化值,其称为量化的变换系数。例如,变换系数可以除以量化器值并被截断。经量化的变换系数随后由熵编码级408进行熵编码。可使用任何数量的技术(包括令牌和二进制树)来执行熵编码。然后将熵编码的系数连同用于对块进行解码的其他信息,可以包括例如所使用的预测类型,变换类型,运动矢量和量化器值,一起输出到压缩比特流420。压缩比特流420可以也称为编码的视频流或编码的视频比特流,且这些术语将在本文中互换使用。

图4中的重构路径(由虚连接线示出)可以用于确保编码器400和解码器500(下面描述)使用相同的参考帧来解码压缩的比特流420。重构路径执行类似于在下面更详细地描述的解码过程中发生的功能,包括在去量化级410对量化的变换系数进行去量化并且在逆变换级412对去量化的变换系数进行逆变换,以产生导数残差块(也称为导数残差)。在重构阶段414,可以将在帧内/帧间预测级402处预测的预测块添加到导数残差以创建重构块。环路滤波级416可以应用于重构块以减少诸如块伪影的失真。

编码器400的其它变型可以用于对压缩比特流420进行编码。例如,基于非变换的编码器400可以针对某些块或帧直接量化残留信号,而不需要变换级404。在另一实施方式中,编码器400可以将量化级406和去量化级410组合成单个级。

图5是根据另一实施方式的解码器500的框图。解码器500可以例如通过提供存储在存储器204中的计算机软件程序在接收站106中实施。计算机软件程序可以包括机器指令,当该机器指令由诸如cpu202的处理器执行时,使得接收站106以图5中描述的方式解码视频数据。解码器500还可以在包括例如发送站102或接收站106中的硬件中实施。

类似于上文所讨论的编码器400的重构路径,解码器500在一个示例中包括以下阶段以执行各种功能以从比特流420产生输出视频流516:熵解码级502,去量化级504,逆变换级506,帧内/帧间预测级508,重构级510,环路滤波级512和去块滤波级514。解码器500的其它结构变型可用于解码压缩的比特流420。

当压缩的比特流420被呈现用于解码时,压缩的比特流420内的数据元素可以由熵解码级502解码,以产生一组量化的变换系数。去量化级504对量化的变换系数进行去量化(例如,通过将量化的变换系数乘以量化器值),并且逆变换级506使用所选择的变换类型对去量化的变换系数进行逆变换,以产生导数残差,使用从压缩比特流420解码的报头信息,解码器500可以使用帧内/帧间预测级508来创建与在编码器400,例如在帧内/帧间预测级402,创建的预测块相同的预测块。在重构级510,可将预测块添加到导数残差以创建重构块。环路滤波级512可以应用于重构块以减少块伪影。可以对重构块应用其他滤波。在此示例中,将去块滤波级514应用于重构块以减少块失真,且将结果输出为输出视频流516。输出视频流516还可被称为解码的视频流,且术语将在本文中互换使用。

解码器500的其它变型可以用于解码压缩的比特流420。例如,解码器500可以在没有去块滤波级514的情况下产生输出视频流516。

如上所述,可以使用先前帧残差通过运动矢量预测编码或解码块。一般来说,从两个帧(例如,当前帧之前的最后两个帧)的像素之间计算的残差生成用于块的掩模,且接着通过使用掩模的帧间预测编码或解码块。以此方式,允许将两个不同运动矢量应用于块的掩模可用于更好地匹配图像内的对象,从而改进视频压缩。

图6是根据本公开的一个实施方式的用于使用先前帧残差通过运动矢量预测编码或解码块的过程600的流程图。方法或过程600可以在诸如计算设备200的系统中实施以辅助视频流的编码或解码。过程600可以被实施为例如由诸如发送站102或接收站106的计算设备执行的软件程序。软件程序可以包括存储在例如存储器204的存储器中的机器可读指令,当机器可读指令由诸如cpu202的处理器执行时,使得计算设备执行过程600。过程600也可以使用硬件整体或部分地实现。如上所述,一些计算设备可以具有多个存储器和多个处理器,并且在这种情况下,过程600的步骤或操作可以使用不同的处理器和存储器来分配。本文中单数形式的术语“处理器”和“存储器”的使用包括仅具有一个处理器或一个存储器的计算设备以及具有多个处理器或存储器的设备,每个处理器或存储器可用于执行一些步骤,但不必执行全部步骤。

为了解释的简单,过程600被描绘和描述为一系列步骤或操作。然而,根据本公开的步骤和操作可以以各种顺序和/或同时发生。另外,根据本公开的步骤或操作可以与本文未呈现和描述的其他步骤或操作一起发生。此外,并非所有示出的步骤或操作都需要用于实现根据所公开的主题的方法。可以对输入信号的每个帧重复过程600。

当过程600是编码过程时,输入信号可以是例如视频流300。输入信号可以由以任何数量的方式执行过程600的计算机接收。例如,输入信号可以由图像感测设备220捕获,或者通过连接到总线212的输入从另一设备接收。在另一实施方式中,可以从储存器214检索输入信号。输入信号的其它接收方式和其他源也是可能的。例如,当过程600是解码过程时,输入信号可以是诸如压缩的比特流420的编码的比特流。

使用输入信号,在602,从作为除当前帧之外的两个帧的像素值之间的差的残差为视频序列中的当前帧内的当前块生成掩模。通常,掩模可以通过计算两个帧(例如,当前帧之前的两个帧)之间的残差、对残差进行阈值化、以及清除阈值化的残差来生成。可以可选地将一个小阀门模糊添加到掩模。

更具体地,图7是根据本公开的一个实施方式的用于使用先前帧残差生成掩模的过程700的流程图。图8a-8c是用于解释图7的过程700的图。

方法或过程700可以在诸如计算设备200的系统中实现以辅助视频流的编码或解码。过程700可以被实现为例如由诸如发送站102或接收站106的计算设备执行的软件程序。软件程序可以包括存储在例如存储器204的存储器中的机器可读指令,当机器可读指令由诸如cpu202的处理器执行时,使得计算设备执行过程700。过程700还可以使用硬件整体或部分地实现。如上所述,一些计算设备可以具有多个存储器和多个处理器,并且在这种情况下,过程700的步骤或操作可以使用不同的处理器和存储器来分布。

为了简化说明,将过程700描绘和描述为一系列步骤或操作。然而,根据本公开的步骤和操作可以以各种顺序和/或同时发生。另外,根据本公开的步骤或操作可以与本文未呈现和描述的其他步骤或操作一起发生。此外,并非所有示出的步骤或操作都需要用于实现根据所公开的主题的方法。可以对输入信号的每个块或每个帧重复过程700。

在过程700中,在702,生成掩模包括计算两个帧之间的残差。更具体地,可以通过从第二帧内的像素值减去第一帧内的像素值来计算残差,反之亦然。第一帧和第二帧可以位于由输入信号定义的视频序列内的当前帧之前。第一帧和第二帧可以是相邻帧,但是更期望地,它们由视频序列内的一个或多个帧和定义的时间量分隔开。在示例中,定义的时间量为200ms,但是其他值也是可能的。像素值可表示例如第一帧和第二帧内的像素位置中的一些或全部的亮度分量或色度分量。

在一个实施方式中,从第一帧内的共位像素的像素值中减去第二帧内的像素的像素值,反之亦然。共位像素在不同帧内具有相同的像素坐标。在一个实施方式中,第二帧内的像素和第一帧内的共位像素与当前块的像素共位。或者,第二帧内的像素和第一帧内的共位像素相对于当前块的像素移位运动矢量。在一些情况下,第一帧或第二帧之一中的像素可以与当前帧共位,而另一个帧中的像素相对于当前块移位运动矢量。期望地,像素值是诸如图4所描述的从编码器的编码和随后的解码过程获得重构的像素值。

当在编码过程中生成掩模时,可以使用各种技术来选择这两个帧。在一个特别地简单的实施方式中,使用当前帧之前的最后两个相邻帧。在另一实施方式中,可以选择当前帧之前的最后一帧,以及最多被识别为最后一帧的参考帧的帧。在其它实施方式中,可选择其它帧以提供用于掩模生成过程的残差。

当在解码过程中生成掩模时,可以从编码的比特流内的报头信息中辨别这两个帧,如下面更详细地讨论的。

残差可表示帧的整体或仅帧的一部分。也就是说,可以针对帧的整个尺寸或者针对帧的仅一部分,例如帧的块,来计算残差。图8a中示出了一个示例。其中,从第二帧804的共位像素值减去第一帧802的所有像素值。结果是残差帧(或残差)806。如在图8a中能够看出,诸如球、月亮等的圆形物体808从第一帧802中的第一位置移动到第二帧804中的第二位置。残差806示出第一帧802和第二帧804的像素值之差的新月形810。在这种情况下,使用帧的整个区域来计算残差。然而,可以对帧的一部分(例如,块基)执行过程700的所述计算或后续步骤。

在过程700中生成掩模还包括,在704,向在702生成的残差应用阈值。更具体地,过程700可以包括将阈值应用于残差内的相应像素位置的像素值,以生成阈值残差。阈值残差包括具有与应用阈值的残差或残差的部分相同的尺寸的像素。在某些实施方式中,阈值残差内的每个像素具有第一值或不同于第一值的第二值中的一个。阈值可以是正值或负值,或者可以定义值的范围。

在一个实施方式中,应用阈值包括将残差内的相应像素位置的像素值与阈值进行比较。然后,当像素值小于阈值时,将第一值指配给阈值残差内的相同像素位置。或者,当像素值大于阈值时,将第二值指配给阈值残差内的相同像素位置。例如,第一值可以是零,而第二值可以是最大像素值256。在一个实施方式中,当第一值是值0时,第二值是值1。阈值不需要为任何特定值,只要其捕获在两个帧之间的对象的边缘的相对运动的变化,同时最小化背景或表示对象的像素的值的最小变化的捕获。一个值可以是例如75,并且其他值是可能的。除非跨越阈值残差的两个边界的非岛状残差由阈值化产生,否则阈值残差不如掩模有用。可以调整该值,或者可以做出残差的部分将不会生成对预测如另一个掩模一样有用的掩模的决定。

参考图8b,例如,示出作为图8的残差806的一部分的块812。在块812中,边缘和阴影区域表示圆形对象808(例如,其边缘)在第一帧802和第二帧804之间的移动。将阈值应用于块812导致边缘和阴影区域被指配值1,同时其他区域被指配值1。例如,新块内对应于块812内具有在±75范围内的值的像素的像素位置(即,阈值残差)被指配值1,而对应于该范围外的像素的阈值残差内的其它像素位置被指配值0。跨越两个边界看到非岛状残差,因此块812可生成有用的掩模。

再次参考图7,用于生成掩模的过程700还可以包括修改阈值残差。在706,使用例如对阈值残差的生长和/或收缩函数来修改在704将阈值应用于残差所得到的阈值残差。也就是说,清除阈值残差。在一个示例中,修改包含在阈值残差内仅向右和向下递归地应用生长步骤。在这样的实施方式中,如果设置了在上方的或左侧的任何相邻像素(即,具有值1),则设置当前像素(即,被转换为值1)。可以通过在较大的“厚块”或阈值残差的部分中工作来提高递归增长的速度。例如,如果任何像素被设置在4×4像素组的底部,则该组内的所有像素被设置。或者,可以应用递归增长函数来生长具有阈值残差内的其他值的区域。一般来说,修改阈值残差包括基于与由具有两个值中的第一值的最小数量的连续像素所限定的区域邻近的像素的值,应用生长函数以扩展该区域。

到目前为止描述的706的这个修改过程导致具有分离值的两个大致连续的区域。然而,可以存在这样的区域,其中一个值的连续性像素可以被另一值的单个像素或像素阻断开。在706修改阈值残差可以包括减少这些不连续的附加步骤。在一个示例中,修改阈值残差包括应用收缩函数以去除由具有第一值的最大数量的连续像素所限定的区域,该具有第一值的最大数量的连续像素由具有两个值中的第二值的像素包围,或者去除由具有第二值的最大数量的连续像素所限定的区域,该具有第二值的最大数量的连续像素由具有第一值的像素包围。通过去除该区域,这意味着改变值使得第一值和第二值在块或帧内形成非重叠的连续区域。

从图8c可以看到从修改阈值残差得到的掩模的一个示例。通过对图8b的块812进行阈值化来生成掩模814,并且使用生长和收缩函数修改所得到的阈值残差,使得构成在线的一侧上的像素都具有第一值,而在线的另一侧上的像素都具有第二值的悬崖掩模。虽然可以使用悬崖掩模(例如,只是黑色和白色),根据图7的过程700产生掩模的可选的最后步骤,包括将模糊到应用掩模内的边界。模糊的值将在下面更详细地讨论。在这一点上,注意到模糊导致在区域之间形成平滑过渡的边界周围的值。模糊可以是根据各种插值技术形成的一个小阀门模糊。一旦生成掩模,过程700结束。

一旦生成掩模,其可以用于编码或解码当前块。再次参考图6,使用掩模编码或解码当前块的一个实施方式包括在604帧间预测第一预测块部分,在606帧间预测第二预测块部分,在608使用所述部分来生成预测块,在610处使用预测块来解码当前块。

当过程600是编码过程时,在604的帧间预测第一预测块部分包括使用掩模执行用于参考帧内的当前块的像素位置的第一连续部分内的像素值的第一运动搜索。也就是说,找到导致用于与掩模的第一连续部分共位的当前块内的像素值的最佳匹配的第一运动矢量。该最佳匹配定义第一预测块部分。类似地,在606帧间预测第二预测块部分包括使用掩模执行用于参考帧内的当前块的像素位置的第二连续部分内的像素值的第二运动搜索。也就是说,找到导致用于与掩模的第二连续部分共位的当前块内的像素值的最佳匹配的第二运动矢量。该最佳匹配定义第二预测块部分。虽然描述了一个参考帧的使用,但是可以对多于一个参考帧执行搜索,并且最佳匹配不需要在相同的参考帧中。

当过程600是编码过程时,在608,使用部分来生成预测块可以包括通过使用掩模组合第一运动搜索的结果与第二运动搜索的结果来生成预测块。可以通过将最佳匹配的像素值组合到单个预测块中来实现这种组合。例如,预测块可以在与具有对应于第一预测块部分的值的掩模的第一连续部分基本重合的第一部分内的位置处具有像素,并且在与具有对应于第二预测块部分的值的掩模的第二连续部分基本重合的第二部分内的位置处具有像素。在预测块的第一部分和第二部分之间的边界处,像素值是根据模糊的像素值的组合。例如,模糊可以在边界处具有0.75、0.50和0.25的1和0之间的值。在这种情况下,在两个部分之间的边界区域处的像素包括与第一部分相邻的第一组像素,第一部分具有将第一部分的共位像素的像素值的75%与第二部分的共位像素的像素值的25%组合的值,还包括与第二部分相邻的第二组像素,第二部分具有将第一部分的共位像素的像素值的25%与第二部分的共位像素的像素值的75%组合的值,以及包括在第一和第二边界区域之间的第三组像素,第一和第二边界区域具有将第一部分的共位像素的像素值的50%与第二部分的共位像素的像素值的50%组合的值。这是一个简单的示例,并且用于应用模糊掩模以组合两组像素以生成预测块的其他技术在本领域技术人员的基于本公开内容的技术范围内。

值得注意的是,可以修改掩模以用于604和606的帧间预测。也就是说,例如,掩模可以被旋转。这更改当前块中为每次搜索选择的像素。因此执行运动搜索包括使用旋转的掩模在参考帧内执行第一和第二运动搜索,即,找到用于与旋转掩模的每个单独连续部分并置的当前帧最佳匹配。然后,在608类似地使用旋转的掩模组合用于部分的最佳匹配以生成预测块。

还可以通过将掩模移位运动矢量来修改掩模以用于604和606的帧间预测。即,对应于掩模的大小(无论帧的全部或部分)编码当前帧的部分的益处可以通过调整掩模分离的连续部分之间的边界而受益。可以通过例如调整像素值来调整边界,使得到掩模一侧的连续部分的大小增加,并且掩模的相对侧上的连续部分在掩模的边界内的大小减小在当前帧之前的(例如,最后的)帧中的一个运动矢量。例如,用于移动边界并因此移位掩模的运动矢量可以是与正被预测的当前块共位的最后帧的块的运动矢量。

在610,使用预测块编码当前块包含生成用于当前块的残差,且用解码当前块所必需的信息编码残差到编码的比特流中。例如,编码过程可以包括使用如关于图4所描述的变换级404、量化级406和熵编码级408来处理残差。解码当前块所必需的信息可以包括指示使用掩模编码的当前块的模式指示符(有时称为标志),指示哪些帧用于在编码器中生成掩模的指示符(诸如帧id),作为运动搜索的结果而找到的运动矢量,参考帧的识别符以及对掩模的任何修改的指示符。例如,如果掩模被旋转以用于编码过程,则比特流将包括这样的指示。该信息可以包括在帧、片、片段或块报头中,并且不是所有信息都需要在相同报头中发送。此外,不是所有的信息都需要被传输。例如,如果在生成掩模之后没有改变掩模(例如,它不被旋转),则不需要发送修改的指示符。此外,如果在该掩模模式中始终使用过去两个帧编码,则不需要识别在比特流内使用的这两个帧。其他修改也是可能的。

从描述图4的编码过程的说明书可以理解,单个掩模的生成可能不会导致块的最有效的编码。因此,图6的过程可并入到使用不同掩模(或旋转的相同掩模)执行帧间预测的一个或一个以上速率-失真循环中,以便找到用于以最低编码成本(例如,编码的比特的数量)编码当前块的掩模和运动矢量。

当过程600是解码过程时,根据图6在602执行从帧残差生成掩模。根据一个实施方式,当使用掩模模式时,从编码的比特流(例如,通过熵解码包含信息的报头)获得用于计算残差的帧。或者,可以通过使用掩模模式来了解帧。例如,如果总是使用到当前帧的先前两个相邻帧,则不需要向解码器单独地发信号通知帧的标识。

在604用于帧间预测第一预测块部分的第一运动矢量和在606用于帧间预测第二预测块部分的第二运动矢量可从比特流内的报头获得。在604帧间预测第一预测块部分可以包括:使用第一运动矢量生成第一参考块,并将掩模应用于第一参考块,以生成第一掩模参考块(即,第一预测块部分)。类似地,在606帧间预测第二预测块部分可以包括:使用第二运动矢量生成第二参考块,并将掩模应用于第二参考块以生成第二掩模参考块(即,第二预测块部分)。在608以与上文关于编码过程所描述的方式类似的方式使用多个部分生成预测块。

在610使用预测块解码当前块包括从比特流解码当前块的残差,并将预测块添加到残差。例如,解码过程可以包括使用熵解码级502、去量化级504和图5所描述的逆变换级506处理残差。然后,可以在重建阶段510重建当前块,如参照图5所描述的。

像素预测用于减少在比特流内被编码的数据量。一种技术是使用运动矢量从先前编码的帧拷贝像素块。实际上,对象通常不落在常规块边界上。根据本文的教导,更好地跟随对象的边缘形状并因此可以改善视频压缩的预测器(例如,预测块)。

上文所描述的编码和解码的方面说明编码和解码技术的一些示例。然而,应当理解,作为权利要求中使用的那些术语的编码和解码可以意指压缩、解压缩、变换或任何其他处理或数据变化。

词语“示例”在本文中用于表示用作示例、实例或说明。在本文中被描述为“示例”的任何方面或设计不一定被解释为相对于其他方面或设计是优选的或有利的。相反,使用词语“示例”旨在以具体的方式呈现概念。如本申请中所使用的,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有说明或者从上下文中清楚指示,否则“x包括a或b”旨在表示任何自然的包括性排列。也就是说,如果x包括a;x包括b;或x包括a和b两者,则在任何前述实例下满足“x包括a或b”。此外,除非另有说明或从上下文中清楚地指示单数形式,否则本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为表示“一个或多个”。此外,除非这样描述,否则贯穿全文使用术语“实施方式”或“一个实施方式”并不旨在表示相同的实施例或实施方式。

发送站102和/或接收站106(以及存储在其上和/或由此执行,包括由编码器400和解码器500的算法、方法、指令等等)的实施方式可以在硬件、软件或其任何组合实现。硬件可以包括例如计算机,知识产权(ip)核,专用集成电路(asic),可编程逻辑阵列,光学处理器,可编程逻辑控制器,微代码,微控制器,服务器,微处理器,数字信号处理器或任何其他合适的电路。在权利要求中,术语“处理器”应当被理解为单独地或组合地包括任何前述硬件。术语“信号”和“数据”可互换使用。此外,发送站102和接收站106的部分不一定必须以相同的方式实现。

此外,在一个方面,例如,发送站102或接收站106可以使用具有计算机程序的通用计算机或通用处理器来实现,计算机程序在被执行时执行任何相应的方法、算法和/或指令。附加地或可选地,例如,可以使用可以包含用于执行本文所述的任何方法、算法或指令的其他硬件的专用计算机/处理器。

发送站102和接收站106可以例如在视频会议系统中的计算机上实现。替换地,发送站102可以在服务器上实现,并且接收站106可以在与服务器分离的设备上实现,例如手持通信设备。在这种情况下,发送站102可以使用编码器400将内容编码为编码的视频信号,并将编码的视频信号发送到通信设备。继而,通信设备然后可以使用解码器500解码编码的视频信号。替换地,通信设备可以解码在通信设备上本地存储的内容,例如,未由发送站102发送的内容。其他合适的发送和接收的实施方式是可用的。例如,接收站106可以是通常固定的个人计算机而不是便携式通信设备,和/或包括编码器400的设备还可以包括解码器500。

此外,本发明的实施方式的全部或一部分可以采用例如计算机可用介质或计算机可读介质存取的计算机程序产品的形式。计算机可用介质或计算机可读介质可以是能够例如有形地包含、存储、传送或传输由任何处理器使用或与任何处理器结合使用的程序的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体器件。也可使用其它合适的介质。

已经描述了上述实施例、实施方式和方面以便于容易理解本发明,并且不限制本发明。相反地,本发明旨在覆盖包括在所附权利要求的范围内的各种修改和等同布置,其范围符合最宽泛的解释,以便包括所有法律允许的这样的修改和等同结构。

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