解码端运动矢量导出的容错与并行处理的制作方法

文档序号:20013101发布日期:2020-02-22 04:43阅读:156来源:国知局
解码端运动矢量导出的容错与并行处理的制作方法

本发明涉及解码端运动矢量的导出,尤其涉及可用于图像编码和解码的运动矢量导出的方法和装置。



背景技术:

现有的混合视频编解码器采用预测编码。视频序列的图像被细分为像素块,然后对这些块进行编码。此处不是指对块的逐个像素进行编码,而是指基于所述块的空域或时域,使用已经编码的像素预测整个块。编码器不仅处理所述块与其预测之间的差异。进一步的处理通常包括将块像素转换为变换域中的系数,然后可以通过量化进一步压缩所述系数,并通过熵编码进一步压缩以形成比特流。比特流还包括解码器用于进行视频编解码的任何信令信息。例如,所述信令可以包括关于编码器设置的设置,例如输入图像的大小、帧率、量化步骤指示、应用于图像块的预测等。

时间预测利用视频的图像(也称为帧)之间的时间相关性。时间预测也称为帧间预测,因为它是基于不同视频帧之间(帧间)的依赖关系的预测。因此,从(一个或)多个先前编码的图像(也称为参考图像)预测正在编码的块(也称为当前块)。参考图像不一定是所述当前图像之前的图像,其中所述当前块以视频序列的显示顺序位于所述当前图像。编码器可以采用与显示顺序不同的编码顺序对图像进行编码。作为所述当前块的预测,可以确定参考图像中的同位块,所述同位块是指位于所述参考图像中与所述当前图像中的所述当前块相同位置上的块。这种预测方式对于无运动图像区域(不从一个图像向另一个图像移动的图像区域)具有很高的准确性。

为了获得考虑到运动的预测器,即运动补偿预测器,通常在确定所述当前块的预测时采用运动估计。因此,所述当前块基于所述参考图像中的块进行预测,所述块位于由基于运动矢量与所述同位块的位置确定的距离。为了使解码器能够确定所述当前块的相同预测,可以在比特流中发信令通知所述运动矢量。为了进一步减少由发信令通知每个块的运动矢量产生的信令开销,可以估计运动矢量本身。可以基于相邻块在空间和/或时域中的运动矢量估计运动矢量。

可以基于一个参考图像计算所述当前块的预测,或者通过对从两个或多个参考图像获得的预测进行加权来计算。所述参考图像可以是相邻图像,即,由于相邻图像最可能类似于所述当前图像,所以相邻图像是以显示顺序,紧接在所述当前图像之前和/或紧接在所述当前图像之后的图像。然而,通常所述参考图像也可以是以显示顺序位于所述当前图像之前或之后的任何其它图像,以及比特流(解码顺序)中的所述当前图像之前的任何其它图像。这种方式是有利的,例如在视频内容中存在遮挡和/或非线性移动的情况。因此,也可以在比特流中发信令通知所述参考图像。

帧间预测的特殊模式是双向预测,其中使用两个参考图像来生成当前块的预测。具体地,组合在相应的两个参考图像中确定的两个预测为所述当前块的预测信号。双向预测比单向预测可更精确地预测所述当前块,单项预测指的是仅使用单个参考图像进行预测。更精确的预测可缩小所述当前块的像素与预测之间的差异(也称为“残差”),从而更有效地进行编码,即通过压缩或得更短的比特流。

为了使运动估计更精确,可以通过在像素间内插样本来提高所述参考图像的分辨率。可以通过对最近像素进行加权平均来执行分数像素内插。在半像素分辨率的情况下,例如通常使用双线性插值。其它分数像素被计算为最近像素的平均值。依据各个最近像素与被预测像素之间的距离的倒数加权计算所述最近像素。

运动矢量估计涉及复杂的计算,即计算当前块和参考图像中的候选运动矢量所指向的对应预测块之间的相似度。为了简化计算,通常通过将所述候选运动矢量限制在特定搜索空间,来减少候选运动矢量的数量。例如,所述搜索空间可以由像素的数量和/或位置定义,所述像素位于参考图像中与当前图像中当前块的位置相对应的位置周围。此外,候选运动矢量可以通过由候选运动矢量列表进行定义,相邻块的运动矢量形成所述候选运动矢量。

通常至少部分地在编码端确定运动矢量,并在编码比特流内发信令给解码器。然而,也可以在解码端导出运动矢量。在这种情况下,所述当前块在解码端不可用,并且不能用于计算与参考图像中的候选运动矢量所指向的块的相似性。因此,代替当前块,使用由已经解码的块的像素解释的模板。例如,可以使用与当前块相邻的已经解码的像素。这种运动估计提供了减少信令的优点:在编码器和解码器以相同的方式导出运动矢量,故不需要信令。另一方面,这种运动估计的精度可能较低。

为兼顾精度和信令开销,运动矢量估计可以分为两个步骤:运动矢量导出和运动矢量细化。例如,运动矢量导出可以包括从候选项列表中选择运动矢量。例如,这样选择的运动矢量可以通过搜索空间内的搜索进一步细化。搜索空间中的搜索基于每个候选运动矢量的计算代价函数,即候选运动矢量所指向的块的每个候选位置。

