CN118055253A - 用于视频代码化中的运动补偿预测的光流估计 - Google Patents

用于视频代码化中的运动补偿预测的光流估计 Download PDF

Info

Publication number
CN118055253A
CN118055253A CN202410264512.2A CN202410264512A CN118055253A CN 118055253 A CN118055253 A CN 118055253A CN 202410264512 A CN202410264512 A CN 202410264512A CN 118055253 A CN118055253 A CN 118055253A
Authority
CN
China
Prior art keywords
reference frame
frame
block
current
optical flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410264512.2A
Other languages
English (en)
Inventor
许耀武
李博晗
韩敬宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/683,684 external-priority patent/US11284107B2/en
Priority claimed from US15/817,369 external-priority patent/US10659788B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of CN118055253A publication Critical patent/CN118055253A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/19Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请公开了用于视频代码化中的运动补偿预测的光流估计。生成可以用于视频序列中的当前帧的块的帧间预测的光流参考帧部分(例如,块或整个帧)。前向参考帧和后向参考帧被用于光流估计,所述光流估计产生当前帧的像素的运动场。运动场被用来使参考帧的像素中一些或全部扭曲成当前帧的像素。扭曲的参考帧像素被混合以形成光流参考帧部分。帧间预测可以作为对当前帧的部分进行编码或解码的部分被执行。

Description

