CN111869215B - 受限长距离运动矢量预测方法及装置 - Google Patents

受限长距离运动矢量预测方法及装置 Download PDF

Info

Publication number
CN111869215B
CN111869215B CN201980020414.1A CN201980020414A CN111869215B CN 111869215 B CN111869215 B CN 111869215B CN 201980020414 A CN201980020414 A CN 201980020414A CN 111869215 B CN111869215 B CN 111869215B
Authority
CN
China
Prior art keywords
current
mode
locations
unit
motion vector
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
CN201980020414.1A
Other languages
English (en)
Other versions
CN111869215A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN111869215A publication Critical patent/CN111869215A/zh
Application granted granted Critical
Publication of CN111869215B publication Critical patent/CN111869215B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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/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/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/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/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/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • 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

Landscapes

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

Abstract

本发明涉及视频图像的编码和解码。将运动矢量用作预测值,以对图像中的当前编码单元CU进行预测,其中,所述当前CU在当前编码树单元CTU内。所述运动矢量是从包括运动矢量候选MVC的列表中选取的。所述MVC列表是使用一种模式根据以下内容为所述当前CU生成的:与所述当前CU相对的所述模式中的位置以及所述当前CU在所述当前CTU内的位置,其中,所述模式包括允许运动矢量的位置。从所述模式中选择位置子集,并将位置限制在所述当前CTU内,而排除其它不可用或未存储在缓冲器中的模式位置。可以替代或调整其它排除的模式位置,以使这些模式位置变得可用和/或存储在所述缓冲器中。可以根据与所述被替代/已调整位置相对的排除位置来替代和调整所述排除的模式位置。

Description

