CN115243051B - 用于运动向量修正的受限存储器访问窗口 - Google Patents

用于运动向量修正的受限存储器访问窗口 Download PDF

Info

Publication number
CN115243051B
CN115243051B CN202210629775.XA CN202210629775A CN115243051B CN 115243051 B CN115243051 B CN 115243051B CN 202210629775 A CN202210629775 A CN 202210629775A CN 115243051 B CN115243051 B CN 115243051B
Authority
CN
China
Prior art keywords
motion vector
window
search space
prediction block
samples
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
CN202210629775.XA
Other languages
English (en)
Other versions
CN115243051A (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
Priority to CN202210629775.XA priority Critical patent/CN115243051B/zh
Publication of CN115243051A publication Critical patent/CN115243051A/zh
Application granted granted Critical
Publication of CN115243051B publication Critical patent/CN115243051B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/207Analysis of motion for motion estimation over a hierarchy of resolutions
    • 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/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/117Filters, e.g. for pre-processing or post-processing
    • 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/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction

Landscapes

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

Abstract

本发明涉及运动向量的修正。在第一步中,获取预测块的初始运动向量和模板。然后,所述初始运动向量的所述修正通过在搜索空间中与所述模板进行模板匹配来确定。所述搜索空间位于由所述初始运动向量给出的位置并且包括一个或多个分数样本位置,其中属于所述搜索空间的所述分数样本位置中的每一个通过使用具有预定义抽头大小的、仅评估窗口内的整数样本的滤波器进行插值滤波而获取,所述窗口由可由所述搜索空间中匹配的所述模板访问的整数样本构成。

Description

用于运动向量修正的受限存储器访问窗口
本申请是分案申请,原申请的申请号是201880033256.9,原申请日是2018年05月30日,原申请的全部内容通过引用结合在本申请中。
技术领域
本发明涉及可在视频编码和解码过程中采用的运动向量的确定和修正。
背景技术
当前的混合视频编解码器采用预测编码。将视频序列的图片细分为像素块,然后对这些块进行编码。使用与整个块空间相邻或时间相邻的已编码像素来预测该块,而不是逐个像素地对该块进行编码。编码器进一步仅处理该块与其预测块之间的差。该进一步处理通常包括将块像素变换成变换域中的系数。然后该系数可以通过量化进一步压缩,并通过熵编码进一步压缩以形成比特流。比特流还包括任何使解码器能够解码已编码视频的信令信息。例如,信令可以包括关于编码器设置的设置,例如输入图片的大小、帧率、量化步骤指示、应用于图片块的预测等。
时间预测利用视频的图片(也称为帧)之间的时间相关性。时间预测也称为帧间预测,是使用不同视频帧之间的相关性的预测。因此,编码块也称为当前块,是从称为参考图片的一个或多个先前已编码图片预测而来的。参考图片不一定是当前图片之前的图片,在当前图片中,当前块按视频序列的显示顺序排列。编码器可以以与显示顺序不同的编码顺序对图片进行编码。可以确定参考图片中的共置块作为当前块的预测块。共置块指的是参考图片中与当前图片中的当前块位置相同的块。这种预测对于静止图片区域是准确的,即没有从一个图片移动到另一个图片的图片区域。
为了获取将运动考虑进去的预测块,即运动补偿预测块,在确定当前块的预测时通常会采用运动估计。因此,当前块由参考图片中的块来预测,该块位于由共置块的位置的运动向量给出的距离。为了使编码器能够确定当前块的相同预测块,可以在比特流中指示运动向量。为了进一步降低由于针对每个块指示运动向量所造成的信令开销,可以估计运动向量。可以基于空域和/或时域中的相邻块的运动向量来执行运动向量估计。
可以使用一个参考图片或通过对从两个或更多参考图片获取的预测块进行加权,来计算当前块的预测块。由于相邻图片最有可能类似于当前图片,因此参考图片可以是相邻图像,即在显示顺序中紧邻在当前图片之前和/或之后的图片。然而,一般而言,参考图片也可以是任意其它在显示顺序中紧邻在当前图片之前或之后,且在比特流(解码顺序)中位于当前图片之前的图片。例如,在视频内容阻塞和/或非线性移动的情况下,这可以提供优势。因此,也可以在比特流中指示参考图片识别。
一种帧间预测的特殊模式就是所谓的双向预测,在双向预测中,使用两个参考图片来生成当前块的预测块。具体而言,在相应的两个参考图片中确定的两个预测块合并为当前块的预测信号。双向预测可以获取比单项预测更准确的当前块的预测块,即单向预测仅使用一个参考图片的预测。预测越准确,当前块的像素与预测块块的像素之间的差越小(也称为“残差”),该差可以更有效地进行编码,即,压缩为更短的比特流。一般而言,可以使用两个以上的参考图片来找出相应的两个以上的参考块来预测当前块,即,可以应用多参考帧间预测。因此,术语多参考预测包括双向预测以及使用两个以上的参考图片的预测。
为了提供更准确的运动估计,可以通过在像素之间插入样本来增强参考图片的分辨率。可以通过对最近的像素进行加权平均来执行分数像素插值。在半像素分辨率的情况下,通常使用例如双线性插值。其它分数像素被计算为最近的像素的平均值,其由相应的最近的像素到预测像素之间的距离的倒数进行加权。
运动向量估计是一项计算很复杂的工作,计算当前块与参考图片中的候选运动向量所指向的对应预测块之间的相似度。通常,搜索区域包括图像的MxM个样本,对这MxM个候选位置的每个样本位置进行测试。该测试包括计算N×N参考块C与位于搜索区域的被测候选位置处的块R之间的相似性度量。为简单起见,绝对差和(sum of absolute difference,SAD)是经常用于此目的的度量,通过下式给出:
在以上公式中,x和y定义搜索区域内的候选位置,索引i和j分别表示参考块C和候选块R内的样本。候选位置通常称为块位移或偏移,表示随搜索区域内的参考块的移动进行匹配并且计算参考块C与搜索区域的重叠部分之间的相似性的块。为了降低复杂性,通常通过将候选运动向量限制在某个搜索空间内来减少候选运动向量的数目。搜索空间可以由,例如,参考图片中与当前图片中当前块的位置对应的位置周围的像素数目和/或位置来定义。在计算所有的MxM候选位置x和y的SAD之后,最佳匹配块R为位于SAD最低的位置的块,对应于参考块C的最大相似度。此外,候选运动向量还可以由相邻块的运动向量组成的候选运动向量列表来定义。
运动向量通常至少部分地在编码器侧确定并且在已编码比特流内向解码器指示。然而,也可以在解码器处导出运动向量。在这种情况下,当前块在解码器处不可用,且不能用于计算与参考图片中候选运动向量所指向的块的相似度。因此,使用由解码块的像素构成的模板而非当前块。例如,可以使用与当前块相邻的已解码块的像素。通过这种运动估计来减少信令的优点是:在编码器和解码器处以相同的方式导出运动向量,因此不需要信令。此外,这种运动估计的准确性可能较低。
为了在准确性和信令开销之间权衡,运动向量估计可以分为两步:运动向量推导和运动向量修正。例如,运动向量推导可以包括从候选列表中选择运动向量。例如,通过搜索空间内的搜索可以进一步修正这种选择的运动向量。搜索空间中的搜索基于计算每个候选运动向量的成本函数,即候选运动向量所指向的块的每个候选位置。
文档JVET-D0029:基于双向模板匹配的解码器端运动向量修正(Decoder-SideMotion Vector Refinement Based on Bilateral Template Matching),X.Chen、J.An、J.Zheng(该文档可从以下网站获取:http://phenix.it-sudparis.eu/jvet/)说明了以下运动向量修正:获取发现整数像素分辨率下的第一运动向量,并通过在第一运动向量周围的搜索空间中以半像素分辨率的搜索来进一步修正。
为了执行运动向量修正,有必要在存储器中存储当前块执行修正所需的至少以下样本:即搜索空间对应的样本和在搜索空间中执行模板匹配时所能访问的样本。
外部存储器访问是本硬件架构和/或软件实施方式中一个很重要的设计参数。这是因为与内部存储器使用相比,外部存储器访问降低了处理速度。此外,例如,由于芯片大小的实现,芯片上的内部存储器是有限的。
发明内容
本发明基于以下观察:当与分数插值结合实现时,运动向量修正可能需要进一步增加片上存储器大小或甚至增加外部存储器访问。这两种选项可能都不合需要。
鉴于上述问题,本发明提供了运动向量预测,使得能够将以下内容考虑在内:外部存储器访问次数,以及针对编码块的运动向量进行运动向量修正所需要访问的样本数目。
这可以通过以下方式实现:将样本数目限制为整数样本模板匹配所需的样本数,并且仅使用那些不需要额外整数样本就能通过预定的插值滤波器获取的分数位置。
根据本发明的一方面,提供了一种用来确定预测块的运动向量的装置,所述装置包括处理电路,用于:获取所述预测块的初始运动向量和模板;以及通过在搜索空间中与所述模板进行模板匹配来确定所述初始运动向量的修正。所述搜索空间位于由所述初始运动向量给出的位置并且包括一个或多个分数样本位置,其中属于所述搜索空间的所述分数样本位置中的每一个通过使用具有预定义抽头大小的、仅评估窗口内的整数样本的滤波器进行插值滤波而获取,所述窗口由可由所述搜索空间中匹配的所述模板进行访问的整数样本构成。
这种运动向量确定的一个优点是可以限制用于执行预测块的运动向量修正所需要访问的样本数目,同时限制对外部存储器的访问次数或通常限制对存储整个参考图片的内存/存储器/缓存的访问次数。
在一示例中,窗口定义为相对于预测块初始运动向量的N个整数样本列和M个整数样本行,N和M为非零整数值。这种定义可以提供一种简单的方法用来指定出于运动向量确定和/或修正目的而要检索的样本。该定义在比特流或标准等内也可以很容易配置。
在一实施例中,所述处理电路用于通过在搜索空间中与所述模板进行模板匹配来确定所述初始运动向量的所述修正,其中所述搜索空间在最近一次迭代中在由所述搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展,所述窗口通过预定义的最大迭代次数定义。
所述搜索空间可以包括所述窗口的矩形子窗口,使得为了对所述子窗口中的每个分数样本进行插值滤波而访问的所有整数样本均位于具有所述预定义抽头大小的所述插值滤波器的所述窗口内。
所述搜索空间可以包括所述窗口的矩形搜索子窗口,其中所述初始运动向量的所述修正通过与所述矩形搜索子窗口中的所述模板进行模板匹配来确定,使得为了对所述搜索子窗口中的每个分数样本进行插值滤波而访问的所述整数样本均位于具有所述预定义抽头大小的所述插值滤波器的所述窗口内。
在一实施方式中,所述处理电路可以用于通过在搜索空间中与所述模板进行模板匹配来确定所述初始运动向量的所述修正,其中所述搜索空间在最近一次迭代中在由所述搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展,当所述最近一次迭代中所述搜索空间内的至少一个样本在所述搜索子窗口之外时,所述迭代结束。
尤其是,在一具体示例中,当所述分数位置位于整数样本所在的水平线或垂直线上时,所述插值滤波器为评估K个水平或垂直整数样本的一维滤波器。
此外,例如,所述搜索空间还包括位于所述子窗口之外的以下位置之一的分数位置:
-临近所述子窗口的顶部或底部且位于所述整数样本所在的水平线上,或
-临近所述子窗口的左侧或右侧且位于所述整数样本所在的垂直线上。
根据本发明的另一方面,提供了一种编码装置,用于将分割为预测块的视频图片编码成比特流,所述编码装置包括:上述用于确定预测块的运动向量的所述装置;以及编码电路,用于:对所述预测块与基于所述确定的运动向量的位置处的预测块所给出的所述预测块之间的差进行编码,以及生成包括所述已编码差和所述初始运动向量的比特流。
根据本发明的另一方面,提供了一种解码装置,用于从比特流中解码分割成预测块的视频图像,所述解码装置包括:解析单元,用于从所述比特流中解析初始运动向量以及预测块与由修正运动向量指定的位置处的预测块给出的预测块之间的已编码差;上述用于确定所述预测块的所述修正运动向量的所述装置;以及解码电路,用于将所述预测块重构为所述解析差和由所述修正运动向量指定的所述位置处的所述预测块给出的所述预测块的函数。所述函数可以是或包括总和。所述函数还可以包括剪切、舍入、缩放或其它操作。
根据本发明的另一方面,提供了一种方法,用于确定预测块的运动向量,所述方法包括以下步骤:获取所述预测块的初始运动向量和模板;通过在搜索空间中与所述模板进行模板匹配来确定所述初始运动向量的修正,其中所述搜索空间位于由所述初始运动向量给出的位置并且包括一个或多个分数样本位置,其中属于所述搜索空间的所述分数样本位置中的每一个通过使用具有预定义抽头大小的、仅评估窗口内的整数样本的滤波器进行插值滤波而获取,所述窗口由可由所述搜索空间中匹配的所述模板进行访问的整数样本构成。
例如,窗口定义为相对于预测块初始运动向量的N个整数样本列和M个整数样本行,N和M为非零整数值。
在一实施例中,所述初始运动向量的所述修正通过在搜索空间中与所述模板进行模板匹配来确定,其中所述搜索空间在最近一次迭代中在由所述搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展,所述窗口通过预定义的最大迭代次数定义。
在一示例性实施方式中,所述搜索空间包括所述窗口的矩形子窗口,使得为了对所述子窗口中的每个分数样本进行插值滤波而访问的所有整数样本均位于具有所述预定义抽头大小的所述插值滤波器的所述窗口内。
所述搜索空间可以包括所述窗口的矩形搜索子窗口,其中所述初始运动向量的所述修正通过与所述矩形搜索子窗口中的所述模板进行模板匹配来确定,使得为了对所述搜索子窗口中的每个分数样本进行插值滤波而访问的所述整数样本均位于具有所述预定义抽头大小的所述插值滤波器的所述窗口内。
在一实施方式中,所述初始运动向量的所述修正可以通过在搜索空间中与所述模板进行模板匹配来确定,其中所述搜索空间在最近一次迭代中在由所述搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展,当所述最近一次迭代中所述搜索空间内的至少一个样本在所述搜索子窗口之外时,所述迭代结束。
此外,例如,当所述分数位置位于整数样本所在的水平线或垂直线上时,所述插值滤波器为评估K个水平或垂直整数样本的一维滤波器。
有利地的是,所述搜索空间还包括位于所述子窗口之外的以下位置之一的分数位置:临近所述子窗口的顶部或底部且位于所述整数样本所在的水平线上,或临近所述子窗口的左侧或右侧且位于所述整数样本所在的垂直线上。
根据本发明的另一方面,提供了一种编码方法,用于将分割为预测块的视频图像编码成比特流,所述编码方法包括以下步骤:根据上述任一方法确定预测块的运动向量;以及对所述预测块与基于所述确定的运动向量的位置处的预测块所给出的所述预测块之间的差进行编码,并生成包括所述已编码差和所述初始运动向量的比特流。
根据本发明的另一方面,提供了一种解码方法,用于从比特流中解码分割成预测块的视频图像,所述解码方法包括:从所述比特流中解析初始运动向量以及预测块与由修正运动向量指定的位置处的预测块给出的预测块之间的已编码差;根据上述任一方法确定所述预测块的所述修正运动向量;以及将所述预测块重构为所述解析差与由所述修正运动向量指定的所述位置处的所述预测块给出的所述预测块之和。
根据本发明的一方面,提供了一种存储指令的非瞬时性计算机可读存储介质,当所述指令由处理器/处理电路执行时,使得所述处理器/处理电路执行根据上述任一方面或实施例所述的步骤或步骤的组合。
附图说明
下文将参考以下附图详细描述示例实施例,其中:
图1为可以采用运动向量推导和修正的编码器的示例性结构的方框图;
图2为可以采用运动向量推导和修正的解码器的示例性结构的方框图;
图3为适合双向预测的示例性模板匹配的示意图;
图4为适合单向和双向预测的示例性模板匹配的示意图;
图5为在不提供要在比特流中进行修正的初始运动向量情况下操作的运动向量推导阶段的方框图;
图6为用于实施本发明实施例的示例性硬件的方框图;
图7为针对编码块的、具有可以访问的样本的示例性窗口的示意图;
图8为迭代搜索空间的示意图;
图9为存储器访问窗口由于插值滤波而在水平方向上扩展的示意图;
图10为针对分数样本位置的子窗口的定义的示意图;
图11为存储器访问窗口的示例性定义的示意图;
图12为示例位置的示意图,包括可以构成用于运动向量修正的搜索空间位置的分数位置;
图13为示例分数位置的示意图,这些分数位置可以构成用于运动向量修正的搜索空间位置;
图14为用来确定搜索空间的哪个位置允许通过对运动向量修正进行模板匹配来测试的方法的流程图;
图15为示例位置的示意图,包括可以构成用于运动向量修正的搜索空间位置的分数位置;
图16为存储器访问窗口中的迭代修正流程的流程图;以及
图17为搜索子窗口中的迭代修正流程的流程图。
具体实施方式
本发明涉及为了在参考图片中获取分数位置而执行运动向量修正和插值所要访问的样本数目的调整。
如上所述,外部存储器访问是当今硬件和软件架构中最重要的设计考虑因素之一。尤其是当包括模板匹配时,例如在运动向量修正的情况下,运动向量估计可以与插值滤波配合使用以获取搜索空间的分数位置。使用插值滤波可能要增加需要从存储器访问的样本的数目。然而,这也可能导致增加昂贵的片上存储器或增加外部存储器访问次数,此外,还会降低实施速度。尤其是在解码器侧,这些问题可能会导致应用更昂贵或更慢,这并不可取。
为了避免这种情况,本发明提供了针对外部存储器访问的限制。根据本发明的一个实施例,在由非修正的运动向量(即初始运动向量)所指向的位置周围定义了运动向量修正所要访问的样本的窗口。该窗口定义了为了执行运动向量修正所需要从存储器中访问的样本的最大数目。一般而言,要访问的样本包括位于要执行模板匹配的搜索空间的位置上的样本以及要与搜索空间中的所有位置对应的模板进行匹配的样本。后者通常会超出搜索空间。为简单起见,存储器访问窗口可以定义为编码块(待确定运动向量的当前块)周围的扩展。例如,当前块左侧和右侧的R个样本以及顶部和底部边界的R个样本可以定义窗口。换句话说,在当前块大小为N x N个样本时,访问窗口的大小可以是(R+N+R)×(R+N+R),即(N+2R)×(N+2R)个样本。例如,R可以等于4。然而,当前块的垂直大小N可以与水平大小N不同,在顶部、底部、左侧以及右侧方向上的扩展样本数目也可以不同。
根据本发明,为了限制存储器访问窗口,仅当插值所需的样本位于针对整数样本定义的运动向量修正的存储器访问窗口内时,才通过运动向量修正访问分数像素坐标。
图1示出了包括用于接收视频流的帧或图片的输入图像样本的输入端以及用于生成已编码视频比特流的输出端的编码器100。本发明中的术语“帧”用作图片的同义词。然而,应注意,本发明还适用于应用交织的领域。一般而言,图片包括m乘以n个像素。这些像素对应图像样本并且可以包括一个或多个颜色分量。为简单起见,以下描述用像素表示亮度样本。然而,应注意,本发明的运动向量搜索可以应用于任何颜色分量,包括色度分量或RGB等搜索空间分量。此外,仅针对一个分量执行运动向量估计并将确定的运动向量应用于多个(或全部)分量可能是有益的。
待编码的输入块的大小不一定要相同。一个图片可能包括大小不同的块,不同图片的块栅格也可能不同。
在阐述性实现中,编码器100用于对视频流执行预测、变换、量化以及熵编码。分别由变换单元106、量化单元108和熵编码单元170来执行变换、量化和熵编码,从而生成编码视频比特流作为输出。
视频流可包括多个帧,其中每个帧分为具有特定大小的进行帧内或帧间编码的块。例如,视频流的第一帧中的块通过帧内预测单元154进行帧内编码。帧内编码帧仅使用同一个帧内的信息进行编码,以便可以独立地解码并且可以在比特流中提供随机访问的入口点。视频流的其它帧中的块可以通过帧间预测单元144进行帧间编码:使用先前已编码帧(参考帧)的信息来降低时间冗余,以便从参考帧中的块来预测帧间编码帧中的每个块。模式选择单元160用于选择是由帧内预测单元154还是帧间预测单元144来处理帧中的块。该模式选择单元160还控制帧内或帧间预测参数。为了能够刷新图像信息,可以在帧间编码帧内提供帧内编码块。此外,仅包含帧内编码块的帧内编码帧可以定期插入视频序列中以提供解码入口点,即解码器可以在没有先前已编码帧的信息的情况下开始解码的点。
帧内估计单元152和帧内预测单元154为执行帧内预测的单元。具体而言,帧内估计单元152也可以基于原始图像的信息推导预测模式,而帧内预测单元154则提供对应的预测块即使用所选择的预测模式预测的样本,以进行差编码。为了执行空间或时间预测,已编码块还可以由逆量化单元110和逆变换单元112进行进一步处理。对块进行重构后,使用环路滤波单元120进一步提升解码图像的质量。然后,滤波块组成参考帧,参考帧再存储在解码图片缓冲器130中。编码器侧的这种解码环路(解码器)具有以下优点:产生与在解码器侧重构的参考图片相同的参考帧。因此,编码器和解码器侧以相应的方式操作。这里术语“重构”指的是通过将预测块添加到解码残差块中来获取重构块。
帧间估计单元142接收要进行帧间编码的当前帧或图片中的块以及来自解码图片缓冲器130的一个或几个参考帧作为输入。由帧间估计单元142执行运动估计,由帧间预测单元144执行运动补偿。运动估计用于基于特定的成本函数,例如还使用要编码的原始图像,获取运动向量和参考帧。例如,运动估计单元142可以提供初始运动向量估计。然后可以直接以向量或索引的形式在比特流内指示初始运动向量,该初始运动向量是指在编码器和解码器处以相同方式基于预定规则构建的候选列表内的候选运动向量。然后,通过运动补偿(即通过运动向量)导出当前块的预测块,作为参考帧中与当前块共置的块相对于参考帧中的参考块的平移。帧间预测单元144输出当前块的预测块,其中所述预测块实现了成本函数的最小化。例如,成本函数可以是待编码的当前块与其预测块之间的差,即成本函数实现了残差块的最小化。残差块的最小化是基于,例如,计算当前块的所有像素(样本)与候选参考图片的候选块之间的绝对差和(sum of absolute difference,SAD)。然而,一般而言,可以采用任何其它相似性度量,例如均方差(mean square error,MSE)或结构相似度(structural similarity metric,SSIM)。
然而,成本函数也可以是编码这种帧间编码块所需的比特数目和/或由这种编码导致的失真。因此,可以使用率失真优化过程来决定运动向量选择和/或一般而言,决定编码参数,例如对块使用帧间预测还是帧内预测以及使用哪种设置。
帧内估计单元152和帧内预测单元154接收要进行帧内编码的当前帧或图片中的块以及来自当前帧的已重构分区中的一个或几个参考样本作为输入。然后,帧内预测根据当前帧的参考样本的函数描述当前帧中的当前块的像素。帧内预测单元154输出当前块的预测块,有利地的是,所述预测块使待编码当前块与其预测块之间的差最小化,即所述预测块实现了残差块的最小化。残差块的最小化可以基于例如率失真优化过程。具体而言,获取预测块作为参考样本的定向插值。方向可以通过率失真优化和/或通过计算上述与帧间预测有关的相似度来确定。
帧间估计单元142接收要进行帧间编码的当前帧或图片中的块或格式更普遍的图像样本以及两个或两个以上解码图片231作为输入。然后,帧间预测根据参考图片的参考图像样本的运动向量描述当前帧的当前图像样本。帧间预测单元142输出当前图像样本的一个或多个运动向量,有利地的是,运动向量所指向的所述参考图像样本使待编码当前图像样本与其参考图像样本之间的差最小化,即所述参考图像样本实现了残差图像样本的最小化。然后,由帧间预测单元144提供当前块的预测块进行差编码。
然后,由变换单元106对当前块与其预测块之间的差,即残差块105,进行变换。变换系数107由量化单元108进行量化,并由熵编码单元170进行熵编码。因此,生成的编码图片数据171,即编码视频比特流,包括帧内编码块和帧间编码块以及对应的信令(例如模式指示、运动向量指示和/或帧内预测方向)。变换单元106可以应用线性变换,例如傅里叶或离散余弦变换(Fourier or Discrete Cosine Transformation,DFT/FFT or DCT)。这种到空间频域的变换具有以下优点:所得系数107在较低频率中通常具有较高的值。因此,在有效系数扫描(例如Z形)和量化之后,得到的一组值在开始时通常具有一些较大的值,并且以一连串的零结束。这使得能够进一步进行有效编码。量化单元108通过降低系数值的分辨率来执行实际有损压缩。然后,熵编码单元170将二进制码字分配给系数值以产生比特流。熵编码单元170也对信令信息(图1中未示出)进行编码。
图2示出了视频解码器200。视频解码器200具体包括解码图片缓冲器230、帧间预测单元244和作为块预测单元的帧内预测单元254。解码图片缓冲器230用于存储至少一个(用于单向预测)或至少两个(用于双向预测)从编码视频比特流重构的参考帧,所述参考帧与编码视频比特流的当前帧(当前解码帧)不同。帧内预测单元254用于生成预测块,预测块是待解码块的估计值。帧内预测单元254用于基于从重构块215或缓冲器216获取的参考样本生成该预测块。
解码器200用于解码由视频编码器100生成的编码视频比特流,优选地,解码器200和编码器100针对待编码/解码的相应块生成相同的预测块。解码图片缓冲器230、重构块215、缓冲器216和帧内预测单元254的特征类似于图1中的解码图片缓冲器130、重构块115、缓冲器116和帧内预测单元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系列:视听和多媒体系统:高效率视频编码)提供了一个参考图片列表,各列表索引分配有相应的参考帧。然后通过在参考帧中携带对应分配的列表索引,在比特流中指示参考帧。此类列表可以在标准中定义或者在视频或一组多个帧的开头处指示。注意,在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中的块合并概念。在HEVC中,隐式导出MVP的方案被一种称为运动向量竞争的技术所取代,运动向量竞争显式地指示MVP列表中的哪个MVP用于运动向量推导。通过HEVC中的可变编码四叉树块结构,一个块可以有几个具有运动向量的相邻块作为潜在候选MVP。以左侧的相邻块为例,在最坏的情况下,当64x64亮度编码树块未进一步分割并且左侧块分割为最大深度时,一个64x64的亮度预测块的左侧可以有16个4x4的亮度预测块。
引入了高级运动向量预测(Advanced Motion Vector Prediction,AMVP)来修改运动向量竞争以满足此类灵活的块结构。在HEVC的开发过程中,显著简化了初始AMVP设计,以在编码效率与实现友好设计之间提供良好的折衷。AMVP的初始设计包括三个不同类别的预测块中的五个MVP:空间相邻块的三个运动向量、这三个空间预测块的中值以及时间相邻的共置块的缩放运动向量。此外,通过重新排序修改预测块列表以将最可能的运动预测块放在首位,并且通过移除冗余候选值以确保最小的信令开销。AMVP候选列表构建的最终设计包括以下两个候选MVP:a)从五个空间相邻块导出的两个空间候选MVP;b)当两个空间候选MVP都不可用或者相同时,从两个时间共置块导出的一个时间候选MVP;以及c)当空间、时间或两种候选项都不可用时,零运动向量。关于运动向量确定的详细信息可以参考V.Sze等人(编辑)所著的书《高效率视频编码:算法和架构(High Efficiency Video Coding,HEVC:Algorithms and Architectures)》,Springer,2014年,尤其是第5章,本章节的内容以引入的方式并入本文本中。
为了进一步改善运动向量估计而不进一步增加信令开销,对在编码器侧导出的且在比特流中提供的运动向量进行进一步修正可能是有益的。可以在解码器处执行运动向量修正而无需编码器的协助。编码器可以在其解码器环路中采用相同的修正以获取对应的运动向量。在包括参考图片的整数像素位置和分数像素位置的搜索空间中执行运动向量修正。例如,分数像素位置可以是半像素位置或四分之一像素或其它分数位置。可以通过双向线性插值等插值法从整数(全像素)位置中获取分数像素位置。
在当前块的双向预测中,将使用列表L0的相应第一运动向量和列表L1的第二运动向量获取的两个预测块合并为单个预测信号,可以比单向预测更好地适应原始信号,从而产生更少的残差信息和可能更有效的压缩。
由于当前块在解码器处解码之后不可用,出于运动向量修正的目的使用了模板,该模板是当前块的估计值并且是基于已处理的(即,在编码器侧进行编码并在解码器侧进行解码)图像部分构建的。
首先,接收第一运动向量MV0的估计值和第二运动向量MV1的估计值作为解码器200的输入。在编码器100侧,可以通过块匹配和/或通过在由(在相同图片或在相邻图片中的)当前块的相邻块的运动向量构成的候选列表(例如合并列表)中搜索,来获取运动向量估计值MV0和MV1。然后便于在比特流内向解码器侧指示MV0和MV1。然而,应注意,编码器处的第一确定阶段通常可以通过模板匹配来执行,这样做的优点是可以降低信令开销。
在解码器200侧,基于比特流中的信息便于获取运动向量MV0和MV1。直接指示或区分指示MV0和MV1,和/或指示运动向量列表(合并列表)中的索引。然而,本发明不限于在比特流中指示运动向量。相反,运动向量可以通过已经在第一阶段中的模板匹配来确定,对应于编码器的操作。可以基于与第二修正阶段的搜索空间不同的搜索空间执行第一阶段(运动向量推导)的模板匹配。特别是,可以在具有更高分辨率(即搜索位置之间的距离更短)的搜索空间执行该修正。
也向解码器提供MV0和MV1分别指向的两个参考图片0和1的指示。参考图片作为先前处理(即相应的编码和解码)的结果存储在编码器和解码器侧的解码图片缓冲器中。通过搜索来选择这些参考图片中的一个以进行运动向量修正。确定运动向量的装置的参考图片选择单元用于选择MV0所指向的第一参考图片和MV1所指向的第二参考图片。在选择之后,参考图片选择单元确定使用第一参考图片还是第二参考图片来执行运动向量修正。为了执行运动向量修正,第一参考图片中的搜索区域定义为运动向量MV0所指向的候选位置周围。对搜索区域内的候选搜索空间位置进行分析,以通过在搜搜空间内执行模板匹配和确定绝对差和(sum of absolute difference,SAD)等相似性度量来找出与模板块最相似的块。搜索空间的位置表示与模板左上角匹配的位置。如上所述,左上角仅为惯例,一般而言,搜索空间的任意点,例如中心点,都可以用来表示匹配位置。
根据上述文档JVET-D0029,解码器侧运动向量修正(decoder-side motionvector refinement,DMVR)具有指向两个相应参考图片0和1的初始运动向量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构建模板后,通过用模板搜索参考图片0和参考图片1找出修正运动向量MV0'和MV1'。
运动向量推导技术有时候也称为帧率上转换(frame rate up-conversion,FRUC)。通常可以在比特流中指示初始运动向量MV0和MV1,以确保编码器和解码器可以使用相同的初始点来进行运动向量修正。或者,可以通过提供包括一个或多个初始候选项的初始候选列表来获取初始运动向量。针对它们当中的每一个确定修正运动向量,最后选择实现了成本函数最小化的修正运动向量。
还应注意,本发明不限于以上参考图3所述的模板匹配。图4示出了同样适用于单向预测的替代性模板匹配。详细信息可参考文档JVET-A1001,尤其是2.4.6章节“模式匹配的运动向量推导(Pattern matched motion vector derivation)”,文档JVET-A1001的标题为“联合探测测试模型1的算法描述(Algorithm Description of Join ExplorationTest Model 1)”,作者为Jianle Chen等人,该文档可从以下网站获取:http://phenix.it-sudparis.eu/jvet/。该模板匹配方案中的模板被确定为与当前帧中的与当前块相邻的样本。如图1所示,可以采用与当前块的顶部和左侧边界相邻的已重建样本,称为“L型模板”。
图5示出了另一种也可以使用的运动向量推导。运动向量推导流程的输入是指示是否应用运动向量推导的标志。隐式地,该推导流程的另一个输入是(时间上或空间上)相邻的先前编码/重构块的运动向量。多个相邻块的运动向量用作运动向量推导的初始搜索步骤的候选项。该流程的输出为MV0'(也可以是MV1',如果使用了双向预测)以及各自对应的参考图片索引和可能的。然后,运动向量修正阶段包括上述模板匹配。在找出一个(单项预测)或多个(双向预测/多帧预测)修正运动向量之后,构建当前块的预测块(对于双向/多帧预测,通过加权样本预测来构建,否则通过参考修正MV所指向的样本来构建)。
本发明不限于上述2种模板匹配方法。例如,称为双向匹配(也在文档JVET-A1001中描述)的第三种模板匹配方法也可以用于运动向量修正,并且本发明同样适用。根据双向匹配,搜索沿着两个不同参考图片中的当前块的运动轨迹的两个块之间的最佳匹配。假设运动轨迹是连续的,指向两个参考块的运动向量MV0和MV1应与当前图片和两个参考图片之间的时间距离(即TD0和TD1)成比例。在双向匹配中,可以使用成本函数,例如SAD(块cand0',块cand1'),其中MV0指向块cand0',MV1指向块cand1'。
根据本发明一实施例,提供了一种装置,用于确定预测块的运动向量,该装置包括处理电路。处理电路用于获取预测块的初始运动向量和模板并通过在搜索空间中与所述模板进行模板匹配来确定初始运动向量的修正。所述搜索空间位于由所述初始运动向量给出的位置并且包括一个或多个分数样本位置,其中属于所述搜索空间的所述分数样本位置中的每一个通过使用具有预定义抽头大小的、仅评估窗口内的整数样本的滤波器进行插值滤波而获取,所述窗口由可由所述搜索空间中匹配的所述模板进行访问的整数样本构成。
处理电路600在图6中示出。处理电路可包括任意硬件,配置可以通过任何类型的编程或硬件设计或两者的组合来实现。例如,处理电路可以由单个处理器构成,例如具有实现上述步骤的对应软件的通用处理器。此外,处理电路还可以通过专用硬件实现,例如数字信号处理器(Digital Signal Processor,DSP)的专用集成电路(Application-SpecificIntegrated Circuit,ASIC)或现场可编程门阵列(Field-Programmable Gate Array,FPGA)等。
处理电路可以包括一个或多个互联的上述硬件组件用于执行上述运动向量推导。处理电路600包括实现两个功能的计算逻辑:获取初始运动向量(如果使用双向/多帧预测,则为多个初始运动向量)和模板610以及运动向量修正620。这两种功能可以在相同硬件上实现,也可以由单独的硬件单元实现,例如初始运动向量和模板确定单元610和运动向量修正单元620。处理电路600可以通信地连接到存储重构参考图片样本的外部存储器650。此外,处理电路600还可以包括将从外部存储器传送的、用于确定当前处理块的运动向量的样本缓冲在窗口中的外部存储器640。处理电路可以在单个芯片上实现为集成电路。
应注意,处理电路可以实现参考图1和图2描述的编码器和/或解码器的其它功能。内部存储器可以是片上存储器,例如缓存或行存储器。便于在编码器/解码器芯片上实施芯片存储器以加速计算。由于芯片的大小有限,因此片上存储器通常很小。此外,外部存储器大小可以很大,但是访问外部存储器会消耗更多能量并且访问速度要慢得多。通常在执行计算之前,从外部存储器检索所有必要的信息到片上存储器。最坏的情况下,在解码帧或编码单元时,外部存储器访问(或设计存储器总线时需要提供的宽带)表示外部存储器与芯片之间最大可能的存储器传送量。存储器(尤其是外部存储器)通常仅可以预定义块单元的形式访问。换句话说,通常不可以访问单个像素,而是必须访问最小单元(例如,8x8)。由于更大的片上存储器会增加成本,因此片上存储器大小也是一个重要的设计考虑。
换句话说,上述装置可以是集成电路,还包括:嵌入集成电路内的内部存储器和存储器访问单元(接口),用于从外部存储器向内部存储器存取位于所述窗口内的整数样本。
上面采用的术语“预测块”表示待预测的当前块。预测块是图像中的块,可以通过将图像细分为相同大小或不同大小(例如,通过对编码树单元进行层次划分,将CTU细分为更小的单元)的块来获取。预测块可以是正方形或者更普遍的矩形,这些是当前编码器/解码器中也采用的典型形状。然而,本发明不受块的任何大小/形状的限制。
包括处理电路的装置可以是编码器或解码器,或甚至是包括此类编码器或解码器的装置,例如记录设备和/或回放设备。
分数样本位置指的是通过对如图1所示的已编码参考图片进行重构而获取的真实图片样本位置之间的位置。关于H.265采用的示例插值滤波的详细信息可以参考V.Sze等人所著的书:《高效率视频编码(High Efficiency Video Coding,HEVC)》中的5.3节“分数样本插值(Fractional Sample Interpolation)”,Springer,2014年。
插值滤波通常应用不同的滤波器以生成不同的分数像素(样本)位置。例如,应用以下1D可分离滤波器以在H.265视频压缩标准中生成四分之一像素和半像素位置:
如上表所示,插值滤波需要分数像素位置周围的几个样本,样本数目对应于滤波器抽头数目(表中的系数数目)。要使用上面的示例滤波器来生成半像素位置,需要来自左侧/顶部和右侧/底部的4个整数样本。应注意,插值滤波器的长度对于四分之一像素样本位置(7抽头)来说和对于半像素样本位置(8抽头)来说是不同的。
在本发明的一些实施例中,具有预定义抽头大小的插值滤波器仅访问由可由所述搜索空间中匹配的模板访问的整数样本给出的窗口内的整数样本。该窗口包括的样本可能比在某个预测块的计算中实际使用的样本多得多。这是因为通常使用快搜索方法(相对于暴力搜索方法)实施修正搜索操作,根据该方法,不会对一些样本进行评估,具体取决于搜索操作的进展。因此,每个预测块的模板匹配迭代次数以及在修正搜索操作的计算中所使用的样本可能会有所不同。
考虑到需要对分数样本位置应用插值滤波,本发明设置了修正搜索操作期间可以使用的整数样本的上限(地域边界)。这对应于术语“模板匹配可以访问的整数样本”。实际访问哪些样本取决于下面将要例示的搜索空间构成方式。
图7示出了编码块(预测块)和窗口的对应样本。应注意,图7示出的样本为参考图片样本,这里的编码块实际上是与当前帧中的当前块的大小和位置对应的块,当前块的运动向量将从参考图片中导出。因此,图7中的编码块实际上是与要搜索其预测块的块共置的块。然而,为简单起见,该块在下面称为“编码块”。
在该示例中,未修正运动向量MV0指向整数样本位置(初始运动向量可以指向分数样本位置,选择整数样本位置仅为了便于描述)。运动向量修正搜索粒度为1个整数样本,表示由于起始点为整数样本,所以仅搜索整数样本点。在本示例中,在逐渐扩展的搜索空间中执行搜索。这表示搜索空间是通过在每次迭代中添加新的搜索位置扩展的,具体取决于先前测试位置在成本函数方面的最佳方向。
图8中简单示出了此类方案。在图8中,初始运动向量指向中心点810。搜索空间在初始运动向量位置周围逐渐构建。在第一步中,测试紧邻初始运动向量所指向的位置810的顶部、底部、左侧和右侧的四个位置,以及初始运动向量所指向的位置810。基于测试的五个点中产生最低成本函数的方向,将要测试的其它位置添加到搜索空间。在本示例中,可以在右侧点看到最低成本函数,因此在第二步中将搜索空间在水平向右的方向上扩展其它三个点。在第二步中,可以在右侧点(相对于第一步的最低成本点)看到最低成本函数,因而将搜索空间在水平向右的方向上进一步扩展三个点。在第三步中,可以在相对于第2步的最低成本点的右侧点再次观察到最低成本函数,因而将搜索空间在水平向右的方向上又扩展三个点。根据图8中的示例,按顺序在顶部、顶部和右侧方向上执行另外三个步骤。在该示例中,每次迭代使用菱形图案(由5个搜索点组成),并且扩展搜索空间以便在每个步骤完成漏测的搜索点。
在搜索空间确定的每次迭代中,搜索空间可以扩展一个或多个整数样本位置。现在回到图7中的示例,其中搜索迭代的最大次数为4。由于最多可以进行4次迭代,因此在搜索空间逐渐扩展到左侧的情况下,需要从存储器中检索左侧所示的所有样本以执行搜索操作。类似地,需要将4个样本扩展到顶部。因为修正的MV可以在任一方向上移动,并且硬件实施方式要求在应用修正搜索之前从外部存储器获取可能需要的所有样本,因此搜索空间在两个方向上扩展(左右和上下)。如果搜索空间在底部或向右的方向上扩展,则由于与对应于编码块(预测块)大小的模板进行模板匹配将需要访问这些样本中的部分样本,因此需要扩展另外4个样本。此外,由于硬件实施方式通常无法获取不规则的形状(矩形访问更可行),因此也必须从存储器中获取角点样本(例如右上角)。
应注意,上述迭代搜索空间扩展仅为示例性的,在每次迭代中扩展搜索空间的规则和点数可能不同,即以不同的方式指定。
图8还示出了由于上述外部存储器访问规则而可能发生的场景。从外部存储器获取的样本数目远高于计算步骤中实际使用的样本数目。假设这里的模板只有一个大样本(为简单起见),白色圈表示从外部存储器检索的样本,阴影圈表示实际使用的样本。然而,如果对外部存储器的访问次数要保持较低,则由于当开始行处理当前块时,实际需要的样本还未知,此类冗余是有必要的。
应注意,也可以以不同的方式定义搜索空间,例如,定义为位于初始运动向量所指向的位置的稳定的形状。该形状可以为任何形状,例如正方形、矩形、菱形等。
图9示出了搜索空间还可以包括分数样本的示例。在图7和图8中,对位于访问窗口中包含的实线大点所指示的位置的整数样本执行运动向量搜索。假设插值滤波器是对称的且为八抽头,如果现在对具有半像素分辨率(更小的实线点)的样本执行搜索,则为了生成右侧描绘的分数样本,还需要从存储器检索另外三列样本。此外,由于搜索操作是对称的(可以向左和向右迭代移动)以便分数像素可以位于窗口的左侧,因此必须在左侧(扩展3列像素)生成相同的分数样本。
因此,由于插值滤波,需要从存储器中检索的样本数目进一步增加,由虚线表示现在还包括表示由于分数插值而添加的位置的虚线圈。类似地,如果还允许搜索垂直方向上的每个位置的一半,则要从存储器访问的样本的窗口也需要在垂直方向上向顶部和底部扩展(在图9的示例中未示出)。
存储器访问窗口被定义为矩形,覆盖为了执行预测块(编码块)的运动向量搜索而需要从存储器检索的所有样本。存储器访问窗口不仅包括实际需要的样本,还包括在运动向量搜索操作期间可能被访问的剩余样本。在图9的示例中,运动向量搜索向右移动。但也可以向左移动,事先并不知道。因此,为了不多次访问外部存储器,存储器访问窗口(或访问窗口)包括相应处理可以访问的所有样本。
图10示出了用于运动向量修正的存储器访问窗口。中心点1010为非修正输入运动向量(从比特流中或通过先前执行的模板匹配或上述候选项的测试所获取的初始运动向量)所指向的位置。为了避免由于向搜索空间添加分数位置而进一步增加窗口大小,根据以下规则执行运动向量修正:
A)在非修正初始运动向量坐标(即初始运动向量所指向的位置)周围定义用于修正的存储器访问窗口。该窗口标识为了通过在搜索空间进行模板匹配来执行运动向量修正所需要的从存储器中访问的像素样本的最大数目。
1.在本示例中,为简单起见,当前块大小(编码块大小)为1x1样本,但也可以更大并且通常会更大。
2.存储器访问窗口定义为编码块周围的扩展,例如左侧/右侧的4个样本和顶部/底部的4个样本,如图所示。
B)仅当插值所需样本位于存储器访问窗口内时,才访问分数像素坐标以进行MV修正。
要求B确保不会进一步扩展对整数样本进行运动向量修正所需的样本所定义的访问窗口。根据该规则,实际可以访问的分数样本通过插值滤波器的大小和形状给出。因此,在图10中,假设插值滤波器为6抽头,则虚线表示分数样本可能位于的区域。然而,应注意,如下面参考图12所示,其它分数像素位置也是可以实现的。具体而言,仍然可以使用仅需要垂直过滤或仅需要水平过滤的分数位置,此类过滤不需要超出访问窗口的扩展。因此,将分数位置限制到图10所示的分数样本窗口对于某些应用来说可能限制太多。
换句话说,根据一实施例,存储器访问窗口包括可由对整数样本执行运动向量修正访问的所有样本,不包括不可由对整数样本执行运动向量修正访问的样本。因此,如果使用分数样本进行运动向量修正,则以不需要通过额外样本来获取这些分数样本。
在图10的示例中,对于预定义的插值滤波器形状和大小,这通过仅允许分数样本而不需要访问窗口之外的样本来实现。虚线分数样本窗口在访问窗口内扩展。如果T为插值滤波器抽头数目,则分数样本窗口边界由以下整数样本定义:距离访问窗口边界样本的距离1020为(T/2)–1向下取整。具体而言,在该示例中,若T=6,则T/2=3并且从访问窗口边界样本到分数窗口样本的距离为T/2–1=2个整数样本。
然而,应注意,该分数窗口的确定仅为示例。通常,该窗口可以具有不同的形状和大小。可以通过不同大小的滤波器进行垂直和水平插值滤波。此外,一些分数位置可能需要在垂直和水平方向上都有滤波器,这些滤波器通常是可分离的或不可分离的。
或者,对于图10中虚线窗口外的分数位置,可以改变插值滤波器(例如,至少减少一个方向上的抽头数目)。然而,出于实现目的和由于插值质量的原因,这种解决方案可能不太有吸引力。
可以以各种方式定义存储器访问窗口。图11示出了存储器访问窗口被定义为编码块左侧/右侧或上方/下方的扩展EXT(对应由初始运动向量给出的编码块位置)的示例。扩展量可以取决于编码块或预测块的大小和形状。在图11中,在每个方向(顶部、底部、左侧、右侧)上的扩展长度都是4个样本。然而,应注意,EXT也可以针对不同方向采用不同的值,具体取决于块大小(垂直和水平方向上的块大小可能不同)和/或搜索空间形状和大小。
例如,根据一示例,窗口定义为相对于预测块初始运动向量的N个整数样本列和M个整数样本行,N和M中的至少一个为非零整数值(都为整数但其中之一可以为零)。在图11中,指示了N和M但它们的大小相同。如上所述,N和M的大小可以不同。N和M为整数且它们中的至少一个不为零。采用参数N和M以及模板形状和大小,可以确定访问窗口的大小。具体而言,如果模板有T1行和T2列,则存储器访问窗口的大小可以计算为(N+T2+N)行和(M+T1+M)列。这是因为搜索可以向左或向右移动N个样本从而在水平方向上产生2N个样本,向上或向下移动M个样本从而在垂直方向上产生2M个样本。
此外,对于具体的搜索空间构建方案,如参考图7和图8所描述的方案,存储器访问窗口可以根据最大修正迭代次数(搜索空间构建迭代)和迭代步长(根据每次迭代中可实现的最大样本距离)来定义,稍后可以将其转换为向左、向右、向上和向下方向上的最大位移量。因此,存储器访问窗口定义为每个方向上的最大位移。例如,4次迭代所得的结果为EXT=4,其中每次迭代可以使搜索空间扩展最多一个整数样本位置。
换句话说,根据该示例,处理电路用于通过在搜索空间中与所述模板进行模板匹配来确定初始运动向量的修正,搜索空间在最近一次迭代中在由搜索空间的一个(或多个)最佳匹配位置给出的方向上迭代扩展,窗口由预定义的最大迭代次数定义。
应注意,通常,本发明不限于搜索空间的任何特定形状或形式或种类的确定。在另一示例中,搜索空间为窗口的矩形子窗口,使得为了对子窗口中的每个分数样本进行插值滤波而访问的所有整数样本都位于具有预定义抽头大小的插值滤波器的所述窗口内。上面已经参考图10讨论了类似的示例。在图10中,搜索空间由9x9个整数样本和分数样本给出,这些样本位于以初始运动向量位置为中心的、由5x5个整数样本组成的区域内。
存储器访问窗口的定义可能与为了在比特流中携带对应的信令参数(例如参数EXT或参数N和M)相关。然而,存储器访问窗口大小也可以在标准中定义或基于其它编码参数(例如模板大小、预测块大小、图像分辨率等)导出。
图12示出了具有不同分数像素位置的示例。对于该示例,假设模板大小为1x1个样本(为简单起见)并且每个半像素位置使用6抽头插值滤波器。在该示例中,搜索到的搜索坐标用数字1-6表示,表示它们被检测的顺序,即执行模板匹配搜索的顺序。位置1和2为半像素位置(表示它们位于两个整数样本位置中间,pel是像素pixel的缩写,本申请中,术语“像素”和术语“样本”可互换使用)。由于插值滤波所需的扩展位于存储器访问窗口内(左上角对角线上3个整数样本,位置1右下角3个整数样本;位置2右侧3个整数样本,左侧3个整数样本),所以对位置1和2进行检测。注意,分数样本点1需要在水平和垂直方向上进行扩展,这两者都位于窗口内。位置2仅需要在右侧和左侧进行扩展。
位置3、4和5为整数样本(整数像素)位置。由于插值滤波不需要扩展,因此可以搜索这些位置。由于仅需要垂直方向上的扩展(分别向上和向下扩展三个整数位置)且该扩展仍在窗口内,因此也可以访问分数(半像素)样本6。不需要在水平方向上进行扩展。但是,在上述实施方式中,仅当所需插值扩展位于存储器访问窗口内时,才访问分数样本点。
换句话说,根据示例,当分数位置位于整数样本所在的水平线或垂直线上时,插值滤波器为评估K个水平或垂直整数样本的一维滤波器。
此类位于两个水平或两个垂直相邻的整数位置之间的线上一维分数位置(例如,图12中的位置2和6)仅需要在水平方向或在垂直方向上进行插值扩展,即仅由相应的水平或垂直插值滤波器进行滤波。为了能够利用尽可能多的分数位置,除图10中的示例所允许的分数位置外,添加如图12所示的位置6等其它一维位置可能是有益的。
换句话说,搜索空间还包括位于分数子窗口(参加图10的虚线窗口)之外的以下位置之一的分数位置:
-临近子窗口的顶部或底部且位于整数样本所在的水平线上,或
-临近子窗口的左侧或右侧且位于整数样本所在的垂直线上。
需注意,一些分数样本可能需要在给定方向(水平或垂直)上有更多整数样本。这可能是预定义的滤波器大小不同但为了在相应方向上生成该位置的情况。
图13示出了不可以访问的分数半像素位置1和2的示例。这些位置位于图10所示的子窗口之外。在该示例中,假设针对半像素位置使用6抽头插值滤波器。由于水平或垂直插值滤波需要位于窗口之外的样本,因此不允许搜索半像素搜索点1和2。水平滤波器对位置1进行滤波和垂直滤波器对位置2进行滤波所需的整数样本位置在图13中用虚线表示。可以看出,虚线圈对应存储器访问窗口外的整数位置。
在以上示例中,定义了存储器访问窗口,以便在运动向量修正流程中不访问窗口外的样本(即使对于插值滤波也不访问)。换句话说,存储器访问窗口是覆盖运动向量修正和插值可能需要访问的样本的最小窗口。此外,存储器访问窗口是根据基于整数样本位置的运动向量修正所需的样本而设计的。然后,仅允许不需要通过其它整数位置进一步扩展此类访问窗口的分数位置。
应注意,以上示例针对半像素插值提供。然而,本发明不限于此。通常,可以使用任何分数位置,例如1/4、1/8等,即,使用对应的插值滤波器进行插值。
可以在如图1和图2所示的编码器和/或解码器中采用参考图6描述的处理电路。
具体而言,可以提供一种编码装置,用于将分割为预测块的视频图像编码成比特流,所述编码装置包括:上述用于确定预测块的运动向量的所述装置,包括所述处理电路;以及编码电路,用于:对所述预测块与所述确定的运动向量所指定的位置处的预测块所给出的所述预测块之间的差进行编码,并生成包括所述已编码差和所述初始运动向量的比特流。
也可以在处理电路中提供或实现上面参考图1描述的编码器的其它单元和功能。
相应地,可以提供一种解码装置,用于从比特流中解码分割成预测块的视频图像,该解码装置包括:解析单元,用于从比特流中解析初始运动向量以及预测块与修正运动向量所指定的位置处的预测块给出的预测块之间的已编码差;上述用于确定预测块的修正运动向量的装置,包括所述处理电路;以及解码电路,用于将预测块重构为解析差与基于修正运动向量的位置处的预测块给出的预测块之和。例如,可以由修正运动向量的位置直接给出预测块。然而,可以存在获取当前预测块的运动向量的进一步的处理步骤,可以进一步改变运动向量(例如滤波、剪切、进一步修正等)。
也可以在处理电路中提供或实现上面参考图2所述的解码器的其它单元和功能。
此外,从具有用于执行运动向量修正的处理电路的装置的角度描述了本发明的实施例。然而,本发明并不限于此,还提供了对应的方法,该方法包括与执行上述处理电路所执行的步骤对应的处理步骤。
具体而言,提供了一种方法,用于确定预测块的运动向量,该方法包括以下步骤:获取预测块的初始运动向量和模板;通过在搜索空间中与模板进行模板匹配来确定所述初始运动向量的修正,其中搜索空间位于由初始运动向量给出的位置并且包括一个或多个分数样本位置,其中属于搜索空间的分数样本位置中的每一个通过使用具有预定义抽头大小的、仅评估窗口内的整数样本的滤波器进行插值滤波而获取,该窗口由可由所述搜索空间中匹配的所述模板进行访问的整数样本构成。
抽头对应滤波器系数。抽头大小对应滤波器顺序。此处假设滤波器为线性滤波器。在一些示例中,滤波器可以是对称的,即具有对称的系数。然而,本发明不限于对称滤波器或线性滤波器或任何种类的滤波器。通常,可以基于相邻样本以任何方式获取分数位置。
此外,还提供了一种编码方法,用于将分割为预测块的视频图像编码成比特流,该编码方法包括以下步骤:根据任意上述方法确定预测块的运动向量;以及对预测块与基于确定的运动向量的位置处的预测块所给出的预测块之间的差进行编码,并生成包括已编码差和初始运动向量的比特流。
该编码方法还可以包括参考图1中的块的功能所描述的步骤。
此外,还提供了一种解码方法,用于从比特流中解码分割成预测块的视频图像,该解码方法包括:从比特流中解析初始运动向量以及预测块与由修正运动向量指定的位置处的预测块给出的预测块之间的已编码差;根据任意上述方法确定预测块的修正运动向量;以及将预测块重构为解析差与由修正运动向量指定的位置处的预测块给出的预测块之和。
该解码方法还可以包括参考图2中的块的功能所描述的步骤。
然而,应注意,图1和图2不构成对本发明的限制。它们仅提供本发明的实施方式在现有编码器和/或解码器内的非限制性示例。
图14示出了根据实施例的方法的示例性实施方式。函数InterpolationFilterLength(C)返回为了应用插值滤波在水平和垂直方向上所需的额外样本数。所需样本数根据以下条件而变化:
-搜索坐标是整数像素、半像素还是四分之一像素位置。
-是否需要应用水平插值滤波器、垂直插值滤波器或这两者来生成搜索坐标样本。
该方法从步骤1430开始。具体而言,初始运动向量位置为待测的第一搜索空间位置C(x,y)。函数InterpolationFilterLength(C)针对该位置返回为了应用插值滤波在水平和垂直方向上所需的样本数目。如果C(x,y)与InterpolationFilterLength(C(x,y))之和超出了由MAX(max_x,max_y)定义的访问窗口大小,则不会将该位置用作搜索空间的一部分。而是在步骤1440中选择下一个待测搜索坐标C(x,y)(例如,x或y或两者都递增,具体取决于执行搜索的顺序)。如果步骤1430中的被测位置不需要超出访问窗口,则在步骤1410中,针对该位置C(x,y)执行模板匹配作为运动向量修正的一部分。然后在步骤1420中测试是否仍有搜索空间位置用于模板匹配。如果没有,则修正结束。如果有,则在步骤1440中选择下一个坐标并且针对该新的位置评估步骤1430的条件。重复这些步骤。
如上所述,可以以其它方式定义允许的分数位置(例如图10的窗口,可以通过图12所示的其它分数样本进行扩展)。基于此,可以在步骤1430中制定更简单的条件,仅评估位置C(x,y)是否属于允许的窗口。例如,搜索限于整数搜索点和包含在如图10所示的存储器访问窗口中的分数搜索窗口内的分数点。
搜索空间可以包括该窗口的矩形搜索子窗口,初始运动向量的修正可以通过与矩形搜索子窗口中的模板进行模板匹配来确定,使得为了对搜索子窗口中的每个分数样本进行插值滤波而访问的整数样本均位于具有预定义抽头大小的插值滤波器的窗口中。
更确切地说,可以基于搜索点与初始非修正运动向量相关联的点的距离来确定允许的整数和分数位置。具体地,允许满足以下条件的搜索位置:在x方向上距初始非修正运动向量的距离为P,并且在y方向上距初始非修正运动向量的距离为R。具体地,存储器访问窗口是相对于由初始非修正运动向量所指向的参考图片中的点定义的。这在图15中进行了例示,其中存储器访问窗口的中心点是沿水平轴的两个整数点之间的半像素点。在该图中,存储器访问窗口被定义为x方向(N)和y方向(M)上的扩展,其中N和M是整数,其中至少一个为非零整数。根据具体实施方式,在存储器访问窗口内定义子窗口,即搜索点(或搜索窗口)的子窗口,其被定义为x方向(P)和y方向(R)的扩展,包括允许通过模板匹配搜索的所有整数像素和小数像素搜索点。在图15中,出于说明目的,数字P和R等于1。因此,如果搜索点到中心点的距离在x和y方向上分别大于P或R,则搜索点不包含在存储器访问窗口中。在该具体示例中,由于分数搜索点需要访问额外的样本,因此由N和M定义的存储器访问窗口包含或包括辅助窗口。P和R可以是实数,用于以2个整数样本点之间的距离为单位描述水平和垂直方向上的距离。例如,如果P和R定义为P=1.5,R=1.5,则运动向量修正流程可以搜索在x轴方向上距离初始中心点1.5的搜索点(整数或分数)。此外,在图15中,左右方向和上下方向上的扩展分别定义为P和R且相等,通常P和R可以不相等。通常,向左、向上、向右和向下的所有4个扩展都可以单独定义。
图16描述了迭代修正流程在存储器访问窗口中的可能的实施方式。根据图16,以迭代的方式执行修正搜索,表示每次迭代处仅搜索K个搜索点。首先,在初始起始点周围或在选择为前一次迭代的结果的最佳搜索点周围确定K个搜索点(1610)。其次,如果所有K个搜索点都在存储器访问窗口内(1620),则对这K个搜索点执行修正搜索操作。然而,如果这K个点中的任意一个在存储器访问窗口之外,则终止搜索迭代。再次,检测最大搜索迭代次数的条件(1630),如果当前迭代超过允许的最大搜索迭代次数,则终止迭代。最后,对K个搜索点(1640)执行修正搜索,根据匹配成本函数在这K个搜索点中选择最佳点(1650)。1640和1650的执行使迭代次数增加1。在1650之后,使用最佳点(1650的输出)作为1610的输入以重复该流程。根据图16,确定在一次迭代期间搜索的搜索点数目K定义了每次迭代的最大搜索点数目。数目K和每次迭代搜索的点的图案可能不同,具体取决于所使用的搜索策略。例如,根据示例搜索策略,可以在第一次迭代中搜索K=5个搜索点(中心、左侧、右侧、下方和上方),而可以在第二次迭代中搜索K=3个点(中心、右下、左下)数目K是小于存储器访问窗口内的搜索点总数的数字。
根据图16描述的具体实施方式,如果迭代中K个搜索点中的一个搜索点在存储器访问窗口之外,则终止搜索迭代。K个搜索点中可能存在其它点位于存储器访问窗口内,但由于迭代终止,因此也不会搜索存储器访问窗口内的那些点。该具体实施方式的目的是减少搜索迭代次数,同时保证不搜索位于存储器访问窗口之外的搜索点。
根据1620,检测搜索点是否在存储器访问窗口内可以通过检测搜索点到初始起始点的距离来执行。因此,如果该距离的x分量大于N或者该距离的y分量大于M,则确定搜索点在存储器访问窗口之外。通常,N和M是整数,其中至少一个大于0。
初始运动向量的修正可以通过在搜索空间中与模板进行模板匹配来确定,其中搜索空间在最近一次迭代中在由该搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展,当最近一次迭代中搜索空间内的至少一个样本在搜索子窗口之外时,迭代结束。
图17为描述适用于如图15中描述的搜索子窗口的可能的迭代方案的流程图。除步骤1720之外,图17的流程图与图16中描述的流程图相同。根据图17的步骤1720,通过检测所有K个点是否都在搜索点的子窗口内来确定对K个搜索点执行修正搜索的决定。换句话说,如图15所述,如果K个搜索点中的任何一个到初始非修正运动向量所指向的中心点的距离大于P或R,则1720中描述的条件评估为不满足并且终止迭代。
具有如上所述的存储器窗口限制的运动向量确定可以作为视频信号(运动图片)编码和/或解码的一部分来实现。然而,运动向量确定还可以用于运动检测、运动分析等图像处理中的其它目的,而不限于用于编码/解码。
运动向量确定可以实施为一种装置。这种装置可以是软件和硬件的组合。例如,运动向量确定可以由通用处理器或数字信号处理器(digital signal processor,DSP)或现场可编程门阵列(field programmable gate array,FPGA)等芯片执行。然而,本发明不限于可编程硬件上的实施方式。其可以在专用集成电路(application-specific integratedcircuit,ASIC)上实施,或者由上述硬件组件的组合实施。
运动向量确定还可以由存储在计算机可读介质上的程序指令来实施。该程序在执行时使计算机执行上述方法的步骤。计算机可读介质可以是存储程序的任何介质,例如DVD、CD、USB(闪存)驱动器、硬盘、通过网络提供的服务器存储等。
编码器和/或解码器可以在各种设备中实现,包括电视机、机顶盒、PC、平板电脑、智能手机等,即任何记录、编码、转码、解码或回放设备。其可以是实施方法步骤并存储或运行在包含在上述那些电子设备中的处理器上的软件或app。
总之,本发明涉及运动向量修正。在第一步中,获取预测块的初始运动向量和模板。然后,初始运动向量的修正通过在搜索空间中与模板进行模板匹配来确定。搜索空间位于由初始运动向量给出的位置并且包括一个或多个分数样本位置,其中属于搜索空间的分数样本位置中的每一个通过使用具有预定义抽头大小的、仅评估窗口内的整数样本的滤波器进行插值滤波而获取,该窗口由可由搜索空间中匹配的模板进行访问的整数样本构成。