文献jvet-d0029:解码端-基于双边模板匹配的运动矢量细化,x.chen、j.an、j.zheng(文献见:http://phenix.it-sudparis.eu/jvet/site)描述了运动矢量细化,即通过在围绕第一运动矢量的搜索空间中具有半像素分辨率的搜索,找到并进一步细化整数像素分辨率的第一运动矢量。



技术实现要素:

本发明的目的在于改善处理单元并行解码和/或提高解码的容错。

为了实现此目的,通过模板匹配导出的当前块的相邻块的运动矢量不用于预测当前块的运动矢量。

换句话说,通过参考图像导出的相邻块的运动矢量不用于预测当前块的运动矢量。

这可以是使用模板匹配的导出和替换。在以下实施例中,可参考“模板匹配”的应用。但是,通常也可以考虑使用参考图像的任何方法。

根据本发明的一方面,提供了一种用于确定当前块预测的装置,用于重构所述当前块。所述装置包括:预测单元,用于:检测是否已经通过模板匹配确定所述当前块相邻块的运动矢量;如果检测结果为否,则根据所述相邻块导出所述当前块预测;如果检测结果为是,则不根据所述相邻块导出所述当前块预测。

对于重构当前块,所述预测单元包括:运动矢量候选列表确定单元和运动矢量确定单元。所述运动矢量候选列表确定单元用于通过以下步骤形成所述当前块的候选运动矢量列表:检测是否已经由所述模板匹配确定相邻块的运动矢量;如果检测结果为否,则将所述相邻块的所述运动矢量作为候选添加到所述列表中;如果检测结果为是,则不将所述相邻块的所述运动矢量作为候选添加到所述列表中。所述运动矢量确定单元,用于:从所述列表中选择运动矢量的估计值,并根据所述估计值确定所述当前块的所述运动矢量。

例如,所述装置的运动矢量候选列表确定单元用于:如果检测结果为是,则将替换运动矢量添加到所述列表以作为候选。

根据一示例,所述替换运动矢量与当前块相邻且不同于所述当前块的运动矢量。

所述装置还可包括运动矢量细化单元,用于应用所选择的运动矢量估计值的细化;。所述运动矢量候选列表确定单元用于:如果检测结果为是,则将所述相邻块的所述运动矢量的估计值添加到所述列表,其中,所述相邻块的所述运动矢量的估计值是在应用所述细化之前通过所述模板匹配获得的。所述运动矢量确定单元还用于:根据所述细化后所述相邻块的所述运动矢量的所述估计值,确定所述相邻块的所述运动矢量。

所述运动矢量候选列表确定单元用于:在所述运动矢量细化单元对所述相邻块应用细化的同时,形成所述当前块的所述列表。

例如,所述运动矢量候选列表确定单元用于:如果检测结果为是,且如果相邻块与当前块位于同一图像中,则将所述相邻块的所述运动矢量的估计值添加到所述列表,其中,所述相邻块的所述运动矢量的估计值是在应用所述细化之前通过所述模板匹配获得的;如果相邻块不位于与当前块相同的图像中,则在所述细化应用于所述相邻块之后,将所述相邻块的所述运动矢量添加到所述列表中。

或者,所述运动矢量候选列表确定单元还用于检测待添加到列表中的运动矢量是否已经添加到列表中;如果检测结果为是,则不添加到列表中;如果当所述列表包括待处理的相邻块的运动矢量,且所述矢量的处理至少部分并行于所述当前块的处理时,不执行所述检测。

所述装置也用于确定当前块的帧间预测以重构所述当前块。这种情况下,所述预测单元包括:参考样本确定单元,用于确定所述当前块的参考样本集。所述参考样本确定单元包括:检测是否已经由所述模板匹配确定相邻块的运动矢量;如果检测结果为否,则将所述相邻块的一个或多个样本添加到所述参考样本集合中;如果检测结果为是,则不将所述相邻块的任何样本添加到所述参考样本集合中。所述预测单元还包括:帧内预测单元,用于根据来自所述参考样本集的样本提供所述当前块的预测。

根据一示例性实施例,为了重构当前块,所述预测单元用于检测位于相对于当前块的位置定义的预定矩形区域内的周围块的运动矢量是否已经由模板匹配确定。

根据本发明的一方面,提供了一种用于从比特流解码多个图像的视频解码器,包括:比特流解析器,用于解析包括控制信息的比特流;根据上述任一示例性实施例的装置;重构单元,用于基于所述当前块的预测重构所述当前块。

根据本发明的一方面,提供了一种用于将多个图像编码为比特流的视频编码器,包括:根据上述任一实施例和示例的装置;比特流形成器,用于将控制信息添加到所述比特流中;重构单元,用于:基于所述当前块的预测重构当前块,并将所述重构块存储在存储器中。

所述视频编码器或解码器可包括:标志,用于指示所述预测单元是否将检测相邻块的运动矢量是否已由所述模板匹配确定;和/或替换指示符,用于指示如果检测结果为是时如何确定所述当前块的预测。

例如,所述控制信息包括在序列参数集和/或片头中。

根据本发明的另一方面,提供了一种用于确定当前块的预测的方法,所述方法包括以下步骤:检测是否已经由所述模板匹配确定相邻块的运动矢量;如果检测结果为否,则根据所述相邻块导出所述当前块预测;如果检测结果为是,则不根据所述相邻块导出所述当前块预测。

为重构当前块,所述方法还可包括以下步骤:检测当前块的相邻块的运动矢量是否已经通过模板匹配来确定的步骤:如果检测结果为否,则根据相邻块导出当前块的预测;如果检测结果为是,则不根据相邻块导出当前块的预测。

所述方法还可包括形成所述当前块的候选运动矢量列表的步骤,包括:检测是否已经由所述模板匹配确定相邻块的运动矢量;如果检测结果为否,则将所述相邻块的运动矢量作为候选添加到所述列表中;如果检测结果为是,则不将所述相邻块的运动矢量作为候选添加到所述列表中。此外,还可包括以下步骤:从所述列表中选择运动矢量的估计值,并根据所述估计值确定所述当前块的所述运动矢量。

形成候选运动矢量列表的步骤可包括:如果检测结果为是,则将替换运动矢量作为候选添加到所述列表中。例如,所述替换运动矢量为与所述当前块相邻且不同于所述相邻块的块的运动矢量。根据另一示例,所述替换运动矢量是一个与当前块的相邻块相邻,但与当前块不相邻的块的运动矢量。

本发明方法可包括以下步骤:应用所选择的运动矢量估计值的细化;如果检测结果为是,则将所述相邻块的所述运动矢量的估计值添加到所述列表,其中,所述相邻块的所述运动矢量的估计值是在应用所述细化之前通过所述模板匹配获得的;根据所述细化后所述相邻块的所述运动矢量的所述估计值,确定所述相邻块的所述运动矢量。

当运动矢量细化单元对相邻块进行细化时,可以形成当前块的列表。

根据一示例性实施例,使用参考图像(模板匹配)的相邻块用于确定运动矢量;如果检测结果为是,且如果相邻块与当前块位于同一图像中,则将所述相邻块的所述运动矢量的估计值添加到所述列表,其中,所述相邻块的所述运动矢量的估计值是在应用所述细化之前通过所述模板匹配获得的;如果相邻块不位于与当前块相同的图像中,则在所述细化应用于所述相邻块之后,将所述相邻块的所述运动矢量添加到所述列表中。

根据本发明方法的一种可替代方法,包括:检测待添加到列表中的运动矢量是否已经添加到列表中;如果检测结果为是,则不添加到列表中;如果所述列表包括待处理的相邻块的运动矢量,且所述矢量至少部分并行于所述当前块的处理时,不执行所述检测。

根据一实施例,当前块的预测单元包括确定所述当前块的参考样本集的帧间预测步骤和其它步骤,包括:检测是否已经由所述模板匹配确定相邻块的运动矢量;如果检测结果为否,则将所述相邻块的一个或多个样本添加到所述参考样本集合中;如果检测结果为是,则不将所述相邻块的任何样本添加到所述参考样本集合中。然后,当前块的帧内预测步骤包括用于根据来自所述参考样本集的样本提供所述当前块的预测。

本发明方法可包括检测是否已经由所述模板匹配确定相邻块的运动矢量,其中,所述相邻块位于预先确定的针对所述当前块位置定义的矩形区域。

此外,本发明提供了一种从比特流流中解码多个图像的方法,包括以下步骤:对包含控制信息的比特流进行解析;如上所述执行当前块的预测确定;基于当前块的预测重构当前块。

进一步地,本发明提供了一种用于将多个图像编码为比特流的方法,包括:如上所述的当前块预测确定;通过比特流形成器将控制信息添加到所述比特流中;基于所述当前块的预测重构当前块,并将所述重构块存储在存储器中。

所述控制信息包括:标志,用于指示所述预测单元是否将检测相邻块的运动矢量是否已由所述模板匹配确定;和/或替换指示符,用于指示如果检测结果为是时如何确定所述当前块的预测。

所述控制信息可包括在序列参数集和/或片头中。

此外,本发明提供了一种集成电路,所述集成电路包含上述装置。

此外,本发明提供了一种程序,所述程序存储在计算机可读介质中,所述程序在处理器上执行时,执行上述方法的步骤。

附图说明

下文将参考以下附图详细描述示例实施例:

图1是示出视频编码器的示例性结构的框图;

图2是示出视频解码器的示例性结构的框图;

图3是示出用于确定图像块的预测的装置的示例性结构的框图;

图4是可用于候选列表生成的当前块和示例性相邻块的示意图;

图5是示出如果应用运动矢量细化则解码处理和并行化可能性的示意图;

图6是示出根据实施例的帧间预测单元的框图;

图7是示出如果应用运动矢量细化则解码处理和并行化可能性的示意图;

图8是示出基于相邻块的运动矢量确定来限制运动矢量确定的方法的流程图;

图9是示出示例性当前块及其相邻块的示意图;

图10是示出示例性当前块及其相邻块(所述相邻块也具有一相邻块)的示意图;

图11是示出解码处理和应用并行化检测跳过的可能性的示意图;

图12是示出用于预测当前块的运动矢量的示例性当前块及其相邻块的示意图;

图13是示出示例性当前块及其用于当前块的帧内预测的相邻块的示意图;

图14是示出用于限制当前块的运动矢量确定的示例性区域的示意图;

图15是示出用于限制当前块的运动矢量确定的示例性区域的示意图;

图16是示出在接收视频序列时可能发生的错误的示意图;

图17是示出在接收视频序列时可能发生的错误的示意图。

具体实施方式

本发明涉及当前块的预测,尤其涉及帧间预测。它可以用于在视频的编码和解码过程中应用的运动估计。下面,示例性编码器和解码器可以使用本发明的搜索空间结构来实现运动估计,详见下文描述。

图1示出了编码器100,其包括用于接收视频流的帧或图像的输入块的输入端和用于生成编码视频比特流的输出端。本发明中的术语“帧”用作图像的同义词。然而,应注意,本发明也适用于在应用隔行的情况下的领域。通常,图像包括m×n个像素。这对应于图像样本,且可以包括一个或多个颜色分量。为了简单起见,下面涉及像素的描述指的是亮度样本。然而,应注意,本发明的运动矢量搜索可以应用于任何颜色分量,包括色度或诸如rgb的搜索空间的分量。另一方面,仅对一个分量执行运动矢量估计,并将确定的运动矢量应用于多个(或所有)分量,此举可能是有益的。

待编码的输入块不一定具有相同的尺寸。一个图像可以包括不同尺寸的块,且不同图像的块光栅也可以不同。

在一种示例性实现中,所述编码器100用于将预测、变换、量化和熵编码应用于视频流。所述变换、量化和熵编码分别由变换单元101、量化单元102和熵编码单元103执行,以生成所述编码的视频比特流作为输出。

所述视频流可以包括多个帧,且将每个帧划分为一定大小的块,其中,所述块是帧内编码块或帧间编码块。例如,视频流的第一帧的块由帧内预测单元109进行帧内编码。仅使用同一帧内的信息对帧内编码帧进行编码,从而可以对其进行独立解码,并且可以在比特流中提供用于随机访问的入口点。视频流的其它多个帧的多个块可由帧间预测单元110进行帧间编码:来自先前的编码帧(参考帧)的信息用于减少时间冗余,从而通过参考帧中的块预测出帧间编码帧的每个块。模式选择单元108用于选择帧的块是由帧内预测单元109还是由帧间预测单元110处理。所述块还控制帧间预测的参数。为了能够刷新图像信息,可以在帧间编码的帧内提供帧内编码的块。此外,仅包含帧内编码的块的帧内编码的帧,可以定期插入到视频序列中,以提供解码的入口点,即解码器可以开始解码,而不需要先前编码帧的信息的点。

所述帧内预测单元109为块预测单元。为了进行空间或时间预测,所述编码块还可以由逆量化单元104和逆变换单元105进行处理。在块重构之后,应用环路滤波单元106来进一步提高解码图像的质量。滤波后的块进而形成参考帧,然后存储在帧缓冲器107中。编码端的这种解码环路(解码器)提供了产生与解码端重构的参考图像相同的参考帧的优点。因此,编码端和解码端用对应的方式操作。这里的术语“重构”是指通过将预测块添加到解码的残差块,来获得重构块。

帧间预测单元110接收待帧间编码的当前帧的块或图像以及来自帧缓冲器107的一个或多个参考帧或图像用作输入。所述帧间预测单元110应用运动估计和运动补偿。运动估计用于基于某个代价函数得到运动矢量和参考帧。然后运动补偿根据参考帧的参考块到当前帧的平移(即运动矢量)来描述当前帧的当前块。帧间预测单元110输出当前块的预测块,其中,所述预测块将代价函数最小化。例如,代价函数可以是待编码的当前块与其预测块之间的差,即代价函数将残差块最小化。例如,基于计算候选参考图像中的当前块的所有像素(样本)与候选块之间的绝对差和(sumofabsolutedifference,简称sad)最小化残差块。然而,通常可以采用任何其它相似性度量,例如均方差(meansquareerror,简称mse)或结构相似性度量(structuralsimilaritymetric,简称ssim)。

然而,代价函数也可以是对这种编码引起的帧间编码块和/或失真进行编码所需的比特数。因此,速率-失真优化过程可以用于决定运动矢量选择和/或通常决定编码参数,例如是对块使用帧间预测还是帧内预测以及使用哪些设置。

所述帧内预测单元109接收当前帧或待帧内编码的图像的块以及来自当前帧的已重构区域的一个或几个参考样本作为输入。然后,帧内预测根据当前帧的参考样本的函数描述当前帧的当前块的像素。所述帧内预测单元109针对当前块输出预测块,其中,所述预测块最好将待编码的当前块与其预测块之间的差值最小化,即最小化残差块。例如,可以基于速率-失真优化过程最小化所述残差块。具体地,获得预测块作为参考样本的方向插值。该方向可以通过速率-失真优化和/或通过计算如上所述关于帧间预测的相似性度量来确定。

然后,由变换单元101对当前块与其预测(即残差块)之间的差值进行变换。由量化单元102对变换系数进行量化,熵编码单元103对变换系数进行熵编码。如此生成的编码视频比特流包括帧内编码块和帧间编码块以及相应的信令(例如模式指示、运动矢量指示和/或帧内预测方向)。变换单元101可以应用诸如傅里叶变换或离散余弦变换(discretecosinetransformation,简称dft)的线性变换。这种变换到空间频域具有以下优点:所得到的系数通常在较低频率中具有较高的值。因此,在有效系数扫描(例如zig-zag扫描)和量化之后,所得到的值序列通常在开始时具有一些较大的值,并且以零的运行结束。这使得能够进一步有效的编码。量化单元102通过降低系数值的分辨率来执行实际的有损压缩。然后,熵编码单元103将二进制码字赋值给系数值以产生比特流。熵编码法也对信令信息(图1中未示出)编码。

图2示出了视频解码器200。所述视频解码器200具体包括参考图像缓冲器207和帧内预测单元209。所述帧内预测单元209为块预测单元。所述参考图像缓冲器207用于存储从所述编码视频比特流中重构的至少一个参考帧,所述参考帧与所述编码视频比特流的当前帧(当前解码帧)不同。所述帧内预测单元209用于生成预测块,所述预测块为待解码块的估计值。所述帧内预测单元209用于基于从所述参考图像缓存207中获得的参考样本生成该预测。

所述解码器200用于解码所述视频编码器100生成的编码视频比特流。优选地,所述解码器200和所述编码器100均为待编码/解码的块分别生成相同的预测。所述参考图像缓存器207和所述帧内预测单元209的特征与图1中所述参考图像缓存器107和所述帧内预测单元109的特征类似。

所述视频解码器200包括所述视频编码器100中的其它单元,例如分别对应于逆量化单元104的逆量化单元204、对应于逆变换单元105的逆变换单元205,和对应于所述视频编码器100的环路滤波单元106的环路滤波单元206。

熵解码单元203用于对所述接收到的编码视频比特流进行解码,以相应地获得量化的残差变换系数和信令信息。将量化的残差变换系数馈送到所述逆量化单元204和所述逆变换单元205以产生残差块。将残差块添加到预测块,且将所添加的残差块馈送到所述环路滤波单元206以获得解码的视频。所述解码视频的帧可以存储在所述参考图像缓冲器207中,并作为帧间预测的参考帧。

通常,图1和图2所示的帧内预测单元109和209可以使用已编码区域的参考样本来生成需要编码或解码的块的预测信号。

所述熵解码单元203接收编码比特流作为其输入。通常,首先解析比特流,即从比特流中提取信令参数和残差。通常,比特流的语法和语义由标准定义,使得编码器和解码器可以实现互操作。如上述背景部分所述,编码比特流不仅包括预测残差。在运动补偿预测的情况下,也在比特流中编码运动矢量指示并在解码端从比特流解析。可以通过提供运动矢量的参考图像和通过运动矢量坐标给出运动矢量指示。为了有效地对参考图像进行编码,h.265编解码器(itu-t,h265系列h:视听和多媒体系统:高效视频编码)把参考图像列表提供给列表中相应参考帧。然后,通过把相应的分配列表索引添加到其中,在比特流中发送所述参考帧。可以在标准中定义这样的列表,或者在视频的开始处或在帧的集合处发送所述列表。应注意,在h.265中定义了两个参考图像列表,称为l0和l1。然后,通过指示列表(l0或l1)并指示与期望的参考图像相关联的列表中的索引,在比特流中发送所述参考图像。提供两个或多个列表可更好地压缩。例如,l0可用于单向帧间预测片和双向帧间预测片,而l1仅可用于双向帧间预测片。然而,通常本发明不限于l0和l1列表的任何内容。

运动矢量可以由参考图像中的坐标直接发送。或者,根据h.265所述,可以构造候选运动矢量的列表,并且可以发送与特定运动矢量相关联的列表中的索引。

当前块的运动矢量通常与当前图像或较早编码的图像中相邻块的运动矢量相关。这是因为相邻块可能对应于具有相似运动的相同运动对象,并且对象的运动不大可能随时间突然变化。因此,使用相邻块中的运动矢量作为预测器减小了所述发送的运动矢量差。mvp通常从空间相邻块或从共处图像中的时间相邻块的已编码运动矢量导出。在h.264/avc中,这通过对三个空间相邻运动矢量做分量中值实现。使用该方法时,不需要发送预测器。仅在h.264/avc的时间直接模式中,考虑来自共处图像的时间mvp。h.264/avc直接模式也用于导出除运动矢量以外的其它运动数据。因此,它们更多地与hevc中的块合并概念相关。在hevc中,隐式导出mvp的方法被称为运动矢量竞争的技术所取代,该技术显式地从mvp列表中发送mvp用于运动矢量导出。hevc中的可变编码四叉树块结构可以使一个块具有多个相邻块,运动矢量是潜在的mvp候选。以左相邻块为例,在最坏的情况下,当64x64亮度编码数块不被进一步分割并且左亮度预测块被分割到最大深度时,64x64亮度预测块可以具有1684个向左的亮度预测块。

已引入高级运动矢量预测(advancedmotionvectorprediction,简称amvp)来修改运动矢量竞争,以阐述这种灵活的块结构。在hevc的开发过程中,amvp的设计被大大简化,以兼顾编码效率和友好设计。amvp的初始设计包括来自三类预测器的五种mvp:来自空间相邻块的三个运动矢量、三个空间预测器的中位数和来自共位、时间相邻块的缩放运动矢量。此外,通过重新排序来修改预测器列表,以将最可能的运动预测器放置在第一位置,并通过去除冗余候选以确保最小的信令开销。amvp候选列表构造的最终设计包括以下两个mvp候选:a)最多两个空间候选mvp从五个空间相邻块导出;b)当空间候选mvp不可用或相同时,从两个时间共位块导出一个时间候选mvp;c)当空间候选、时间候选或两个候选都不可用时,运动矢量为零。关于运动矢量确定的细节,可参见由v.sze等人编写的《高效视频编码:算法和架构》一书(由施普林格于2014年出版),其部分内容通过引用并入本文的第5章。图4示出了用于生成候选列表的块,包括共位(0)块c1、时间邻块c1和邻近当前块的空间邻块a0、a1、b0、b1、b2。

为了在不增加信令开销的情况下进一步改进运动矢量估计,进一步细化运动矢量可能是有益的。编码端导出所述运动矢量,并将其添加到比特流中。运动矢量细化可以在解码端执行,而无需借助编码器。其解码环路中的编码器可以采用相同的细化来获得对应的参考图像。通过确定模板、确定搜索空间并在搜索空间中找到与模板最匹配的参考图像部分,实现所述细化。最佳匹配部分位置确定最佳运动矢量,所述最佳运动矢量随后用于获得当前块(正在重构的当前块)的预测器。

当在解码端应用运动矢量细化时,编码端的解码环路也必须实现所述运动矢量细化,以便生成与解码端生成和使用的参考图像相同的参考图像。运动矢量细化之前的运动矢量导出阶段通常需要知道空间与正在解码的当前块的相邻的块的运动矢量,特别是在运动矢量候选列表用于选择要进一步细化的运动矢量的估计值的情况下。当前块的运动矢量候选列表是基于已经解码的块的运动矢量创建的,并且在空间上或时间上与当前块相邻。运动矢量确定对相邻块的运动矢量的可用性的这种依赖性使得编码和/或解码的并行化更加困难。此外,这种依赖性还降低了编码比特流的容错能力。具体地,为了执行运动矢量细化,需要对参考图像进行正确解码以用于模板匹配。如果参考图像包括误差,则所述参考图像被进一步传播。应注意,模板匹配通常用于运动矢量细化。然而,本发明也适用于模板匹配应用于运动矢量确定的情况。

图3示出了图1和图2所示的帧间预测单元的结构的示例。首先,在310确定运动数据。这可以如上所述由amvp315通过从候选运动矢量列表中选择运动矢量来执行。一旦确定了运动矢量,就可执行分数内插320(特别是如果是分数像素位置处的运动矢量或矢量点),并确定各个运动矢量的预测器(330:方向0,335:方向1)。基于各个方向(即参考图像)上的预测器的确定,形成模板以在340解码器运动矢量细化块期间执行匹配。然后在350对细化的运动矢量进行加权以在360获得当前块的运动补偿预测。

图5示出了当应用运动矢量细化时解码端的处理。具体地,如图5顶部所示,处理单元pu1、pu2、pu3等由解析引擎逐个解析。解析引擎可以对应于图2中的熵解码器203。每个解析的处理单元待由帧间预测处理,用于重构图像块的纹理。所述处理单元供给帧间预测块210,如垂直箭头所示。当查看处理单元pu2(右列箭头)时,可以看到,由于应用细化,pu1和pu2几乎不可能进行并行处理。为了构造合并列表(通常,基于已经解码的块的候选运动矢量的列表),应确定相邻块(例如pu1)的运动矢量。由于运动矢量细化可以基于计算上复杂的模板匹配,并且运动矢量仅在细化之后是已知的,因此,在合并列表中使用运动矢量的所有块被处理之前(图5中的pu1),pu2不能开始运动矢量导出。具体地,对于pu1合并列表构造,例如通过使用从比特流中提取的合并列表索引来选择初始运动矢量,且在执行细化后,将细化的运动矢量传递给pu2处理以生成合并列表。根据图5,在细化步骤中,在模板匹配期间已经完成纹理重构。因此,在完成细化之后,pu1的运动矢量可以传递给pu2处理。滤波不改变运动矢量,且仅应用于重构的pu1以进一步提高其质量。例如,所述滤波可以是去块滤波或任何自适应滤波。

从该示例可以看出,不同处理单元的处理几乎是顺序的。此外,运动矢量细化需要由参考图像的样本或部分样本形成的搜索空间。因此,如果参考图像丢失或解码有伪影,则这可能影响当前块解码的质量。因此,图5所示的解码示出了利用帧间预测或运动矢量细化的解码处理不允许对不同pu进行有效的并行化,并且引入了由丢失或错误解码的参考图像引起的额外的降级。

换句话说,解码端运动矢量的导出和细化过程可能导致容错问题和并行化问题。某些使用情形要求在时空方向上的误差传播需要可控(可以限制在已知区域内或者可以采取某些措施恢复)。现有技术的方法存在以下问题:如果传输中存在误差,则在时空方向上,重构误差传播不可控。

关于解码端并行处理问题,解码端运动矢量导出和细化工具是计算密集型的,因为它们需要在大的候选点空间内进行模板匹配操作。因此需要能够对相邻pu并行地进行导出和细化操作以提高吞吐量。

这里的术语pu(处理单元)指图像单元,例如由帧间预测处理的块。一个图像的pu也可以具有不同的尺寸。

当前编解码器,例如h.265/hevc具有一定弹性,例如,在某些场合不进行运动矢量预测。例如,如果比特流中的标志进行了相应指示,则时间共址块的运动矢量不用于运动矢量预测。此外,可启用并行合并估计,以帮助编码器进行决策。有关此技术的细节,可参见viennesze、madhukarbudagavi、garyj.sullivan等人编写的《高效视频编码:算法和架构》一书(由施普林格于2014年出版)的第5.2.2.5节“用于并行合并模式估计的合并估计区域”。具体地,其中定义了窗口(运动估计区域(motionestimationregion,简称mer)),且不允许该区域内各块之间混用运动信息。换句话说,如果两个块(当前块和相邻块)位于同一mer,则不将相邻块的运动信息添加到当前块的合并列表,以提高并行处理能力。