用于视频代码化中的运动补偿预测的光流估计
分案说明
本申请属于申请日为2018年5月10日的中国发明专利申请201880036783.5的分案申请。
技术领域
本公开涉及用于视频代码化中的运动补偿预测的光流估计。
背景技术
数字视频流可以使用一系列帧或静止图像来表示视频。数字视频可以用于各种应用,包括例如,视频会议、高清视频娱乐、视频广告或用户生成的视频的共享。数字视频流可以包含大量数据并且消耗计算装置的大量计算或通信资源来处理、传输或者存储视频数据。已经提出了各种各样的方法以减少视频流中的数据量,所述方法包括压缩和其他编码技术。
一种压缩技术使用参考帧来生成与要被编码的当前块对应的预测块。除了当前块本身的值,可以对预测块与当前块之间的差进行编码,以减少编码的数据量。
发明内容
本公开大体上涉及对视频数据进行编码和解码,并且更具体地涉及使用用于视频压缩中的运动补偿预测的基于块的光流估计。还描述了基于帧等级的光流估计,其可以对共位(co-located)的参考帧进行插值以用于视频压缩中的运动补偿预测。
本公开描述了编码和解码方法和装置。根据本公开的实施方式的方法确定要被预测的第一帧的第一帧部分,第一帧在视频序列中;从视频序列确定第一参考帧,以用于第一帧的前向帧间预测;从视频序列确定第二参考帧,以用于第一帧的后向帧间预测;通过使用第一参考帧和第二参考帧执行光流估计生成光流参考帧部分以用于第一帧部分的帧间预测;以及使用光流参考帧执行第一帧部分的预测过程。例如,第一帧部分和光流参考帧部分可以是块或整个帧。
根据本公开的实施方式的装置包括非暂时性存储介质或存储器以及处理器。介质包括指令,该指令可由处理器执行以实行方法,该方法包括:确定视频序列中要被预测的第一帧;以及确定用于第一帧的前向帧间预测的第一参考帧和用于第一帧的后向帧间预测的第二参考帧的可用性。该方法还包括响应于确定第一参考帧和第二参考帧两者的可用性:使用第一参考帧和第二参考帧作为向光流估计过程的输入生成第一帧部分的像素的相应的运动场;使用运动场使第一参考帧部分扭曲成第一帧部分,以形成第一扭曲参考帧部分,第一参考帧部分包括与第一帧部分的像素共位的第一参考帧的像素;使用运动场使第二参考帧部分扭曲成第一帧部分,以形成第二扭曲参考帧部分,第二参考帧部分包括与第一帧部分的像素共位的第二参考帧的像素;以及将第一扭曲参考帧部分和第二扭曲参考帧部分混合,以形成用于第一帧的至少一个块的帧间预测的光流参考帧部分。
根据本公开的实施方式的另一个装置也包括非暂时性存储介质或存储器以及处理器。介质包括指令,该指令可由处理器执行以实行方法,该方法包括:通过在第一处理等级中初始化第一帧部分的像素的运动场以用于光流估计,使用来自视频序列的第一参考帧和视频序列的第二参考帧来生成用于视频序列的第一帧的块的帧间预测的光流参考帧部分,第一处理等级表示第一帧部分内的缩小(downscale)的运动并且包括多个等级中的一个等级;以及对于多个等级中的每个等级:使用运动场使第一参考帧部分扭曲成第一帧部分,以形成第一扭曲参考帧部分;使用运动场使第二参考帧部分扭曲成第一帧部分,以形成第二扭曲参考帧部分;使用光流估计来估计第一扭曲参考帧部分与第二扭曲参考帧部分之间的运动场;以及使用第一扭曲参考帧部分与第二扭曲参考帧部分之间的运动场来更新第一帧部分的像素的运动场。该方法还包括:对于多个等级中的最终等级:使用更新的运动场使第一参考帧部分扭曲成第一帧部分,以形成最终第一扭曲参考帧部分;使用更新的运动场使第二参考帧部分扭曲成第一帧部分,以形成最终第二扭曲参考帧部分;以及将最终第一扭曲参考帧部分和最终第二扭曲参考帧部分混合,以形成光流参考帧部分。
根据本公开的实施方式的另一个装置包括非暂时性存储介质或存储器以及处理器。介质包括指令,该指令可由处理器执行以实行方法,该方法包括:确定要被预测的第一帧的第一帧部分,第一帧在视频序列中;从视频序列确定第一参考帧,以用于第一帧的前向帧间预测;从视频序列确定第二参考帧,以用于第一帧的后向帧间预测;通过使用第一参考帧和第二参考帧执行光流估计生成光流参考帧部分,以用于第一帧部分的帧间预测;以及使用光流参考帧执行第一帧部分的预测过程。
本公开的这些和其他方面公开于下面的实施例、所附权利要求和附图的详细描述中。
附图说明
本文的描述参照了下述附图,其中,除非另外说明,否则在全部多个视图中,类似的附图标记指代类似的部件。
图1是视频编码和解码系统的示意图。
图2是可以实现发送站或者接收站的计算设备的示例的框图。
图3是要被编码并且后续被解码的典型视频流的图。
图4是根据本公开的实施方式的编码器的框图。
图5是根据本公开的实施方式的解码器的框图。
图6是参考帧缓冲区的示例的框图。
图7是按照视频序列的显示顺序的帧组的图。
图8是图7的帧组的代码化顺序的示例的图。
图9是用于根据本文中的教导解释运动场的线性投影的图。
图10是使用参考帧的至少一部分对视频帧进行运动补偿预测的过程的流程图,该参考帧是使用光流估计来生成的。
图11是用于生成光流参考帧部分的过程的流程图。
图12是用于生成光流参考帧部分的另一个过程的流程图。
图13是图示了图11和图12的过程的图。
图14是图示了的目标遮挡的图。
图15是图示了优化解码器的技术的图。
具体实施方式
可以通过各种技术对视频流进行压缩,以减少传送或存储视频流所需的带宽。视频流可以被编码成比特流,这涉及到压缩,然后其被传送到可以对视频流进行解码或解压的解码器,以使其为查看或进一步处理做好准备。视频流的压缩通常通过空间和/或运动补偿预测来利用视频信号的空间和时间相关性。例如,帧间预测使用一个或者多个运动矢量来生成块(也称为预测块),其类似于要使用先前编码和解码的像素而被编码的当前块。通过对运动矢量以及两个块之间的差进行编码,接收编码信号的解码器可以重新创建当前块。帧间预测也可以称为运动补偿预测。
在帧间预测过程中用于生成预测块的每个运动矢量都涉及除了当前帧之外的帧,即,参考帧。参考帧可以位于视频流序列中的当前帧之前或之后,并且可以是在被用作参考帧之前重构的帧。在一些情况下,可能存在用于对视频序列的当前帧的块进行编码或解码的三个参考帧。一个是可以称为黄金帧的帧。另一个是最近编码或解码的帧。最后一个是在序列中的一个或多个帧之前被编码或解码但是按照输出显示顺序在这些帧之后被显示的替代参考帧。以这种方式,替代参考帧是可用于后向预测的参考帧。一个或多个前向和/或后向参考帧可以用于对块进行编码或解码。参考帧在用于对当前帧内的块进行编码或解码时的效能可以基于结果信噪比或其他率失真度量来度量。
在这种技术中,形成预测块的像素是直接从可用参考帧中的一个或多个获得的。参考像素块或它们的线性组合用于预测当前帧中的给定代码化块。这种直接的、基于块的预测并不会从参考帧捕获可获得的、真正的运动活动。为此,运动补偿预测精度可能会受到影响。
为了更充分地利用来自可用的双向参考帧(例如,一个或多个前向参考帧和一个或多个后向参考帧)的运动信息,本文中的教导的实施方式描述了与当前代码化帧部分并置的参考帧部分,该当前代码化帧部分使用通过光流计算的每一像素的运动场来估计视频信号中的真正的运动活动。对允许追踪复杂的非平移运动活动的参考帧部分进行插值,这超出了直接从参考帧确定的传统的、基于块的运动补偿预测的性能。这种参考帧部分的使用可以提高预测质量。如本文所使用的,帧部分指所有帧中的一些,诸如,块、片或整个帧。一个帧中的帧部分与另一个帧中的帧部分并置,如果它们具有相同的尺寸并且位于每个帧的尺寸内的相同的像素位置。
在本文中初始是参考能够在其中实施本文中的教导的系统来描述使用光流估计对参考帧部分进行插值以用于视频压缩和重构的进一步的细节。
图1是视频编码和解码系统100的示意图。例如,发送站102可以是具有诸如图2中描述的内部硬件配置的计算机。然而,发送站102的其他合适的实施方式也是可能的。例如,发送站102的处理可以分布在多个设备中。
网络104可以连接发送站102和接收站106,以对视频流进行编码和解码。具体地,可以在发送站102中对视频流进行编码并且可以在接收站106中对编码视频流进行解码。例如,网络104可以是互联网。网络104还可以是局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、蜂窝电话网或在该示例中将视频流从发送站102传输到接收站106的任何其他方式。
在一个示例中,接收站106可以是具有诸如图2中描述的内部硬件配置的计算机。然而,接收站106的其他合适的实施方式也是可能的。例如,接收站106的处理可以分布在多个设备中。
视频编码和解码系统100的其他实施方式也是可能的。例如,实施方式可以省略网络104。在另一种实施方式中,可以对视频流进行编码,然后将其存储,以便以后传送到接收站106或具有非暂时性存储介质或存储器的任何其他设备。在一种实施方式中,接收站106接收(例如,经由网络104、计算机总线和/或一些通信路径)编码视频流并且存储视频流以供以后解码。在示例实施方式中,实时传输协议(RTP)用于通过网络104传送编码视频。在另一种实施方式中,可以使用除RTP之外的传输协议,例如,基于超文本传输协议(HTTP)的视频流协议。
当用于视频会议系统时,例如,发送站102和/或接收站106可以包括下述对视频流进行编码和解码的能力。例如,接收站106可以是视频会议参与者,所述视频会议参与者接收来自视频会议服务器(例如,发送站102)的编码视频比特流以解码和查看并且进一步将其自己的视频比特流编码和传送到视频会议服务器,以供其他参与者解码和查看。
图2是可以实施发送站或者接收站的计算设备200的示例的框图。例如,计算设备200可以实施图1的发送站102和接收站106中的一个或者两个。计算设备200可以是包括多个计算设备的计算系统的形式或者是一个计算设备的形式,例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。
计算设备200中的CPU 202可以是中央处理单元。替代地,CPU 202可以是能够操纵或者处理现在存在或者以后开发的信息的任何其他类型的设备或者多个设备。尽管所公开的实施方式可以用所示的一个处理器来实践,所述所示的一个处理器例如是CPU 202,但是在速度和效率的优势可以通过使用一个以上的处理器来实现。
在实施方式中,计算设备200中的存储器204可以是只读存储器(ROM)设备或随机存取存储器(RAM)设备。任何其他合适类型的存储设备或非暂时性存储介质都可以用作存储器204。存储器204可以包括由CPU 202使用总线212访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括允许CPU 202执行本文所描述的方法的至少一个程序。例如,应用程序210可以包括应用1至N,该应用1至N进一步包括执行本文所描述的方法的视频代码化应用。计算设备200还可以包括二级存储214,其可以例如是与移动计算设备一起使用的存储器卡。由于视频通信会话可能包含大量信息,因此可以将它们全部或者部分存储在二级存储214中,可以并且根据需要将其加载到存储器204中以进行处理。
计算设备200还可以包括一个或者多个输出装置,诸如,显示器218。在一个示例中,显示器218可以是触敏显示器,该触敏显示器将显示器与可操作以感测触摸输入的触敏元件组合。显示器218可以经由总线212耦合至CPU 202。除了显示器218之外或者作为显示器218的替代,可以提供允许用户编程或以其他方式使用计算设备200的其他输出设备。当输出设备是显示器或者包括显示器时,显示器可以各种方式来实施,包括通过液晶显示器(LCD)、阴极射线管(CRT)显示器或者发光二极管(LED)显示器,诸如,有机LED(OLED)显示器。
计算设备200还可以包括图像感测设备220或与图像感测设备220通信,例如,相机或现在存在的或以后开发的能够感测诸如操作计算设备200的用户图像的图像的任何其他图像感测设备220。可以将图像感测设备220定位为使得其朝向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以配置为使得视场包括与显示器218直接相邻并且从其中显示器218可见的区域。
计算设备200还可以包括声音感测设备222或与声音感测设备222通信,例如,麦克风或现在存在或以后开发的能够感测计算设备200附近的声音的任何其他声音感测设备。可以将声音感测设备222定位为朝向操作计算设备200的用户,并且可以将其配置为接收声音,例如,用户操作计算设备200时由用户发出的语音或者其他话语。
尽管图2描绘了计算设备200的CPU 202和存储器204被集成为一个单元,但是也可以利用其他配置。CPU 202的操作可以跨能够直接或跨局域网或其他网络耦合的多个机器(其中,单个的机器都可以具有一个或者多个处理器)分布。存储器204可以跨多个机器分布,所述存储器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也可以被布置为包括来自像素数据的一个或者多个段308的数据。块310也可以具有任何其他合适的大小,诸如,4×4像素,8×8像素、16×8像素、8×16像素、16×16像素或更大。除非另有说明,否则术语块和宏块在本文可以互换使用。
图4是根据本公开的实施方式的编码器400的框图。如上所述,编码器400可以诸如通过提供存储在存储器中的计算机软件程序来实施在发送站102中,该存储器例如是存储器204。计算机软件程序可以包括机器指令,该机器指令在由诸如CPU 202的处理器执行时使发送站102以图4中所描述的方式对视频数据进行编码。编码器400也可以实施为包括在例如发送站102中的专用硬件。在一个特别地期望的实施方式中,编码器400是硬件编码器。
编码器400具有用于执行前向路径(用实连接线表示)中的各种功能以使用视频流300作为输入产生编码或者压缩比特流420的以下阶段:帧内/帧间预测阶段402、变换阶段404、量化阶段406和熵编码阶段408。编码器400还可以包括用于重构帧以用于未来块的编码的重构路径(用虚连接线表示)。在图4中,编码器400具有用于执行重构路径中的各种功能的以下阶段:去量化阶段410、逆变换阶段412、重构阶段414和环路滤波阶段416。编码器400的其他结构变型可以用于对视频流300进行编码。
当视频流300被呈现以进行编码时,诸如帧306的相应的帧304可以块为单位被处理。在帧内/帧间预测阶段402中,相应的块可以使用帧内预测(也称为帧内预测)或帧间预测(也称为帧间预测)来编码。在任何情况下,预测块都可以形成。在帧内预测的情况下,预测块可以从先前已经编码和重构的当前帧中的样本形成。在帧间预测的情况下,预测块可以从一个或多个先前构造的参考帧中的样本形成。下面将更详细地讨论组块的参考帧的指定。
接下来,仍然参照图4,可以在帧内/帧间预测阶段402从当前块减去预测块以产生残差块(也称为残差)。变换阶段404使用基于块的变换在例如频域中将残差变换为变换系数。量化阶段406使用量化器值或量化等级将变换系数转换为离散的量值,该离散的量值被称为量化变换系数。例如,可以将变换系数除以量化器值并且将其截断。然后,通过熵编码阶段408对量化变换系数进行熵编码。然后,将熵编码的系数连同可以包括例如所使用的预测类型、变换类型、运动矢量、量化器值等的用于对块进行解码的其他信息一起输出至压缩比特流420。可以使用诸如可变长度代码化(VLC)或者算术代码化的各种技术来格式化压缩比特流420。压缩比特流420也可以被称为编码视频流或者编码视频比特流,并且术语在本文将互换使用。
图4中的重构路径(用虚连接线示出)可用于确保编码器400和(下面描述的)解码器500使用相同的参考帧来解码压缩比特流420。重构路径执行与在下面更详细地描述的解码过程期间发生的功能相似的功能,这些功能包括在去量化阶段410对量化变换系数进行去量化和在逆变换阶段412对去量化变换系数进行逆变换以产生导数残差块(也称为导数残差)。在重构阶段414,可以将在帧内/帧间预测阶段402所预测的预测块添加到导数残差以创建重构块。环路滤波阶段416可以应用于重构块以减少诸如块效应的失真。
编码器400的其他变型可以用于对压缩比特流420进行编码。例如,基于非变换的编码器可以直接量化残差信号,而无需针对某些块或者帧的变换阶段404。在另一种实施方式中,编码器可以具有组合成共用阶段的量化阶段406和去量化阶段410。
图5是根据本公开的实施方式的解码器500的框图。例如,通过提供存储在存储器204中的计算机软件程序,可以在接收站106中实施解码器500。计算机软件程序可以包括机器指令,该机器指令在由诸如CPU 202的处理器执行时使接收站106以图5中描述的方式解码视频数据。解码器500也可以实施在例如包括在发送站102或者接收站106中的硬件中。
与上述编码器400的重构路径相似,在一个示例中,解码器500包括用于执行各种功能以从压缩比特流420产生输出视频流516的以下阶段:熵解码阶段502、去量化阶段504、逆变换阶段506、帧内/帧间预测阶段508、重构阶段510、环路滤波阶段512和去块滤波阶段514。解码器500的其他结构变型也可以用于对压缩比特流420进行解码。
当呈现压缩比特流420以进行解码时,压缩比特流420内的数据元素可以由熵解码阶段502解码以产生量化变换系数集合。去量化阶段504对量化变换系数进行去量化(例如,通过将量化变换系数乘以量化器值),并且逆变换阶段506对去量化变换系数进行逆变换以产生可以与由编码器400中的逆变换阶段412所创建的导数残差相同的导数残差。使用从压缩比特流420解码的头信息,解码器500可以使用帧内/帧间预测阶段508来创建与在编码器400中例如在帧内/帧间预测阶段402所创建的相同的预测块。在重构阶段510,可以将预测块添加到导数残差,以创建重构块。环路滤波阶段512可以应用于重构块以减少块效应。
其他滤波可以应用于重构块。在该示例中,去块滤波阶段514应用于重构块以减少块失真,并且结果作为输出视频流516输出。输出视频流516也可以称为解码视频流,并且术语在本文将互换使用。解码器500的其他变型可以用于对压缩比特流420进行解码。例如,解码器500可以在没有去块滤波阶段514的情况下产生输出视频流516。
图6是参考帧缓冲区600的示例的框图。参考帧缓冲区600存储用于对视频序列的帧的块进行编码或解码的参考帧。在该示例中,参考帧缓冲区600包括被识别为最后帧LAST_FRAME 602、黄金帧GOLDEN_FRAME 604和替代参考帧ALTREF_FRAME 606的参考帧。参考帧的帧头可包括针对参考帧缓冲区内参考帧在该处被存储的位置的虚拟索引。参考帧映射可以将参考帧的虚拟索引映射到参考帧在该处被存储的存储器的物理索引。在两个参考帧是相同的帧的情况下,这些参考帧会有相同的物理索引,即使它们有不同的虚拟索引,参考帧缓冲区600内的参考位置的数量、类型和所使用的名称仅仅是示例。
存储在参考帧缓冲区600中的参考帧可以用于识别运动矢量,以用于预测要被编码或解码的帧的块。根据用于预测当前帧的当前块的预测的类型,可以使用不同的参考帧。例如,在双向预测中,可以使用被存储为LAST_FRAME 602或GOLDEN_FRAME 604的任何帧对当前帧的块进行前向预测,并且使用被存储为ALTREF_FRAME 606的帧对当前帧的块进行后向预测。
可能存在能够存储在参考帧缓冲区600中的有限数量的参考帧。如图6所示,参考帧缓冲区600可以存储多达八个参考帧,其中,每个存储的参考帧都可以与参考帧缓冲区的不同的虚拟索引相关联。尽管参考帧缓冲区600中的八个空间中的三个空间由被指定为LAST_FRAME 602、GOLDEN_FRAME 604和ALTREF_FRAME 606的帧使用,五个空间仍然可用于存储其他参考帧。例如,参考帧缓冲区600中的一个或多个可用空间可以用于存储进一步的参考帧,尤其是本文所描述的插值参考帧中的一些或全部。尽管参考帧缓冲区600被示出为能够存储多达八个参考帧,参考帧缓冲区600的其他实施方式也能够存储附加的或更少的参考帧。
在一些实施方式中,指定为ALTREF_FRAME 606的替代参考帧可以是视频序列的在显示顺序中远离当前帧但是在它被显示之前被编码或解码的帧。例如,按照显示顺序,替代参考帧可以在当前帧之后十个、十二个或更多(或更少)个帧。进一步的替代参考帧可以是在显示顺序中更接近当前帧的帧。
替代参考帧可能不直接对应于序列中的帧。相反,替代参考帧可以使用已经被应用了滤波、被组合在一起或被组合在一起且被滤波的一个或多个帧来生成。替代参考帧可能不被显示。相反,它可能是被生成和传送以仅仅用于预测过程(即,当显示解码序列时,它被省略)的帧或帧的部分。
图7是按照视频序列的显示顺序的帧组的图。在该示例中,帧组的前面是帧700并且包括八个帧702至716,该帧700在一些情况下可以称为关键帧或覆盖帧。帧700中没有块是使用帧组的参考帧来进行帧间预测的。在该示例中,帧700是关键(也称为帧内预测帧),所述关键是指帧内的预测块仅是使用帧内预测来预测的它的状态。然而,帧700可以是覆盖帧,所述覆盖帧是可以是先前帧组的重构帧的帧间预测帧。在帧间预测帧中,预测块中的至少一些是使用帧间预测来预测的。例如,形成每个帧组的帧的数量可以根据诸如为随机存取或错误恢复选择的关键帧间隔的视频空间/时间特征和其他编码的配置变化。
每个帧组的代码化顺序可能与显示顺序不同。这允许位于视频序列中的当前帧之后的帧用作用于对当前帧进行编码的参考帧。诸如解码器500的解码器可以与诸如编码器400的编码器共享共同组代码化结构。组代码化结构指派组内的相应帧在参考缓冲区中可能扮演的不同角色(例如,最后帧、替代参考帧等)并且为组内的帧限定或指示代码化顺序。
图8是图7的帧组的代码化顺序的示例的图。图8的代码化顺序与第一组代码化结构相关联,因此单个后向参考帧可用于组中的每个帧。因为编码和解码顺序是相同的,所以图8所示的顺序在本文中通常被称为代码化顺序。关键或覆盖帧700被指定为参考帧缓冲区中的黄金帧,诸如,参考帧缓冲区600中的GOLDEN_FRAME 604。帧700在该示例中是被帧内预测的,因此它不需要参考帧,但是如帧700的作为来自先前组中的重构帧的覆盖帧也不使用当前帧组的参考帧。组中的最终帧716被指定为参考帧缓冲区中的替代参考帧,诸如,参考帧缓冲区600中的ALTREF_FRAME 606。按照这种代码化顺序,帧716是在帧700之后脱离显示顺序而被代码化,以为剩余帧702-714中的每个帧提供后向参考帧。在帧716的代码化块中,帧700充当帧716的块的可用参考帧。图8仅仅是帧组的代码化顺序的一个示例。其他组代码化结构可以指定一个或多个不用的或附加的帧用于前向和/或后向预测。
如上面简要地提到的,可用参考帧部分可以是使用光流估计来插值的参考帧部分。例如,参考帧部分可以是块、片或整个帧。当帧等级光流估计如本文所描述的执行时,结果参考帧在本文中被称为共位参考帧,因为尺寸与当前帧相同。该插值参考帧在本文中也可以称为光流参考帧。
图9是用于根据本文中的教导解释运动场的线性投影的图。在分层代码化框架内,当前帧的光流(也称为运动场)可以使用在当前帧之前和之后的最近的可用的重构(例如,参考)帧来估计。在图9中,参考帧1是可以用于当前帧900的前向预测的参考帧,而参考帧2是可以用于当前帧900的后向预测的参考帧。使用图6-8的示例来进行说明,如果当前帧900是帧706,则紧接在前或后的帧704(例如,存储在参考帧缓冲区600中作为LAST_FRAME 602的重构帧)可以用作参考帧1,而帧716(例如,存储在参考帧缓冲区600中作为ALTREF_FRAME606的重构帧)可以用作参考帧2。
知道当前帧和参考帧的显示索引,假设运动场在时间上是线性的,则可以将运动矢量在参考帧1和2中的像素之间投影到当前帧900中的像素。在关于图6-8描述的简单示例中,当前帧900的索引是3,参考帧1的索引是0,并且参考帧2的索引是716。在图9中,示出了当前帧900的像素902的投影运动矢量904。通过使用先前的示例来解释,图7的帧组的显示索引将表明帧704在时间上比帧716更接近帧706。因此,图9所示的单个运动矢量904表示参考帧1与当前帧900之间和在参考帧2与当前帧900之间的不同运动量。然而,在参考帧1、当前帧900和参考帧2之间,投影运动场906是线性的。
选择最近的可用重构前向和后向参考帧并且假设当前帧的相应像素的运动场在时间上是线性的允许使用要在编码器和解码器两者处(例如,在帧内/帧间预测阶段402和帧内/帧间预测阶段508)执行的光流估计生成插值参考帧,而不传送额外的信息。除了最近的可用重构参考帧,不同的帧可以用作编码器与解码器之间的指定的先验。在一些实施方式中,可以传送对用于光流估计的帧的识别。下面更详细地讨论插值帧的生成。
图10是使用利用光流估计生成的参考帧的至少一部分的视频序列的帧的运动补偿预测的方法或过程1000的流程图。例如,参考帧部分可以是块、片或整个帧。光流参考帧部分在本文中也可以称为共位参考帧部分。例如,过程1000可以实施为软件程序,该软件程序可以由诸如发送站102或接收站106的计算设备执行。例如,软件程序可以包括机器可读指令,该机器可读指令可以存储在诸如存储器204或二级存储装置214的存储器中并且在由诸如CPU 202的处理器执行时可以使计算设备执行过程1000。过程1000可以使用专用硬件或固件来实施。一些计算设备可能具有多个存储器或处理器,并且在过程1000中描述的操作可以使用多个处理器、存储器或两者来分布。
在1002中,确定要被预测的当前帧。帧可以按照任何顺序——诸如按照图8所示的代码化顺序——被编码,并且因此被预测。要被预测的帧也可以称为第一帧、第二帧、第三帧等。第一、第二等的标签不一定指示帧的顺序。相反,除非另有说明,标签在本文中用于将当前帧与另一个区分开。在编码器处,帧可以按照诸如光栅扫描顺序的块代码化顺序以块的单位被处理。在解码器处,帧也可以根据编码比特流内的它们的编码残差的接收以块为单位被处理。
在1004中,确定前向和后向参考帧。在本文描述的示例中,前向和后向参考帧是在诸如当前帧900的当前帧之前和之后(例如,按照显示顺序)的最近的重构帧。尽管在图10中未明确示出,如果任一前向或后向参考帧不存在,则过程100结束。然后,在不考虑光流的情况下处理当前帧。
假设在1004中存在前向和后向参考帧,在1006中可以使用参考帧来生成光流参考帧部分。参考图11至图14更详细地描述生成光流参考帧部分。在一些实施方式中,可以将光流参考帧部分存储在参考帧缓冲区600内的限定的位置。首先,描述根据本文中的教导的光流估计。
可以通过最小化下面的拉格朗日函数(1)针对当前帧部分的相应像素执行光流估计:
J=Jdata+λJspatial (1)
在函数(1)中,Jdata是基于亮度恒定假设(即,尽管位置改变,图像的小部分的强度值也随着时间保持不变的假设)的数据惩罚。Jspatial是基于运动场的平滑度(即,邻近像素可能属于图像中的同一对象项从而导致实质上相同的图像运动的特性)的空间惩罚。拉格朗日参数λ控制运动场的平滑度的重要性。参数λ的较大值λ导致更平滑的运动场并且可以更好地解释更大尺度处的运动。相反,参数λ的较小值可以更有效地适应对象边缘和小对象的移动。
根据本文中的教导的实施方式,数据惩罚可以由数据惩罚函数表示:
Jdata=(Exu+Eyv+Et)2 (2)
当前像素的运动场的水平分量由u表示,而运动场的垂直分量由v表示。通俗地说,Ex、Ey和Et是参考帧部分的像素值关于水平轴x、垂直轴y和时间t(例如,由帧索引表示)的导数。水平轴和垂直轴是相对于形成诸如当前帧900的当前帧和诸如参考帧1和2的参考帧的像素阵列来定义的。
在数据惩罚函数中,导数Ex、Ey和Et可以根据下面的函数(3)、(4)和(5)来计算:
Et=E(r2)-E(r1) (5)
变量E(r1)是基于被编码的当前帧的当前像素位置的运动场的在参考帧1中的投影位置处的像素值。类似地,变量E(r2)是基于被编码的当前帧的当前像素位置的运动场的在参考帧2中的投影位置处的像素值。
变量indexr1是参考帧1的显示索引,其中,帧的显示索引是其按照视频序列的显示顺序的索引。类似地,变量indexr2是参考帧2的显示索引,并且变量indexcur是当前帧900的显示索引。
变量是使用线性滤波器在参考帧1处计算的水平导数。变量/>是使用线性滤波器在参考帧2处计算的水平导数。变量/>是使用线性滤波器在参考帧1处计算的垂直导数。变量/>是使用线性滤波器在参考帧2处计算的垂直导数。
在本文中的教导的实施方式中,用于计算水平导数的线性滤波器是具有滤波系数[-1/60,9/60,-45/60,0,45/60,-9/60,1/60]的7抽头滤波器。滤波器可以具有不同的频率分布图、不同的抽头数或两者。用于计算垂直导数的线性滤波器可以与用于计算水平导数的线性滤波器相同或不同。
空间惩罚可以由空间惩罚函数表示:
Jspatial=(Δu)2+(Δv)2 (6)
在空间惩罚函数(6)中,Δu是运动场的水平分量u的拉普拉斯算子,并且Δv是运动场的垂直分量v的拉普拉斯算子。
图11是用于生成光流参考帧部分的方法或过程1100的流程图。在该示例中,光流参考帧部分是整个参考帧。过程1100可以实施过程1000的步骤1006。例如,过程1100可以实施为软件程序,该软件程序可以由诸如发送站102或接收站106的计算设备执行。例如,软件程序可以包括机器可读指令,该机器可读指令可以存储在诸如存储器204或二级存储214的存储器中并且该机器可读指令在由诸如CPU 202的处理器执行时可以使计算设备执行过程1100。过程1100可以使用专用硬件或固件来实施。如上所述,可以使用多个处理器、存储器或两者。
因为前向和后向参考帧可能彼此距离较远,所以它们之间可能存在剧烈的运动,降低了亮度恒定假设的准确性。为了减少从这种问题导致的像素的运动中的潜在误差,可以使用从当前帧到参考帧的估计运动矢量来初始化当前帧的光流估计。在1102中,当前帧中的所有像素都可以被指派初始化的运动矢量。它们定义初始运动场,该初始运动场可以用于使参考帧扭曲成第一处理等级的当前帧,以缩短参考帧之间的运动长度。
当前像素的运动场mvcur可以根据以下等式使用表示从当前像素指向后向参考帧的估计运动矢量mvr2与从当前像素指向前向参考帧的估计运动矢量mvr2之间的差的运动矢量来初始化,所述后向参考帧在该示例中是参考帧2,所述前向参考帧在该示例中是参考帧1:
mvcur=-mvr1+mvr2
如果运动矢量中的一个是不可用的,则可以根据下面的函数中的一个使用可用运动矢量来推断初始运动:
mvcur=-mvr1·(indexr2-indexr1)/(indexcur-indexr1),或者
mvcur=mvr2·(indexr2-indexr1)/(indexr2-indexcur)。
在当前像素没有运动矢量参考可用的情况下,可以使用具有初始化运动矢量的一个或多个空间邻域。例如,可以使用可用的邻近初始化运动矢量的平均值。
在1102中初始化第一处理等级的运动场的示例中,可以使用参考帧2来预测参考帧1的像素,其中,参考帧1是在当前帧被代码化之前的最后帧。以图9所示的相似方式使用线性投影而被投影到当前帧上的运动矢量在相交的像素位置产生运动场mvcur,诸如,在像素位置902的运动场906。
图11涉及初始化第一处理等级的运动场,因为对于过程110存在期望地多个处理等级。这可以从参考图13中看出,图13是图示了图11的过程1100(和下面讨论的图12的过程1200)的图。下面的描述使用短语运动场。除非上下文另有明确规定,否则此短语旨在统一指代各个像素的运动场。因此,短语“多个运动场”或“运动场”在指代一个以上的运动场时可互换使用。进一步地,短语光流在指代像素的移动时可以与短语运动场互换使用。
为了估计帧的像素的运动场/光流,可以使用金字塔或多层结构。在一个金字塔结构中,例如,参考帧缩小到一个或多个不同的尺度。然后,首先估计光流以获得在金字塔的最高等级(第一处理等级)的运动场,即,使用缩小最多的参考帧。之后,运动场被放大(up-scale)并且用于在下一个等级初始化光流估计。放大运动场、使用其来初始化下一个等级的光流估计和获得运动场的这种过程继续直到达到金字塔的最低等级为止(即,直到对于处于全尺度的参考帧完成了光流估计为止)。
这个过程的依据在于,当图像缩小时,更容易捕获大运动。然而,使用简单的重缩放滤波器对参考帧本身进行缩放可能降低参考帧质量。为了避免由于重缩放丢失详细的信息,金字塔结构缩放导数而不是参考帧的像素来估计光流。这种金字塔方案表示对光流估计的回归分析。方案示出于图13中并且由图11的过程1100和图12的过程1200实施。
在初始化之后,拉格朗日参数λ被设置以用于在1104中求解拉格朗日函数(1)。期望地,过程1100使用拉格朗日参数λ的多个值。在1104中将拉格朗日参数λ设置为的第一值可以是相对大的值,诸如,100。虽然期望的是过程1100在拉格朗日函数(1)中使用拉格朗日参数λ的多个值,但是可以仅使用一个值,如下述过程1200中描述的。
在1106中,根据当前处理等级的运动场使参考帧扭曲成当前帧。使参考帧扭曲成当前帧可以使用亚像素位置舍入(rounding)来执行。值得注意的是,执行扭曲之前,在第一处理等级使用的运动场mvcur从其全分辨率值缩小到该等级的分辨率。下面更详细地讨论缩小运动场。
知道光流mvcur,使参考帧1扭曲的运动场是由下面的线性投影假设(例如,运动随时间线性地投影)推断的:
mvr1=(indexcur-indexr1)/(indexr2-indexr1)·mvcur
为了执行扭曲,运动场mvr1的水平分量ur1和垂直分量ur1可以舍入为Y分量的1/8像素精度以及U和V分量的1/16像素精度。可以使用亚像素位置舍入的其他值。在舍入之后,计算扭曲的图像中的每个像素作为由运动矢量mvr1给定的参考像素。亚像素插值可以使用传统的亚像素插值滤波器来执行。
对参考帧2进行相同的扭曲方法以得到扭曲的图像其中,运动场由下式计算:
mvr2=(indexr2-indexcur)/(indexr2-indexr1)·mvcur
在1106中的计算结束时,存在两个扭曲参考帧。在1108中,两个扭曲参考帧用于估计它们之间的运动场。在1108中估计运动场可以包括多个步骤。
首先,使用函数(3)、(4)和(5)来计算导数Ex、Ey和Et。当计算导数时,扭曲参考帧的帧边界可以通过复制最近的可用像素来扩展。以这种方式,在投影位置处于扭曲参考帧之外时,像素值(即,E(r1)和/或E(r2))可以被获得。然后,如果存在多个层,则将导数缩小到当前等级。如图13所示,参考帧用于计算处于原始尺度的导数以捕获细节。在每个等级1缩小导数可以通过在21×21块内求平均来计算。值得注意的是,因为计算导数以及通过对它们求平均都是线性操作,所以两个操作可以合并在单个线性滤波器中以在每个等级1中计算导数。这可以降低计算的复杂性。
一旦导数缩小到当前处理等级,如果适用,则可以根据拉格朗日函数(1)执行光流估计。更具体地,通过将拉格朗日函数(1)相对于运动场的水平分量u和运动场的垂直分量v的导数设置为零(即,和/>),可以用2*N个线性方程求解帧的所有N个像素的分量u和v。这是由于拉普拉斯算子近似于二维(2D)滤波器的事实导致的。代替准确但高度复杂的直接求解线性方程,可以使用具有更快但不太准确的结果的迭代方法来最小化拉格朗日函数(1)。
在1108中,使用扭曲参考帧之间的估计运动场来更新或细化当前帧的像素的运动场。例如,通过在逐像素的基础上添加像素的估计运动场,可以更新像素的当前运动场。
一旦在1108中估计运动场,便在1110中进行查询以确定是否存在可用的拉格朗日参数λ的附加值。拉格朗日参数λ的较小值可以解决较小尺度的运动。如果存在附加值,则过程1100可以返回1104以为拉格朗日参数λ设置下一个值。例如,过程1100可以重复,同时在每次迭代中将拉格朗日参数λ减少一半。在1108中更新的运动场是用于在这样的下一次迭代中在1106中使参考帧扭曲的当前运动场。然后,在1108中再次估计运动场。1104、1106和1108中的处理继续直到1110中的所有可能的拉格朗日参数被处理为止。在示例中,如图13所示的对于金字塔存在三个等级,因此,在示例中,拉格朗日参数λ的最小值是25。修改拉格朗日参数时的这种重复处理可以称为退火拉格朗日参数。
一旦在1110中没有拉格朗日参数λ的剩余值,过程1100便前进到1112以确定是否有更多的处理等级要处理。如果在1112中存在附加处理等级,则过程1100前进到1114,其中,在使用开始于1104的拉格朗日参数λ的可用值中的每一个处理下一层之前,对运动场进行放大。对运动场进行放大可以使用任何已知的技术来执行,包括但不限于先前描述的缩小计算的逆。
通常,首先估计光流以获得在金字塔的最高等级的运动场。之后,对运动场进行放大并且在下一个等级使用运动场来初始化光流估计。放大运动场、使用其来初始化下一个等级的光流估计和获得运动场的这种过程继续直到在1112中达到金字塔的最低等级为止(即,直到针对在全尺度处计算的导数完成光流估计为止)。
一旦等级处于参考帧未被缩小(即,它们处于其原始分辨率)的等级,过程1100便前进到1116。例如,等级数可以是三个,诸如,在图13的示例中。在1116中,将扭曲参考帧混合以形成光流参考帧E(cur)。要注意,在1116中混合的扭曲参考帧可以是全尺度参考帧,该全尺度参考帧使用在1108中估计的运动场根据1106中所描述的过程再次被扭曲。换言之,全尺度参考帧可以被扭曲两次——一次是使用来自处理的先前层的初始放大运动场且再次是在在全尺度等级处细化运动场之后。混合可以使用下面的时间线性假设(例如,帧由相等段间隔开)来执行:
在一些实施方式中,优选在仅扭曲参考帧中的一个中的像素而不是混合的值是可预期的。例如,如果参考帧1(由mvr1表示)中的参考像素在边界外(例如,在帧的尺寸之外),而参考帧2中的参考像素没有,则仅仅根据下式使用由参考帧2导致的扭曲图像中的像素:
可以执行可选的遮挡检测作为混合的部分。对象和背景的遮挡通常发生在视频序列中,其中,对象的部分出现在一个参考帧中,但是隐藏在另一个参考帧中。通常,上述光流估计方法无法在这种情况下估计对象的运动,因为违背了亮度恒定假设。如果遮挡的大小相对较小,则平滑度惩罚函数可以非常准确地估计运动。也就是说,如果隐藏部分处的不明确的运动场被相邻的运动矢量平滑,则整个对象的运动是准确的。
然而,即使在这种情况下,上述简单的混合方法也不一定给我们满意的插值结果。这可以通过参照图14来证明,图14是图示了对象遮挡的图。在该示例中,对象A的遮挡部分在参考帧1中显示并且在参考帧2中被物体B隐藏。因为对象A的隐藏部分未在参考帧2中显示,所以来自参考帧2的参考像素来自对象B。在这种情况下,只使用来自参考帧1的扭曲像素是期望的。因此,代替或除了以上混合之外,使用检测遮挡的技术可以提供更好的混合结果,因此提供更好的参考帧。
对于遮挡的检测,从图14中观察到当遮挡发生且运动场相当准确时,对象A的遮挡部分的运动矢量指向参考帧2中的对象A。这可以导致以下情况。第一种情况是扭曲像素值和/>非常不同,因为它们来自两个不同的对象。第二种情况是对象B中的像素由多个运动矢量引用,该多个运动矢量针对当前帧中的对象B和当前帧中的对象A的遮挡部分。
利用这些观察,可以建立以下条件以确定遮挡和仅仅使用Ecur其中,类似的条件同样应用于仅仅使用Ecur的/>
大于阈值Tpixel;并且/>
大于阈值Tref
是参考帧1中的参考像素被当前共位帧中的任何像素引用的总次数。假设上述亚像素插值存在,当参考亚像素位置在感兴趣的像素位置的一个像素长度内时,/>被计数。此外,如果mvr2指向亚像素位置,则四个邻近的像素的/>的加权平均数作为当前亚像素位置的总引用数。/>可以类似的方式被定义。
因此,可以使用第一扭曲参考帧和第二扭曲参考帧在第一参考帧中检测遮挡。然后,扭曲参考帧的混合可以包括用来自第二扭曲参考帧的像素值填充与遮挡对应的光流参考帧的像素位置。类似地,可以使用第一扭曲参考帧和第二扭曲参考帧在第二参考帧中检测遮挡。然后,扭曲参考帧的混合可以包括用来自第一扭曲参考帧的像素值填充与遮挡对应的光流参考帧的像素位置。
实验表明,过程1100提供了可观的压缩性能增益。这些性能增益包括:对于低分辨率的帧集合,PSNR中的2.5%增益和SSIM中的3.3%增益、以及对于中等分辨率的帧集合,PSNR中的3.1%和SSIM中的4.0%。然而,并且如上所述,根据拉格朗日函数(1)执行的光流估计使用2*N个线性方程来求解帧的所有N个像素的运动场的水平分量u和垂直分量v。换言之,光流估计的计算复杂度是帧大小的多项式函数,这在解码器的复杂度上施加了负担。因此,接下来描述基于子帧(例如,基于块)的光流估计,其可以比关于图11描述的基于帧的光流估计降低解码器复杂度。
图12是用于生成光流参考帧部分的方法或过程1200的流程图。在该示例中,光流参考帧部分小于整个参考帧。该示例中的共位帧部分是参考块来描述的,但是其他帧部分可以根据图12来处理。过程1200可以实施过程1000的步骤1006。例如,过程1200可以实施为软件程序,该软件程序可以由诸如发送站102或接收站106的计算设备执行。例如,软件程序可以包括机器可读指令,该机器可读指令可以存储在诸如存储器204或二级存储214的存储器中并且该机器可读指令在由诸如CPU 202的处理器执行时可以使计算设备执行过程1200。过程1200可以使用专用硬件或固件来实施。如上所述,可以使用多个处理器、存储器或两者。
在1202中,当前帧中的所有像素都可以被指派初始化运动矢量。它们定义初始运动场,该初始运动场可以用于使参考帧扭曲成第一处理等级的当前帧,以缩短参考帧之间的运动长度。1202中的初始化可以使用与关于1102中的初始化描述的相同的处理来执行,因此,此处不会重复描述。
在1204中,根据在1202中初始化的运动场使参考帧——诸如,参考帧1和2——扭曲成当前帧。1204中的扭曲可以使用与关于1106中的扭曲描述的相同的处理来执行,除非期望地,在使参考帧扭曲之前没有使在1202中初始化的运动场mwcur从其全分辨率值缩小。
在1204中的计算结束时,存在处于全分辨率的两个扭曲参考帧。与过程1100一样,过程1200可以使用与关于图13描述的多等级过程相似的多等级过程来估计两个参考帧之间的运动场。通俗地说,过程1200计算等级的导数,使用导数执行光流估计并且为下一等级放大结果运动场直到考虑了所有等级为止。
更具体地,在1206中初始化处于当前(或第一)处理等级的块的运动场mvcur。块可以是按照当前帧的扫描顺序(例如,光栅扫描顺序)选择的当前帧的块。块的运动场mvcur包括块的相应像素的运动场。换言之,在1206中,具有当前块的所有像素都被指派初始化运动矢量。初始化运动矢量用于使参考块扭曲成当前块,以缩短参考帧中的参考块之间的长度。
在1206中,使运动场mvcur从其全分辨率值缩小到该等级的分辨率。换言之,1206中的初始化可以包括:使块的相应像素的运动场从在1202中初始化的全分辨率值缩小。缩小可以使用诸如上述缩小的任何技术来执行。
在1208中,使与扭曲参考帧中的每一个中的运动场相对应的共位参考块扭曲成当前块。使参考块扭曲与在1106中的过程1100类似地执行。也就是说,知道参考帧1中的参考块的像素的光流mvcur,用于扭曲的运动场是通过下面的线性投影假设(例如,运动随时间线性地投影)推断出来的:
mvr1=(indexcur-indexr1)/(indexr2-indexr1)·mucur
为了执行扭曲,运动场mvr1的水平分量ur1ur1和垂直分量ur1可以舍入为Y分量的1/8像素精度以及U和V分量的1/16像素精度。可以使用其它值。在舍入之后,计算扭曲块中的每个像素作为由运动矢量mvr1给定的参考像素,所述扭曲块例如是/>亚像素插值可以使用传统的亚像素插值滤波器来执行。
对参考帧2的参考块进行相同的扭曲方法以得到扭曲块,例如,其中,运动场由以下计算:
mvr2=(indexr2-indexcur)/(indexr2-indexr1)·mvcur
在1208中的计算结束时,存在两个扭曲参考块。在1210中,两个扭曲参考块用于估计它们之间的运动场。1210中的处理可以与关于图11中的1108中的处理描述的处理相似。
更具体地,两个扭曲参考块可以处于全分辨率。根据图13中的金字塔结构,使用函数(3)、(4)和(5)来计算导数Ex、Ey和Et。当计算帧等级估计的导数时,帧边界可以通过复制最近的可用像素来扩展,以获得边界外的像素值,如关于过程110所描述的。然而,对于其他帧部分,邻近的像素在1204中被扭曲的参考帧中通常是可用的。例如,对于基于块的估计,邻近的块的像素在扭曲参考帧中是可用的,除非块本身处于帧边界。因此,对于与扭曲参考帧部分有关的边界外的像素,如果适用的话,则扭曲参考帧的邻近部分中的像素可以用作像素值E(r1)和E(r2)。如果投影像素在帧边界外,则仍然可以使用复制最近的可用的(即,在边界内)像素。在计算导数之后,可以将它们缩小到当前等级。每个等级l的缩小的导数可以通过在2l×2l块内求平均来计算,如先前所讨论的。计算的复杂度可以通过将计算导数和对导数求平均的两个线性操作组合在单个线性滤波器中来降低,但这不是必需的
继续1210中的处理,可以使用缩小的导数作为对拉格朗日函数(1)的输入,来执行光流估计以估计扭曲参考部分之间的运动场。部分——此处为块——的所有N个像素的运动场的水平分量u和垂直分量v可以通过将拉格朗日函数(1)相对于水平分量u和垂直分量v的导数设置为零(即,和/>)并且求解2*N个线性方程来确定。为此,有两种可选的方式来解决边界外的运动矢量。一种方式是假设与邻近块的零相关性并且假设边界外的运动矢量与在距边界外的像素位置最近的边界位置处的运动矢量相同。另一种方式是使用当前像素的初始化的运动矢量(即,在1206中初始化的运动场)作为与当前像素相对应的边界外的像素位置的运动矢量。
在估计运动场之后,使用扭曲参考块之间的估计运动场来更新或细化等级的当前运动场以完成1210中的处理。例如,像素的当前运动场可以通过在逐像素基础上添加像素的估计运动场来更新。
在过程100中,包括附加环路以设置拉格朗日参数λ的递减值,以便在每个等级,都使用拉格朗日参数λ的越来越小的值来估计和细化运动场。在过程1200中,省略这种环路。也就是说,在如图所示的过程1200中,仅仅使用拉格朗日参数λ的一个值来在当前处理等级处估计运动场。这可以是相对小的值,诸如,25。拉格朗日参数λ的其他值是可能的,例如,取决于运动的平滑度、图像分辨率或其他变量。
在其他实施方式中,过程1200可以包括用于改变拉格朗日参数λ的附加环路。在包括这种环路的实施方式中,可以在1210中估计运动场之前设置拉格朗日参数λ,使得在1208中使参考块扭曲以及在1210中估计和更新运动场重复直到拉格朗日参数λ的所有值都已经被使用,如关于过程1100中的1104和1110中的处理所描述的。
在1210中估计和更新运动场之后,过程1200前进到1212的查询。这在使用拉格朗日参数λ的单个值时是在第一次也是仅一次的在1210处在等级处的运动场估计和更新之后完成的。当在处理等级处修改拉格朗日参数λ的多个值时,在1210中使用拉格朗日参数λ的最终值估计和更新运动场之后,过程1200前进到1212的查询。
如果响应于1212中的查询存在附加的处理等级,则过程1200前进到1214,其中在1206中开始在处理下一层之前对运动场进行放大。放大可以根据任何已知的技术来执行。
通常,首先估计光流以获得在金字塔的最高等级处的运动场。之后,对运动场进行放大并且在下一个等级使用运动场来初始化光流估计。放大运动场、使用其来初始化下一个等级的光流估计和获得运动场的这种过程继续直到在1212中达到金字塔的最低等级为止(即,直到针对在全尺度处计算的导数完成光流估计为止)。
一旦等级处于参考帧未被缩小(即,它们处于原始分辨率)的等级,过程1200便前进到1216。例如,等级数可以是三个,诸如,在图13的示例中。在1216中,将扭曲参考块混合以形成光流参考块(例如,先前描述的E(cur))。要注意,在1216中混合的扭曲参考块可以是全尺度参考块,该全尺度参考块使用在1210中估计的运动场根据1208中所描述的过程再次被扭曲。换言之,全尺度参考块可以被扭曲两次——一次使用来自先前的处理的层的初始放大运动场且再次是在在全尺度等级处细化运动场之后。混合可以使用时间线性假设与1116中描述的处理相似地执行。如在1116中描述且由图14中的示例示出的可选的遮挡检测作为混合的部分被并入1216中。
在1216中生成共位参考块之后,过程1200前进到1218,以确定是否存在用于预测的进一步的帧部分(此处为块)。如果存在,则针对下一个块,过程1200在1206中重复开始。块可以按照扫描顺序处理。一旦响应于1218中的查询没有进一步的块考虑,则过程1200结束。
再次参照图10,过程1200可以实施过程1000中的1006。在1006中的处理结束时,不论是根据过程1100、过程1200还是本文所描述的任一个的变型执行,都存在一个或多个扭曲参考帧部分。
在1008中,使用在1006中生成的光流参考帧部分来执行预测过程。在编码器处执行预测过程可以包括:针对帧的当前块从光流参考帧生成预测块。光流参考帧可以是通过过程1100输出且存储在诸如参考帧缓冲区600的参考帧缓冲区中的光流参考帧。光流参考帧可以是通过组合由过程1200输出的光流参考部分而生成的光流参考帧。将光流参考部分组合可以包括:根据用于生成光流参考部分中的每一个光流参考部分的相应的当前帧部分的像素位置来布置光流参考部分(例如,共位参考块)。结果光流参考帧可以被存储在诸如编码器400的参考帧缓冲区600的编码器的参考帧缓冲区中以便使用。
在编码器处生成预测块可以包括:选择光流参考帧中的共位块作为预测块。在编码器处生成预测块也可以包括:在光流参考帧中执行运动搜索,以选择当前块的最佳匹配的预测块。然而,在编码器处生成预测块,可以进一步处理结果残差,诸如,使用关于图4的编码器400描述的有损编码过程。
在编码器处,过程1000可以形成当前块的率失真环路的部分,其使用各种预测模式,包括一个或多个帧内预测模式以及使用当前帧的可用预测帧的单一的和复合的帧间预测模式两者。单一的帧间预测模式仅仅使用单一的前向或后向参考帧来进行帧间预测。复合的帧间预测模式使用前向或后向参考帧两者来进行帧间预测。在率失真环路中,将用于使用相应的预测模式对当前块进行编码的率(例如,比特数)与编码产生的失真进行比较。失真可以被计算为编码之前和解码之后的块的像素值之间的差。该差可以是绝对差或捕获帧的块的积累误差的一些其他度量的总和。
在一些实施方式中,可能将光流参考帧的使用限制于单一的帧间预测模式是可期望的。也就是说,在任何复合的参考模式下,光流参考帧作为参考帧被排除。这可以简化率失真环路,并且预期对块的编码影响不大,因为光流参考帧已经考虑了前向和后向参考两者。根据本文描述的实施方式,可以将标记编码成比特流,以指示光流参考帧是否可用于对当前帧进行编码。在示例中,当使用光流参考帧块对当前帧内的任何单个块进行编码时,可以对标记进行编码。在光流参考帧对当前帧是可用的情况下,可以包括指示当前块是否是使用光流参考帧通过帧间预测而被编码的附加标记或其他指示符(例如,在块等级处)。
可以对当前帧的所有块都重复1008中的预测过程,直到当前帧被编码了为止。
在解码器中,在1008中使用光流参考帧执行预测过程可能由确定光流参考帧可用于对当前帧进行解码而导致。在一些实施方式中,确定是通过检查指示当前帧的至少一个块是使用光流参考帧部分来编码的标记而做出的。在解码器中执行1008中的预测过程可以包括:生成预测块。生成预测块可以包括:使用从编码比特流——诸如,在块头中——解码的帧间预测。可以对标记或指示符进行解码以确定帧间预测模式。当帧间预测模式是光流参考帧模式(即,使用光流参考帧部分对块进行帧间预测)时,使用光流参考帧部分的像素以及运动矢量模式和/或运动矢量来生成要被解码的当前块的预测块。
产生用于作为解码的部分的预测过程的光流参考帧的相同处理可以在诸如解码器500的解码器中执行,如在编码器中执行的。例如,当标记指示当前帧的至少一个块是使用光流参考帧部分来编码的时,可以生成整个光流参考帧并且存储以用于预测过程。然而,通过修改过程1200以限制在其中代码化块被识别为使用共位/光流参考帧作为帧间预测帧的过程1200的执行,实现了解码器处的计算能力的节约。这可以参照图15来描述,图15是图示了一种优化解码器的技术的图。
在图15中,像素沿网格1500显示,其中w表示沿网格1500的第一轴的像素位置并且其中y表示沿网格1500的第二轴的像素位置。网格1500表示当前帧的部分的像素位置。为了在1008中在解码器处执行预测过程,可以将1006和1008中的处理组合。例如,在执行1006中的过程之前,1008中的预测过程可以包括:找到用于对当前块进行编码的参考块(例如,从头信息,诸如,运动矢量)。在图15中,当前代码化块1502的运动矢量指向由内虚线1504表示的参考块。当前代码化块1502包括4×4像素。参考块位置由虚线1504表示,因为参考块位于参考帧中,而不是在当前帧中。
一旦参考块被定位,便会识别由参考块跨越(即,重叠)的所有参考块。这可以包括:在每个边界处将参考块大小扩展滤波器长度的一半以考虑亚像素插值滤波器。在图15中,亚像素插值滤波器长度L用于将参考块扩展到由外虚线1506表示的边界。相对常见的情况是,运动矢量导致与全像素位置不完好地对齐的参考块。图15中的阴影区域表示全像素位置。识别与全像素位置重叠的所有参考块。假设块大小与当前代码化块1502相同,识别与当前块共位的第一参考块、在第一参考块之上的第二参考块、从第一参考块的左侧延伸的两个参考块以及从第二参考块的左侧延伸的两个参考块。
一旦识别到参考块,便在1006中仅对当前帧内与识别到的参考块共位的块执行过程1200,以产生共位/光流估计参考块。在图15的示例中,这会导致六个光流参考帧部分。
根据这种经修改的过程,确保编码器和解码器都具有相同的预测器,而解码器不需要计算共位的参考帧的全部。值得注意的是,后续块的包括任何扩展边的参考块可以与在当前块的解码过程中被识别的一个或多个参考块重叠。在这种情况下,需要仅仅对识别的块中的任一个执行一次光流估计,以进一步降低解码器出的计算要求。换言之,可以存储在1216中生成的参考块以用于对当前帧的其他块进行解码。
不论预测块在解码器中如何被生成,可以将来自编码比特流的当前块的解码残差与预测块结合以形成重构块,如关于图5的解码器500描述的。
在1008中的预测过程,无论是在过程1200之后还是结合过程1200执行,都可以对使用光流参考帧部分编码的当前帧的所有块重复,直到当前帧被解码为止。当按照解码顺序处理块时,未使用光流参考帧部分编码的块可以按照从编码比特流中为块解码的预测模式进行常规解码。
对于帧或块中的N个像素,求解光流公式的复杂度可以由O(N*M)表示,其中,M是求解线性方程的迭代数。M不与等级的数量或拉格朗日参数λ的值的数量有关。相反,M与求解线性方程的计算精度有关。M的值越大导致精度越高。考虑到这种复杂度,从帧等级移动到子帧等级(例如,基于块的)估计为降低解码器复杂度提供了几种选项。首先,并且因为在块边界处放宽了对运动场平滑度的约束,所以求解块的线性方程时更容易收敛到解,从而导致相似精度的较小的M。第二,由于平滑度惩罚因子,运动矢量的求解涉及其邻近的运动矢量。块边界处的运动矢量具有更少的邻近运动矢量,从而产出较快的计算。第三,并且如上所述,仅仅需要针对共位参考帧的块的部分计算光流而不需要整个帧以用于帧间预测,所述块是由共位参考帧的那些代码化块识别的。
为了简化解释,过程1000、1100和1200中的每个过程都被描绘和描述为一系列的步骤或操作。然而,根据本公开的步骤或操作可以按照各种顺序和/或同时发生。另外,可以使用未在本文中呈现和描述的其他步骤或操作。此外,可能并不需要所有所示的步骤或操作来实施根据所公开的主题的方法。
上述编码和解码方面说明了编码和解码技术的一些示例。然而,要理解,如权利要求中所使用的这些术语的编码和解码可以意指对数据的压缩、解压缩、变换或任何其他处理或改变。
本文所使用的词语“示例”意指充当示例、实例或者图示。本文作为“示例”描述的任何方面或设计不一定需要理解为比其它方面或设计优选或者有益。相反,词语“示例”的使用旨在以具体的方式呈现构思。如在本申请中所使用的,术语“或”旨在指包括性“或”而非排他性“或”。也就是说,除非另外规定,否则从上下文可以清楚,“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传送的内容。其他合适的发送站102和接收站106实施方案也是可用的。例如,接收站106可以是大体上固定的个人计算机,而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。
进一步地,本公开的实施方式中的全部或部分可以采取计算机程序产品的形式,该计算机程序产品可从例如计算机可用或者计算机可读介质访问。计算机可用或计算机可读介质可以是例如可以有形地包含、存储、通信或传输程序以供任何处理器使用或与其结合使用的任何设备。介质可以是例如电子、磁、光学、电磁或者半导体设备。其他合适的介质也是可用的。
在以下示例中总结进一步的实施方式:
示例1:一种方法,该方法包括:确定视频序列中要被预测的第一帧;从视频序列确定第一参考帧以用于所述第一帧的前向帧间预测;从视频序列确定第二参考帧以用于所述第一帧的后向帧间预测;通过使用所述第一参考帧和所述第二参考帧执行光流估计生成光流参考帧以用于所述第一帧的帧间预测;以及使用所述光流参考帧执行所述第一帧的预测过程。
示例2:根据示例1所述的方法,其中,生成所述光流参考帧包括:通过使拉格朗日函数最小化来针对所述第一帧的相应像素执行所述光流估计。
根据示例1或2所述的方法,其中,所述光流估计产生所述第一帧的像素的相应运动场,并且生成所述光流参考帧包括:使用所述运动场使所述第一参考帧扭曲成所述第一帧,以形成第一扭曲参考帧;使用所述运动场使所述第二参考帧扭曲成所述第一帧,以形成第二扭曲参考帧;以及将所述第一扭曲参考帧和所述第二扭曲参考帧混合,以形成光流参考帧。
根据示例3所述的方法,其中,将所述第一扭曲参考帧和所述第二扭曲参考帧混合包括:使用所述第一参考帧与所述第二参考帧之间以及所述当前帧与所述第一参考帧和所述第二参考帧中的每一个之间的距离,通过缩放共位的像素值将所述第一扭曲参考帧和所述第二扭曲参考帧的所述共位的像素值组合。
根据示例3或4所述的方法,其中,将所述第一扭曲参考帧和所述第二扭曲参考帧混合包括:通过以下中的一个填充所述光流参考帧的像素位置:将所述第一扭曲参考帧和所述第二扭曲参考帧的共位的像素值组合或使用所述第一扭曲参考帧或所述第二扭曲参考帧中的一个的单个像素值。
示例6:根据示例3至5中任一项所述的方法,进一步包括:使用所述第一扭曲参考帧和所述第二扭曲参考帧检测所述第一参考帧中的遮挡,其中,将所述第一扭曲参考帧和所述第二扭曲参考帧混合包括:用来自所述第二扭曲参考帧的像素值填充与所述遮挡相对应的所述光流参考帧的像素位置。
示例7:根据示例1至6中的任一项所述的方法,其中,执行所述预测过程包括:仅将光流参考帧用于所述第一帧的块的单一参考帧间预测。
示例8:根据示例1至7中任一项所述的方法,其中,所述第一参考帧是可用于所述第一帧的前向帧间预测的按照所述视频序列的显示顺序最接近所述第一帧的重构帧,并且第二帧是可用于所述第一帧的后向帧间预测的按照所述显示顺序最接近所述第一帧的重构帧。
示例9:根据示例1至8中任一项所述的方法,其中,执行所述预测过程包括:确定所述光流参考帧内与所述第一帧的第一块共位的参考块;以及对所述参考块和所述第一块的残差进行编码。
示例10:一种装置,该装置包括:处理器;以及非暂时性存储介质,所述非暂时性存储介质包括可由处理器执行以实行方法的指令,所述方法包括:确定视频序列中要被预测的第一帧;确定用于所述第一帧的前向帧间预测的第一参考帧和用于所述第一帧的后向帧间预测的第二参考帧的可用性;响应于确定所述第一参考帧和所述第二参考帧两者的所述可用性:使用所述光流估计使用所述第一参考帧和所述第二参考帧生成所述第一帧的相应的运动场;使用所述运动场使所述第一参考帧扭曲成所述第一帧,以形成第一扭曲参考帧;使用所述运动场使所述第二参考帧扭曲成所述第一帧,以形成第二扭曲参考帧;以及将所述第一扭曲参考帧和所述第二扭曲参考帧混合,以形成用于所述第一帧的块的帧间预测的光流参考帧。
示例11:根据示例10所述的装置,其中,所述方法进一步包括:使用所述光流参考帧对所述第一帧执行预测过程。
示例12:根据示例10或11所述的装置,其中,所述方法进一步包括:仅将所述光流参考帧用于所述第一帧的块的单一参考帧间预测。
示例13:根据示例11至12中的任一项所述的装置,其中,生成相应运动场包括:使用所述第一参考帧和所述第二参考帧来针对所述第一帧的相应像素计算拉格朗日函数的输出。
示例14:根据示例13所述的装置,其中,计算所述拉格朗日函数的所述输出包括:使用拉格朗日参数的第一值来计算所述当前帧的所述像素的第一运动场集合;以及使用所述第一运动场集合作为对所述拉格朗日函数的输入,使用所述拉格朗日参数的第二值来针对所述当前帧的所述像素计算的细化的运动场集合,其中,所述拉格朗日参数的所述第二值小于所述拉格朗日参数的所述第一值,并且所述第一扭曲参考帧和所述第二扭曲参考帧是使用所述细化的运动场集合来扭曲的。
示例15:一种装置,包括:处理器;以及非暂时性存储介质,所述非暂时性存储介质包括可由处理器执行以执行方法的指令,所述方法包括:通过以下使用来自视频序列的第一参考帧和所述视频序列的第二参考帧来生成光流参考帧以用于所述视频序列的第一帧的帧间预测:在第一处理等级中初始化所述第一帧的像素的运动场以用于光流估计,所述第一处理等级表示所述第一帧内的缩小的运动并且包括多个等级中的一个等级;对于所述多个等级中的每个等级:使用所述运动场使所述第一参考帧扭曲成所述第一帧,以形成第一扭曲参考帧;使用所述运动场使所述第二参考帧扭曲成所述第一帧,以形成第二扭曲参考帧;使用所述光流估计来估计所述第一扭曲参考帧与所述第二扭曲参考帧之间的运动场;以及使用所述第一扭曲参考帧与所述第二扭曲参考帧之间的所述运动场来更新所述第一帧的像素的所述运动场;对于所述多个等级中的最终等级:使用所更新的运动场使所述第一参考帧扭曲成所述第一帧,以形成最终第一扭曲参考帧;使用所更新的运动场使所述第二参考帧扭曲成所述第一帧,以形成最终第二扭曲参考帧;以及将所述最终第一扭曲参考帧和所述最终第二扭曲参考帧混合,以形成光流参考帧。
示例16:根据示例15所述的装置,其中,所述光流估计针对帧的相应像素使用拉格朗日函数。
示例17:根据示例16所述的装置,其中,所述方法进一步包括:对于所述多个等级中的每个等级:将所述拉格朗日函数中的拉格朗日参数初始化成最大值以用于以下的第一次迭代:使所述第一参考帧扭曲,使所述第二参考帧扭曲,估计所述运动场和更新所述运动场;以及执行以下的附加迭代:使所述第一参考帧扭曲,使所述第二参考帧扭曲,估计所述运动场,并且使用所述拉格朗日参数的可能值集合中的越来越小的值来估计所述运动场。
示例18:根据示例16或17所述的装置,其中,估计所述运动场包括:相对于水平轴、垂直轴和时间计算所述第一扭曲参考帧和所述第二扭曲参考帧的像素值的导数;响应于所述等级与所述最终等级不同而缩小所述导数;使用所述导数来求解表示所述拉格朗日函数的线性方程。
示例19:根据示例15至18中的任一项所述的装置,其中,所述方法进一步包括:使用所述光流参考帧对所述第一帧进行帧间预测。
示例20:根据示例15至19中的任一项所述的装置,其中,所述处理器和所述非暂时性存储介质形成解码器。
为了允许容易地理解本公开并且不限制本公开,上述实施例、实施方式和方面已经被描述。相反,本发明旨在涵盖包括在随附权利要求书的范围内的各种修改和等效布置,该权利要求书的范围被授予广义解释,从而在法律允许的情况下涵盖所有这种修改和等效结构。

