CN110692241B - 使用多种全局运动模型的多样化运动 - Google Patents

使用多种全局运动模型的多样化运动 Download PDF

Info

Publication number
CN110692241B
CN110692241B CN201880035987.7A CN201880035987A CN110692241B CN 110692241 B CN110692241 B CN 110692241B CN 201880035987 A CN201880035987 A CN 201880035987A CN 110692241 B CN110692241 B CN 110692241B
Authority
CN
China
Prior art keywords
motion
frame
block
gmms
current frame
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.)
Active
Application number
CN201880035987.7A
Other languages
English (en)
Other versions
CN110692241A (zh
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
Application filed by Google LLC filed Critical Google LLC
Publication of CN110692241A publication Critical patent/CN110692241A/zh
Application granted granted Critical
Publication of CN110692241B publication Critical patent/CN110692241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/527Global motion vector estimation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • G06T7/251Analysis of motion using feature-based methods, e.g. the tracking of corners or segments involving models
    • 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/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/124Quantisation
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/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/167Position within a video image, e.g. region of interest [ROI]
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/192Methods 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 the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • H04N19/45Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder performing compensation of the inverse transform mismatch, e.g. Inverse Discrete Cosine Transform [IDCT] mismatch
    • 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
    • H04N19/543Motion estimation other than block-based using regions
    • 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
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/557Motion estimation characterised by stopping computation or iteration based on certain criteria, e.g. error magnitude being too large or early exit

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种编码视频的当前帧的方法包括联合地确定用于参考帧的各自的运动模型,以及使用各自的运动模型来编码当前帧。参考帧被用于编码当前帧。联合地确定用于参考帧的各自的运动模型包括确定候选运动模型的组合的各自的聚合残差,并且选择对应于最小聚合残差的候选运动模型的组合。各自的运动模型对应于所选组合的候选运动模型。

Description

使用多种全局运动模型的多样化运动
背景技术
数字视频流可以使用帧或静止图像的序列来表示视频。数字视频可以用于各种应用,包括例如视频会议、高清视频娱乐、视频广告或用户生成的视频的共享。数字视频流可以包含大量数据并且消耗计算设备的大量计算或通信资源以用于视频数据的处理、传输或存储。已经提出了用于降低视频流中的数据量的各种方法,包括压缩和其他编码技术。
可以通过将帧或图像分解成基于参考帧的一个或多个预测块预测的块来执行基于运动估计和补偿的编码。在比特流中压缩并编码块和预测块之间的差(即,残差)。解码器使用该差和参考帧来重构帧或图像。
发明内容
一种用于编码视频的当前帧的方法包括联合地确定用于参考帧的各自的运动模型,以及使用各自的运动模型来编码当前帧。参考帧被用于编码当前帧。联合地确定用于参考帧的各自的运动模型包括确定候选运动模型的组合的各自的聚合残差,以及选择对应于最小聚合残差的候选运动模型的组合。各自的运动模型对应于所选组合的候选运动模型。
在该方法以及本文教导的其他实施方式中,候选运动模型的组合的聚合残差可以指一个或多个(例如所有)残差的组合(例如,和或加权和),每个残差通过使用来自该组合的各自的候选运动模型来预测当前帧的各自的块而生成。可以通过使用候选运动模型的组合预测帧来产生聚合残差,使得可以使用各自的候选运动模型来预测当前帧的块(并且生成各自的残差)。
根据本公开的另一方面,一种用于编码视频的当前帧的装置包括处理器和非暂时性存储介质。处理器被配置为执行存储在非暂时性存储介质中的指令,以联合地确定用于参考帧的运动模型,使得对各自的参考帧确定各自的运动模型,并且使用各自的运动模型来编码当前帧。
一种用于解码当前帧的方法包括从编码的比特流中解码用于当前帧的参考帧的各自的运动模型;以及响应于确定使用各自的运动模型中的至少一个来编码当前帧的当前块,使用各自的运动模型中的至少一个来解码当前块。各自的运动模型由编码器联合地确定。
根据本公开的另一方面的一种用于解码视频的当前帧的装置包括处理器和非暂时性存储介质。处理器被配置为执行存储在非暂时性存储介质中的指令以从编码的比特流中解码用于当前帧的参考帧的各自的运动模型,其中,编码器联合地确定各自的运动模型;以及响应于确定使用各自的运动模型中的至少一个来编码当前帧的当前块,使用各自的运动模型中的至少一个来解码当前块。
在下述实施例的详细描述、所附权利要求和附图中公开了本公开的这些和其他方面。
附图说明
本文的描述参考了下面描述的附图,其中,在数个视图中相同的附图标记表示相同的部件。
图1是视频编码和解码系统的示意图。
图2是可以实现发送站或接收站的计算设备的示例的框图。
图3是要被编码并随后被解码的视频流的图。
图4是根据本公开的实施方式的编码器的框图。
图5是根据本公开的实施方式的解码器的框图。
图6是根据本公开的实施方式,用于使用基于分段(segmentation)的参数化运动模型来编码当前块的过程的流程图。
图7是根据本公开的实施方式的帧分段的图。
图8是根据本公开的实施方式的视频帧内的运动的示例的说明。
图9A-D是根据本公开的实施方式,根据参数化运动模型扭曲视频帧的块的像素的示例的图示。
图10是根据本公开的实施方式,用于使用基于分段的参数化运动模型来解码当前块的过程的流程图。
图11是根据本公开的实施方式的全局运动的示例。
图12是根据本公开的实施方式,使用全局运动来编码当前帧的示例。
图13是根据本公开的实施方式的多样化全的局运动的示例。
图14是根据本公开的实施方式,用于使用多样化运动来编码视频的当前帧的过程的流程图。
图15是根据本公开的实施方式,用于联合地确定运动模型的过程的流程图。
图16是根据本公开的实施方式的运动模型的组合的示例。
图17是根据本公开的另一实施方式,用于联合地确定运动模型的过程的流程图。
图18是根据本公开的又一实施方式,用于联合地确定运动模型的过程的流程图。
图19是根据本公开的一个实施方式,用于解码当前帧的过程的流程图。
具体实施方式
如上所述,与编码视频流有关的压缩方案可以包括将图像分解成块;以及使用一种或多种技术来生成数字视频输出比特流(即,编码的比特流)以限制包括在输出比特流中的信息。可以对所接收的比特流进行解码,以由有限的信息重新创建块和源图像。编码视频流或其一部分(例如帧或块)可以包括使用视频流中的时间或空间相似性来提高编码效率。例如,可以基于识别先前编码的像素值、或先前编码的像素值的组合与当前块中的那些之间的差(残差)来编码视频流的当前块。
使用空间相似性的编码可以被称为帧内预测。帧内预测尝试使用块周围的像素,也就是说,使用与该块在同一帧中但在该块之外的像素来预测视频流的帧中的块的像素值。
使用时间相似性的编码可以被称为帧间预测。帧间预测尝试使用可能从一个或多个参考帧位移的一个或多个块来预测当前帧的块的像素值。参考帧是在视频流中在时间上比当前帧早或晚出现的帧(即图片)。可以在当前帧之前,由解码器接收在时间上晚于当前帧出现的参考帧。例如,图5的压缩的比特流420可以被组织,使得在当前帧之前包括时间上较晚的参考帧。可以使用表示平移运动的运动矢量,即,与正在被预测的块相比的参考帧中的预测块在x轴和y轴的像素偏移来执行帧间预测。一些编解码器使用可以被存储在帧缓冲区中的直至八个参考帧。运动矢量可以参考(即,使用)帧缓冲区的参考帧中的一个。
两个预测器块可以被组合以形成用于视频图像的块或区域的复合预测器。可以通过将使用例如上述预测方法(即,帧间和/或帧内预测)确定的两个或更多个预测器进行组合来创建复合预测器。例如,复合预测器可以是第一预测器和第二预测器的组合,其可以是两个帧内预测器(即帧内+帧内)、帧内预测器和帧间预测器(即帧内+帧间),或两个帧间预测器(即,帧间+帧间)。
上述运动补偿(在本文中被称为平移运动补偿或平移运动)的视频压缩和解压缩方法假定块之间的纯平移运动。平移运动补偿模型被执行为矩形变换。在块级别上确定的平移运动在本文中被称为“常规运动补偿”。
然而,并非可以使用相对于参考帧的参考块的平移运动模型来描述和/或有效地描述块内的所有运动。例如,一些运动可以包括缩放、剪切或旋转运动,其可以是单独的运动也可以是与平移运动一起的运动。这种运动可以归因于例如相机运动,并且可以适合于帧的所有或至少许多块。这样,该运动对帧是“全局”的。如下文提及并进一步描述的,全局运动本身可以是平移运动。像这样,与在块级别上使用局部平移运动(即,常规运动补偿)相比,使用平移全局运动模型预测当前帧的块可以导致更好的性能(例如,改进的压缩)。在使用帧间预测来编码块时,全局运动可以被用来产生参考块。替选地,可以使用通过运动搜索找到的平移运动矢量。
全局运动可以由“参数化运动模型”或“运动模型”表示。每个参考帧的单一运动模型可能无法准确地预测帧的所有潜在的运动。例如,就具有一致运动的视频的率失真优化而言,用于参考帧的单一运动模型表现良好。然而,视频帧可以包括由视频帧的块的集合组成的两个或更多个移动片段。这些片段可以包括例如沿着不同方向移动的一个或多个前景对象以及沿着另一方向移动的背景。特别地,例如,具有强视差的视频可能无法通过使用单一运动模型获得一致的增益。
本公开的实施方式描述了每个参考帧使用多个运动模型。对于数个参考帧,可以相对于参考帧分段当前视频帧,并且可以对这些片段识别出参数化运动模型。与片段相关联的参数化运动模型的每一个都对应于运动模型类型。如在图6-19的描述中详细说明的、结合全局运动使用的“片段”被与如下文的参考图3使用的“片段”区分开。与全局运动有关的“片段”是当前帧中,可以连续或可以不连续的块的集合。
在些情况下,无论是否对一个或多个参考帧识别出一个或多个运动模型,参考帧可能都无法单独地正确地描述当前帧中的全局运动。像这样,联合地而不是独立地(即,在每个参考帧的基础上)识别全局运动是有利的。例如,如果与第一参考帧相关联的全局运动准确地描述了当前帧的第一部分(例如当前帧的背景),那么可以使用与第二参考帧和/或第三参考帧相关联的全局运动来描述(即估计)当前帧的其他部分的全局运动。也就是说,在确定第二和/或第三参考帧的运动模型中,可以忽略当前帧的第一部分,并且可以得出适合其他部分(例如,当前帧的前景)的运动模型。通过联合地推断跨越可用于编码当前帧的至少一些参考帧的全局运动,可以减少与残差相关联的误差。联合地识别的(例如,推断的、计算的(calculated)、算出的(computed)等)全局运动模型在本文中被称为多样化运动模型。
本文首先参考可以实现技术的系统,描述用于使用基于分段的参数化运动模型来编码和解码视频帧的当前块的技术的更多细节,以及联合地推断可用于编码当前帧的至少一些参考帧上的全局运动(即,多样化运动)的更多细节。
图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,其进一步包括执行本文所述的方法的视频编码应用。计算设备200还可以包括辅助存储214,其可以例如是与移动计算设备一起使用的存储卡。因为视频通信会话可能包含大量信息,所以它们可以被全部或部分地存储在辅助存储214中并且根据需要被加载到存储器204中用于处理。
计算设备200还可以包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是触敏显示器,其将显示器与可操作以感测触摸输入的触敏元件组合。显示器218可以经由总线212被耦合到CPU 202。除了显示器218之外或者作为显示器218的替代,可以提供允许用户编程或以其他方式使用计算设备200的其他输出设备。当输出设备是显示器或包括显示器时,可以以各种方式实现显示器,包括通过液晶显示器(LCD)、阴极射线管(CRT)显示器或诸如有机LED(OLED)显示器的发光二极管(LED)显示器。
计算设备200还可以包括图像感测设备220,或者与图像感测设备220进行通信,图像感测设备220例如是相机或现在存在或以后开发的任何其他图像感测设备,该任何其他图像感测设备可以感测图像,诸如操作计算设备200的用户的图像。可以定位图像感测设备220,使得其指向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以被配置,使得视野包括与显示器218直接相邻并且从其可以看到显示器218的区域。
计算设备200还可以包括声音感测设备222或者与声音感测设备222通信,声音感测设备222例如是麦克风或者现在存在或以后开发的可以感测计算设备200附近的声音的任何其他声音感测设备。声音感测设备222可以被定位,使得其指向操作计算设备200的用户,并且可以被配置为接收在用户操作计算设备200时由用户发出的声音,例如,语音或其他表达。
虽然图2将计算设备200的CPU 202和存储器204图示为被集成到一个单元中,但是可以使用其他配置。CPU 202的操作可以跨多个机器(其中,单个机器可以具有一个或多个处理器)被分布,这些机器可以被直接耦合或跨局域网或其他网络耦合。存储器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像素、64×64像素、128×128像素或更大。除非另有说明,否则在本文中可以互换地使用术语“块”和“宏块”。
图4是根据本公开的实施方式的编码器400的框图。如上所述,可以诸如通过提供存储在诸如存储器204的存储器中的计算机软件程序,在发送站102中实现编码器400。计算机软件程序可以包括机器可读指令,其当由诸如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,可以使用帧内预测(也被称为帧内预测(intra-prediction))或帧间预测(也被称为帧间预测(inter-prediction))来编码各自的块。在任何情况下,都可以形成预测块。在帧内预测的情况下,可以由当前帧中的、先前已经被编码和重构的样本形成预测块。在帧间预测的情况下,可以由一个或多个先前构建的参考帧中的样本形成预测块。下文参考图6、7和8,例如使用为编码视频帧的当前块而识别的参数化运动模型,讨论用于形成预测块的实施方式。
接下来,仍然参考图4,在帧内/帧间预测阶段402处,可以从当前块中减去预测块以生成残差块(也称为残差)。变换阶段404使用基于块的变换,将残差变换为例如频域中的变换系数。量化阶段406使用量化器值或量化级,将变换系数转换为离散量子值,其被称为量化的变换系数。例如,变换系数可以除以量化器值并被舍位。然后,通过熵编码阶段408来熵编码量化的变换系数。然后,将熵编码的系数与被用于解码块的其他信息(其可以包括例如所使用的预测的类型、变换类型、运动矢量和量化器值)一起输出到压缩的比特流420。可以使用诸如可变长度编码(VLC)或算术编码的各种技术来格式化压缩的比特流420。压缩的比特流420也可以被称为编码的视频流或编码的视频比特流,在本文中,可以互换地使用这些术语。
图4中的(由虚线连接线示出的)重构路径可以被用于确保编码器400和解码器500(下文所述)使用相同的参考帧来解码压缩的比特流420。重构路径执行类似于在(下文所述的)解码过程期间发生的功能的功能,包括在反量化阶段410对量化的变换系数进行反量化,并且在逆变换阶段412对反量化的变换系数进行逆变换以生成衍生残差块(也称为衍生残差)。在重构阶段414,可以将在帧内/帧间预测阶段402预测的预测块添加到衍生残差以创建重构块。环路滤波阶段416可以被应用于重构块以减少诸如块效应的失真。
编码器400的其他变型可以被用于编码压缩的比特流420。例如,基于非变换的编码器400可以对于某些块或帧在没有变换阶段404的情况下直接量化残差信号。在另一实施方式中,编码器可以具有组合成共同阶段的量化阶段406和反量化阶段410。
图5是根据本公开的实施方式的解码器500的框图。可以例如通过提供存储在存储器204中的计算机软件程序,在接收站106中实现解码器500。计算机软件程序可以包括机器可读指令,其当由诸如CPU 202的处理器执行时,使得接收站106以图5中所述的方式解码视频数据。还可以以包括在例如发送站102或接收站106中的硬件来实现解码器500。
类似于上文讨论的编码器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的流程图。可以在诸如图4的编码器400的编码器中实现过程600。
过程600可以例如被实现为可以由诸如发送站102的计算设备执行的软件程序。该软件程序可以包括机器可读指令(例如,可执行指令),其被存储在诸如存储器204或辅助存储214的存储器中并且可以由诸如CPU 202的处理器执行以使计算设备执行过程600。在至少一些实施方式中,过程600可以全部或部分地由图4的编码器400的帧内/帧间预测阶段402执行。
可以使用专用硬件或固件来实现过程600。一些计算设备可以具有多个存储器、多个处理器或两者。可以使用不同的处理器、存储器或两者来分布过程600的步骤或操作。使用以单数形式的术语“处理器”或“存储器”涵盖具有一个处理器或一个存储器的计算设备以及具有在执行一些或全部所述步骤或操作中使用的多个处理器或多个存储器的设备。
参考图7描述过程600。图7是根据本公开的实施方式的帧分段的图700。图7包括当前帧701。可以使用帧缓冲区702中的参考帧(诸如参考帧704和参考帧706)来编码当前帧701的块。当前帧701包括人720的头和肩膀以及其他背景对象。
在602处,过程600相对于参考帧分割视频帧,从而导致分段。过程600可以相对于一个以上参考帧来分割视频帧。分段可以包括一个或多个片段。分段包括包含当前块的片段和用于该片段的参数化运动模型。图7描绘了三个片段:由一组阴影块描绘的片段722、由另一组不同阴影块描绘的片段718、和片段714,其包括构成帧的背景的帧的剩余块。片段722包括当前块716。
对于帧缓冲区702的至少一些参考帧中的每一个,过程600可以分割当前帧701。过程600可以使用利用在参考帧和当前帧之间的对象的运动的图像分割技术。然后将参数化运动模型与每个片段相关联,如参考图8进一步描述的。
可以使用兴趣点来执行图像分割以生成参数化运动模型。例如,过程600可以确定参考帧(例如参考帧704)中的第一兴趣点,以及当前帧701中的第二兴趣点。可以使用加速分割测试特征(FAST)算法来确定第一兴趣点和第二兴趣点。然后将第一兴趣点和第二兴趣点匹配。过程600可以使用匹配的兴趣点来确定用于匹配的兴趣点的参数化运动模型。
过程600可以使用随机抽样一致性(RANSAC)方法来将模型(即,参数化运动模型)拟合到匹配点。RANSAC是一种迭代算法,其可以被用来由包含内点和外点的数据来估计模型参数(即,参数化运动模型的参数)。内点是适合参数化运动模型的当前帧的数据点(即像素)。过程600可以基于内点来确定片段。即,过程600可以将内点包括在一个片段中。基于内点的片段(被称为前景片段)可以对应于当前帧中与前景对象相对应的运动。但是,不必如此。即,前景片段可以包括背景对象或块。前景片段可以不包括所有前景对象或块。
外点是不适合参数化运动模型的当前帧的数据点(即,像素)。过程600可以基于外点来确定第二片段。基于外点的片段(被称为背景片段)可以对应于当前帧的相对静态的背景对象。但是,不必如此。可替选地,代替基于外点来确定第二片段,过程600可以使用外点来确定附加的片段。例如,过程600可以递归地应用与上述相同的过程以确定附加片段。例如,通过将如上所述的过程应用于当前帧701并且使用参考帧704,过程600确定三个片段714、718和722。在例如人720的肩膀相对于参考帧在一个方向上移动而头部在另一方向上移动的情况下,可以对人720识别两个片段718和722。
过程600可以基于运动模型类型来确定参数化运动模型(例如,使用RANSAC)。例如,RANSAC算法可以基于过程600提供的运动模型类型来确定参数化运动模型。可以使用不同的运动模型类型。可用的运动模型类型包括复杂性不断增加的平移运动模型类型、相似性运动模型类型、仿射运动模型类型和单应运动模型类型。还可以使用附加的或更少的运动模型类型。进一步参考图9A-9D,说明一些运动模型类型。
在一些情况下,由RANSAC方法确定的参数化运动模型可能包含比为片段提供全局运动的良好近似(例如,相对于误差度量)所必需的更多参数。例如,即使四参数模型足以提供片段的良好近似,从RANSAC请求仿射模型也可以返回六参数模型(如参考图9A-9D所述)。像这样,过程600可以迭代地评估从最简单模型类型(例如,平移运动模型类型)开始到最复杂模型(例如,单应运动模型类型)的可用模型类型。如果确定较低复杂度模型产生预定阈值内的误差度量,则将与较低复杂度模型相对应的参数化运动模型确定为该片段的参数化运动模型。
在实施方式中,与模型类型相关联的误差优势(error advantage)可以被用作误差度量。误差优势E可以定义为:
E=∑α|cxy-wxy|0.6
在上述等式中,如下所述,α是权重值,cxy是当前帧中(x,y)处的像素,wxy是扭曲帧中(x,y)处的像素。如果模型类型产生低于预定阈值的误差优势E,则将对应于该模型类型的参数化运动模型与该片段相关联。如果没有模型类型产生低于预定阈值的误差优势E,则可以对该片段假定平移运动模型类型。
在实施方式中,过程600不评估单应运动模型类型;相反,过程600在相似性运动模型类型处停止。这样做是为了降低解码器复杂度。
过程600可以相对于(或基于)帧缓冲区702的每个参考帧来分割当前帧。在图7中,帧缓冲区702包括八(8)个参考帧。假设过程600为每个参考帧确定两(2)个片段(即,前景片段和背景片段),则该分段总共产生16个片段。16个片段中的每一个对应于各自的参数化运动模型,从而产生16个参数化运动模型。
如进一步参考图8所解释的,基于参考帧中包含当前块的可用片段来确定当前块的预测块。同样地,如果诸如图4的编码器400的编码器使用16个参数化运动模型确定预测块,然后解码器(诸如图5的解码器500)也使用16个参数化运动模型来重构当前块。像这样,将16个参数化运动模型编码在编码的比特流(诸如由编码器400生成并由解码器500接收的比特流420)中。
在编码的比特流中编码例如16个参数化运动模型的参数可能强于基于分段的参数化运动模型的预测增益。像这样,过程600可以确定帧缓冲区的参考帧的子集,产生用于特定片段的最佳拟合。对于片段,选择多个参考帧(例如,三个帧),并且确定相对于这些帧的参数化运动模型并将其编码在编码的比特流中。例如,过程600可以对于片段,基于黄金参考帧、替选参考帧和帧缓冲区中的最后参考帧确定参数化运动模型。黄金参考帧可以是可用作编码当前帧的前向预测帧的参考帧。最后参考帧可以用作编码当前帧的前向预测帧。替选参考帧可以用作用于编码当前帧的后向参考帧。
编码参数化运动模型可以意味着将参数化运动模型的参数编码在正被编码的当前帧的报头中。编码参数化运动模型可以包括编码对应于参数化运动模型的运动模型类型。
在编码运动模型类型的情况下,解码器(诸如图5的解码器500)以类似于编码器的方式,解码运动模型类型并且确定运动模型类型的参数化运动模型的参数。为了限制解码器的复杂性,编码器可以编码比最复杂的运动模型类型简单的运动模型类型。即,例如,编码器可以使用不比相似性运动模型类型复杂的运动模型类型来确定用于片段的参数化运动模型。
再次参考图7,从参考帧704获得前景片段722(如线708所示)。从参考帧706获得背景片段714(如线710所示)。即,可以从不同的参考帧获得每个片段。但是,这不是必需的。一些片段可以从相同的参考帧获得。例如,并且如图7所示,前景片段722和背景片段714可以从相同的参考帧706获得(分别由线712和线710所示)。片段718虽然在图7中未具体指出,但也可以从帧缓冲区702的任一参考帧获得。
图8是根据本公开的实施方式的视频帧800内的运动的示例的说明。尽管未具体指示,但应当理解到,图8的运动方向(例如,运动808)的端点是指参考帧内的像素位置。之所以如此,是因为相对于诸如参考帧的另一帧来描述运动。所示的端点可能不是同一参考帧中的端点。视频帧800内的块802A、B、C中的一个或多个可以包括扭曲运动。扭曲运动是使用经由平移运动补偿(例如,如上所述的常规运动补偿)确定的运动矢量可能无法准确预测的运动。例如,块802A、B、C中的一个内的运动可以在任意多个不同方向中,以不完全线性的方式缩放、旋转或以其他方式移动。替选地,块802A、B、C中的一个内的运动可以是使用全局平移运动更有效地描述的平移运动。像这样,可以使用参数化运动模型来形成或生成用于编码或解码块802A、B、C中的一个的预测块。
视频帧800内的运动可以包括全局运动。视频帧可以包含多于一个全局运动。表现出相同全局运动的块可以被分组为片段。片段可以或可以包括连续和/或不连续的块。
视频帧800包括在804、806和808处的运动。在804、806和808处的运动分别示出了块802A,802B和802C的像素的运动。例如,在804处示出的运动是块802A的像素的平移运动。在806处示出的运动是块802B的像素的旋转运动。在808处示出的运动是块802C的像素的扭曲运动。表现出相同全局运动的视频帧800的块组可以被分组为一个片段。例如,块802D的运动810与块802A的运动相同。这样,块802A和802D可以被包括在同一片段中。可以将1个以上全局运动与帧相关联。每个全局运动可以与帧的片段相关联。为了简单起见,块802A-802D被示为包括四个像素。但是,如上所述,块可以包括更多数量的像素。
除了全局运动之外,视频帧800可以具有在视频帧800的一部分内的局部运动。例如,在812处示出了局部运动。视频帧800内的局部运动可以被包含在一个块内或多个相邻或不相邻的块内。视频帧800可以包括多个不同的局部运动。
视频帧800的帧头814包括对可用于编码或解码块802A-802D的参考帧的参考。帧头814中的对参考帧的参考可以用于与那些参考帧相关联的参数化运动模型。参数化运动模型对应于运动模型类型(稍后参考图9A-D描述),并且指示如何使视频帧800的块(例如,块802A-802D)的像素扭曲以生成可用于编码或解码块的预测块。帧头814可以包括一个或多个参数化运动模型,每个模型对应于视频帧800的片段。
例如,参数化运动模型816对应于与第一参考帧相关联的第一片段的第一运动模型。参数化运动模型818对应于与第一参考帧相关联的第二片段的第二运动模型。参数化运动模型820对应于与第二参考帧相关联的第一片段的第一运动模型。参数化运动模型822对应于与第二参考帧相关联的第二片段的第二运动模型。参数化运动模型824对应于与第二参考帧相关联的第三片段的第三运动模型。参数化运动模型826对应于与第三参考帧相关联的第一片段的第一运动模型。参数化运动模型828对应于与第三参考帧相关联的第二片段的第二运动模型。
与参考帧相关联的参数化运动模型可以对应于一个或多个运动模型类型。例如,参数化运动模型816和参数化运动模型818可以分别对应于第一参考帧的单应运动模型和仿射运动模型。在一些实施方式中,每个参考帧可以与单一运动模型类型的多个参数化运动模型相关联。例如,参数化运动模型816和参数化运动模型818都可以对应于不同的单应运动模型。然而,在一些实施方式中,对于每个运动模型类型,参考帧可以被限于一个运动模型。此外,在一些实施方式中,参考帧可以完全被限于单一运动模型。在这种情况下,可以在某些情况下,诸如在新的运动模型导致较低的预测误差的情况下替换该运动模型。
参数化运动模型可以指示视频序列的多个帧内的全局运动。像这样,被编码在帧头814内的参数化运动模型可以被用来生成用于视频序列的多个帧中的多个块的预测块。可以诸如通过使用被编码到帧头814的比特,从参考帧缓冲区中选择与帧头814中的参数化运动模型相关联的参考帧。例如,被编码到帧头814的比特可以指向参考帧缓冲区内的参考帧的虚拟索引位置。
图9A-D是根据本公开的实施方式,根据参数化运动模型,扭曲视频帧的块的像素的示例的图示。用于扭曲帧中的块的像素的参数化运动模型可以对应于运动模型类型。对应于参数化运动模型的运动模型类型可以是单应运动模型类型、仿射运动模型类型、相似性运动模型类型或平移运动模型类型。可以通过与诸如编码的比特流的帧头内的参考帧相关联的数据来指示要使用的参数化运动模型。
图9A-D描绘了用于将块的像素投影到参考帧内的扭曲补片(patch)的不同运动模型类型。扭曲补片可以被用来生成用于编码或解码该块的预测块。参数化运动模型指示当被投影到参考帧中时如何缩放、旋转或以其他方式移动块的像素。表示像素投影的数据可以被用来识别与各自的运动模型相对应的参数化运动模型。参数化运动模型的参数的数量和功能取决于所使用的特定投影。
在图9A中,使用单应运动模型,将块902A的像素投影到帧900A的扭曲补片904A。单应运动模型使用八个参数来将块902A的像素投影到扭曲补片904A。单应运动不受两个空间的坐标之间的线性变换的约束。像这样,定义单应运动模型的八个参数可以被用于将块902A的像素投影到帧900A内的四边形补片(例如,扭曲补片904A)。单应运动模型由此支持平移、旋转、缩放、长宽比变化、剪切和其他非平行四边形扭曲。两个空间之间的单应运动定义如下:
以及/>
在这些等式中,(x,y)和(X,Y)是两个空间的坐标,即,分别是帧900A内的像素的投影位置和块902A内的像素的原始位置。此外,a、b、c、d、e、f、g和h是单应参数,并且是表示帧900A和块902A内的各自的像素的位置之间的关系的实数。在这些参数中,a表示在y轴的比例保持不变的情况下的沿x轴的固定比例因子,b表示沿x轴、与到块的中心点的y距离成比例的比例因子,c表示沿x轴的平移,d表示沿y轴、与到块的中心点的x距离成比例的比例因子,e表示在x轴的比例保持不变的情况下的沿y轴的固定比例因子,f表示沿y轴的平移,g表示根据x轴的函数的x和y轴的成比例的因子比例,以及h表示根据y轴的函数的x轴和y轴的成比例的因子比例。
在图9B中,使用仿射运动模型,将块902B的像素投影到帧900B的扭曲补片904B。仿射运动模型使用六个参数来将块902B的像素投影到扭曲补片904B。仿射运动是由六个参数定义的两个空间的坐标之间的线性变换。像这样,定义仿射运动模型的六个参数可以被用来将块902B的像素投影到帧900B内的平行四边形补片(例如,扭曲补片904B)。仿射运动模型由此支持平移、旋转、缩放、长宽比变化和剪切。两个空间之间的仿射投影定义如下:
x=a*X+b*Y+c;以及y=d*X+e*Y+f。
在这些等式中,(x,y)和(X,Y)是两个空间的坐标,即,分别是帧900B内的像素的投影位置和块902B内的像素的原始位置。另外,a、b、c、d、e和f是仿射参数,并且是表示帧900B和块902B内的各自的像素的位置之间的关系的实数。其中,a和d表示沿x轴的旋转或缩放因子,b和e表示沿y轴的旋转或缩放因子,c和f分别表示沿x轴和y轴的平移。
在图9C中,使用相似性运动模型,将块902C的像素投影到帧900C的扭曲补片904C。相似性运动模型使用四个参数来将块902C的像素投影到扭曲补片904C。相似性运动是由四个参数定义的两个空间的坐标之间的线性变换。例如,四个参数可以是沿x轴的平移、沿y轴的平移、旋转值和缩放值。像这样,定义相似性运动模型的四个参数可以被用来将块902C的像素投影到帧900C内的正方形补片(例如,扭曲补片904C)。相似性运动模型由此支持通过旋转和缩放的方形到方形变换。
在图9D中,使用平移运动模型,将块902D的像素投影到帧900D的扭曲补片904D。平移运动模型使用两个参数来将块902D的像素投影到扭曲补片904D。平移运动是由两个参数定义的两个空间的坐标之间的线性变换。例如,两个参数可以是沿x轴的平移和沿y轴的平移。像这样,定义平移运动模型的两个参数可以被用来将块902D的像素投影到帧900D内的方形补片(例如,扭曲补片904D)。
再次返回图6,在604处,过程600基于分段,确定当前块的第一运动矢量。如上所述,可以相对于至少一些参考帧,将视频帧划分为片段。像这样,当前块可以是许多片段的一部分,每个片段对应于参考帧。对于当前帧所属的至少一些片段,过程600确定各自的运动矢量。
如参考图7、8和9所述,在当前块与基于与当前块的片段相关联的参数化运动模型选择的参考帧之间生成运动矢量。像这样,当前块和基于参数化运动模型选择的参考帧之间的运动矢量可以是对参数化运动模型的参考。即,运动矢量指示参考帧和参数化运动模型。
可以根据所选择的参数化运动模型,通过将当前块的像素扭曲到参考帧内的扭曲补片来生成运动矢量。例如,将当前块的像素投影到参考帧内的扭曲补片。当前块的像素投影到的扭曲补片的形状和大小取决于与所选择的参数化运动模型相关联的运动模型。扭曲补片可以是矩形补片或非矩形补片。例如,如果参数化运动模型是平移运动模型类型,则扭曲补片是与当前块大小相同的矩形块。在另一示例中,如果参数化运动模型是单应运动模型类型,则扭曲补片可以是任何四边形并且具有任何大小。扭曲补片的位置也取决于运动模型。例如,参数化运动模型的参数指示扭曲补片的x轴和/或y轴平移。参数化运动模型的参数可以进一步指示扭曲补片的旋转、缩放或其他运动的变化。
然后,可以使用运动矢量展开扭曲补片,以回到当前块来生成预测块。预测块可以具有用于预测当前块的矩形几何形状。例如,在将各自的像素投影到参考帧的扭曲补片之后展开扭曲补片的投影像素可以包括使用生成的运动矢量,将扭曲补片投影到矩形块。可以基于到矩形块的各自的坐标平移,将参考帧的扭曲补片的像素位置坐标投影到矩形块。所得的矩形块可以被用来生成预测块。
在606处,过程600使用块级别的平移运动补偿(即,常规运动补偿)来确定当前块的第二运动矢量。即,过程600可以使用如上所述的帧间预测来确定第二运动矢量。
在608处,过程600对当前块,编码对应于较小误差的第一运动矢量和第二运动矢量中的一个。较小误差可以是与最佳率失真值相对应的误差。率失真值是指使失真量(即,视频质量损失)与用于编码的率(即比特数)之间取得平衡的比率。对在604处和606处确定的每个运动矢量,过程600可以确定对应于最佳率失真值的运动矢量。
过程600可以在编码的比特流中编码所选择的运动矢量。在所选择的运动矢量是基于分段的运动矢量(即,在604处确定的运动矢量)的情况下,过程600可以编码被用来确定运动矢量的参数化运动模型的参数。替选地,过程600可以编码对应于参数化运动模型的运动模型类型。
图10是根据本公开的实施方式,用于使用基于分段的参数化运动模型来解码当前块的过程1000的流程图。过程1000接收编码的比特流,诸如图5的压缩的比特流420。过程1000可以由解码器执行。例如,过程1000可以全部或部分地由解码器500的帧内/帧间预测阶段508执行。过程1000可以全部或部分地在(由虚线连接线所示的)图4的编码器400的重构路径期间执行。可以通过将指令存储在存储器(诸如接收站106或发送站102的存储器204)中以由处理器(诸如CPU 202)执行的指令来执行过程1000的实施方式。
可以使用专用硬件或固件来实现过程1000。一些计算设备可以具有多个存储器、多个处理器或两者。可以使用不同的处理器、存储器或两者来分布过程1000的步骤或操作。为了简化说明,将过程1000描绘和描述为一系列步骤或操作。然而,根据本公开的教导可以以各种顺序和/或同时发生。另外,根据本公开的步骤或操作可以与本文未呈现和描述的其他步骤或操作一起发生。此外,并非所有示出的步骤或操作都用于实施根据所公开的主题的方法。
在1002处,过程1000识别与运动模型类型相对应的参数化运动模型。可以基于在被解码的当前帧的头(即,帧头)中编码的信息来识别参数化运动模型。正在被解码的当前帧是包含当前块的帧。
过程1000可以通过从编码的比特流中解码参数化运动模型的参数来识别参数化运动模型。解码参数化运动模型的参数可以包括从编码的比特流解码运动模型类型。然后,过程1000可以生成与运动模型类型相对应的参数化运动模型的参数。过程1000可以如上参考图6所述,确定参数化运动模型的参数。
在1004处,响应于确定使用参数化运动模型编码当前块,过程1000使用参数化运动模型来解码当前块。当前块报头可以包括识别使用参数化运动模型编码当前块的指示。例如,当前块报头可以包括用于编码当前块的全局运动模型类型的指示符。例如,指示符可以指示全局运动被用于编码当前块,或者没有全局运动被用于编码当前块(例如,零全局运动)。
响应于确定使用参数化运动模型编码当前块,过程1000使用参数化运动模型来解码当前块。响应于确定不是使用参数化运动模型编码当前块,过程1000使用平移运动补偿来解码当前块。
用于视频序列的帧间帧的帧头可以包括指示可用于编码或解码其一个或多个块的一个或多个参数化运动模型的数据。例如,被编码到帧间帧的帧头的数据可以包括参数化运动模型的参数。该数据还可以包括编码的标志,指示可用于帧间帧的多个参数化运动模型。
在一些实施方式中,参考帧可以不具有参数化运动模型。例如,参考帧内可能有太多不同的运动,从而无法识别全局运动。在另一个示例中,基于运动模型对扭曲像素确定的预测误差可能不满足阈值。在这种情况下,可以使用零运动来编码或解码使用该参考帧的帧块。默认情况下,零运动模型可以被编码到视频序列的所有或一些帧间帧的帧头。
在一些实施方式中,通过根据参数化运动模型扭曲编码块的像素来解码使用参数化运动模型编码的当前块。然后内插编码块的扭曲像素。例如,可以使用6抽头(tap)×6抽头子像素滤波器来执行内插。在另一示例中,可以使用双三次插值来执行内插。双三次插值可以包括使用4抽头×4抽头窗口来内插编码块的子像素值。双三次插值可以包括将水平剪切和垂直剪切应用于编码块。
图11是根据本公开的实施方式的全局运动的示例1100。示例1100包括当前帧1104和参考帧1102。当前帧1104和参考帧1102可以是视频序列中的帧。示例1100示出了相机而不是相机捕获的对象正在运动的情况。如上所述,相机运动可以包括平移、旋转、缩放、剪切等。
同样如上所述,用于当前帧的参考帧的全局运动(即,参数化运动模型)可以被用来至少编码当前帧的片段。全局运动可以在编码的比特流中被编码在当前帧的帧头中,使得解码器可以使用全局运动来至少解码当前帧的片段。
图12是根据本公开的实施方式,使用全局运动来编码当前帧的示例1200。示例1200包括要被编码的当前帧1202和参考帧REF_1 1204、REF_2 1206和REF_3 1208。可以使用参考帧1204、1206和/或1208中的任何一个或任意组合来编码当前帧1202。示例1200包括光流1210、1216、1222,全局运动1212、1218、1224,聚合残差1230以及残差1214、1220、1228。尽管在图12中未示出,当前帧1202、参考帧REF_1 1204、REF_2 1206、REF_3 1208,光流1210、1216、1222以及全局运动1212、1218、1224具有相同的大小。聚合残差1230和残差1214、1220、1228示出了为了清晰和可视化目的而被放大的部分残差块。即,聚合残差1230和残差1214、1220、1228示出了与编码当前帧1202的一部分相关联的残差。如下文进一步所述,光流1210、1216、1222示出了块级别的运动;并且全局运动1212、1218、1224示出了由全局运动引起的运动。
在包括当前帧1202和参考帧1204、1206、1208的视频序列中,前景包括帝国大厦,而背景则描绘了其他建筑物。视频序列图示了相机运动的示例,其中,一部分帧(例如,包括帝国大厦的前景)在一个方向中运动,而帧的其他部分(例如,背景)在另一个方向中运动。所示的运动很小,可能不容易察觉。像这样,参考帧可以是相似的。像这样,全局运动模型和残差也可能相似。为了简单起见,相对于每个参考帧的一个全局运动模型来描述示例1200。然而,在下述描述中,理解为每个参考帧应用多个全局运动模型。
光流1210描述了当前帧与参考帧REF_1 1204之间的局部运动。也就是说,光流1210对当前帧1202的每个像素指示了参考帧REF_1 1204中的像素的运动。给定参考帧REF_1 1204中的像素,光流可以指示该像素在当前帧中的移动位置。像这样,例如,可以确定一个像素向左移动三(3)个像素,而可以确定另一像素向右移动四(4)个像素。
类似地,光流1216描述了当前帧与参考帧REF_2 1206之间的局部运动,而光流1222描述了当前帧与参考帧REF_3 1208之间的局部运动。如所图示的,光流1210、1216、1222指示这些残差被集中在当前帧(即帝国大厦)的前景中。
如上所述,全局运动(也被称为参数化运动模型或运动模型)可以具有少量参数,并且可以在参考帧的每个像素上引发运动。例如,假设向右平移,则参考帧的每个像素都可以与向右移动相关联;并且假设旋转,则每个像素都会移动由旋转给定的距离。
全局运动1212示出了相对于当前帧1202,与参考帧REF_1 1204相关联的全局运动。全局运动1212示出了每个像素的运动,其中,该运动是由与参考帧REF_1 1204相关联的全局运动模型引起的。尽管描述本文的概念并不重要,但全局运动1212(和图中的其他全局运动图形)中的灰阶旨在描绘全局运动的量和方向。
类似地,全局运动1218示出相对于当前帧1202的与参考帧REF_2 1206相关联的全局运动,并且全局运动1224示出相对于当前帧1202的与参考帧REF_3 1208相关联的全局运动。
在示例1200中,与其他部分(例如帝国大厦)相比,全局运动1212、1218、1212的灰度级分别与光流1210、1216、1222的部分(例如,背景)的灰度级更相似。类似地适用于光流1210、1216、1222。也就是说,与前景(即帝国大厦)相比,示例1200旨在描绘全局运动更多地描述了当前帧1202的背景。还使用残差1214、1220、1228对此进行了说明。
考虑到从参考帧REF_1 1204到当前帧1202的全局运动,所得残差1214图示了差(即残差)包括前景差(即帝国大厦)。从参考帧REF_1 1204到当前帧1202的全局运动可以是使参考帧REF_1 1204和当前帧尽可能相似的一个或多个参数化运动模型。类似地,残差1214、1220图示了分别对应于全局运动1212、1218的运动模型与当前帧1202的前景相比,与背景更对齐。如上所述,误差值通常与残差相关。该误差可以是当前帧的块的像素值与预测块的像素值之间的均方误差。该误差可以是绝对差误差之和。该误差可以是频率加权误差,使得具有较高编码成本的高频误差的权重高于低频误差。可以使用任何其他合适的误差测量。在示例1200中,计算的残差1214、1220和1228分别具有127.721、312.328和358.795的各自的均方误差。
如上所述,预测当前帧1202可以包括预测当前帧1202的每个块以确定聚合残差1230。在简单的示例中,忽略局部运动(例如,帧间预测),并且假设使用全局运动来预测当前帧1202的每个块的情况下,当前帧1202的每个块将参考帧1204、1206、1208中对应于最小残差的块用作其预测块。像这样,可以沿着线1232,从参考帧REF_2 1206预测当前帧1202的第一块,可以沿着线1234,从参考帧REF_3 1208预测第二块,以及可以沿着线1236,从参考帧REF_1 1204预测第三块。聚合残差1230具有相应的计算的均方误差118.387。
如上所述并且在示例1200中,独立计算全局运动模型。例如,确定使第一参考帧的第一部分与当前帧的第一部分最匹配的第一参数化运动模型,确定使第一参考帧的第二部分与当前帧的第二部分最匹配的第二参数化运动模型,等等。计算或确定参考帧的参数化运动模型可以回答以下问题:将参考帧与当前帧匹配的最佳方法是什么?给定参考帧的集合,对该组参考帧中的一个参考帧计算(例如,识别等)一个或多个参数化运动模型不使用对其他参考帧的任何一个计算参数化运动模型的结果。
在一些实施方式中,并且如下文进一步所述,可以联合地计算参考帧的全局运动(即,参数化运动模型)。如上所述,联合地计算的全局运动模型可以被称为多样化全局运动。
例如,如果与第一参考帧(例如,参考帧REF_1 1204)相关联的第一全局运动准确地(或以足够的准确度)描述了当前帧(例如,当前帧1202)的第一部分(例如背景),则确定与其他参考帧(例如,参考帧REF_2 1206和REF_3 1208)相关联的全局运动可以忽略当前帧的第一部分,并且专注于确定最能描述当前帧的其他部分(例如前景)的全局运动模型。类似地,与第二参考帧(例如,参考帧REF_2 1206)相关联的全局运动可以是当前帧的第二部分(例如,前景的第一部分)的良好描述符,并且与第三参考帧(例如,参考帧REF_3 1208)相关联的全局运动可以是当前帧的第三部分(例如,前景的第二部分)的良好描述符。
像这样,通过多样化全局运动,并且如参考图13进一步描述的,给定参考帧的集合,与参考帧相关联的联合地确定的全局运动中的任何一个本身可能不是当前帧的全局运动的良好整体描述符。但是,总的来说,联合地确定的全局运动(即,多样化运动)可以更好地描述当前帧的全局运动,因为每个联合地确定的全局运动可以是当前帧的一部分的最佳描述符。
图13是根据本公开的实施方式的多样化全局运动的示例1300。在示例1300中,与图12相同或相似的元素由相同的标号表示。示例1300针对当前帧1202示出了与每个参考帧REF_1 1204、REF_2 1206、REF_3 1208相关联的联合地确定的全局运动(即,多样化运动)。
全局运动1312示出了与参考帧REF_1 1204相关联的全局运动。全局运动1318示出了与参考帧REF_2 1206相关联的全局运动。全局运动1324示出了与参考帧REF_3 1208相关联的全局运动。为了简单起见,每个参考帧仅示出一个运动模型。然而,如上所述,与帧相关联的运动模型可以是一个或多个参数化运动模型。例如,与参考帧相关联的全局运动可以是多个参数化运动模型,每个模型描述当前帧的块组(例如,片段)中的运动。
联合地确定全局运动1312、1318、1324。在下文提供了联合地确定全局运动的示例。光流1310示出了全局运动1312是当前帧1202的背景的良好预测器。“良好预测器”意味着全局运动1312以足够的准确度描述了当前帧1202的背景的运动。帝国大厦在光流1310中几乎察觉不到,并且更多地被冲洗到背景中。光流1316示出了全局运动1318是当前帧1202的前景的良好预测器。帝国大厦在光流1316中更加可感知,但是被稍稍冲洗到背景中。光流1322示出全局运动1324是当前帧1202的前景的非常好的预测器。帝国大厦在光流1322中明显可感知。
残差1314是由使用全局运动1312预测当前帧1202的所有块而产生的残差。残差1314的均方误差(MSE)为121.045。残差1320是由使用全局运动1318预测当前帧1202的所有块而产生的残差。残差1320的均方误差(MSE)为565.076。残差1328是由使用全局运动1324预测当前帧1202的所有块而产生的残差。残差1328的均方误差(MSE)为636.596。残差1314、1320、1328的较亮区域表示比与残差1314、1320、1328的较暗区域相关联的残差更高的残差值。如分别由残差1320、1328所示,全局运动1318、1324对于背景生成高残差。
聚合残差1330是由使用多样化全局运动来预测当前帧而产生的残差。即,聚合残差1330是由使用联合地确定的全局运动1312、1318、1324来预测当前帧1202而产生的残差。使用全局运动1312、1318、1324联合地预测当前帧1202是指如上所解释的,对于当前帧1202的每个块,选择最佳全局运动1312、1318、1324(或其他预测)来预测该块。
与使用独立地确定的全局运动(图12的MSE=118.387)相比,使用多样化全局运动来预测当前帧1202导致更好的预测(MSE=59.309)。
也就是说,当不被联合考虑时,与参考帧REF_2 1206相关联的全局运动1318(MSE=565.076)执行得比图12的全局运动1218(MSE=312.328)更差;并且与参考帧REF_3 1286相关联的全局运动1324(MSE=636.596)执行得比全局运动1224(MSE=358.795)更差。当单独考虑时,对于整个当前帧1202,全局运动1318、1324导致较差分数(即,高残差)。但是,全局运动1318、1324很好地处理了前景(例如,帝国大厦),从而提高了压缩。像这样,当预测当前帧1202时,可以使用全局运动1312来预测在背景中的块,以及可以使用全局运动1318、1324中的一个来预测在前景中的块。
图14是根据本公开的实施方式,用于使用多样化运动来编码视频的当前帧的过程1400的流程图。给定用于编码当前帧的可用参考帧的集合,过程1400至少针对可用参考帧的子集,联合地确定用于编码当前帧的各自的运动模型。如上所述,所确定的运动模型是全局运动模型(即,参数化运动模型)。然后,过程1400使用联合地确定的运动模型来编码当前帧的块。
过程1400例如可以被实现为可以由诸如发送站102的计算设备执行的软件程序。该软件程序可以包括机器可读指令(例如,可执行指令),该指令可以被存储在存储器(诸如存储器204或辅助存储214)中并且可以由处理器(诸如CPU 202)执行以使计算设备执行过程1400。可以在编码器(诸如图4的编码器400)中实现过程1400。在至少一些实施方式中,可以全部或部分地由图4的编码器400的帧内/帧间预测阶段402执行过程1400。
可以使用专用硬件或固件来实现过程1400。一些计算设备可以具有多个存储器、多个处理器或两者。可以使用不同的处理器、存储器或两者来分布过程1400的步骤或操作。单数形式的术语“处理器”或“存储器”的使用涵盖具有一个处理器或一个存储器的计算设备以及具有可以被用在执行一些或全部所述步骤或操作中的多个处理器或多个存储器的设备。
在1402处,过程1400联合地确定可以被用于编码当前帧的用于参考帧的各自的运动模型。如本文所使用的,术语“确定”可以是指以任何方式创建、构造、形成、产生、生成或确定。过程1400可以确定所有可用参考帧或可用参考帧的子集的各自的运动模型。例如,过程1400可以确定用于可用参考帧中的三个的各自的运动模型。在示例中,三个可用参考帧可以是黄金帧、替选参考帧和最后参考帧。在下文中,参考图15、16和18,提供联合地确定参考帧的各自的运动模型的示例。
在1404处,该过程使用各自的运动模型来编码当前帧。使用各自的运动模型来编码当前帧可以包括使用与当前块相关联的全局运动模型来编码当前帧的当前块。关联的运动模型可以如参考图15、17或18所述。在一些实施方式中,可以使用相关联的全局运动模型或使用常规运动补偿确定的运动矢量来编码当前块。即,可以使用相关联的运动模型和由常规运动补偿产生的运动矢量中的导致较小的残差的一个来编码当前块。编码当前块可以是指编码在诸如图4的压缩的比特流420的编码的比特流中的当前块。
在一些实施方式中,过程1400可以包括附加的步骤或操作。例如,过程1400可以在编码的比特流中(诸如当前帧的报头中)编码所确定的运动模型。过程1400可以在编码的比特流中编码所确定的运动模型的参数。在示例中,并且如参考图16所述,对三个参考帧中的每一个,可以计算四个不同的候选运动模型。可以选择每个参考帧的四个计算的候选运动模型中的一个用于编码当前帧。像这样,所选择的候选运动模型的参数可以被编码在压缩的比特流中。所选择的候选运动模型可以使得它们联合地覆盖当前帧。即,当前帧的每个块可以与候选运动模型中的一个相关联。
在一些实施方式中,在过程1400中可以使用本文未提出和描述的其他步骤或操作。此外,并非所有示出的步骤或操作都是实现根据本公开的主题的技术所必需的。
图15是根据本公开的实施方式,用于联合地确定运动模型的过程1500的流程图。可以在过程1400的1402处实现过程1500。
过程1500可以为每个参考帧生成数个候选运动模型。然后,过程1500选择运动模型的最佳组合。最佳组合是对于当前帧,产生最小聚合残差的运动模型的组合。在示例中,运动模型的组合包括用于每个参考帧的一个候选运动模型。在另一示例中,运动模型的组合包括用于每个参考帧的零个或多个候选运动模型。运动模型的每个组合对应于多样化运动模型。运动模型的最佳组合是被选择用于编码当前帧的多样化运动模型。
为了简化说明,相对于三个参考帧和每个参考帧的四个候选运动模型来描述过程1500。但是,可以使用更多或更少的参考帧,并且可以对于每个参考帧生成(例如,识别、计算等)更多或更少的候选运动模型。可以对于每个参考帧生成相同或不同数量的候选运动模型。候选运动模型不一定是最佳运动模型。也就是说,候选运动模型不一定对于当前帧,必须整体上导致最小MSE。
过程1500可以被描述为两个阶段的过程:在第一阶段,独立地生成用于每个当前帧/参考帧对的数个(例如四个)候选运动模型;在第二阶段,执行所有参考帧上的联合优化,以选择被用来编码当前帧的一个集体的运动(即候选运动模型的组合)。在示例中,用于编码当前帧的集体的运动包括对于每个参考帧,从用于参考帧的四个候选运动模型中选择的一个全局运动模型。
在1502处,过程1500确定对于候选运动模型的组合的各自的聚合残差。
在示例中,候选运动模型的组合中的每一个由用于每个参考帧的一个各自的候选运动模型组成。在另一示例中,候选运动模型的组合中的每一个由用于每个参考帧的零个或更多个各自的候选运动模型组成。更一般地,候选运动模型的组合可以包括任意数量的候选运动模型,并且候选运动模型的数量不限于参考帧的数量。
为候选运动模型的组合确定各自的的聚合残差可以包括与其他参考帧的候选运动模型无关地生成用于参考帧的各自的候选运动模型。
在过程1500的一些实施方式中,可以在1502处确定不包括用于每个参考帧的一个各自的候选运动模型的候选运动模型的组合。例如,并且使用图16的示例,可以确定包括两个而不是三个候选运动模型的组合。
图16是根据本公开的实施方式的运动模型的组合的示例1600。在示例1600中,为参考帧REF_1 1204生成了四个候选运动模型,即,候选运动模型1602-1608;为参考帧REF_21206生成四个候选运动模型,即候选运动模型1612-1618;以及为参考帧REF_3 1208生成四个候选运动模型,即候选运动模型1622-1628。
可以以任意多种方式生成候选运动模型。例如,用于参考帧的候选运动模型可以各自对应于运动模型类型(例如,平移运动模型类型、相似性运动模型类型、仿射运动模型类型和单应运动模型类型)。例如,可以使用不同的误差优势来生成每个候选运动模型。例如,与当前帧的不同片段相关联的参数化运动模型可以被用作参考帧的候选运动模型。例如,可以将当前帧划分为多个片段,并且可以对每个片段确定参数化运动模型。片段的数量可以对应于要生成的候选运动模型的数量。可以以任何方式将当前帧的块指配给片段。在示例中,将第一组连续块(例如,块的25%)指配给第一组,将下一组连续块指配给第二组,依此类推。
在实施方式中,为候选运动模型的组合确定各自的聚合残差可以包括为参考帧的一些或所有候选运动模型生成各自的残差。例如,对于所生成的候选运动模型中的每个候选运动模型,过程1500可以生成与使用候选运动模型和相应的参考帧来预测当前帧相对应的残差。
图16示出了各自的残差。残差1603-1609是由分别使用候选运动模型1602-1608来预测当前帧1202而产生的残差。残差1613-1619是由分别使用候选运动模型1612-1618来预测当前帧1202而产生的残差。残差1623-1629是由分别使用候选运动模型1622-1628来预测当前帧1202而产生的残差。使用候选运动模型来预测当前帧可以包括将当前帧划分为大小为N×M的固定块,并且使用候选运动模型来预测每个块。N和M可以是从包括值4、8、16、32、64和128的集合中选择的整数值。
过程1500可以在参考帧(例如,三个参考帧REF_1、REF_2和REF_3)上联合执行穷举搜索,以确定候选运动模型中的哪个候选运动模型的组合最小化当前帧的重构误差。在图16中,因为每个参考帧生成四个候选运动模型,所以过程1500可以为64个(即4*4*4=64)候选运动模型的组合中的每一个确定聚合残差。示例性候选运动模型的组合包括:候选运动模型1602、1612、1622,候选运动模型1602、1612、1624,候选运动模型1602、1612、1626,候选运动模型1602、1612、1628,候选运动模型1604、1612、1622,候选运动模型1604、1612、1624,候选运动模型1604、1612、1626,候选运动模型1604、1612、1628等等。
如上所述,在示例中,候选运动模型的组合可以每个参考帧包括零个或多个候选运动模型。像这样,假设每个候选运动模型的组合包括三个候选运动模型,则候选运动模型的220个组合是可能的。220个可能的组合对应于选择总共12个(即候选运动模型1602-1608、1612-1618和1622-1628)可用候选运动模型中的任意三个候选运动模型。示例性候选运动模型的组合包括:候选运动模型1602、1604、1606;候选运动模型1602、1604、1622;候选运动模型1606、1616、1628等等。在每个候选运动模型的组合包括四个候选运动模型的示例中,候选运动模型的组合的示例包括:候选运动模型1602、1604、1606、1612;候选运动模型1602、1604、1606、1608;候选运动模型1602、1604、1612、1628等等。
尽管为了便于说明,本公开可以参考为每个参考帧选择一个各自的候选运动模型,但是应当理解到,如上所述,候选运动模型的组合可以包括用于每个参考帧的零个或多个候选运动模型和/或运动模型的组合中的运动模型的数量不限于参考帧的数量。
每个组合的运动模型的数量可以取决于每个组合的预定期望的运动模型的数量。例如,预定期望的数量可以是输入或配置。在另一示例中,用于使用多样化运动来编码视频的当前帧的过程(诸如过程1400)可以使用一系列期望数量的运动模型。例如,给定范围[3-5],该过程可以生成3个运动模型的组合、4个运动模型的组合以及5个运动模型的组合。如本文所述,运动模型的最佳组合可以被用来编码视频帧。运动模型的组合的数量也可以是输入、配置等。
在实施方式中,为候选运动模型的组合确定各自的聚合残差可以包括对于当前块,使用第一候选运动模型确定第一残差块、使用第二候选运动模型确定第二残差块、使用第三候选运动模型确定第三残差块,并且将对应于最小残差块的第一残差块、第二残差块和第三残差块中的一个添加到当前帧的聚合残差。
例如,对于包括候选运动模型1608、1616、1624的组合,对于当前帧中大小为8×8的每个块,过程1500可以选择提供最佳预测(即最小残差)的(1608,参考帧REF_1 1204)、(1616,参考帧REF_2 1206)、(1624,参考帧REF_3 1208)对中的一个。每个块的最小残差被添加到候选运动模型的组合的聚合残差。残差1630是候选运动模型的组合的聚合残差的示例。
如上所述,过程1500可以将各自的聚合残差与候选运动模型的每个组合相关联。在1504处,过程1500可以选择与最小聚合残差相对应的候选运动模型的组合。像这样,当前帧的每个块可以与对应于当前帧的最小聚合误差的全局运动模型相关联。
本文所述的多样化运动不假设或不依赖于参考帧彼此相似的事实。根据本公开的实施方式的多样化运动可以与任何参考帧的集合一起使用。
在一些实施方式中,用于确定当前帧的多样化运动模型的一个或多个参考帧可以不是视频序列中,包括当前帧的可显示帧。
例如,如果视频序列包括感兴趣对象(例如,著名人物、地标等),则感兴趣对象的帧或图像可以作为参考图像被包括在视频序列中。这些参考图像是不可显示的帧,因为它们本身不是视频序列的一部分。但是,这些参考图像可以被用作参考帧,以便为视频序列中、包括感兴趣对象的那些帧(或部分帧)提供更好预测。这样的参考帧可以被用于至少预测感兴趣对象的方面。例如,这样的参考帧可以被用于更好地预测人(例如,感兴趣的对象)的发型(例如,外观)。
在一些实施方式中,用于确定对于当前帧的多样化运动模型的一个或多个参考帧可以是在时间上远离当前帧的帧。通常,用于预测当前帧的参考帧是在时间上邻近当前帧的帧。然而,用于确定多样化运动模型的参考帧可以是时间上远离的帧。
例如,假定拍摄风景的全景视频序列。全景视频序列包括第一帧,该第一帧包括风景的一个外观(例如,岩层)。10分钟后拍摄的第二帧和12分钟后拍摄的第三帧也包括相同的外观。在典型的预测技术中,第一帧将不被用作用于预测第二帧和/或第三帧的参考帧。然而,使用根据本公开的实施方式的多样化运动模型,即使第一帧在时间上远离第二和第三帧,第一帧也可以被用作用于预测第二和第三帧中的风景的外观的参考帧。第一帧可以被标记(例如,识别、选择等)作为用于预测包括该外观的帧的参考帧。
在联合地确定运动模型的过程1500中,与其他参考帧的候选运动模型无关地选择用于参考帧的候选运动模型。在其他示例中,并且如参考图17-18进一步描述的,联合地确定运动模型可以使用关于其他参考帧的候选运动模型的可用信息来生成参考帧的一个或多个候选运动模型。即,可以同时使用所有参考帧(例如,所有参考帧的候选运动模型)来确定多样化运动模型。
图17是根据本公开的另一实施方式,用于联合地确定运动模型的过程1700的流程图。相对于三个参考帧描述了过程1700。但是,可以使用任意数量的参考帧。
在示例中,对于每个参考帧,过程1700指配各自的初始运动模型。在另一示例中,可以为参考帧指配零个或多个初始运动模型。然后,过程1700通过固定其他两个运动模型来迭代地改善运动模型中的一个。过程1700迭代直到满足目标函数。根据目标函数的语义,“直到满足目标函数”可以表示直到满足目标函数、在满足目标函数时、直到未满足目标函数、在未满足目标函数时,或者其他语义。目标函数可以是使过程1700从1706进行到结束当前迭代的任何一个或多个条件、处理、评估等。在每次迭代结束时(以及第一次迭代之前),确定当前的多样化运动模型。像这样,当前的多样化运动模型将全局运动模型与当前帧的每个块相关联。
在1702处,过程1700将各自的初始运动模型指配给参考帧的运动模型。给定参考帧REF_1、REF_2和REF_3,过程1700可以分别指配初始运动模型M1、M2和M3。如上所述,可以为参考帧指配零个或多个初始运动模型。例如,M1和M2可以对应于REF_1,以及M3可以对应于REF_3。像这样,应当理解到,初始运动模型的数量不受参考帧的数量限制。例如,初始运动模型可以是M1、M2、M3和M4,其中,M1和M3对应于REF_1,M2对应于REF_2以及M4对应于REF_3。
初始运动模型可以是如上所述生成的任何运动模型。初始运动模型不必一定是与相应的参考帧相关联的最佳运动模型。例如,可以使用最简单的模型类型来生成初始运动模型。例如,可以忽略与初始运动模型相关联的误差优势来生成初始运动模型。运动模型M1、M2、M3的组合构成了当前的多样化运动模型。
在1704处,过程1700确定使用运动模型(即,使用当前的多样化运动模型)编码当前帧的成本。过程1700将当前帧的每个块的编码成本确定为REF_1中的M1、REF_2中的M2和REF_3中的M3中的最小成本。例如,过程1700可以确定与使用初始运动模型(M1、M2、M3)编码当前帧的块相关联的残差值(MSE)。
在1706处,过程1700确定是否满足目标函数。如果是,则过程1700结束。否则,过程1700进行到1708以执行迭代来改进当前运动模型(即,当前多样化运动模型)。也就是说,过程1700(通过执行1708-1724)迭代地改善运动模型M1、M2、M3,直到满足目标函数,以便减少使用当前的多样化运动模型来编码当前帧的成本。当满足目标函数时,当前的多样化运动模型将当前帧的每个块与全局运动模型相关联,从而可以使用关联的运动模型来编码当前帧的块(例如图14的1404处)。在下文中,进一步说明目标函数。
可以以任意多种方式改善运动模型。例如,改善运动模型可以是指为使用该运动模型的相同块生成另一参数化运动模型,如上所述。另一参数化运动模型可以例如使用与该运动模型不同的运动模型类型。例如,改善运动模型可以是指为当前帧的块的子集生成运动模型。例如,子集可以包括除一个、两个或任意数量的块之外的所有块。在另一示例中,可以使用通过块的各自的编码成本加权的、当前帧的所有块上的RANSAC。也就是说,RANSAC可以偏向于当前多样化运动模型不是最佳的当前帧的那些块。也就是说,RANSAC可以偏向与最高误差相关联的那些块。
在1708处,该过程固定运动模型M2和M3。也就是说,过程1700使用而不改变最后确定的运动模型M2和M3。像这样,在第一迭代中,使用在1702处指配给运动模型M2和M3的初始运动模型。
在1710处,过程1700为REF_1生成候选运动模型M'1。在示例中,可以生成四个候选运动模型M'1(例如,M'1,1、M'1,2、M'1,3、M'1,4)。但是,可以生成任意数量的候选运动模型。
对于每个候选运动模型,过程1700确定(图17中未示出)使用M2、M3和运动模型候选来编码当前帧的各自的误差。在示例中,可以类似于图15的1502来确定各自的误差。例如,确定组合(M'1,1、M2、M3)、(M'1,2、M2、M3)、(M'1,3、M2、M3)和(M'1,4、M2、M3)的聚合残差。
在1712处,过程1700将M1设置为最佳候选运动模型M'1,其产生最小的聚合残差,类似于图15的1504。例如,假设选择了M'1,2,则新的组合M1(设置为M'1,2)、M2、M3构成当前的多样化运动模型。
在1714-1718处,除了在1714处固定M1和M3之外,过程1700执行与参考1708-1712所述的动作相似的动作,在1716处,对于M2生成候选运动模型M'2(例如,M'2,1、M'2,2、M'2,3、M'2,4),并且将M2设置为最佳候选运动模型M'2。M1被固定到1712的候选运动模型M'1
在1720-1724处,除了在1720处固定M1和M2之外,过程1700执行与参考1708-1712和1714-1718所述的动作类似的动作,在1722处,对于M3生成候选运动模型M'3(例如M'3,1、M'3,2、M'3,3、M'3,4),并且将M3设置为最佳候选运动模型M'3。将M1固定到1712的候选运动模型M'1。将M2固定到1718的候选运动模型M'2
为了概括操作1708-1712、1714-1718和1720-1724,过程1700对于第一参考帧(例如,REF_2)生成第一运动模型候选(例如M'2,1、M'2,2、M'2,3、M'2,4),并且对于每个第一运动模型候选(例如,M'2,1、M'2,2、M'2,3、M'2,4)确定使用其他帧(例如,REF_1、REF_3)的各自的运动模型(例如,M1、M3)和运动模型候选来编码当前帧的各自的误差。然后,过程1700将第一参考帧(例如,REF_2)的(即与第一参考帧相关联的)运动模型(例如,M2)设置为对应于最小聚合残差的第一运动模型候选(例如,M'2,1、M'2,2、M'2,3、M'2,4)中的一个。
然后,过程1700返回到1706,以确定是否满足目标函数。在示例中,目标函数可以是迭代次数。迭代次数可以是任意数(例如2、3、4等)。像这样,当过程1700执行1708-1724达迭代次数时,过程1700结束。
在另一示例中,目标函数可以与使用运动模型编码当前帧的误差有关。误差阈值可以与与使用在1708-1724的迭代期间设置的运动模型M1、M2和M3来编码当前帧相关联的误差有关。即,误差阈值可以与与使用当前多样化运动模型来编码当前帧相关联的误差有关。该误差可以是当前块的像素值与参考帧的预测块的像素值之间的均方误差。该误差可以是绝对差误差之和。可以使用任何其他合适的误差测量。
在示例中,目标函数可以使得从一个迭代到下一个迭代必须使误差改善达一定误差阈值。像这样,如果迭代不能使误差改善至少达误差阈值,则过程1700从1706进行到结束。例如,当迭代不能改善当前帧的给定百分比的块的编码时,可以认为满足了目标函数。换句话说,目标函数使得每次迭代都必须改进当前帧的给定百分比的块的编码。在示例中,百分比可以是帧的1/3的块。在另一示例中,必须改进10%的块。可以使用任何百分比阈值。
在一些情况下,可能无法在合理的迭代次数或计算资源量内识别(即确定、生成等)对于当前帧的一些像素或块的最佳运动模型。像这样,与这些块或像素相关联的误差被排除在误差计算之外,因为这些块没有提供迭代间改进的度量。因此,可以通过添加从误差(例如,聚合误差)确定中排除这些块的条件来将鲁棒性度量添加到目标函数。从聚合误差计算中排除一些块可能导致编码这些块的高成本(即,次优的多样化运动模型)。然而,排除这样的块防止了对于当前帧的其余块,这样的块可能偏斜或偏置否则最佳的多样化运动模型的情况。
在示例中,从误差的确定中排除当前帧中不满足块式误差阈值的块。在示例中,块式误差阈值可以“在误差的第95个百分位数中”。也就是说,从要被用在目标函数的误差的确定中排除当前帧中与5%最高误差相关联的块。
在另一示例中,可以从误差的确定中排除超过阈值的块误差。例如,假设阈值为200,则如果与预测当前帧的块相关联的误差(例如,MSE)大于200,则该误差不被添加到聚合残差。
图18是根据本公开的又一实施方式,用于联合地确定运动模型的过程1800的流程图。相对于三个参考帧描述过程1800。但是,可以使用任意数量的参考帧。
过程1800同时更新运动模型M1、M2和M3以及当前帧中被指配运动模型M1、M2和M3的块。像这样,过程1800优化两个相关量:运动模型(其基于被指配给运动模型的块来确定)和块分配(即,哪些块被指配给哪些运动模型)。如本文所使用的,“当前帧的块被指配给运动模型”是指该运动模型可以被用来预测该块。如本文所使用的,“运动模型被指配给当前帧的块”是指该运动模型可以被用于预测该块。
在1802处,过程1800对当前帧的块进行初始运动模型的初始分配。在示例中,过程1800可以将当前帧划分成与参考帧的数量相等的多个块组。每块组构成当前帧的块的子集。
可以相对于各自的参考帧,对每个组生成初始运动模型。例如,给定三个参考帧REF_1、REF_2和REF_3以及三个组G1、G2和G3,过程1800可以生成用于由参考帧REF_1预测组G1的块的运动模型M1、用于由参考帧REF_2预测组G2的块的运动模型M2,以及用于由参考帧REF_3预测组G3的块的运动模型M3。运动模型M1、M2和M3构成参考帧的各自的运动模型,并且构成当前的多样化运动模型。
当前帧可以以任意多种方式被划分为多个组。例如,可以将当前帧的每个块随机地指配给一个组。在另一示例中,可以将连续(例如,以光栅扫描顺序)百分比的块指配给每个组。例如,可以将块的前三分之一指配给组G1,可以将块的第二个1/3指配给组G2,并且可以将块的第三个1/3指配给组G3。划分当前帧的其他方式也是可能的。片段可以包括相同或不同数量的块。
在1804处,过程1800确定是否满足目标函数。如果是,则过程1800结束。否则,过程1800进行到1806以执行迭代来改善当前运动模型和块分配。目标函数可以如参考图17的1706所描述的。
在1806处,过程1800改善被指配给当前帧的各自的块组的参考帧的各自的运动模型。像这样,过程1800在块分配固定的情况下更新(或改善)运动模型M1、M2和M3。运动模型可以如参考图17所描述的被改善。
使用被指配给每个运动模型的相同块组(例如,G1、G2和G3)来改善运动模型M1、M2和M3。即,在改善操作期间,在仅考虑被指配给运动模型的块的同时改善每个运动模型,以便使用该运动模型减少被指配给运动模型的块的总编码成本。
像这样,改善被指配给当前帧的各自的块组的参考帧的各自的运动模型可以包括将参考帧中的第一参考帧的第一运动模型指配给当前帧的第一块组,将参考帧中的第二参考帧的第二运动模型指配给当前帧的第二块组,并且更新第一运动模型和第二运动模型以最小化编码第一块组和第二块组的成本。
在1808处,过程1800更新对当前帧的块各自的运动模型的分配。也就是说,可以在固定所有运动模型(即,1806的改善的运动模型M1、M2和M3)的情况下更新当前帧的所有块的块分配。改善的运动模型M1、M2、M3对应于当前的多样化运动模型。过程1800可以通过对当前块的每个块挑选(即,关联等)最小化块编码成本的改善的运动模型M1、M2和M3中的一个来更新块分配。像这样,块1808可以导致不同的块被包括在组G1、G2和G3的每一个中。在块1806处,在下一迭代中使用更新的组G1、G2和G3。像这样,可以说被包括在组G1-G3中的组中的块与该组的运动模型相关联。应当注意到,在1808处,更新块的运动模型可以导致一些运动模型不被指配给当前帧的任何块。因此,当过程1800响应于1804的查询而结束时,一些运动模型可能未被指配给当前帧的任何块。
像这样,更新各自的运动模型到当前帧的块的分配可以包括将第一运动模型和第二运动模型重新指配给第一块组和第二块组中的块,以最小化编码第一块组和第二块组中的块的成本。
图19是根据本公开的实施方式,用于解码当前帧的过程1900的流程图。过程1900接收编码的比特流,诸如图5的压缩的比特流420。过程1900可以由解码器执行。例如,过程1900可以全部或部分地由解码器500的帧内/帧间预测阶段508执行。过程1900可以全部或部分地在图4的编码器400的(由虚线连接线示出的)重构路径期间执行。例如,可以通过将指令存储在存储器(诸如接收站106或发送站102的存储器204)中以由处理器(诸如CPU202)执行的指令来执行过程1900的实施方式。
可以使用专用硬件或固件来实现过程1900。一些计算设备可以具有多个存储器、多个处理器或两者。可以使用不同的处理器、存储器或两者来分布过程1900的步骤或操作。为了简化说明,将过程1900描绘和描述为一系列步骤或操作。然而,根据本公开的教导可以以各种顺序和/或同时发生。另外,根据本公开的步骤或操作可以与本文未呈现和描述的其他步骤或操作一起发生。此外,并非所有示出的步骤或操作都用于实施根据本公开的主题的方法。
在1902处,过程1900从编码的比特流中解码当前帧的参考帧的各自的运动模型。参考帧的各自的运动模型构成用于预测当前帧的多样化运动模型。参考帧的运动模型由编码器(诸如图4的编码器400)被编码在比特流中,其中,编码器联合地确定了各自的运动模型。编码器可以使用过程1500、1700或1800中的一个来联合地确定各自的运动模型。
在1904,响应于确定使用各自的运动模型中的至少一个编码当前帧的当前块,过程1900使用各自的运动模型中的至少一个来解码当前块。
为了简化说明,将过程600、1000、1400、1500、1700、1800和1900描绘和描述为一系列步骤或操作。然而,根据本公开的步骤或操作可以以各种顺序和/或同时发生。另外,可以使用本文未提出和描述的其他步骤或操作。此外,并非所有示出的步骤或操作都是实现根据所公开的主题的方法所必需的。
上述编码和解码的方面示出了编码和解码技术的一些示例。然而,应当理解到,编码和解码(就像在权利要求中使用的那些术语)可以表示对数据的压缩、解压缩、变换或任何其他处理或改变。
本文使用词语“示例”来表示用作示例、实例或说明。本文描述为“示例”的任何方面或设计不必被解释为比其他方面或设计更优选或更具优势。相反,使用词语“示例”旨在以具体方式呈现概念。如在本申请中所使用的,术语“或”旨在表示包含性的“或”而不是排他性的“或”。也就是说,除非另有说明或从上下文中清楚所示,否则陈述“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。
此外,本公开的全部或部分实施方式可以采用可从例如计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如有形地包含、存储、通信或传输程序以供任何处理器使用或与之结合使用的任何设备。介质可以是例如电、磁、光、电磁或半导体设备。其他合适的介质也是可用的。
已经描述了上述实施例、实施方式和方面,以便容易理解本公开,并且上述实施例、实施方式和方面不限制本公开。相反,本公开旨在涵盖包括在所附权利要求范围内的各种改进和等同布置,该范围应被赋予最广泛的解释,以包含法律允许的所有这些改进和等同配置。

Claims (20)

1.一种用于对视频的当前帧进行编码的装置,包括:
处理器,所述处理器被配置为:
针对可用参考帧的子集中的每个参考帧生成至少两个各自的候选全局运动模型GMM,其中,生成所述至少两个各自的候选GMM包括:
将所述当前帧划分为至少两个片段;
针对每个参考帧,生成与所述至少两个片段相对应的至少两个各自的GMM;以及
使用与所述至少两个片段相对应的所述至少两个各自的GMM作为每个参考帧的所述至少两个各自的GMM;
将所述当前帧划分为块;
生成所述当前帧的聚合残差帧,其中,生成所述聚合残差帧包括:
为了预测每个块,选择各自的GMM,其中,各自的GMM与所述至少两个各自的候选GMM中的一个各自的候选GMM相对应,该各自的候选GMM使与所述聚合残差帧相关联的总误差最小化;以及
获得该块的各自的残差块;以及
在压缩的比特流中编码所述各自的残差块。
2.根据权利要求1所述的装置,其中,为了预测每个块,选择各自的GMM包括:
使用运动矢量来预测每个块;
获得与使用所述运动矢量获得的第一残差块相关联的第一误差;
获得与使用各自的GMM来预测每个块相关联的第二误差;
在所述第一误差小于所述第二误差的第一情况下,为了预测每个块,选择所述运动矢量;以及
在所述第二误差小于所述第一误差的第二情况下,为了预测每个块,选择所述至少两个各自的候选GMM中的该各自的候选GMM。
3.根据权利要求1所述的装置,其中,所述处理器被配置为:
在所述压缩比特流中对所述至少两个各自的候选GMM进行编码。
4.根据权利要求1所述的装置,其中,生成所述至少两个各自的候选GMM包括生成至少四个各自的候选GMM。
5.根据权利要求4所述的装置,其中,所述至少两个片段的第一数量与所获得的片段GMM的第二数量相等。
6.根据权利要求4所述的装置,其中,为了预测每个块,选择各自的GMM,包括:
选择所述GMM的组合,其中,所述GMM的每个组合包括针对所述可用参考帧的子集中的每一个参考帧中的至少一些的所述至少两个各自的候选GMM中的一个;
获取所述GMM的组合的各自的聚合残差;
计算所述各自的聚合残差的各自的误差;
选择与最小各自的误差相对应的所述GMM的组合;以及
使用所述GMM的组合中的所述GMM中的一个作为各自的GMM。
7.根据权利要求6所述的装置,其中,所述GMM的组合中的每一个包括至少三个候选GMM。
8.根据权利要求1至7中的任一项所述的装置,其中,所述可用参考帧的所述子集包括黄金参考帧、替选参考帧和最后参考帧。
9.根据权利要求1至7中的任一项所述的装置,其中,所述可用参考帧中的至少一个不是可显示帧。
10.一种用于对视频的当前帧进行编码的方法,包括:
将初始全局运动模型GMM指配给参考帧;
将当前GMM集合设置为所述初始GMM;
将所述当前帧划分为块;
向所述块的每个子集指配所述初始GMM中的一个;
通过使用被指配给各自的所述块的各自的所述初始GMM来预测每个块,计算使用所述初始GMM对所述当前帧进行编码的误差;
迭代地执行以下步骤直到目标函数被满足为止:
选择所述当前GMM集合中的一个GMM并固定所述当前GMM集合中的所有其他GMM;
获取一个所选择的GMM的至少一个候选GMM;
确定使用候选GMM集合对所述当前帧进行编码的各自的误差,其中,每个候选GMM集合包括所述当前GMM集合中的所有其他GMM和一个所选择的GMM的所述至少一个候选GMM中的一个;以及
将所述当前GMM集合设置为与最低各自的误差相对应的所述候选GMM集合;以及
使用所述当前GMM集合对所述当前帧进行编码。
11.根据权利要求10所述的方法,其中,获取所述至少一个候选GMM包括:
获取四个候选GMM。
12.根据权利要求10所述的方法,其中,第一参考帧被初始地指配第一初始运动模型和第二初始运动模型。
13.根据权利要求10所述的方法,其中,确定使用所述候选GMM集合来对所述当前帧进行编码的所述各自的误差包括:
从对所述各自的误差的确定中排除所述当前帧中的所述块的子集,其中,与所述块的所述子集中的每个块相关联的各自的误差满足块式误差阈值。
14.根据权利要求10所述的方法,其中,确定使用所述候选GMM集合来对所述当前帧进行编码的所述各自的误差包括:
从对所述各自的误差的确定中排除超过阈值的块误差。
15.根据权利要求10至14中的任一项所述的方法,其中,所述目标函数涉及迭代的数量。
16.根据权利要求10至14中的任一项所述的方法,其中,所述目标函数涉及连续迭代之间的误差改进。
17.根据权利要求10至14中的任一项所述的方法,其中,使用所述初始GMM对所述当前帧进行编码的误差是均方误差。
18.一种对视频的当前帧进行编码的方法,包括:
联合地确定参考帧的全局运动模型GMM,其中,联合地确定所述参考帧的所述GMM包括:
执行步骤直到目标函数被满足为止,所述步骤包括:
改善所述参考帧的被指配给所述当前帧的各自的块组的各自GMM,其中,改善所述参考帧的所述各自GMM包括:
将所述参考帧中的第一参考帧的第一GMM指配给所述当前帧的第一块组;
使用所述第一块组的子集生成更新的第一GMM,其中,所述第一块组的所述子集包括比所述第一块组少至少一个的块;以及
将所述更新的第一GMM指配给所述第一块组;以及
更新所述各自的GMM到所述当前帧的块的指配;以及
使用所述GMM对所述当前帧进行编码。
19.根据权利要求18所述的方法,其中,改善所述参考帧的被指配给所述当前帧的所述各自的块组的所述各自的GMM包括:
将所述参考帧中的第二参考帧的第二GMM指配给所述当前帧的第二块组;以及
更新所述第二GMM,以使对所述第一块组和所述第二块组中的块进行编码的成本最小化。
20.根据权利要求19所述的方法,其中,更新所述各自的GMM到所述当前帧的块的指配包括:
将所述第一GMM和所述第二GMM重新指配给所述第一块组和所述第二块组中的块,以使对所述第一块组和所述第二块组中的块进行编码的成本最小化。
CN201880035987.7A 2017-11-16 2018-08-21 使用多种全局运动模型的多样化运动 Active CN110692241B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762587025P 2017-11-16 2017-11-16
US62/587,025 2017-11-16
US16/016,857 US10681374B2 (en) 2017-11-16 2018-06-25 Diversified motion using multiple global motion models
US16/016,857 2018-06-25
PCT/US2018/047209 WO2019099083A1 (en) 2017-11-16 2018-08-21 Diversified motion using multiple global motion models

Publications (2)

Publication Number Publication Date
CN110692241A CN110692241A (zh) 2020-01-14
CN110692241B true CN110692241B (zh) 2023-07-18

Family

ID=66433713

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880035987.7A Active CN110692241B (zh) 2017-11-16 2018-08-21 使用多种全局运动模型的多样化运动

Country Status (4)

Country Link
US (2) US10681374B2 (zh)
EP (1) EP3711293A1 (zh)
CN (1) CN110692241B (zh)
WO (1) WO2019099083A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11070813B2 (en) * 2018-06-29 2021-07-20 Intel Corporation Global motion estimation and modeling for accurate global motion compensation for efficient video processing or coding
BR112021021334A2 (pt) * 2019-04-25 2022-01-18 Op Solutions Llc Sinalização de vetor de movimento global em cabeçalho de imagem
JP7321583B2 (ja) * 2019-04-25 2023-08-07 オーピー ソリューションズ, エルエルシー ピクチャヘッダ内の大域的運動ベクトルの信号伝達
CN114026868A (zh) * 2019-04-25 2022-02-08 Op方案有限责任公司 帧间预测中全局运动约束的运动矢量
CN113556551B (zh) * 2020-04-23 2023-06-23 上海高德威智能交通系统有限公司 一种编码、解码方法、装置及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5657087A (en) * 1994-06-15 1997-08-12 Samsung Electronics Co., Ltd. Motion compensation encoding method and apparatus adaptive to motion amount
EP1351510A1 (en) * 2001-09-14 2003-10-08 NTT DoCoMo, Inc. Coding method,decoding method,coding apparatus,decoding apparatus,image processing system,coding program,and decoding program
CN104396244A (zh) * 2012-04-16 2015-03-04 诺基亚公司 用于视频编码和解码的装置、方法和计算机程序
CN105850133A (zh) * 2013-12-27 2016-08-10 英特尔公司 用于下一代视频译码的内容自适应主运动补偿预测
US9438910B1 (en) * 2014-03-11 2016-09-06 Google Inc. Affine motion prediction in video coding

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3183155B2 (ja) 1996-03-18 2001-07-03 株式会社日立製作所 画像復号化装置、及び、画像復号化方法
US7321626B2 (en) 2002-03-08 2008-01-22 Sharp Laboratories Of America, Inc. System and method for predictive motion estimation using a global motion predictor
US9225994B2 (en) * 2005-03-14 2015-12-29 British Telecommunications Public Limited Company Global motion estimation using reduced frame lines
KR101366242B1 (ko) 2007-03-29 2014-02-20 삼성전자주식회사 움직임 모델 파라메터의 부호화, 복호화 방법 및 움직임모델 파라메터를 이용한 영상의 부호화, 복호화 방법 및장치
HUE037450T2 (hu) * 2007-09-28 2018-09-28 Dolby Laboratories Licensing Corp Videó információ kezelése
US8411750B2 (en) * 2009-10-30 2013-04-02 Qualcomm Incorporated Global motion parameter estimation using block-based motion vectors
US20170337711A1 (en) * 2011-03-29 2017-11-23 Lyrical Labs Video Compression Technology, LLC Video processing and encoding
EP2683165B1 (en) 2012-07-04 2015-10-14 Thomson Licensing Method for coding and decoding a block of pixels from a motion model
WO2014078068A1 (en) * 2012-11-13 2014-05-22 Intel Corporation Content adaptive transform coding for next generation video
GB2518919B (en) * 2014-03-14 2015-11-18 Imagination Tech Ltd Error tracking and mitigation for motion compensation-based video compression
US9715903B2 (en) * 2014-06-16 2017-07-25 Qualcomm Incorporated Detection of action frames of a video stream
US20180295375A1 (en) * 2017-04-05 2018-10-11 Lyrical Labs Video Compression Technology, LLC Video processing and encoding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5657087A (en) * 1994-06-15 1997-08-12 Samsung Electronics Co., Ltd. Motion compensation encoding method and apparatus adaptive to motion amount
EP1351510A1 (en) * 2001-09-14 2003-10-08 NTT DoCoMo, Inc. Coding method,decoding method,coding apparatus,decoding apparatus,image processing system,coding program,and decoding program
CN104396244A (zh) * 2012-04-16 2015-03-04 诺基亚公司 用于视频编码和解码的装置、方法和计算机程序
CN105850133A (zh) * 2013-12-27 2016-08-10 英特尔公司 用于下一代视频译码的内容自适应主运动补偿预测
US9438910B1 (en) * 2014-03-11 2016-09-06 Google Inc. Affine motion prediction in video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向高性能视频编码的码率控制与仿射预测研究;李礼;《中国优秀硕士学位论文全文数据库 电子期刊》;20170215;全文 *

Also Published As

Publication number Publication date
EP3711293A1 (en) 2020-09-23
WO2019099083A1 (en) 2019-05-23
US20200260112A1 (en) 2020-08-13
US11115678B2 (en) 2021-09-07
CN110692241A (zh) 2020-01-14
US20190149841A1 (en) 2019-05-16
US10681374B2 (en) 2020-06-09

Similar Documents

Publication Publication Date Title
CN110692241B (zh) 使用多种全局运动模型的多样化运动
JP7313816B2 (ja) 画像予測方法および関連装置
US11800136B2 (en) Constrained motion field estimation for hardware efficiency
CN110741640B (zh) 用于视频代码化中的运动补偿预测的光流估计
US20240098298A1 (en) Segmentation-based parameterized motion models
CN111757106B (zh) 使用多级复合预测对视频流中的当前块编译的方法和设备
JP6605726B2 (ja) 直前のフレームの動きベクトルパーティショニング
CN110169068B (zh) Dc系数符号代码化方案
CN110741641B (zh) 用于视频压缩的方法和装置
JP6636615B2 (ja) 動きベクトル場の符号化方法、復号方法、符号化装置、および復号装置
CN110169059B (zh) 视频代码化的复合预测
US10225573B1 (en) Video coding using parameterized motion models
CN115486068A (zh) 用于视频编码中基于深度神经网络的帧间预测的方法和设备
CN107205156B (zh) 通过缩放的运动矢量预测
CN109891894A (zh) 使用域变换递归滤波器的视频编译恢复
WO2017124298A1 (zh) 视频编码、解码方法及其帧间预测方法、装置和系统
CN110741638A (zh) 使用残差块能量分布的运动矢量代码化
CN115004703A (zh) 图像和视频压缩的帧内预测
WO2019036080A1 (en) ESTIMATION OF CONSTRAINED MOTION FIELD FOR INTERPRETING
CN110679151B (zh) 用于使用参数化运动模型的视频代码化的方法和设备
US10110914B1 (en) Locally adaptive warped motion compensation in video coding
CN110692247B (zh) 复合运动补偿的预测
CN114792290A (zh) 图像/视频处理
CN118077203A (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
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant