CN111886870B - 使用整数像素分辨率的运动矢量修正搜索 - Google Patents

使用整数像素分辨率的运动矢量修正搜索 Download PDF

Info

Publication number
CN111886870B
CN111886870B CN201980020898.XA CN201980020898A CN111886870B CN 111886870 B CN111886870 B CN 111886870B CN 201980020898 A CN201980020898 A CN 201980020898A CN 111886870 B CN111886870 B CN 111886870B
Authority
CN
China
Prior art keywords
motion vector
search space
block
integer
sample
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
CN201980020898.XA
Other languages
English (en)
Other versions
CN111886870A (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 CN111886870A publication Critical patent/CN111886870A/zh
Application granted granted Critical
Publication of CN111886870B publication Critical patent/CN111886870B/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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/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/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/55Motion estimation with spatial constraints, e.g. at image or region borders
    • 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/563Motion estimation with padding, i.e. with filling of non-object values in an arbitrarily shaped picture block or region for estimation purposes
    • 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/57Motion estimation characterised by a search window with variable size or shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Landscapes

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

Abstract

一种方法涉及采用模板匹配或双边匹配的运动矢量确定。首先,获得候选运动矢量,并将其映射到相应代表(代表运动矢量)。特别地,如果获得的候选运动矢量指向分数位置,并因此需要根据整数样本位置进行插值,则将初始运动矢量取整到最接近的整数样本位置。然后,使用取整后的位置来定义用于模板匹配或双边匹配的搜索空间,以确定块的最优匹配运动矢量(换句话说,确定初始运动矢量的修正,候选空间围绕该初始运动矢量扩展)。最后,可以还原映射操作以获得原始搜索空间中的结果。

Description

使用整数像素分辨率的运动矢量修正搜索
技术领域
本发明实施例涉及运动矢量的确定和修正,其可以应用于视频的编解码中。
背景技术
目前的混合视频编解码器采用预测编码。视频序列的图像被细分为像素块,然后对这些块进行编码。利用在空间或时间上接近于块的已编码的像素来预测整个块,而不是逐像素对块进行编码。编码器仅用于进一步处理块与其预测块之间的差。所述进一步处理通常包括将块像素转换为变换域中的系数。然后,可以通过量化进一步压缩系数,并通过熵编码进一步压缩系数以形成比特流。比特流还包括使解码器能够解码已编码的视频的任何信令信息。例如,信令可以包括有关编码器的设置,例如输入图像的大小、帧速率、量化步长指示、应用于图像块的预测等。
时间预测利用了视频图像的时间上的相关性,视频图像也称为视频帧。时间预测也称为帧间预测,因为时间预测是利用(帧间)不同视频帧之间的依赖关系的预测。相应地,用一个或多个先前已编码的图像(也称为参考图像)预测正在编码的块(也称为当前块)。根据视频序列的显示顺序,参考图像不一定是当前块所在的当前图像之前的图像。编码器可以采用不同于显示顺序的编码顺序对图像进行编码。可以确定参考图像中的共位块为当前块的预测块。所述共位块是与当前图像中的当前块位于相同位置的参考图像中的块。这种预测对于静止图像区域(即没有从一个图像移动到另一个图像的图像区域)是准确的。
为获得一个考虑了运动的预测值,即运动补偿预测值,在确定所述当前块的预测块时通常采用运动估计。相应地,所述当前块使用所述参考图像中的块来预测,所述块位于与所述共位块的位置间隔运动矢量给定的距离内。为了使解码器能够确定所述当前块的相同预测块,可以在比特流中指示运动矢量。为了进一步减少向每个块指示运动矢量带来的信令开销,可以估计运动矢量本身。可以基于空域和/或时域中的相邻块的运动矢量来进行运动矢量估计。
可以使用一个参考图像或通过加权从两个或多个参考图像获得的预测块来计算所述当前块的预测块。所述参考图像可以是相邻图像,即在所述显示顺序中紧接在所述当前图像之前和/或紧接在所述当前图像之后的图像,因为相邻图像最有可能与所述当前图像相似。然而,通常情况下,所述参考图像也可以是在所述显示顺序中位于当前图像之前或之后、在比特流(解码顺序)中位于当前图像之前的任何其他图像。这在视频内容被遮挡和/或非线性移动的情况下可以提供优势。因此,也可以在比特流中指示参考图像识别。
帧间预测的一种特殊模式是所谓的双向预测,在双向预测中使用两个参考图像来生成当前块的预测块。特别地,将在所述相应的两个参考图像中确定的两种预测块组合成所述当前块的预测信号。与单向预测(即仅使用单个参考图像的预测)相比,双向预测能够更精确地预测当前块。预测越准确,所述当前块与所述预测块的像素之间的差(也称为“残差”)就越小,可以更有效地编码,即压缩为更短的比特流。通常,可以使用两个以上的参考图像来找到相应的两个以上的参考块来预测所述当前块,即可以应用多参考帧间预测。因此,术语“多参考预测”包括双向预测以及使用两个以上参考图像的预测。
为了提供更准确的运动估计,可以通过在像素之间插值样本来增强参考图像的分辨率。分数像素插值可以通过对最近像素进行加权平均来实现。例如,在半像素分辨率的情况下,通常使用双线性插值。通过最接近像素与正在预测的像素之间的距离的倒数对最接近像素进行加权,然后对加权值取平均值,计算得到其它分数像素。
运动矢量估计是一项复杂的计算任务,用来计算所述当前块与所述参考图像中候选运动矢量指向的对应预测块之间的相似度。典型地,搜索区域包括M×M个图像样本,并且测试M×M个候选位置中的每个样本位置。测试包括计算位于所述搜索区域的已测试的候选位置的N×N个参考块C与块R之间的相似性度度量。为简单起见,绝对差总和(sumofabsolute differences,SAD)是经常使用的一个度量,其计算方法如下:
Figure GDA0002692723160000021
在上述公式中,x和y定义了搜索区域内的候选位置,而索引i和j表示参考块C和候选块R内的样本。候选位置通常称为块位移或偏移,反映块匹配表示为参考块在搜索区域内的移位,并计算参考块C与搜索区域的重叠部分之间的相似度。为了降低复杂度,通常通过将候选运动矢量限制在某个搜索空间内来减少候选运动矢量的数量。例如,所述搜索空间可以由与所述当前图像中的所述当前块的位置对应的所述参考图像中的位置周围的像素的数量和/或位置来定义。计算所有M×M个候选位置x和y的SAD之后,最佳匹配块R是在产生最小SAD的位置上的块,所述最小SAD与所述参考块C的最大相似度对应。另一方面,候选运动矢量可以通过由相邻块的运动矢量组成的候选运动矢量列表来定义。
运动矢量通常至少部分在编码端确定,并在已编码的比特流中向解码器指示。然而,也可以在解码器处推导出所述运动矢量。在这种情况下,当前块在解码器处不可用,并且不能用于计算与参考图像中候选运动矢量指向的块的相似度。因此,使用从已解码的块的像素中构建的模板来代替所述当前块(“模板匹配”)。例如,可以使用与所述当前块相邻的已解码的像素。这种运动估计具有减少信令的优点。所述运动矢量在编码器和解码器处以相同方式进行推导,因此不需要信令。另一方面,这种运动估计的准确性可能较低。
在双向预测的情况下,除了使用模板以外,还可以使用不同参考图像中候选运动矢量所指向的候选预测块之间的比较(“双边匹配”),这将在下文进一步描述。
为了平衡准确性和信令开销,可将运动矢量估计分为两个步骤:运动矢量推导和运动矢量修正。例如,运动矢量推导可以包括从候选运动矢量列表中选择运动矢量。例如,可以通过在搜索空间内进行搜索进一步修正此类已选择的运动矢量。在所述搜索空间内基于计算每个候选运动矢量(即对于所述候选运动矢量指向的块的每个候选位置)的成本函数进行搜索。
文件号JVET-D0029:X.Chen、J.An、J.Zheng发表的Decoder-Side MotionVectorRefinement Based on Bilateral Template Matching(基于双边模板匹配的解码端运动矢量修正)(文档获取网址http://phenix.it-sudparis.eu/jvet/)介绍了运动矢量修正,其中,找到整像素分辨率的第一运动矢量,并通过在第一运动矢量周围的搜索空间中以半像素分辨率进行搜索来进一步修正第一运动矢量。
为了进行运动矢量的修正,需要至少将为了执行修正当前块所必需的那些样本存储在存储器中,这些样本即对应于搜索空间的样本以及在搜索空间中进行模板匹配或双边匹配时可以访问的样本。
外部存储器访问是当前硬件架构和/或软件实现中的一个重要设计参数。这是因为外部存储器访问比使用内部存储器的处理速度更慢。另一方面,例如由于芯片大小实现的原因,芯片上的内部存储器是有限的。
发明内容
本公开例如基于以下观察:当运动矢量修正与分数插值联合实施时,可能需要进一步增加片上存储器大小,甚至增加外部存储器访问。这两种选择可能都不理想。此外,当初始运动矢量指向分数位置(即具有分数坐标的位置)时,包括彼此距离1个样本或1个样本的倍数的样本的搜索空间和初始运动矢量产生全部需要插值的分数位置。
鉴于上述问题,本公开提供运动矢量预测,能够考虑外部存储器的访问次数以及对编码块的运动矢量进行运动矢量修正时必须要访问的样本的数量。
这可以通过在初始运动矢量坐标为分数的情况下对其取整来实现。通过还原由取整引入的位置移位以最终确定预测块的运动矢量,可以进一步提高准确性。
术语“编码块”、“预测块”、或仅“块”通常用于描述图像帧的矩形分区。此外,编码块通常描述图像帧中与预测块相同的分区。然而,一些视频编码标准(如H.265)可能允许将编码块分为一个以上的预测块。在整个申请文件中,术语编码块、预测块、和块可以互换使用。
这通过独立权利要求中的特征来实现。
根据本发明的一个方面,提供了一种用于确定块(预测块)(例如视频图像的块)的运动矢量的装置,该装置包括处理电路,该处理电路用于获得至少两个候选运动矢量,上述至少两个候选运动矢量指向参考图像中的位置并形成搜索空间,并且该处理电路用于通过对上述参考图像中的上述位置进行移位操作(例如预定移位操作),分别修改每个候选运动矢量。由此,获得了修改的搜索空间中的相应代表运动矢量,上述修改的搜索空间由至少两个代表运动矢量形成。该处理电路还用于通过在上述修改的搜索空间中评估标准(例如预定标准),从上述修改的搜索空间中选择第一运动矢量,并用于通过对第一运动矢量应用获得第一运动矢量的上述移位操作的逆移位操作,获得第二运动矢量。
特别地,上述移位操作可以包括将具有分数位置的候选运动矢量取整到合适的整数位置,即,从候选运动矢量的分数位置移位到代表运动矢量的整数位置。此类装置提供的优点是减少了模板匹配所需的分数位置的数量,一方面,由于需要更少的插值操作,因此这降低了复杂度,另一方面,由于减少了分数位置的数量并因此也减少了分数位置的插值所需的整数样本位置的数量,因此减少了存储器访问窗口所需的额外整数样本的数量。
根据实施例,处理电路还用于输出第二运动矢量作为上述块的运动矢量。
根据其他实施例,处理电路还用于,基于另一标准(例如另一预定标准)的判断,决定是输出上述第一运动矢量作为上述块的运动矢量,还是获得并输出第二运动矢量作为上述块的运动矢量。
更具体地,上述另一标准可以是上述第一运动矢量是否等于上述修改的搜索空间的特定代表运动矢量。根据该标准,如果判断为否,则输出上述第一运动矢量,如果判断为是,则获得并输出上述第二运动矢量。例如,特定代表运动矢量可以是与初始搜索空间中的候选运动矢量中的预设“初始”运动矢量对应的代表运动矢量,初始搜索空间围绕该初始运动矢量构建。在本说明书中,这种预设初始运动矢量有时将称为“锚运动矢量”。例如,该初始运动矢量可以是从编码器发送至解码器的比特流中包括的单个运动矢量。
根据实施例,候选运动矢量中的至少一个候选运动矢量指向分数样本位置,并且上述移位操作得到上述代表运动矢量所指向的位置,上述代表运动矢量通过将上述至少一个候选运动矢量所指向的分数位置取整为整数样本位置给出。
另外,根据实施例,上述修改的搜索空间由彼此间隔整数样本步长的样本位置组成。
更具体地,上述修改的搜索空间由彼此间隔整数距离的行和列中的K行和L列样本组成,其中,对上述分数位置取整得到的上述整数样本位置是上述修改的搜索空间的样本之一。当指向分数样本位置的候选运动矢量之一被取整到整数样本位置,并且修改的搜索空间中的其他位置与该整数样本位置的间隔为整数样本步长时,更是如此。
根据一个示例,取整的分数位置基本位于上述修改的搜索空间的中心。
在一个示例中,上述取整获得与初始运动矢量所指向的分数位置最接近的整数样本位置。
在一个示例中,如果存在一个以上与上述分数位置等同接近的整数样本位置,则上述取整获得预定方向上的整数样本位置,该预定方向是左侧、右侧、上方、或下方
在另一示例中,如果存在一个以上与上述分数位置等同接近的整数样本位置,则搜索空间为位于上述一个以上与上述分数位置等同接近的整数样本位置上的搜索空间之和。
在另一示例中,如果存在一个以上与上述分数位置等同接近的整数样本位置,则上述取整获得上述等同接近的整数样本位置中使得取整后的初始运动矢量的幅值更小的整数样本位置。
根据实施例,获得至少两个候选运动矢量对,使得每对中的候选运动矢量指向不同参考图像中的位置。相应地,这些候选运动矢量形成每个参考图像中的搜索空间。在实施例中,上述处理电路适于对上述对中的候选运动矢量执行根据本发明上述方面的处理,以获得第一运动矢量对和第二运动矢量对。特别地,如果对中的代表运动矢量是通过将分数位置取整到整数样本位置获得的,并且如果存在一个以上与上述分数位置等同接近的整数样本位置,则对任意搜索空间中的候选运动矢量中的至少一个候选运动矢量进行取整,从而获得不同的代表运动矢量对。
更具体地,在处理指向不同参考图像的候选运动矢量对的情况下,上述处理电路用于通过在参考图像中的上述修改的搜索空间中的代表运动矢量对之间执行双边匹配,选择上述第一运动矢量对。
更具体地,上述双边匹配包括为代表运动矢量对生成预测作为候选预测块,并通过比较对中的代表运动矢量所指向的上述候选预测块,计算双边匹配成本函数。使双边匹配成本函数最小化的代表运动矢量对被确定为上述第一运动矢量对。例如,双边匹配成本函数可以是两个参考图像中的候选预测块的绝对差和(sum of absolute difference,SAD)。换句话说,在这种情况下,本发明上述方面的标准是使双边匹配成本函数最小化。
更具体地,上述处理电路还用于,在指向上述相应参考图像的对中的上述候选运动矢量与当前图像和参考图像之间的时间差成比例的情况下,定义候选运动矢量对,其中,针对上述候选运动矢量对获得代表运动矢量,并为上述代表运动矢量计算上述双边匹配成本函数。
更具体地,获得的上述候选运动矢量对之一被设为锚候选运动矢量对。此外,假设两个参考图像的时间差的绝对值(即,当前图像和参考图像之间的时间差的绝对值)相同。在这种情况下,上述候选运动矢量对可以在以下条件下定义:任意对中指向第一参考图像中的位置的候选运动矢量与锚候选运动矢量对中指向第一参考图像的相应候选运动矢量之间的差以及任意对中指向第二参考图像中的位置的候选运动矢量和锚候选运动矢量对中指向第二参考图像的相应候选运动矢量对之间的差彼此镜像。上述差可以在取整之前在搜索空间中计算。如上所述,锚候选运动矢量是特定候选运动矢量,搜索空间围绕该特定候选运动矢量构建。例如,该锚候选运动矢量可以是在比特流中发送的候选运动矢量,而通过对其进行轻微的移位修改(例如,小移位),包括其他候选运动矢量的搜索空间围绕该锚运动矢量构建。镜像意味着差值矢量的幅度相同,而差值矢量的方向相反。
在其他实施例中,处理电路还用于获得上述块(预测块)的模板,并通过在上述修改的搜索空间中与上述模板进行模板匹配,选择上述第一运动矢量。
更具体地,上述模板匹配包括为代表运动矢量生成预测作为候选编码块,并通过比较上述代表运动矢量所指向的候选预测块与上述模板,计算模板匹配成本函数。然后,使模板成本函数最小化的上述代表运动矢量被选择为上述第一运动矢量。例如,模板匹配成本函数可以是候选编码块相对于模板的SAD。换句话说,在这种情况下,本发明上述方面的标准是使模板匹配成本函数最小化。
根据实施例,上述候选运动矢量中的至少一个候选运动矢量指向分数样本位置,并且上述移位操作产生上述代表运动矢量所指向的位置,上述代表运动矢量通过将上述至少一个候选运动矢量所指向的分数位置取整为整数样本位置得到,上述处理电路还用于:为指向分数样本位置的候选运动矢量计算模板匹配或双边匹配的成本;比较计算的分数样本位置的模板匹配或双边匹配的成本与选择的第一运动矢量的模板匹配或双边匹配的成本;以及如果选择的第一运动矢量的模板匹配或双边匹配的成本不低于计算的分数样本位置的模板匹配或双边匹配的成本,则基于上述分数样本位置确定预测块的运动矢量。
上述处理电路还可以用于对搜索空间执行模板匹配或双边匹配,上述搜索空间的上述样本位置通过以下多个步骤确定,该步骤包括:确定由彼此间隔整数样本步长的样本位置组成的整数搜索空间;在上述整数搜索空间中执行模板匹配或双边匹配,以获得最优匹配整数位置;基于上述最优匹配整数位置确定分数搜索空间,该分数搜索空间的至少一个样本与最近的整数搜索空间样本位置的间隔小于整数样本步长;以及在上述分数搜索空间中执行模板匹配或双边匹配,以获得最优匹配位置。
根据其他实施例,执行双边匹配或模板匹配的上述搜索空间包括一个或多个分数样本位置。属于上述搜索空间的每个分数样本位置都是使用预定义抽头大小的滤波器进行插值滤波获得的,其中上述滤波器仅评估窗口内的整数样本。上述窗口由在上述搜索空间中执行模板匹配或双边匹配时可访问的整数样本组成。
根据本发明的一个方面,提供了一种用于对块(预测块)进行编码的装置,该装置包括:如上所述的用于确定块的运动矢量的装置;以及编码单元(其可以包括在处理电路中),用于对上述块和根据运动矢量获得的预测值之间的差进行编码,从而产生比特流。
根据实施例,根据上述方面的编码装置还包括运动预测单元(其可以包括在处理电路中),该运动预测单元用于使用插值滤波器进行插值,根据上述运动矢量确定上述预测值。上述插值访问窗口(例如预定窗口)内的整数样本位置处的样本值,用基于上述窗口内的至少一个样本获得的填充值(替换值)填充(替换)位于上述窗口外的整数样本位置的(或对应于该整数样本位置的)至少一个样本值,并使用访问的整数样本位置值以及填充值(替换值)执行上述插值。
换句话说,处理电路可以用于通过使用插值滤波器进行插值(插值滤波),根据修正的运动矢量确定预测值,并用于使用位于窗口内的整数样本位置的至少一个样本值以及位于窗口外的整数位置的填充样本值进行插值(插值滤波),其中上述填充样本基于位于窗口内的整数样本的至少一个样本值。
具体地,上述窗口由获得如下预测值时可访问的所有整数样本位置组成:该预测值由候选运动矢量所指定的位置中的预测块给出。
具体地,获得的候选运动矢量之一被设为锚候选运动矢量,并且上述窗口由相对于以下至少之一的垂直尺寸和/或水平尺寸定义:位于上述锚候选运动矢量的上述候选运动矢量位置上的块尺寸,上述候选运动矢量的上述位置,以及用于获得上述预测值的上述插值滤波器的垂直长度和水平长度。
根据本发明的另一方面,提供了一种用于从比特流中解码块(预测块)的装置,该装置包括:解码单元(其可以包括在处理电路中),用于从上述比特流中解码上述块和根据运动矢量获得的预测值之间的差;如上所述的用于确定块的运动矢量的装置;运动预测单元(其包括在处理电路中),用于根据运动矢量确定预测值;以及重建器(其可以包括在处理电路中),用于根据上述预测值和解码的差重建上述预测块。
根据实施例,在根据另一方面的解码装置中,运动预测单元用于使用插值滤波器进行插值来确定预测值。上述插值访问窗口(例如预定窗口)内的整数样本位置处的样本值,用基于上述窗口内的至少一个样本的填充值(替换值)填充(替换)位于上述窗口外的整数样本位置的(或与该整数样本位置对应的)至少一个样本值,并使用访问的整数样本位置值以及填充值(替换值)执行上述插值。
换句话说,处理电路可以用于通过使用插值滤波器进行插值(插值滤波),根据修正的运动矢量确定预测值,并用于使用位于窗口内的整数样本位置的至少一个样本值以及位于窗口外的整数位置的填充样本值进行插值(插值滤波),其中上述填充样本基于位于窗口内的整数样本的至少一个样本值。
具体地,上述窗口由获得如下预测值时可访问的所有整数样本位置组成:该预测值由候选运动矢量所指定的位置中的预测块给出。
具体地,获得的候选运动矢量之一被设为锚候选运动矢量,并且上述窗口由相对于以下至少之一的垂直尺寸和/或水平尺寸定义:位于上述锚候选运动矢量的上述候选运动矢量位置上的块尺寸,上述候选运动矢量的上述位置,以及用于获得上述预测值的上述插值滤波器的垂直长度和水平长度。
根据本发明的一个方面,提供了用于确定块(预测块)的运动矢量的方法,该方法包括以下步骤:获得至少两个候选运动矢量,上述至少两个候选运动矢量指向参考图像中的位置并形成搜索空间;通过对上述参考图像中的上述位置进行移位操作(例如预定移位操作),分别修改每个候选运动矢量,以获得修改的搜索空间中的相应代表运动矢量,上述修改的搜索空间由这两个代表运动矢量形成;通过在上述修改的搜索空间中评估标准(例如预定标准),从上述修改的搜索空间中选择第一运动矢量;通过对上述第一运动矢量应用获得该第一运动矢量的上述预定移位操作的逆移位操作,获得第二运动矢量。
根据本发明的另一方面,提供了一种用于确定块(预测块)的运动矢量的方法,该方法包括以下步骤:获得至少两个候选运动矢量,上述至少两个候选运动矢量指向参考图像中的位置并形成搜索空间;通过对上述参考图像中的上述位置进行移位操作(例如预定移位操作),分别修改每个候选运动矢量,以获得修改的搜索空间中的相应代表运动矢量,上述修改的搜索空间由这两个代表运动矢量形成;通过在上述修改的搜索空间中评估第一标准(例如第一预定标准),从上述修改的搜索空间中选择第一运动矢量;基于第二标准(例如第二预定标准)的判断,决定是输出上述第一运动矢量作为上述预测块的运动矢量,还是通过应用获得上述第一运动矢量的上述移位操作的逆移位操作获得第二运动矢量并输出该第二运动矢量作为上述预测块的运动矢量;以及如果在上述决定步骤中决定获得上述第二运动矢量,则获得上述第二运动矢量。
根据本发明的一个方面,提供了一种用于对块(预测块)进行编码的方法,该方法包括以下步骤:根据任一上述方面、实施例、和示例确定上述块的运动矢量;对上述块和根据上述运动矢量获得的预测值之间的差进行编码,从而产生比特流。
根据本发明的一个方面,提供了从比特流中解码块(预测块)的方法,该方法包括以下步骤:从上述比特流中解码上述块和根据运动矢量获得的预测值之间的差;根据任一上述方面、实施例、和示例的方法确定上述块的运动矢量;根据上述运动矢量确定上述预测值;根据上述预测值和解码的差重建所述块。
根据本发明的一个方面,提供了一种存储指令的非暂时性计算机可读存储介质,当在处理器/处理电路上执行时,执行根据上述方面或实施例或其组合的步骤。
本发明的其他优势和实施例在从属权利要求中阐述。
附图说明
下文将参考附图详细描述示例实施例,其中:
图1是可进行根据本发明的运动矢量推导的编码器的示例性结构的框图;
图2是可进行根据本发明的运动矢量推导的解码器的示例性结构的框图;
图3是适用于双向预测的示例性模板匹配的示意图;
图4是适用于单向预测和双向预测的示例性模板匹配的示意图;
图5是在没有在比特流中提供要修正的初始运动矢量的情况下操作的运动矢量推导各阶段的框图;
图6是示出双边匹配的概念的示意图;
图7是示出用于实现本发明实施例的示例性硬件的框图;
图8是示出用于码块的具有可访问样本的示例性窗口的示意图;
图9是示出迭代搜索空间的示意图;
图10是示出存储器访问窗口由于插值滤波而在水平方向上扩展的示意图;
图11是基于搜索空间执行运动矢量推导和通过插值获得预测的传统方案的图示;
图12是示出根据图11的传统示例的运动矢量推导和获得预测的流程图;
图13是根据本发明示例性实施例基于搜索空间执行运动矢量推导的方案的图示;
图14是示出根据示例的运动矢量推导的流程图;
图15是示出根据本发明示例性实施例的运动矢量推导的流程图;
图16是示出根据本发明另一示例性实施例的运动矢量推导的流程图;
图17是示出分数候选运动矢量调整的示意图;
图18是示出分数样本位置的子窗口的定义的示意图;
图19是示出在没有对初始运动矢量坐标进行取整的情况下获得的搜索空间以及在对初始运动矢量坐标进行取整的情况下获得的搜索空间之间的比较的示意图;
图20示出了对分数(半像素)样本位置执行取整的自适应方案,以获得整数样本位置对的唯一集合;
图21A是示出不对初始运动矢量进行取整的运动矢量修正的流程图;
图21B是示出将初始运动矢量取整到预定整数位置的运动矢量修正的流程图;
图21C是示出不将初始运动矢量取整到多个整数位置的运动矢量修正的流程图;
图22是示出分数样本位置的子窗口的定义的示意图;
图23是示出包括分数位置的示例性位置的示意图,该分数位置能够形成用于运动矢量推导的搜索空间位置;
图24是示出示例性分数位置的示意图,该分数位置不能形成用于运动矢量推导的搜索空间位置;
图25是示出用于确定搜索空间的哪个位置允许由模板匹配测试用于运动矢量修正的方法的流程图;
图26是示出填充两个样本以实现分数位置计算的示意图;
图27是示出填充四个样本以实现搜索空间边界上的模板匹配的示意图;
图28是根据本发明示例性实施例的基于修改的搜索空间执行运动矢量推导以及使用填充的样本通过插值获得预测的方案的图示;
图29是示出根据图28的示例的运动矢量推导和获得预测的流程图;
图30是应用样本填充的方法的流程图。
具体实施方式
如上所述,在当今的硬件和软件架构中,外部存储器访问是最重要的设计考虑因素之一。尤其在包括模板匹配或双边匹配(bilateral matching)时,例如在运动矢量修正的情况下,运动矢量估计还可以与插值滤波一起使用以获得搜索空间的分数位置。插值滤波的使用可能需要增加从存储器中访问的样本的数量。然而,这可能增加昂贵的片上存储器,或者增加外部存储访问次数,另一方面减慢了实现速度。特别是在解码器侧,这些问题可能导致应用的成本增加或速度变慢,这是不理想的。
根据本公开,为了限制存储访问窗口,通过确定相对于由移位到最近整数位置的初始候选运动矢量指向的位置的搜索空间来减少或避免分数位置的插值。
图1示出了编码器100,编码器100包括用于接收视频流的帧或图像的输入图像样本的输入和用于生成编码视频比特流的输出。本公开中的术语“帧”用作图像的同义词。然而,应注意的是,在进行隔行扫描(interlacing)的情况下,本公开也适用于场。一般来说,图像包括m乘以n个像素。这与图像样本对应,并且可以包括一个或多个颜色分量。为了简单起见,以下描述均指像素,即亮度样本。然而,应注意的是,本发明的运动矢量搜索可以应用于包括色度的任何颜色分量或RGB等搜索空间的分量。另一方面,仅执行一个分量的运动矢量估计并将确定的运动矢量应用于更多(或所有)分量可能是有益的。
待编码的输入块的大小不一定相同。一个图像可以包括不同大小的块,不同图像的块栅格也可以不同。
在说明性实现中,编码器100用于对视频流进行预测、变换、量化、和熵编码。变换单元106、量化单元108、和熵编码单元170分别执行变换、量化、和熵编码操作,以生成编码视频比特流作为输出。
视频流可以包括多个帧,其中每个帧被划分为一定大小的块,这些块要么进行帧内编码要么进行帧间编码。例如,通过帧内预测单元154对视频流的第一帧的块进行帧内编码。帧内编码帧仅使用同一帧内的信息进行编码,使得该帧能够独立解码,并且可以提供在比特流中用于随机访问的入口点。可以通过帧间预测单元144对视频流的其他帧的块进行帧间编码:使用来自先前已编码的帧(参考帧)的信息来减少时间冗余,从而根据参考帧中的块来预测帧间编码帧中的每个块。模式选择单元160用于选择帧的块将由帧内预测单元154还是由帧间预测单元144处理。该模式选择单元160还控制帧内预测或帧间预测的参数。为了能够刷新图像信息,可以在帧间编码帧内提供帧内编码块。此外,可以定期地将仅包含帧内编码块的帧内编码帧插入到视频序列中,以便提供解码的入口点,即解码器无需从先前编码帧中获得信息就可开始解码的点。
帧内估计单元152和帧内预测单元154是执行帧内预测的单元。具体而言,帧内估计单元152也可以基于原始图像的知识推导出预测模式,而帧内预测单元154提供对应的预测值,即使用所选的预测模式进行预测的样本,以用于差编码(difference coding)。为了执行空间或时间预测,已编码的块可进一步由逆量化单元110和逆变换单元112处理。在块重建之后,环路滤波单元120可用于进一步提高解码图像的质量。然后,经过滤波的块组成参考帧,该参考帧随后存储在解码图像缓冲区130中。编码器侧的这种解码环路(解码器)具有产生与在解码器侧重构的参考图像相同的参考帧的优点。相应地,编码器侧和解码器侧以相应的方式操作。此处术语“重建”是指通过将预测块添加到解码残差块中来获得重建块。
帧间估计单元142接收待进行帧间编码的当前帧或图像的块和来自解码图像缓冲区130的一个或多个参考帧作为输入。运动估计由帧间估计单元142执行,而运动补偿由帧间预测单元144应用。运动估计用于基于某个成本函数获得运动矢量和参考帧,例如,也使用待编码的原始图像。例如,运动估计单元142可提供初始运动矢量估计。然后,初始运动矢量可以直接以矢量的形式在比特流中指示,或者指示为在编码器和解码器中以相同的方式基于预定规则构建的候选列表中的运动矢量候选的索引。然后,运动补偿推导出当前块的预测值作为参考帧中与当前块共位的块到参考帧中参考块的平移,即通过运动矢量描述。帧间预测单元144输出当前块的预测块,其中所述预测块使得成本函数最小化。例如,成本函数可以是待编码的当前块与其预测块之间的差,即该成本函数使得残差块最小化。例如,残差块的最小化是基于计算候选参考图像中当前块与候选块的所有像素(样本)之间的绝对差和(sum ofabsolute differences,SAD)。然而,通常可使用任何其他相似性度量,例如均方误差(meansquare error,MSE)或结构相似性度量(structural similarity metric,SSIM)。
然而,成本函数也可以是编码这种帧间块和/或这种编码产生的失真所需的比特数。因此,率失真优化(rate-distortion optimization)过程可用于决定运动矢量选择和/或一般性地决定编码参数,例如是使用块的帧间预测或还是帧内预测以及使用哪些设置。
帧内估计单元152和帧内预测单元154接收待进行帧内编码的当前帧或图像的块以及来自当前帧的已重建区域的一个或多个参考样本作为输入。然后,帧内预测根据当前帧的参考样本的函数描述当前帧的当前块的像素。帧内预测单元154输出当前块的预测块,其中所述预测块有利地使待编码的当前块与其预测块之间的差最小化,即最小化残差块。例如,残差块的最小化可以基于率失真优化过程。特别地,获取预测块作为参考样本的方向插值。上述方向可以通过率失真优化和/或通过计算上述与帧间预测相关的相似性度量来确定。
帧间估计单元142接收待进行帧间编码的当前帧或图像的块或更通用的格式的图像样本以及两个或两个以上已解码图像131作为输入。然后,帧间预测根据参考图像的参考图像样本的运动矢量来描述当前帧的当前图像样本。帧间预测单元142输出当前图像样本的一个或多个运动矢量,其中,上述运动矢量指向的所述参考图像样本有利地使待编码的当前图像样本与其参考图像样本之间的差最小化,即最小化残差图像样本。然后,由帧间预测单元144提供当前块的预测值,用于差编码。
当前块与其预测块之间的差(即残差块105)随后由变换单元106进行变换。变换系数107由量化单元108进行量化并由熵编码单元170进行熵编码。这样生成的编码图像数据171(即编码视频比特流)包括帧内编码块和帧间编码块以及相应的信令(例如,模式指示、运动矢量指示、和/或帧内预测方向)。变换单元106可应用诸如傅里叶或离散余弦变换(DFT/FFT或DCT)等线性变换。这种向空间频域的转换具有以下优点:所得系数107通常在较低频率具有较高值。因此,在有效系数扫描(例如zig-zag)和量化之后,所得值序列通常在开始具有一些较大值,并在结束时包含一连串零。这使进一步高效编码成为可能。量化单元108通过降低系数值的分辨率来进行实际有损压缩。然后,熵编码单元170将二进制码字分配给系数值以产生比特流。熵编码单元170还对信令信息(图1中未示出)进行编码。
图2示出了视频解码器200。视频解码器200具体包括解码图像缓冲区230、帧间预测单元244、和帧内预测单元254,帧内预测单元254是块预测单元。解码图像缓冲区230用于存储从编码视频比特流重建的至少一个(用于单向预测)或至少两个(用于双向预测)参考帧,所述参考帧不同于编码视频比特流的当前帧(当前解码帧)。帧内预测单元254用于生成预测块,预测块是待解码块的估计。帧内预测单元254用于基于从解码图像缓冲区230获得的参考样本生成该预测块。
解码器200用于解码由视频编码器100生成的编码视频比特流,优选地,解码器200和编码器100为待编码/待解码的相应块生成相同的预测值。解码图像缓冲区230和帧内预测单元254的特征与图1中的解码图像缓冲区130和帧内预测单元154的特征类似。
视频解码器200还包括也存在于视频编码器100中的单元,例如逆量化单元210、逆变换单元212、和环路滤波单元220,分别对应视频编码器100的逆量化单元110、逆变换单元112、和环路滤波单元120。
熵解码单元204用于对接收到的编码视频比特流进行解码,并相应地获得量化残差变换系数209和信令信息。量化残差变换系数209被反馈到逆量化单元210和逆变换单元212以生成残差块。残差块与预测块265相加,并且该相加后的结果被反馈到环路滤波单元220以获得解码视频。解码视频的帧可以存储在解码图像缓冲区230中,并用作用于帧间预测的解码图像231。
通常,图1和图2的帧内预测单元154和254可以使用来自已编码区域的参考样本生成需要编码或解码的块的预测信号。
熵解码单元204接收经编码比特流171作为其输入。通常,首先解析比特流,即从比特流中提取信令参数和残差。通常,比特流的语法和语义由标准定义,以便编码器和解码器可以以共同操作的方式工作。如上文背景部分所述,经编码比特流不仅仅包括预测残差。在运动补偿预测的情况下,运动矢量指示也编码在比特流中并在解码器处解析。运动矢量指示可以通过提供运动矢量的参考图像和运动矢量坐标来给出。到目前为止,已考虑编码完整的运动矢量。但是,也可以仅编码比特流中当前运动矢量与前一运动矢量之间的差。该方法允许利用相邻块的运动矢量之间的冗余。
为了有效地编码参考图像,H.265编解码(ITU-T、H265、H系列:Audiovisualandmultimedia systems:High EfficientVideo Coding(视听和多媒体系统:高效视频编码))提供了一个参考图像列表,将列表索引分配给相应参考帧。然后,通过在比特流中包括相应的分配列表索引,在比特流中指示参考帧。此类列表可以在标准中定义,或者在视频的开头或多个帧的集合中指示。应注意,在H.265中定义了两个参考图像列表,称为L0和L1。然后,通过在比特流中指示列表(L0或L1)并指示该列表中与该所需参考图像相关联的索引来指示参考图像。提供两个或更多列表可能具有更好的压缩优势。例如,L0可用于单向帧间预测切片和双向帧间预测切片,而L1可仅用于双向帧间预测切片。然而,通常,本公开不限于L0和L1列表的任何内容。
列表L0和L1可以在标准中定义并固定。然而,通过在视频序列的开始指示两个列表,可以实现编码/解码的更多灵活性。相应地,编码器可以配置列表L0和L1具有根据索引排序的特定参考图像。列表L0和L1可以具有相同的固定大小。一般来说,可能有两个以上的列表。运动矢量可以直接由参考图像中的坐标指示。或者,如H.265中还规定,可以构建候选运动矢量列表,并且可以传输列表中与特定运动矢量相关联的索引。
当前块的运动矢量通常与当前图像或之前编码图像中的相邻块的运动矢量相关。这是因为相邻块可能对应于具有类似运动的同一运动物体,并且物体的运动不太可能随时间发生突然变化。因此,使用相邻块中的运动矢量作为预测值减小指示的运动矢量差的大小。运动矢量预测值(motion vector predictor,MVP)通常从空间相邻块或共位图像中的时间相邻块中已编码/已解码的运动矢量推导出。在H.264/AVC中,这通过三个空间相邻运动矢量的分量中值来实现。使用这种方法,不需要指示预测值。H.264/AVC的所谓时间直接模式只考虑共位图像的时间MVP。H.264/AVC直接模式也用于推导出除运动矢量之外的其他运动数据。因此,这些模式与HEVC中的块合并(block merging)概念关系更大。在HEVC中,隐式推导出MVP的方法被一种称为运动矢量竞争的技术所取代,该技术显式地指示MVP列表中的哪个MVP用于运动矢量推导。HEVC中的可变编码四叉树块结构可导致具有若干个具有运动矢量的相邻块的一个块作为潜在MVP候选。以左相邻块为例,在最坏的情况下,当64×64亮度编码树块不再进一步划分且左亮度编码树块被划分到最大深度时,64×64亮度预测块可以在左侧具有16个4×4亮度预测块。
引入高级运动矢量预测(advanced motion vector prediction,AMVP)来修改运动矢量竞争,以适应这种灵活的块结构。在HEVC的发展过程中,最初的AMVP设计被大大简化,以更好地平衡编码效率和实现友好设计。AMVP的最初设计包括来自三类不同预测值的五个MVP:来自空间相邻块的三个运动矢量、三个空间预测值的中位数、和来自共位时间相邻块的缩放运动矢量。此外,通过重新排序来将最可能的运动预测值放置在第一位置,并通过删除冗余候选项来确保最小的信令开销,从而修改预测值列表。AMVP候选列表构造的最终设计包括以下两个MVP候选:a)从五个空间相邻块推导出的最多两个空间候选MVP;b)当两个空间候选MVP均不可用或相同时,从两个时间共位块推导出的一个时间候选MVP;和c)当空间MVP、时间MVP、或两种候选MVP均不可用时,零运动矢量。关于运动矢量确定的详细内容,可在2014年V.Sze等人(编者)在施普林格出版社(Springer)发表的书中找到:HighEfficiency VideoCoding(HEVC):Algorithms and Architectures(高效视频编码(HEVC):算法和架构),尤其是第5章,其内容以引用的方式并入本文中。
为了在不进一步增加信令开销的情况下进一步改进运动矢量估计,进一步修正编码器侧推导出的并在比特流中提供的运动矢量可能是有益的。可以在解码器处执行运动矢量修正,而无需编码器的辅助。在解码器环路中的编码器可以采用相同的修正以获得对应的运动矢量。在包括在参考图像的整数像素位置和分数像素位置的搜索空间中执行运动矢量修正。例如,分数像素位置可以是半像素位置或四分之一像素位置或其他分数位置。可以通过双线性插值等插值从整数(全像素)位置获得分数像素位置。
在当前块的双向预测中,使用列表L0的相应第一运动矢量和列表L1的相应第二运动矢量获得的两个预测块被组合到单个预测信号,相比于单向预测,这可以更好地适应原始信号,从而减少残差信息,并可能获得更有效的压缩。
因为在解码器侧,当前块由于正在解码而不可用,所以为了运动矢量修正,使用模板,该模板是当前块的估计值并基于已经处理(即,在编码端编码,在解码端解码)的图像部分进行构建。
首先,在解码器200处接收运动矢量MV0的估计值和运动矢量MV1的估计值作为输入。在编码器侧100,运动矢量估计值MV0和MV1可以通过块匹配和/或通过搜索由与当前块相邻的块(在同一图像中或在相邻图像中)的运动矢量形成的候选列表(例如合并列表)来获得。然后,有利地将MV0和MV1在比特流中指示到解码器侧。然而,应注意的是,一般而言,编码器中的第一确定阶段也可以通过模板匹配(双边匹配)执行,这将提供减少信令开销的优点。
在解码器侧200,有利地基于比特流中的信息获得运动矢量MV0和MV1。MV0和MV1要么直接指示,要么分别指示,和/或指示运动矢量列表(合并列表)中的索引。然而,本发明不限于在比特流中指示运动矢量。相反,运动矢量可以由已经处于第一阶段的模板匹配(或双边匹配)确定,与编码器的操作相对应。可以基于不同于第二修正阶段的搜索空间的搜索空间来执行第一阶段(运动矢量推导)的模板匹配(或双边匹配)。特别地,可以在具有较高分辨率(即搜索位置之间的距离更近)的搜索空间上执行修正。
同样,向解码器提供MV0和MV1分别指向的两个参考图像RefPic0和RefPic1的指示。作为先前处理(即相应的编码和解码)的结果,参考图像存储在编码器侧和解码器侧的解码图像缓冲区中。通过搜索选择其中一个参考图像进行运动矢量修正。用于确定运动矢量的装置的参考图像选择单元用于选择MV0指向的第一参考图像和MV1指向的第二参考图像。在选择之后,参考图像选择单元确定是第一参考图像还是第二参考图像用于进行运动矢量修正。为了进行运动矢量修正,第一参考图像中的搜索空间定义在运动矢量MV0指向的候选位置周围。通过在搜索空间内执行模板匹配(或双边匹配)并确定诸如绝对差和(SAD)的相似性度量,分析搜索区域内的候选搜索空间位置以找到与模板块最相似的块。搜索空间的位置表示模板左上角匹配的位置。如上所述,左上角只是一种约定,通常,搜索空间的任意点(例如中心点)可用于表示匹配位置。
根据上述文件JVET-D0029,解码器侧运动矢量修正(decoder-side motionvectorrefinement,DMVR)将指向两个相应参考图像RefPict0和RefPict1的初始运动矢量MV0和MV1作为输入。这些初始运动矢量用于确定RefPict0和RefPict1中的相应搜索空间。此外,使用运动矢量MV0和MV1,基于MV0和MV1分别指向的(样本的)块A和块B构建模板,如下所示:
模板=函数((块A,块B))。
该函数可以是结合按样本进行加权求和的样本裁剪运算。然后,使用模板在基于相应参考图像0和1中的MV0和MV1确定的搜索空间中执行模板匹配。用于确定相应搜索空间中的最佳模板匹配的成本函数是SAD(模板,块candA’),其中块candA’是指横跨MV0给出的位置的搜索空间中的候选MV指向的候选编码块。图3示出了确定最佳匹配块A’和所得修正运动矢量MV0’。相应地,如图3所示,使用相同的模板来找到最佳匹配块B’和指向块B’的对应运动矢量MV1’。换句话说,在基于初始运动矢量MV0和MV1指向的块A和块B构建模板之后,利用模板在RefPic0和RefPic1上搜索,找到修正运动矢量MV0’和MV1’。
运动矢量推导技术有时也称为帧率上转换(frame rate up-conversion,FRUC)。初始运动矢量MV0和MV1通常可以在比特流中指示,以确保编码器和解码器可以使用同一初始点进行运动矢量修正。或者,可以通过提供包括一个或多个初始候选运动矢量的初始候选运动矢量列表来获得初始运动矢量。对于每个运动矢量,确定修正运动矢量,最终选择使成本函数最小化的修正运动矢量。
还需要注意的是,本发明不限于上文结合图3所述的模板匹配。图4示出了一种同样适用于单向预测的替代模板匹配。详细内容请见文件JVET-A1001,具体是Jianle Chen等人发表的标题为Algorithm Description of Joint Exploration Test Model 1(联合探索测试模型1的算法描述)中的第2.4.6节的Pattern matched motion vector derivation(模式匹配的运动矢量推导),访问网址是http://phenix.it-sudparis.eu/jvet/。这种模板匹配方法中的模板被确定为与当前帧中的当前块相邻的样本。如图4所示,可以采用与当前块的左边界和上边界相邻的已重建样本,称为“L形模板”。
图5示出了另一类也可使用的运动矢量推导。运动矢量推导过程的输入是指示是否进行运动矢量推导的标志位。隐晦地说,推导过程的另一输入是(时间上或空间上)相邻的之前编码/重建的块的运动矢量。将多个相邻块的运动矢量用作运动矢量推导的初始搜索步骤的候选运动矢量。该过程的输出分别为MV0’(如果使用双向预测,则还有MV1’)和对应的参考图像索引refPict0且可能有refPict1。然后,运动矢量修正阶段包括如上所述的模板匹配。在找到修正的一个(单向预测)运动矢量或多个(双向预测/多帧预测)运动矢量后,构建当前块的预测值(对于双向/多帧预测,通过加权样本预测,否则,参考MV修正后指向的样本)。
本发明不限于上述两种模板匹配方法(模板匹配的示例)。例如,称为双边匹配(也在文件JVET-A1001中描述)的第三模板匹配方法也可以用于运动矢量修正,并且本发明同样适用。参考图6解释双边匹配。
根据双边匹配,搜索两个不同参考图像中沿当前块的运动轨迹的两个块之间的最佳匹配。如图6所示,通过找到两个不同参考图像中沿当前块的运动轨迹的两个块之间的最近匹配,使用双边匹配推导出当前块的运动信息。在双边匹配中,可能使用例如SAD(块cand0’,块cand1’)的成本函数,其中MV0指向块cand0’,MV1指向块cand1’。
为了减小计算花销,对于选择合适的运动矢量候选(候选对)(为此计算和比较成本函数),考虑以下条件的实现是有意义的。在连续运动轨迹的假设下,指向两个参考块的运动矢量MV0和MV1应与当前图像和两个参考图像之间的时间距离(即TD0和TD1)成比例。作为特殊情况,当当前图像在时间上处于两个参考图像之间并且从当前图像到两个参考图像的时间距离相同时,多个对中指向一个参考图像的运动矢量和该对中指向另一参考图像的相应运动矢量之间的运动矢量差应该彼此镜像。
图7示出了处理电路600。该处理电路可以包括任何硬件,该配置可以通过任何类型的编程或硬件设计或两者组合来实现。例如,处理电路可以由单个处理器(例如通用处理器)和实现上述步骤的对应软件组成。另一方面,处理电路可以由专用硬件实现,例如专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或数字信号处理器(Digital Signal Processor,DSP)等。
该处理电路可以包括一个或多个上述硬件组件,这些硬件组件互连以执行上述运动矢量推导。处理电路600包括计算逻辑,该计算逻辑实现两种功能:获得初始运动矢量候选或多个初始运动矢量候选以及模板(如果使用模板匹配)610,和运动矢量选择(或运动矢量修正)620。这两个功能可以在同一块硬件上实现,或者可以由单独的硬件单元执行,例如初始运动矢量和模板获取单元610和运动矢量推导单元620。处理电路600可以通信地连接到存储有重建参考图像样本的外部存储器650。此外,处理电路600还可以包括内部存储器640,内部存储器640缓存窗口中从外部存储器传送来的用于确定当前处理块的运动矢量的样本。处理电路可以作为一个集成电路实施在单个芯片上。
需要说明的是,处理电路可以实现参考图1和图2描述的编码器和/或解码器的其它功能。内部存储器可以是片上存储器,例如高速缓存或线路存储器。可以有利地在编码器/解码器芯片上实现芯片存储器,以加快计算速度。由于芯片大小有限,片上存储器通常较小。另一方面,外部存储器可以很大,但是对外部存储器的访问消耗更多的能量,而且访问速度要慢得多。通常,在执行计算之前,所有必要的信息都从外部存储器读取到片上存储器。最坏的情况是,外部存储器访问(或设计存储器总线时所需供应的带宽)表示解码帧或编码单元时的外部存储器与芯片之间的最大可能内存传输量。存储器(特别是外部存储器)通常只能以预定义的块单元为单位进行访问。换句话说,通常不可能访问单个像素,而是必须访问最小单元(例如,8×8)。片上存储器的大小也是一个重要的设计考虑因素,因为片上存储器越大成本越高。
换句话说,上述装置可以是集成电路,还包括:嵌在集成电路中的内部存储器和用于将位于所述窗口内的整数样本从外部存储器提取到内部存储器的存储器访问单元(接口)。
上述使用的术语“预测块”是指待预测的当前块。编码块是图像内的块,可以通过将图像细分为大小相等或大小不同的块(例如,通过将编码树单元(coding tree unit,CTU)分层分割为更小的单元)来获得。该块可以是正方形或一般而言为矩形,因为这些形状是当前编码器/解码器中也使用的典型形状。然而,本发明不限于任何大小/形状的块。
包括处理电路的装置可以是编码器或解码器,甚至可以是包括这种编码器或解码器的装置,例如记录设备和/或播放设备。
分数样本位置是通过重建如图1所示进行编码的参考图像获得的真实图像样本位置之间的位置。因此,分数样本位置必须基于最接近的整数像素位置通过插值获得。插值滤波的详细内容可以在2014年V.Sze等人在施普林格出版社出版的High EfficiencyVideoCoding(高效视频编码)这本书的第5.3节的Fractional Sample Interpolation(分数样本插值)中找到。
插值滤波通常采用不同的滤波器产生不同的分数像素(样本)位置。例如,在H.265视频压缩标准中,使用下面的1D可分离滤波器来生成四分之一像素位置和半像素位置:
Figure GDA0002692723160000141
从上表中可以看出,插值滤波需要分数像素位置周围的几个样本,对应于滤波器抽头(表中系数的数量)。使用上述示例的滤波器以生成半像素位置,需要左/上和右/下的4个整数样本。需要说明的是,插值滤波器的长度对于四分之一像素样本位置(7抽头)和对于半像素样本位置(8抽头)是不同的。在本申请中,术语“样本(sample)”和“像素(pel和pixel)”可互换使用,表示给定时间点(一个或多个颜色分量中)的图像样本。原则上,样本是一个强度值。
在本发明一些实施例中,预定义抽头大小的插值滤波器仅在由搜索空间中进行模板匹配(或双边匹配)时可访问的整数样本给出的窗口内评估整数样本。该窗口包含的样本可能比实际上计算某个预测块所用的样本多。这是因为修正搜索操作通常使用快速搜索方法(而不是暴力搜索方法)来实现,根据这个事实,一些样本不是根据搜索操作的渐进过程进行评估的。因此,对于每个预测块,模板匹配(或双边匹配)迭代次数以及修正搜索操作计算中使用的样本数量可能发生变化。
图8示出了窗口的编码块(预测块)和对应的样本。应注意,图8中所示的样本是参考图像样本,这里的编码块实际上是与当前帧中的当前块的大小和位置对应的块,其中,在参考图像中推导出运动矢量用于该当前帧。因此,实际上,图8中的编码块实际上是与为其搜索预测值的块位于同一位置(co-located,简称共位)的块。然而,出于简化的原因,该块在下文中称为“编码块”。
在这个示例中,候选运动矢量MV0指向一个整数样本位置。搜索空间粒度为1个整数样本,意味着由于起始点是整数样本,所以只搜索整数样本点。在本示例中,在逐渐发展的搜索空间中执行搜索。这意味着搜索空间在每次迭代中都通过添加新的搜索位置而向前推进,具体取决于先前测试位置的成本函数的最佳方向。鉴于以上,可以将初始候选运动矢量MV0指定为“未修正”运动矢量,如图所示,从该未修正运动矢量开始,通过逐步的位移获得搜索空间(虚线框内)。然后,可以认为,选择搜索空间内的候选运动矢量之一表示对形成初始位置的未修正运动矢量候选MV0的修正。
图9中以简化的方式说明了这种方法。在图9中,初始运动矢量指向中心点810。搜索空间是围绕初始运动矢量位置逐步构建的。在第一步中,测试与初始运动矢量所指向的位置810直接相邻的上、下、左、右四个位置以及初始运动矢量所指向的位置810。基于在测试的五个点中产生最低成本函数的方向,将要测试的其他位置添加到搜索空间中。在此示例中,最低成本函数出现在右侧的点上,所以在第二步中,搜索空间在水平右侧方向上又扩展了三个点。在第二步中,最低成本函数出现在右侧的点(相对于第一步的最低成本点),从而使得搜索空间在水平右侧方向上进一步扩展了三个点。在第三步中,相对于步骤二的最低成本点,在右侧的点再次观察到最低成本函数,从而在水平右侧方向上将搜索空间再扩展三个点。根据图9中的示例,在上方、上方和右侧方向按此顺序执行另外三个步骤。在该示例中,每次迭代使用菱形图案(由5个搜索点组成),并且扩展搜索空间,以便在每个步骤中完成缺失的搜索点。
在搜索空间确定的每次迭代中,搜索空间可增加一个或多个整数样本位置。参见图8,在该示例中,最大搜索迭代次数为4。由于最多可以进行4次迭代,因此需要从存储器中读取左侧所示的所有样本以执行搜索操作,避免搜索空间逐渐发展移动到左侧。同样地,需要延伸到上方的4个样本。因此,搜索空间在两个方向(从左到右和从上到下)上都得到了扩展,因为修正MV可以在两个方向中的任意一个方向上移动,并且硬件实施方式要求在应用修正搜索之前从外部存储器中获取可能需要的所有样本。如果搜索空间在下方或右侧方向发展,则需要进一步扩展4个样本,因为使用与编码块(预测块)大小对应的模板的模板匹配需要访问这些样本中的一些样本。此外,还必须从存储器中获取角落样本(例如,右上角),因为硬件实现通常无法获取不规则形状(矩形样本更容易访问)。
应注意,上述迭代搜索空间发展仅仅是示例性的,并且在每次迭代中扩展搜索空间的规则和点数可能不同,即以不同的方式指定。
图9还示出了由于上述外部存储器访问规则而可能发生的情况。从外部存储器中获取的样本数量比计算步骤中实际使用的样本数量多得多。假设这里的模板大小仅为一个样本(出于简化的原因),那么白色圆圈代表从外部存储器中读取到的样本,带阴影的样本为实际使用的样本。然而,如果对外部存储器的访问次数要保持在较低水平,则这种冗余是必要的,因为当开始处理当前块时,实际需要的样本是未知的。
应注意,搜索空间也可以以不同方式定义,例如,定义为位于初始候选运动矢量所指向的位置处的固定形状。该形状可以是方形、矩形、菱形等任意形状。
图10示出了搜索空间还可以包括分数样本的示例。在图8和图9中,对整数样本执行运动矢量搜索,从而得到访问窗口中包括的较大的实线点指示的位置。如果现在对具有半像素分辨率的样本(较小的实线点)执行搜索,假设插值滤波器是对称的并且具有八个抽头,为了生成在左手边所示的分数样本,还需要从存储器中获得另外三列样本。此外,由于搜索操作是对称的(可以迭代地向左和向右移动),因此必须在左侧(扩展3列像素)上应用相同的操作,以便分数像素可以位于窗口的左侧。
由于插值滤波,需要从存储器中获得的样本数量进一步增加,现在由虚线表示的内容还包括表示因分数插值而添加的位置的虚线圆。类似地,如果还允许在垂直方向上搜索每个半像素位置,则从存储器中访问的样本的窗口还需要在垂直方向上在上方和下方进行扩展(图10的示例中未示出)。
存储器访问窗口定义为矩形,该窗口包含需要从存储器中获得的所有样本,以便执行预测块(编码块)的运动矢量搜索。存储器访问的窗口不仅包括实际所需的样本,还包括在运动矢量搜索操作期间可能访问的所有剩余样本。在图10的示例中,运动矢量搜索移动到右侧。但是,运动矢量搜索也可能被移到左边的方向,这是事先不知道的。因此,为了不多次访问外部存储器,存储器访问窗口(或访问窗口)包括相应处理可访问的所有样本。
图11示出了执行如前所述的运动矢量推导的已知方案的基本步骤。在第一步骤(步骤1)中,获得至少两个候选运动矢量的“搜索空间”(在所示示例中,搜索空间中存在由9个候选运动矢量指向的9个点)。可选地,形成搜索空间的候选运动矢量之一可以被视为初始运动矢量(根据本申请所使用的术语,也称为“锚”运动矢量或锚候选运动矢量)。例如,初始运动矢量或锚运动矢量可以是包括在比特流中并因此显式或隐式地指示给解码器的运动矢量。
在接下来的步骤(步骤2)中,对搜索空间应用匹配过程,以找到搜索空间的最佳匹配点(换句话说,搜索空间中使成本函数最小化的点,对应于最合适的候选运动矢量)。在所示示例中,应用双边匹配,然而,可以同等地应用用于确定成本函数的其他方案,如模板匹配。
在该图的最后一步(步骤3)中,基于根据步骤2中的处理选择的最合适的候选运动矢量,通过插值获得最终预测。
图12的流程图进一步描述了图11的概念。在图12中,具体给出了候选运动矢量对(即,对于双边匹配)的情况下的说明(如以上参考图3所示,当在双向预测中使用例如模板匹配时,也同样适用)。
在第一步骤(1310)中,构建候选运动矢量对的搜索空间。这一步骤对应于图11的“步骤1”。
在后一步骤(1320)中,通过应用插值滤波,为搜索空间中的每个运动矢量对生成预测。在后一步骤(1330)中,对于搜索空间中的每个运动矢量对,构建(获得)模板。如上所解释的,这一步骤是可选的,即,这仅对于模板匹配时必须的,对于双边匹配则不是。在后一步骤(1340)中,对于搜索空间中的每个运动矢量对,通过比较该对中的两个运动矢量所指向的预测块(或一个候选运动矢量的预测块和模板),计算模板匹配成本(或双边匹配成本)。在后一步骤(1370)中,选择使模板成本函数或双边成本函数最小化(更一般地:最佳匹配,即通过匹配过程获得的最合适的)的运动矢量对,并输出为预测块的运动矢量对。根据上面解释的术语,这可以称为“修正运动矢量对”。以上步骤1320、1330、1340、和1370对应于图11的“步骤2”。
后一步骤(1380)使用步骤1370中选择的运动矢量对通过插值生成最终预测。这一步骤对应于图11的“步骤3”。
图13示出了用于运动矢量推导的处理,该处理与图11相比已根据本发明实施例进行了修改。注意,在图11和图13以及其他实施例的以下相应附图中,为简单起见,针对单个候选运动矢量而非运动矢量对执行操作。然而,该操作加以必要的修改同样适用于运动矢量对的情况。
在图13中,小圆圈可以表示在整数位置或分数(或子像素)位置的样本,大圆圈仅表示在整数像素位置的样本。
图13的步骤1对应于图11的步骤1,因此省略了对其的重复描述(图13步骤1中的9个点中的每个点对应于候选运动矢量所指向的点)。
步骤1之后存在额外的步骤(步骤2)。在步骤2中,假设初始形成如步骤1中获得的搜索空间的运动矢量具有分数坐标,则执行取整操作,以将该坐标取整到相应的最近整数点。这在附图中通过描述取整方向的“运动矢量”来指示。从中可以看出,取整操作对应于由图中称为“MV_round_diff”的向量产生的预定移位操作。在所示示例中,对于搜索空间中所有示出的点,该预定移位操作都是相同的。然而,本发明不限于该示例情境。换句话说,对于搜索空间中的每个候选运动矢量,移位操作可能不同。步骤2的结果可以称为“修改的搜索空间”,因为该空间是对初始搜索空间的修改(点式移位)的结果。
在图13的步骤3中,以与图11的步骤2中相同的方式应用双边匹配(或模板匹配)。根据步骤2的结果,向步骤2的取整操作获得的整数坐标应用双边匹配(或模板匹配)。
在最后一个步骤(步骤4)中,为了最后获得预测块的运动矢量,针对最优匹配运动矢量(或修改的搜索空间中的代表运动矢量)还原预定移位操作(即,取整的应用)。换句话说,反向或逆向(相同含义)移位操作是应用于选择的或最佳匹配的代表运动矢量的逆移位操作。因此,最后,输出具有分数坐标的初始搜索空间的运动矢量作为预测块的运动矢量,而匹配操作的计算在整数空间上执行,因此在计算和内存访问方面更加高效。
参考图14解释了用于运动矢量推导和生成预测的处理的另一示例性流程图。在图14中,相同的附图标记(1310和1380)表示与图12中相同的处理步骤,因此省略了对其的重复描述。
图14和图12的流程图之间的主要不同在于,在额外的步骤(1515)中,为(初始)搜索空间中的每个运动矢量(对)生成“代表”运动矢量对。代表运动矢量对与图13的取整后的运动矢量(对)相对应。因此,“代表运动矢量”是图13的概念的概述。在图13的特定情况下,从取整得到的具有整数坐标位置的相应运动矢量对应于代表运动矢量(对)。因此图14的步骤1515对应于图13的步骤2。在下文中,将假设在步骤1515中应用取整以生成代表运动矢量,从而这些运动矢量具有整数坐标位置。
因此,在后一步骤1520中,为每个代表运动矢量对生成预测。因为不同于原始矢量对,代表运动矢量对指向对应参考图像中的整数像素位置,因此这可以在不应用插值滤波的情况下完成。
后续步骤1530和1540分别对应于图12的步骤1330和1340,其中唯一的区别是,对代表运动矢量对执行相应处理,即在修改的搜索空间而不是搜索空间(初始搜索空间)中执行处理。
步骤1550描述了将使模板匹配成本(或双边匹配成本)最小化的代表运动矢量对设置为Pair_best_rep(预测块的第一运动矢量)。在步骤1570中,输出预测块的该第一运动矢量。因此,步骤1570与图12的步骤1370的不同之处在于,其并不是输出搜索空间的最优匹配运动矢量(对),而是输出修改的搜索空间的最优匹配运动矢量(对)。因此,图14的流程图中的步骤对应于图13的步骤1至3,即,没有最终步骤4。
后一附图15中示出了包括图13的步骤4的处理的流程图。
图15中的处理与图14中的相同,但步骤1550后具有额外步骤1660。在该步骤中,识别(原始)搜索空间的运动矢量对,该运动矢量对对应于步骤1550的匹配过程所获得的修改的搜索空间中的最优匹配对。换句话说,步骤1660对应于图13的步骤4所示的取整操作的还原。因此,在后续步骤(1370)中,输出原始搜索空间的运动矢量(对)作为预测块的运动矢量(“第二运动矢量”)。
其余步骤对应于图14的流程图中的步骤,因此省略了对其的描述。
图16示出了根据本发明的处理的另一示例性流程图。到步骤1550为止的处理步骤都与图14和图15中的相同。
在后续步骤(1755)中,修改的搜索空间中得到的最优匹配运动矢量对Pair_best_rep与修改的搜索空间中的特定代表运动矢量对(Pair_K_rep)进行比较。在两个运动矢量(对)彼此相等(1755:y)的情况下,与图15中相同,在步骤1660执行还原到原始搜索空间的反移位操作,并在步骤1370输出其结果为运动矢量(第二运动矢量)。否则(1755:n),与图14中相同,在步骤1570,输出第一运动矢量Pair_best_rep作为预测块的运动矢量。例如,特定代表运动矢量可以是与初始搜索空间中的一个预设“初始”候选运动矢量对应的代表运动矢量,如图11和图13所示,初始搜索空间围绕该初始候选运动矢量构建。
图17更详细地示出了取整(移位)操作。在该示例中,为简单起见,假设仅对一些初始或“锚”候选运动矢量执行一次移位,然后“围绕”该移位的初始候选运动矢量构建整数搜索空间。该示例性描述等同于如图13的步骤2所示的将形成初始搜索空间的多个运动矢量移动相同的移位矢量的情况。
图17示出了初始运动矢量所指向的分数位置1010。为了避免与初始运动矢量位置相隔整数距离的点全部是分数(从而需要对所有这些点进行插值,并因此需要来自存储器的其他整数位置)的搜索空间结构,分数点1010被移位到最近的整数点(在图17中示为带阴影的圆圈)。在图17中,初始运动矢量所指向的分数位置1010是两个整数点之间的半像素位置,该分数位置相对于两个整数点位于相同的距离。在这种情况下,可以约定将使用两个等距离整数点中的哪一个点。在该示例中,遵循先左后右的规则。类似地,使用先上后下、先水平后垂直的规则,从而得到优选的顺序:左、上、右、下。换句话说,如果该分数位置到4个整数点的距离都相同,则该分数位置将被取整到左上位置。然而,这些仅是示例。一般地,只要标识了顺序从而编码器和解码器可以相应地处理,则该顺序可以是任何其他顺序。
如果一个以上的整数样本到初始运动矢量的距离相同,则可以应用另一规则,即选择最接近于(0,0)中心坐标的样本坐标。该规则的意义在于,观察到较大幅度的运动矢量(在x轴和y轴的任一方向上)的统计概率小于较小幅度的运动矢量的概率。换句话说,视频序列通常包含较少的运动和静止背景(可以用较小幅度的运动矢量预测),而不是混乱运动和运动背景(可以用较大幅度的运动矢量预测)。
根据上述段落所示的取整规则,如果初始运动矢量的垂直分量(沿y轴)是5.5并且水平分量是-3.5,则该运动矢量被取整为(5,3)。根据取整规则,如果初始运动矢量最接近一个以上的整数样本坐标,则该初始运动矢量被取整以实现得到的取整后运动矢量具有x轴和y轴上的最小绝对幅值。例如,此类取整可以通过简单地将逗号后的位置截断来实现,即,由函数“floor”实现。
换句话说,如果存在一个以上与分数位置等同接近的整数样本位置,则取整获得等同接近的整数样本位置中使得取整后的初始运动矢量幅值更小的整数样本位置。
在一个实施例中,如图17所示,搜索空间由彼此间隔整数样本步长的样本位置组成,其中,搜索空间窗口1000框住围绕中心位置(阴影圆圈)构建的搜索空间的整数样本,该中心位置对应于如上所述对分数初始运动矢量位置进行移位后的取整整数位置。
为了确保运动矢量的修正不会使初始运动矢量变得更差,在一个示例性实施例中,计算指向分数样本位置的初始运动矢量的模板匹配成本,并将其与初始运动矢量的确定修正运动矢量的模板匹配成本比较。最后,如果确定修正运动矢量的模板匹配成本不低于分数样本位置的计算模板匹配成本,则基于该分数样本位置确定预测块的运动矢量。换句话说,仅在修正运动矢量优于初始运动矢量时(就成本函数而言),才为预测块选择该修正运动矢量,这意味着如果确定的修正运动矢量的模板匹配成本低于(或等于)分数样本位置的计算的模板匹配成本,则基于确定的修正运动矢量确定预测块的运动矢量。
在一方面,如果确定的修正运动矢量的模板匹配成本不低于分数样本位置的计算的模板匹配成本,则可以直接将预测块的运动矢量确定为该分数样本位置。然而,可能存在进一步修改运动矢量的其他步骤(例如,在分数搜索空间中的后续模板搜索、运动向量裁剪等)。
搜索空间可以由K行和L列样本组成,这些行和列彼此间隔整数距离,其中,取整的分数位置是搜索空间中的一个样本。这里,K和L是大于1的整数。如图17所示,K和L可以具有相等的值(该示例中为9)。然而,一般地,K和L的值可以不同,即,搜索空间可以是具有不同边长的矩形。
术语“搜索空间”一般指待执行模板匹配(或双边匹配)的位置的集合。这些位置是由模板匹配(或双边匹配)实际校验的位置,即,对于每个搜索空间位置,都计算一个相应的成本函数值。相对地,存储器访问窗口(本公开中也称为访问窗口或窗口)包括搜索空间,但还可以包括模板匹配(或双边匹配)将可访问的样本,即,可以用于计算上述搜索空间位置的至少一个位置的成本函数。在以上搜索空间K×L的示例中,存储器访问窗口可以具有相同尺寸或更大尺寸。
如图17所示,取整的分数位置可以基本位于搜索空间和/或存储器访问窗口的中心。这里的术语“基本上”指的是以下事实:如果搜索空间和/或存储器访问窗口的行和/或列的数量为偶数,则不存在整数中心。在这种情况下,取整的分数位置将位于最接近中心的位置之一。
然而,应注意,本公开不限于上述搜索空间配置。一般地,可以采用任何搜索空间(例如如上所述迭代获得的搜索空间)。此外,初始运动矢量不一定位于搜索空间的中心。例如,对于迭代搜索空间,情况并非如此,其中搜索空间在若干次迭代中朝最低成本函数的方向发展,因此从初始运动矢量沿一个特定方向延伸,所以初始运动矢量并非位于其中心。
存储器访问窗口可以以多种方式定义。图18示出了一个示例,其中,存储器访问窗口定义为在编码块的左/右或上/下方向上的扩展EXT(对应于由初始运动矢量给出的编码块的位置)。扩展量可以取决于编码块或预测块的尺寸和形状。在图18中,在每个方向上(上、下、左、右),扩展的长度为4个样本。然而,注意,EXT也可以在不同的方向上采取不同的值,这取决于块尺寸(其可以在垂直方向和水平方向具有不同的尺寸)和搜索空间形式和尺寸。
例如,根据示例,窗口定义为相对于预测块初始运动矢量的N个整数样本列和M个整数样本行,N和M是非零整数值。在图18中,指示了N和M,但N和M大小相同。如上所述,N和M可以具有不同的大小。N和M是整数,并且N和M中的至少一个是非零的。通过参数N和M以及模板的形式和尺寸,可以确定访问窗口的大小。特别地,如果模板具有T1行和T2列,则访问窗口的尺寸可以计算为(N+T1+N)行和(M+T2+M)列。这是因为搜索可以进行到左边或右边的N个样本,从而得到水平方向上的2N个样本,并且搜索可以进行到上方或下方的M个样本,从而得到垂直方向上的2M个样本。此外,模板可以与在任何2N×2M样本位置上的T1×T2样本相匹配。
另一方面,对于如参考图8和图9所述的搜索空间构建的特定方法,可以就修正迭代(搜索空间构建迭代)的最大次数以及迭代步长大小(就每次迭代中可达到的最大样本距离而言)定义存储器访问窗口,这可以在稍后转换为左、右、上、下方的最大位移量。因此,存储器访问窗口被定义为每个方向上的最大位移。例如,4次迭代,其中每次迭代可以在最大一个整数样本位置上发展搜索空间,可以得到EXT=4。
换句话说,根据该示例,处理电路用于通过使用所述模板在搜索空间中进行模板匹配来确定初始运动矢量的修正,搜索空间在由最近一次迭代中搜索空间的一个(或多个)最优匹配位置给出的方向上迭代地扩展,窗口由迭代的预定最大次数定义。
注意,一般来说,本公开不限于搜索空间的任何特定形状或形式或确定的类型。在另一实施例中,搜索空间是窗口的矩形子窗口,或可以等于该窗口。存储器访问窗口的定义可以是相关的,以便可以将相应的信令参数包括在比特流中(例如参数EXT或参数N和M)。然而,存储器访问窗口大小还可以在标准中定义,或者可以基于其他编码参数(例如模板尺寸、预测块尺寸、图像分辨率等)推导出。如上所述,模板匹配不一定在包括所有位置的矩形搜索空间中执行。在替代实施例中,模板匹配或双边匹配在样本位置通过多个步骤(迭代地)确定的搜索空间中执行,这些步骤包括:确定由彼此间隔整数样本步长的样本位置组成的整数搜索空间,在整数搜索空间中执行模板匹配以获得最优匹配整数位置,基于该最优匹配整数位置,确定分数搜索空间,该分数搜索空间的至少一个样本与最近的整数搜索空间样本位置的间隔小于整数样本步长,以及在分数搜索空间中执行模板匹配以获得最优匹配位置。换句话说,搜索空间在开始时以及可能的若干迭代中限于行和列中彼此间隔整数距离的样本,然后可以通过增加一些分数位置来进一步发展。
根据成本函数迭代执行并且还包括分数位置的搜索空间构建能够减少要执行以找到修正运动矢量的模板匹配操作的次数。此外,通过提供待校验的分数位置,还可以增加准确度。
例如,取整可以获得最接近于初始运动矢量所指向的分数位置的整数样本位置。如果一个以上的整数样本位置等同地接近该分数位置,则取整获得预定方向上的整数样本位置,该预定方向或方向的组合是左、右、上、下。如上所述,整数样本搜索空间中的分数位置可以具有两个或四个最近的相邻点。通过以优选顺序对四个可能的方向进行排序,可以指定预定方向,从而在两个等距的相应整数样本的两个方向中选择列为预定顺序之首的方向。如果分数位置与整数样本不在一条直线上,而是在水平方向和垂直方向上移动,则方向组合是相关的。在这种情况下,分数位置需要取整到两个方向上的整数位置,例如左上或右上等。
然而,本公开不限于单次取整的可能性。可选地,如果一个以上的整数样本位置等同接近于分数位置,则搜索空间是位于所述等同接近于分数位置的一个以上的整数样本位置的搜索空间之和。换句话说,搜索空间是通过分别移位到所有(两个或四个)等同接近的整数样本位置获得的搜索空间的组合。实际上,与对两个等同间隔的整数位置仅执行一次移位的情况相比,这将在得到的搜索空间中例如产生一个额外的列和/或行。
可以应用的另一可选取整规则可以是选择最接近(0,0)中心坐标的样本坐标。中心坐标通常是初始运动矢量开始的坐标。通常,该坐标是共位块的位置,共位块即参考图像中与预测块的位置对应的编码块,在当前帧中将为该预测块确定预测值。因此,如果初始运动矢量距离一个以上的整数样本坐标一样近,则该初始运动矢量被取整为使得得到的取整运动矢量具有x轴和y轴上的最小绝对幅度。
图19在左手侧示出了传统方案,其中初始运动矢量位置指向分数位置(运动矢量的起始坐标)1210。通常使用固定的步长大小(搜索点之间的距离差)应用运动矢量修正过程。通常,该距离是整数样本距离,即对应于两个整数样本之间的距离。这意味着如果搜索操作的起始点是分数像素点,则连续的搜索点也是分数像素点,在图19中示出为若干个分数位置(较小粗体圆)。在图19的示例中,并没有示出所有的分数位置,原则上,如果搜索空间定义为围绕初始运动矢量的矩形,则图19所示的整数样本网格中的每个样本都有对应的分数位置。从图中可以看出,分数样本的插值可能需要搜索空间之外的样本位置1220的值。例如,如果使用6抽头滤波器,则搜索空间右侧将需要额外两列。如果在该示例中考虑存储器访问窗口与搜索空间相同,则这将需要额外的存储器访问以获得额外的样本或需要更大的存储空间以在内部存储额外的两列样本。注意,一般而言,搜索空间和存储器访问窗口不相同。图19是一个简化示例,其中假设模板的尺寸为1×1。一般来说,搜索空间将小于存储器访问窗口。存储器访问窗口将额外地包括不属于搜索空间位置但用于模板匹配的位置。额外像素的数量将取决于模板尺寸。此外,如果插值滤波器大小除以2大于模板尺寸,则相比于模板匹配,分数插值将仅需要额外的像素位置。然而,注意,在这种情况下,初始运动矢量的取整不仅提供了减少窗口尺寸的优势。此外,其还减少了对分数位置进行插值以获得搜索空间所需的操作次数。
在图19的右手侧,示出了将分数位置1210移位(取整)到整数位置。因此,基于与取整分数位置对应的整数位置构建的搜索空间包括整数样本,并且在该示例中不需要任何额外的分数位置插值。
换句话说,在现有技术中,由于起始点是半像素位置,并且由于修正搜索步长的步长大小通常是1像素(样本),因此总是搜索分数位置。因此,由于插值滤波需要搜索空间/存储器窗口右侧之外的样本,因此最坏情况下存储器访问较高。根据本发明实施例,起始坐标首先被取整到整数起始点。因此即使搜索坐标位于存储器访问窗口的边界(仍在内部),也不需要访问存储器访问窗口之外的任何样本。
分数初始运动位置的主要优势在于,给定预定义的存储器访问窗口,取整有助于搜索操作到达比初始起始点更远的点(因为整数搜索坐标不需要插值滤波,因此不需要额外的样本)。从不同的角度来看,如果应用相同次数的修正迭代,则本发明的存储器访问要求小于现有技术。
注意,上述示例是针对半像素插值提供的。然而,本公开不限于此。通常,可以使用任何分数位置,例如1/4、1/8等,即可以使用相应的插值滤波器进行插值。
图20示出了特定示例,其中,在应用双边匹配(或模板匹配和双向预测)之前,将对指向不同参考图像的(初始)运动矢量候选对进行取整。图20的概念可以概括为以自适应方式对半像素点向上或向下取整,从而创建具有唯一(不同)代表对的修改的搜索空间。如本领域技术人员所理解的,半像素搜索点可以向右取整或向左取整(在x方向上),具有相等的失真量。
更具体地,图20示出了三行插图,每行具有左手侧和右手侧(用虚线划分)以及一个表。在每个插图中,左右侧和右手侧对应于候选运动矢量所指向的两个不同的参考图像(例如:参考图像0和参考图像1)。全黑点(A,B,C,D,E,F,G,H)对应于整数位置。阴影点(1至5)是待取整的初始候选运动矢量。
在最上方的插图中,在参考图像0中(左手侧),存在三个半像素位置(1、3、5),并且应用“右取整半像素”规则,从而位置(1、3、5)分别取整到(B、C、D)。参考图像1(右手侧)中没有半像素位置。该取整结果可以在右手侧的表格中看到。所有的五对取整位置(“代表整数对”)彼此都不同,即是唯一的。
在图20的中间,第二插图示出了另一种情况。在左手侧,运动矢量候选在整数位置之间的分布与最上方的插图相同,但在右手侧的分布不同。在右手侧的表格的第二列中,示出了应用规则“右取整半像素”的结果,一方面产生对应于候选运动矢量对1和2的代表整数对,另一方面产生对应于候选运动矢量对3和4的代表整数对,这些代表整数对分别彼此相等({B,G}和{C,F})。该表格的最后一列示出了替代情况,其中应用“左取整半像素”规则。从中可以看出,有选择地应用该规则解决了不同实际候选运动矢量对具有相同代表整数对的问题,最后一列中示出的取整的结果是唯一的代表对。
在图20的下方,另一示例在第三插图中示出了同样的情况。同样,自适应地对半像素位置应用规则“左取整”创建了唯一的代表整数对集合,而如果固定规则“右取整”并总是应用该规则,则情况不是如此。
注意,本发明优选地假设搜索点之间的位移是均匀分布的。此外,当两个搜索点之间的位移不小于半像素时,本发明效果最优。
在如图1和图2所示的编码器和/或解码器中可以采用参考图7描述的处理电路。
特别地,可以提供用于将分为预测块的视频图像编码到比特流中的编码装置,该编码装置包括:如上所述用于确定预测块的运动矢量的装置,包括处理电路;以及编码电路,用于对预测块和预测值之间的差进行编码以及用于生成包括编码的差和初始运动矢量的比特流,上述预测值由确定的运动矢量指定的位置中的预测块给出。
处理电路中还可以提供或实现以上参考图1所述的编码器的其他单元和功能。
相应地,可以提供用于从比特流中解码出分为预测块的视频图像的解码装置,该解码装置包括:解析单元,用于从比特流中解析初始运动矢量和预测块以及预测值之间的编码的差,该预测值由修正的运动矢量指定的位置中的预测块给出;如上所述的用于确定预测块的修正运动矢量的装置,包括处理电路;以及解码电路,用于将预测块重建为解析的差和基于修正运动矢量的位置中的预测块给出的预测值之和。例如,预测值可以直接由修正运动矢量的位置给出。然而,可以存在获得当前预测块的运动矢量的其他处理步骤,这些步骤可以进一步改变运动矢量(例如滤波、裁剪、进一步修正等)。
处理电路中还可以提供或实现以上参考图2所示的解码器的其他单元和功能。
此外,从具有用于执行运动矢量修正的处理电路的装置的角度描述了本发明实施例。然而,本公开不限于此,而是还提供了对应方法,该方法包括的处理步骤与上述配置处理电路所描述的步骤对应。
抽头对应于滤波器系数。抽头大小对应于滤波器阶数。这里假设滤波器是线性滤波器。在一些示例中,滤波器可以是对称的,即具有对称的系数。然而,本公开不限于对称滤波器或线性滤波器或任何种类的滤波器。一般而言,可以基于相邻样本以任何方式获得分数位置。
图21A示出了典型方法,其中,初始运动矢量输入到运动矢量修正中。然后,确定搜索空间,该搜索空间具有与初始运动矢量距离整数样本的位置,并且在该搜索空间上执行搜索。在初始运动矢量具有分数坐标的情况下,这产生仅具有全部待插值的分数位置的搜索空间。另外,某些分数距离样本可以加到搜索空间,并通过模板匹配进行测试,以找到预测块的最优匹配。
图21B示出了根据本公开的方法。特别地,初始(未修正的)运动矢量输入到运动矢量修正过程。如果初始运动矢量指向的位置(即至少一个运动矢量坐标)是分数,则该位置(分数位置或全部坐标)被取整到下一最接近的整数位置。然后,如图21A一样确定搜索空间。然而,由于进行了取整,所以搜索空间由整数位置组成。
在整数距离搜索之后,可以围绕修正的运动矢量在整数距离搜索空间中执行分数距离搜索。本公开允许基于分数搜索坐标的后续运动矢量修正搜索,只要不超过定义的存储器访问窗口(由于额外的插值操作)即可。通常修正操作会以逐渐变小的步长应用,一旦完成整数步长大小搜索,就可以校验细化的步长大小。作为特殊情况,还可以校验初始非修正MV,并将其与其余搜索坐标比较,因为该MV是被先前操作选择为最优运动矢量的候选坐标。
图21C示出了替代方法,其中以不同的方式执行取整,得到不同的重叠的搜索空间。特别地,尤其是存在一个以上的最接近整数样本位置时,运动矢量取整步骤可以生成一个以上的取整替代方案。因此,为了减少存储器访问,起始搜索点被取整到一个整数像素点(更一般地,其重建需要较少像素扩展的位置)或多个整数像素点(通常2个或4个点)。因此,后续搜索点同样是整数像素点。
在以上实施例和示例中,通过将分数运动矢量位置移位到整数位置,可以构建主要包括整数样本的搜索空间。然而,基于取整的初始运动矢量而不是分数运动矢量的此类移位的搜索空间可能还包括一些分数位置。例如,如果如参考图9所述迭代地确定搜索空间,则在最后一次迭代中,可能测试一个或多个分数位置。然而,这仅是示例,可以在任何一次迭代中测试分数位置。为了避免分数位置需要重复访问存储器以获得分数插值所需的额外样本,在下文中,描述了两个其他实施例,即:
-限制存储器访问窗口,并且在搜索空间模板匹配操作中仅启用不需要扩展窗口的分数位置,其中,定义存储器访问窗口以使得能够访问对某个预测块进行模板匹配所需的任何样本。
-使用取决于窗口内的样本的一些预定位移值来填充超出存储器访问窗口的样本。
这些实施例将在下文中详细描述。特别地,还可以相应地配置处理电路,以维持较少的存储器访问窗口以及访问次数。提供了相应的方法和装置。
插值滤波的受限存储器访问窗口
如上所述,外部存储器访问是当今硬件和软件架构中最重要的设计考虑因素之一。特别是在包括模板匹配时,例如在运动矢量修正的情况下,运动矢量估计也可以与插值滤波一起使用,以获得搜索空间的分数位置。使用插值滤波可能需要增加需要从存储器中访问的样本的数量。然而,这可能导致昂贵的片上存储器的增加或外部存储器访问次数的增加,另一方面,这降低了实现速度。尤其是在解码器侧,这些问题可能导致更昂贵或更慢的应用,这是不理想的。
为了防止这种情况,本公开在另一实施例中提供了对外部存储器访问的限制。根据本发明实施例,执行运动矢量修正时可访问的样本的窗口在非修正运动矢量(即初始运动矢量)所指向的位置周围定义。该窗口定义了为了执行运动矢量修正需要从存储器中访问的最大样本数量。通常,待访问的样本包括待执行模板匹配的搜索空间中的位置上的样本,以及待针对搜索空间中的所有位置与模板进行匹配的样本。后者通常超出搜索空间。为简单起见,存储器访问窗口可以定义为编码块(待找到运动矢量的当前块)周围的扩展。例如,上述窗口可以由从当前块的左边界和右边界的R个样本以及从上边界和下边界的R个样本定义。换句话说,在当前块的尺寸为N×N个样本时,访问窗口的尺寸为(R+N+R)×(R+N+R),即(N+2R)×(N+2R)个样本。例如,R可以等于4。然而,当前块的垂直尺寸N可以不同于水平尺寸N,并且上、下、左、右方向上的扩展样本的数量也可以不同。
根据本公开,为了限制存储器访问窗口,只有当插值所需的样本位于如针对整数样本所定义的用于运动矢量修正的存储器访问窗口内时,执行运动矢量修正时才访问分数像素坐标。
图22示出了用于运动矢量修正的存储器访问窗口。中心点1410是非修正输入运动矢量(从比特流中获得的初始运动矢量,或通过如上所述的先前执行的候选运动矢量模板匹配或测试获得的初始运动矢量)所指向的位置。为了避免由于向搜索空间增加分数位置而增加窗口尺寸,根据以下规则执行运动矢量修正:
A)围绕非修正初始运动矢量坐标(即,初始运动矢量所指向的位置)定义用于修正的存储器访问窗口。该窗口标识从存储器访问以便通过搜索空间中的模板匹配来执行运动矢量修正所需的最大像素样本数。
1.在该示例中,为简单起见,当前块的尺寸(编码块尺寸)为1×1样本,但该块可以更大,通常该块会更大。
2.存储器访问窗口定义为围绕该编码块的扩展,例如如图所示,从左/右扩展4个样本以及从上/下扩展4个样本。
B)仅当插值所需的样本位于存储器访问窗口内时,才访问分数像素坐标以进行MV修正。
要求B确保了由在整数样本上进行运动矢量修正所需的样本定义的访问窗口不会进一步扩展。根据该规则可访问的实际分数样本由插值滤波器的大小和形状给定。相应地,在图22中,假设插值滤波器具有6个抽头,点虚线指示了分数样本可在的区域。然而,注意,如将参考图23所述,其他分数像素位置也是允许的。特别地,仍然可以使用仅需要垂直滤波或水平滤波(其不需要扩展到访问窗口之外)的分数位置。因此,将分数位置限制到图22所示的分数样本窗口对于某些应用来说过于局限。
换句话说,根据实施例,存储器访问窗口包括在整数样本上执行的运动矢量修正可访问的所有样本,并且不包括在整数样本上执行的运动矢量修正不可访问的样本。因此,如果分数样本用于运动矢量修正,这些分数样本以不需要额外样本的方式获得。
在图22的示例中,这通过仅允许不需要访问窗口外的样本(对于预定义的插值滤波器形状和大小)的分数样本来实现。点虚线分数样本窗口在访问窗口内扩展。如果T是插值滤波器抽头的数量,则分数样本窗口边界由与访问窗口边界样本的距离1420为floor(T/2)-1的整数样本定义。特别地,在该示例中,T=6,T/2=3,从访问窗口边界样本到分数窗口样本的距离为T/2-1=2个整数样本。
然而,注意,分数窗口的这种确定方式仅是示例。一般而言,该窗口可以具有不同的形式和尺寸。垂直插值和水平插值可以由不同大小的滤波器完成。此外,一些分数位置可能需要在垂直方向以及水平方向上的滤波器,该滤波器一般可以是可分离滤波器或不可分离滤波器。
可选地,对于图22中的点虚线外的分数位置,插值滤波器可以改变(例如至少在一个方向上减少抽头数量)。然而,出于实施目的和插值质量原因,这种解决方案的吸引力不大。
注意,一般而言,本公开不限于搜索空间的任何特定形状或搜索空间的形式和确定方式(例如迭代方法)。在另一示例中,搜索空间是窗口的矩形子窗口,使得对于具有预定义抽头大小的插值滤波器,对子窗口中的每个分数样本进行插值滤波时访问的所有整数样本都位于的所述窗口内。以上已经参考图22描述了类似的示例。在图22中,搜索空间由9×9的整数样本以及位于由5×5的整数样本形成的区域内的分数样本给定,其中初始运动矢量位置在这些样本的中心。
图23示出了具有不同分数位置的示例。对于该示例,假设模板的大小为1×1样本(为简单起见),并且对每个半像素位置使用6抽头插值滤波器。在该示例中,搜索的搜索坐标用数字1-6表示,数字1-6指示检验这些坐标的顺序,即,执行模板匹配的顺序。位置1和2是半像素(half-pel)位置(意味着该位置位于两个整数样本位置的中间,pel是像素的缩写,在本申请中,术语“像素”可以与术语“样本”互换使用)。由于插值滤波所需的扩展位于存储器访问窗口内(位置1的对角线左上方的3个整数样本,右下方的3个整数样本;位置2的右侧的3个整数样本,左侧的3个整数样本),所以检验位置1和2。注意,分数样本点1需要在水平方向和垂直方向上的扩展,这两个方向上的扩展都位于窗口内。位置2仅需要右侧和左侧的扩展。
位置3、4、5是整数样本(整数像素)位置。由于不需要插值滤波的扩展,所以可以对其进行搜索。还可以访问分数(半像素)样本6,因为只需要在垂直方向上的扩展(向上和向下分别扩展3个整数位置),该扩展仍位于窗口内。不需要水平方向上的扩展。同样,在上述实施方式中,仅当所需的插值扩展位于存储器访问窗口内时,才访问分数像素点。
换句话说,根据示例,当分数位于整数样本的相应水平线或垂直线上时,插值滤波器是评估K个水平整数样本或垂直整数样本的一维滤波器。
位于两个水平相邻的或两个垂直相邻的整数位置之间的线上的此类一维分数位置(例如图23中的位置2和6)仅需要在水平方向上或垂直方向上的插值扩展,即,此类一维分数位置将只由相应水平或垂直插值滤波器进行滤波。除了图22的示例中允许的分数位置以外,为了能够利用尽可能多的分数位置,增加其他一维位置(例如图23中所示的位置6)是有利的。
换句话说,搜索空间还包括位于分数子窗口(参考图23的点虚线窗口)之外的分数位置,这些分数位置:
-与子窗口的上方或下方相邻,并位于整数样本的水平线上,或者
-与子窗口的左手侧或右手侧相邻,并位于整数样本的垂直线上。
注意,一些分数位置可能需要给定方向(水平或垂直)上的更多整数样本。如果预定义滤波器大小不同以在相应方向上生成该位置,则可能是这种情况。
图24示出了无法访问的分数半像素位置1和2的示例。位置1和2位于图22的子窗口之外。对于该示例,假设对半像素位置使用6抽头插值滤波器。由于水平插值滤波或垂直插值滤波需要位于窗口之外的样本,所以不允许搜索半像素搜索点1和2。在图24中,用虚线指示了水平滤波器对位置1进行滤波所需的整数样本位置和垂直滤波器对位置2进行滤波所需的整数样本位置。可以看出,虚线圆对应于位于存储器访问窗口之外的整数位置。
在以上示例中,定义了存储器访问窗口,使得在运动矢量修正过程期间不会访问窗口之外的样本(即使对于插值滤波)。换句话说,存储器访问窗口是包括执行运动矢量修正和插值可能需要访问的样本的最小窗口。此外,根据基于整数样本位置的运动矢量修正所需的样本设计了存储器访问窗口。因此,只允许不需要用其他整数位置对访问窗口进行进一步扩展的分数位置。注意,以上示例是针对半像素插值提供的。然而,本公开不限于此。一般来说,可以使用任何分数位置,例如1/4、1/8等,即,可以使用相应插值滤波器进行插值。
此外,提供了一种用于确定预测块的运动矢量的方法,该方法包括以下步骤:获得预测块的初始运动矢量和模板;通过在搜索空间中与所述模板进行模板匹配来确定初始运动矢量的修正,其中所述搜索空间位于由初始运动矢量给定的位置,并包括一个或多个分数样本位置,其中属于搜索空间的每个分数样本位置是通过使用仅评估窗口内的整数样本的具有预定抽头大小的滤波器进行插值滤波获得的,所述窗口由在所述搜索空间中执行模板匹配时可访问的整数样本形成。抽头对应于滤波器系数。抽头大小对应于滤波器阶数。这里,假设滤波器是线性滤波器。在一些示例中,滤波器可以是对称的,即具有对称的系数。然而,本公开不限于对称滤波器或线性滤波器或任何种类的滤波器。通常,分数位置可以基于相邻样本以任何方式获得。
图25示出了根据实施例的方法的示例性实施方式。函数InterpolationFilterLength(C)返回为了应用插值滤波而在水平方向和垂直方向上所需的额外样本的数量。所需样本的数量根据以下改变:
-搜索坐标是整数像素、半像素、还是四分之一像素位置。
-是否需要应用水平插值滤波器和/或垂直插值滤波器来生成搜索坐标样本。
该方法开始于步骤2730。特别地,初始运动矢量位置是待测试的第一搜索空间位置C(x,y)。函数InterpolationFilterLength(C)针对该位置返回为了应用插值滤波而在水平方向和垂直方向上的样本数量。如果C(x,y)和InterpolationFilterLength(C(x,y))之和超过由MAX(max_x,max_y)定义的访问窗口尺寸,则该位置不用作搜索空间的一部分。相反,在步骤2740中选择待测试的下一搜索坐标C(x,y)(例如,x和/或y是递增的,取决于执行搜索的顺序)。如果步骤2730中的测试位置不需要超过访问窗口,则在步骤2710对该位置C(x,y)执行作为运动矢量修正的一部分的模板匹配。然后,在步骤2720测试是否仍有用于模板匹配的搜索空间位置。如果不是,则终止修正。如果是,则在步骤2740选择下一坐标,并对该新位置评估步骤2730的条件。这些步骤重复进行。
如上所述,定义允许的分数位置存在其他可能性(例如图22的窗口,如图23所示可能通过其他分数样本扩展)。基于此,可以在步骤2730提出更简单的条件,仅评估位置C(x,y)是否属于允许的窗口。
换句话说,本实施例基于以下观察:当与分数插值组合实施时,运动矢量修正可能需要进一步增加片上存储器大小或甚至外部存储器访问。这两种选择都是不理想的。
鉴于上述问题,实施例提供了运动矢量预测,其能够考虑对外部存储器的访问次数以及在进行编码块的运动矢量的运动矢量修正时所需的可访问样本数量。
通过将样本数量限制为整数样本模板匹配所需的样本数量,并且仅启用通过预定插值滤波器可获得的而无需其他整数样本的那些分数位置,来实现以上目的。
根据本发明的一个方面,提供了用于确定预测块的运动矢量的装置,包括处理电路,该处理电路用于:获得预测块的初始运动矢量和模板;以及通过在搜索空间中与所述模板进行模板匹配来确定初始运动矢量的修正。所述搜索空间位于由初始运动矢量给定的位置,并包括一个或多个分数样本位置,其中属于该搜索空间的每个分数样本位置是通过使用仅评估窗口内的整数样本的具有预定抽头大小的滤波器进行插值滤波获得的,所述窗口由在所述搜索空间中执行模板匹配时可访问的整数样本形成。
这种运动矢量确定的一个优势是,执行预测块的运动矢量修正时可访问的样本数量有限,同时限制了对外部存储器(或一般地,对存储有整个参考图像的存储器/存储装置/缓存)的访问次数。
在一个示例中,窗口定义为相对于预测块初始运动矢量的N个整数样本列和M个整数样本行,N和M为非零整数值。这样定义可以提供一种简单方法来指定执行运动矢量确定和/或修正需要提取哪些样本。例如,还可以很容易在比特流或标准中进行配置。
在一个实施例中,处理电路用于通过在搜索空间中与所述模板进行模板匹配确定初始运动矢量的修正运动矢量,该搜索空间沿在最近一次迭代中搜索空间的一个或多个最佳匹配位置指定的方向迭代扩展,且窗口由预定义的最大迭代次数限定。
搜索空间可包括该窗口的矩形子窗口,使得对于预定义抽头大小的插值滤波器,对子窗口中的每个分数样本执行插值滤波时访问的所有整数样本位于所述窗口内。
具体而言,在一个具体示例中,当分数样本位置位于整数样本的相应水平线或垂直线上时,插值滤波器是评估K个水平或垂直整数样本的一维滤波器。
此外,例如,搜索空间还包括位于子窗口之外的分数样本位置,该分数样本位置:
-与子窗口的上方或下方相邻,并位于整数样本的水平线上,或
-与子窗口的左侧或右侧相邻,并位于整数样本的垂直线上。
根据本发明另一方面,提供了一种编码装置,用于将拆分为预测块的视频图像编码到比特流中,该编码装置包括:如上所述的用于确定预测块的运动矢量的装置;编码电路,用于对预测块与基于确定的运动矢量的位置上的预测块得到的预测值之间的差进行编码,以及用于生成包括编码差值和初始运动矢量的比特流。
根据本发明另一方面,提供了一种解码装置,用于从比特流中解码出拆分为预测块的视频图像,该解码装置包括:解析单元,用于从比特流中解析出初始运动矢量和预测块与由修正运动矢量指定的位置上的预测块给出的预测值之间的编码的差;如上所述的用于确定预测块的修正运动矢量的装置;以及解码电路,用于通过解析上述差和由修正运动矢量指定的位置上的预测块给出的预测值的函数来重建编码块。该函数可以是或包括求和。该函数还可包括裁剪、取整、比例缩放或其它运算。
根据本发明另一方面,提供了一种用于确定预测块的运动矢量的方法,包括以下步骤:获取预测块的初始运动矢量和模板;通过在搜索空间中与所述模板进行模板匹配来确定初始运动矢量的修正运动矢量,其中,该搜索空间位于由初始运动矢量给出的位置上并且包括一个或多个分数样本位置,属于搜索空间的分数样本位置中的每个分数样本位置都是通过使用预定义抽头大小的滤波器执行插值滤波获得的,滤波器仅评估位于窗口内的整数样本,所述窗口由在搜索空间中执行模板匹配时可访问的整数样本组成。
例如,窗口定义为相对于预测块初始运动矢量的N个整数样本列和M个整数样本行,N和M为非零整数值。
在一个实施例中,初始运动矢量的修正运动矢量是通过在搜索空间中与所述模板进行模板匹配确定的,该搜索空间沿在最近一次迭代中搜索空间的一个或多个最佳匹配位置指定的方向迭代扩展,且窗口由预定义的最大迭代次数限定。
在示例性实施方式中,搜索空间包括该窗口的矩形子窗口,使得对于预定义抽头大小的插值滤波器,对子窗口中的每个分数样本执行插值滤波时访问的所有整数样本位于所述窗口内。
此外,例如,当分数样本位置位于整数样本的相应水平线或垂直线上时,插值滤波器是评估K个水平或垂直整数样本的一维滤波器。
有利的是,搜索空间还包括位于子窗口之外的分数样本位置,该分数样本位置:与子窗口的上方或下方相邻且在整数样本的水平线上,或与子窗口的左侧或右侧相邻且在整数样本的垂直线上。
填充
作为基于存储器访问窗口限制搜索空间中的分数样本位置的替代方案,在本发明另一实施例中,在需要时,本发明填充位于存储器访问窗口之外的样本,例如以对分数样本进行插值。
提供替换样本(填充样本)与搜索空间上的模板匹配(双边匹配)结合也是有利的,这些搜索空间也包括分数样本。换句话说,预测块的搜索空间可以包括至少一个分数样本位置,该至少一个分数样本位置的值是通过预定义抽头大小的滤波器执行插值滤波得到的。插值滤波使用窗口中的样本位置值和至少一个替换值来获得至少一个分数样本位置值。
图26示出了用于运动矢量推导(特别用于上述意义上的“修正”)的存储器访问窗口。该窗口围绕中心点1810,中心点1810是初始运动矢量指向的位置。此外,分数位置1820也属于搜索空间。然而,分数位置1820将由6抽头滤波器使用分数样本位置左侧的3个整数样本位置和分数样本位置右侧的3个整数样本位置进行插值。由于分数样本位置1820在整数样本位置的线上,因此可以使用一维滤波器执行插值,例如,如上文参考图10描述的示例所示的一维滤波器。如图26所示,为了插值分数样本1820,还需要两个位于窗口之外的样本位置1830。为了避免从外部存储器额外加载这些样本,根据本公开,将窗口外位置1830的值替换为基于窗口内的样本获得的值。
图26示出了分数样本位置1820,分数样本位置1820位于两个整数样本位置的中间,因此是半像素位置。然而,本公开同等地可以应用于其它分数位置,例如四分之一或1/8位置。此外,样本位置1820位于与整数样本位置中的行对应的水平线上,从而可以使用水平一维滤波执行插值。然而,本公开不限于此类分数位置。相反,分数位置可以位于与整数样本位置的列对应的垂直线上,从而可以使用垂直一维滤波执行插值。此外,分数位置不必与整数样本位于同一像素线上。在这种情况下,可以使用二维滤波对此类样本进行插值;这种2D滤波可以分离成垂直1D滤波和水平1D滤波。
各种分数样本位置的示例如图23所示。具体而言,分数位置1是同时通过水平和垂直滤波执行插值的位置,因为该位置不在整数样本位置的行和列线上。位置2为只通过水平滤波执行插值的位置,位置6为只通过垂直滤波执行插值的位置。图23中所示的所有分数位置都可以只使用窗口内的整数位置获得。
返回图26,根据一个实施例,围绕非修正运动矢量1810指向的位置定义用于执行修正的存储器访问窗口。该窗口标识为了执行运算矢量修正搜索而需要从存储器访问的像素样本的最大数量。这里的搜索空间对应于访问窗口。换句话说,为了简单起见,在本示例中,模板的大小被认为是1×1,但是在实际中,模板可以更大,且通常会更大。存储器访问窗口通常定义在编码块周围扩展。在本示例中,该窗口包括左侧/右侧的4个样本和上方/下方的4个样本。如果在模板匹配(或双边匹配)期间测试的当前搜索空间位置需要来自存储器访问窗口之外的样本,则通过填充获得重建编码块所需的样本。这是图26中分数样本位置1820的情况。如果模板匹配(或双边匹配)要在此位置上或使用此位置执行,则必须使用位于窗口之外的附加填充位置1830进行插值。
例如,可以使用以下方法之一生成填充样本:
-最接近样本复制。
-沿插值滤波的轴进行镜像。
具体而言,最接近样本复制是指一种确定替换值等于最接近的访问整数样本位置的值的方法。例如,在图26中,两个缺失的位置1830的值将被替换成紧邻待插值的分数样本位置1820右边的样本的值。然而,需要说明的是,此方法仅仅是一个示例,本公开不限于仅复制相邻样本。可选地,可以使用若干最接近的样本位置来插值缺失样本1830。例如,可以使用边界上的离缺失样本最接近的三个样本来插值缺失样本,例如通过加权平均来插值,其中将权重设为与这三个样本与缺失样本的距离成反比。
镜像是指一种方法,根据该方法,通过相对于插值滤波器的轴对相应的访问整数样本位置的值进行镜像来确定替换值。例如,在图26中,两个缺失的样本1830将替换为分数样本位置1820左侧的样本的值。具体而言,分数样本位置1820右侧的第二个样本替换为分数样本位置1820左侧第二个位置的值,而分数样本位置1820右侧的第三个样本替换为分数样本位置1820左侧第三个位置的值。
需要说明的是,还可以应用上述两种方法的组合,其中,缺失样本是镜像样本和最接近样本的函数。
根据一个实施例,窗口由在搜索空间内的整数样本位置上执行模板匹配(或双边匹配)时可访问的所有整数样本位置组成。例如,这是图26的示例的情况,其中窗口外的附加样本仅在对非整数、分数样本位置执行模板匹配时是必需的。换句话说,在图26中,在上述示例中,要搜索的半像素坐标需要使用存储器访问窗口之外的样本。因此,执行填充操作来生成不可用样本。然而,本发明并不限于此。
图27示出了一种替代方法,其中,窗口不包括在所述搜索空间内对整数样本位置执行模板匹配时可访问的所有整数样本位置。在先前的示例中,为简单起见,将编码块大小描述为1×1。在图27中,该大小是4×4个整数样本。在本示例中,如果搜索坐标(待计算模板匹配的位置)指向整数样本,则在块中的一些样本位于存储器访问窗口之外的情况下仍然可以进行填充。这种方法可以进一步限制窗口大小。
具体如下:图27示出了包括一些可访问样本的窗口1920,初始运动矢量指向标记编码块左上角的位置。在此,搜索空间可被视为等同于该窗口。然而,需要说明的是,搜索空间通常可以小于该窗口,这样是有意义的,因为如果模板大于1×1个整数样本,则除了搜索空间中包括的样本之外,还需要其它样本来执行模板匹配(或双边匹配)。然而,如果搜索空间定义了窗口的尺寸,则替代地,可以填充缺失样本。图27示出了窗口的第二行和第10列中的示例性搜索位置。模板为4×4个整数样本的模板匹配(或双边匹配)也需要窗口外的像素。因此,这些样本被填充,即被根据窗口内样本确定或计算的值替换。可以采用上述填充方法,例如最接近相邻样本或镜像。
窗口可以根据其相对于以下各者的垂直尺寸和/或水平尺寸定义:
-搜索空间,或者
-具有初始运动矢量位置上的预测块尺寸的块,或
-初始运动矢量位置。
窗口定义的示例如图18所示,并在上文中进行了描述。这对应于基于初始运动矢量位置上的预测块的尺寸确定窗口尺寸。或者,窗口尺寸可以相对于初始矢量位置在x和y方向中的一个方向或两个方向上的大小来定义。例如,可以将窗口定义为位于初始运动矢量指向的位置周围,并向上、下、左、右方向中的每个方向扩展A个整数样本。或者,该窗口可以分别向左和向右扩展A个整数样本,分别向上和向下扩展B个整数样本。还可以有其它定义。
图28描述了本发明的实施例,其中在最后生成预测结果的步骤中应用填充的概念。图28的步骤1至4对应于图13的相应步骤。由于根据图13,搜索(双边匹配或模板匹配)在整数坐标上执行,因此在确定预测块的运动矢量(“运动矢量修正”)的过程中不需要应用填充。然而,在根据运动矢量(例如在步骤4中获得的运动矢量)使用插值确定预测值时,可以很好地应用填充的概念。
这在图28的步骤5中示出。从中可以看出,填充的样本用于获得最终预测。从中可以看出,待填充的样本量(由于不可用性而被替换值替换)取决于最终选择的(“修正的”)运动矢量和看到的初始(“锚”)运动矢量之间的差值。在所示示例中,该差值为垂直方向上的两个像素和水平方向上的一个像素。据此,为了对步骤5中所示的两个矩形的交叉点处的像素进行水平插值和垂直插值,两个右侧像素列以及下方像素行的样本值不可用,必须根据上述预定规则将其替换为替换值。
有利地,基于搜索空间中的特定候选运动矢量来确定在图28的步骤5中使用的存储器访问窗口。该特定运动矢量(称为锚运动矢量)例如可以是包括在比特流中并且显式或隐式地指示给解码器的运动矢量。锚运动矢量的选择确定根据编码器和解码器已知的预定规则来执行。
图29中进一步示出了与图28中所示过程对应的流程图。由于图28的步骤1至4对应于图13的相应步骤,所以–框内的流程图部分(即除最后一步外)与图15中的相同,因此省略其描述。图15的最后预测生成步骤1380被替换为图29中的步骤2680。区别在于,生成最终预测的步骤中是使用图29中的修正运动矢量、使用填充的样本进行插值。
图30中示出了根据实施例的确定预测块的运动矢量的方法,具有以下步骤。在步骤2010中,获得预测块的初始运动矢量和模板,接着,通过在搜索空间中与所述模板进行模板匹配来确定初始运动矢量的修正。该搜索空间位于初始运动矢量给定的位置上。在2020,确定存储器访问窗口。注意,这不必显式地执行。存储器访问窗口可以是预定义的和已知的。因此该步骤是为了说明,以指示存储器访问窗口是已知的。然后,在步骤2030-2090执行模板匹配。
模板匹配访问预定窗口内的整数样本位置,该预定窗口包括所述搜索空间,还包括执行模板匹配时可访问的其他整数样本位置;并且,模板匹配用基于所述窗口内的至少一个样本的替换值来替换位于窗口外的至少一个整数样本位置。访问的整数样本位置值以及替换值用于执行模板匹配。这在图30中示出:对搜索空间中的所有位置执行模板匹配。在步骤2030,测试当前位置的模板匹配是否需要位于存储器访问窗口之外的一个或多个样本。如果是(步骤2030中为“是”),则在步骤2040对窗口外的一个或多个样本执行上述填充。在这一步骤之后,在步骤2050,使用填充的样本在当前位置执行模板匹配(即搜索)。或者,如果所需样本均未超出窗口(步骤2030中为“否”),则在2050,使用可用样本在当前位置执行模板匹配(即搜索)。如果当前位置是搜索空间中待测试的最后一个位置(步骤2060中为“是”),则模板匹配结束。否则(步骤2060中为“否”),在步骤2070获得下一位置并且在步骤2030如上所述继续对新的位置进行模板匹配。
在模板匹配结束后,识别出最优匹配位置(例如,作为成本最低的存储位置)。
换句话说,本实施例提供运动矢量预测,能够考虑外部存储器访问次数以及对编码块的运动矢量执行运动矢量修正时所需的可访问样本数量。这通过将位于预定义存储器访问窗口之外的用于运动矢量修正和/或分数插值的值替换为基于来自存储器访问窗口内的一个或多个样本的替换值来实现。根据本发明一方面,提供了一种用于确定预测块的运动矢量的装置,包括处理电路,该处理电路用于:获得预测块的初始运动矢量和模板;通过在搜索空间中与所述模板进行模板匹配来确定初始运动矢量的修正。所述搜索空间位于由初始运动矢量给定的位置上。此外,所述模板匹配:访问预定窗口内的整数样本位置,该预定义窗口包括所述搜索空间和执行模板匹配时可访问的其它整数样本位置;将位于窗口之外的至少一个整数样本位置替换为基于该窗口中的至少一个样本的替换值;使用访问的整数样本位置值以及替换值执行模板匹配。
这种装置提供的优点是,限制为了执行运动矢量确定(修正)而要使用的样本数量,同时还避免增加对存储全部参考图像的存储装置/(外部)存储器的访问。
在一个实施例中,所述搜索空间包括至少一个分数样本位置,该至少一个分数样本位置的值是通过预定义抽头大小的滤波器执行插值滤波得到的;插值滤波使用所述访问的整数样本位置值和至少一个替换值来获得所述至少一个分数样本位置值。
例如,通过相对于插值滤波器的轴对相应评估的整数样本位置的值进行镜像来确定替换值。插值滤波可以是一维滤波,也可以是可分离的二维滤波。
在一个示例性实施方式中,窗口由在搜索空间内的整数样本位置上执行模板匹配时可访问的所有整数样本位置组成。
例如,根据相对于搜索空间的垂直尺寸和/或水平尺寸,或者根据具有初始运动矢量位置上的预测块的尺寸的块,或者根据初始运动矢量位置来定义窗口。
又例如,替换值被确定为等于最接近的访问的整数样本位置上的值。
根据本发明另一方面,提供了一种编码装置,该编码装置用于将拆分为预测块的视频图像编码到比特流中,该编码装置包括:如上所述的用于确定预测块的运动矢量的装置;编码电路,用于对编码块和基于确定的运动矢量的位置上的预测块给定的预测值之间的差值进行编码,以及用于生成包括编码差值和初始运动矢量的比特流。
根据本发明另一方面,提供了一种解码装置,该解码装置用于从比特流中解码出拆分为预测块的视频图像,该解码装置包括:解析单元,用于从比特流中解析出初始运动矢量和预测块与修正运动矢量指定的位置上的预测块指定的预测值之间的编码差值;如上所述的用于确定预测块的修正运动矢量的装置;以及解码电路,用于将预测块重建为解析差值和由修正运动矢量指定的位置上的预测块给定的预测值之和。
根据本发明一方面,提供了一种用于确定预测块的运动矢量的方法,包括以下步骤:获取预测块的初始运动矢量和模板;通过在搜索空间中与所述模板进行模板匹配来确定初始运动矢量的修正运动矢量。搜索空间位于由初始运动矢量给定的位置上。模板匹配:访问预定窗口内的整数样本位置,该预定窗口包括所述搜索空间和执行模板匹配时可访问的其它整数样本位置;将位于窗口之外的至少一个整数样本位置替换为基于所述窗口内的至少一个样本的替换值;使用访问的整数样本位置值以及替换值执行模板匹配。
在一个实施例中,所述搜索空间包括至少一个分数样本位置,该至少一个分数样本位置的值通过使用预定义抽头大小的滤波器执行插值滤波获得;插值滤波使用所述访问的整数样本位置值和至少一个替换值来获得所述至少一个分数样本位置值。
例如,通过相对于插值滤波器的轴对相应访问的整数样本位置的值进行镜像来确定替换值。此外,在一个示例中,插值滤波是一维滤波,也可以是可分离的二维滤波。
例如,窗口由对所述搜索空间内的整数样本位置进行模板匹配时可访问的所有整数样本位置组成。
根据示例性实施方式,根据相对于搜索空间的垂直尺寸和/或水平尺寸,或者根据具有初始运动矢量位置上的编码块的尺寸的块,或者根据初始运动矢量位置来定义窗口。
根据另一个示例,替换值被确定为等于最接近的访问的整数样本位置的值。
此外,提供了一种编码方法,用于将拆分为预测块的视频图像编码到比特流中,该编码方法包括以下步骤:根据上文任一方法确定预测块的运动矢量;对预测块与基于确定的运动矢量的位置上的预测块给出的预测值之间的差值进行编码,以及生成包括编码差值和初始运动矢量的比特流。
该编码方法还可以包括结合图1中块的功能描述的步骤。
再进一步地,提供了一种解码方法,用于从比特流中解码出拆分为编码块的视频图像,该解码方法包括:从比特流中解析出初始运动矢量和预测块与修正运动矢量指定的位置上的预测块给出的预测值之间的编码差值;根据上文任一方法确定预测块的修正运动矢量;以及将预测块重建为解析的差值和由修正运动矢量指定的位置上的预测块给出的预测值的函数(例如,求和)。
该解码方法还可以包括结合图2中块的功能描述的步骤。
然而,需要说明的是,图1和图2并不限制本公开。图1和图2仅提供现有编码器和/或解码器内本发明实施方式的非限制性示例。
如上所述的使用初始运动矢量取整的运动矢量确定可以实现为视频信号(运动图像)的编码和/或解码的一部分。然而,运动矢量确定还可以用于图像处理中的其它目的,例如移动检测、移动分析等,不限于用于编码/解码。
运动矢量确定可实现为一种装置。这种装置可以是软件和硬件的组合。例如,运动矢量确定可以由通用处理器、数字信号处理器(DSP)、现场可编程门阵列(FGPA)等芯片执行。然而,本发明并不限于在可编程硬件上的实现。本发明可以在专用集成电路(ASIC)上实现,或者通过上述硬件组件的组合实现。
运动矢量确定也可以通过存储在计算机可读介质上的程序指令来实现。程序在执行时,使计算机执行上述方法的步骤。该计算机可读介质可以是存储程序的任何介质,例如DVD、CD、USB(闪存)驱动器、硬盘、通过网络可用的服务器存储等。
编码器和/或解码器可以在各种设备中实现,这些设备包括电视机、机顶盒、PC、平板电脑、智能手机等,即任何录制、编码、转码、解码、或播放设备。可以是实现方法步骤并存储在/运行在如上述电子设备中包括的处理器上的软件或应用。
概括而言,本公开涉及使用模板匹配或双边匹配的运动矢量确定。首先,获取候选运动矢量,并将其映射到相应代表(代表运动矢量)。特别地,如果获得的候选运动矢量指向分数位置并因此要求从整数样本位置进行插值,则将初始运动矢量取整到最近的整数样本位置。然后,使用取整的位置来定义模板匹配或双边匹配的搜索空间,以确定预测块的最优匹配运动矢量(换句话说,确定了初始运动矢量的修正运动矢量,候选空间围绕该初始运动矢量扩展)。最后,可以还原映射操作,以获得原始搜索空间的结果。
以下提供了本发明的其他实施例。应注意,以下部分使用的标号不一定与前述部分中使用的标号相符。
实施例1、一种用于确定视频图像的预测块的运动矢量的装置,该装置包括处理电路(600),处理电路(600)用于:
获得至少两个候选运动矢量(1010,1220),上述至少两个候选运动矢量(1010,1220)指向参考图像(Ref0,Ref1)中的位置并形成搜索空间;
通过对上述参考图像中的上述位置进行预定移位操作,分别修改每个候选运动矢量(1010,1220),以针对每个候选运动矢量获得修改的搜索空间中的相应代表运动矢量,上述修改的搜索空间由至少两个代表运动矢量(1210,1240)形成;
通过在上述修改的搜索空间中评估预定标准,从上述修改的搜索空间中选择第一运动矢量;
通过对第一运动矢量应用获得第一运动矢量的上述预定移位操作的逆移位操作,获得第二运动矢量。
实施例2、根据实施例1所述的装置,其中,处理电路(600)还用于输出第二运动矢量作为上述预测块的运动矢量。
实施例3、根据实施例1或2所述的装置,其中,处理电路(600)还用于,基于另一预定标准的判断,决定是输出上述第一运动矢量作为上述预测块的运动矢量,还是获得并输出第二运动矢量作为上述预测块的运动矢量。
实施例4、根据实施例3所述的装置,其中,上述另一预定标准是上述第一运动矢量是否等于上述修改的搜索空间的特定代表运动矢量,并且如果判断为否,则输出上述第一运动矢量,如果判断为是,则获得并输出上述第二运动矢量。
实施例5、根据实施例1至4中任一项所述的装置,其中,候选运动矢量(1010,1220)中的至少一个候选运动矢量指向分数样本位置,并且上述预定移位操作得到上述代表运动矢量所指向的位置,上述代表运动矢量通过将上述至少一个候选运动矢量所指向的分数位置取整为整数样本位置(1210,1410)给出。
实施例6、根据实施例1至5中任一项所述的装置,其中,上述修改的搜索空间由彼此间隔整数样本步长的样本位置组成。
实施例7、根据实施例5或6所述的装置,其中,上述修改的搜索空间由彼此间隔整数距离的行和列中的K行和L列样本组成,其中,对上述分数位置取整得到的上述整数样本位置是上述修改的搜索空间的样本(1210,1240)之一。
实施例8、根据实施例5至7中任一项所述的装置,其中,取整的分数位置(1410)基本位于上述修改的搜索空间的中心。
实施例9、根据实施例5至8中任一项所述的装置,其中,上述取整获得与上述候选运动矢量所指向的分数位置最接近的整数样本位置。
实施例10、根据实施例9所述的装置,其中,如果存在两个与上述分数位置等同接近的整数样本位置,则上述取整获得预定方向上的整数样本位置,该预定方向是左侧、右侧、上方、或下方;或者
如果存在四个与上述分数位置等同接近的整数样本位置,则上述取整获得预定方向上的整数样本位置,该预定方向为左下方、左上方、右上方、或右下方。
实施例11、根据实施例9所述的装置,其中,如果存在一个以上与上述分数位置等同接近的整数样本位置,则上述修改的搜索空间为位于上述一个以上与上述分数位置等同接近的整数样本位置上的搜索空间之和。
实施例12、根据实施例9所述的装置,其中,如果存在一个以上与上述分数位置等同接近的整数样本位置,则上述取整获得上述等同接近的整数样本位置中使得取整后的候选运动矢量的幅值更小的整数样本位置。
实施例13、根据前述实施例中任一项所述的装置,其中,获得至少两个候选运动矢量对(Pair_0,Pair_1,…,Pair_N),使得每对中的候选运动矢量指向不同参考图像中的位置,从而形成每个参考图像中的搜索空间,并且上述处理电路适于对上述对中的候选运动矢量执行实施例1中定义的处理,以获得第一运动矢量对(Pair_best_rep)和第二运动矢量对(Pair_best)。
实施例14、根据实施例9和13所述的装置,其中,如果存在一个以上与上述分数位置等同接近的整数样本位置,则对任意搜索空间中的候选运动矢量中的至少一个候选运动矢量进行取整,从而获得不同的代表运动矢量对。
实施例15、根据实施例13或14所述的装置,其中,上述处理电路(600)用于通过在参考图像(Ref0,Ref1)中的上述修改的搜索空间中的代表运动矢量对之间执行双边匹配,选择上述第一运动矢量对。
实施例16、根据实施例15所述的装置,其中,上述双边匹配包括为代表运动矢量对生成预测作为候选预测块,并通过比较对中的代表运动矢量所指向的上述候选预测块,计算双边匹配成本函数,并且其中,使双边匹配成本函数最小化的代表运动矢量对被确定为上述第一运动矢量对。
实施例17、根据实施例16所述的装置,其中,上述处理电路(600)还用于,在指向上述相应参考图像的对中的上述候选运动矢量(MV0,MV1)与当前图像和参考图像(Ref0,Ref1)之间的时间差(TD0,TD1)成比例的情况下,定义候选运动矢量对,其中,针对上述候选运动矢量对获得相应的代表运动矢量,并为上述代表运动矢量计算上述双边匹配成本函数。
实施例18、根据实施例17所述的装置,其中,
获得的上述候选运动矢量对之一被设为锚候选运动矢量对;以及
上述候选运动矢量对在以下条件下定义:任意对中指向第一参考图像(Ref0)中的位置的候选运动矢量(MV0)与锚候选运动矢量对中指向第一参考图像(Ref0)的相应候选运动矢量之间的差以及任意对中指向第二参考图像(Ref1)中的位置的候选运动矢量(MV1)和锚候选运动矢量对中指向第二参考图像(Ref1)的相应候选运动矢量对之间的差彼此镜像。
实施例19、根据实施例1至14中任一项所述的装置,其中,上述处理电路(600)还用于
获得上述预测块的模板,以及
通过在上述修改的搜索空间中与上述模板进行模板匹配,选择上述第一运动矢量。
实施例20、根据实施例19所述的装置,其中,上述模板匹配包括为代表运动矢量(1210,1410)生成预测作为候选预测块,并通过比较上述代表运动矢量所指向的候选预测块与上述模板,计算模板匹配成本函数,并且其中,使模板成本函数最小化的上述代表运动矢量被选择为上述第一运动矢量。
实施例21、根据实施例15至20中任一项所述的装置,其中,上述候选运动矢量中的至少一个候选运动矢量指向分数样本位置(1010,1220),并且上述预定移位操作得到上述代表运动矢量所指向的位置,上述代表运动矢量通过将上述至少一个候选运动矢量所指向的分数位置取整为整数样本位置(1210,1410)给出,上述处理电路还用于:
为指向分数样本位置的候选运动矢量计算模板匹配或双边匹配的成本,
比较计算的分数样本位置的模板匹配或双边匹配的成本与选择的第一运动矢量的模板匹配或双边匹配的成本,以及
如果选择的第一运动矢量的模板匹配或双边匹配的成本不低于计算的分数样本位置的模板匹配或双边匹配的成本,则基于上述分数样本位置确定预测块的运动矢量。
实施例22、根据实施例15至21中任一项所述的装置,其中,上述处理电路(600)用于对搜索空间执行模板匹配或双边匹配,上述搜索空间的上述样本位置通过以下多个步骤确定,该步骤包括:
确定由彼此间隔整数样本步长的样本位置组成的整数搜索空间,
在上述整数搜索空间中执行模板匹配或双边匹配,以获得最优匹配整数位置,
基于上述最优匹配整数位置确定分数搜索空间,该分数搜索空间的至少一个样本与最近的整数搜索空间样本位置的间隔小于整数样本步长,以及
在上述分数搜索空间中执行模板匹配或双边匹配,以获得最优匹配位置。
实施例23、根据实施例15至22中任一项所述的装置,其中,
执行双边匹配或模板匹配的上述搜索空间包括一个或多个分数样本位置,
属于上述搜索空间的每个分数样本位置都是使用预定义抽头大小的滤波器进行插值滤波获得的,其中上述滤波器仅评估窗口(1920)内的整数样本,
上述窗口(1920)由在上述搜索空间中执行模板匹配或双边匹配时可访问的整数样本组成。
实施例24、一种用于对预测块进行编码的装置,包括:
根据实施例1至23中任一项所述的用于确定预测块的运动矢量的装置;以及
其中,上述处理电路还用于对预测块和根据运动矢量获得的预测值之间的差进行编码,从而产生比特流。
实施例25、根据实施例24的用于对预测块进行编码的装置,其中,上述理电路还用于使用插值滤波器进行插值,根据上述运动矢量确定上述预测值,其中,上述插值
-访问预定窗口内的整数样本位置处的样本值,
-用基于上述窗口内的至少一个样本的填充值填充位于上述窗口外的整数样本位置的至少一个样本值,以及
-使用访问的整数样本位置值以及替换值执行上述插值。
实施例26、根据实施例25所述的用于对预测块进行编码的装置,其中,上述窗口由获得如下预测值时可访问的所有整数样本位置组成:该预测值由候选运动矢量所指定的位置中的预测块给出。
实施例27、根据实施例25或26所述的用于对预测块进行编码的装置,其中,
获得的候选运动矢量之一被设为锚候选运动矢量,以及
上述窗口由相对于以下至少之一的垂直尺寸或水平尺寸定义:
位于上述锚候选运动矢量的上述候选运动矢量位置上且具有一定尺寸的块。
上述候选运动矢量的上述位置,以及
用于获得上述预测值的上述插值滤波器的垂直长度和水平长度。
实施例28、一种用于从比特流中解码预测块的装置,包括:
根据实施例1至23中任一项所述的用于确定预测块的运动矢量的装置;
其中,上述处理电路还用于:
从上述比特流中解码上述预测块和根据运动矢量获得的预测值之间的差;
根据上述运动矢量确定上述预测值;以及
根据上述预测值和解码的差重建上述预测块。
实施例29、根据实施例28所述的用于解码预测块的装置,其中,上述处理电路用于使用插值滤波器进行插值来确定预测值,其中,上述插值
-访问预定窗口内的整数样本位置处的样本值,
-用基于上述窗口内的至少一个样本的替换值替换位于上述窗口外的整数样本位置的至少一个样本值,以及
-使用访问的整数样本位置值以及替换值执行上述插值。
实施例30、根据实施例29所述的用于解码预测块的装置,其中,上述窗口由获得如下预测值时可访问的所有整数样本位置组成,该预测值由候选运动矢量所指定的位置中的预测块给出。
实施例31、根据实施例29或30所述的用于解码预测块的装置,其中,
获得的所述候选运动矢量之一被设为锚候选运动矢量,以及
上述窗口由相对于以下至少之一的垂直尺寸或水平尺寸定义:
位于上述锚候选运动矢量的上述候选运动矢量位置上且具有一定尺寸的块。
上述候选运动矢量的上述位置,以及
用于获得上述预测值的上述插值滤波器的垂直长度和水平长度。
实施例32、一种用于确定预测块的运动矢量的方法,包括以下步骤:
获得(1310)至少两个候选运动矢量,上述至少两个候选运动矢量指向参考图像中的位置并形成搜索空间;
通过对上述参考图像中的上述位置进行预定移位操作,分别修改(1515)每个候选运动矢量,以获得修改的搜索空间中的相应代表运动矢量,上述修改的搜索空间由至少两个代表运动矢量形成;
通过在上述修改的搜索空间中评估预定标准,从上述修改的搜索空间中选择(1520,1530,1540,1550)第一运动矢量;
通过对上述第一运动矢量应用获得该第一运动矢量的上述预定移位操作的逆移位操作,获得(1660)第二运动矢量。
实施例33、一种用于确定预测块的运动矢量的方法,包括以下步骤:
获得(1310)至少两个候选运动矢量,上述至少两个候选运动矢量指向参考图像中的位置并形成搜索空间;
通过对上述参考图像中的上述位置进行预定移位操作,分别修改(1515)每个候选运动矢量,以获得修改的搜索空间中的相应代表运动矢量,上述修改的搜索空间由至少两个代表运动矢量形成,
通过在上述修改的搜索空间中评估第一预定标准,从上述修改的搜索空间中选择(1520,1530,1540,1550)第一运动矢量,
基于第二预定标准的判断,决定(1755)是输出上述第一运动矢量作为上述预测块的运动矢量,还是通过应用获得上述第一运动矢量的上述预定移位操作的逆移位操作获得第二运动矢量并输出该第二运动矢量作为上述预测块的运动矢量,以及
如果在上述决定步骤中决定获得上述第二运动矢量,则获得(1660)上述第二运动矢量。
实施例34、一种用于对预测块进行编码的方法,包括以下步骤:
根据实施例32或33所述的方法确定上述预测块的运动矢量;以及
对上述预测块和根据上述运动矢量获得的预测值之间的差进行编码,从而产生比特流。
实施例35、根据实施例34所述的方法,还包括步骤(2680):使用插值滤波器进行插值,根据上述运动矢量确定上述预测值,其中,上述插值
-访问预定窗口内的整数样本位置处的样本值,
-用基于上述窗口内的至少一个样本的替换值替换位于上述窗口外的整数样本位置处的至少一个样本值,以及
-使用访问的上述整数样本位置值以及上述替换值执行上述插值。
实施例36、根据实施例35所述的方法,其中,上述窗口由获得如下预测值时可访问的所有整数样本位置组成:该预测值由候选运动矢量所指定的位置中的预测块给出。
实施例37、根据实施例35或36所述的方法,其中,
获得的候选运动矢量之一被设为锚候选运动矢量,以及
上述窗口由相对于以下至少之一的垂直尺寸或水平尺寸定义:
位于上述锚候选运动矢量的上述候选运动矢量位置上并具有一定尺寸的块。
上述候选运动矢量的上述位置,以及
用于获得上述预测值的上述插值滤波器的垂直长度和水平长度。
实施例38、一种用于从比特流中解码预测块的方法,包括:
从上述比特流中解码上述预测块和根据运动矢量获得的预测值之间的差;
根据实施例32或33中所述的方法确定上述预测块的运动矢量;
根据上述运动矢量确定(2680)上述预测值;
根据上述预测值和解码的差重建所述块。
实施例39、根据实施例38所述的方法,其中上述步骤(2680)使用插值滤波器进行插值以确定上述预测值,其中上述插值
-访问预定窗口内的整数样本位置处的样本值,
-用基于上述窗口内的至少一个样本的替换值替换位于上述窗口外的整数样本位置处的至少一个样本值,以及
-使用访问的整数样本位置值以及上述替换值执行上述插值。
实施例40、根据实施例39所述的用于解码预测块的装置,其中,上述窗口由获得候选运动矢量所指定的位置中的上述预测值时可访问的所有整数样本位置组成。
实施例41、根据实施例39或40所述的用于解码预测块的装置,其中,
获得的候选运动矢量之一被设为锚候选运动矢量,以及
上述窗口由相对于以下至少之一的垂直尺寸或水平尺寸定义:
位于上述锚候选运动矢量的上述候选运动矢量位置上的块尺寸。
上述候选运动矢量的上述位置,以及
用于获得上述预测值的上述插值滤波器的垂直长度和水平长度。
实施例42、一种存储指令的计算机可读介质,当在处理器上执行时,使处理器执行根据实施例32至41中任一项所述的方法。

Claims (35)

1.一种用于确定视频图像块的运动矢量的装置,所述装置包括处理电路(600),所述处理电路(600)用于:
获得至少两个候选运动矢量对(Pair_0, Pair_1,…, Pair_N),每对中的候选运动矢量分别指向不同参考图像中的位置,从而形成每个参考图像中的搜索空间;
对于每个参考图像,通过对所述参考图像中的所述位置进行移位操作,分别修改每个所述候选运动矢量,以针对每个所述候选运动矢量获得修改的搜索空间中的相应代表运动矢量,所述修改的搜索空间由至少两个代表运动矢量形成,所述至少两个候选运动矢量中的至少一个候选运动矢量指向分数样本位置,并且所述移位操作得到所述代表运动矢量所指向的位置,所述代表运动矢量通过将所述至少一个候选运动矢量所指向的所述分数样本位置取整为整数样本位置而得到;其中,所述取整获得与所述候选运动矢量所指向的所述分数样本位置最接近的整数样本位置;
通过在所述修改的搜索空间中评估标准,从所述修改的搜索空间中选择第一运动矢量,从而获得第一运动矢量对(Pair_best_rep);以及
通过对所述第一运动矢量应用获得所述第一运动矢量的所述移位操作的逆移位操作,获得第二运动矢量,从而获得第二运动矢量对(Pair_best);
其中,如果存在一个以上与所述分数样本位置等同接近的整数样本位置,则对任意所述搜索空间中的所述候选运动矢量中的至少一个候选运动矢量进行所述取整,从而获得彼此不同的代表运动矢量对。
2.根据权利要求1所述的装置,其中,所述处理电路(600)还用于输出所述第二运动矢量作为所述块的所述运动矢量。
3.根据权利要求1或2所述的装置,其中,所述处理电路(600)还用于,基于另一标准的判断,决定是输出所述第一运动矢量作为所述块的所述运动矢量,还是获得并输出所述第二运动矢量作为所述块的所述运动矢量。
4.根据权利要求3所述的装置,其中,所述另一标准是所述第一运动矢量是否等于所述修改的搜索空间的特定代表运动矢量,并且如果判断为否,则输出所述第一运动矢量,如果判断为是,则获得并输出所述第二运动矢量。
5.根据权利要求1、2或4所述的装置,其中,所述修改的搜索空间由彼此间隔整数样本步长的样本位置组成。
6.根据权利要求1、2或4所述的装置,其中,所述修改的搜索空间由彼此间隔整数距离的行和列中的K行和L列样本组成,其中,对所述分数样本位置取整得到的所述整数样本位置是所述修改的搜索空间的所述样本之一。
7.根据权利要求1、2或4所述的装置,其中,取整的所述分数样本位置基本位于所述修改的搜索空间的中心。
8.根据权利要求1所述的装置,其中,所述处理电路(600)用于通过在所述参考图像(Ref0, Ref1)中的所述修改的搜索空间中的所述代表运动矢量对之间执行双边匹配,选择所述第一运动矢量对。
9.根据权利要求8所述的装置,其中,所述双边匹配包括为代表运动矢量对生成预测作为候选预测块,并通过比较对中的所述代表运动矢量所指向的所述候选预测块,计算双边匹配成本函数,并且其中,使所述双边匹配成本函数最小化的所述代表运动矢量对被确定为所述第一运动矢量对。
10.根据权利要求9所述的装置,其中,所述处理电路(600)还用于,在指向相应参考图像的所述对中的所述候选运动矢量(MV0,MV1)与当前图像和所述参考图像(Ref0,Ref1)之间的时间差(TD0,TD1)成比例的情况下,定义候选运动矢量对,其中,针对所述候选运动矢量对获得相应的代表运动矢量,其中,为所述代表运动矢量计算所述双边匹配成本函数。
11.根据权利要求10所述的装置,其中,
获得的所述候选运动矢量对之一被设为锚候选运动矢量对;以及
所述候选运动矢量对在以下条件下定义:任意对中指向第一参考图像(Ref0)中的位置的所述候选运动矢量(MV0)与所述锚候选运动矢量对中指向所述第一参考图像(Ref0)的所述相应候选运动矢量之间的差以及任意对中指向第二参考图像(Ref1)中的位置的所述候选运动矢量(MV1)和所述锚候选运动矢量对中指向所述第二参考图像(Ref1)的相应候选运动矢量对之间的差彼此镜像。
12.根据权利要求1-2、4、8-11中任一项所述的装置,其中,所述处理电路(600)还用于
获得所述块的模板,以及
通过在所述修改的搜索空间与所述模板进行模板匹配,选择所述第一运动矢量。
13.根据权利要求12所述的装置,其中,所述模板匹配包括为代表运动矢量(1210,1410)生成预测作为候选预测块,并通过比较所述代表运动矢量所指向的所述候选预测块与所述模板,计算模板匹配成本函数,并且其中,使所述模板成本函数最小化的所述代表运动矢量被选择为所述第一运动矢量。
14.根据权利要求12或13所述的装置,其中,所述处理电路还用于:
为指向分数样本位置的所述候选运动矢量计算模板匹配或双边匹配的成本,
比较计算的所述分数样本位置的所述模板匹配或双边匹配的成本与选择的所述第一运动矢量的所述模板匹配或双边匹配的成本,以及
如果选择的所述第一运动矢量的所述模板匹配或双边匹配的成本不低于计算的所述分数样本位置的所述模板匹配或双边匹配的成本,则基于所述分数样本位置确定所述块的所述运动矢量。
15.根据权利要求1-2、4、8-11、13中任一项所述的装置,其中,所述处理电路(600)用于对搜索空间执行模板匹配或双边匹配,所述搜索空间的样本位置通过以下多个步骤确定,所述步骤包括:
确定由彼此间隔整数样本步长的样本位置组成的整数搜索空间,
在所述整数搜索空间中执行模板匹配或双边匹配,以获得最优匹配整数位置,
基于所述最优匹配整数位置确定分数搜索空间,所述分数搜索空间的至少一个样本与最近的整数搜索空间样本位置的间隔小于整数样本步长,以及
在所述分数搜索空间中执行模板匹配或双边匹配,以获得最优匹配位置。
16.根据权利要求14所述的装置,其中,
执行所述双边匹配或模板匹配的所述搜索空间包括一个或多个分数样本位置,
属于所述搜索空间的每个所述分数样本位置都是使用具有预定义抽头大小的滤波器进行插值滤波获得的,其中所述滤波器仅评估窗口(1920)内的整数样本,
所述窗口(1920)由在所述搜索空间中执行所述模板匹配或双边匹配时可访问的整数样本组成。
17.一种用于对块进行编码的装置,包括:
根据权利要求1至16中任一项所述的用于确定所述块的运动矢量的所述装置;以及
其中,所述处理电路还用于对所述块和根据所述运动矢量获得的预测值之间的差进行编码,从而产生比特流。
18.根据权利要求17的用于对块进行编码的装置,其中,所述处理电路还用于使用插值滤波器进行插值并根据所述运动矢量确定所述预测值,其中,所述插值
-访问窗口内的整数样本位置处的样本值,
-用基于所述窗口内的至少一个样本的填充值填充位于所述窗口外的整数样本位置的至少一个样本值,以及
-使用访问的所述整数样本位置值以及至少一个所述填充值执行所述插值。
19.根据权利要求18所述的用于对块进行编码的装置,其中,所述窗口由获得如下预测值时可访问的所有整数样本位置组成:所述预测值由候选运动矢量所指定的位置中的块给出。
20.根据权利要求18或19所述的用于对块进行编码的装置,其中
获得的所述候选运动矢量之一被设为锚候选运动矢量,以及
所述窗口由相对于以下至少之一的垂直尺寸或水平尺寸定义:
位于所述锚候选运动矢量的所述候选运动矢量位置上的块尺寸,
所述候选运动矢量的所述位置,以及
用于获得所述预测值的所述插值滤波器的垂直长度和水平长度。
21.一种用于从比特流中解码块的装置,包括:
根据权利要求1至16中任一项所述的用于确定所述块的所述运动矢量的装置;
其中,所述处理电路还用于:
从所述比特流中解码所述块和根据运动矢量获得的预测值之间的差;
根据所述运动矢量确定所述预测值;以及
根据所述预测值和解码的所述差重建所述块。
22.根据权利要求21所述的用于解码块的装置,其中,所述处理电路用于使用插值滤波器进行插值来确定所述预测值,其中,所述插值
-访问窗口内的整数样本位置处的样本值,
-用基于所述窗口内的至少一个样本的填充值填充位于所述窗口外的整数样本位置的至少一个样本值,以及
-使用访问的所述整数样本位置值以及所述至少一个填充值执行所述插值。
23.根据权利要求22所述的用于解码块的装置,其中,所述窗口由获得如下预测值时可访问的所有整数样本位置组成:所述预测值由候选运动矢量所指定的位置中的块给出。
24.根据权利要求22或23所述的用于解码块的装置,其中,
获得的所述候选运动矢量之一被设为锚候选运动矢量,以及
所述窗口由相对于以下至少之一的垂直尺寸或水平尺寸定义:
位于所述锚候选运动矢量的所述候选运动矢量位置上的块尺寸,
所述候选运动矢量的所述位置,以及
用于获得所述预测值的所述插值滤波器的垂直长度和水平长度。
25.一种用于确定块的运动矢量的方法,包括以下步骤:
获得至少两个候选运动矢量对(Pair_0, Pair_1,…, Pair_N),每对中的候选运动矢量分别指向不同参考图像之一中的位置,从而形成每个参考图像中的搜索空间;
对于每个参考图像,通过对所述参考图像中的所述位置进行移位操作,分别修改(1515)每个所述候选运动矢量,以获得修改的搜索空间中的相应代表运动矢量,所述修改的搜索空间由至少两个代表运动矢量形成,所述至少两个候选运动矢量中的至少一个候选运动矢量指向分数样本位置,并且所述移位操作得到所述代表运动矢量所指向的位置,所述代表运动矢量通过将所述至少一个候选运动矢量所指向的所述分数样本位置取整为整数样本位置而得到;其中,所述取整获得与所述候选运动矢量所指向的所述分数样本位置最接近的整数样本位置;
通过在所述修改的搜索空间中评估预定标准,从所述修改的搜索空间中选择(1520,1530,1540,1550)第一运动矢量,从而获得第一运动矢量对(Pair_best_rep);
通过对所述第一运动矢量应用获得所述第一运动矢量的所述移位操作的逆移位操作,获得(1660)第二运动矢量,从而获得第二运动矢量对(Pair_best);
其中,如果存在一个以上与所述分数样本位置等同接近的整数样本位置,则对任意所述搜索空间中的所述候选运动矢量中的至少一个候选运动矢量进行所述取整,从而获得彼此不同的代表运动矢量对。
26.一种用于确定块的运动矢量的方法,包括以下步骤:
获得至少两个候选运动矢量对(Pair_0, Pair_1,…, Pair_N),每对中的候选运动矢量分别指向不同参考图像之一中的位置,从而形成每个参考图像中的搜索空间;
对于每个参考图像,通过对所述参考图像中的所述位置进行移位操作,分别修改(1515)每个所述候选运动矢量,以获得修改的搜索空间中的相应代表运动矢量,所述修改的搜索空间由至少两个代表运动矢量形成,所述至少两个候选运动矢量中的至少一个候选运动矢量指向分数样本位置,并且所述移位操作得到所述代表运动矢量所指向的位置,所述代表运动矢量通过将所述至少一个候选运动矢量所指向的所述分数样本位置取整为整数样本位置而得到;其中,所述取整获得与所述候选运动矢量所指向的所述分数样本位置最接近的整数样本位置,
通过在所述修改的搜索空间中评估第一标准,从所述修改的搜索空间中选择(1520,1530,1540,1550)第一运动矢量,从而获得第一运动矢量对(Pair_best_rep),
基于第二预定标准的判断,决定(1755)是输出所述第一运动矢量作为所述块的所述运动矢量,还是通过应用获得所述第一运动矢量的所述移位操作的逆移位操作获得第二运动矢量,从而获得第二运动矢量对(Pair_best),并输出所述第二运动矢量作为所述块的所述运动矢量,以及
如果在所述决定步骤中决定获得所述第二运动矢量,则获得(1660)所述第二运动矢量;
其中,如果存在一个以上与所述分数样本位置等同接近的整数样本位置,则对任意所述搜索空间中的所述候选运动矢量中的至少一个候选运动矢量进行所述取整,从而获得彼此不同的代表运动矢量对。
27.一种用于对块进行编码的方法,包括以下步骤:
根据权利要求25或26所述的方法确定所述块的运动矢量;以及
对所述块和根据所述运动矢量获得的预测值之间的差进行编码,从而产生比特流。
28.根据权利要求27所述的方法,还包括步骤(2680):使用插值滤波器进行插值,根据所述运动矢量确定所述预测值,其中,所述插值包括:
-访问预定窗口内的整数样本位置处的样本值,
-用基于所述窗口内的至少一个样本的替换值替换位于所述窗口外的整数样本位置处的至少一个样本值,以及
-使用访问的所述整数样本位置值以及所述替换值执行所述插值。
29.根据权利要求28所述的方法,其中,所述窗口由获得如下预测值时可访问的所有整数样本位置组成:所述预测值由候选运动矢量所指定的位置中的块给出。
30.根据权利要求28或29所述的方法,其中,
获得的所述候选运动矢量之一被设为锚候选运动矢量,以及
所述窗口由相对于以下至少之一的垂直尺寸或水平尺寸定义:
位于所述锚候选运动矢量的所述候选运动矢量位置上的块尺寸,
所述候选运动矢量的所述位置,以及
用于获得所述预测值的所述插值滤波器的垂直长度和水平长度。
31.一种用于从比特流中解码块的方法,包括:
从所述比特流中解码所述块和根据运动矢量获得的预测值之间的差;
根据权利要求25或26中所述的方法确定所述块的所述运动矢量;
根据所述运动矢量确定(2680)所述预测值;
根据所述预测值和解码的所述差重建所述块。
32.根据权利要求31所述的方法,其中所述步骤(2680)使用插值滤波器进行插值以确定所述预测值,其中所述插值
-访问预定窗口内的整数样本位置处的样本值,
-用基于所述窗口内的至少一个样本的替换值替换位于所述窗口外的整数样本位置处的至少一个样本值,以及
-使用访问的所述整数样本位置值以及所述替换值执行所述插值。
33.根据权利要求32所述的方法,其中,所述窗口由获得候选运动矢量所指定的位置中的所述预测值时可访问的所有整数样本位置组成。
34.根据权利要求32或33所述的方法,其中,
获得的所述候选运动矢量之一被设为锚候选运动矢量,以及
所述窗口由相对于以下至少之一的垂直尺寸或水平尺寸定义:
位于所述锚候选运动矢量的所述候选运动矢量位置上的块尺寸,
所述候选运动矢量的所述位置,以及
用于获得所述预测值的所述插值滤波器的垂直长度和水平长度。
35.一种存储指令的计算机可读介质,当在处理器上执行时,使所述处理器执行根据权利要求25至34中任一项所述的方法。
CN201980020898.XA 2018-06-28 2019-06-28 使用整数像素分辨率的运动矢量修正搜索 Active CN111886870B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862691582P 2018-06-28 2018-06-28
US201862691594P 2018-06-28 2018-06-28
US62/691,594 2018-06-28
US62/691,582 2018-06-28
PCT/CN2019/093499 WO2020001578A1 (en) 2018-06-28 2019-06-28 Motion vector refinement search with integer pixel resolution