Claims (20)

1.一种方法,包括:
从压缩比特流中对当前帧的当前块的运动矢量进行解码;
识别未生成的参考帧内的参考块的位置;
通过以下各项使用前向参考帧和后向参考帧生成所述参考块,而不生成所述未生成的参考帧:
通过在所述参考块的每个边界处将所述参考块扩展与用于子像素内插的滤波器的滤波器长度相关的像素的数量来识别经扩展参考块;以及
通过使用所述前向参考帧和所述后向参考帧执行投影生成仅所述经扩展参考块的像素值,而不生成整个未生成的参考帧;以及
基于所述参考块和所述运动矢量对所述当前块进行解码。
2.根据权利要求1所述的方法,进一步包括:
从所述压缩比特流中解码指示使用所述未生成的参考帧对所述当前块进行编码的标志。
3.根据权利要求2所述的方法,进一步包括:
响应于所述标志指示使用所述未生成的参考帧对所述当前块进行编码,省略从所述压缩比特流中对用于对所述当前块进行解码的参考帧的索引进行解码。
4.根据权利要求1至3中任一项所述的方法,其中,所述未生成的参考帧与所述当前帧在时间上共同定位。
5.根据权利要求1至3中任一项所述的方法,进一步包括:
确定使用所述未生成的参考帧的运动预测可用于所述当前帧。
6.根据权利要求5所述的方法,其中,响应于确定参考帧缓冲区包括所述前向参考帧和所述后向参考帧,确定使用所述未生成的参考帧的所述运动预测可用。
7.根据权利要求1至3中任一项所述的方法,其中,所述像素的数量等于所述滤波器长度的一半。
8.一种设备,包括:
处理器,所述处理器被配置为:
从压缩比特流中对当前帧的当前块的运动矢量进行解码;
识别未生成的参考帧内的参考块的位置;
使用前向参考帧和后向参考帧生成所述参考块,而不生成所述未生成的参考帧,其中,生成所述参考块包括:
通过在所述参考块的每个边界处将所述参考块扩展与用于子像素内插的滤波器的滤波器长度相关的像素的数量来识别经扩展参考块;以及
通过使用所述前向参考帧和所述后向参考帧执行投影生成仅所述经扩展参考块的像素值,而不生成整个未生成的参考帧;以及
基于所述参考块和所述运动矢量对所述当前块进行解码。
9.根据权利要求8所述的设备,其中,所述处理器进一步被配置为:
从所述压缩比特流中解码指示使用所述未生成的参考帧对所述当前块进行编码的标志。
10.根据权利要求9所述的设备,其中,所述处理器进一步被配置为:
响应于所述标志指示使用所述未生成的参考帧对所述当前块进行编码,省略从所述压缩比特流中对用于对所述当前块进行解码的参考帧的索引进行解码。
11.根据权利要求8所述的设备,其中,所述未生成的参考帧与所述当前帧在时间上共同定位。
12.根据权利要求8所述的设备,其中,所述处理器进一步被配置为:
确定使用所述未生成的参考帧的所述运动预测可用于所述当前帧。
13.根据权利要求12所述的设备,其中,响应于确定参考帧缓冲区包括所述前向参考帧和所述后向参考帧,确定使用所述未生成的参考帧的所述运动预测可用。
14.根据权利要求8到13中任一项所述的设备,其中,所述像素的所述数量等于所述滤波器长度的一半。
15.一种非暂时性计算机可读存储介质,其上存储有压缩比特流,其中,所述压缩比特流被配置为用于通过包括以下各项的操作进行解码:
从压缩比特流中对当前帧的当前块的运动矢量进行解码;
识别未生成的参考帧内的参考块的位置;
通过以下各项使用前向参考帧和后向参考帧生成所述参考块,而不生成所述未生成的参考帧:
通过在所述参考块的每个边界处将所述参考块扩展与用于子像素内插的滤波器的滤波器长度相关的像素的数量来识别经扩展参考块;以及
通过使用所述前向参考帧和所述后向参考帧执行投影生成仅所述经扩展参考块的像素值,而不生成整个未生成的参考帧;以及
基于所述参考块和所述运动矢量对所述当前块进行解码。
16.根据权利要求15所述的非暂时性计算机可读存储介质,其中,所述操作进一步包括:
从所述压缩比特流中解码指示使用所述未生成的参考帧对所述当前块进行编码的标志。
17.根据权利要求16所述的非暂时性计算机可读存储介质,其中,所述操作进一步包括:
响应于所述标志指示使用所述未生成的参考帧对所述当前块进行编码,省略从所述压缩比特流中对用于对所述当前块进行解码的参考帧的索引进行解码。
18.根据权利要求15所述的非暂时性计算机可读存储介质,其中,所述未生成的参考帧与所述当前帧在时间上共同定位。
19.根据权利要求15至18中任一项所述的非暂时性计算机可读存储介质,其中,所述操作进一步包括:
确定使用所述未生成的参考帧的运动预测可用于所述当前帧。
20.根据权利要求19所述的非暂时性计算机可读存储介质,其中,响应于确定参考帧缓冲区包括所述前向参考帧和所述后向参考帧,确定使用所述未生成的参考帧的所述运动预测可用。
CN202410264512.2A 2017-08-22 2018-05-10 用于视频代码化中的运动补偿预测的光流估计 Pending CN118055253A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US15/683,684 2017-08-22
US15/683,684 US11284107B2 (en) 2017-08-22 2017-08-22 Co-located reference frame interpolation using optical flow estimation
US15/817,369 US10659788B2 (en) 2017-11-20 2017-11-20 Block-based optical flow estimation for motion compensated prediction in video coding
US15/817,369 2017-11-20
CN201880036783.5A CN110741640B (zh) 2017-08-22 2018-05-10 用于视频代码化中的运动补偿预测的光流估计
PCT/US2018/032054 WO2019040134A1 (en) 2017-08-22 2018-05-10 OPTICAL FLOW ESTIMATING FOR MOTION COMPENSATION PREDICTION IN VIDEO CODING

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201880036783.5A Division CN110741640B (zh) 2017-08-22 2018-05-10 用于视频代码化中的运动补偿预测的光流估计