Claims (18)

1.一种用于确定预测块的运动向量的装置,其特征在于,所述装置包括处理电路,用于:
获取所述预测块的初始运动向量和模板;
通过在搜索空间中与所述模板进行模板匹配来确定所述初始运动向量的修正,其中
所述搜索空间位于由所述初始运动向量给出的位置并且包括一个或多个分数样本位置,其中属于所述搜索空间的所述分数样本位置中的每一个通过使用具有预定义抽头大小的并且仅评估窗口内的整数样本的滤波器进行插值滤波而获取,所述窗口由所述搜索空间中匹配的所述模板进行访问的整数样本构成,所述搜索空间为所述窗口的矩形子窗口。
2.根据权利要求1所述的装置,其特征在于,所述窗口定义为相对于所述预测块初始运动向量的N个整数样本列和M个整数样本行,N和M中的至少一个为非零整数值。
3.根据权利要求1或2所述的装置,其特征在于:
所述处理电路用于通过在所述搜索空间中与所述模板进行模板匹配来确定所述初始运动向量的所述修正,其中所述搜索空间在最近一次迭代中在由所述搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展,
所述窗口通过预定义的最大迭代次数定义。
4.根据权利要求1所述的装置,其特征在于:
所述处理电路用于通过在搜索空间中与所述模板进行模板匹配来确定所述初始运动向量的所述修正,其中所述搜索空间在最近一次迭代中在由所述搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展,当所述最近一次迭代中所述搜索空间内的至少一个样本在所述搜索子窗口之外时,所述迭代结束。
5.根据权利要求1所述的装置,其特征在于,当所述分数样本位置位于整数样本所在的水平线或垂直线上时,所述插值滤波器为评估K个水平或垂直整数样本的一维滤波器。
6.根据权利要求1所述的装置,其特征在于,所述搜索空间还包括位于所述子窗口之外的以下位置之一的分数位置:
临近所述子窗口的顶部或底部且位于所述整数样本所在的水平线上,或
临近所述子窗口的左侧或右侧且位于所述整数样本所在的垂直线上。
7.一种编码装置,用于将分割成预测块的视频图像编码成比特流,其特征在于,所述编码装置包括:
根据权利要求1至6中任一项所述的用于确定预测块的运动向量的装置;
编码电路,用于:对所述预测块与在基于所述确定的运动向量的位置处的预测块给出的预测块之间的差进行编码,以及生成包括所述已编码差和所述初始运动向量的比特流。
8.一种解码装置,用于从比特流中解码分割成预测块的视频图像,其特征在于,所述解码装置包括:
解析单元,用于从所述比特流中解析初始运动向量以及预测块与由修正运动向量指定的位置处的预测块给出的预测块之间的已编码差;
根据权利要求1至6中任一项所述的用于确定预测块的运动向量的装置;
解码电路,用于将所述预测块重构为所述已编码差与由所述修正运动向量指定的所述位置处的所述预测块给出的所述预测块之和。
9.一种用于确定预测块的运动向量的方法,其特征在于,包括以下步骤:
获取所述预测块的初始运动向量和模板;
通过在搜索空间中与所述模板进行模板匹配来确定所述初始运动向量的修正,其中
所述搜索空间位于由所述初始运动向量给出的位置并且包括一个或多个分数样本位置,其中属于所述搜索空间的所述分数样本位置中的每一个通过使用具有预定义抽头大小的并且仅评估窗口内的整数样本的滤波器进行插值滤波而获取,所述窗口由所述搜索空间中匹配的所述模板进行访问的整数样本构成,所述搜索空间为所述窗口的矩形子窗口。
10.根据权利要求9所述的方法,其特征在于,所述窗口定义为相对于所述预测块初始运动向量的N个整数样本列和M个整数样本行,N和M为非零整数值。
11.根据权利要求9或10所述的方法,其特征在于:
所述初始运动向量的所述修正通过在搜索空间中与所述模板进行模板匹配来确定,所述搜索空间在最近一次迭代中在由所述搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展;
所述窗口通过预定义的最大迭代次数定义。
12.根据权利要求9所述的方法,其特征在于:
所述初始运动向量的所述修正通过在搜索空间中与所述模板进行模板匹配来确定,其中所述搜索空间在最近一次迭代中在由所述搜索空间中的一个或多个最佳匹配位置给出的方向上迭代扩展,当所述最近一次迭代中所述搜索空间内的至少一个样本在所述搜索子窗口之外时,所述迭代结束。
13.根据权利要求9所述的方法,其特征在于,当所述分数样本位置位于整数样本所在的水平线或垂直线上时,所述插值滤波器为评估K个水平或垂直整数样本的一维滤波器。
14.根据权利要求13所述的方法,其特征在于,所述搜索空间还包括位于所述子窗口之外的以下位置之一的分数位置:
临近所述子窗口的顶部或底部且位于所述整数样本所在的水平线上,或
临近所述子窗口的左侧或右侧且位于所述整数样本所在的垂直线上。
15.一种编码方法,用于将分割成预测块的视频图像编码成比特流,其特征在于,所述编码方法包括:
根据权利要求9至14中任一项所述的方法确定预测块的运动向量;
对所述预测块与在基于所述确定的运动向量的位置处的预测块给出的所述预测块之间的差进行编码,以及生成包括所述已编码差和所述初始运动向量的比特流。
16.一种解码方法,其特征在于,所述解码方法包括:
根据权利要求9至14中任一项所述的方法确定预测块的运动向量。
17.一种存储指令的计算机可读介质,当所述指令在处理器上执行时,使得所述处理器执行根据权利要求9-16中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有由一个或多个处理器执行的如权利要求15所述方法得到的比特流。
CN202210629775.XA 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口 Active CN115243051B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210629775.XA CN115243051B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EPPCT/EP2017/075710 2017-10-09
PCT/EP2017/075710 WO2019072368A1 (en) 2017-10-09 2017-10-09 LIMITED MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT
PCT/EP2018/064247 WO2019072425A1 (en) 2017-10-09 2018-05-30 MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT
CN201880033256.9A CN110651477B (zh) 2017-10-09 2018-05-30 一种用于确定预测块的运动向量的装置和方法
CN202210629775.XA CN115243051B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201880033256.9A Division CN110651477B (zh) 2017-10-09 2018-05-30 一种用于确定预测块的运动向量的装置和方法