Publications (2)

Publication Number Publication Date
CN111886870A CN111886870A (zh) 2020-11-03
CN111886870B true CN111886870B (zh) 2023-02-03

Family

ID=68985791

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201980038772.5A Pending CN112292862A (zh) 2018-06-28 2019-06-28 用于运动矢量修正和运动补偿的存储器访问窗口和填充
CN201980020898.XA Active CN111886870B (zh) 2018-06-28 2019-06-28 使用整数像素分辨率的运动矢量修正搜索

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201980038772.5A Pending CN112292862A (zh) 2018-06-28 2019-06-28 用于运动矢量修正和运动补偿的存储器访问窗口和填充

Country Status (10)

Country Link
US (3) US11363292B2 (zh)
EP (2) EP3799693A4 (zh)
JP (2) JP7171770B2 (zh)
KR (2) KR20230165870A (zh)
CN (2) CN112292862A (zh)
AU (1) AU2019296308B9 (zh)
BR (1) BR112020026830A2 (zh)
CA (1) CA3104570C (zh)
SG (1) SG11202012700UA (zh)
WO (2) WO2020001578A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111201795B (zh) * 2017-10-09 2022-07-26 华为技术有限公司 存储访问窗口和用于运动矢量修正的填充
JP7171770B2 (ja) * 2018-06-28 2022-11-15 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 動きベクトル精密化および動き補償のためのメモリアクセスウィンドウおよびパディング
WO2020103944A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Sub-block based motion candidate selection and signaling
KR20200078378A (ko) * 2018-12-21 2020-07-01 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020185747A1 (en) * 2019-03-11 2020-09-17 Vid Scale, Inc. Methods and systems for post-reconstruction filtering
US11936916B2 (en) * 2019-06-25 2024-03-19 Lg Electronics Inc. Image decoding method using lossless coding in image coding system and apparatus therefor
BR112022002687A2 (pt) * 2019-08-13 2022-09-27 Beijing Bytedance Network Tech Co Ltd Método de processamento de vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador
WO2021052504A1 (en) 2019-09-22 2021-03-25 Beijing Bytedance Network Technology Co., Ltd. Scaling method for sub-block based inter prediction
CN113709458B (zh) * 2020-05-22 2023-08-29 腾讯科技(深圳)有限公司 视频编解码中的位移矢量预测方法、装置及设备
US20240171756A1 (en) * 2021-03-30 2024-05-23 Interdigital Ce Patent Holdings, Sas Template matching prediction for video encoding and decoding
WO2023101990A1 (en) * 2021-11-30 2023-06-08 Beijing Dajia Internet Information Technology Co., Ltd. Motion compensation considering out-of-boundary conditions in video coding
CN114154645B (zh) * 2021-12-03 2022-05-17 中国科学院空间应用工程与技术中心 跨中心图像联合学习方法、系统、存储介质及电子设备
WO2024014896A1 (ko) * 2022-07-13 2024-01-18 엘지전자 주식회사 움직임 정보 리파인먼트에 기반한 영상 부호화/복호화 방법, 비트스트림을 전송하는 방법 및 비트스트림을 저장한 기록 매체

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998042134A1 (en) * 1997-03-17 1998-09-24 Mitsubishi Denki Kabushiki Kaisha Image encoder, image decoder, image encoding method, image decoding method and image encoding/decoding system
US7342962B2 (en) * 2003-09-17 2008-03-11 Texas Instruments Incorporated Transcoders and methods
US8553776B2 (en) 2004-07-21 2013-10-08 QUALCOMM Inorporated Method and apparatus for motion vector assignment
JP4802885B2 (ja) * 2006-06-19 2011-10-26 ソニー株式会社 動きベクトル検出装置および方法、プログラム並びに記録媒体
US8160150B2 (en) * 2007-04-10 2012-04-17 Texas Instruments Incorporated Method and system for rate distortion optimization
EP1988502A1 (en) 2007-05-04 2008-11-05 Deutsche Thomson OHG Method and device for retrieving a test block from a blockwise stored reference image
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
JP5875989B2 (ja) * 2010-01-19 2016-03-02 トムソン ライセンシングThomson Licensing ビデオ・エンコードおよびデコードのための低複雑性テンプレート照合予測のための方法および装置
CN102611887B (zh) * 2011-01-21 2015-08-05 华为技术有限公司 非整像素位置运动矢量的坐标值取整方法和装置
US9749657B2 (en) * 2011-01-21 2017-08-29 Sharp Kabushiki Kaisha Buffer compression for motion vector competition
US9641866B2 (en) * 2011-08-18 2017-05-02 Qualcomm Incorporated Applying partition-based filters
US9325991B2 (en) * 2012-04-11 2016-04-26 Qualcomm Incorporated Motion vector rounding
EP2683165B1 (en) * 2012-07-04 2015-10-14 Thomson Licensing Method for coding and decoding a block of pixels from a motion model
US10284842B2 (en) * 2013-03-05 2019-05-07 Qualcomm Incorporated Inter-layer reference picture construction for spatial scalability with different aspect ratios
US9609347B2 (en) * 2013-04-04 2017-03-28 Qualcomm Incorporated Advanced merge mode for three-dimensional (3D) video coding
US9942560B2 (en) * 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US10205950B2 (en) * 2014-02-21 2019-02-12 Panasonic Corporation Image decoding method, image encoding method, image decoding apparatus, and image encoding apparatus
GB2524476B (en) * 2014-03-14 2016-04-27 Canon Kk Method, device and computer program for optimizing transmission of motion vector related information when transmitting a video stream
US10412387B2 (en) * 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
US10200711B2 (en) * 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding
JP2017017629A (ja) * 2015-07-03 2017-01-19 富士通株式会社 動画像符号化装置、動画像符号化方法、及びプログラム
US10511835B2 (en) * 2015-09-02 2019-12-17 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
US10812822B2 (en) * 2015-10-02 2020-10-20 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable IBC reference region
US20170272775A1 (en) * 2015-11-19 2017-09-21 Hua Zhong University Of Science Technology Optimization of interframe prediction algorithms based on heterogeneous computing
US10136155B2 (en) * 2016-07-27 2018-11-20 Cisco Technology, Inc. Motion compensation using a patchwork motion field
US10701366B2 (en) * 2017-02-21 2020-06-30 Qualcomm Incorporated Deriving motion vector information at a video decoder
US10805630B2 (en) * 2017-04-28 2020-10-13 Qualcomm Incorporated Gradient based matching for motion search and derivation
US10477237B2 (en) * 2017-06-28 2019-11-12 Futurewei Technologies, Inc. Decoder side motion vector refinement in video coding
CN111201795B (zh) 2017-10-09 2022-07-26 华为技术有限公司 存储访问窗口和用于运动矢量修正的填充
CN111201792B (zh) 2017-10-09 2022-06-14 华为技术有限公司 指向分数像素点位置的运动矢量的修正运动矢量
JP7171770B2 (ja) * 2018-06-28 2022-11-15 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 動きベクトル精密化および動き補償のためのメモリアクセスウィンドウおよびパディング