Publications (1)

Publication Number Publication Date
CN118055253A true CN118055253A (zh) 2024-05-17

Family

ID=62567747

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202410264512.2A Pending CN118055253A (zh) 2017-08-22 2018-05-10 用于视频代码化中的运动补偿预测的光流估计
CN201880036783.5A Active CN110741640B (zh) 2017-08-22 2018-05-10 用于视频代码化中的运动补偿预测的光流估计

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201880036783.5A Active CN110741640B (zh) 2017-08-22 2018-05-10 用于视频代码化中的运动补偿预测的光流估计

Country Status (5)

Country Link
EP (1) EP3673655A1 (zh)
JP (1) JP6905093B2 (zh)
KR (2) KR102295520B1 (zh)
CN (2) CN118055253A (zh)
WO (1) WO2019040134A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210392349A1 (en) * 2019-03-01 2021-12-16 Alibaba Group Holding Limited Adaptive Resolution Video Coding
WO2021060834A1 (ko) * 2019-09-24 2021-04-01 엘지전자 주식회사 서브픽처 기반 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
CN110572677B (zh) * 2019-09-27 2023-10-24 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
WO2021196582A1 (zh) * 2020-03-31 2021-10-07 武汉Tcl集团工业研究院有限公司 一种视频压缩方法、视频解压方法、智能终端及存储介质
CN111526370B (zh) * 2020-04-17 2023-06-02 Oppo广东移动通信有限公司 视频编码、解码方法及装置和电子设备
CN111935425B (zh) * 2020-08-14 2023-03-24 字节跳动有限公司 视频降噪方法、装置、电子设备及计算机可读介质
CN112533026A (zh) * 2020-11-27 2021-03-19 西安蓝极医疗电子科技有限公司 基于卷积神经网络的视频插帧方法
US11831909B2 (en) 2021-03-11 2023-11-28 Qualcomm Incorporated Learned B-frame coding using P-frame coding system
US20220301184A1 (en) * 2021-03-16 2022-09-22 Samsung Electronics Co., Ltd. Accurate optical flow interpolation optimizing bi-directional consistency and temporal smoothness
US11638025B2 (en) * 2021-03-19 2023-04-25 Qualcomm Incorporated Multi-scale optical flow for learned video compression
CN113613003B (zh) * 2021-08-30 2024-03-22 北京市商汤科技开发有限公司 视频压缩、解压缩方法及装置、电子设备和存储介质
KR20230142375A (ko) * 2022-04-01 2023-10-11 주식회사 케이티 비디오 신호 부호화/복호화 방법, 그리고 비트스트림을 저장한 기록 매체
WO2023200249A1 (ko) * 2022-04-12 2023-10-19 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8144778B2 (en) * 2007-02-22 2012-03-27 Sigma Designs, Inc. Motion compensated frame rate conversion system and method
US9241160B2 (en) * 2010-07-21 2016-01-19 Dolby Laboratories Licensing Corporation Reference processing using advanced motion models for video coding
US9230303B2 (en) * 2013-04-16 2016-01-05 The United States Of America, As Represented By The Secretary Of The Navy Multi-frame super-resolution of image sequence with arbitrary motion patterns
CN103327327B (zh) * 2013-06-03 2016-03-30 电子科技大学 用于高性能视频编码hevc的帧间预测编码单元选择方法
WO2017036399A1 (en) * 2015-09-02 2017-03-09 Mediatek Inc. Method and apparatus of motion compensation for video coding based on bi prediction optical flow techniques
US10375413B2 (en) * 2015-09-28 2019-08-06 Qualcomm Incorporated Bi-directional optical flow for video coding
US10469841B2 (en) * 2016-01-29 2019-11-05 Google Llc Motion vector prediction using prior frame residual
WO2017133661A1 (en) * 2016-02-05 2017-08-10 Mediatek Inc. Method and apparatus of motion compensation based on bi-directional optical flow techniques for video coding

