涉及基于gop的时间过滤的视频译码

文档序号:1967137 发布日期:2021-12-14 浏览:17次 >En<

阅读说明:本技术 涉及基于gop的时间过滤的视频译码 (Video coding involving GOP-based temporal filtering ) 是由 P·文纳斯滕 J·厄斯特兰德 于 2020-03-10 设计创作,主要内容包括:一种用于对视频信号进行编码的方法包括接收包括图片的序列的输入。选择来自序列的图片的子集。然后,来自序列的图片的所选子集被过滤。然后,图片的经过滤的所选子集和不在所选子集中的未过滤图片被应用于编码器以产生经编码的信号。(A method for encoding a video signal includes receiving an input comprising a sequence of pictures. A subset of pictures from the sequence is selected. Then, the selected subset of pictures from the sequence is filtered. The filtered selected subset of pictures and the unfiltered pictures not in the selected subset are then applied to an encoder to produce an encoded signal.)

涉及基于GOP的时间过滤的视频译码

技术领域

本公开的实施例涉及一种视频译码(video coding)的方法。

背景技术

在用于对图片的序列进行编码的已知过程中,每个图片由图片顺序计数(POC)编号0、1、2、3……等指示。编码过程导致以独立译码的图像开始的译码视频序列,该独立译码图像被称为I帧,即具有POC 0的帧。此后,通常存在根据至少一个其它帧预测的若干帧,我们称之为B帧。通常,译码是分层级进行的。首先,对I帧(帧0)进行译码,然后是根据I帧预测的帧,然后是根据先前译码的帧进行预测的帧等等。定义图片如何能相互引用(reference)的结构被称为图片组(GOP)结构。

发明内容

一般来说,除非从其中使用它的上下文中暗示了和/或清楚地给出了不同的含义,否则本文使用的所有术语都要根据它们在相关技术领域中的普通含义来解释。除非另有明确声明,否则对一(a/an)/该(the)元件、设备、组件、部件、步骤等的所有提及都要开放式地解释为指代该元件、设备、组件、部件、步骤等的至少一个实例。除非一步骤被明确地描述为跟随或先于另一步骤,和/或其中暗示一步骤必须跟随或先于另一步骤,否则本文中公开的任何方法的步骤不必按照公开的确切顺序来执行。在任何适当的情况下,本文中公开的实施例中的任何实施例的任何特征都可应用于任何其它实施例。同样,实施例中的任何实施例的任何优点都可应用于任何其它实施例,并且反之亦然。根据以下描述,所附实施例的其它目的、特征和优点将显而易见。

根据本公开的实施例,提供有一种用于对视频信号进行编码的方法,该方法包括:接收包括图片的序列的输入;选择来自序列的图片的子集;对来自序列的图片的所选子集进行过滤(filter);将图片的经过滤的所选子集和不在所选子集中的未过滤图片应用于编码器以产生经编码的信号。

图片的所选子集包含至少一个图片,并且不包含所有图片。

选择图片的子集可包括基于所述图片在图片的序列中的位置来选择所述图片的子集。

该方法可包括基于图片顺序计数(POC)编号、对该图片的引用次数、在译码层级中的位置或时间ID来选择图片的子集。

对来自所述序列的图片的所选子集进行过滤可包括应用总体过滤器强度值。

可取决于以下项中的一个或多个来设置总体过滤器强度值:图片顺序计数(POC)编号、对该图片的引用次数、在译码层级中的位置或时间ID。

对于具有第一时间ID的图片,总体过滤器强度值可被设置成第一值,而对于具有第二时间ID的图片,总体过滤器强度值被设置成不同的第二值。

总体过滤器强度值的第一值可高于第二值,并且第一时间ID低于第二时间ID。

对来自所述序列的图片的所选子集进行过滤进一步包括:选择与每个所选择的图片相关联的至少一个引用图片;以及基于所述至少一个引用图片中的对应像素值来修改每个所选择的图片中的像素值。

修改像素值的步骤可包括根据所述至少一个引用图片中的对应像素值的加权和来修改至少一个像素值。

应用于所述像素值的权重可基于所述像素和所述引用图片中的对应像素之间的平方差。备选地,应用于所述像素值的权重可基于在当前帧中的区域中的像素和引用中的对应区域中的像素之间的平方差之和。

所述方法可包括在亮度通道中应用第一权重,并且在色度通道中应用第二权重。

所述至少一个引用图片可包括所述所选择的图片之前的预确定数量的图片和所述所选择的图片之后的预确定数量的图片。

所述编码器可包括混合编码器。

根据第二方面,提供有一种视频编码器,包括:用于对输入进行过滤的时间过滤器,其中时间过滤器被配置成按照根据第一方面的方法进行操作;以及用于对经过滤的图片进行编码的编码器。

这提高了编码质量,同时也提高了效率。

附图说明

现在将参考附图更全面地描述本文中设想的实施例中的一些实施例。然而,在本文中公开的主题的范围内含有其它实施例,所公开的主题不应被解释为仅限于本文中阐述的实施例;而是,这些实施例是通过示例的方式提供的,以向本领域技术人员传达主题的范围。

图1示出了根据本公开实施例的设备。

图2图示了视频译码的一种形式。

图3图示了根据本公开实施例的视频编码器。

图4是图示根据本公开实施例的视频编码的方法的流程图。

图5图示了图4的方法中的一阶段。

图6图示了图4的方法中的一阶段。

图7是图示根据本公开实施例的视频编码的方法的流程图。

具体实施方式

图1示出了根据本公开的一方面的设备10。

设备10例如可以是诸如膝上型电脑、记事本或平板计算机之类的便携式计算设备,或者可以是诸如智能电话之类的通信设备。设备10也可以是专用成像装置,诸如摄像机。

设备10包括成像模块20,该成像模块包括诸如透镜和一个或多个图像传感器的光学装置,以用于产生一起形成视频的图片的序列。

设备10还包括数据处理和控制单元30,该数据处理和控制单元被示为包括处理器32和存储器34。处理器32和存储器34可各包括单个单元,或者可由多个单元组成。例如,下面更详细描述的视频编码器可位于还控制设备10的其它操作的处理芯片中,或者可被设置在单独的视频处理芯片中。

设备10还包括收发器模块40,以用于与其它装置通信。在其中设备10是便携式计算设备或通信设备的情况下,收发器模块40可以是无线通信收发器,以用于通过无线通信网络进行通信。在其它示例中,收发器模块40可被配置成通过有线链路与至少一个其它装置建立通信。

图2图示了视频译码的过程。

具体地说,图2示出了对图片的序列进行编码的过程,其中每个图片由图片顺序计数(POC)编号0、1、2、3、……、32指示。编码过程导致以独立译码的图像开始的译码视频序列,该独立译码图像被称为I帧,即具有POC 0的帧。

此后,通常存在根据至少一个其它帧预测的若干帧,我们称之为B帧。通常,译码是分层级进行的。首先对I帧(帧0)进行译码,然后对根据1预测的帧16进行译码,然后对根据0和16预测的帧8进行译码等等。图2还指示了译码顺序(其与序列最终被解码时的解码顺序相同)。

图2中所示的结构被称为图片组(GOP)结构。GOP结构定义了图片如何能相互引用以及每个图片特定的配置。GOP能被分成时间子层。在图2中,有由时间标识符(TId)0-4指示的5个时间子层。在某个时间子层的图片不能引用在更高时间子层的图片。

图2图示了用于高效视频译码(HEVC)中的随机访问的GOP结构的典型示例,但是可领会的是,许多这样的结构是可能的。

每个GOP有以TId 0的图片开始的16个图片。箭头图示了引用,因此,例如,POC 8被用作POC 4、6、7、9、10和12的引用。解码器顺序,即图片被解码器处理的顺序,通常被优化,使得被引用的图片尽可能接近图片,以最小化时延和存储器使用。

当试图减少视频序列中的噪声时,一种可能性是在不同的帧中找到彼此对应的区域。这是通过称为运动估计的过程来实现的。然后可应用过滤器,用来自不同帧中同一区域的加权像素值替换像素值,从而使噪声平滑。我们只想要对真正彼此对应的像素进行平均,因此如果它们的值之间的差异太大,我们想要减少过滤量。这可通过例如使用双边过滤器来实现。

当基于另一帧对视频帧进行译码时,它们经常匹配得非常好,并且有可能简单地复制(copy over)来自前一帧的像素而不进行修改。尽管在原始帧之间通常仍将有小的差异,并且为了最小化总体误差,我们希望像素不仅类似于它们第一次被译码的帧中的原始像素,而且类似于它们将被重用的所有未来帧中的原始像素。

图3图示了根据本公开的一个方面的视频编码器。

具体而言,图3示出了视频编码器100,其包括基于GOP的时间过滤器102,该时间过滤器被直接或间接连接到成像模块以接收图片的序列。图片被读取,并且然后被过滤器分析。取决于高级属性,如下面更详细描述的,在进一步处理之前,每个图片要么被过滤,要么不被接触。在图1中所示的实施例中,选择来自序列的图片的子集;对来自序列的图片的所选子集进行过滤;以及图片的经过滤的所选子集与不在所选子集中的未过滤图片被应用于编码器以产生经编码的信号。该子集包含至少一个图片,并且不包含所有图片。

更具体地,在图1中所示的实施例中,进一步的处理发生在通常标准的混合编码器中。

具体地说,从时间过滤器102输出的每个图片被传递到运动补偿块104和帧内预测块106。取决于复用器108的设置,运动补偿块104或帧内预测块106的输出被传递到减法器110,其中从来自时间过滤器102的相关图片输出中减去该输出。

所得到的图片被传递到变换块112,并且然后像常规的那样被传递到量化块114,其中输出被传递到熵编码器116,以产生能被存储在存储器34中或者供应给收发器模块40的输出。

编码器还包括重新构造路径,以重新构造用于编码另外图片的帧。具体地说,量化块114的输出被传递到逆量化块118,并且然后被传递到逆变换块120。

运动补偿块104或帧内预测块106的输出被传递到第二减法器122,其中从逆变换块120的输出中减去该输出,并且所得到的信号被传递到帧内预测块106。

所得到的信号还被传递到装置块124,其中重新构造的帧被写入到盘或写入到存储设备或写入到流,并且然后被写入到解码图片缓冲器(DPB)块126,其中帧被存储在存储器中以用于以后的解码步骤,并且结果被传递到运动补偿块104。

从而,视频编码器102包括本质上是时间去噪过滤器的东西,并且过滤器102的参数基于正被编码的视频的GOP结构和其它参数。

如下文更详细描述的,在取决于时间ID和量化参数的过滤中,通过像素值和时间上邻近的像素值的加权组合来修改该像素值。通过运动补偿来确定时间上邻近的像素。

图4是图示了图3中所示的过滤器102的操作方法的流程图。

在该方法的步骤201,以通常常规的方式读取接收的图片。

在步骤202,确定接收的图片是否满足某些高级属性。在一些实施例中,基于图片在图片的序列中的位置来选择所述图片。从而,例如,用作确定基础的高级属性可能是例如图片的POC编号、对该图片的引用次数、图片在译码层级中的位置或图片的时间ID,如参考图2所图示的那样。

如果不满足相关的高级属性,则过程转到步骤203,并且原始接收的图片不变地传递,即没有过滤。

如果满足相关的高级属性,则过程转到步骤204,其中读取在所选择的图片(其在下面被称为原始图片)之前和/或之后的引用图片的可配置数量。在边缘情况下,例如,如果图片是第一个或最后一个图片或者接近第一个或最后一个图片,则仅读取可用的图片。

在步骤205,按图片块估计引用图片相对于原始图片的运动。

图5图示了这个步骤。具体地说,图5示出了图片150的一部分,其中每个小正方形代表一像素,并且正方形内部的数字代表该像素的亮度和/或色度值。

图5示出了被分成块152、154的图片150,其中这些块由较粗的线分开,并且每个块具有4×4像素的大小。

在一个实施例中,二次采样(subsampling)用于搜索较大的运动,并且插值用于搜索较小的运动。

图6图示了二次采样的一个可能的过程。具体地说,这涉及构造具有较低分辨率的图片。图6示出了图片150左上角的2×2像素块被单个像素替换。从而,原始2×2块中的四个像素值的平均数被取作单个像素的值。从而,93是四个像素值4、81、98和189的平均数。