为了提高并行化的可能性,同时提供更高的容错,根据本发明,如果没有通过模板匹配获得相邻块的运动矢量,则仅应用模板匹配来确定当前块的运动矢量。

因此,由于使用模板匹配的块不被进一步用于解码相邻块,因此可以在使用模板匹配解码的块的处理期间解码相邻块。此外,由于相邻块不使用通过模板匹配重构的块,即使模板匹配所需的参考图像丢失或损坏,也可以解码所述相邻块。

如果相邻块应用基于模板匹配的运动导出或细化,本发明还可以限制来自空间相邻块的预测。只有当块应用导出或细化并且这两种技术可以一起应用时,本发明可以限制来自时间相邻块的预测。如上所述,hevc当前提供了两种不同的方法来帮助容错和并行化。hevc完全禁用预设窗口内的运动信息预测或继承。结果,hevc利用并行处理能力来交换编码增益。

在一些实施例中,相邻块的运动信息被替换为待被当前块用于预测的非最佳版本(可能的情况是它们位于同一窗口内)。由于预测没有被完全禁用,所以编码损失低得多。本发明适用于应用运动导出或细化的相邻块。如果相邻块不使用导出或细化过程,则运动信息可以由当前块继承(或用作预测器)。

根据一实施例,一种用于确定当前块的预测,以重构当前块的示例性装置包括:预测单元,用于检测是否已经通过模板匹配确定所述当前块相邻块的运动矢量;如果检测结果为否,则根据所述相邻块导出所述当前块预测;如果检测结果为是,则不根据所述相邻块导出所述当前块预测。

如图6所示,诸如图2的210的帧间预测单元还执行检测是否使用相邻块进行预测。这可以通过块判定单元660来实现,所述块判定单元660被添加到对应于图3的帧间预测设备300的帧间预测设备600。

示例1:替换矢量

根据第一示例,本发明可以应用于基于由相邻块的运动矢量形成的候选列表来确定运动矢量。因此,上述用于确定当前块的预测的装置还用于确定运动矢量,以确定当前块的帧间预测。为了重构当前块,所述预测单元包括运动矢量列表确定单元615a、615b,用于形成当前块的候选运动矢量列表;所述列表的形成包括:

-由块判定单元660检测相邻块的运动矢量是否已经由模板匹配确定;

-如果检测结果为否,则将所述相邻块的所述运动矢量作为候选添加到所述列表中;

-如果检测结果为是,则不将所述相邻块的所述运动矢量作为候选添加到所述列表中。

所述装置还可包括运动矢量确定单元620a、620b,用于从所述列表中选择运动矢量的估计值,并根据所述估计值确定所述当前块的所述运动矢量。

具体地,所述列表确定单元615a、615b可用于:如果检测结果为是,则将替换运动矢量作为候选添加到所述列表中。

如图6所示,导出运动矢量包括帧间预测中的合并块以及高级运动矢量预测。然而,本发明也适用于仅提供这些方法/块中的一个的情况下,或者使用任何其它运动矢量导出方法的情况下,其基于以下两个步骤:运动矢量列表生成,以及从列表中选择运动矢量。所述块判定单元660在其输入端接收相邻块(先前已解码,并在空间上或时间上紧邻或对角线上相邻的相邻块)的预测类型/模式的信息605。基于此,所述块判定单元660确定当前块的运动矢量是否将用于解释运动矢量列表(615a和/或615b)。

所述amvp单元从其输入端602接收有关运动矢量预测值与由编码器确定并通过比特流发送的运动矢量之间的差异的信息;随后,根据所述块判定单元660的判定结果生成运动矢量列表615b,并且执行选择620b,即从所述运动矢量列表中选择运动矢量候选值。类似地,帧间预测块合并(inter-picturepredictionblockmerging,简称ipbm)包括:根据所述块判定单元660的控制的生成合并列表615a;执行选择615a,即从所述合并列表中选择最佳候选运动矢量。插值操作320是可选项,通常不必执行。然后基于单个运动矢量或两个运动矢量来进行预测(即选用在图6中方框330和方框335所指的两个运动矢量中的一个或两者)。应注意,如果不支持双向预测,则通常仅可以实现方框330和335中的一个。有关方框320-360的操作细节,请参见图3处的描述。

图7示出了一个示例,其中,所述装置也包括运动矢量细化单元340。所述运动矢量细化单元340用于细化所选择的运动矢量的估计值。此外,所述运动矢量候选列表确定单元615用于:如果检测结果为是,将相邻块的运动矢量的估计值添加到所述列表中,所述估计值在应用细化之前通过模板匹配获得;所述运动矢量确定单元310还用于根据细化之后相邻块的运动矢量的估计值,来确定相邻块的运动矢量。换句话说,在该示例中,运动矢量的非细化版本通常是模板匹配之前的运动矢量估计值,存储在存储器中,以供在以下处理单元的重构过程中进一步使用。运动矢量的细化版本用于当前编码块的样本重构过程,随后可能是滤波过程。

图7示出了类似于图4的示例的处理单元的解析。然而,当处理pu1时,为相邻pu2的pu1选择的未细化的运动矢量被输出到pu2的处理过程。特别是pu2使用pu1的未细化运动矢量,来形成其运动矢量候选列表同时,pu1处理通过运动矢量细化、纹理重构(基于细化运动矢量的当前块的预测)和滤波继续进行。应注意,可以省略滤波阶段。可以看出,现在可以形成pu2的运动矢量候选列表,并且在仍处理pu1的同时进行运动矢量选择和细化。因此,相邻处理单元可以进行帧间预测处理水平的并行处理。同时,由于细化之前为pu1选择的运动矢量不取决于参考图像的可用性/正确性。因此,从pu1到pu2间不发生误差传播,从而提高容错。

换句话说,在图7中,pu1将导出/细化过程的输出用于纹理重构和滤波过程。pu2(pu1的邻块)不使用(pu1的)导出/细化的输出进行运动矢量预测。相反,pu2使用非最优版本(在细化/导出过程完成之前可以获得)进行运动矢量预测。

应注意,示例1提供的优点之一是启用了并行。然而,不是每个编码器/解码器都必须使用并行。另一个优点是编码器/解码器可以选择是否进行并行化。当进行并行化时,运动矢量列表确定单元用于:在所述运动矢量细化单元对所述相邻块应用细化的同时,形成所述当前块的所述列表。

第一示例的上述部分不区分邻域的类型,特别是相邻块在时域或空间域内是否紧邻当前块。其可以提供更多优点来进行这种区分。具体地,当针对当前块形成运动矢量列表时,时间上在前的邻块(以解码顺序)的运动矢量通常是可用的。因此,以下做法可能是有益的:如果仅针对并行化的优点,即使它们是通过应用模板匹配而获得的,并且针对本示例更具体地,如果它们被细化,则将时间上的相邻块添加到运动矢量列表中。

因此,相应地,如果检测结果为是,运动矢量列表确定单元可用于:

-如果相邻块与当前块位于同一图像中,则将所述相邻块的所述运动矢量的估计值添加到所述列表中,其中,所述相邻块的所述运动矢量的估计值是在应用所述细化之前通过所述模板匹配获得的;

-如果相邻块不位于与当前块相同的图像中,则在所述细化应用于所述相邻块之后,将所述相邻块的所述运动矢量添加到所述列表中。

由于时间参考图像在当前图像之前被重构,所以参考时间参考图像中的细化运动矢量不会减慢当前图像的重构。应用运动矢量细化的每个处理单元存储用于后续预测的两个候选,即:非细化运动矢量,其由空间邻块通过后续(按解码顺序)处理单元用于运动矢量预测;细化运动矢量,如果后续的块进行时间运动预测,以及通过运动补偿和可能对当前处理单元进行滤波以进行时间运动预测,则加以使用。如上所述,不执行模板匹配而使用替换可能略微降低编码效率。

图8示出了一种上述方法的示例。具体地,在步骤s810中,确定当前块及其一邻块是否位于同一窗口内。例如,所述窗口可以是空间窗口。在本示例中,窗口可以是整个图像。因此,可检测当前块和相邻块是否在同一窗口内。如果检测为否(步骤s810中检查结果为否),细化运动矢量进而被当前块用作运动矢量预测;例如,在步骤s850,将相邻块的细化运动矢量添加到候选运动矢量列表中。

否则,如果相邻块和当前块位于同一窗口内,则在步骤s820中检测是否通过模板匹配来细化或导出相邻块的运动矢量。因此,如果检测结果为否,即相邻块没有由模板匹配确定的运动矢量,则执行步骤s50,即对当前块执行细化。另一方面,如果相邻块应用具有模板匹配的运动矢量的细化或导出,则在步骤s830中进一步检测当前块和其中一个相邻块是否属于相同的图像。因此,如果当前块和相邻块不在同一图像内(步骤s830中检测结果为否),则当前块将细化运动矢量用于运动矢量预测;例如,在步骤s850中,将将时间相邻块的细化运动矢量添加到候选运动矢量列表。另一方面,如果在步骤s830中检测结果为是,则在步骤s840中,当前块使用替换运动矢量用于运动矢量预测。

在上述示例中,步骤s810和s830似乎检测相同的条件。然而,在以下示例中,步骤810讨论了其它空间窗口可能性。此外,应注意,步骤s830中的检测也可以检测时间窗口,即检测解码顺序中的相邻块是否从当前块所在的当前图像中按解码顺序位于小于k张图像的位置。应注意,通常解码顺序与编码顺序相同。换句话说,解码顺序由编码端定义的编码顺序和生成的比特流结构给出。因此,当参考本示例中的解码顺序时,可以参考编码顺序。

在图7的上述示例中,所述替换运动矢量已经由未细化运动矢量确定。然而,本发明不限于这种方法。相反,替换可以任何方式定义。

然而,替换运动矢量不一定是细化之前相邻块的运动矢量。例如,在一示例性实施例中,所述替换运动矢量为与所述当前块相邻且不同于所述相邻块的块的运动矢量。

图10示出了具有称为a1的相邻pu的当前pu和具有称为x1的相邻pu的a1。如果相邻块a1应用运动矢量导出/细化(模板匹配),则使用a1的空间和/或时间相邻块(例如x1)为pua1构造候选运动矢量列表。然后从为相邻块a1构造的候选列表中选择或计算当前pu的候选运动矢量。所选择或计算的候选a1_运动矢量_替换可以不同于a1的运动矢量确定将输出的运动矢量。所述选择指的是从可能的候选的列表中选择。还可以使用其它方式获得运动矢量来计算运动矢量,例如通过对多个候选的运动矢量进行平均,或以任何其它方式基于候选运动矢量计算运动矢量,或不参考候选。a1_运动矢量_替换还没有通过模板匹配获得。但应注意,由于x1不是当前pu的直接相邻块,根据一种实现方式,也可以使用模板匹配来确定a1_运动矢量_替换,因为在解码当前pu时a1_运动矢量_替换可能是可用的,因此仍然可以对当前pu和,例如a1,进行并行处理。

根据一个示例,x1是a1在其左侧的相邻块,但是x1不与当前处理单元相邻,然而,可以使用a1附近或a1的时间邻域中的任何其它块。x1的运动矢量可以用作a1_运动矢量_替换。

通常,当前pu的候选列表(集)是通过在其中列出相邻pu的运动矢量而形成的。通过模板匹配,确定运动矢量的时空相邻pu,所述运动矢量待被添加到当前pu的候选列表中;然后将一个替换矢量添加到当前pu的候选集合中。根据一个示例,所述替换矢量是来自该空间和/或时间上相邻pu的候选列表的运动矢量。替换矢量通常可以是已经细化的运动矢量或在没有模板匹配的情况下确定的运动矢量(例如,通过基于比特流发送的运动矢量预测)。

图9示出了替换运动矢量的另一示例性实施例。根据本示例性实施例,在为当前pu构建候选列表时,相邻块的运动矢量待添加到候选列表中,但使用模板匹配确定,待包括在列表中的以下候选运动矢量的运动矢量替换所述运动矢量。例如,图9示出了在左侧具有相邻块a0至am+1且在顶部具有相邻块b-1至bn+1的当前pu。

如图9所示,在本文公开的任何示例中,待处理的pu通常可以具有不同的尺寸。因此,当前pu可以具有多个空间相邻块以及多个时间相邻块,甚至具有至少部分共位相邻块(在先前已解码的图像中)。

此外,根据一种实现方式(此实现方式也适用于本文公开的任何一个示例和实施例),每个pu的候选列表构造以预设方式进行,例如在相关标准中定义。例如,根据预设顺序,候选列表可以通过包括在其中的当前pu的相邻块的运动矢量来构造。候选列表可以具有固定的大小。基于这种创建候选列表的规则,编码器和解码器能够以兼容的方式工作。例如,在先前已解码(直接相邻)的图像中,预设顺序可以先是a0到am+1的运动矢量,再是b-1至bn+1的运动矢量,最后是c0至cp的运动矢量。所述m是左侧相邻块的数量,n是顶部相邻块的数量,p是时间相邻块的数量。但应注意,用于创建候选列表的方式并不一定完全在标准中定义。它可以至少部分地由比特流内的视频序列相关信令确定。此外,根据预设规则,图9中显示的所有相邻块的运动矢量和/或时间相邻块不一定包括在列表中。所述规则可以只定义几个相邻块,也可以但不一定包括时间相邻块。此外,应注意,所述列表不必直接包含相邻块的运动矢量。它还可以包括由相邻块的运动矢量计算得到的运动矢量(例如相邻块的两个运动矢量的平均值或类似的值)。

在本示例性实施例中,为当前pu构造候选列表。如果am+1的运动矢量要包括在列表中(根据预设规则),但已经通过模板匹配确定,则不使用am+1的运动矢量,而是使用当前pu候选列表中am+1之后的pu的运动矢量代替am+1的运动矢量。在该示例中(参见上述块的序列),替换矢量将是b-1。如上所述,预设规则可以定义诸如am+1至a0、b-1至bn+1、c0的不同顺序。在这种情况下,am+1之后的下一个块将是am,使得am+1的运动矢量将被当前pu的候选列表中的am的运动矢量替换。

应注意,如果所有相邻块使用模板匹配来导出它们各自的运动矢量,并且因此不能通过获取另一相邻块的运动矢量来确定当前块的运动矢量,则根据一个实施例,当前块不应应用用于运动矢量导出或细化的模板匹配。或者,在这种情况下,可以使用预设运动矢量候选集来构造运动矢量预测器候选列表。这样的预设集可以包括在x轴和y轴中为零的运动矢量。类似地,如果不存在可用于确定运动矢量的相邻块的相邻块,则将不同地预测当前块。作为示例,可以使用帧内预测而不是帧间预测来预测当前块。

在上述示例性实现方式中,候选项列表中的替换矢量替换由模板匹配确定的当前处理单元的候选运动矢量。上面已经示出了用于提供替换矢量的几个示例,其使得能够并行处理相邻处理单元和/或提高容错。

示例2:区域限制

根据第二示例,其可与第一示例和/或以下示例中的任一个组合,n×m个样本大区域内的块不能使用来自也位于同一区域内的相邻块的细化运动矢量候选(或通常通过应用模板匹配确定的运动矢量候选)。另一方面,块可以使用来自不位于同一区域内的周围或甚至相邻块的细化运动矢量候选。

换句话说,为了重构当前块,所述预测单元可以用于检测位于相对于当前块的位置定义的预定区域内的周围块的运动矢量是否已经由模板匹配确定。所述区域可以是矩形或甚至是方形。然而,本发明不限于此,并且该区域可以具有任何其它形状。