Also Published As

Publication number Publication date
KR102295520B1 (ko) 2021-08-27
WO2019040134A1 (en) 2019-02-28
JP6905093B2 (ja) 2021-07-21
CN110741640A (zh) 2020-01-31
CN110741640B (zh) 2024-03-29
EP3673655A1 (en) 2020-07-01
KR20200002036A (ko) 2020-01-07
KR102400078B1 (ko) 2022-05-18
KR20210109049A (ko) 2021-09-03
JP2020522200A (ja) 2020-07-27

Similar Documents

Publication Publication Date Title
CN110741640B (zh) 用于视频代码化中的运动补偿预测的光流估计
US11284107B2 (en) Co-located reference frame interpolation using optical flow estimation
CN111757106B (zh) 使用多级复合预测对视频流中的当前块编译的方法和设备
US11876974B2 (en) Block-based optical flow estimation for motion compensated prediction in video coding
US10506249B2 (en) Segmentation-based parameterized motion models
CN110741641B (zh) 用于视频压缩的方法和装置
CN110692246B (zh) 用于运动补偿预测的方法和装置
CN110312130B (zh) 基于三角模式的帧间预测、视频编码方法及设备
US11115678B2 (en) Diversified motion using multiple global motion models
US8170110B2 (en) Method and apparatus for zoom motion estimation
US11917128B2 (en) Motion field estimation based on motion trajectory derivation
CN111886868A (zh) 用于替代参考帧渲染的自适应时间滤波
WO2023205371A1 (en) Motion refinement for a co-located reference frame

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination