CN112292862A - 用于运动矢量修正和运动补偿的存储器访问窗口和填充 - Google Patents

用于运动矢量修正和运动补偿的存储器访问窗口和填充 Download PDF

Info

Publication number
CN112292862A
CN112292862A CN201980038772.5A CN201980038772A CN112292862A CN 112292862 A CN112292862 A CN 112292862A CN 201980038772 A CN201980038772 A CN 201980038772A CN 112292862 A CN112292862 A CN 112292862A
Authority
CN
China
Prior art keywords
pixel point
motion vector
value
window
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980038772.5A
Other languages
English (en)
Inventor
塞米赫·艾森力克
伊凡·克拉斯诺夫
赵志杰
陈建乐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN112292862A publication Critical patent/CN112292862A/zh
Pending legal-status Critical Current

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/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/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/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之间的相似度量。为简洁起见,绝对差和(sum of absolutedifferences,SAD)是为此经常使用的一个度量,计算如下:
Figure BDA0002828923370000021
在上述公式中,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 Motion VectorRefinement Based on Bilateral Template Matching(基于双向模板匹配的解码端运动矢量修正)”(文档获取网址http://phenix.it-sudparis.eu/jvet/)介绍了运动矢量修正,发现了整像素分辨率的第一运动矢量,并通过在第一运动矢量周围的搜索空间中以半像素分辨率进行搜索来进一步修正第一运动矢量。
为了执行运动矢量修正,需要将当前块执行修正所必需的至少那些像素点存储在存储器中,即对应于搜索空间的像素点,以及在搜索空间中进行模板匹配或双向匹配时可以访问的像素点。
外部存储器访问是当前硬件架构和/或软件实现中的一个重要设计参数。这是由于外部存储器访问比内部存储器使用处理速度更慢造成的。另一方面,例如,由于芯片尺寸的设计,芯片上的内部存储器是有限的。
发明内容
例如,本发明基于以下观察:当结合分数插值实现运动矢量修正时,可能需要进一步增大片上存储器尺寸,甚至增加外部存储器访问次数。这两种选择都可能都不是合适情况。当为了通过包括分数像素点位置来提高预测值的分辨率而应用插值时,上述观察同样适用。
鉴于上述问题,本发明提供运动矢量预测,能够考虑对外部存储器的访问次数,以及为对编码块的运动矢量进行运动矢量修正可访问以及计算所述块的预测值所需的像素点数量。
用基于存储器访问窗口中的一个或多个像素点的替换值,填充(替换)位于预定义存储器访问窗口外的用于运动矢量修正和/或分数插值的值,从而实现上述目标。
通过独立权利要求的特征来实现上述目标。
根据本发明的一个方面,提供了一种编码装置,用于确定用于对视频图像中的块进行编码的预测值。所述编码装置包括处理电路,用于:获取所述块的初始运动矢量;根据所述初始运动矢量,获取所述块的修正运动矢量;根据所述修正运动矢量,确定所述块的预测值。所述处理电路用于:根据所述修正运动矢量,使用插值滤波器插值,确定所述预测值;使用位于窗口中的整数像素点位置的至少一个像素点值和位于所述窗口外的整数像素点位置的填充像素点值进行所述插值滤波,其中,所述填充像素点值是基于所述窗口中的像素点的至少一个像素点值。
根据本发明的另一方面,提供了一种解码装置,用于确定用于对视频图像中的块进行解码的预测值。所述解码装置包括处理电路,用于:获取所述块的初始运动矢量;根据所述初始运动矢量,获取所述块的修正运动矢量;根据所述修正运动矢量,确定所述块的预测值。所述处理电路用于:根据所述修正运动矢量,使用插值滤波器插值,确定所述预测值;使用位于窗口中的整数像素点位置的至少一个像素点值和位于所述窗口外的整数像素点位置的填充像素点值进行所述插值滤波,其中,所述填充像素点值是基于所述窗口中的像素点的至少一个像素点值。
根据本发明的另一方面,提供了一种编码方法,用于确定用于对视频图像中的块进行编码的预测值。所述编码方法包括以下步骤:获取所述块的初始运动矢量;根据所述初始运动矢量,获取所述块的修正运动矢量;根据所述修正运动矢量,确定所述块的预测值,其中,所述确定步骤根据所述修正运动矢量,使用插值滤波器插值,确定所述预测值;使用位于窗口中的整数像素点位置的至少一个像素点值和位于所述窗口外的整数像素点位置的填充像素点值进行所述插值滤波,所述填充像素点值是基于所述窗口中的整数像素点的至少一个像素点值。
根据本发明的又一方面,提供了一种解码方法,用于确定用于对视频图像中的块进行解码的预测值。所述解码方法包括以下步骤:获取所述块的初始运动矢量;根据所述初始运动矢量,获取所述预测块的修正运动矢量;根据所述修正运动矢量,使用插值滤波器插值,确定所述预测值;使用位于窗口中的整数像素点位置的至少一个像素点值和位于所述窗口外的整数像素点位置的填充像素点值进行所述插值滤波,所述填充像素点值是基于所述窗口中的整数像素点的至少一个像素点值。
这种方法和装置有利于限制待用于通过插值滤波确定预测值的像素点数量,同时避免了对存储整个参考图像的存储/(外部)存储器的额外访问。
在上述方面的实施例中,所述窗口是用于插值滤波的窗口。
根据本实施例,插值可以包括访问窗口中的整数像素点位置的像素点值和/或使用基于所述窗口中的至少一个像素点的填充值,填充位于窗口外的整数像素点位置的至少一个像素点值,和/或使用所述访问整数位置像素点值以及所述填充像素点值进行插值滤波。
例如,所述处理电路可用于:根据候选运动矢量的搜索空间,确定所述初始运动矢量的修正值;根据所述初始运动矢量和所述修正值,确定所述修正运动矢量。
此外,例如,所述处理电路可用于根据所述初始运动矢量确定所述搜索空间。更具体地,所述搜索空间可位于所述初始运动矢量定义的位置上。例如,所述搜索空间可以所述初始运动矢量为中心。更具体地,例如,所述搜索空间可以包括9个整数像素点运动矢量候选,即初始运动矢量和其周围的8个运动矢量候选。
在本实施例中,所述处理电路还用于根据所述预测值重构所述块。重构可以在解码装置中进行,也可以在编码装置的解码环路中进行。本发明方面的方法可以包括根据所述预测值对所述块进行重构的相应步骤。
例如,所述处理电路可用于获取所述块与所述预测值之间的差,也称为“残差”。更具体地,所述处理电路可用于根据所述预测值和所述残差重构所述块,更具体地,作为所述预测值和所述残差的和。
例如,通过将对应的已使用(访问)的整数像素点位置的值相对于所述插值滤波器的轴对称的方式确定所述填充像素点值(替换值)。其中,插值滤波可以是一维滤波,也可以是可分离的二维滤波。
在一个示例性实现方式中,所述窗口由获取所述初始运动矢量指定的位置的可访问的所有整数像素点位置组成,所述整数像素点位置用于获取所述预测值。
例如,所述窗口通过其相对于以下的垂直尺寸和/或水平尺寸定义:尺寸为位于所述初始运动矢量位置上的块尺寸的块;所述初始运动矢量位置;或用于确定所述预测值的所述插值滤波器的垂直长度和水平长度。例如,在本实施例中,“位于”特定位置上的块是指相对于所述块的左上像素点位置。或者,另一像素点位置可以指,或者所述块位置可以指特定位置为中心的周围的位置。所述处理电路可用于根据所述初始运动矢量位置、所述块的尺寸和/或用于确定所述预测值的所述插值滤波器的所述垂直长度和水平长度来定义或确定所述窗口的位置和/或尺寸。
在另一示例中,所述窗口外的所述整数位置的所述填充像素点值,被确定为等于位于所述窗口中的至少一个已使用的整数像素点位置的像素点值,所述像素点值最接近位于所述窗口外的所述整数像素点位置。在特定示例中,对于一维插值滤波器,使用位于所述窗口外的多个整数像素点位置的填充像素点值,通过插值滤波器插值,来确定所述预测值,并且所述窗口外的所有整数像素点位置的所述填充像素点值被确定为等于位于所述窗口中的所述至少一个已使用的整数像素点位置的所述像素点值,所述像素点值最接近位于所述窗口外的所述整数像素点位置。
根据本实施例,所述待填充的像素点值的数量取决于所述初始运动矢量和所述修正运动矢量之间的差。
根据本实施例,所述处理电路用于通过使用模板进行模板匹配或双向匹配确定所述初始运动矢量的所述修正值。所述模板匹配或双向匹配访问另一窗口中整数像素点位置的像素点值。所述另一窗口包括所述搜索空间和进行所述模板匹配或双向匹配时可访问的其它整数像素点位置,所述模板匹配或双向匹配还使用基于所述另一窗口中的至少一个像素点的填充像素点(替换)值,填充位于所述另一窗口外的整数像素点位置的至少一个像素点值,并且使用所述访问整数像素点位置值以及所述填充像素点值执行所述模板匹配或双向匹配。
在一个实施例中,所述搜索空间包括至少一个分数像素点位置,分数像素点位置的值通过使用预定义抽头尺寸的滤波器进行插值滤波来获取;所述插值滤波使用所述访问整数像素点位置值和所述至少一个替换(填充像素点)值,以获取所述至少一个分数像素点位置的值。
更具体地,在所述模板匹配或双向匹配中使用的所述填充像素点值,是通过将所述对应的访问整数像素点位置的值相对于所述滤波器的轴对称的方式确定的。
或者,所述模板匹配或双向匹配中使用的所述填充像素点值,被确定为等于最接近所述访问整数像素点位置的值。
根据本实施例,所述另一窗口由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:所述搜索空间;尺寸为位于所述初始运动矢量位置上的块尺寸的块;初始运动矢量位置。
优选地,所述另一窗口与所述窗口相同。
根据本实施例,所述修正值由双向匹配确定,所述处理电路用于获取指向不同参考图像中的位置的至少两个初始运动矢量,至少两个初始运动矢量组成初始运动矢量对。
根据其它实施例,所述修正值由模板匹配确定,所述处理电路还用于获取所述块的模板。并通过在所述搜索空间中使用所述模板进行模板匹配,来确定所述初始运动矢量的所述修正值。
在一个实施例中,所述搜索空间包括至少一个分数像素点位置,其值通过使用预定义抽头尺寸的滤波器进行插值滤波来获取;所述插值滤波使用所述已使用的整数像素点位置值和所述至少一个填充像素点值,获取所述至少一个分数像素点位置值。
根据本发明的一方面,提供了一种存储指令的非瞬时性计算机可读存储介质,所述指令在由处理器/处理电路执行时执行上述任一方面或实施例或其组合中的步骤。
根据本发明的又一个特定方面,提供了一种编码装置,用于将划分成预测块的视频图像编码到码流中,或者用于将视频图像的预测块分别编码到码流中。所述编码装置包括用于确定预测块的运动矢量的处理电路。所述处理电路用于获取至少一个初始运动矢量,并根据候选运动矢量的搜索空间确定所述初始运动矢量的修正值,从而获取修正运动矢量。所述搜索空间位于所述初始运动矢量给出的位置上。所述编码装置还包括编码电路(可包括在所述处理电路中),用于对所述预测块与预测值之间的差进行编码,所述预测值由基于确定运动矢量的位置的预测块给出并且用于生成包括所述编码差和所述初始运动矢量的码流。所述编码装置还包括运动预测单元(可包括在所述处理电路中),用于根据所述运动矢量,使用插值滤波器插值滤波,确定所述预测值。所述插值滤波访问预定窗口中的整数像素点位置的像素点值;用基于所述窗口中的至少一个像素点的替换值,替换位于窗口外的整数像素点位置的至少一个像素点值;使用所述访问整数位置像素点值以及所述替换值进行所述插值滤波。
根据本发明的又一个特定方面,提供了一种解码装置,用于从码流中解码划分成预测块的视频图像。所述解码装置包括解析单元(可包括在所述解码装置的处理电路中),用于从所述码流中解析初始运动矢量,以及预测块与修正运动矢量指定的位置的预测块给出的预测值之间的编码差。所述解码装置包括用于确定预测块的运动矢量的处理电路(例如,所述解码装置的所述处理电路)。所述处理电路用于获取至少一个初始运动矢量,并根据候选运动矢量的搜索空间确定所述初始运动矢量的修正值,从而获取修正运动矢量。所述搜索空间位于所述初始运动矢量给出的位置上。再如,所述解码装置包括解码电路(可包括在所述解码装置的所述处理电路中),用于根据所述解析差和所述预测值之和,重构所述预测块,所述预测值由所述预测块给出,所述预测块的位置由所述修正运动矢量指定,所述修正运动矢量由用于确定运动矢量的所述处理电路确定。所述解码电路还用于根据所述运动矢量,使用插值滤波器插值滤波,确定所述预测值。所述插值滤波访问预定窗口中的整数像素点位置的像素点值;用基于所述窗口中的至少一个像素点的替换值,替换位于窗口外的整数像素点位置的至少一个像素点值;使用所述访问整数位置像素点值以及所述替换值进行所述插值滤波。
根据本发明的又一个方面,提供了一种编码方法,用于将划分成预测块的视频图像编码到码流中。所述编码方法包括确定预测块的运动矢量。所述确定运动矢量包括以下步骤:获取至少一个初始运动矢量,并根据候选运动矢量的搜索空间确定所述初始运动矢量的修正值,从而获取修正运动矢量。所述搜索空间位于所述初始运动矢量给出的位置上。所述编码方法还包括对所述预测块与预测值之间的差进行编码,所述预测值由基于确定运动矢量的位置的预测块给出并且用于生成包括所述编码差和所述初始运动矢量的码流。所述方法还包括根据所述运动矢量,使用插值滤波器插值滤波,确定所述预测值。所述插值滤波访问预定窗口中的整数像素点位置的像素点值;用基于所述窗口中的至少一个像素点的替换值,替换位于窗口外的整数像素点位置的至少一个像素点值;使用所述访问整数位置像素点值以及所述替换值进行所述插值滤波。
根据本发明的再一个方面,提供了一种解码方法,用于从码流中解码划分成预测块的视频图像。所述解码包括以下步骤:从所述码流中解析初始运动矢量以及预测块与修正运动矢量指定的位置的预测块给出的预测值之间的编码差。所述方法还包括确定预测块的运动矢量。所述确定运动矢量包括以下步骤:获取至少一个初始运动矢量,并根据候选运动矢量的搜索空间确定所述初始运动矢量的修正值,从而获取修正运动矢量。所述搜索空间位于所述初始运动矢量给出的位置上。所述解码方法还包括根据所述解析差和所述预测值之和,重构所述预测块,所述预测值由确定运动矢量的步骤确定的所述修正运动矢量指定的所述位置的所述预测块给出。此外,所述方法还包括根据所述运动矢量,使用插值滤波器插值滤波,确定所述预测值。所述插值滤波访问预定窗口中的整数像素点位置的像素点值;用基于所述窗口中的至少一个像素点的替换值,替换位于窗口外的整数像素点位置的至少一个像素点值;使用所述访问整数位置像素点值以及所述替换值进行所述插值滤波。
本发明的其它优点和实施例在从属权利要求中阐述。
附图说明
下文将参考以下附图详细描述示例性实施例,其中:
图1为可应用运动矢量推导和修正的编码器的示例性结构的框图;
图2为可应用运动矢量推导和修正的解码器的示例性结构的框图;
图3为适用于双向预测的示例性模板匹配的示意图;
图4为适用于单向和双向预测的示例性模板匹配的示意图;
图5为在不需要在码流中修正初始运动矢量情况下操作的运动矢量推导阶段的框图;
图6为双向匹配概念的示意图;
图7为实现本发明实施例的示例性硬件的框图;
图8为用于编码块的包含需要访问的像素点的示例性窗口的示意图;
图9为迭代搜索空间的示意图;
图10为存储器访问窗口由于插值滤波在水平方向上的扩展的示意图;
图11为根据搜索空间执行运动矢量修正并通过插值获取预测值的传统方案的图示说明;
图12为图11的传统示例提供的运动矢量推导和获取预测值的流程图;
图13为本发明的示例性实施例提供的用于根据搜索空间执行运动矢量修正并通过插值获取预测值的方案的图示说明;
图14为填充两个像素点以实现分数位置计算的示意图;
图15为填充四个像素点以在搜索空间边界上实现模板匹配的示意图;
图16为不需要填充的插值的示例性分数位置的示意图;
图17为图13的示例性实施例提供的运动矢量修正和获取预测值的流程图;
图18为存储器访问窗口相对于预测单元的定义的示意图;
图19为实施例提供的方法;
图20为本发明的其它示例性实施例提供的用于根据搜索空间执行运动矢量修正并通过插值获取预测值的方案的图示说明;
图21为图20的示例性实施例提供的运动矢量修正和获取预测值的流程图。
具体实施方式
本发明涉及调整将待访问以执行运动矢量修正和插值的像素点的数量,以便获得参考图像中以及预测值中的分数位置。
如上所述,在当今的硬件和软件体系结构中,外部存储器访问是最重要的设计考虑之一。尤其在包括模板匹配或双向匹配时,例如在运动矢量修正的情况下,运动矢量估计还可以与插值滤波一起使用以获取搜索空间的分数位置。使用插值滤波可能需要增加需要从存储器中访问的像素点的数量。然而,这样可能会增加片上存储器的成本,或者导致外部存储器访问次数增加,另一方面,会使实现速度变缓。特别是在解码端,这些问题可能会导致应用起来成本更高,速度更慢,是不可取的。
为了防止这种情况,本发明提供了对外部存储器访问预定窗口的限制。
可以预定义窗口的尺寸。例如,在运动矢量修正中,窗口可以至少包括所有搜索空间位置。访问的像素点是实际用于特定块及其搜索空间执行模板匹配或双向匹配的像素点,例如,用于利用模板或双向成本函数计算成本函数的所有像素点。可访问的像素点还包括在特定块的特定模板匹配或双向匹配期间不一定访问的像素点,例如,因为迭代地确定搜索空间包括不同的像素点,并且对该像素点的模板匹配或双向匹配不需要所有可访问的像素。可访问的像素点还包括可能由任何迭代确定的搜索空间(即,假设任何块内容)产生的像素点,以及可能还包括用于在这种可能的搜索空间中执行模板匹配时访问的像素点。
在使用插值滤波生成最终预测值的情况下,传统方法中所需存储器访问窗口的扩展程度取决于确定的修正运动矢量和初始运动矢量之间的最大差。
应注意,可以定义窗口小于所有可访问像素点。该窗口定义能够维持要存储在片上存储器中并且从外部存储器读取的少量像素点。因此,本发明限制了为了进行特定块的模板匹配或双向匹配相关操作的而要存储/缓存/缓冲的整数像素点数量。这并不是指其它像素点通常不在其它内存或存储器中存在/可用。如上所述,通常整个参考图像可以存储在外部存储器中。然而,为了进行模板匹配或双向匹配,可以仅加载其中的一部分,即窗口中的像素点,并用于模板匹配。
提供这种有限的窗口可以实现对窗口的利用,实际上只加载了窗口像素点。为了确保编码器和解码器的操作类似,可以在标准中预定义窗口定义或在码流中指示窗口定义。特别是在修正运动矢量用于形成参考图像的情况下,编码器和解码器应使用相同的方法。
图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 differences,SAD)。然而,一般来说,可使用任何其它相似度量,例如均方误差(mean square error,MSE)或结构相似度量(structural similarity metric,SSIM)。
然而,成本函数也可以是编码这种帧间块和/或这种编码产生的失真所需的位数。因此,率失真优化流程可用于决定运动矢量选择和/或一般地用于决定编码参数,例如是使用块的帧间预测还是帧内预测以及使用哪些设置。
帧内估计单元152和帧间预测单元154接收待帧内编码的当前帧或图像的块以及当前帧的重构区域的一个或几个参考像素点作为输入。然后,帧内预测通过当前帧的参考像素点的函数来描述当前帧的当前块的像素。帧内预测单元154输出当前块的预测块,其中所述预测块有利于使当前待编码块与其预测块之间的差最小化,即,使残差块最小化。例如,残差块的最小化可以基于率失真优化流程。具体地,获取预测块作为参考像素点的方向插值。方向可以通过率失真优化和/或通过计算上述与帧间预测相关的相似度量来确定。
帧间估计单元142接收待进行帧间编码的当前帧或当前图像的块或更通用格式的图像像素点以及两个或两个以上解码图像231作为输入。然后,帧间预测在相对于参考图像的参考图像像素点的运动矢量方面来描述当前帧的当前图像像素点。帧间预测单元142输出当前图像像素点的一个或多个运动矢量,其中,运动矢量指向的所述参考图像像素点有利于使当前待编码图像像素点与其参考图像像素点之间的差最小化,即,使残差图像像素点最小化。然后,帧间预测单元144提供当前块的预测值,对差进行编码。
当前块与其预测值之间的差,即残差块105,随后由变换单元106进行变换。变换系数107由量化单元108量化并由熵编码单元170进行熵编码。因此生成的编码图像数据171,即编码视频码流包括帧内编码块和帧间编码块以及对应的信令(例如,模式指示、运动矢量指示和/或帧内预测方向)。变换单元106可进行诸如傅里叶或离散余弦变换(DFT/FFT或DCT)等线性变换。这种向空间频域的变换的优点是:所得系数107通常在较低频率下具有较高值。因此,在有效系数扫描(例如z形)和量化之后,所得值序列在开始和结束时的值通常较大,其中包含一连串零。这样能够进行更高效的编码。量化单元108通过降低系数值的分辨率来执行实际的有损压缩。然后,熵编码单元170将向二进制码字赋予系数值以产生码流。熵编码单元170还对信令信息(图1中未示出)进行编码。
图2示出了视频解码器200。视频解码器200具体包括解码图像缓冲器230、帧间预测单元244和帧内预测单元254,帧内预测单元254是块预测单元。解码图像缓冲器230用于存储从编码视频码流重构的至少一个参考帧(用于单向预测)或至少两个参考帧(用于双向预测)。所述参考帧与编码视频码流的当前帧(当前解码帧)不同。帧内预测单元254用于生成预测块,预测块是待解码块的估计值。帧内预测单元254用于根据从解码图像缓冲器230获取的参考像素点生成该预测值。
解码器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。以左邻块为例,在最坏的情况下,当64×64亮度编码树块不再进一步划分且左侧亮度编码树块被划分到最大深度时,64×64亮度预测块可以在左侧具有16个4×4亮度预测块。
引入高级运动矢量预测(Advanced Motion Vector Prediction,AMVP)来修改运动矢量竞争,以适应这种灵活的块结构。在HEVC的发展过程中,最初的AMVP设计被大大简化,以更好地平衡编码效率和实现友好设计。AMVP的最初设计包括三类不同预测值中的五个MVP:空间邻块中的三个运动矢量、三个空间预测值的中间值和共址时间邻块中的缩放运动矢量。此外,通过重新排序来将最可能的运动预测值放置在第一位置并删除冗余候选来确保最小的信令开销,从而修改预测值列表。AMVP候选列表构建的最终设计包括以下两个候选MVP:(a)从5个空间邻块中获取的最多两个空间候选MVP;(b)当两个空间候选MVP均不可用或相同时,从两个时间共址块中获取的一个时间候选MVP;(c)当空间MVP、时间MVP或两个候选MVP均不可用时,零运动矢量。关于运动矢量确定的详细内容,可在2014年V.Sze等人(编者)在施普林格出版社(Springer)发表的书中找到:High Efficiency Video Coding(HEVC):Algorithms and Architectures(高效视频编码(HEVC):算法和架构),尤其是第5章,其内容以引用的方式并入本文中。
为了在不进一步增加信令开销的情况下进一步改进运动矢量估计,进一步修正编码端推导的在码流中提供的运动矢量可能是有益的。可以在解码器中执行运动矢量修正,而无需编码器的辅助。解码器环路中的编码器可以采用相同的修正以获取对应的运动矢量。在包括参考图像的整数像素位置和分数像素位置的搜索空间中执行运动矢量修正。例如,分数像素位置可以是半像素位置或1/4像素位置或其它分数位置。可以通过插值,例如双线性插值,从整数(全)像素位置获取分数像素位置。然而,本发明同样适用于不包括分数像素位置的搜索空间。
在当前块的双向预测中,将使用列表L0的第一运动矢量和列表L1的第二运动矢量获取的两个预测块组合成单个预测信号,相比于单向预测,能够更好地适应原始信号,从而减少残差信息,并有可能进行更高效的压缩。
因为在解码器中,当前块由于正在解码而不可用,所以为了进行运动矢量修正,使用模板,该模板是当前块的估计值并根据已经处理(即,在编码端编码,在解码端解码)的图像部分进行构建。
首先,在解码器200中接收第一运动矢量MV0的估计值和第二运动矢量MV1的估计值作为输入。在编码端100中,运动矢量估计MV0和MV1可以通过块匹配和/或通过搜索与当前块相邻的块(在同一图像中或在相邻图像中)的运动矢量组成的候选运动矢量列表(例如合并列表)来获取。有利于在码流中向解码端指示MV0和MV1。然而,应注意,一般来说,编码器中的第一确定阶段也可以通过模板匹配执行,有利于减少信令开销。
在解码端200中,有利于根据码流中的信息获取运动矢量MV0和MV1。直接指示MV0和MV1,或差异化指示MV0和MV1,和/或指示运动矢量列表(合并列表)中的索引。然而,本发明不限于在码流中指示运动矢量。相反,运动矢量可以由已经处于第一阶段的模板匹配确定,与编码器的操作相对应。可以在与第二修正阶段的搜索空间不同的搜索空间中执行第一阶段的模板匹配(运动矢量推导)。具体地,可以对分辨率较高(即搜索位置之间的距离更近)的搜索空间执行修正。
同样向解码器提供MV0和MV1分别指向的两个参考图像RefPic0和RefPic1的指示。参考图像作为之前处理(即,相应的编码和解码)的结果存储在编码端和解码端的解码图像缓冲器中。通过搜索选择其中一个参考图像进行运动矢量修正。编码器和解码器的参考图像选择单元分别用于选择MV0指向的第一参考图像和MV1指向的第二参考图像。在选择之后,参考图像选择单元确定是第一参考图像还是第二参考图像用于进行运动矢量修正。为了执行运动矢量修正,第一参考图像中的搜索区域定义在运动矢量MV0指向的候选位置周围。通过在搜索空间内执行模板匹配并确定绝对差和(sum of absolute differences,SAD)等相似度量,分析搜索区域内的候选搜索空间位置以找到与模板块最相似的块。搜索空间的位置表示模板左上角匹配的位置。如上所述,左上角只是一种约定,搜索空间的任意点,例如中心点,一般可用于表示匹配位置。
根据上述文件JVET-D0029,解码端运动矢量修正(decoder-side motion vectorrefinement,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’。相应地,使用相同的模板来找到最佳匹配块B’和指向块B’的对应运动矢量MV1’,如图3所示。换句话说,在根据初始运动矢量MV0和MV1指向的块A和块B构建模板之后,利用所述模板在RefPic0和RefPic1上搜索,找到修正运动矢量MV0’和MV1’。
运动矢量推导技术有时也被称为帧速率上转换(frame rate up-conversion,FRUC)。初始运动矢量MV0和MV1通常可以在码流中指示,以确保编码器和解码器可以使用同一初始点进行运动矢量修正。或者,可以通过提供包括一个或多个初始候选的初始候选列表来获得初始运动矢量。对于每个运动矢量,确定修正运动矢量,最终选择使成本函数最小化的修正运动矢量。
还应注意的是,本发明不限于上文结合图3所述的模板匹配。图4示出了一种也适用于单向预测的替代性模板匹配。详情见JVET-A1001号文件,特别是第2.4.6节。JVET-A1001文件,Jianle Chen等人的标题为《联合拓展测试模型1的算法描述(AlgorithmDescription of Joint Exploration Test Model 1)》中的模式匹配运动矢量的推导,网址http://phenix.it-sudparis.eu/jvet/。确定这种模板匹配方法中的模板为与当前帧中的当前块相邻的像素点。如图1所示,可以采取与当前块的左上边界相邻的已重构像素点,称为“L形模板”。
图5示出了另一种也可使用的运动矢量推导。运动矢量推导过程的输入是指示是否进行运动矢量推导的标志。默示的,推导过程的另一输入是(时间上或空间上)相邻的之前编码/重构块的运动矢量。将多个邻块的运动矢量用作运动矢量推导的初始搜索步骤的候选运动矢量。该过程的输出分别为MV0’(如果使用双向预测,则也可能是MV1’)和对应的参考图像索引RefPict0且可能为RefPict1。然后,运动矢量修正阶段包括如上所述的模板匹配。在找到一个修正的(单向预测)运动矢量或多个(双向预测/多帧预测)运动矢量后,构建当前块的预测值(对于双向/多帧预测,通过加权像素点预测,否则,参考MV修正后指向的像素点)。
本发明不限于上述两种匹配方法(模板匹配的示例)。例如,称为双向匹配(也在文件JVET-A1001中描述)的第三种匹配方法也可以用于运动矢量修正,并且本发明也同样适用。参考图6解释了双向匹配。
根据双向匹配,搜索沿着两个不同参考图像中当前块的运动轨迹的两个块之间的最佳匹配。如图6所示,双向匹配用于通过沿着两个不同参考图像中当前块的运动轨迹,找到两个块之间的最接近匹配来推导出当前块的运动信息。在双向匹配中,可能使用SAD(块cand0’,块cand1’)等成本函数,其中MV0指向块cand0’,MV1指向块cand1’。
为了降低计算开销,对于选择合适的运动矢量候选(候选对),计算并比较其成本函数,需要考虑是否满足以下条件。假设存在连续运动轨迹,指向两个参考块的运动矢量MV0和MV1应与当前图像与两个参考图像之间的时间距离(即TD0和TD1)成比例。作为一种特殊情况,当前图像在时间上位于两个参考图像之间时,且当前图像到两个参考图像的时间距离相同时,参考一个参考图像的多个运动矢量对之间的运动矢量差与参考另一个参考图像的相应运动矢量对之间的运动矢量差应相互对称。
处理电路600在图7中示出。所述处理电路可以包括任何硬件,配置可以通过两者的任何类型的编程或硬件设计的组合来实现。例如,处理电路可以由单个处理器(例如,通用处理器)和实现上述步骤的对应软件组成。另一方面,处理电路可以由数字信号处理器(Digital Signal Processor,DSP)的专用集成电路(Application-Specific IntegratedCircuit,ASIC)或现场可编程门阵列(Field-Programmable Gate Array,FPGA)等专用硬件来实现。
所述处理电路可以包括一个或多个上述硬件组件,所述硬件组件互连以执行上述运动矢量推导。处理电路600包括计算逻辑,所述计算逻辑实现两种功能:获得初始运动矢量(或使用双向/多帧预测下的多个初始运动矢量)以及使用模板匹配610的模板;运动矢量修正620。这两个功能可以在同一块硬件上实现,或者可以由单独的硬件单元执行,例如初始运动矢量和模板确定单元610和运动矢量修正单元620。处理电路600可以以通信方式连接到外部存储器650,重构参考图像像素点存储于所述外部存储器650中。此外,处理电路600还可以包括内部存储器640,所述内部存储器640缓存从外部存储器发送并用于为当前处理的块确定运动矢量的窗口中的像素点。处理电路可以作为一个集成电路嵌入单个芯片上。
应注意,处理电路可以实现参考图1和图2描述的编码器和/或解码器的其它功能。内部存储器可以是片上存储器,例如高速缓冲存储器或线路存储器。在编码器/解码器芯片上有利于实现芯片存储器,以加快计算。由于芯片尺寸有限,片上存储器通常较小。另一方面,外部存储器可能很大,但是对外部存储器的访问消耗更多的能量,而且访问速度更慢。通常,在执行计算之前,所有必要的信息从外部存储器检索到片上存储器。最坏的情况是外部存储器访问(或设计存储器总线时所需提供的带宽)表示在解码帧或编码单元时,外部存储器和芯片之间的最大可能的存储器传输量。存储器(特别是外部存储器)通常只能在预定义的块单元中访问。换句话说,通常不可能访问单个像素,而是必须访问最小单元(例如,8×8)。片上存储器的尺寸也是一个重要的设计考虑因素,因为片上存储器越大成本越高。
换句话说,上述装置可以是集成电路,还包括:内部存储器,嵌入于集成电路中;存储器访问单元(接口),用于从外部存储器到内部存储器获取位于所述窗口中的整数像素点。
上述术语“预测块”是指将要预测的当前块。所述块是图像内的块,可以通过将图像细分为尺寸相等或尺寸不同的块(例如,通过将编码树单元(coding tree unit,CTU)划分成更小的单元)来获取。所述块可以是正方形或更一般的矩形,因为这些是当前编码器/解码器中也使用的典型形状。然而,本发明不受块的任何尺寸/形状的限制。
包括处理电路的装置可以是编码器或解码器,甚至可以是包括此类编码器或解码器的装置,例如录制设备和/或播放设备。
分数像素点位置是通过重构参考图像获取的真实图像像素点位置之间的位置,如图1所示对参考图像进行编码。因此,分数位置必须基于最近的整数位置通过插值获得。插值滤波的详细内容可以在V.Sze等人编写的《高效视频编码(High Efficiency VideoCoding,HEVC)》(施普林格出版社,2014年),第5.3节“分数像素点插值”中找到。
插值滤波通常采用不同的滤波器产生不同的分数像素(像素点)位置。在H.265视频压缩标准中,应用以下一维可分离滤波器来生成1/4像素和半像素位置:
Figure BDA0002828923370000141
从上表中可以看出,插值滤波需要分数像素位置周围的几个像素点,对应于滤波器抽头(表中系数的数量)。使用上述示例滤波器以生成半像素位置,需要左/上和右/下的4个整数像素点。应当注意的是,插值滤波器的长度对于1/4像素点位置(为7抽头)和对于半像素点位置(为8抽头)的长度是不同的。在本申请中,术语“像素点”和“像素”可互换使用,表示给定时间实例中(一个或多个颜色分量中)的图像像素点。原则上,像素点是一个强度值。
在本发明的一些实施例中,预定义抽头尺寸的插值滤波器访问仅位于在所述搜索空间中进行模板匹配时可访问的整数像素点给出的窗口中的整数像素点。窗口可能包含比实际用于特定预测块计算更多的像素点。这是因为修正搜索操作通常使用快速搜索方法(而不是暴力搜索方法)来实现,根据这个事实,一些像素点不是根据搜索操作的渐进过程进行评估的。因此,对于每个预测块,模板匹配迭代次数以及用于修正搜索操作的计算的像素点可能发生变化。
图8示出了窗口的编码块(预测块)和对应的像素点。应注意,图8中所示的像素点是参考图像像素点,编码块实际上是当前帧中与当前块的尺寸和位置对应的块,其中,将在参考图像中推导运动矢量。因此,实际上,图8中的编码块实际上是与搜索预测值的块共址的块。然而,出于简洁性的原因,该块在下文中称为“编码块”。
在这个示例中,未修正运动矢量MV0指向一个整数像素点位置。运动矢量修正搜索粒度为1个整数像素点,即由于起始点为整数像素点,因此只搜索整数像素点。在本示例中,在逐渐扩展的搜索空间中执行搜索。这意味着搜索空间在每次迭代中都通过添加新的搜索位置而向前推进,具体取决于之前测试位置的最佳成本函数方向。
图9中以简化的方式说明了这种方法。在图9中,初始运动矢量指向中心点810。搜索空间是围绕初始运动矢量位置逐步构建的。在第一步中,测试与初始运动矢量所指向的位置810直接相邻的上、下、左、右四个位置以及初始运动矢量所指向的位置810。根据在测试的5个点中产生最低成本函数的方向,将其它待测试位置添加到搜索空间中。在这个示例中,最低成本函数可以在右边点上看到,所以在第二步中,搜索空间在水平向右方向上又扩展了3个点。在第二步中,最低成本函数可以在右边点(相对于第一步的最低成本点)出现,从而使得搜索空间在水平向右方向上又扩展3个点。在第三步中,在相对于步骤2的最低成本点的右边点再次出现最低成本函数,从而使得搜索空间在水平向右方向上再扩展3个点。根据图9中的示例,按此顺序向上、向右上方向执行另外3个步骤。在该示例中,每次迭代使用菱形模式(由5个搜索点组成),并且扩展搜索空间,以便在每个步骤中完成丢失的搜索点。
在搜索空间确定的每次迭代中,搜索空间可增加一个或多个整数像素点位置。现在回到图8,在该示例中,最大搜索迭代次数为4。由于最大次数的4次迭代是可能的,因此需要从存储器中检索在左侧描绘的所有像素点以执行搜索操作,以防搜索空间逐渐扩展到左侧。同样地,需要4个像素点扩展到上方。因此,搜索空间在两个方向(从左到右和从上到下)中都得到了扩展,因为修正MV可以在两个方向中的任意一个方向上移动,并且硬件实现要求在应用修正搜索之前从外部存储器中获取可能需要的所有像素点。如果搜索空间在右下方向扩展,则需要扩展4个其它像素点,因为使用对应于编码块(预测块)尺寸的模板进行模板匹配将需要访问这些像素点中的一些像素点。此外,角落像素点(例如,右上)也必须从存储器中获取,因为硬件实现通常不能获取不规则形状(矩形访问更容易实现)。
应注意,上述迭代搜索空间扩展仅仅是示例性的,每次迭代中用于扩展搜索空间的规则和点数可能不同,即用不同的方式指定。
图9还示出了由于上述外部存储器访问规则而可能发生的场景。从外部存储器中获取的像素点数量比计算步骤中实际使用的像素点数量更多。假设这里的模板只是一个大的像素点(出于简洁性的原因),白色圆圈代表从外部存储器中检索的像素点和实际使用的带阴影的像素点。然而,如果对外部存储器的访问次数要保持在较低水平,则这种冗余是必要的,因为当开始处理当前块时,实际需要的像素点尚未获知。
应注意,例如,搜索空间也可以以不同方式定义,例如可以定义为位于初始运动矢量所指向的位置上的固定形状。所述形状可以是方形、矩形、菱形等任意形状。
图10示出了搜索空间还可以包括分数像素点的示例。在图8和图9中,对整数像素点执行运动矢量搜索,从而得到访问窗口中包括的较大实线点指示的位置。如果现在对半像素分辨率的像素点(较小的实线点)执行搜索,则为了生成左侧示出的分数像素点,假设插值滤波器是对称的并且具有8个抽头,同样需要从存储器中再检索3列像素点。此外,由于搜索操作是对称的(可以迭代地向左和向右移动),因此必须在左侧(扩展3列像素)进行相同操作,以便分数像素可以位于窗口的左侧。
由于插值滤波,需要从存储器中读取的像素点数量进一步增加,由虚线表示,现在还包括表示由于分数像素插值而添加的位置的点线圆。类似地,如果还可以搜索垂直方向上的半像素位置,则要从存储器访问的像素点的窗口还需要在垂直方向上(图10的示例中未示出)在上方和下方进行扩展。
存储器访问窗口定义为矩形,所述窗口包含需要从存储器中读取的所有像素点,以便执行预测块(编码块)的运动矢量搜索。存储器访问的窗口不仅包括所需的实际像素点,还包括在运动矢量搜索操作期间可能访问的所有剩余像素点。在图9的示例中,运动矢量搜索移动到右侧。但是,它也可能被移到左边的方向,这是事先不确定的。相应地,为了不多次访问外部存储器,存储器访问窗口(或访问窗口)包括进行相应处理时可访问的所有像素点。
为了实现这一点,本发明对位于存储器访问窗口外的像素点进行填充(如果需要的话),例如,以插值分数像素点。
提供替换像素点(填充像素点)还可以有利于与也包括分数像素点的搜索空间上的模板匹配相关。换句话说,预测块的搜索空间可以包括至少一个分数像素点位置,所述至少一个分数像素点位置的值是通过使用预定义抽头尺寸的滤波器进行插值滤波获取的。所述插值滤波使用来自窗口的像素点位置值和至少一个替换值来获取至少一个分数像素点位置值。
图11示出了如上文所述执行运动矢量推导/修正的已知方案的基本步骤。第一步(步骤1)中,获取至少两个候选运动矢量(在所示示例中,有9个候选运动矢量)的“搜索空间”。可选地,形成搜索空间的候选运动矢量之一可以看作初始运动矢量(根据本申请中使用的术语也称为“锚”运动矢量或锚候选运动矢量)。例如,初始或锚运动矢量可以是包括在码流中并显式或隐式地向解码器指示的运动矢量。
在下一步骤(步骤2)中,对搜索空间应用匹配过程,以找到搜索空间的最佳匹配点(即搜索空间将成本函数最小化的点,对应于最合适的候选运动矢量)。在图示的示例中,应用双向匹配,但是,可以同样应用用于确定成本函数的其它方案,例如模板匹配。
在附图的最后一步(步骤3)中,最终预测值是在根据步骤2的处理选择的最合适的候选运动矢量的基础上通过插值获取的。
图11的概念在图12的流程图中进一步描述。在图12中,具体针对候选运动矢量对的情况进行说明,即用于双向匹配(在双向预测中使用模板匹配时也适用,如上文参考图3所示)。
在第一步(1310)中,构建候选运动矢量对的搜索空间。该步骤对应图11的“步骤1”。
在下一步骤(1320)中,通过应用插值滤波为搜索空间中的每个运动矢量对生成预测值。在下一步骤(1330)中,为搜索空间中的每个运动矢量对构建(获取)模板。如上所述,该步骤是可选的,即仅在模板匹配的情况下是必需的,但是对于双向匹配是不必要的。在下一步骤(1340)中,对于搜索空间的每个运动矢量对,通过比较所述运动矢量对中两个运动矢量所指向的预测块(或一个候选运动矢量的预测块和所述模板)来计算模板匹配成本(或双向匹配成本)。在下一步骤(1370)中,选择将模板或双向成本函数最小化(更一般地:最佳匹配,即通过匹配过程获取的最合适的匹配)所得到的运动矢量并将其输出为预测块的运动矢量对。根据上文解释的术语,这可以称为“修正运动矢量对”。上述步骤1320、1330、1340和1370对应于图11中的步骤2。
下一步骤(1380)使用在步骤1370中选择的运动矢量对生成具有插值的最终预测值。该步骤对应图11中的步骤3。
图13示出了本发明的示例性实施例提供的用于运动矢量修正和最终预测值生成的处理。图13的方法与图11中示出的传统方法之间的主要区别在于,根据本发明的图13的方法使用像素点填充来进行运动矢量修正,和使用像素点填充来最终生成使用插值滤波的预测值。
在附加步骤2中示出了使用填充像素点进行运动矢量修正(可选),该步骤将在下文参考图14至图18进行更详细地描述。因此,即使在具有分数坐标的候选运动矢量的情况下(即搜索空间分数坐标),利用预定义的有限访问窗口,可以执行进行双向匹配或模板匹配的期望候选块,与仅包括整数点的搜索空间的情况相同。在步骤3中执行通过应用双向或模板匹配执行的实际成本函数推导,与图11的步骤2相同。
进一步地,在最后步骤4中(也或仅)使用像素点填充来执行实际预测值生成。该步骤通常对应于图11的步骤3,但是因为使用了填充概念,所以与图11的步骤3不同。具体地,在给出的示例中,位于最右边两列和底部行中的像素点值不可访问,而是根据所访问的其它像素点值用填充像素点值进行填充。
要填充的像素点量(由于不可用而被替换值替换)取决于最终选择的(修正)运动矢量和初始(锚)运动矢量之间的差。在图示的示例中,在垂直方向上相差两个像素,水平方向上相差一个像素。据此,为了在步骤5的图示中在两个矩形的交叉点处水平和垂直地插值像素,两个右侧像素列以及底部像素行的像素点值不可用,并且必须根据预定规则使用替换值进行替换(填充),预设规则是上面阐述的并在下面更详细的讨论。
如果在步骤2中也使用填充进行搜索,则使用相同的访问窗口有利于进行步骤2和步骤4中的插值滤波操作。
根据搜索空间中的特定候选运动矢量有利于确定在图13的步骤2和步骤4中使用的存储器访问窗口。例如,特定运动矢量(称为锚运动矢量)可以是包括在码流中并显式或隐式地向解码器指示的运动矢量。根据编码器和解码器都已知的预定义规则执行锚运动矢量的选择确定所述运动矢量。
图14示出了用于运动矢量修正的存储器访问窗口。窗口横跨中心点1010,该中心点1010是初始运动矢量指向的位置。此外,分数位置1020也属于搜索空间。然而,分数位置1020将由6抽头滤波器使用分数位置左侧的3个整数像素点位置和分数位置右侧的3个整数像素点位置进行插值。由于分数位置1020与整数像素点位置位于同一直线上,因此可以应用一维滤波器进行插值,例如,如上文参考图10描述的示例中的一维滤波器所示。如图14所示,为了对分数像素点1020进行插值,还需要位于窗口外的两个其它像素点位置1030。为了避免从外部存储器额外加载这些像素点,根据本发明,将窗口外位置1030的值替换为根据窗口中的像素点获取的值。
图14示出了分数像素点位置1020,所述分数像素点位置1020位于两个整数像素点位置中间且因此是半像素位置。然而,本发明同样可以应用于其它分数位置,例如1/4或1/8位置。此外,像素点位置1020位于与整数像素点位置中的行对应的水平线上,以便可以使用水平一维滤波进行插值。然而,本发明不限于这些分数位置。相反,分数位置可以位于与整数像素点位置的列对应的垂直线上,以便可以使用垂直一维滤波进行插值。此外,分数位置不必与整数像素点位于同一像素线上。在这种情况下,可以使用二维滤波对这些像素点进行插值;该二维滤波可以分为垂直一维滤波和水平一维滤波。
各种分数位置的示例如图16所示。具体地,分数位置1是用于可以应用水平滤波和垂直滤波的插值位置,因为所述像素点与整数像素点位置的行和列不在一条线上。位置2为仅使用水平滤波的插值位置,位置6为仅使用垂直滤波的插值位置。图16中所示的所有分数位置都可以使用窗口中的整数位置获取。
可以以各种方式定义存储器访问窗口。图18示出了将存储器访问窗口定义为编码块的左右或上下(对应于初始运动矢量给定的编码块的位置)上的扩展EXT的示例。扩展量可取决于编码块或预测块的尺寸和形状。在图18中,扩展长度为在每个方向(上、下、左、右)上各有4个像素点。然而,应注意,EXT也可以在不同方向上采用不同的值,具体根据块尺寸(在垂直方向和水平方向上尺寸不同)和/或搜索空间的形式和尺寸而定。
例如,例如,窗口为相对于预测块的初始运动矢量的N个整数像素点列和M个整数像素点行,其中N和M为非零整数值。在图18中,指出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)。然而,存储器访问窗口尺寸也可以在标准中定义,或者根据其它编码参数(例如,模板尺寸、预测块尺寸、图像分辨率等)推导。返回图14,根据一个实施例,围绕未修正运动矢量1010指向的位置定义用于修正的存储器访问窗口。所述窗口标识需要从存储器访问的最大像素点数量,以便执行运动矢量修正搜索。这里的搜索空间对应于访问窗口。换句话说,为了描述的简洁性,在这个示例中,模板的尺寸为1×1,但是在实际中,通常可能更大。存储器访问窗口通常定义为编码块周围的扩展。在这个示例中,所述窗口为来自左侧/右侧的4个像素点和来自上方/下方的4个像素点。如果在模板匹配或双向匹配期间测试的搜索空间位置需要来自存储器访问窗口外的像素点,则通过填充获取重构编码块所需的像素点。图14中,分数位置1020的情况也如此。如果模板匹配要在此位置上或使用此位置执行,则必须使用位于窗口外的其它填充位置1030进行插值。
例如,可以使用以下方法之一生成填充像素点:
-最近像素点复制。
-沿插值滤波轴对称。
具体地,最近像素点复制是指一种确定替换值等于最接近访问整数像素点位置的值的方法。例如,在图14中,两个缺失位置值1030将被替换成紧邻待插值的分数位置1020右边的像素点的值。然而,应注意,此方法仅仅是一个示例,本发明不限于仅复制相邻像素点。或者,可以使用几个最近的像素点位置对缺失像素点1030进行插值。例如,可以使用边界上的离缺失像素点最近的三个像素点对缺失像素点进行插值,例如通过加权平均,其中将权重设为与这三个像素点与缺失像素点的距离成反比。
对称是指一种方法,根据该方法,通过将对应的访问整数像素点位置的值相对于插值滤波器的轴对称的方式来确定替换值。例如,在图14中,两个缺失的像素点1030将替换为分数位置1020左侧的像素点的值。具体地,分数位置1020右侧的第二个像素点替换为分数位置1020左侧第二个位置的值,分数位置1020右侧的第三个像素点替换为分数位置1020左侧第三个位置的值。
应注意,还可以应用上述两种方法的组合,其中,缺失像素点是对称像素点与最近像素点的函数。
根据一个实施例,窗口由可访问的所有整数像素点位置组成,整数像素点位置在执行模板匹配或双向匹配时的搜索空间内。例如,这是图14的示例的情况,其中窗口外的其它像素点仅在非整数、分数像素点位置执行模板匹配时是必需的。换句话说,在图14中,在上述示例中,要搜索的半像素坐标需要在存储器访问窗口外的像素点。因此,进行填充操作来生成不可用像素点。然而,本发明并不限于此。
图15示出了一种替代方法,其中窗口不包括在所述搜索空间内对整数像素点位置执行模板匹配时可访问的所有整数像素点位置。在之前的示例中,为了描述的简洁性,将编码块尺寸为1×1。在图15中,尺寸为4×4个整数像素点。在本示例中,如果搜索坐标(待计算模板匹配或双向匹配的位置)指向整数像素点,则在块中的一些像素点位于存储器访问窗口外的情况下仍然可以进行填充。这种方法可以进一步限制窗口尺寸。
具体如下:图15示出了包括一些可访问的像素点的窗口1120。初始运动矢量指向标记编码块左上角的位置。在此,搜索空间可以等同于窗口。然而,应注意,搜索空间通常可以小于该窗口,在模板大于1×1个整数像素点的情况下,除了搜索空间中包括的像素点之外,还需要其它像素点来执行模板匹配。然而,如果所述搜索空间定义了所述窗口的尺寸,则替代地,可以填充缺失像素点。在图15中,示出了窗口的第二行和第10列中的示例性搜索位置。使用模板尺寸为4×4个整数像素点进行模板匹配也需要窗口外的像素。因此,这些像素点被填充,即,被根据窗口中像素点确定或计算的值替换。可以应用上述填充方法,例如最近相邻像素点或对称。
窗口可以根据其相对于以下各者的垂直和/或水平尺寸定义:
-搜索空间,
-尺寸为位于初始运动矢量位置上的预测块尺寸的块,或
-初始运动矢量位置。
窗口定义的示例如图18所示,并在上文中进行了描述。对应于根据位于初始运动矢量位置上的预测块的尺寸确定窗口尺寸。或者,窗口尺寸可以相对于初始矢量位置在x和y方向中的一个方向或两个方向上的尺寸来定义。例如,可以将窗口定义为位于初始运动矢量指向的位置周围,并将A个整数像素点向上、下、左、右方向中的每个方向扩展。或者,所述窗口可以将A个整数像素点分别向左和向右扩展,B个整数像素点分别向上和向下扩展。其它定义是可能的。
应注意,上述示例是为半像素插值而提供的。然而,本发明并不限于此。通常,可使用1/4、1/8等任何分数位置,即使用对应的插值滤波器进行插值。
相同的窗口尺寸定义也适用于插值滤波进行填充,从而生成预测值的情况。具体地,垂直尺寸和水平尺寸(即x和y方向),由用于确定预测值的插值滤波器的垂直程度和水平长度确定。
流程图17更详细地示出图13中所示的处理。图17的流程图与图12的流程图不同,图12的流程图示出了传统过程,其中步骤1320和1380分别替换为步骤1720和1780。这些步骤与图12的相应步骤不同之处在于,对于用于生成参考图像中的候选预测块以执行双向匹配或模板匹配的插值滤波以及用于生成最终预测值的插值滤波,使用替换像素点进行填充。
可以在如图1和图2所示的编码器和/或解码器中使用参考图7描述的处理电路。
具体地,提供了一种编码装置,用于将划分成预测块的视频图像编码为码流,该编码装置包括:如上所述的包括处理电路的用于确定预测块的运动矢量的装置;编码电路,用于对预测块与预测值之间的差进行编码,所述预测值由确定运动矢量指定的位置的预测块给出,并且编码电路用于生成包括编码差和初始运动矢量的码流。
也可以在处理电路中提供或实现上文参考图1所述的编码器的其它单元和功能。
相应地,可提供一种解码装置,用于从码流中解码划分成预测块的视频图像,所述解码装置包括:解析单元,用于从码流中解析初始运动矢量,预测块与预测值之间的编码差,所述预测值由修正运动矢量指定的位置的预测块给出;如上所述的包括处理电路的用于确定预测块的修正运动矢量的装置;以及解码电路,用于根据所述解析差和所述预测值之和,重构所述预测块,所述预测值由用于确定运动矢量的处理电路确定的修正运动矢量指定的位置中的预测块给出。例如,可以通过修正运动矢量的位置直接给出预测值。然而,可能存在获取当前预测块的运动矢量的其它处理步骤,这些处理步骤还可以改变运动矢量(例如,通过滤波、裁剪、进一步修正等方式)。
上文参考图2所述的解码器的其它单元和功能也可以在处理电路中提供或实现。
此外,从装置的角度描述了本发明的实施例,处理电路执行运动矢量修正。然而,本发明并不限于此,还提供了对应的方法,所述方法包括对应于上文执行配置处理电路所描述的步骤的处理步骤。
抽头与滤波器系数相对应。抽头尺寸与滤波器顺序相对应。在此,假设滤波器为线性滤波器。在一些示例中,滤波器可以是对称的,即具有对称系数。然而,本发明不限于对称滤波器或线性滤波器或任何种类的滤波器。通常,可以根据相邻像素点的任何方式获取分数位置。
根据一个实施例的方法,使用图19中示出的以下步骤确定预测块的运动矢量。在步骤1410中,获取预测块的初始运动矢量和模板,随后通过在搜索空间中使用所述模板进行模板匹配来确定初始运动矢量的修正值。所述搜索空间位于初始运动矢量给出的位置上。在1420中确定存储器访问窗口。应注意,不必以显式方式执行该步骤。存储器访问窗口可以是预定义和已知的。因此,本步骤用于说明存储器访问窗口的尺寸是已知的。然后,在步骤1430至1490中进行模板匹配。
模板匹配或双向匹配访问预定窗口中的整数像素点位置,该预定窗口包括所述搜索空间和执行模板匹配或双向匹配时可访问的其它整数像素点位置;通过替换值替换位于窗口外的至少一个整数像素点值,所述替换值基于所述窗口中的至少一个像素点。使用访问整数像素点位置值以及替换值执行模板匹配。如图19所示:对搜索空间中的所有位置执行模板匹配或双向匹配。在步骤1430中,测试当前位置上的模板匹配或双向匹配是否需要一个或多个位于存储器访问窗口外的像素点。如果确定需要(步骤1430中的“是”),则在步骤1440中为窗口外的像素点执行如上所述的填充。该步骤之后,在步骤1450中使用填充像素点在当前位置执行模板匹配或双向匹配(即,搜索)。或者,如果所有必要的像素点均未超出所述窗口(步骤1430的“否”),则在步骤1450中使用可用像素点在当前位置执行模板匹配或双向匹配(即,搜索)。如果当前位置是待测试搜索空间中的最后一个位置(步骤1460中为是),则结束模板匹配。否则(步骤1460的“否”),则在步骤1470中获取下一个位置,并且如上文所述,在步骤1430中继续对新位置执行模板匹配。
在模板匹配结束后,识别最佳匹配位置(例如,作为成本最低的存储位置)。
图20示出了在本发明实施例的框架内适用的用于运动矢量修正和预测值生成的替代性示例性方法。该方法与图13的方法之间的区别在于,在图20中,使用填充进行插值滤波仅应用于最终生成使用修正运动矢量(对)的预测值。在图20中为步骤5,与图13中的步骤4相对应。
另一方面,在运动矢量修正(搜索)中不使用填充进行插值滤波,即图13的步骤2。相反,图20的方法执行取整运算,以便在初始运动矢量(或组成初始搜索空间的多个初始候选运动矢量)为最接近整数点的情况下,将坐标取整为最接近的整数点(图20的步骤2)。该取整运算等效于表示为通过MV_round_diff的描述取整方向的预定矢量的移位。取整运算的通过修改搜索空间,从而获取修改后的搜索空间,该搜索空间中只有整数坐标点,从而能够保证性能。因此,可以对整数坐标执行下一步骤3,以通过双向(或模板)匹配获取最佳匹配整数点,从而不需要插值滤波来生成用于模板/双向匹配的预测值。
另外,图20包括步骤4。此步骤可选。在步骤4中,在步骤3中获取修改后搜索空间中的最佳匹配整数点之后,恢复取整,从而获取(初始)搜索空间中的最终修正运动矢量。换句话说,将与步骤2相反的移位矢量应用于步骤3中得到的最佳匹配(修正)运动矢量。如果包括可选步骤4,则根据步骤4中得到的修正运动矢量获取最终预测值。或者,跳过步骤4,直接将步骤5应用于步骤3中得到的运动矢量。又或者,可以根据预定条件决定是包括步骤4还是跳过步骤4。
图21中示出了对应于图20的方法的流程图。同样,为了简化描述,针对图20使用运动矢量对而不是单个运动矢量的情况,绘制了该流程图。
初始步骤1310与图20中相同。后续步骤2115与图20的步骤2中的取整运算相对应。这里的处理是广义的,因为对初始搜索空间的修改并不限于取整运算,而是更一般地说,对于初始搜索空间中的每个运动矢量对,生成一个代表运动矢量对。图20的取整运算是初始搜索空间的运动矢量映射到代表运动矢量的特殊情况。
以下步骤中,2130(模板匹配可选)和2140与图17中的步骤相同,唯一的区别在于,使用修改后的搜索空间中的代表运动矢量执行各自的操作。步骤2150和2160与图20的步骤4相对应。在步骤2150中,将最小化模板匹配成本(或双向匹配成本)的代表运动矢量对设置为Pair_best_rep。
步骤2160(可选)与图20的步骤4中说明的取整运算的逆运算相对应。在下一步骤(1370)中,输出原始搜索空间的运动矢量(对)作为预测块的运动矢量。步骤1370和1780与图17中的步骤相同。
此外,提供了一种编码方法,用于将划分成预测块的视频图像编码到码流中,该编码方法包括以下步骤:根据上文任一方法确定预测块的运动矢量;对预测块与预测值之间的差进行编码,所述预测值由基于确定的运动矢量的位置的预测块给出,并且用于生成包括编码差和初始运动矢量的码流。
编码方法还可以包括结合图1中块的功能描述的步骤。
再如,提供了一种解码方法,用于从码流中解码划分成预测块的视频图像,所述解码方法包括:从码流中解析出初始运动矢量,预测块与修正运动矢量指定的位置的预测块给出的预测值之间的编码差;根据上文任一方法确定预测块的修正运动矢量;以及根据解析差和预测值之和,重构预测块,所述预测值由修正运动矢量指定的位置的预测块给出。
解码方法还可以包括结合图2中块的功能描述的步骤。
然而,应注意,图1和图2并不限制本发明。图1和图2仅提供现有编码器和/或解码器内本发明实现方式的非限制性示例。
如上所述的使用像素点填充的运动矢量确定可以实现为视频信号(运动图像)的编码和/或解码的一部分。然而,运动矢量确定还可以用于图像处理中的其它目的,例如移动检测、移动分析等,但不限于编码/解码。
运动矢量确定可实现为装置。这种装置可以是软件和硬件的组合。例如,运动矢量确定可以由通用处理器、数字信号处理器(digital signal processor,DSP)、现场可编程门阵列(field programmable gate array,FPGA)等芯片执行。然而,本发明并不限于在可编程硬件上实现。可以在专用集成电路(application-specific integrated circuit,ASIC)上实现,或者通过上述硬件组件的组合实现。
运动矢量确定也可以通过存储在计算机可读介质上的程序指令来实现。程序在执行时,使计算机执行上述方法的步骤。所述计算机可读介质可以是存储所述程序的任何介质,例如DVD、CD、USB(闪存)驱动器、硬盘、通过网络可用的服务器存储等。
编码器和/或解码器可以在各种设备中实现,包括电视、机顶盒、PC、平板电脑、智能手机等,即任何录制、编码、转码、解码或播放设备。可以是实现方法步骤,并且存储在/运行在如上述电子设备中包括的处理器上的软件或应用。
总之,本发明涉及使用模板匹配或双向匹配来确定运动矢量,以及根据运动矢量生成预测值。所述模板匹配或双向匹配和/或预测值生成使用插值滤波。所述插值滤波操作访问窗口中的整数像素点位置,所述窗口包括所述搜索空间和进行所述模板匹配时可访问的其它整数像素点位置;用基于所述窗口中的至少一个像素点的填充像素点值,填充位于窗口外的至少一个整数像素点位置;使用访问整数像素点位置值以及填充像素点值执行模板匹配或双向匹配和/或预测值生成。
下面提供本发明的其它实施例。应注意,以下部分中使用的编号并不一定需要遵循前面部分中使用的编号。
实施例1:一种用于将视频图像的预测块编码到码流(171)中的编码装置,其中,所述编码装置包括:
处理电路(600),用于:
通过以下方式确定预测块(165)的运动矢量:
获取至少一个初始运动矢量;
根据候选运动矢量的搜索空间,确定所述初始运动矢量的修正值,从而获取修正运动矢量,其中,所述搜索空间位于所述初始运动矢量给出的位置(810)上;
对所述预测块与预测值之间的差(105)进行编码,所述预测值由基于确定运动矢量的位置的预测块给出,并且用于生成包括所述编码差和所述初始运动矢量的码流(171);
根据使用插值滤波器插值滤波的所述运动矢量,确定所述预测值,其中,所述插值滤波:
-访问预定窗口中整数像素点位置的像素点值;
-用基于所述窗口中的至少一个像素点的替换值,替换位于所述窗口外的整数像素点位置的至少一个像素点值;
-使用所述访问整数位置像素点值以及所述替换值执行所述插值滤波。
实施例2:一种用于从码流(171)中解码划分成预测块的视频图像的解码装置,其中,所述解码装置包括处理电路,用于:
从所述码流中解析初始运动矢量以及编码差,所述编码差是预测块与修正运动矢量指定的位置的预测块给出的预测值之间的编码差;
通过以下方式确定预测块的运动矢量:
获取至少一个初始运动矢量;
根据候选运动矢量的搜索空间,确定所述初始运动矢量的修正值,从而获取修正运动矢量,其中,所述搜索空间位于所述初始运动矢量给出的位置(810)上;
根据所述解析得到的编码差和所述预测值之和,重构所述预测块,所述预测值由用于确定运动矢量的所述处理电路(600)确定的所述修正运动矢量指定的所述位置的所述预测块给出;
其中,所述处理电路还用于根据使用插值滤波器插值的所述修正运动矢量,确定所述预测值,所述插值:
-访问预定窗口中整数像素点位置的像素点值;
-用基于所述窗口中的至少一个像素点的替换值,替换位于所述窗口外的整数像素点位置的至少一个像素点值;
-使用所述访问整数像素点位置值以及所述替换值执行所述插值。
实施例3:根据实施例1或2中任一项所述的装置,其中,通过将对应的访问整数像素点位置的值相对于所述插值滤波器的轴对称的方式确定所述替换值。
实施例4:根据实施例1至3中任一项所述的装置,其中,所述插值滤波器为一维滤波器或可分离二维滤波器。
实施例5:根据实施例1至4中任一项所述的装置,其中,所述窗口由可访问的所有整数像素点位置组成,整数像素点位置由所述初始运动矢量指定的位置给出并用于获取所述预测值。
实施例6:根据实施例1至5中任一项所述的装置,其中,所述窗口由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:
-尺寸为位于初始运动矢量位置上的预测块尺寸的块,
-所述初始运动矢量位置;
-用于确定所述预测值的所述插值滤波器的垂直长度和水平长度。
实施例7:根据实施例1、2或4至6中任一项所述的装置,其中,确定所述替换值等于最接近访问整数像素点位置的值。
实施例8:根据实施例1至7中任一项所述的装置,其中,所述待替换的像素点值的数量取决于所述初始运动矢量和所述修正运动矢量之间的差。
实施例9:根据上述实施例中任一项所述的装置,其中,所述处理电路(600)用于通过使用模板进行模板匹配或双向匹配确定所述初始运动矢量的所述修正值,其中
-所述模板匹配或双向匹配:
ο访问另一预定窗口(1120)中的整数像素点位置的像素点值,所述另一预定窗口(1120)包括所述搜索空间和进行所述模板匹配或双向匹配时可访问的其它整数像素点位置,
ο用基于所述另一窗口中的至少一个像素点的替换值,替换位于所述另一窗口外的整数像素点位置的至少一个像素点值(1030),
ο使用所述访问整数像素点位置值以及所述替换值执行所述模板匹配或双向匹配。
实施例10:根据实施例9所述的装置,其中,
所述搜索空间包括至少一个分数像素点位置(1、2、6),其值通过使用预定义抽头尺寸的滤波器进行插值滤波来获取;
所述插值滤波使用所述访问整数像素点位置值和所述至少一个替换值,获取所述至少一个分数像素点位置值。
实施例11:根据实施例10所述的装置,其中,通过将所述对应的访问整数像素点位置的值相对于所述滤波器的轴对称的方式,确定所述模板匹配或双向匹配中使用的所述替换值。
实施例12:根据实施例9或10所述的装置,其中,确定所述模板匹配或双向匹配中使用的所述替换值等于最接近所述访问整数像素点位置的值。
实施例13:根据实施例9至12中任一项所述的装置,其中,所述另一预定窗口(1120)由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:
-所述搜索空间;
-尺寸为位于初始运动矢量位置上的预测块尺寸的块,
-初始运动矢量位置。
实施例14:根据实施例9至13中任一项所述的装置,其中,所述另一预定窗口(1120)与所述窗口相同。
实施例15:根据实施例1至14中任一项所述的装置,其中,所述修正值由双向匹配确定,所述处理电路用于获取至少两个初始运动矢量,所述至少两个初始运动矢量指向不同参考图像(Ref0、Ref1)中位置并组成初始运动矢量对(Pair_0、Pair_1……Pair_N)。
实施例16:根据实施例1至14中任一项所述的装置,其中,所述修正值由模板匹配确定,所述处理电路还用于:
获取所述预测块的模板;
通过在所述搜索空间中使用所述模板进行模板匹配,确定所述初始运动矢量的所述修正值。
实施例17:一种用于将划分成预测块的视频图像编码到码流的编码方法,其中,所述编码方法包括:
确定预测块的运动矢量,包括以下步骤:
获取(1310、1410)至少一个初始运动矢量;
根据候选运动矢量的搜索空间,确定(1320、1330、1340、1720、2115、2120、2130、2140、2150、2160)所述初始运动矢量的修正值,从而获取修正运动矢量,其中,所述搜索空间位于所述初始运动矢量给出的位置上;
对所述预测块与预测值之间的差进行编码,所述预测值由基于确定运动矢量的位置的预测块给出并且用于生成包括所述编码差和所述初始运动矢量的码流;
根据使用插值滤波器插值滤波的所述运动矢量,确定(1780)所述预测值,其中,所述插值滤波:
-访问预定窗口中整数像素点位置的像素点值,
-用基于所述窗口中的至少一个像素点的替换值,替换位于所述窗口外的整数像素点位置的至少一个像素点值,
-使用所述访问整数位置像素点值以及所述替换值执行所述插值滤波。
实施例18:一种用于从码流中解码划分成预测块的视频图像的解码方法,其中,所述解码包括以下步骤:
从所述码流中解析初始运动矢量和编码差,所述编码差是预测块与修正运动矢量指定的位置的预测块给出的预测值之间的编码差;
确定预测块的运动矢量,包括以下步骤:
获取(1310、1410)至少一个初始运动矢量;
根据候选运动矢量的搜索空间,确定(1320、1330、1340、1720、2115、2120、2130、2140、2150、2160)所述初始运动矢量的修正值,从而获取修正运动矢量,其中,所述搜索空间位于所述初始运动矢量给出的位置上;
根据所述解析差和所述预测值之和,重构所述预测块,所述预测值由确定运动矢量的步骤确定的所述修正运动矢量指定的所述位置的所述预测块给出;
根据使用插值滤波器插值的所述修正运动矢量,确定(1780)所述预测值,其中,所述插值
-访问预定窗口中整数像素点位置的像素点值;
-用基于所述窗口中的至少一个像素点的替换值,替换位于所述窗口外的整数像素点位置的至少一个像素点值;
-使用所述访问整数位置像素点值以及所述替换值执行所述插值。
实施例19:根据实施例17或18中任一项所述的方法,其中,通过将对应的访问整数像素点位置的值相对于所述插值滤波器的轴对称的方式确定所述替换值。
实施例20:根据实施例17至19中任一项所述的方法,其中,所述插值滤波器为一维滤波器或可分离二维滤波器。
实施例21:根据实施例17至20中任一项所述的方法,其中,所述窗口由可访问的所有整数像素点位置组成,整数像素点位置由所述初始运动矢量指定的位置给出并用于获取所述预测值。
实施例22:根据实施例17至21中任一项所述的方法,其中,所述窗口由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:
-尺寸为位于初始运动矢量位置上的预测块尺寸的块,
-所述初始运动矢量位置;
-用于确定所述预测值的所述插值滤波器的垂直长度和水平长度。
实施例23:根据实施例17、18或20至22中任一项所述的方法,其中,确定所述替换值等于最接近访问整数像素点位置的值。
实施例24:根据实施例17至23中任一项所述的方法,其中,所述待替换的像素点值的数量取决于所述初始运动矢量和所述修正运动矢量之间的差。
实施例25:根据实施例17至24中任一项所述的方法,其中,所述获取修正值的步骤(1320、1330、1340、1720、2115、2120、2130、2140、2150、2160)通过使用模板进行模板匹配或双向匹配确定所述初始运动矢量的所述修正值,其中
-所述模板匹配或双向匹配:
ο访问另一预定窗口中的整数像素点位置的像素点值,所述另一预定窗口包括所述搜索空间和进行所述模板匹配或双向匹配时可访问的其它整数像素点位置,
ο用基于所述另一窗口中的至少一个像素点的替换值,替换(1440)位于所述另一窗口外的整数像素点位置的至少一个像素点值,
ο使用(1450)所述访问整数像素点位置值以及所述替换值执行所述模板匹配或双向匹配。
实施例26:根据实施例25所述的方法,其中,
所述搜索空间包括至少一个分数像素点位置,其值通过使用预定义抽头尺寸的滤波器进行插值滤波来获取;
所述插值滤波使用所述访问整数像素点位置值和所述至少一个替换值,获取所述至少一个分数像素点位置值。
实施例27:根据实施例26所述的方法,其中,通过将所述对应的访问整数像素点位置的值相对于所述滤波器的轴对称的方式确定所述模板匹配或双向匹配中使用的所述替换值。
实施例28:根据实施例26或27所述的方法,其中,确定所述模板匹配或双向匹配中使用的所述替换值等于最接近所述访问整数像素点位置的值。
实施例29:根据实施例25至28中任一项所述的方法,其中,所述另一预定窗口由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:
-所述搜索空间;
-尺寸为位于初始运动矢量位置上的预测块尺寸的块,
-初始运动矢量位置。
实施例30:根据实施例25至29中任一项所述的方法,其中,所述另一预定窗口与所述窗口相同。
实施例31:根据实施例17至30中任一项所述的方法,其特征在于,所述修正值由双向匹配确定,所述获取步骤获取至少两个初始运动矢量,所述至少两个初始运动矢量指向不同参考图像中位置并组成初始运动矢量对。
实施例32:根据实施例17至31中任一项所述的方法,其特征在于,所述修正值由模板匹配确定,所述确定运动矢量的步骤还包括:
获取(1330、2130)所述预测块的模板;
通过在所述搜索空间中使用所述模板进行模板匹配来确定(1340、2140)所述初始运动矢量的所述修正值。
实施例33:一种存储指令的计算机可读介质,其中,所述指令在处理器上执行时使得所述处理器执行根据实施例17至32中任一项所述的方法。

Claims (41)

1.一种用于确定用于对视频图像中的块进行编码的预测值的编码装置,其特征在于,所述编码装置包括:
处理电路(600),用于:
获取所述块的初始运动矢量;
根据所述初始运动矢量,获取所述块的修正运动矢量;
根据所述修正运动矢量,确定所述块的预测值;
其中,所述处理电路用于:根据所述修正运动矢量,使用插值滤波器插值,确定所述预测值;使用位于窗口中的整数像素点位置的至少一个像素点值和位于所述窗口外的整数像素点位置的填充像素点值进行所述插值滤波,所述填充像素点值是基于所述窗口中的像素点的至少一个像素点值。
2.一种用于确定用于对视频图像中的块进行解码的预测值的解码装置,其特征在于,所述解码装置包括处理电路,用于:
获取所述块的初始运动矢量;
根据所述初始运动矢量,获取所述块的修正运动矢量;
根据所述修正运动矢量,确定所述块的预测值;
其中,所述处理电路用于:根据所述修正运动矢量,使用插值滤波器插值,确定所述预测值;使用位于窗口中的整数像素点位置的至少一个像素点值和位于所述窗口外的整数像素点位置的填充像素点值进行所述插值滤波,所述填充像素点值是基于所述窗口中的像素点的至少一个像素点值。
3.根据权利要求1或2所述的装置,其特征在于,所述处理电路(600)用于:根据候选运动矢量的搜索空间,确定所述初始运动矢量的修正值;根据所述初始运动矢量和所述修正值,确定所述修正运动矢量。
4.根据权利要求3所述的装置,其特征在于,所述搜索空间位于所述初始运动矢量定义的位置上。
5.根据上述权利要求中任一项所述的装置,其特征在于,所述处理电路(600)用于获取所述块与所述预测值之间的差。
6.根据权利要求5所述的装置,其特征在于,所述处理电路(600)还用于根据所述预测值和所述块与所述预测值之间的差,重构所述块。
7.根据上述权利要求中任一项所述的装置,其特征在于,通过将对应的访问整数像素点位置的值相对于所述插值滤波器的轴对称的方式确定所述填充像素点值。
8.根据上述权利要求中任一项所述的装置,其特征在于,所述插值滤波器为一维滤波器或可分离二维滤波器。
9.根据上述权利要求中任一项所述的装置,其特征在于,所述窗口由获取所述初始运动矢量指定的位置的可访问的所有整数像素点位置组成,所述整数像素点位置用于获取所述预测值。
10.根据上述权利要求中任一项所述的装置,其特征在于,所述窗口由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:
-尺寸为位于所述初始运动矢量位置上的块尺寸的块;
-所述初始运动矢量位置;
-用于确定所述预测值的所述插值滤波器的垂直长度和水平长度。
11.根据权利要求1至6或8至10中任一项所述的装置,其特征在于,确定所述窗口外的所述整数像素点位置的所述填充像素点值等于位于所述窗口中的至少一个已使用的整数像素点位置的像素点值,所述像素点值最接近位于所述窗口外的所述整数像素点位置。
12.根据权利要求1至11中任一项所述的装置,其特征在于,所述待填充的像素点值的数量取决于所述初始运动矢量和所述修正运动矢量之间的差。
13.根据上述权利要求中任一项所述的装置,其特征在于,所述处理电路(600)用于通过使用模板进行模板匹配或双向匹配确定所述初始运动矢量的所述修正值,其中
-所述模板匹配或双向匹配:
o访问另一窗口(1120)中的整数像素点位置的像素点值,所述另一窗口(1120)包括所述搜索空间和进行所述模板匹配或双向匹配时可访问的其它整数像素点位置;
o使用基于所述另一窗口中的至少一个像素点的填充像素点值,填充位于所述另一窗口外的整数像素点位置的至少一个像素点值(1030);
o使用所述访问整数像素点位置值以及所述填充像素点值执行所述模板匹配或双向匹配。
14.根据权利要求13所述的装置,其特征在于,
所述搜索空间包括至少一个分数像素点位置(1、2、6),其值通过使用预定义抽头尺寸的滤波器进行插值滤波来获取;
所述插值滤波使用所述访问整数像素点位置值和所述至少一个填充像素点值,获取所述至少一个分数像素点位置值。
15.根据权利要求14所述的装置,其特征在于,通过将所述对应的访问整数像素点位置的值相对于所述滤波器的轴对称的方式,确定所述模板匹配或双向匹配中使用的所述填充像素点值。
16.根据权利要求13或14所述的装置,其特征在于,所述模板匹配或双向匹配中使用的所述填充像素点值,被确定为等于最接近所述访问整数像素点位置的值。
17.根据权利要求13至16中任一项所述的装置,其特征在于,所述另一窗口(1120)由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:
-所述搜索空间;
-尺寸为位于所述初始运动矢量位置上的块尺寸的块;
-初始运动矢量位置。
18.根据权利要求13至17中任一项所述的装置,其特征在于,所述另一窗口(1120)与所述窗口相同。
19.根据权利要求1至18中任一项所述的装置,其特征在于,所述修正值由双向匹配确定,所述处理电路用于获取指向不同参考图像(Ref0、Ref1)中的位置,并组成初始运动矢量对(Pair_0、Pair_1……Pair_N)的至少两个初始运动矢量。
20.根据权利要求1至19中任一项所述的装置,其特征在于,所述修正值由模板匹配确定,所述处理电路还用于:
获取所述块的模板;
通过在所述搜索空间中使用所述模板进行模板匹配,确定所述初始运动矢量的所述修正值。
21.一种用于确定用于对视频图像中的块进行编码的预测值的编码方法,其特征在于,所述编码方法包括以下步骤:
获取(1310、1410)所述块的初始运动矢量;
根据所述初始运动矢量,获取(1320、1330、1340、1720、2115、2120、2130、2140、2150、2160)所述块的修正运动矢量;
根据所述修正运动矢量,确定(1780)所述块的预测值,其中,所述确定步骤(1780)根据所述修正运动矢量,使用插值滤波器插值,确定所述预测值;使用位于窗口中的整数像素点位置的至少一个像素点值和位于所述窗口外的整数像素点位置的填充像素点值进行所述插值滤波,所述填充像素点值是基于所述窗口中的像素点的至少一个像素点值。
22.一种用于确定用于对视频图像中的块进行解码的预测值的解码方法,其特征在于,所述解码方法包括以下步骤:
获取所述块的初始运动矢量;
根据所述初始运动矢量,获取所述块的修正运动矢量;
根据所述修正运动矢量,使用插值滤波器插值,确定(1780)所述预测值;使用位于窗口中的整数像素点位置的至少一个像素点值和位于所述窗口外的整数像素点位置的填充像素点值进行所述插值滤波,所述填充像素点值是基于所述窗口中的像素点的至少一个像素点值。
23.根据权利要求21或22所述的方法,其特征在于,还包括根据候选运动矢量的搜索空间,确定所述初始运动矢量的修正值的步骤,其中,根据所述初始运动矢量和所述修正值,确定所述修正运动矢量。
24.根据权利要求23所述的方法,其特征在于,所述搜索空间位于所述初始运动矢量定义的位置上。
25.根据权利要求21至24中任一项所述的方法,其特征在于,还包括获取所述块与所述预测值之间的差的步骤。
26.根据权利要求25所述的方法,其特征在于,还包括根据所述预测值和所述块与所述预测值之间的差,重构所述块的步骤。
27.根据权利要求21至26中任一项所述的方法,其特征在于,通过将对应的访问整数像素点位置的值相对于所述插值滤波器的轴对称的方式确定所述填充像素点值。
28.根据权利要求21至27中任一项所述的方法,其特征在于,所述插值滤波器为一维滤波器或可分离二维滤波器。
29.根据权利要求21至28中任一项所述的方法,其特征在于,所述窗口由获取所述初始运动矢量指定的位置的可访问的所有整数像素点位置组成,所述整数像素点位置用于获取所述预测值。
30.根据权利要求21至29中任一项所述的方法,其特征在于,所述窗口由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:
-尺寸为位于所述初始运动矢量位置上的块尺寸的块;
-所述初始运动矢量位置;
-用于确定所述预测值的所述插值滤波器的垂直长度和水平长度。
31.根据权利要求21至26或28至30中任一项所述的方法,其特征在于,确定所述窗口外的所述整数像素点位置的所述填充像素点值等于位于所述窗口中的至少一个已使用的整数像素点位置的像素点值,所述像素点值最接近位于所述窗口外的所述整数像素点位置。
32.根据权利要求21至31中任一项所述的方法,其特征在于,所述待填充的像素点值的数量取决于所述初始运动矢量和所述修正运动矢量之间的差。
33.根据权利要求21至32中任一项所述的方法,其特征在于,所述获取修正值的步骤(1320、1330、1340、1720、2115、2120、2130、2140、2150、2160)通过使用模板进行模板匹配或双向匹配确定所述初始运动矢量的所述修正值,其中
-所述模板匹配或双向匹配:
o访问另一窗口中的整数像素点位置的像素点值,所述另一窗口包括所述搜索空间和进行所述模板匹配或双向匹配时可访问的其它整数像素点位置;
o使用基于所述另一窗口中的至少一个像素点的填充像素点值,填充(1440)位于所述另一窗口外的整数像素点位置的至少一个像素点值;
o使用(1450)所述访问整数像素点位置值以及所述填充像素点值执行所述模板匹配或双向匹配。
34.根据权利要求33所述的方法,其特征在于,
所述搜索空间包括至少一个分数像素点位置,其值通过使用预定义抽头尺寸的滤波器进行插值滤波来获取;
所述插值滤波使用所述访问整数像素点位置值和所述至少一个填充像素点值,获取所述至少一个分数像素点位置值。
35.根据权利要求34所述的方法,其特征在于,通过将所述对应的访问整数像素点位置的值相对于所述滤波器的轴对称的方式确定所述模板匹配或双向匹配中使用的所述填充像素点值。
36.根据权利要求34或35所述的方法,其特征在于,所述模板匹配或双向匹配中使用的所述填充像素点值,被确定为等于最接近所述访问整数像素点位置的值。
37.根据权利要求33至36中任一项所述的方法,其特征在于,所述另一窗口由其相对于以下至少一项的垂直尺寸和/或水平尺寸定义:
-所述搜索空间;
-尺寸为位于所述初始运动矢量位置上的块尺寸的块;
-初始运动矢量位置。
38.根据权利要求33至37中任一项所述的方法,其特征在于,所述另一窗口与所述窗口相同。
39.根据权利要求21至38中任一项所述的方法,其特征在于,所述修正值由双向匹配确定,所述获取步骤获取指向不同参考图像中的位置并组成初始运动矢量对的至少两个初始运动矢量。
40.根据权利要求21至39中任一项所述的方法,其特征在于,所述修正值由模板匹配确定,所述确定运动矢量的步骤还包括:
获取(1330、2130)所述块的模板;
通过在所述搜索空间中使用所述模板进行模板匹配来确定(1340、2140)所述初始运动矢量的所述修正值。
41.一种存储指令的计算机可读介质,其特征在于,所述指令在处理器上执行时,使得所述处理器执行根据权利要求23至40中任一项所述的方法。
CN201980038772.5A 2018-06-28 2019-06-28 用于运动矢量修正和运动补偿的存储器访问窗口和填充 Pending CN112292862A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862691594P 2018-06-28 2018-06-28
US201862691582P 2018-06-28 2018-06-28
US62/691,582 2018-06-28
US62/691,594 2018-06-28
PCT/CN2019/093465 WO2020001574A1 (en) 2018-06-28 2019-06-28 Memory access window and padding for motion vector refinement and motion compensation

Publications (1)

Publication Number Publication Date
CN112292862A true CN112292862A (zh) 2021-01-29

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 After (1)

Application Number Title Priority Date Filing Date
CN201980020898.XA Active CN111886870B (zh) 2018-06-28 2019-06-28 使用整数像素分辨率的运动矢量修正搜索

Country Status (10)

Country Link
US (3) US11363292B2 (zh)
EP (2) EP3794827A4 (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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114154645A (zh) * 2021-12-03 2022-03-08 中国科学院空间应用工程与技术中心 跨中心图像联合学习方法、系统、存储介质及电子设备

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111201795B (zh) * 2017-10-09 2022-07-26 华为技术有限公司 存储访问窗口和用于运动矢量修正的填充
CN112292862A (zh) * 2018-06-28 2021-01-29 华为技术有限公司 用于运动矢量修正和运动补偿的存储器访问窗口和填充
JP7319365B2 (ja) 2018-11-22 2023-08-01 北京字節跳動網絡技術有限公司 サブブロックに基づくインター予測のための調整方法
US20220150511A1 (en) * 2018-12-21 2022-05-12 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium having bitstream stored therein
US20220182634A1 (en) * 2019-03-11 2022-06-09 Vid Scale, Inc. Methods and systems for post-reconstruction filtering
WO2020262988A1 (ko) * 2019-06-25 2020-12-30 엘지전자 주식회사 영상 코딩 시스템에서 무손실 코딩을 적용하는 영상 디코딩 방법 및 그 장치
CN114208184A (zh) * 2019-08-13 2022-03-18 北京字节跳动网络技术有限公司 基于子块的帧间预测中的运动精度
CN114424553A (zh) 2019-09-22 2022-04-29 北京字节跳动网络技术有限公司 基于子块的帧间预测的缩放方法
CN117528069A (zh) * 2020-05-22 2024-02-06 腾讯科技(深圳)有限公司 位移矢量预测方法、装置及设备
KR20230162634A (ko) * 2021-03-30 2023-11-28 인터디지털 씨이 페이튼트 홀딩스, 에스에이에스 비디오 인코딩 및 디코딩을 위한 템플릿 매칭 예측
CN118202656A (zh) * 2021-11-30 2024-06-14 北京达佳互联信息技术有限公司 视频编解码中考虑边界外条件的运动补偿
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
EP2526697A1 (en) * 2010-01-19 2012-11-28 Thomson Licensing Methods and apparatus for reduced complexity template matching prediction for video encoding and decoding
US9749657B2 (en) * 2011-01-21 2017-08-29 Sharp Kabushiki Kaisha Buffer compression for motion vector competition
CN102611887B (zh) * 2011-01-21 2015-08-05 华为技术有限公司 非整像素位置运动矢量的坐标值取整方法和装置
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
US10958927B2 (en) * 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination 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
WO2017084071A1 (en) * 2015-11-19 2017-05-26 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
WO2019072372A1 (en) 2017-10-09 2019-04-18 Huawei Technologies Co., Ltd. MOTION VECTOR REFINEMENT OF A MOTION VECTOR POINTING TO A FRACTIONAL SAMPLE POSITION
CN111201795B (zh) 2017-10-09 2022-07-26 华为技术有限公司 存储访问窗口和用于运动矢量修正的填充
CN112292862A (zh) * 2018-06-28 2021-01-29 华为技术有限公司 用于运动矢量修正和运动补偿的存储器访问窗口和填充

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114154645A (zh) * 2021-12-03 2022-03-08 中国科学院空间应用工程与技术中心 跨中心图像联合学习方法、系统、存储介质及电子设备
CN114154645B (zh) * 2021-12-03 2022-05-17 中国科学院空间应用工程与技术中心 跨中心图像联合学习方法、系统、存储介质及电子设备

Also Published As

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

Similar Documents

Publication Publication Date Title
US11363292B2 (en) Memory access window and padding for motion vector refinement and motion compensation
CN111201795B (zh) 存储访问窗口和用于运动矢量修正的填充
JP7279140B2 (ja) 動きベクトルの改善のための制限されたメモリアクセスウィンドウ
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