图8的步骤s810示出了该方法,其中确定相邻块和当前块是否位于同一窗口内。该窗口可以是n×m个样本的区域。

图14和图15示出了根据第二示例的区域的示例。

具体地,图14示出了n×m个样本的矩形区域。位于该区域内的块的运动矢量不能用于导出位于同一区域内的块的运动矢量,特别是如果导出包括模板匹配。另一方面,位于区域外的块的运动矢量(例如块b0)可以用于导出块在所述区域中的运动矢量,即使块b0区域中的块是相邻块。该方法使得能够并行处理同一区域内的块。最好可以相对于当前块的位置定义当前块的区域。在图14的示例中,“在区域内”指的是整个块(当前块和/或相邻块),即所述块的所有样本,均位于该区域中。然而,这仅仅是对该示例的操作没有任何有效结果的约定。

图15示出了另一示例,其中区域内的位置仅由相邻块或当前块的左上角样本的位置确定。如前一示例所示,虚线示出了区域n×m样本大小(虚拟网格t)。现在,块x是与区域重叠但不完全位于区域内的矩形块,但也被认为是属于该区域,因为它的左上角位于该区域内。

还应注意,通常不必相对于块的左上角位置来确定区域,而可以相对于块的任何位置(例如,中心位置)进行确定。

总之,块的运动矢量位于同一区域内并基于模板匹配通过导出和/或细化来处理,n×m区域内的当前块不能使用所述块的运动矢量。相反,例如,所述块可以使用如上文1所述的替换运动矢量。例如,所述替换矢量是细化前区域内相邻块的运动矢量,或者是相邻块的相邻块(不与当前块相邻)的运动矢量,或者是另一个相邻块的运动矢量。

nxm区域内的当前块可以使用位于区域外的块的运动矢量,而不考虑它们的确定方式。该规则不考虑如何定义术语区域内/区域外(块的所有像素或仅参考点,例如块的左上像素,是否必须在区域内)。

示例3:跳过检测

根据第三示例,模板匹配确定的相邻块的运动矢量仍然包括在当前块的候选列表中。

诸如合并列表或amvp列表的候选列表的构造可以包括检测多个相邻块的运动信息并在冗余校验完成后将其添加到候选列表中。合并列表构造和amvp(高级运动矢量预测器)列表构造过程(如标准hevc/h.265中所述,例如,如前文所述,以引用方式并入由v.sze等人所编写的《高效视频编码:算法和架构》一书的第5.2.1和5.2.2节中)是指继承时间和空间相邻块的两个运动矢量预测器列表的构造。对于此两个列表,用于继承运动矢量的相邻块的选择不同(采用不同的算法)。此外,一旦选择了运动矢量预测器,如果使用了合并列表,则在比特流中不会发送额外运动矢量差异。另一方面,将运动矢量差异发送给amvp候选。