Also Published As

Publication number Publication date
JP7171770B2 (ja) 2022-11-15
EP3794827A4 (en) 2021-03-31
BR112020026830A2 (pt) 2021-04-06
US20220394291A1 (en) 2022-12-08
JP2021529471A (ja) 2021-10-28
CA3104570C (en) 2023-05-23
KR20230165870A (ko) 2023-12-05
AU2019296308B2 (en) 2023-04-06
WO2020001578A1 (en) 2020-01-02
CN111886870A (zh) 2020-11-03
US11363292B2 (en) 2022-06-14
SG11202012700UA (en) 2021-01-28
KR102606778B1 (ko) 2023-11-29
EP3799693A1 (en) 2021-04-07
WO2020001574A1 (en) 2020-01-02
EP3794827A1 (en) 2021-03-24
AU2019296308B9 (en) 2023-08-03
KR20210019097A (ko) 2021-02-19
JP2023014095A (ja) 2023-01-26
US11451824B2 (en) 2022-09-20
US20200404323A1 (en) 2020-12-24
US20210195232A1 (en) 2021-06-24
AU2019296308A1 (en) 2021-01-21
EP3799693A4 (en) 2021-04-07
CN112292862A (zh) 2021-01-29
CA3104570A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
CN111886870B (zh) 使用整数像素分辨率的运动矢量修正搜索
KR102642784B1 (ko) 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
CN111201795B (zh) 存储访问窗口和用于运动矢量修正的填充
CN111201792B (zh) 指向分数像素点位置的运动矢量的修正运动矢量
CN111567047B (zh) 进行子预测块运动矢量推导的存储器访问窗口

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