Publications (2)

Publication Number Publication Date
CN115243051A CN115243051A (zh) 2022-10-25
CN115243051B true CN115243051B (zh) 2023-12-15

Family

ID=60080793

Family Applications (6)

Application Number Title Priority Date Filing Date
CN202210629775.XA Active CN115243051B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口
CN202210625639.3A Active CN115174933B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口
CN202210625615.8A Active CN115174932B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口
CN201880033256.9A Active CN110651477B (zh) 2017-10-09 2018-05-30 一种用于确定预测块的运动向量的装置和方法
CN202210626320.2A Pending CN115174934A (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口
CN202210626985.3A Active CN115243050B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口

Family Applications After (5)

Application Number Title Priority Date Filing Date
CN202210625639.3A Active CN115174933B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口
CN202210625615.8A Active CN115174932B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口
CN201880033256.9A Active CN110651477B (zh) 2017-10-09 2018-05-30 一种用于确定预测块的运动向量的装置和方法
CN202210626320.2A Pending CN115174934A (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口
CN202210626985.3A Active CN115243050B (zh) 2017-10-09 2018-05-30 用于运动向量修正的受限存储器访问窗口

Country Status (11)

Country Link
US (4) US11405632B2 (zh)
EP (1) EP3688991A1 (zh)
JP (3) JP6980911B2 (zh)
KR (4) KR102416348B1 (zh)
CN (6) CN115243051B (zh)
BR (1) BR112020006969A2 (zh)
CA (1) CA3078816C (zh)
MX (1) MX2020003725A (zh)
RU (1) RU2761511C2 (zh)
SG (1) SG11202003255VA (zh)
WO (2) WO2019072368A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
US10785494B2 (en) 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
US10863190B2 (en) * 2018-06-14 2020-12-08 Tencent America LLC Techniques for memory bandwidth optimization in bi-predicted motion vector refinement
CN110113608B (zh) * 2019-04-30 2022-12-16 上海电力学院 一种基于率失真优化的gpu中视频编码快速搜索方法
WO2020243100A1 (en) * 2019-05-26 2020-12-03 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatus for improving motion estimation in video coding
CN114287135A (zh) * 2019-08-23 2022-04-05 北京字节跳动网络技术有限公司 参考图片重采样中的剪切
WO2021078177A1 (en) 2019-10-23 2021-04-29 Beijing Bytedance Network Technology Co., Ltd. Signaling for reference picture resampling
JP7395727B2 (ja) 2019-10-23 2023-12-11 北京字節跳動網絡技術有限公司 ビデオ・データを処理する方法、装置及び記憶方法
WO2021163862A1 (zh) * 2020-02-18 2021-08-26 深圳市大疆创新科技有限公司 视频编码的方法与装置
CN117321990A (zh) * 2021-05-17 2023-12-29 北京达佳互联信息技术有限公司 具有运动矢量细化的几何分区模式
US20230007238A1 (en) * 2021-06-30 2023-01-05 Qualcomm Incorporated Using unrefined motion vectors for performing decoder-side motion vector derivation
US12114009B2 (en) * 2021-09-22 2024-10-08 Tencent America LLC Method and apparatus for adaptive reordering for reference frames

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201125369A (en) * 2010-01-15 2011-07-16 Mediatek Inc Methods for decoder-side motion vector derivation
CN105939475A (zh) * 2016-06-06 2016-09-14 中国矿业大学 一种高质量边信息生成方法
WO2017036414A1 (en) * 2015-09-02 2017-03-09 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4322343C2 (de) * 1992-07-06 1996-10-02 Mitsubishi Electric Corp Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors
US9357228B2 (en) * 2010-05-27 2016-05-31 The Hong Kong University Of Science And Technology Motion estimation of images
WO2012083487A1 (en) * 2010-12-21 2012-06-28 Intel Corporation System and method for enhanced dmvd processing
KR101596409B1 (ko) * 2011-03-15 2016-02-23 인텔 코포레이션 저 메모리 액세스 모션 벡터 유도
CN107105263B (zh) * 2011-06-24 2019-04-26 株式会社Ntt都科摩 用于在帧间预测下执行的运动补偿的视频解码方法和装置
US10200711B2 (en) * 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding
CN117528108A (zh) * 2016-11-28 2024-02-06 英迪股份有限公司 图像编码方法、图像解码方法及用于传送比特流的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201125369A (en) * 2010-01-15 2011-07-16 Mediatek Inc Methods for decoder-side motion vector derivation
WO2017036414A1 (en) * 2015-09-02 2017-03-09 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
CN105939475A (zh) * 2016-06-06 2016-09-14 中国矿业大学 一种高质量边信息生成方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHIU YI-JEN.Decoder-side Motion Estimation and Wiener filter for HEVC.2013 VISUAL COMMUNICATIONS AND IMAGE PROCESSING (VCIP),IEEE.2013,2-3节,图1-4. *
Jianle Chen.Algorithm Description of Joint Exploration Test Model 7 (JEM 7).JVET-G1001.2017,第2.3节. *
STEFFEN KAMP.Decoder-Side Motion Vector Derivation for Block-Based Video Coding.IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY.2012,第2节. *
袁基炜 ; 国辉 ; .H.264编码器参考帧内存优化方法.电视技术.2007,(08),全文. *

Also Published As

Publication number Publication date
WO2019072368A1 (en) 2019-04-18
US20200236387A1 (en) 2020-07-23
EP3688991A1 (en) 2020-08-05
JP7541155B2 (ja) 2024-08-27
CA3078816A1 (en) 2019-04-18
KR102527169B1 (ko) 2023-05-02
KR102416348B1 (ko) 2022-07-05
US11582477B2 (en) 2023-02-14
RU2020115378A3 (zh) 2021-11-15
KR20230065353A (ko) 2023-05-11
MX2020003725A (es) 2020-10-07
CN115174933A (zh) 2022-10-11
WO2019072425A1 (en) 2019-04-18
CN115174934A (zh) 2022-10-11
US11405632B2 (en) 2022-08-02
CN115174932B (zh) 2024-01-02
CN110651477A (zh) 2020-01-03
JP2022027770A (ja) 2022-02-14
CN115243050A (zh) 2022-10-25
US20220400282A1 (en) 2022-12-15
CN115243051A (zh) 2022-10-25
CN110651477B (zh) 2022-06-10
US20230239489A1 (en) 2023-07-27
CN115174933B (zh) 2023-12-15
US20240098294A1 (en) 2024-03-21
US12069291B2 (en) 2024-08-20
JP2023104952A (ja) 2023-07-28
RU2020115378A (ru) 2021-11-15
KR20240033137A (ko) 2024-03-12
SG11202003255VA (en) 2020-05-28
BR112020006969A2 (pt) 2020-10-06
JP6980911B2 (ja) 2021-12-15
JP7279140B2 (ja) 2023-05-22
CN115243050B (zh) 2023-12-15
JP2020537424A (ja) 2020-12-17
KR20200058560A (ko) 2020-05-27
KR20220098284A (ko) 2022-07-11
US11805270B2 (en) 2023-10-31
CN115174932A (zh) 2022-10-11
CA3078816C (en) 2023-09-19
KR102642784B1 (ko) 2024-03-05
RU2761511C2 (ru) 2021-12-09

Similar Documents

Publication Publication Date Title
CN115174933B (zh) 用于运动向量修正的受限存储器访问窗口
US11363292B2 (en) Memory access window and padding for motion vector refinement and motion compensation
CN111567047B (zh) 进行子预测块运动矢量推导的存储器访问窗口
US11153595B2 (en) Memory access window and padding for motion vector refinement
CN111201792B (zh) 指向分数像素点位置的运动矢量的修正运动矢量
JP7571105B2 (ja) 動きベクトル精密化および動き補償のためのメモリアクセスウィンドウおよびパディング

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