上述冗余校验是指识别两个相邻块相同的运动信息。换句话说,在合并列表或amvp列表构建过程中,在将运动矢量添加到列表之前,将其与列表中已经存在的候选(其中全部或具有所选择的子集)进行比较;如果列表中(或在所选择的子集中)已经存在相同的候选,则将其排除在列表之外。冗余校验操作可以包括比较两个运动矢量或整个运动信息(参考图像索引、预测模式(单向预测或双向预测,以及指向所使用的参考图像的运动矢量)。

然而,为了实现相邻处理单元的并行处理,在运动矢量候选列表构造中不检测细化运动矢量的冗余。该方法的优点是:可以在不知道细化或导出运动矢量的实际值的情况下构造候选列表(例如合并列表或amvp列表)。实际运动矢量重构仍然需要等待导出和/或细化过程。

因此,所述运动矢量候选列表确定单元还用于:检测待添加到列表中的运动矢量是否已经添加到列表中;如果检测结果为是,则不添加到列表中;如果当所述列表包括待处理的相邻块的运动矢量,且所述矢量的处理至少部分并行于所述当前块的处理时,不执行所述检测。

如图11所示。在图11中,确定处理单元pu1的运动矢量,包括导出和细化。然后,将细化运动矢量输入到运动矢量候选列表中。在该示例中,冗余校验过程被跳过。因此,可以在相邻块中完成运动矢量细化过程之前构造当前块的候选列表。细化过程一完成,就将pu1的细化运动矢量添加到预构造后的pu2的候选列表中。换句话说,候选列表构造不需要等待pu1的运动矢量,而是可以与其它块的运动矢量候选完成。然后在执行用于pu2的运动矢量选择步骤之前添加pu1的运动矢量。pu1(相邻块)的纹理重构和滤波可以与pu2(当前块)的处理并行进行,特别是候选列表构造、运动矢量选择/导出和细化。

在上述示例中,pu2的合并列表可以在pu1的运动矢量导出或细化完成之前构建,因为在合并列表的构建过程中,不再需要pu1的运动矢量的实际值。因此,pu1可以继续从合并列表中选择预测器候选。在该步骤中,如果预测器候选继承自pu1(pu1应用运动矢量导出或细化),则pu1和pu2仍然不能并行处理,因为pu1的运动矢量的实际值不可用,并且需要运动矢量导出/细化和纹理重构过程。然而,如果预测器候选继承自pu3(pu3不应用运动矢量导出或细化),则pu1和pu3能并行处理,因为pu3的运动矢量的实际值在此时已知且可用。解码实现装置可以利用所发明的方法伺机加速解码过程,即尽可能采用并行的cu重构。

示例4:有限运动矢量预测

在上述示例中,通过应用模板匹配进行运动矢量导出和细化获得的相邻块的运动矢量不用作当前块的运动矢量候选。然而,通过从候选列表中选择当前块的运动矢量和/或进一步细化它们,来确定当前块的运动矢量,本发明不限于此示例。

根据第四示例,使用与当前块相邻的块(最好是直接在空间上相邻,但通常也可以使用时间上相邻的块)的运动矢量来预测当前块的运动矢量。或者,可以在比特流中发送预测差值。或者,可以对预测的运动矢量进行基于解码器的运动矢量细化处理。

图12示出了具有一个左相邻块1和一个顶部相邻块2的当前块,所述左相邻块1的运动矢量已经通过基于模板匹配的运动矢量导出和/或细化确定,所述顶部相邻块2的运动矢量还没有通过基于模板匹配的运动矢量导出和/或细化确定。根据第四示例,如果应用模板匹配来确定当前块的运动矢量,则如果相邻块的运动矢量是基于模板匹配确定,不使用相邻块的运动矢量进行运动矢量预测。因此,在图12中,相邻块1的运动矢量不能用于当前块的运动矢量的运动矢量预测。因此,如果不使用模板匹配来确定当前块的运动矢量,它可以利用例如相邻块1的运动矢量进行运动矢量预测(即计算当前块的运动矢量,作为基于相邻块或多个相邻的块的运动矢量和比特流中发送的差值确定的预测总和)。

在任何情况下,如果不使用模板匹配来确定相邻块2的运动矢量,则可以根据相邻块2预测当前块的运动矢量。应注意,当前块的运动矢量预测可以直接取相邻块的一个运动矢量作为预测。然而,运动矢量预测也可以基于相邻块的运动矢量进行,例如对几个空间和/或时间相邻块的运动矢量进行平均。

示例5:有限帧内预测

根据第五示例,所述预测单元包括参考样本确定单元,用于确定所述当前块的参考样本集,其中,所述参考样本确定单元包括:

-检测是否已经由所述模板匹配确定相邻块的运动矢量;

-如果检测结果为否,则将所述相邻块的一个或多个样本添加到所述参考样本集合中;

-如果检测结果为是,则不将所述相邻块的任何样本添加到所述参考样本集合中。

此外,所述预测单元包括帧:内预测单元,用于根据来自所述参考样本集的样本提供所述当前块的预测。

如图13所示,其中当前块由一个左相邻块1和一个顶部相邻块2包围,所述左相邻块1的运动矢量已经通过应用模板匹配确定,所述顶部相邻块2的运动矢量尚未确定或尚未通过应用模板匹配确定。当前块是帧内编码块,即其预测将基于同一图像中的周围块的参考样本(像素)的帧内预测确定。由于相邻块1应用了运动矢量导出和/或细化,所以当前块的帧内预测不会使用相邻块1的样本。由于邻居块2不应用运动矢量导出和/或细化,当前块的帧内预测可以使用相邻块2的重构样本进行帧内预测。

如上所述,即使图12和图13仅示出了一个左相邻块和一个顶部相邻块,通常也可包括更多的相邻块,如图9所示。通常,在第五实施例中,使用模板匹配来导出其运动矢量的块的参考样本不用于当前块的帧内预测。

示例6:信令

为了使编码器和解码器能够以兼容的方式操作,可以将控制信令引入比特流中,所述控制信令指定是否以及如何如上所述控制并行处理和/或容错。

如图1和图2所述,用于从比特流解码多个图像的视频解码器可以包括:比特流解析器,用于解析包括控制信息的比特流;如上述示例中所述的预测单元;重构单元,用于基于当前块的预测重构当前块。

此外,用于将多个图像编码成比特流的视频编码器可以包括:预测单元;比特流形成器,用于将控制信息添加到所述比特流中;重构单元,用于基于所述当前块的预测重构当前块并将所述重构块存储在存储器中。

视频编码器或解码器可以与控制信息一起操作,所述控制信息包括:标志,用于指示所述预测单元是否将检测相邻块的运动矢量是否已由所述模板匹配确定;和/或替换指示符,用于指示如果检测结果为是时如何确定所述当前块的预测。

具体地,控制标志可以指示是否将应用根据本发明的限制。如果该标志指示不需要应用根据本发明的限制,则不执行检测,并且可以总是从相邻块的运动矢量导出当前块的运动矢量,而不限于如何导出相邻块本身的运动矢量。否则,上述实施例和示例中的其中一个应用根据本发明的限制。可以在标准中定义具体是实施例和示例中的哪一个。

此外,可以选择上述实施例和示例之一的应用,例如,可以提供控制信令,所述控制信令指示如何确定替换矢量(相邻块的未细化运动矢量、相邻块的相邻块的运动矢量或其它相邻块的运动矢量的副本或任何其它运动矢量)。或者或此外,控制信令可以指定是否应用替换矢量(示例1)、区域限制(示例2)、跳过检测(示例3)、有限运动矢量预测(示例4)或有限帧内预测(示例5)中的一项或多项。也可以发送区域大小。

例如,所述控制信息包括在序列参数集和/或片头中。

术语“序列参数集”通常是指编码器和解码器识别的适用于形成序列的多个图像的任何控制信息字段。具体地,在hevc的情况下,这可以是序列参数集(sequenceparameterset,简称sps)或图像参数集(pictureparameterset,简称pps)。然而,本发明不限于hevc,并且通常可以使用适用于多个图像的任何公共信令。这可以是用于整个视频或视频图像的子集的控制信息。

此外,这里的术语“片头”是指与视频(图像)片相关联的控制信息。hevc使用图像片,所述图像片可以包括整个图像或图像的可以独立于其它片解析的部分。这里的解析包括熵解码。在一些情况下,片也可以独立解码,即不使用来自其它片的信息来使用帧内预测解码。然而,通常控制信息可以与相关信令提供给的任何图像部分一起提供。

应注意,控制信令可以应用于以上两个级别。例如,可以按片用信令发送表明是否使用限制的标志,而特定实施例/示例/区域大小可以按多个图像用信令通知。

包括如上所述的运动矢量细化的运动矢量确定可以实现为视频信号(运动图像)的编码和/或解码的一部分。然而,运动矢量确定也可以用于图像处理中的其它目的,例如运动检测、运动分析等。

图16和图17示出了如上所述的本发明可以提供与改善容错相关的优点的场景。根据图16,一个片丢失,重构当前片中的当前块所指向的参考图像的一部分需要所述片。因此,如果当前块的相邻块也可能指向丢失的片部分。如果片部分隐藏,则可能存在图像质量下降。如果重传,则可能存在更高的解码器延迟。根据本发明的一些示例性实施例,使用参考图像来确定运动矢量的相邻块的运动矢量不用于当前块。因此,将不会出现由片丢失引起的误差传播或延迟。

在图17中,不仅参考图像损坏,而且相邻块的运动矢量在当前块的候选列表中使用或用于预测当前块的运动矢量的情况下也可能损坏。如果参考帧丢失,则不能重构当前块中的像素样本。此外,在本示例中不能重构当前片中的当前块的运动矢量。在当前片和后续片中的所有运动矢量都已损坏。由于解码顺序的后续块可以利用丢失的运动矢量进行运动矢量预测(合并、amvp等),所以解码器没有简单的恢复方法。编码器没有控制误差传播的方法(按编码顺序在当前块之前的编码块都已可能损坏)。

根据如上所述的发明,如果图17中的一个参考图像丢失,尽管当前块的像素损坏(由于参考样本丢失),保证正确重构块使用的运动矢量。正确重构运动矢量(本发明方法提供的好处)具有以下两大好处:

·解码器可以采用错误隐藏算法。由于视频序列中连续的图像高度相关,智能解码器可以简单地将丢失的图像替换为可用的参考图像,相应地缩放运动矢量,从而获得对当前块的较好的预测。这种简单的错误隐藏方法之所以成为可能,是因为可以正确地重构当前块的运动矢量。

·因为当前块的运动矢量可能由以下编码块(在空间或时间附近)用作运动矢量预测,能够重构当前块的运动矢量保证了以下编码块的运动矢量也能正确重构。因此,现在可以完美地重构一个拥有所有可用参考图像(没有丢失)的后续编码块,因为其参考图像和运动矢量都是正确的。如果不应用本发明,丢失的参考图像会导致当前和后续的编码块都有错误的运动矢量,并且错误会在整个视频序列中传播(因此,仅仅丢失一帧就可能破坏整个视频序列)。

综上所述,本发明涉及帧间预测,包括:检测是否已经通过模板匹配确定与当前块相邻的块的运动矢量(例如,用于在基于解码器的运动矢量导出和/或细化);如果检测结果为否,则根据相邻块的运动矢量导出当前块的预测;如果检测结果为是,则不根据相邻块预测所述当前块。

运动矢量确定可以实现为装置,所述装置可以是软件和硬件的组合。例如,运动矢量确定可以由诸如通用处理器、数字信号处理器(digitalsignalprocessor,简称dsp)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等芯片执行。然而,本发明不限于在可编程硬件上实现。其可以在特定应用集成电路(application-specificintegratedcircuit,简称asic)上实现,或者通过软件和一个或多个上述硬件组件的组合实现。在一个示例中,所述装置包括处理器和承载程序的存储器,并且当处理器执行程序时,所述程序指示处理器执行上述方法的步骤。

所述运动矢量确定也可以通过存储在计算机可读介质上的程序指令来实现。当所述程序被执行时,所述程序使计算机执行以下步骤:检测相邻块的运动矢量是否已经通过模板匹配来确定;如果检测结果为否,则根据相邻块导出当前块的预测;如果检测结果为是,则不根据相邻块导出当前块的预测。所述计算机可读介质可以是存储该程序的任何介质,例如dvd、cd、usb(闪存)驱动器、硬盘、可经由网络访问的存储服务器等。

所述编码器和/或解码器可以在包括电视机、机顶盒、个人电脑、平板电脑、智能手机等的各种设备中实现。所述编码器和/或解码器可以是用于实现方法步骤的软件、应用。

尽管上文主要在运动图像视频编码的框架内对本发明进行了描述,但是所提出的技术也可以应用于包括两个或多个图像的任何图像集的编码(即,编码或解码)。该图像集可以包括例如在医学成像应用中获得的一组静止图像,例如,一组计算机断层(computedtomography,简称ct)扫描图像序列。因此,在所附权利要求中,“视频”一词可以指由两张或多张图像组成的运动图像序列或任何其它图像集。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1