受限长距离运动矢量预测方法及装置
技术领域
本发明涉及视频图像的编码和编码,尤其涉及运动预测。
背景技术
数码相机、蜂窝式无线电话、笔记本电脑、广播系统、视频会议系统等各种数字设备能够实现数字视频通信和存储应用。这些应用的最重要和最具挑战性的任务之一就是视频压缩。视频压缩是一个复杂的任务,受制于压缩效率和计算复杂度两个相互矛盾的参数。视频编码标准(例如,ITU-T H.264/AVC或ITU-T H.265/HEVC)能够在压缩效率和计算复杂度两个参数之间实现平衡。为此,几乎所有的视频压缩应用都必须支持视频编码标准。
据证明视频压缩技术(例如,帧间预测、帧内预测和环路滤波)有效果,因此各种视频编码标准(例如,H.264/AVC和H.265/HEVC)中采用视频压缩技术。
视频压缩的基本处理单元通常称为宏块,宏块是大小为16×16或64×64像素等的图像的一部分。最新的视频编码标准H.265/HEVC将编码树单元(Coding Tree Unit,CTU)作为基本处理单元。CTU也称为最大编码单元(largest coding unit,LCU)。在H.265/HEVC中,CTU按照扫描顺序从图像的左上角到右下角依次处理。每个CTU还可以通过四叉树等被划分成更小的编码单元(coding unit,CU)。一个CU包括与帧间和帧内预测信息相关的信息,以及残差。
1.H.265/HEVC标准中的帧间预测的一个重要部分是运动矢量(motion vector,MV)编码。运动矢量通常通过以下两种方案等进行预测编码:
2.一个运动矢量根据运动矢量预测值以及通过运动估计过程得到的运动矢量与该预测值之间的差异进行构建。HEVC标准中的这种MV编码方法称为高级运动矢量预测(advanced motion vector prediction)。
一个运动矢量通过在可配置的候选(预测值)集中进行选择而导出,而无需对运动矢量差异进行编码。这种方法称为合并模式。
在这两种技术中,可以考虑从已经经过编码的运动矢量中构建的大的潜在预测值候选集。在HEVC标准中,有四组运动矢量预测值:空间候选、时间候选、组合双向预测候选和零候选。在编码过程中,从多个候选中选择最佳运动矢量预测值,并将其在候选列表中的索引写入码流中。图6示出了HEVC标准中的空间MVP候选的位置(针对合并模式)的一个示例。
在给定的示例中,MVP候选分别表示为A0、A1、B0、B1和B2。位置Ai表示当前块左边的预测值,位置Bj表示当前块上方的预测值。这里的当前块也称为当前编码单元(codingunit,CU)。需要说明的是,在一般情况下,候选位置可以根据块编码顺序确定。根据该编码顺序,候选位置可以从相邻块(即与当前块相邻的块)的上方、左边、右边和下方选择。HEVC标准中的所有空间MVP候选(针对合并模式和高级运动矢量预测)都属于相邻块。也就是说,这些空间MVP候选与当前块使用同一边界。
发明内容
本发明实施例由独立权利要求的特征定义,并且由从属权利要求的特征定义实施例的其它有利实现方式。
本发明提供了一种装置和方法。所述装置和方法用于:(1)根据当前CU在当前CTU内的位置,对LDMVP模式位置进行额外检查;和/或(2)根据所述当前CU在所述当前CTU内的位置,修改和/或替换LDMVP模式的一些位置;和/或(3)根据所述CU在所述当前CTU内的位置,调整所述LDMVP模式位置中的一些位置。与(1)至(3)中任一对应的方法可以包括在LDMVP列表生成算法(即LDMVP列表生成方法)中。在本发明中,术语“LDMVP位置”、“模式位置”、“LDMVP模式位置”、“模式的位置”和/或“LDMVP模式的位置”用作同义词。
根据本发明的一个方面,提供了一种装置,用于生成包括一个或多个运动矢量候选(motion vector candidate,MVC)的列表。所述装置包括包括处理电路,所述处理电路用于根据以下内容为当前编码单元(coding unit,CU)确定所述一个或多个MVC:与所述当前CU的位置相对的模式中的位置,其中,所述模式定义运动矢量(motion vector,MV)的位置,以及所述当前CU在编码树单元(coding tree unit,CTU)内的位置。
所述运动矢量候选用于对所述当前CU进行运动预测。即,运动矢量的运动信息在相应的候选位置上用于预测。因此,所述运动矢量位置是对应矢量候选块的位置。所述矢量候选块可以是对应于像素块的一个像素/像素点(像素或像素点)和/或多个像素点。换句话说,运动矢量的位置是视频帧(或图像)中的位置或地点,指定运动矢量被分配到的一个或多个像素(或像素点);或者换句话说,运动矢量的位置是运动矢量被分配给的对应矢量候选块(或对应的一个或多个像素点)的位置。
所述当前CU的位置可以是所述当前CU的左上角,这些位置以像素为单位或者是像素块单元。所述块单元可以是2×2像素块或任何其它单元。位于所述当前CTU内的所述当前CU的位置可以是所述当前CU的左上角与所述当前CTU的左上角的(像素/像素点)位置之间的距离。与所述当前CU的位置相对的模式位置可以是预定义的。即,所述相对位置可以设置为预定义值。
根据所述当前CU与模式之间的相对位置信息以及所述CTU内的所述当前CU位置确定所述一个或多个MVC可以改进使用相对位置信息对视频帧中的CU进行预测。具体而言,使用模式中的MV位置提供了有利的效果,即仅使用少量位置,从这些位置中获得和/或获取可能的运动信息。因此,在访问运动信息时,使用由模式定义的、数量比较有限的位置减少了读写操作。因此,少量模式位置数量使得预测效率更高、预测速度更快。
此外,所述模式可以是任何模式,这些模式适用于根据模式位置处的运动矢量确定运动信息。换句话说,所述模式可以根据其在视频帧内相对于当前CU的大小和/或扩展进行调整,并且可以选择或设计为具有特定结构和/或形状。例如,可以生成或确定所述模式(即模式位置),使得所述模式位置具有“方形”、“对角线”、“三角形”或“星形”结构,如图7至图10中的模式示例所示。所述模式不限于图7至图10所示的那些模式,并且可以具有任何其它形状和/或结构,这些形状和/结构适用于限制根据模式在位置处获得的运动信息。因此,使用模式可以使预测更加灵活,以便仅使用由模式位置限制的位置的运动信息。这可以包括可以增加和/或替代等的模式位置。
根据本发明的一个方面,所述装置中的所述处理电路用于为所述当前CU确定所述一个或多个MVC,包括从所述多个模式位置中选择MV位置子集。
即,初始模式(即初始位置)可以进行额外检查,检查之后,可以保留、丢弃和/或改变某些模式位置。换句话说,可以选择一个或多个模式位置。
所述选择MV位置子集可以降低复杂度。即,具体而言,这避免了不必要的数据读/写操作和/或避免访问一些相邻块的数据。因此,另一个技术优势可以是避免存储额外数据,从而可以降低所需的内存。此外,所述选择子集可以进一步适应性调整一些模式位置,进一步提高预测准确性。
在本发明的一个示例性实施例中,所述选择包括从所述多个模式位置中选择在所述当前CTU内的MV位置。
这可以避免对缓冲器(例如,列缓冲器)进行不必要的数据读写,因为所述信息对于所述当前CTU内的位置是可用的。
在本发明的一个示例性实施例中,所述选择MV位置子集通过从所述多个模式位置中排除不可用和/或未存储在缓冲器中的多个MV位置来执行。
即,一些模式位置可以在当前视频帧之外,即该位置大于当前帧的大小。因此,该点的信息并不存在。这还可能导致在生成模式时限制模式的大小/扩展。
对帧中的CU执行编码/解码的顺序(编码和/或解码顺序)也会导致某个位置的运动信息不可用。换句话说,由于CTU的右下区域在稍后的时间进行编码/解码,所以该区域的运动信息在特定时间还不存在。因此,即使在该区域内生成一个位置(即模式的一部分),这个点在该时间还不存在运动信息。
而且,由于可以访问运动信息,所以相应信息也可以不存储在存储器(即缓冲器)中。此种缓冲器可以是列缓冲器(line buffer)等,其读写访问速度快,常常用于存储CTU中的有限区域的运动信息,这些CTU与用于执行运动预测的当前CTU相邻。列缓冲器速度快,为整个缓冲行并行读取和/或写入数据。
排除不可用和/或未存储在缓冲器中的模式位置可以不使用模式位置,因此不可能从不存在所述运动信息的位置中获得运动信息。因此,排除这些点可以进一步将多个模式位置减少到实际具有可用运动信息的位置。因此,这样可以加快预测速度,因为可用于运动预测的模式位置更少。而且,可以避免在所述信息不可用的运动矢量位置处对运动信息进行不必要的读写访问。这使得预测效率更高、预测速度更快。
根据本发明的一个方面,所述处理电路用于为所述当前CU确定所述一个或多个MVC,包括将所述多个排除的MV位置中的一个或多个MV位置替换为替代MV位置,其中,所述替代MV位置根据所述多个排除的MV位置确定,以满足一个或多个预定条件。
即,所述排除和/或丢弃的模式位置中的一个或多个模式位置可以通过在预定条件的限制下替换或计算新位置等方式改变其坐标位置。
替换的是丢弃的位置,并且根据丢弃的位置进行替换,丢弃的位置对应于运动信息不可用和/或未存储在缓冲器中的模式位置。丢弃的位置也可称为去除的位置和/或排除的位置。
相比于原始模式的位置数量,对丢弃的位置进行位置替换可以不减少可能运动矢量候选的位置的数量。换句话说,可能需要足够数量的MV位置来执行高精度和高质量的预测。这可以通过将一些排除的模式位置替换为运动信息可用的位置来实现。这可以保持MV位置的数量接近模式位置的数量。
替换位置根据丢弃的位置确定,使得被替换位置满足一些预定条件。换句话说,使用丢弃位置的位置信息结合一个或多个约束条件来确定被替换位置。这可以提供以下优点:原始模式的位置信息的部分全部和/或部分传递到被替换位置。可以针对视频帧的内容选择原始模式的形状/结构。
根据本发明的一个示例性实施例,所述一个或多个预定义/预定条件包括所述替代MV位置可用和/或存储在所述缓冲器中的条件。
根据本发明的一个示例性实施例,确定所述替代MV位置,以满足所述替代MV位置与所述多个排除的MV位置之间具有最短距离的条件。
术语“距离”是指衡量两点之间沿某一方向的空间间隔大小的度量。空间间隔的单位可以是像素x和/或像素y方向上的多个像素(或像素点),使用像素作为空间度量的单位。该距离可以根据欧几里得范数和/或p范数等度量来计算,其中,p等于或大于1。
“距离”条件是预定条件的一个示例,本发明并不限于此条件。例如,距离条件可以与对应于阈值的距离截止值组合使用。丢弃的位置可以替换为该距离等于或小于截止值的位置。换句话说,该距离可能不是最小的。也可以使用其它选项和或不同条件的组合,使得被替换位置可用和/或存储在缓冲器中。
在最佳场景下,位置替换使得位置的数量与丢弃位置的数量相同,从而保持位置数量。而且,根据被替换位置和丢弃的位置之间的最短距离确定被替换位置,这样可以证明运动矢量候选位置的空间位置接近原始模式的形状/结构(形状和/或结构)。因此,最短距离能够保持原始模式的形状/结构。因此,可以准确且高精度地进行预测。
根据本发明的一个方面,所述装置中的所述处理电路还用于为所述当前CU确定所述一个或多个MVC,包括将所述多个排除的MV位置调整到已调整MV位置,其中,确定所述已调整MV位置为可用和/或存储在所述缓冲器中。
即,丢弃的模式位置要进行调整,因此确定已调整MV位置,使得已调整MV位置可用和/或存储在缓冲器中。由于在本实施例中,所有丢弃的位置均会进行调整,因此,MV候选位置的数量与模式位置的数量相同。换句话说,保持了MV位置的数量。
这可以提供以下优点:使用足够多的候选位置来执行预测,从而提高预测的准确性。
另外或可选地,两个不同的模式位置可以仅由一个位置替代。此时,MVC位置的数量减1。
根据本发明的一个示例性实施例,所述确定已调整MV位置包括沿x方向和/或y方向将所述多个排除的MV位置分配到已分配MV位置,其中,所述x方向是所述当前CTU的宽度方向,所述y方向是所述当前CTU的高度方向。
x和y方向(对应于x和y位置)以像素坐标表示,其中,x像素轴沿CTU的宽度方向,y像素轴沿CTU的高度方向。
因此,可以将丢弃的位置分配给运动信息相对于其x和/或y位置分量中的任一个可用的位置。换句话说,位置分配可以沿任何方向执行。
这可以非常灵活地执行分配,从而可以微调MV候选位置。因此,由于MV候选位置进行了空间微调,可以进一步提高预测准确性。
根据本发明的另一示例性实施例,所述确定包括使用预定方式将一个或多个已分配MV位置中的x位置或y位置重新分配到已重新分配的y位置或x位置,其中,所述一个或多个已分配MV位置具有相同的x位置或相同的y位置。
所述预定方式可以是一种函数。即,例如,重新分配的位置可以使用所述函数进行计算,所述函数的输入是已分配位置。
根据本发明的示例性实施例,所述预定方式为将所述一个或多个已分配MV位置中的y或x分量位移一个预定偏移值。
所述偏移值可以是若干像素,通过将所述偏移值与已调整的y和/或x位置值相加和/或相减,将y和/或x位置(例如,以像素为单位)位移所述偏移值。或者,所述预定方式可以是与y和/或x位置相乘和/或相除的因子。当已调整位置的x和/或y位置相同时,其它方式可以用于重新分配已调整位置。
因此,通过位移已分配位置中的x或y分量中的任一个进行位置的重新分配扩展了已分配位置,这些分配位置可以具有相同的x和/或y位置。换句话说,部分丢弃的位置可以位于位置分配之后的相同位置。对具有相同的x或y位置的已分配位置进行按分量重新分配将这些位置扩展到不同位置,这些位置仍然可用和/或存储在缓冲器中。
这样带来的优点是避免了位置冗余,因为一些候选位置可以位于相同位置,因此提供相同的运动信息。已分配位置的扩展增加了候选位置的数量,这些候选位置处于不同的位置,所以可以具有不同的运动信息。因此,使用足够多的MV候选位置可以更准确地进行预测。
一旦使用本发明提供的上述任一实施例确定了运动矢量候选位置,则检查这些候选位置的运动矢量是否已包括在MVC列表中。如果没有,则运动矢量包括在该列表中。
根据本发明的一个方面,提供了一种用于对视频帧的当前编码单元CU进行编码的编码器。所述编码器包括:根据本发明任一上述方面的装置,用于生成包括一个或多个MVC的列表;帧间预测单元,用于根据所述列表内的所述一个或多个MVC中的至少一个运动矢量(motion vector,MV)确定所述当前CU的预测值;压缩单元,用于使用所述CU的预测值对所述当前CU进行编码。
根据本发明的一个方面,提供了一种用于对视频帧中的当前编码单元(codingunit,CU)进行解码的解码器。所述解码器包括:根据本发明任一上述方面的装置,用于生成包括一个或多个MVC的列表;帧间预测单元,用于根据所述列表内的所述一个或多个MVC中的至少一个运动矢量(motion vector,MV)确定所述当前CU的预测值;解压缩单元,用于使用所述CU的预测值对所述当前CU进行解码。
所述MVC可以用于使用在MVC位置处获得的运动矢量中的运动信息进行运动预测。所述当前CU可以通过计算所述CU与所述预测值之间的差异进行编码和/或解码。可替换地或另外,由于预测值已经接近CU,所以不存在残差,即残差接近零,即使这样,也可以对所述MVC列表的索引进行编码。原则上,也可以在编码器和解码器侧隐式地确定所述列表的索引。
根据本发明的一个方面,提供了一种方法,用于生成包括一个或多个运动矢量候选(motion vector candidate,MVC)的列表。所述方法包括根据以下内容为当前编码单元(coding unit,CU)确定所述一个或多个MVC:与所述当前CU的位置相对的模式的位置,其中,所述模式定义运动矢量(motion vector,MV)的位置,以及所述当前CU在编码树单元(coding tree unit,CTU)内的位置。
根据本发明的一方面,提供了一种用于存储程序的计算机可读非瞬时性介质。所述计算机可读非瞬时性介质包括指令;当所述指令在处理器上执行时,所述处理器执行所述方法步骤。
以下附图和描述详细阐述了一个或多个实施例。其它特征、目的和优点在描述、附图和权利要求中是显而易见的。
附图说明
下文将参考所附附图和示意图更加详细地描述本发明实施例,其中:
图1A为用于实现本发明实施例的视频编码系统的一个示例的框图;
图1B为用于实现本发明实施例的视频编码系统的另一个示例的框图;
图2为用于实现本发明实施例的视频编码器的一个示例的框图;
图3为用于实现本发明实施例的视频解码器的一个示例性结构的框图;
图4为编码装置或解码装置的一个示例的框图;
图5为编码装置或解码装置的另一个示例的框图;
图6示出了HEVC标准中的空间MVP候选(用于合并模式)的位置的示例;
图7示出了称为“方形”LDMVP模式的LDMVP模式的示例;
图8示出了称为“对角线”LDMVP模式的LDMVP模式的示例;
图9示出了称为“三角形”LDMVP模式的LDMVP模式的示例;
图10示出了称为“星形”LDMVP模式的LDMVP模式的示例;
图11为LDMVP列表生成算法的流程图;
图12为程序additionalChecks的流程图;
图13为通过程序additionalChecks修正的LDMVP列表生成算法的流程图;
图14示出了将程序additionalChecks应用于“对角线”模式的第一示例;
图15示出了将程序additionalChecks应用于“对角线”模式的第二示例;
图16示出了将程序additionalChecks应用于“对角线”模式的第三示例;
图17示出了将程序additionalChecks应用于“对角线”模式的第四示例;
图18为程序replacePosition的流程图;
图19为通过程序replacePosition修正的LDMVP列表生成算法的流程图;
图20示出了将程序replacePosition应用于“对角线”模式的第五示例;
图21示出了将程序replacePosition应用于“对角线”模式的第六示例;
图22示出了将程序replacePosition应用于“对角线”模式的第七示例;
图23示出了将程序replacePosition应用于“对角线”模式的第八示例;
图24示出了称为“日字形(sun)”LDMVP模式、包括允许区域R0和R1的LDMVP模式的示例;
图25示出了将“日字形”LDMVP模式划分为不同类的一个示例;
图26示出了将程序adjustCandidatePositions应用于“日字形”模式的一个示例;
图27为程序adjustCandidatePositions的流程图;
在下文,相同参考符号表示相同特征或至少在功能上等效的特征,除非另有明确规定。
具体实施方式
以下描述中,参考组成本发明一部分并以说明的方式示出本发明实施例的具体方面或可以使用本发明实施例的具体方面的附图。应理解,本发明实施例可以在其它方面中使用,并且可以包括附图中未描绘的结构或逻辑变化。因此,以下详细描述不应以限制性的意义来理解,且本发明的范围由所附权利要求书界定。
例如,应理解,结合所描述方法的揭示内容可以对用于执行所述方法的对应设备或系统也同样适用,且反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括功能单元一个或多个等单元,来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元,其中每个都执行多个步骤中的一个或多个),即使附图中未明确描述或说明这种一个或多个单元。另一方面,例如,如果根据功能单元等一个或多个单元描述具体装置,则对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,一个步骤执行一个或多个单元的功能,或多个步骤,其中每个都执行多个单元中的一个或多个单元的功能),即使图中未明确描述或说明这种一个或多个步骤。进一步,应理解的是,除非另外明确说明,本文中所描述的各示例性实施例和/或方面的特征可以相互组合。
视频编码通常是指处理组成视频或视频序列的图像序列。在视频编码领域,术语“帧(frame)”与“图像(picture/image)”可以用作同义词。视频编码(或总称为编码)包括视频编码和视频解码两部分。视频编码在源侧执行,通常包括处理(例如,通过压缩)原始视频图像以减少表示该视频图像所需的数据量(从而更高效存储和/或传输)。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重建视频图像。实施例涉及的视频图像(或总称为图像)“编码”应理解为视频图像或相应视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码(CODEC)(编码和解码)。
在无损视频编码情况下,可以重建原始视频图像,即重建的视频图像与原始视频图像具有相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)。在有损视频编码情况下,通过量化等执行进一步压缩,来减少表示视频图像的数据量,而解码器侧无法完全重建视频图像,即重建的视频图像的质量比原始视频图像的质量更低或更差。
几个视频编码标准属于“有损混合型视频编解码器”(即,将像素点域中的空间预测和时间预测与变换域中用于应用量化的2D变换编码结合)。视频序列中的每个图像通常分割成不重叠的块集合,通常在块层级上执行编码。换句话说,在编码器侧,通常在块(视频块)层级对视频进行处理(即编码),例如,通过空间(帧内)预测和/或时间(帧间)预测来生成预测块;从当前块(当前处理的块/待处理的块)中减去预测块以获取残差块;在变换域中对残差块进行变换并量化残差块,以减少待传输(压缩)的数据量,而解码器侧对经编码或压缩的块进行相对于编码器的逆处理,以重建用于表示的当前块。另外,编码器和解码器处理步骤相同,使得编码器和解码器生成相同的预测(例如,帧内预测和帧间预测)和/或重建,用于对后续块进行处理(即编码)。
以下实施例结合图1至图3描述了视频编码系统10、视频编码器20和视频解码器30。
图1A为示例性编码系统10的示意性框图。编码系统10可以是使用本申请技术的视频编码系统10(或简称为编码系统10)。视频编码系统10中的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)为一种示例,可以为使用本申请中描述的各种示例执行技术的设备。
如图1A中所示,编码系统10包括源设备12,源设备12用于将编码图像数据21提供给目的地设备14等,以对编码图像数据13进行解码。
源设备12包括编码器20,并且可以另外(即,可选地)包括图像源16、预处理器(或预处理单元)18(例如,图像预处理器18)和通信接口或通信单元22。
图像源16可以包括或者可以是任何类型的用于捕获真实世界图像等的图像捕获设备,和/或任何类型的图像生成设备(例如,用于生成计算机动画图像的计算机图形处理器);或者任何类型的用于获取和/或提供真实世界图像、计算机动画图像(例如,屏幕内容、虚拟现实(virtual reality,VR)图像)和/或其任何组合(例如,增强现实(augmentedreality,AR)图像)的设备。图像源可以为任何类型的存储任一上述图像的存储器(memory/storage)。
为了区分预处理器18和预处理单元18执行的处理,图像或图像数据17也可以称为原始图像或原始图像数据17。
预处理器18用于接收(原始)图像数据17并对图像数据17执行预处理,以获得预处理图像19或预处理图像数据19。预处理器18执行的预处理可以包括修剪、颜色格式转换(例如,从RGB转换为YCbCr)、调色或去噪等。可以理解的是,预处理单元18可以是可选组件。
视频编码器20用于接收预处理图像数据19并提供编码图像数据21(将结合图2等进一步详细描述)。
源设备12中的通信接口22可以用于接收编码图像数据21并通过通信信道13将编码图像数据21(或对编码图像数据21进一步处理后得到的数据)传输到另一设备(例如,目的地设备14)或任何其它设备,以便进行存储或直接重建。
目的地设备14包括解码器30(例如,视频解码器30),并且可以另外(即,可选地)包括通信接口或通信单元28、后处理器32(或后处理单元32)和显示设备34。
目的地设备14中的通信接口28用于直接从源设备12或存储设备(例如,编码图像数据存储设备)等任何其它源等接收编码图像数据21(或对编码图像数据21进一步处理后得到的数据),并将编码图像数据21提供给解码器30。
通信接口22和通信接口28可以用于通过源设备12与目的地设备14之间的直接通信链路(例如,直接有线或无线连接)或者通过任何类型的网络(例如,有线网络、无线网络或其任何组合,或者任何类型的私网和公网或其任何类型的组合)传输或接收编码图像数据21或编码数据13。
例如,通信接口22可以用于将编码图像数据21封装成适当的格式(例如,数据包),和/或通过任何类型的传输编码或处理方式来处理编码图像数据,以便通过通信链路或通信网络进行传输。
例如,与通信接口22对应的通信接口28可以用于接收传输数据并通过任何类型的对应传输解码或处理和/或解封装方式来处理传输数据,以获得编码图像数据21。
通信接口22和通信接口28均可以配置为如图1A中从源设备12指向目的地设备14的通信信道13的箭头所指示的单向通信接口,或者配置为双向通信接口,并且可以用于发送和接收消息等,以建立连接,确认并交换与通信链路和/或数据传输(例如,编码图像数据传输)相关的任何其它信息,等等。
解码器30用于接收编码图像数据21并提供解码图像数据31或解码图像31(下文将结合图3或图5等进一步详细描述)。
目的地设备14中的后处理器32用于对解码图像数据31(还称为重建图像数据)(例如,解码图像31)进行后处理,以获得后处理图像数据33(例如,后处理图像33)。后处理单元32执行的后处理可以包括颜色格式转换(例如,从YCbCr转换为RGB)、调色、修剪或重采样,或者任何其它处理,以便提供解码图像数据31以供显示设备34等显示,等等。
目的地设备14中的显示设备34用于接收后处理图像数据33,以向用户或观看者等显示图像。显示设备34可以是或者可以包括任何类型的显示器(例如,集成或外部显示器或显示屏),以表示重建图像。例如,显示器可以包括液晶显示器(liquid crystal display,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微LED显示器、硅基液晶(liquid crystal on silicon,LCoS)、数字光处理器(digital light processor,DLP)或任何类型的其它显示器。
尽管图1A示出了源设备12和目的地设备14作为单独的设备,但是在实施例中,设备还可以同时包括源设备12和目的地设备14或同时包括源设备310和目的地设备320的功能,即源设备310或对应的功能以及目的地设备320或对应的功能。在这些实施例中,可以使用相同的硬件和/或软件或使用单独的硬件和/或软件或其任何组合来实施源设备12或对应的功能以及目的地设备14或对应的功能。
根据描述,图1A所示的源设备12和/或目的地设备14中的不同单元或功能的存在和划分可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。
编码器20(例如,视频编码器20)或解码器30(例如,视频解码器30)或者编码器20和解码器30两者可以通过如图1B所示的处理电路实现,处理电路可以是一个或多个微处理器,一个或多个数字信号处理器(digital signal processor,DSP)、一个或多个专用集成电路(application-specific integrated circuit,ASIC)、一个或多个现场可编程门阵列(field-programmable gate array,FPGA)、一个或多个离散逻辑、一个或多个硬件、视频编码专用处理器或其任意组合。编码器20可以通过处理电路46实现,以体现结合图2的编码器20所描述的各种模块和/或本文描述的任何其它编码器系统或子系统。解码器30可以通过处理电路46实现,以体现结合图3的解码器30所描述的各种模块和/或本文描述的任何其它解码器系统或子系统。处理电路可以用于执行下文描述的各种操作。如图5所示,如果上述技术部分在软件中实现,一种设备可以将软件指令存储在合适的非瞬时性计算机可读存储介质中,并且可以使用一个或多个处理器在硬件中执行这些指令,以执行本发明中的技术。视频编码器20或视频解码器30可以集成为单个设备中的组合编码器/解码器(CODEC)的一部分,可以如图1B所示。
源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持设备或固定设备,例如,笔记本电脑/膝上型电脑、手机、智能手机、平板或平板电脑、摄像机、台式电脑、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏机、视频流设备(例如,内容业务服务器或内容分发服务器)、广播接收器设备等,并且可以不使用或者可以使用任何类型的操作系统。在一些情况下,源设备12和目的地设备14可以用于无线通信。因此,源设备12和目的地设备14可以是无线通信设备。
在一些情况下,图1A所示的视频编码系统10仅仅是示例性的,本申请中的技术可以适用于编码设备与解码设备之间不一定包括任何数据通信的视频编码设置(例如,视频编码或视频解码)。在其它示例中,从本地存储器中检索数据,通过网络流式传输该数据,等等。视频编码设备可以对数据进行编码并将数据存储到存储器中,和/或视频解码设备可以从存储器中检索数据并对数据进行解码。在一些示例中,编码和解码由相互不通信而只是编码数据到存储器和/或从存储器中检索并解码数据的设备来执行。
为便于描述,本文参考高效视频编码(High-Efficiency Video Coding,HEVC)或通用视频编码(versatile video coding,VVC)参考软件描述了本发明实施例,VVC参考软件下一代视频编码标准,由ITU-T视频编码专家组(Video Coding Experts Group,VCEG)和ISO/IEC运动图像专家组(Motion Picture Experts Group,MPEG)的视频编码联合协作团队(Joint Collaboration Team on Video Coding,JCT-VC)开发。本领域普通技术人员应理解本发明实施例不限于HEVC或VVC。
编码器和编码方法
图2为用于实现本申请技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波单元220、解码图像缓冲器(decoded picture buffer,DPB)230、模式选择单元260、熵编码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(图中未示出)。图2所示的视频编码器20也可以称为混合视频编码器或基于混合视频编解码器的视频编码器。
残差计算单元204、变换处理单元206、量化单元208和模式选择单元260可以形成编码器20的正向信号路径,而反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、帧间预测单元244和帧内预测单元254可以形成视频编码器20的反向信号路径。视频编码器20的反向信号路径与解码器(参见图3中的视频解码器30)的信号路径对应。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
图像和图像分割(图像和块)
编码器20可以用于通过输入端201等接收图像17(或图像数据17)。图像17可以是组成视频或视频序列的一系列图像中的图像。接收到的图像或图像数据也可以是预处理图像19(或预处理图像数据19)。为了简单起见,以下描述使用图像17。图像17也可以称为当前图像或待编码图像(特别是在视频编码中,为了将当前图像与其它图像(例如,同一视频序列(即,也包括当前图像的视频序列)中的先前编码和/或解码的图像)区分开)。
(数字)图像为或者可以看作具有强度值的像素点构成的二维数组或矩阵。数组中的像素点也可以称为像素(pixel或pel)(图像元素的简称)。数组或图像在水平方向和垂直方向(或轴)上的像素点的数量限定了图像的大小和/或分辨率。通常采用三种颜色分量来表示颜,即图像可以表示为或者可以包括三个像素点数组。在RGB格式或颜色空间中,图像包括对应的红色、绿色和蓝色像素点数组。但是,在视频编码中,每个像素通常由亮度和色度格式或在颜色空间中表示,例如,YCbCr,包括由Y指示(有时也用L指示)的亮度分量以及由Cb和Cr指示的两个色度分量。亮度(或简称luma)分量Y表示亮度或灰度级强度(例如,像灰度图像),而两个色度(或简称chroma)分量Cb和Cr表示色度或颜色信息分量。因此,YCbCr格式的图像包括由亮度像素点值(Y)构成的亮度像素点数组和两个由色度值(Cb和Cr)构成的色度像素点数组。RGB格式的图像可以转换或变换为YCbCr格式,反之亦然。该过程也称为颜色变换或颜色转换。如果图像是黑白的,则该图像可以只包括亮度像素点数组。相应地,一个图像可以是黑白格式的亮度像素点数组或4:2:0、4:2:2和4:4:4颜色格式的亮度像素点数组和两个对应的色度像素点数组。
在实施例中,视频编码器20可以包括图像分割单元(图2中未示出),所述图像分割单元用于将图像17分割成多个(通常为不重叠的)图像块203。这些块也可以称为根块、宏块(H.264/AVC)或编码树块(coding tree block,CTB)或编码树单元(coding tree unit,CTU)(H.265/HEVC和VVC)。图像分割单元可以用于对视频序列中的所有图像使用相同的块大小和定义块大小的对应栅格,或者用于在图像或图像子集或图像群组之间更改块大小,并将每个图像分割成对应的块。
在其它实施例中,视频编码器可以用于直接接收图像17中的块203,例如,接收构成图像17的一个块、几个块或所有块。图像块203也可以称为当前图像块或待编码图像块。
与图像17类似,图像块203同样是或者可以看作是具有强度值(像素点值)的像素点组成的二维数组或矩阵,但是块103的尺寸比图像17的尺寸小。换句话说,块203可以包括一个像素点数组(例如,黑白图像17情况下的亮度数组,或者彩色图像情况下的亮度或色度数组)或三个像素点数组(例如,彩色图像17情况下的一个亮度数组和两个色度数组)或任何其它数量和/或类型的数组等,取决于所采用的颜色格式。块203在水平方向和垂直方向(或轴)上的像素点的数量限定了块203的大小。因此,一个块可以是M×N(M列×N行)像素点数组或者M×N变换系数数组。
在实施例中,图2所示的视频编码器20可以用于逐块对图像17进行编码,例如,对每个块203执行编码和预测。
在实施例中,图2所示的视频编码器20还可以用于使用条带(也称为视频条带)对图像进行分割和/或编码。一个图像可以分割成一个或多个条带(通常为不重叠的)或使用一个或多个条带(通常为不重叠的)进行编码,每个条带可以包括一个或多个块(例如,CTU)。
在实施例中,图2所示的视频编码器20还可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或编码。一个图像可以分割成一个或多个分块组(通常为不重叠的)或使用一个或多个分块组(通常为不重叠的)进行编码;每个分块组可以包括一个或多个块(例如,CTU)或一个或多个分块等;每个分块可以为矩形等,可以包括一个或多个完整或部分块(例如,CTU)等。
残差计算
残差计算单元204用于通过以下等方式根据图像块203和预测块265(下文将详细描述预测块265)来计算残差块205(还称为残差205):逐个像素点(逐个像素)从图像块203的像素点值中减去预测块265的像素点值,以获得像素点域中的残差块205。
变换
变换处理单元206可以用于对残差块205的像素点值进行离散余弦变换(discretecosine transform,DCT)或离散正弦变换(discrete sine transform,DST)等变换,以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,可以表示变换域中的残差块205。
变换处理单元206可以用于进行DCT/DST整数化近似,例如,针对H.265/H.265指定的核心变换。与正交DCT变换相比,此类整数化近似通常通过某一因子进行缩放。为了维持经过正变换和逆变换处理的残差块的范数,使用额外缩放因子作为变换过程的一部分。缩放因子通常是根据某些约束条件来选择的,例如,缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实现成本之间的权衡等。例如,通过逆变换处理单元212等为逆变换(在视频解码器30侧,通过逆变换处理单元312等为对应的逆变换)指定具体的缩放因子;相应地,可以在编码器20侧,通过变换处理单元206等为正变换指定对应的缩放因子。
在实施例中,视频编码器20(具体是变换处理单元206)可以用于直接输出或在熵编码单元270经过编码或压缩等之后输出变换参数(例如,一种或多种变换),使得视频解码器30可以接收并使用变换参数进行解码,等等。
量化
量化单元208用于通过进行标量量化或矢量量化等对变换系数207进行量化,以获得量化变换系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。
量化过程可以减少与部分或全部变换系数207有关的位深度。例如,可以在量化期间将n位变换系数向下取整到m位变换系数,其中,n大于m。可以通过调整量化参数(quantization parameter,QP)修改量化程度。例如,对于标量量化,可以应用不同程度的缩放来实现较细或较粗的量化。较小的量化步长对应于较细的量化,而较大的量化步长对应于较粗的量化。可以通过量化参数(quantization parameter,QP)指示合适的量化步长。例如,量化参数可以为合适的量化步长的预定义集合的索引。例如,小的量化参数可以对应于精细量化(小的量化步长),大的量化参数可以对应于粗糙量化(大的量化步长),反之亦然。量化可以包括除以量化步长,而通过反量化单元210等执行的对应和/或反解量化可以包括乘以量化步长。根据HEVC等一些标准的实施例可以用于使用量化参数来确定量化步长。通常,可以根据量化参数使用包含除法的方程式的定点近似来计算量化步长。可以引入其它缩放因子来进行量化和解量化,以恢复可能由于在用于量化步长和量化参数的方程式的定点近似中使用的缩放而修改的残差块的范数。在一个示例性实现方式中,可以合并逆变换和反量化的缩放。或者,可以使用自定义量化表,并在码流等中将量化表从编码器向解码器指示。量化是有损操作,其中,量化步长越大,损耗越大。
在实施例中,视频编码器20(具体是量化单元208)可以用于直接输出或在熵编码单元270经过编码等之后输出量化参数(quantization parameter,QP),使得视频解码器30可以接收并使用量化参数进行解码,等等。
反量化
反量化单元210用于通过以下等方式对量化系数进行量化单元208的反量化,以获得解量化系数211:根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可以称为解量化残差系数211,对应于变换系数207,但是由于量化造成损耗,解量化系数111通常与变换系数不相同。
逆变换
逆变换处理单元212用于进行变换处理单元206进行的变换的逆变换,例如,逆离散余弦变换(discrete cosine transform,DCT)或逆离散正弦变换(discrete sinetransform,DST),以获得像素点域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可以称为变换块213。
重建
重建单元214(例如,加法器或求和器214)用于通过将重建残差块213的像素点值和预测块265的像素点值相加,将变换块213(即重建残差块213)增加到预测块265,以获得像素点域中的重建块215。
滤波
环路滤波单元220(或简称“环路滤波器”220)用于对重建块215进行滤波,以获得滤波块221,或通常用于对重建像素点进行滤波,以获得滤波像素点。例如,环路滤波单元用于顺利进行像素转变或提高视频质量。环路滤波单元220可以包括一个或多个环路滤波器,例如,去块滤波器、样本自适应偏移(sample-adaptive offset,SAO)滤波器或一个或多个其它滤波器,包括双边滤波器、自适应环路滤波器(adaptive loop filter,ALF)、锐化平滑滤波器或协同滤波器或其任意组合等。虽然环路滤波单元220在图2中示为环内滤波器,但是在其它配置中,环路滤波单元220可以实现为环后滤波器。滤波块221也可称为滤波重建块221。
在实施例中,视频编码器20(具体是环路滤波单元220)可以用于直接输出或在熵编码单元270经过编码等之后输出环路滤波器参数(例如,样本自适应偏移信息),使得解码器30可以接收并使用相同的环路滤波器参数或相应的环路滤波器进行解码,等等。
解码图像缓冲器
解码图像缓冲器(decoded picture buffer,DPB)230可以为存储参考图像(或者通常为参考图像数据)供视频编码器20编码视频数据志勇的存储器。DPB 230可以由多种存储器设备中的任一个组成,例如,动态随机存取存储器(dynamic random access memory,DRAM)(包括同步DRAM(synchronous DRAM,SDRAM)、磁阻式RAM(magnetoresistive RAM,MRAM)、电阻式RAM(resistive RAM,RRAM))或其它类型的存储器设备。解码图像缓冲器(decoded picture buffer,DPB)230可以用于存储一个或多个滤波块221。解码图像缓冲器230还可以用于存储同一当前图像或不同图像(例如,先前重建的图像)中的其它先前滤波的块(例如,先前重建的滤波块221),并且可以提供完整的先前重建(即解码)的图像(以及对应的参考块和像素点)和/或部分重建的当前图像(以及对应的参考块和像素点),以进行帧间预测。如果重建块215未由环路滤波单元220进行滤波,解码图像缓冲器(decodedpicture buffer,DPB)230还可以用于存储一个或多个未滤波重建块215(或者通常为未滤波重建像素点),或者存储对重建块或像素点进行任何其它进一步处理之后得到的版本。
模式选择(分割和预测)
模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲器230或其它缓冲器(例如,列缓冲器,图中未示出)接收或获取原始块203(当前图像17中的当前块203)等原始图像数据以及重建图像数据(例如,同一(当前)图像和/或一个或多个先前解码的图像中的滤波和/或未滤波重建像素点或块)。重建图像数据用作参考图像数据进行帧间预测或帧内预测等预测,以获得预测块265或预测值265。
模式选择单元260可以用于为当前块预测模式(不包括分割)确定或选择一种分割以及确定或选择一个预测模式(例如,帧内或帧间预测模式),并生成对应的预测块265。使用预测块265来计算残差块205以及对重建块215进行重建。
在实施例中,模式选择单元260可以用于选择分割和预测模式(例如,从预测单元260支持或可使用的预测模式中选择),所述分割和预测模式提供最佳匹配或者说最小残差(最小残差是指传输或存储中更好的压缩),或提供最小信令开销(最小信令开销是指传输或存储中更好的压缩),或者同时考虑或平衡以上两者。模式选择单元260可以用于根据率失真优化(rate distortion Optimization,RDO)确定分割和预测模式,即选择提供最小率失真优化的预测模式。本上下文中的“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,而是也可以指满足终止或选择标准,例如,值超过或低于阈值或其它约束条件,这可能导致“次优选择”,但是降低了复杂度、减少了处理时间。
换句话说,分割单元262可以用于通过迭代使用四叉树(quad-tree,QT)分割、二叉树(binary-tree,BT)分割或三叉树(triple-tree,TT)分割或其任意组合将块203分割成较小的块部分或子块(这些又构成块),并且用于对块部分或子块分别执行预测等。模式选择包括选择分割块203的树结构,将预测模式应用于每个块部分或子块。
下文将详细地说明由示例性视频编码器20执行的分割(例如,由分割单元260执行)和预测处理(由帧间预测单元244和帧内预测单元254执行)。
分割
分割单元262可以将当前块203分割(或划分)成更小的部分,例如,方形或矩形大小的较小块。可以将这些较小块(也可以称为子块)进一步分割成甚至更小的部分。这也称为树分割或分层树分割。根树级别0(层次级别0,深度0)等的根块可以递归地进行分割,例如,分割成下一个低树级的两个或更多块(例如,树级1(层级1,深度1)的节点);这些块可以再次分割成下一个低级(例如,树级2(层级2,深度2))的两个或更多块,以此类推,直到分割终止,因为满足了终止标准,例如,达到最大树深度或最大块大小。未进一步分割的块也称为树的叶块或叶节点。分割成两部分的树称为二叉树(binary-tree,BT),分割成三部分的树称为三叉树(ternary-tree,TT),分割成四部分的树称为四叉树(quad-tree,QT)。
如前所述,本文使用的术语“块”可以是图像的一部分,特别是方形或矩形部分。例如,结合HEVC和VVC,块可以是或者可以对应于编码树单元(coding tree unit,CTU)、编码单元(coding unit,CU)、预测单元(prediction unit,PU)和变换单元(transform unit,TU)和/或对应的块,例如,编码树块(coding tree block,CTB)、编码块(coding block,CB)、变换块(transform block,TB)或预测块(prediction block,PB)。
例如,编码树单元(coding tree unit,CTU)可以是或者可以包括由具有三个像素点数组的图像的亮度像素点构成的一个CTB、由该图像的色度像素点构成的两个对应CTB,或者由黑白图像或使用三个单独颜色平面和语法结构进行编码的图像的像素点构成的一个CTB。这些语法结构用于对像素点进行编码。相应地,编码树块(coding tree block,CTB)可以为N×N像素点块,其中,N可以设为某个值,从而将分量划分成多个CTB,这就是分割。编码单元(coding unit,CU)可以为或者可以包括由图像(具有三个像素点数组)的亮度像素点构成的一个编码块、由该图像的色度像素点构成的两个对应编码块,或者由黑白图像或使用三个单独颜色平面和语法结构进行编码的图像的像素点构成的一个编码块,这些像素点使用语法结构进行编码。相应地,编码块(coding block,CB)可以为M×N像素点块,其中,M和N可以设为某个值,从而将CTB划分成多个编码块,这就是分割。
在实施例中,根据HEVC等,编码树单元(coding tree unit,CTU)可以通过表示为编码树的四叉树结构划分成多个CU。在CU级决定是通过帧间(时间)预测还是帧内(空间)预测对图像区域进行编码。每个CU可以根据PU划分类型进一步划分成一个、两个或四个PU。一个PU内执行相同的预测过程,并以PU为单位将相关信息传输到解码器。在通过根据PU划分类型执行预测过程获得残差块之后,可以根据与用于CU的编码树类似的其它四叉树结构将CU分割成变换单元(transform unit,TU)。
在实施例中,根据当前研发中的称为通用视频编码(Versatile Video Coding,VVC)的最新视频编码标准等,使用四叉树和二叉树(quad-tree and binary tree,QTBT)分割等分割编码块。在QTBT块结构中,一个CU可以为方形或矩形。例如,首先,通过四叉树结构分割编码树单元(coding tree unit,CTU)。其次,通过二叉树或三叉(ternary/triple)树结构分割四叉树叶节点。分割树叶节点称为编码单元(coding unit,CU),这种分段(segmentation)用于预测和变换处理,而不进行任何进一步分割。即,在QTBT编码块结构中,CU、PU和TU的块大小相同。同时,还提出将三叉树分割等多次分割与QTBT块结构结合使用。
在一个示例中,视频编码器20中的模式选择单元260可以用于执行本文描述的分割技术的任意组合。
如上所述,视频编码器20用于从(例如,预定的)预测模式集合中确定或选择最好或最优的预测模式。预测模式集合可以包括帧内预测模式和/或帧间预测模式等。
帧内预测
帧内预测模式集合可以包括35种不同的帧内预测模式,例如,DC(或均值)模式和平面模式等非方向性模式,或者如VVC等定义的方向性模式,或者可以包括67种不同的帧内预测模式,例如,DC(或均值)模式和平面模式等非方向性模式或者如针对VVC等定义的方向性模式。
帧内预测单元254用于根据帧内预测模式集合的帧内预测模式,使用同一当前图像中的相邻块的重建像素点生成帧内预测块265。
帧内预测单元254(或通常为模式选择单元260)还用于将帧内预测参数(或通常为指示为块选择的帧内预测模式的信息)以语法元素266的形式输出到熵编码单元270,用于将帧内预测参数包含到编码图像数据21中,使得视频解码器30可以接收并使用预测参数进行解码,等等。
帧间预测
(可能的)帧间预测模式集合取决于可用参考图像(即,存储在DPB 230等中的之前至少部分解码的图像)和其它帧间预测参数,例如,取决于是否使用整个参考图像或只使用参考图像的一部分(例如,当前块的区域附近的搜索窗口区域)来搜索最佳匹配参考块,和/或取决于是否使用像素插值(例如,二分之一/半像素插值和/或四分之一像素插值)。
除上述预测模式外,还可以使用跳过模式和/或直接模式。
帧间预测单元244可以包括运动估计(motion estimation,ME)单元和运动补偿(motion compensation,MC)单元(图2中均未示出)。运动估计单元可以用于接收或获取图像块203(当前图像17中的当前图像块203)和解码图像231,或者至少一个或多个先前重建的块(例如,一个或多个其它/不同先前解码的图像231中的重建块),以进行运动估计。例如,视频序列可以包括当前图像和先前解码的图像231,或者换句话说,当前图像和先前解码的图像231可以是组成视频序列中的图像序列的一部分或组成该图像序列。
例如,编码器20可以用于多个其它图像中的同一或不同图像中的多个参考块中获取参考块,并将参考图像(或参考图像索引等)和/或参考块的位置(x坐标和y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元。这种偏移也称为运动矢量(motion vector,MV)。
运动补偿单元用于获取或接收帧间预测参数,并根据或使用帧间预测参数执行帧间预测,以获得帧间预测块265。由运动补偿单元执行的运动补偿可以包含根据通过运动估计确定的运动/块矢量来取出或生成预测块,可能包含对子像素精度执行插值。插值滤波可以从已知像素的像素点生成额外像素的像素点,从而潜在地增加可用于编码图像块的候选预测块的数量。一旦接收到用于当前图像块的PU的运动矢量,运动补偿单元可以在其中一个参考图像列表中定位运动矢量指向的预测块。
运动补偿单元还可以生成与块和视频条带相关的语法元素,以供视频解码器30在解码视频条带中的图像块时使用。除条带和相应语法元素之外,可以生成或使用分块组和/或分块以及相应的语法元素。
熵编码
熵编码单元270用于对量化系数209、帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素熵执行或不执行(无压缩)编码算法或方案(例如,可变长度编码(variable length coding,VLC)方案、上下文自适应VLC(context adaptive VLC scheme,CAVLC)方案、算术编码方案、二值化,上下文自适应二进制算术编码(context adaptivebinary arithmetic coding,CABAC)、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binary arithmetic coding,SBAC)、概率区间分割熵(probability interval partitioning entropy,PIPE)编码或其它熵编码方法或技术),以获得可以通过输出端272以编码码流21等形式输出的编码图像数据21,使得视频解码器30可以接收并使用这些参数进行解码,等等。可以将编码码流21传输到视频解码器30,或者将其存储在存储器中稍后由视频解码器30传输或检索。
视频编码器20的其它结构变型可以用于对视频流进行编码。例如,基于非变换的编码器20可以在没有针对某些块或帧的变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,在编码器20中,量化单元208和反量化单元210可以组合成一个单元。
解码器和解码方法
图3示出了用于实现本申请技术的视频解码器30的一个示例。视频解码器30用于接收编码图像数据21(例如,编码码流21),以获得解码图像331。例如,编码图像数据21由编码器20编码。该编码图像数据或码流包括用于对该编码图像数据进行解码的信息,该信息可以是表示编码视频条带(和/或分块组或分块)中的多个图像块的数据,以及相关语法元素。
在图3的该例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如,求和器314)、环路滤波器320、解码图像缓冲器(decoded picturebuffer,DPB)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以为或者可以包括运动补偿单元。在一些示例中,视频解码器30可以执行一种解码过程,该解码过程总体上与结合图2中的视频编码器100描述的编码过程相反。
如参照编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。相应地,反量化单元310在功能上可以与反量化单元110相同,逆变换处理单元312在功能上可以与逆变换处理单元212相同,重建单元314在功能上可以与重建单元214相同,环路滤波器320在功能上可以与环路滤波器220相同,解码图像缓冲器330在功能上可以与解码图像缓冲器230相同。因此,对视频编码器20的相应单元和功能进行的解释说明相应地适用于视频解码器30的相应单元和功能。
熵解码
熵解码单元304用于解析码流21(或总称为编码图像数据21)并对编码图像数据21执行熵解码等,以获得量化系数309和/或已解码的编码参数(图3中未示出)等,这些参数可以是帧间预测参数(例如,参考图像索引和运动矢量)、帧内预测参数(例如,帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其它语法元素中的任一个或全部。熵解码单元304可以用于使用解码算法或方案,这些解码算法或方案与参照编码器20中的熵编码单元270描述的编码方案对应。熵解码单元304还可以用于将帧间预测参数、帧内预测参数和/或其它语法元素提供给模式应用单元360以及将其它参数提供给解码器30中的其它单元。视频解码器30可以接收视频条带级和/或视频块级的语法元素。除条带和相应的语法元素之外,还可以接收或使用分块组和/或分块以及相应的语法元素。
反量化
反量化单元310可以用于从编码图像数据21中获取量化参数(quantizationparameters,QP)(或总称为反量化相关信息)和量化系数(例如,通过熵解码单元304等解析和/或解码),并用于根据这些量化参数对解码量化系数309进行反量化,以获得解量化系数311。解量化系数311也可以称为变换系数311。反量化过程可以包括使用由视频编码器20为视频条带(或分块或分块组)中的每个视频块确定的量化参数来确定量化程度,同理,还确定需要进行的反量化的程度。
逆变换
逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,以获得像素点域中的重建残差块213。重建残差块213也可以称为变换块313。上述变换可以为逆变换,例如逆DCT、逆DST、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从编码图像数据21中获取变换参数或相应的信息(例如,通过熵解码单元304等解析和/或解码),确定要对解量化系数311进行的变换。
重建
重建单元314(例如,加法器或求和器314)可以用于通过将重建残差块313的像素点值和预测块365的像素点值相加等方式,将重建残差块313增加到预测块365,以获得像素点域中的重建块315。
滤波
环路滤波单元320(在编码环路中或在编码环路之后)用于对重建块315进行滤波,以获得滤波块321,从而顺利进行像素转变或提高视频质量等等。环路滤波单元320可以包括一个或多个环路滤波器,例如,去块滤波器、样本自适应偏移(sample-adaptive offset,SAO)滤波器或者一个或多个其它滤波器,包括双边滤波器、自适应环路滤波器(adaptiveloop filter,ALF)、锐化平滑滤波器或协同滤波器或其任意组合等。虽然环路滤波单元320在图3中示为环内滤波器,但是在其它配置中,环路滤波单元320可以实现为环后滤波器。
解码图像缓冲器
图像中的解码视频块321之后存储在解码图像缓冲器330中。解码图像缓冲器330存储解码图像331作为参考图像,后续对其它图像进行运动补偿和/或输出或显示。
解码器30用于通过输出端312等输出解码图像311,显示给用户或供用户观看。
预测
帧间预测单元344可以与帧间预测单元244相同(特别是与运动补偿单元相同),帧内预测单元354在功能上可以与帧内预测单元254相同,并根据从编码图像数据21中获取的分割和/或预测参数或相应的信息(例如,通过熵解码单元304等解析和/或解码)决定进行划分或分割并执行预测。模式应用单元360可以用于根据重建图像、块或相应的像素点(滤波或未滤波像素点)对每个块执行预测(帧内预测或帧间预测),以获得预测块365。
当将视频条带编码为帧内编码(I)条带时,模式应用单元360中的帧内预测单元354用于指示的帧内预测模式和从当前图像中的先前已解码的块中获取的数据为当前视频条带中的图像块生成预测块365。当视频图像编码为帧间编码(即,B或P)条带时,模式应用单元360中的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收到的运动矢量和其它语法元素为当前视频条带中的视频块生成预测块365。对于帧间预测,预测块可以从多个参考图像列表中的一个参考图像列表内的多个参考图像中的一个参考图像产生。视频解码器30可以根据存储在DPB 330中的参考图像,使用默认构建技术来构建参考帧列表:列表0和列表1。除条带(例如,视频条带)之外,相同或类似的过程可以应用于分块组(例如,视频分块组)和/或分块(例如,视频分块),例如,视频可以使用I、P或B分块组和/或分块进行编码。
模式应用单元360用于通过解析运动矢量或相关信息和其它语法元素为当前视频条带中的视频块确定预测信息,并使用该预测信息为正在解码的当前视频块生成预测块。例如,模式应用单元360使用接收到的一些语法元素来确定预测模式(例如,帧内预测或帧间预测)、帧间预测条带类型(例如,B条带、P条带或GPB条带)、条带中的一个或多个参考图像列表的构建信息、条带中的每个帧间编码视频块的运动矢量、条带中的每个帧间编码视频块的帧间预测状态以及其它信息,从而对当前视频条带中的视频块进行解码。上述预测模式用于对视频条带中的视频块进行编码。除条带(例如,视频条带)之外,相同或类似的过程可以应用于分块组(例如,视频分块组)和/或分块(例如,视频分块),例如,视频可以使用I、P或B分块组和/或分块进行编码。
在实施例中,图3所示的视频解码器30可以用于使用条带(也称为视频条带)对图像进行分割和/或解码。一个图像可以分割成一个或多个条带(通常为不重叠的)或使用一个或多个条带(通常为不重叠的)进行解码,每个条带可以包括一个或多个块(例如,CTU)。
在实施例中,图3所示的视频解码器30可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码。一个图像可以分割成一个或多个分块组(通常为不重叠的)或使用一个或多个分块组(通常为不重叠的)进行解码;每个分块组可以包括一个或多个块(例如,CTU)或一个或多个分块等;每个分块可以为矩形等并可以包括一个或多个块(例如,CTU),例如,整块或部分块。
视频解码器30的其它变型可以用于对编码图像数据21进行解码。例如,解码器30可以在没有环路滤波单元320的情况下生成输出视频流。例如,基于非变换的解码器30可以在没有针对某些块或帧的逆变换处理单元312的情况下直接对残差信号进行反量化。在另一种实现方式中,视频解码器30可以使反量化单元310和逆变换处理单元312组合成一个单元。
应理解,在编码器20和解码器30中,可以对当前步骤的处理结果做进一步处理,然后输出到下一步骤。例如,在插值滤波、运动矢量导出或环路滤波之后,可以对插值滤波、运动矢量导出或环路滤波的处理结果执行裁剪(clip)或移位(shift)等进一步操作。
需要说明的是,可以对当前块的导出运动矢量(包括但不限于仿射模式中的控制点运动矢量,仿射模式、平面模式、ATMVP模式中的子块运动矢量,时间运动矢量等)执行进一步操作。例如,运动矢量的值根据运动矢量的表示位被限制在预定义的范围内。如果运动矢量的表示位是bitDepth,则该范围是-2^(bitDepth-1)~2^(bitDepth-1)-1,其中,“^”表示求幂。例如,如果bitDepth设置为16,则该范围是-32768~32767;如果bitDepth设置为18,则该范围是-131072~131071。例如,限制导出运动矢量(例如,一个8×8块中的4个4×4子块的MV)的值,使得这4个4×4子块MV的整数部分之间的最大差异不超过N个像素,例如,不超过1个像素。这里提供了两种根据bitDepth限制运动矢量的方法。
方法1:通过平滑操作来去除溢出的最高有效位(most significant bit,MSB)
ux=(mvx+2bitDepth)%2bitDepth (1)
mvx=(ux≥2bitDepth-1)?(ux-2bitDepth):ux (2)
uy=(mvy+2bitDepth)%2bitDepth (3)
mvy=(uy≥2bitDepth-1)?(uy-2bitDepth):uy (4)
其中,mvx为一个图像块或子块的运动矢量中的水平分量,mvy为一个图像块或子块的运动矢量中的垂直分量,ux和uy指示中间值。
例如,如果mvx的值为-32769,则使用公式(1)和(2)之后得到的值为32767。在计算机系统中,以二进制补码的形式存储十进数。-32769的二进制补码为1,0111,1111,1111,1111(17位),这时丢弃MSB,那么得到的二进制补码为0111,1111,1111,1111(十进数为32767),这与使用公式(1)和(2)之后得到的输出相同。
ux=(mvpx+mvdx+2bitDepth)%2bitDepth (5)
mvx=(ux≥2bitDepth-1)?(ux-2bitDepth):ux (6)
uy=(mvpy+mvdy+2bitDepth)%2bitDepth (7)
mvy=(uy≥2bitDepth-1)?(uy-2bitDepth):uy (8)
这些操作可以在对mvp和mvd求和的过程中执行,如公式(5)至(8)所示。
方法2:对值进行裁剪来去除溢出的MSB
vx=Clip3(-2bitDepth-1,2bitDepth-1-1,vx)
vy=Clip3(-2bitDepth-1,2bitDepth-1-1,vy)
其中,vx为一个图像块或子块的运动矢量中的水平分量,vy为一个图像块或子块的运动矢量中的垂直分量;x、y和z分别对应于MV裁剪过程的3个输入值,函数Clip3的定义如下:
Figure BDA0002689464270000191
图4为本发明实施例提供的视频编码设备400的示意图。视频编码设备400适合于实现本文所述的公开示实施例。在一个实施例中,视频编码设备400可以是解码器(例如,图1A中的视频解码器30)或编码器(例如,图1A中的视频编码器20)。
视频编码设备400包括:用于接收数据的入端口410(或输入端口410)和接收单元(Rx)420,用于处理该数据的处理器、逻辑单元或中央处理器(central processing unit,CPU)430,用于发送该数据的发送单元(Tx)440和出端口450(或输出端口450),用于存储该数据的存储器460。视频编码设备400还可以包括与入端口410、接收单元420、传输单元440和出端口450耦合的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,用于光信号或电信号的出口或入口。
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个CPU芯片、核(例如,多核处理器)、FPGA、ASIC和DSP。处理器430与入端口410、接收单元420、发送单元440、出端口450和存储器460通信。处理器430包括编码模块470。编码模块470实现上文所述的公开实施例。例如,编码模块470实现、处理、准备或提供各种编码操作。因此,将编码模块470包括在内为视频编码设备400的功能提供了实质性的改进,并且影响了视频编码设备400到不同状态的转换。或者,以存储在存储器460中并由处理器430执行的指令来实现编码模块470。
存储器460可以包括一个或多个磁盘、磁带机或固态硬盘,并且可以用作溢出数据存储设备,以在选择程序来执行时存储此类程序,或者存储在执行程序过程中读取的指令和数据。例如,存储器460可以是易失性的和/或非易失性的,可以是只读存储器(Aread-only memory,ROM)、随机存取存储器(random-access memory,RAM)、三态内容寻址存储器(ternary content-addressable memory,TCAM)或静态随机存取存储器(static random-access memory,SRAM)。
图5为示例性实施例提供的装置500的简化框图。装置500可以用作图1中的源设备12和目的地设备14中的任一个或两个。
装置500中的处理器502可以是中央处理器。或者,处理器502可以是现有的或今后将研发出的能够操控或处理信息的任何其它类型的设备或多个设备。虽然可以使用如图所示的处理器502等一个处理器来实施所公开的实现方式,但使用多个处理器可以提高速度和效率。
在一种实现方式中,装置500中的存储器504可以是只读存储器(read onlymemory,ROM)设备或随机存取存储器(random access memory,RAM)设备。任何其它合适类型的存储设备都可以用作存储器504。存储器504可以包括处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括至少一个程序,这个程序使得处理器502执行本文所述方法。例如,应用程序510可以包括应用1至应用N,这些应用还包括执行本文所述方法的视频编码应用。
装置500还可以包括一个或多个输出设备,例如,显示器518。在一个示例中,显示器518可以是将显示器与触敏元件组合的触敏显示器,该触敏元件可用于感测触摸输入。显示器518可以通过总线512与处理器502耦合。
虽然装置500中的总线512在本文中描述为一个总线,但是总线512可以有多个。此外,辅助存储器514可以直接与装置500中的其它组件耦合或者可以通过网络被访问,并且可以包括存储卡等一个集成单元或多个存储卡等多个单元。因此,装置500可以具有各种各样的配置。
生成LDMVP列表需要访问非调整编码单元的大量运动信息。如果MVP位置在当前CTU之外,这一点至关重要。实际上,当前处理的CTU的信息可以存储在缓存中,而先前处理的CTU可以存储在外部存储器中。因此,从除当前CTU之外的另一个CTU中获取信息可能需要访问该外部存储器,这会增加延迟和功耗。而且,从上方CTU等中获取运动信息可能比从左侧CTU中获取运动信息复杂,因为左边CTU的运动信息位于处理顺序的前面并且也可以存储在缓存中。
由于这些原因,为了限制对其它CTU的访问,最好对LDMVP模式做出修改。
在JVET-J0012、JVET-J0021、JVET-J0029、JVET-J0058、JVET-J0059等VVC标准提案中,已经提出使用非调整块的运动信息。本发明将从这些非调整块中获取的空间MVP候选表示为长距离运动矢量预测(Long-Distance Motion Vector Prediction,LDMVP)候选。LDMVP候选的位置通常是通过某种模式获得的。
本发明将LDMVP模式定义为相对于当前块位置的偏移(例如,以像素或其它基本单元为单位)的集合。当前块的位置是指当前块的左上方像素点的位置。换句话说,偏移或偏移值是指相对于参考位置的位置。
本发明将当前块或CU的左上方像素点的位置用作参考位置。但是,参考位置不限于左上方像素点位置。任何其它像素点位置也可以用作参考位置,包括当前CU的右上方、左下方和/或右下方的像素点位置等。沿当前CU的上边缘、下边缘、左边缘和/或右边缘任一的像素点位置也可以选择作为参考位置。
图7至图10示出了LDMVP模式的一些示例,本申请称为“方形”、“对角线”、“三角形”和“星形”LDMVP模式。所示的模式不限于图7至图10中的那些模式。相反,这里使用这些模式是为了举例说明LDMVP模式(即相应的模式位置)如何用作运动矢量的初始位置,在对模式位置进行初步额外检查(包括替代模式位置和/或增加模式位置)之后,可以获得最终位置。之后,从这些最终位置获得相应的运动信息(即运动矢量)。这些最终位置及其运动信息称为包括有限运动矢量位置的LDMVP模式。
该模式定义的一些位置可能不可用,这是因为这些位置在当前图像或当前条带之外,或者这些位置可能对应于经过帧内编码的单元或者由于其它一些原因被去除。因此,候选位置集合是该模式所定义的位置的子集。按照预定顺序遍历候选位置集合,生成最终的LDMVP候选列表。图11示出了LDMVP列表生成算法的流程图。该算法的输入参数有:模式P、CU位置(xCU,yCU)和CTU位置(xCTU,yCTU)。
下文假设CTU的宽度和高度是LDMVP算法中可用的预定义参数。LDMVP列表生成算法的输出是LDMVP候选列表。程序(procedure)generatePositions(P,xCU,yCU)按照候选优先级的顺序从模式P生成位置(x,y)和偏移,使用(xCU,yCU)作为基点。此处的优先级是指将候选位置插入MVC列表的顺序。在将新候选位置增加到该MVC列表中之前,已经检查到新候选位置与该MVC列表中存在的候选位置不重合。为了对LDMVP算法做出一些修改,可以使用程序LdmvpAlgorithmSpecificChecks(P,xCU,yCU,xCTU,yCTU)来执行额外检查。
下面结合图11中的流程图对LDMVP列表生成算法的方法步骤进行简要概述。在步骤S1101中,检查位置(x,y)是否属于与当前CU位置(xCU,yCU)相对的模式。在步骤S1102中,检查位置(x,y)是否可用。如果不可用,则使用下一个位置(x,y)。如果可用,则检查与该位置(x,y)对应的一个块是否经过帧间编码(步骤S1103)。如果否,则对下一个位置(x,y)执行步骤骤S1101和S1102中的上述两种检查。如果是,则可以对该位置(x,y)执行程序LDMVPAlgorithmSpecificChecks(步骤S1104)中的具体检查,其中,x、y、xcu、ycu、xctu和yctu作为输入参数。在步骤S1105中,获取该位置(x,y)的运动信息。即,获得了该位置(x,y)的运动矢量。然后,检查(步骤S1106)所得到的包括分量Vx和Vy的运动矢量MV与先前增加到LDMVP列表中的任一MV是否重合。如果该MV与先前增加到LDMVP列表中的任一MV相同,则从步骤S1101开始检查下一个位置(x,y)。如果该MV不在LDMVP列表中,则将该MV增加到LDMVP列表中(步骤S1107)。当通过步骤S1101至步骤S1107检查完所有位置(x,y)时,上述算法结束并输出LDMVP列表。在步骤S1106中检查得到的MV是否与MVC列表中已经存在的MV重合,也称为全修剪。即,对照MVC列表中已经存在的所有MV检查得到的MV。
图11所示的LDMVP列表生成算法的流程图是一种示例性实现方式。例如,在图13和/或图19的流程图中,即在将程序additionalChecks和/或replacePosition插入到LDMVP列表生成算法的流程图中,可选地,可以完全跳过步骤1106。即,与MV候选位置对应的MV都可以包括在MVC列表中。或者,可以部分执行步骤S1106。即,对照MVC列表中已经存在的一部分MV检查得到的MV,等等。这种局部检查称为局部修剪。在一个示例中,可以对最近增加到MVC列表中的MV(例如,N个MV)执行部分修剪。这些最近增加的MV被称为优先MV候选。
如下文所述,图11中的LDMVP列表生成算法可以通过本发明的任何方法进行修改。关于LDMVP列表生成算法的方法步骤,不再赘述,相反,对本发明相关的方法步骤进一步描述。
如本发明以下示例性实施例公开,本发明使用生成的包括运动矢量位置的运动矢量候选列表,使用其中的相应运动信息进行运动预测。
这种预测可以针对当前块,当前块即当前编码单元(coding unit,CU),当前CU位于当前编码树单元(coding tree unit,CTU)内。当前CTU可以位于由多个CTU组成的当前帧内,当前帧即当前视频帧。
根据一个实施例,提供了一种装置,用于生成包括一个或多个运动矢量候选(motion vector candidate,MVC)的列表。所述MVC列表是根据以下内容为当前编码单元(coding unit,CU)生成的:与所述当前CU的位置相对的模式的位置以及所述当前CU在编码树单元(coding tree unit,CTU)内的位置。所述模式定义运动矢量(motion vector,MV)的位置。
所述运动矢量候选用于对所述当前CU进行运动预测。即,运动矢量的运动信息在相应的候选位置处用于预测。因此,运动矢量位置是对应矢量候选块的位置。所述矢量候选块可以是对应于一个像素点块的一个像素/像素点和/或多个像素点。
所述当前CU的位置可以是所述当前CU的左上角,这些位置以像素为单位或者是像素块单元。所述块单元可以是2×2像素块或任何其它单元。位于所述当前CTU内的所述当前CU的位置可以是所述当前CU的左上角与所述当前CTU的左上角的(像素/像素点)位置之间的距离。
换句话说,术语“运动矢量位置”可以指“运动矢量候选块的位置”或“运动候选块的位置”。而且,在网格大小为16×16且相邻CU的大小为128×128或64×64等情况下,所述模式中的多个位置可以对应于一个CU。这种情况发生在网格大小(远小于)相邻CU的大小时,这样,少量模式位置可以位于同一相邻CU内。在大多数情况下,只有一个MV-MV对与一个CU对应,因此,少量模式位置可以参考相同的运动信息。
一般而言,所述模式可以以CU和/或网格为单位生成。实际应用证明,解码器处理基于CU的模式比较复杂,而且不一定带来很大增益。因此,基于网格的模式有可能比基于CU的模式更受青睐。在这种情况下,所述模式中的多个位置可以对应于一个CU。
LDMVP技术可以用于以下两个过程:
1.合并模式
2.高级运动矢量预测(advanced motion vector prediction,AMVP)模式下的运动矢量预测。
在第一种情况下,从相应的MV候选位置中获取两种信息:运动矢量和参考索引。如果是B帧,获取的是2个MV和2个参考索引。
在第二种情况下,仅仅获取运动矢量,而在码流中指示参考索引。第二种情况(AMVP)也可以使用LDMVP。因此,本发明提供的LDMVP一般可以用于运动预测和/或运动矢量预测。而且,预测不仅可以使用运动矢量,而且还可以使用“参考”块的参考索引,该参考索引可以是MV候选位置。
根据一个实施例,所述装置中的处理电路为所述当前CU确定所述MVC,包括从多个模式位置中选择MV位置子集。换句话说,初始模式(即初始位置)进行额外检查,检查之后,可以保留、丢弃和/或改变某些模式位置。
下面参考图14至图17说明从(初始)模式中选择子集,图14至图17示出了位置选择的示例。在图14至图17的示例中,为了说明目的,全部使用了图8中的“对角线”LDMVP模式。还可以使用任何其它模式,例如,图7、图9和/或图10所示的那些模式,包括图24所示的“日字形(sun)”模式(未明确示出)。
根据一个实施例,上述选择包括从多个模式位置中选择在当前CTU内的MV位置。
这可以如图14的模式位置中标记的白色方形所示,位于当前CTU(粗点划线方形)内部。对于这些点,运动信息是可用的。这些模式位置保持不变(白色方形)。
根据一个实施例,所述选择MV位置子集通过从所述多个模式位置中排除不可用和/或未存储在缓冲器中的那多个MV位置来执行。
即,位置可以位于当前视频帧之外,即该位置大于当前帧的大小。因此,该点的信息并不存在。对帧中的CU执行编码/解码的顺序也会导致某个位置的运动信息不可用。换句话说,由于CTU的右下区域在稍后的时间进行编码/解码,所以该区域的运动信息在特定时间还不存在。因此,即使在该区域内生成一个位置(即模式的一部分),这个点在该时间还不存在运动信息。而且,由于可以访问运动信息,所以相应信息也可以不存储在存储器(即缓冲器)中。此种缓冲器可以是列缓冲器等,其读写访问速度快,常常用于存储CTU中的有限区域的运动信息,这些CTU与用于执行运动预测的当前CTU相邻。
列缓冲器是一个存储CTU数据的缓冲器。在通用视频编码(versatile videcoding,VVC)中,以光栅顺序(在一个分块/砖块内)解码CTU。合并模式等一些工具需要上方CTU的数据。为此,将解码当前CTU时可能需要从下方CTU获取的所有数据存储在特定缓冲器中。这种缓冲器称为“列缓冲器”。对于包括MV和参考索引的运动信息,最后一行运动信息的预测值存储在列缓冲器中。如果没有使用LDMVP,在最坏的情况下,number_of_CTUs_in_a_line×CTU_size/motion_information_storage_grid_size个元素应存储在列缓冲器中(常规合并可以使用上方CTU的相邻CU)。
当LDMVP模式不受限制时,必须存储的MV远不止一行。但是,这不适用于硬件实现。
因此,根据本发明,使用LDMVP模式来限制运动信息的使用需要在列缓冲器中存储少量的运动信息。这样,可以更高效、更快地执行预测。
在这些情况下,排除模式中的一些位置,如图14所示。粗点方形是当前CTU,这就需要一个当前CU(细点方形)。区域R0和R1(水平线模式)是指允许区域,定义了具有可用运动信息的运动矢量的位置。
如图14所示,丢弃位于当前CTU之外的少量模式位置。这些模式位置位于CTU之外,它们也不位于任何允许区域R0和/或R1(黑白散列方形)内。也就是说,在本实施例中,丢弃的位置完全从模式中去除,不再考虑作为运动矢量候选位置。
对于其它模式位置,由于它们位于任一区域R0或R1内,所以它们的可用运动信息可用,在模式中保留这些模式位置,而且不改变这些模式位置(白色方形)。
图15至图17示出了上述针对相同“对角线”模式选择模式位置的示例,但是允许运动矢量的区域R0、R1或R3在与当前CTU相邻的CTU内以不同方式排列。从图14至图17中可以看出,在每种情况下,额外检查产生的最终候选位置列表是不同的,因为与区域R0、R1或R3相对的模式位置随着相邻CTU内的区域的不同排列而改变。对于技术人员来说显而易见的是,最终列表的结果还随着具有不同位置的模式而改变,以图7至图10中所示的模式为例。
在本发明的一个示例性实施例中,执行上述检查的程序additionalChecks(x,y,xCTU,yCTU,R)可以增加到LDMVP列表生成算法中,如图13中的流程图所示。在根据运动矢量候选列表位置获取实际运动信息之前,增加该例程。
本程序的输入参数有:被检查的位置(x,y)、当前CTU位置(xCTU,yCTU)和矩形集合R,这些矩形定义在当前CTU周围的CTU中的区域。这些区域中的任一个区域对应于一个区域,该区域定义允许运动矢量候选的位置,这些位置可以用于预测。
图12示出了程序additionalChecks(x,y,xCTU,yCTU,R),该程序检查某个位置(x,y)是否属于当前CTU或其中一个矩形Ri(步骤S1201和步骤S1203)。对所有矩形区域Ri执行检查S1203(步骤S1202)。如果不属于,则去除位置(x,y)(步骤S1204)。也就是说,该位置被丢弃。如果属于,则接受位置(x,y)(步骤S1205)。
图13中的流程图示出了包括额外检查的LDMVP列表生成算法的示例性实现方式。结合LDMVP列表生成算法的方法步骤S1101至步骤S1107,将程序additionalChecks的方法步骤作为步骤S1200包括在图13的流程图中。集合R可以为空,也就是说,该程序仅检查该位置是否属于当前CTU。
图14至图17示出了一些示例,说明将程序additionalChecks应用于图8所示的“对角线”模式。具体地,在图14至图17的示例中,CU位置相对于CTU位置(xCTU,yCTU)是(16,16)像素。这些示例中的矩形Ri设置为[x0 i,y0 i,w,h],其中,(x0 i,y0 i)是与(xCTU,yCTU)相对的矩形的左上方位置,w和h分别为矩形的宽度和高度。
表1提供了示例1至示例4(即图14至图17)中的矩形Ri的相应设置,这些设置与矩形集合{Ri}和附图匹配,从而将程序additionalChecks应用于“对角线”模式。通过程序additionalChecks去除的位置用黑白散列模式标记。矩形Ri用水平线模式标记。
表1示例1至示例4中使用的程序additionalChecks
Figure BDA0002689464270000241
在许多情况下,示例4在实际应用中是非常有利的,因为当前CTU左边的CTU和位于当前CTU正下方的最后一行CTU是用作对当前CU进行运动预测使用的允许区域。换句话说,对于最后一行的这些CTU,仅使用有限运动信息进行运动预测。由于只使用有限个运动矢量,所以运动预测更高效、更快速。作出这一选择的动机是假设与当前CTU相邻的上方CTU的运动信息主要用于运动预测。
常规合并只使用左边CTU的右列运动信息。在选择相邻CTU中的区域时,要考虑的另一个标准可以是,存储左边CTU比存储上方CTU简单,因为额外的缓冲大小不会随着帧的宽度而增长。
到目前为止,丢弃在当前CU之外且不可用和/或未存储在缓冲器中(例如,不在任一区域Ri内)的模式位置。但是,仍可以使用丢弃的位置进行运动预测,如下结合图18至图23所述。
根据一个实施例,该装置中的处理电路为所述当前CU确定所述MVC,包括将所述多个排除的MV位置中的一个或多个MV位置替换为替代MV位置,其中,所述替代MV位置根据所述多个排除的MV位置确定,以满足一个或多个预定条件。
即,所述排除/丢弃的模式位置中的一个或多个模式位置可以通过在预定条件的限制下替换或计算新位置等方式来改变其坐标位置。
根据一个实施例,所述一个或多个预定义条件包括所述替代MV位置可用和/或存储在所述缓冲器中的条件。
即,从所述多个排除的模式位置开始,它们的替代位置可用和/或存储在缓冲器中。以图20为例,同样是针对“对角线”模式,使用的是方形区域的相同标记来指代去除的模式位置和未改变的位置。从图20的示例中可以看到,允许区域R1内现在增加有两个位置(标记为垂直线模式)。如果只使用这些模式位置,这些点并不是区域R1的一部分,因为它们不是原始模式的一部分。换句话说,与之前一样,还是去除不在区域R0或R1中的模式位置,但是这些模式位置仍然用于确定是否增加以及在哪里增加一个或多个新位置,使得这些模式在任一允许运动矢量区域内。
根据一个实施例,确定所述替代MV位置,以满足所述替代MV位置与所述多个排除的MV位置之间具有最短距离的条件。术语“距离”是指衡量两点之间沿某一方向的空间间隔大小的度量。空间间隔的单位可以是像素x和/或像素y方向上的多个像素,使用像素作为空间度量的单位。该距离可以根据欧几里得范数和/或p范数等度量来计算,其中,p等于或大于1。
在图20所示的示例中,在丢弃的模式位置上施加最短距离条件,则对于左上方CTU中的左上部分的第二个丢弃的位置,在左上方CTU中的右下角增加新位置,使得增加的位置位于区域R1内。由于第一个丢弃的位置到区域R1的距离大于第二个位置到区域R1的距离,因此第一个丢弃的位置不增加新位置。这同样适用于在当前CTU上方的CTU内的相应第二个和第一个丢弃的模式位置。
“距离”条件是预定条件的一个示例,并且不限于本条件。例如,距离条件可以与对应于阈值的距离截止值组合,在这种情况下,如果距离等于或小于截止值,则可以在区域Ri内增加新位置。其它选项和或不同条件的组合也可适用,以便增加一个或多个新位置供使用和/或存储在缓冲器中。
图21至图23示出了通过根据预定义条件(例如,图20至图23举例的最短距离)替换其中一个模式位置来增加新位置的其它示例。从图21至图23中可以看出,增加新位置具体根据与当前CTU相邻的CTU内的区域Ri的排列来确定,因为这除了确定模式本身之外还确定模式位置相对于区域Ri的空间排列。
即,在最佳场景下,可以保留多个模式位置,因为原始模式中的所有丢弃的位置都被新位置替换。图21中的示例就是这种情况,这是区域R0至R3的特定选择的结果。
在本发明的一个示例性实施例中,LDMVP列表生成算法包括图19中的流程图所示的程序replacePosition(x,y,xCTU,yCTU,R),执行的是替换一个或多个模式位置。结合LDMVP列表生成算法的方法步骤S1101至步骤1107,程序replacePosition的方法步骤作为步骤S1800包括在图19的流程图中。该程序的输入参数有:被检查的位置(x,y)、当前CTU位置(xCTU,yCTU)和矩形集合R,这些矩形定义在当前CTU周围的CTU中的区域,从该集合中获取允许运动矢量候选。
图18示出了程序replacePosition的一种示例性实现方式的流程图。该程序检查某个位置(x,y)是否属于当前CTU或其中一个矩形Ri(步骤S1801和步骤S1803)。对所有矩形区域Ri执行检查S1803(步骤S1802)。如果位置(x,y)不属于当前CTU或其中一个矩形Ri,则将位置(x,y)修改为步骤1804中使用的位置(xmod,ymod),以满足上述要求,即位置(x,y)和(xmod,ymod)之间的距离最短。可以计算修改后的位置(xmod,ymod)计算,使得与位置(x,y)最接近,修改后的位置(xmod,ymod)属于当前CTU或其中一个矩形Ri。如果位置(x,y)属于当前CTU或任一矩形区域Ri,则在步骤S1805中,将值(x,y)赋予修改后的位置(xmod,ymod),使得(xmod,ymod)=(x,y)。该程序输出一个或多个修改后的位置(xmod,ymod)(步骤S1806)。
术语“最接近”是指位置(x,y)与修改后的位置(xmod,ymod)之间的距离最接近。该距离可以根据欧几里得度量和/或p范数等度量来计算,其中,p等于或大于1。位置(xmod,ymod)可以通过满足上述要求的任何其它方法来确定或计算。
图19中的流程图示出了包括程序replacePosition的LDMVP列表生成算法的示例性实现方式。集合R可以为空,即,该程序将输入位置(x,y)修改为位置(xmod,ymod),使得位置(xmod,ymod)属于当前CTU。另外或者可选地,程序replacePosition可以将两个不同的位置(x0,y0)和(x1,y1)替换为相同位置(xmod,ymod)。这一文化则位置(x0,y0)或(x1,y1)被删除。因此,在这种情况下,MV候选位置的个数减1。
图20至图23示出了一些示例,说明在CU位置相对于CTU位置(xCTU,yCTU)是(8,8)像素时,将程序replacePosition应用于图8所示的“对角线”模式。这些示例中的矩形Ri设置为[x0 i,y0 i,w,h],其中,(x0 i,y0 i)是与位置(xCTU,yCTU)相对的矩形的左上位置,w和h分别为矩形的宽度和高度。
对于这些示例性设置,表2提供了示例5至示例8中的矩形Ri的相应设置,这些设置与矩形集合{Ri}和附图匹配,从而将程序additionalChecks应用于“对角线”模式。通过程序replacePosition去除的位置用黑白散列模式标记,通过程序replacePosition增加的位置用垂直线模式标记。矩形Ri用水平线模式标记。
表2:示例5至示例8中使用的程序replacePosition
Figure BDA0002689464270000261
Figure BDA0002689464270000271
在上述实施例中,为丢弃的模式位置增加了一个或多个新位置。
根据一个实施例,该装置中的处理电路为所述当前CU确定所述MVC,包括将所述多个排除的MV位置调整到已调整MV位置,其中,确定所述已调整MV位置为可用和/或存储在缓冲器中。
本实施例与上述实施例有一些相似之处,即再次使用丢弃/排除的模式位置通过调整来确定MV位置。此外,在本实施例中,不一定对所有排除的位置都进行位置调整,下面结合图24至图27进行描述。位置调整的结果是已调整位置可用和/或存储在缓冲器中。也就是说,运动信息可用和/或存储在缓冲器中。
图24示出了使用“日字形”模式的一个示例性实施例。该模式与“对角线”模式的不同之处在于,例如,初始模式位置相对于当前CU排列在沿对角线方向的左上角、右上角、左下角,以及排列在沿左上方向的左边缘和上边缘的中间。这样,“日字形”模式以各向同性方式覆盖CU的上方“三角形”区域。因此,该模式非常适合使用在当前CU周围的上方和左边区域中更均匀“分布”的运动信息。
如图所示,允许运动矢量的区域R0和R1再次如图23所示排列,其中,R0覆盖了当前CTU左边的整个CTU,而R1包含了当前CTU左上、上方和右上的一个小的CTU下方区域的运动信息。在上述实施例中,在当前CTU内且已经位于区域R0和/或R1中的任何区域内的初始模式位置保持不变(白色方形)。从模式中去除的位置被标记为黑白散列模式,对这些位置进行位置调整。
为了避免调整所有排除的模式位置,可以首先将模式位置按类别分组,如图25的示例所示。
将模式位置按类别分组的一种方式可以是将LDMVP模式位置(可以称为集合S)划分为子集Si。子集Si也可以称为序列。即,在序列Si中的模式位置沿着特定方向放置。所述方向可以是沿着上方、右上方、左上方、左边和/或左下方中的任一个。在图25的示例中,“日字形”模式存在五个序列S1至S5,其中,每个序列包括日字形模式中的三个位置。
假设序列Si中有ni个位置,则各个位置可以用位置(x0i,y0i)、(x0i+dxi,y0i+dyi)、(x0i+2×dxi,y0i+2×dyi)……(x0i+ni×dxi,y0i+ni×dyi)表示,其中,(x0i,y0i)表示该序列中的第一个位置的位置。第一个位置可以是距离当前CU最近的位置。例如,在上方向的模式位置序列中,第一个位置是靠近当前CU的上边缘的下方位置。dxi和dyi分别表示序列中分别沿水平方向和垂直方向的相邻位置之间的偏移。
模式中的元素可以根据相应序列的值dxi和/或dyi按类别分组。即,一类位置可以按值dxi和/或dyi来表征,包括这些值是正数还是负数。因此,每个类别都可以包括一个或多个模式位置序列。
例如,在图25的情况下,使用上述方式来归类模式位置,日字形模式中的模式位置可以按其类别(此处为类别1至类别3)根据以下针对dx和dy的限制进行分组:
Class1:dx=0,dy<0
Class2:dx!=0,dy<0
Class3:dx<0,dy≥0。
运算“!=”表示“不等于”。
将基于dx-dy的分类方法应用于日字形模式得到3个类别,其中,类别1包括一个序列,类别2和类别3分别包括两个序列。
例如,模式位置可以根据一个或多个模式位置是否位于当前CTU的左边和/或左下方按类别分组。在图25的示例中,这适用于类别3中的模式位置。另外或者可选地,当前CTU上方(即左上方、上方和/或右上方)的模式位置还可以根据它们的x位置和/或y位置是否相同按类别进行分组。在图25的示例中,沿CU的左对角线和右对角线的上方模式位置具有不同的x和y位置。因此,这些模式位置分组到一个公共类别2。反过来,沿着CU中间向上的上方模式位置具有相同的x位置,但具有不同的y位置。因此,这些模式位置分组到类别1。
总之,CU上方的向上方向的模式位置属于类别1,左上方和右上方的对角线方向的模式位置属于类别2,剩余的模式位置属于类别3,如图25所示。在当前CTU内和/或区域R0和R1中的任一区域内的模式位置不变,如图26所示。
根据一个实施例,确定已调整MV位置包括沿x方向和/或y方向将所述多个排除的MV位置分配到已分配MV位置,其中,所述x方向是所述当前CTU的宽度方向,所述y方向是所述当前CTU的高度方向。
x和y方向(对应于x和y位置)以像素坐标表示,其中,x像素轴沿CTU的宽度方向,y像素轴沿CTU的高度方向。
图26中的示例说明了这点,其中,类别1和类别2中的排除的模式位置分配有新位置,即调整位置。这里,沿CTU高度方向调整这些模式位置的y位置,以位于区域R1内。由于类别2中的模式位置具有不同的x位置,因此已调整位置位于不同位置的区域R1内。相比之下,由于类别1中的模式位置的x位置最初是相同的,所以在进行位置调整之后位于区域R1内的相同位置上。
根据一个实施例,上述确定包括使用预定方式将一个或多个已分配MV位置中的x位置或y位置重新分配到已重新分配的y位置或x位置,其中,所述一个或多个已分配MV位置具有相同的x位置或相同的y位置。
所述预定方式可以是一种函数。即,例如,重新分配的位置可以使用所述函数进行计算,所述函数的输入是已分配位置。上述计算可以根据CU位置和/或模式位置来执行。
在一个示例性实施例中,所述预定方式为将所述一个或多个已分配MV位置中的y或x分量位移一个偏移值。
所述偏移值可以是若干像素,通过将所述偏移值与已调整的y和/或x位置值相加和/或相减,将y和/或x位置(例如,以像素为单位)位移所述偏移值。或者,所述预定方式可以是与y和/或x位置相乘和/或相除的因子。当已调整位置的x和/或y位置相同时,其它方式可以用于重新分配已调整位置。
所述偏移值可以根据CU位置和/或模式位置确定。例如,可以修改y坐标以使其与上方CTU边界之间的距离小于4个点(MV存储网格大小)。即,所述偏移值可以根据CU位置和距离进行限制。可替代地和/或可选地,所述偏移值可以是预定义的。在任何情况下,应重新分配已分配位置,使得这些已分配位置在位移之后位于允许区域之内。
在图26的示例中,类别1内的模式位置中的已调整位置具有相同的y位置。由于已调整模式位置和原始模式位置具有相同的x位置,所以它们都位于区域R1内的相同位置上。因此,通过位移一个偏移值,两个已调整位置中的一个已调整位置重新分配有一个新的x位置。换句话说,可以将具有相同位置的已调整位置在区域Ri内扩展,使得已重新分配的位置具有不同的位置。在图26中,类别1中的模式位置在位置分配和随后的位置重新分配之后具有不同的位置。
在本实施例中,模式位置可以按类别进行分组,运动矢量候选位置的数量与模式的位置的数量相同。而且,在本示例中,选择模式和区域以在当前CTU的上方使用限制到CTU的运动信息。
在图24至图26所示的示例中,模式位置位于当前CU沿对角线的左上角、右上角、左下角。此外,位置从左边缘的中部向左水平排列,从上边缘的中部向上垂直排列。在本发明中,这种模式称为“日字形”模式。
在本示例中,假设CTU的解码顺序为从左到右、从上到下。相应地,当前CTU上方和左边的图像部分以及运动矢量信息在当前帧中可用。其余部分可以根据当前CTU确定,因此只能在解码当前CTU之后解码。然而,本发明并不限于此。通常可以采用另一解码顺序,导致当前帧部分的可用情况不同。
对于图7至图10所示的模式等,“日字形”模式或任何其它合适的模式,可以通过程序adjustCandidatePositions对模式位置进行位置调整,如下所述:
1.所有候选位置被划分成三个类别,如图25所示。
2.白色方形不进行候选位置调整。
3.对于黑白散列候选(类别1和类别2),y位置是当前CTU的最上面的y位置减1。
4.黑白散列左右候选(类别2)的x位置不变。
5.对于黑白散列中间候选(类别1),可以使用程序AdjustCandidatePositions(x,y,topYposOfCurCtu,xOffsetForOneGrid,log2Gy)计算新的x位置。
如前所述,图26示出了将程序adjustCandidatePositions应用于“日字形”模式得到的结果。
图27示出了程序AdjustCandidatePositions(x,y,topYposOfCurCtu,xOffsetForOneGrid,log2Gy)的流程图以及一种实现方式的示例。这里,topYposOfCurCtu为当前CTU的最上面的y位置,xOffsetForOneGrid可以为w>>2、Gx或Gy、2log2Gy,其中,w为当前CU的宽度,Gx为模式网格的宽度,Gy为模式网格的高度。
目的是计算偏移值,在该示例中,通过减去(步骤S2707)或加上(步骤S2706)偏移值,x位置向左或向右移位。在步骤2701中,x位置向左移位(在本示例中,通过操作符“<<”按位进行)。这对应于乘以偏移值。在步骤S2702中,参考当前CTU的最上面的y位置、点(x,y)的y位置和偏移值确定跳过网格的数量。该值(按位)向右移位,对应于除法。在步骤S2703中,判断跳过网格的数量是偶数还是奇数(奇偶校验)。如果数量是奇数,则对应的值“turnRight”是“1”。在步骤2704中,使用跳过网格的数量和一个网格的x偏移值来确定偏移值。如果turnRight是逻辑1(步骤S2705),则通过将偏移值与x值相加,将x位置向右移位(步骤S2706)。如果turnRight不是逻辑1,则通过减去偏移值将x位置向左移位(步骤S2707)。返回已调整候选位置(步骤S2708)。
程序AdjustCandidatePositions可以作为步骤S2700增加到LDMVP列表生成算法的流程图中,其方法位置与additionalChecks和replacePositions的方法位置一样,即在步骤S1104与步骤S1105之间。
上述任一实施例提供的方法可以应用于任何模式,包括LDMVP模式。此外,这些方法可以单独地和/或组合地应用于(LDMVP)模式中。即,在生成LDMVP模式之后,可以以任何顺序使用这些方法。而且,根据本发明,这些方法可以实现为单独的程序。或者,可以使用任一组合方法来实现这些程序。例如,程序adjustPositions中实现的方法可以与程序replacePosition中实现的方法组合为一个公共程序。
根据一个实施例,提供了一种方法,用于生成包括一个或多个运动矢量候选(motion vector candidate,MVC)的列表。所述方法包括以下步骤:根据以下内容为当前编码单元(coding unit,CU)确定所述一个或多个MVC:与所述当前CU的位置相对的模式的位置,其中,所述模式定义运动矢量(motion vector,MV)的位置,以及所述当前CU在编码树单元(coding tree unit,CTU)内的位置。
上述实施例描述的装置和方法可以与不同的LDMVP模式一起使用,图7至图10示出了这些模式。这些装置和方法可以与不同的程序LdmvpAlgorithmSpecificChecks(P,xCU,yCU,xCTU,yCTU)一起使用。这些装置和方法可以用于合并技术和高级运动矢量预测。这些装置和方法可以与将CTU分割成CU的不同方案(例如,四叉树、三叉树、二叉树及其组合)一起使用。
根据一个实施例,提供了一种用于对视频帧中的当前编码单元(coding unit,CU)进行编码的编码器。所述编码器包括:任一上述实施例提供的装置,用于生成包括一个或多个MVC的列表;帧间预测单元,用于根据所述列表内的所述一个或多个MVC中的至少一个运动矢量(motion vector,MV)确定所述当前CU的预测值;压缩单元,用于使用所述CU的预测值对所述当前CU进行编码。
根据一个实施例,提供了一种用于对视频帧中的当前编码单元(coding unit,CU)进行解码的解码器。所述解码器包括:任一上述实施例提供的装置,用于生成包括一个或多个MVC的列表;帧间预测单元,用于根据所述列表内的所述一个或多个MVC中的至少一个运动矢量(motion vector,MV)确定所述当前CU的预测值;解压缩单元,用于使用所述CU的预测值对所述当前CU进行解码。
所述MVC列表可以用于使用在一个或多个MVC的位置处获得的运动矢量中的运动信息进行运动预测。
上述编码可以通过计算所述当前CU与所述预测值之间的差异并通过对残差(差异)进行编码(包括量化和/或熵编码)来执行。所述预测值由最佳运动矢量所指的块得到。最佳运动矢量通过计算相似性度量(例如,绝对差异和(sum of absolute differences,SAD))从MV候选列表中确定。从编码器侧看,最佳运动矢量可以作为MVC列表的索引在已编码视频的码流内指示给解码器。对应于(分配给)索引的MVC是最佳MV,也用于解码。这里,术语“最佳”是指由编码器选择的、供解码器用于获得当前块(CU)的预测值的MV。即使没有残差,也可以执行此操作,因为预测值已经接近CU,对应于零(量化后)残差。原则上,也可以在编码器和解码器侧隐式地确定列表的索引。例如,当MV候选的数量为1时,在合并模式下可以隐式地确定列表的索引,因此不需要指示索引。
根据一个实施例,提供了一种用于存储程序的计算机可读非瞬时性介质。所述计算机可读非瞬时性介质包括指令;当所述指令在处理器上执行时,所述处理器执行所述方法步骤。
综上所述,本发明涉及视频图像的编码和解码。运动矢量用作预测值,用于预测一个图像的当前编码单元(coding unit,CU),所述当前CU位于当前编码树单元(coding treeunit,CTU)内。所述运动矢量是从运动矢量候选(motion vector candidate,MVC)列表中选取的。所述MVC列表是使用一种模式根据以下内容为所述当前CU生成的:与所述当前CU相对的所述模式的位置以及所述当前CU在所述当前CTU内的位置,其中,所述模式包括允许运动矢量的位置。从所述模式中选择位置子集,并将位置限制在所述当前CTU内,而排除其它不可用或未存储在缓冲器中的模式位置。其它排除的模式位置可以被替代和/或调整以变得可用和/或存储在所述缓冲器中。可以根据与被替代/已调整位置相对的排除位置来替代和调整所述排除的模式位置。
附图标记列表
图1A
10 视频编码系统
12 源设备
13 通信信道
14 目的地设备
16 图像源
17 图像数据
18 预处理器
19 预处理图像数据
20 视频编码器
21 编码图像数据
22 通信接口
28 通信接口
30 视频解码器
31 解码图像数据
32 后处理器
33 后处理图像数据
34 示设备
图1B
40 视频编码系统
41 (一个或多个)成像设备
42 天线
43 处理器
44 存储器
45 示设备
46 处理电路
20 视频编码器
30 视频解码器
图2
17 图像(数据)
19 预处理图像(数据)
20 编码器
21 编码图像数据
201 输入端(接口)
204 残差计算[单元或步骤]
206 变换处理单元
208 量化单元
210 反量化单元
212 逆变换处理单元
214 重建单元
220 环路滤波单元
230 解码图像缓冲器(DPB)
260 模式选择单元
270 熵编码单元
272 输出端(接口)
244 帧间预测单元
254 帧内预测单元
262 分割单元
203 图像块
205 残差块
213 重建残差块
215 重建块
221 滤波块
231 解码图像
265 预测块
266 语法元素
207 变换系数
209 量化系数
211 解量化系数
图3
21 编码图像数据
30 视频解码器
304 熵解码单元
309 量化系数
310 反量化单元
311 解量化系数
312 逆变换处理单元
313 重建残差块
314 重建单元
315 重建块
320 环路滤波器
321 滤波块
330 解码图像缓冲器DPB
331 解码图像
360 模式应用单元
365 预测块
366 语法元素
344 帧间预测单元
354 帧内预测单元
图4
400 视频编码设备
410 入端口/输入端口
420 接收单元Rx
430 处理器
440 发送单元Tx
450 出端口/输出端口
460 存储器
470 编码模块
图5
500 源设备或目的地设备
502 处理器
504 存储器
506 代码和数据
508 操作系统
510 应用程序
512 总线
518 显示器
图6
600 MVD候选
图7
700 方形LDMVP模式
图8
800 对角线LDMVP模式
图9
900 三角形LDMVP模式
图10
1000 星形LDMVP模式
图11
1100 LDMVP列表生成流程图
图12
1200 additionalChecks流程图
图13
1300 包含additionalChecks的LDMVP列表生成流程图
图14
1400 将additionalChecks应用于“对角线”模式-结果示例1
图15
1500 将additionalChecks应用于“对角线”模式-结果示例2
图16
1600 将additionalChecks应用于“对角线”模式-结果示例3
图17
1700 将additionalChecks应用于“对角线”模式-结果示例4
图18
1800 replacePosition流程图
图19
1900 包含replacePosition的LDMVP列表生成流程图
图20
2000 将replacePosition应用于“对角线”模式-结果示例5
图21
2100 将replacePosition应用于“对角线”模式-结果示例6
图22
2200 将replacePosition应用于“对角线”模式-结果示例7
图23
2300 将replacePosition应用于“对角线”模式-结果示例8
图24
2400 非调整“日字形”模式
图25
2500 对非调整“日字形”模式位置进行分组
图26
2600 根据分组调整“日字形”模式位置
图27
2700 adjustCandidatePositions流程图
缩略语和词汇定义
MV 运动向量
MVP 运动矢量预测
LDMVP 长距离运动矢量预测值
CTU 编码树单元
LCU 最大编码单元
CU 编码单元

Claims (15)

1.一种运动矢量预测装置,用于生成包括一个或多个运动矢量候选MVC的列表,其特征在于,所述装置包括:
处理电路,用于:
根据以下内容为当前编码单元CU确定所述一个或多个MVC:
-与所述当前CU的位置相对的模式的位置,其中,所述模式定义运动矢量MV的位置,所述模式可根据所述模式在视频帧内相对于所述当前CU的大小进行调整,所述模式的位置是长距离运动矢量预测LDMVP模式的位置,所述LDMVP模式是相对于当前块位置的偏移的集合,以及
-所述当前CU在编码树单元CTU内的位置。
2.根据权利要求1所述的装置,其特征在于,所述处理电路还用于从多个模式位置中选择MV位置子集。
3.根据权利要求2所述的装置,其特征在于,所述选择MV位置子集包括从所述多个模式位置中选择在所述当前CTU内的MV位置。
4.根据权利要求2所述的装置,其特征在于,所述选择MV位置子集通过从所述多个模式位置中排除不可用和/或未存储在缓冲器中的多个MV位置来执行。
5.根据权利要求4所述的装置,其特征在于,所述处理电路还用于为所述当前CU确定所述一个或多个MVC,包括将所述多个排除的MV位置中的一个或多个MV位置替换为替代MV位置,其中,所述替代MV位置根据所述多个排除的MV位置确定,以满足一个或多个预定条件。
6.根据权利要求5所述的装置,其特征在于,所述一个或多个预定义条件包括所述替代MV位置可用和/或存储在所述缓冲器中的条件。
7.根据权利要求5或6所述的装置,其特征在于,所述替代MV位置满足与所述多个排除的MV位置之间具有最短距离的条件。
8.根据权利要求4所述的装置,其特征在于,所述处理电路还用于为所述当前CU确定所述一个或多个MVC,包括将所述多个排除的MV位置调整到已调整MV位置,其中,确定所述已调整MV位置为可用和/或存储在所述缓冲器中。
9.根据权利要求8所述的装置,其特征在于,所述确定已调整MV位置包括沿x方向和/或y方向将所述多个排除的MV位置分配到已分配MV位置,其中,所述x方向和所述y方向以像素坐标表示,其中,x像素轴沿所述当前CTU的宽度方向,y像素轴沿所述当前CTU的高度方向。
10.根据权利要求9所述的装置,其特征在于,所述确定包括使用预定方式将一个或多个已分配MV位置中的x位置或y位置重新分配到已重新分配的y位置或x位置,其中,所述一个或多个已分配MV位置和原始模式位置具有相同的x位置或相同的y位置。
11.根据权利要求10所述的装置,其特征在于,所述预定方式为将所述一个或多个已分配MV位置中的y或x分量位移一个偏移值。
12.一种用于对视频帧中的当前编码单元CU进行编码的编码器,其特征在于,所述编码器包括:
根据权利要求1至11中任一项所述的装置,用于生成包括一个或多个MVC的列表;
帧间预测单元,用于根据所述列表内的所述一个或多个MVC中的至少一个运动矢量MV确定所述当前CU的预测值;
压缩单元,用于使用所述CU的预测值对所述当前CU进行编码。
13.一种用于对视频帧中的当前编码单元CU进行解码的解码器,其特征在于,所述解码器包括:
根据权利要求1至11中任一项所述的装置,用于生成包括一个或多个MVC的列表;
帧间预测单元,用于根据所述列表内的所述一个或多个MVC中的至少一个运动矢量MV确定所述当前CU的预测值;
解压缩单元,用于使用所述CU的预测值对所述当前CU进行解码。
14.一种运动矢量预测方法,用于生成包括一个或多个运动矢量候选MVC的列表,其特征在于,所述方法包括以下步骤:
根据以下内容为当前编码单元CU确定所述一个或多个MVC:
-与所述当前CU的位置相对的模式的位置,其中,所述模式定义运动矢量MV的位置,所述模式可根据所述模式在视频帧内相对于所述当前CU的大小进行调整,所述模式的位置是长距离运动矢量预测LDMVP模式的位置,所述LDMVP模式是相对于当前块位置的偏移的集合,以及
-所述当前CU在编码树单元CTU内的位置。
15.一种存储程序的计算机可读非瞬时性介质,其特征在于,所述计算机可读非瞬时性介质包括指令;当所述指令在处理器上执行时,所述处理器执行根据权利要求14所述的方法。
CN201980020414.1A 2018-05-31 2019-05-31 受限长距离运动矢量预测方法及装置 Active CN111869215B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862679009P 2018-05-31 2018-05-31
US62/679,009 2018-05-31
US201862693345P 2018-07-02 2018-07-02
US62/693,345 2018-07-02
PCT/RU2019/050073 WO2019231362A1 (en) 2018-05-31 2019-05-31 Method and apparatus for restricted long-distance motion vector prediction

Publications (2)

Publication Number Publication Date
CN111869215A CN111869215A (zh) 2020-10-30
CN111869215B true CN111869215B (zh) 2023-06-06

Family

ID=68698859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980020414.1A Active CN111869215B (zh) 2018-05-31 2019-05-31 受限长距离运动矢量预测方法及装置

Country Status (4)

Country Link
US (1) US20200351493A1 (zh)
EP (1) EP3744099A4 (zh)
CN (1) CN111869215B (zh)
WO (1) WO2019231362A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020058955A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Multiple-hypothesis affine mode
WO2020084470A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Storage of motion parameters with clipping for affine mode

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107027038A (zh) * 2016-01-29 2017-08-08 谷歌公司 动态参考运动矢量编码模式

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8711940B2 (en) * 2010-11-29 2014-04-29 Mediatek Inc. Method and apparatus of motion vector prediction with extended motion vector predictor
US9392268B2 (en) * 2012-09-28 2016-07-12 Qualcomm Incorporated Using base layer motion information
KR102378459B1 (ko) * 2014-06-30 2022-03-24 한국전자통신연구원 움직임 병합 모드에서 시점 합성 예측 후보의 중복성 제거 장치 및 방법
CA2965720C (en) * 2014-11-20 2020-04-14 Hfi Innovation Inc. Method of motion vector and block vector resolution control
US10951912B2 (en) * 2016-10-05 2021-03-16 Qualcomm Incorporated Systems and methods for adaptive selection of weights for video coding
CN116567236A (zh) * 2016-12-16 2023-08-08 夏普株式会社 图像解码方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107027038A (zh) * 2016-01-29 2017-08-08 谷歌公司 动态参考运动矢量编码模式

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
HEVC中Merge模式候选决策的探究和优化;辛亚坤;《微型机与应用》;20160810(第15期);全文 *
Interpolated Candidate Motion Vectors for Boundary Matching Error Concealment Technique in Video;S. Garg等;《IEEE Transactions on Circuits and Systems II: Express Briefs 》;20061023;全文 *
JVET-J0029,Description of SDR video coding technology proposal by Tencent;Xiang Li等;《JVET-J0029》;20180406;第2.1.10.5节、图3 *
JVET-J0058,Merge mode modification on top of Tencent’s software in response to CfP;Jing Ye等;《JVET-J0058》;20180412;第2节、图1 *
JVET-J0059, Enhanced Merge Mode based on JEM7.0;Jicheng An;《JVET-J0059》;20180415;摘要,2.1节 *

Also Published As

Publication number Publication date
CN111869215A (zh) 2020-10-30
EP3744099A1 (en) 2020-12-02
US20200351493A1 (en) 2020-11-05
WO2019231362A1 (en) 2019-12-05
EP3744099A4 (en) 2021-03-10

Similar Documents

Publication Publication Date Title
CN113039798B (zh) 解码设备实现的译码方法及解码器
US11523111B2 (en) Encoder, a decoder and corresponding methods using an adaptive loop filter
CN112913250B (zh) 编码器、解码器及对任意ctu尺寸使用ibc搜索范围优化的对应方法
CN115361549B (zh) 一种使用基于历史的运动矢量预测的编码器、解码器及相应方法
CN113841405B (zh) 用于帧间预测的局部光照补偿的方法和设备
CN113796071A (zh) 编码器、解码器及用于ibc融合列表的相应方法
US11936900B2 (en) Method and apparatus for motion vector prediction
CN113196783B (zh) 去块效应滤波自适应的编码器、解码器及对应方法
CN114885159B (zh) 位置相关预测组合的模式相关和大小相关块级限制的方法和装置
CN115348449B (zh) 编码器,解码器和使用压缩mv存储的对应方法
CN111526362B (zh) 帧间预测方法和装置
CN114450958B (zh) 用于减小增强插值滤波器的内存带宽的仿射运动模型限制
CN115836527A (zh) 编码器、解码器及用于自适应环路滤波的对应方法
CN114009041A (zh) 双向预测光流计算和双向预测校正中用于块级边界样本梯度计算的整数网格参考样本位置的计算方法
CN111869215B (zh) 受限长距离运动矢量预测方法及装置
CN112135137B (zh) 视频编码器、视频解码器及相应方法
CN113711601A (zh) 用于推导当前块的插值滤波器索引的方法和装置
CN116962682A (zh) 用于指示条带的图像分割信息的解码器及对应方法
WO2021006773A1 (en) Motion field storage optimization for the line buffer

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