在图4中所示过程的步骤206,根据每个块的最佳匹配运动,对引用图片应用运动补偿,即,使得每个块中的原始图片的像素坐标在所引用的图片中具有最佳匹配坐标。

在步骤207,设置时间过滤器的总体强度。这里,可基于上面提到的高级属性中的一个或多个(例如图片的POC编号、对该图片的引用次数或者图片在译码层级中的位置或者图片的时间ID)来设置过滤器强度。在其它实施例中,每秒图片的数量或该配置的任何其它特征可用于设置总体过滤器强度。

在步骤208,针对亮度和/或色度通道逐个处理图片的像素。从而,在步骤208a,确定是否有任何更多的像素要处理,并且如果有,则过程转到步骤208b,其中处理下一个像素,直到没有进一步的像素为止。

在步骤209,例如取决于量化参数、原始图片和引用图片中的像素值,并且可能还取决于运动向量长度和对GOP中定义的原始图片的引用次数,过滤器强度被进一步调整。

对于亮度和色度通道,可能不同地设置强度。

也能将空间上邻近的像素值考虑进去以用于确定过滤器强度。

在步骤210,对于当前像素应用过滤器。所得到的像素值被单独存储或者可能直接存储在原始图片中,这取决于在步骤209中要求什么信息。

在步骤211,经过滤的图片被转发到编码器100中接下来的步骤,如图3中所示的那样。如果图片尚未被选择用于过滤,则未过滤的图片被转发到编码器。

现在更详细地描述一个特定实现的特征。将领会的是,这些特征能单独实现或以任何组合或子组合一起实现。

从而,在图4中所示方法的步骤202中,基于读取的图片数量来进行关于图片是否被选择的确定。取决于特定的GOP结构,该确定对应于基于时间层或时间标识符TId的确定。

具体地说,在一个实施例中,如果n mod 8 ≠0,则帧不被进一步处理,其中n是读取的图片数量。否则,图片被进一步处理。从而,具有POC 0、8、16、24等的图片被进一步处理,并且其它图片被传递到编码器而不过滤。在图2中所示的GOP结构中,n mod 8 ≠0对应于大于1的时间层。更一般地,可进行步骤202中的确定,使得仅对TId等于或低于阈值级别的图片进行过滤。

在步骤204中,引用图片的可配置数量可被设置为原始图片之前的两个图片和原始图片之后的两个图片,如果它们可用,则读取它们。因此,有多达四个引用图片。然而,可能存在少于四个的引用图片。例如,在n=0时,没有前面的图片,并且因此只有两个引用图片。

在步骤207,设置总体过滤器强度。

在一些实施例中,基于一个或多个高级属性来设置总体过滤器强度的值。例如,可基于读取的图片数量来设置总体过滤器强度的值。取决于特定的GOP结构,这对应于基于时间层或TId的确定。

例如,如果步骤202中的确定使得只有TId等于或低于阈值级别的图片被过滤,则可在步骤204中设置总体过滤器强度,使得第一过滤器强度值被应用于TId等于该阈值级别的图片,并且第二过滤器强度值被应用于TId低于该阈值级别的图片。

在一个示例中,根据下面的等式来设置总体过滤器强度so

从而,1.5的总体过滤器强度被应用于时间id为0的图片,而0.95的总体过滤器强度被应用于时间id为1的图片。

从而,在该示例中,如参考步骤202所描述的,如果具有POC 0、8、16、24等的图片被进一步处理,则1.5的总体过滤器强度被应用于具有POC 0、16等的图片,而0.95的总体过滤器强度被应用于具有POC 8、24等的图片。

在步骤209,计算新的像素值。具体地说,在该图示的实施例中,使用以下公式计算新的像素值I n

其中I o 为原始像素的像素值,I r (i)为引用i的对应像素的强度,并且w r (i, a)为可用引用数量为a时引用i的权重。

在亮度通道中,权重w r (i, a)被如下定义:

其中:

对于i以及a的所有其它情况:

对于色度通道,权重w r (i, a)被如下定义:

其中s c = 0.55并且σ c = 30

在备选实施例中,不是将权重基于像素和引用帧中的对应像素之间的平方差,而是基于当前帧中的区域和引用中的对应区域之间的平方差之和。

从而,如上所述,在编码器的输入端对图片的所选子集进行时间过滤。过滤是在译码环之外完成的。可根据像素之间的时间、空间和强度差异还有量化参数来调整过滤器强度。

图7是图示了用于对图片的序列进行编码的方法的流程图。

该方法开始于步骤300,其中接收包括图片的序列的输入。在步骤302,选择来自序列的图片的子集。该子集包含至少一个图片,并且不包含序列中的所有图片。在步骤304,来自序列的图片的所选子集被过滤。在步骤306,图片的经过滤的所选子集和不在所选子集中的未过滤图片被应用于编码器以产生经编码的信号。

本文公开的任何适当的步骤、方法、特征、功能或益处都可通过一个或多个虚拟设备的一个或多个功能单元或模块来执行。每个虚拟设备可包括若干这些功能单元。这些功能单元可经由处理电路以及其它数字硬件实现,该处理电路可包括一个或多个微处理器或微控制器,其它数字硬件可包括数字信号处理器(DSP)、专用数字逻辑等。处理电路可被配置成执行存储在存储器中的程序代码,该存储器可包括一种或多种类型的存储器,诸如只读存储器(ROM)、随机存取存储器(RAM)、高速缓冲存储器、闪存装置、光存储装置等。存储在存储器中的程序代码包括用于执行一个或多个电信和/或数据通信协议的程序指令,以及用于实行本文描述的技术中的一个或多个技术的指令。在一些实现中,处理电路可用于使相应的功能单元执行根据本公开的一个或多个实施例的对应的功能。

在另一个实施例中,提供有一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有体现在其中的计算机可读代码,该计算机可读代码被配置成使得在由合适的计算机或处理器执行时,使计算机或处理器执行本文描述的方法的实施例中的任何实施例,诸如上面关于图4至7描述的方法的实施例。

从而,将领会的是,本公开也适用于适于将实施例付诸实践的计算机程序,特别是载体上或载体中的计算机程序。该程序可以采用源代码、目标代码、源和目标代码中间的代码的形式,诸如采用部分编译的形式,或者采用适合于实现根据本文描述的实施例的方法中使用的任何其它形式。

还将领会的是,这样的程序可具有许多不同的架构设计。例如,实现方法或系统的功能性的程序代码可被细分成一个或多个子例程。在这些子程序之间分布功能性的许多不同的方式对本领域技术人员将是显而易见的。子例程可一起存储在一个可执行文件中,以形成自包含程序。这样的可执行文件可包括计算机可执行指令,例如处理器指令和/或解释器指令(例如,Java解释器指令)。备选地,子例程中的一个或多个或所有子例程可被存储在至少一个外部库文件中,并且例如在运行时动态地或静态地与主程序链接。主程序包含对子例程中的至少一个子例程的至少一次调用。子例程还可包括对彼此的函数调用。

计算机程序的载体可以是能够携带程序的任何实体或装置。例如,载体可包括数据存储设备,诸如ROM(例如CD ROM或半导体ROM)或者磁记录介质(例如硬盘)。此外,载体可以是可传输的载体,诸如电信号或光信号,其可经由电缆或光缆或通过无线电或其它方式输送。当程序被体现在这样的信号中时,载体可由这样的缆线或其它装置或部件构成。备选地,载体可以是其中嵌入程序的集成电路,该集成电路适合于执行相关方法或用于相关方法的执行。

通过研究附图、公开和所附权利要求,本领域技术人员在实践要求保护的发明时可理解和实现对所公开实施例的变化。在权利要求中,词语“包括”不排除其它元件或步骤,并且不定冠词“一(a或an)”不排除多个。单个处理器或其它单元可满足在权利要求中记载的若干项的功能。在相互不同的从属权利要求中记载某些措施的纯粹事实不指示不能使用这些措施的组合来获利。计算机程序可被存储/分布在合适的介质(诸如与其它硬件一起供应或作为其它硬件的一部分供应的光存储介质或固态介质)上,但是也可以以其它形式分布,诸如经由因特网或其它有线或无线电信系统。权利要求中的任何附图标记不应该被解释为限制范围。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于视频编解码的量化矩阵计算和表示的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类