用于视频编码的系统和方法
文献发布时间:2023-06-19 10:14:56
技术领域
本公开涉及视频编码,并且具体地涉及用于执行帧间预测功能以基于参考帧来构建当前帧的预测的视频编码和解码系统、组件和方法。
背景技术
随着视频编码技术的发展,从H.261和MPEG-1到H.264/AVC(高级视频编码)、MPEG-LA、H.265/HEVC(高效视频编码)和H.266/VVC(通用视频编解码),依然存在对视频编码技术进行改进和优化的持续需求,以处理各种应用中不断增长的数字视频数据量。本公开涉及视频编码中的进一步的进步、改进和优化,特别是用于基于参考帧来建立当前帧的预测的帧间预测功能。
发明内容
在一个方面,图像编码器包括电路和耦合到该电路的存储器。在操作中,该电路将当前图像块分成多个分区。从多个分区中的第一分区的单预测运动矢量候选集合(set ofuni-prediction motion vector candidates)中预测第一运动矢量。使用第一运动矢量对第一分区进行编码。
在一个方面,一种图像编码器包括:分割器,其在操作中,将原始图片接收并分割为块;第一加法器,其在操作中,从所述分割器接收块,并从预测控制器接收预测;并从其对应的块中减去每个预测以输出残差;变换器,其在操作中,对从加法器输出的残差执行变换以输出变换系数;量化器,其在操作中,对变换系数进行量化以生成量化的变换系数;熵编码器,其在操作中,对量化的变换系数进行编码以生成比特流;逆量化器和逆变换器(inverse quantizer and transformer),其在操作中,对量化的变换系数进行逆量化以获得变换系数,并对变换系数进行逆变换以获得残差;第二加法器,其在操作中,将从逆量化器和逆变换器输出的残差与从预测控制器输出的预测相加,以重构块;以及预测控制器,其耦合到帧间预测器、帧内预测器和存储器。所述帧间预测器在操作中基于编码的参考图片中的参考块生成当前块的预测。帧内预测器在操作中基于当前图片中的编码参考块生成当前块的预测。所述帧间预测器在操作中,将当前图像块分割为多个分区。从所述多个分区中的第一分区的单预测运动矢量候选集合中预测第一运动矢量。使用所述第一运动矢量对所述第一分区进行编码。
在一个方面,一种图像编码方法包括:将当前图像块分割成多个分区。从多个分区中的第一分区的单预测运动矢量候选集合中预测第一运动矢量。使用第一运动矢量对第一分区进行编码。
在一个方面,图像解码器包括电路和耦合到该电路的存储器。该电路在操作中将当前图像块分割成多个分区。从多个分区中的第一分区的单预测运动矢量候选集合中预测第一运动矢量。使用第一运动矢量对第一分区进行解码。
在一个方面,图像解码器包括:熵解码器,其在操作中接收并解码编码的比特流以获得量化的变换系数;逆量化器和逆变换器,其在操作中对量化的变换系数进行逆量化以获得变换系数,并对变换系数进行逆变换以获得残差;加法器,其在操作中,将从逆量化器和逆变换器输出的残差与从预测控制器输出的预测相加,以重构块;以及预测控制器,其耦合到帧间预测器、帧内预测器和存储器。所述帧间预测器在操作中基于解码的参考图片中的参考块生成当前块的预测。所述帧内预测器在操作中基于当前图片中的编码参考块生成当前块的预测。所述帧间预测器在操作中,将当前图像块分割为多个分区。从所述多个分区中的第一分区的单预测运动矢量候选集合中预测第一运动矢量。使用所述第一运动矢量对所述第一分区进行解码。
在一个方面,一种图像解码方法包括:将当前图像块划分割成多个分区。从多个分区中的第一分区的单预测运动矢量候选集合中预测第一运动矢量。使用第一运动矢量对第一分区进行解码。
本公开的实施例的一些实施方式可以提高编码效率,可以简单地是编码/解码过程,可以加速编码/解码过程的速度,可以高效地选择在编码和解码中使用的适当的组件/操作,例如适当的滤波器、块大小、运动矢量、参考图片、参考块等。
根据说明书和附图,所公开的实施例的其他益处和优点将变得显而易见。益处和/或优点可以通过说明书和附图的各种实施例和特征来个别地获得,不需要提供全部实施例和特征以获得一种或多种这样的益处和/或优点。
应当注意,一般或特定实施例可以被实现为系统、方法、集成电路、计算机程序、存储介质或其任何选择性组合。
附图说明
图1是示出根据实施例的编码器的功能配置的框图。
图2是示出由编码器执行的整体编码过程的一个示例的流程图。
图3是示出块分割的一个示例的概念图。
图4A是示出切片配置的一个示例的概念图。
图4B是示出图块配置(tile configuration)的一个示例的概念图。
图5A是示出各种变换类型的变换基函数的图。
图5B是示出示例空间变化变换(SVT)的概念图。
图6A是示出在自适应环路滤波器(ALF)中使用的滤波器形状的一个示例的概念图。
图6B是示出在ALF中使用的滤波器形状的另一示例的概念图。
图6C是示出在ALF中使用的滤波器形状的另一示例的概念图。
图7是示出用作解块滤波器(deblocking filter,DBF)的环路滤波器的具体配置的一个示例的框图。
图8是示出关于块边界具有对称滤波特性的解块滤波器的示例的概念图。
图9是用于示出在其上执行解块滤波过程的块边界的概念图。
图10是示出Bs值的示例的概念图。
图11是示出由编码器的预测处理器执行的过程的一个示例的流程图。
图12是示出由编码器的预测处理器执行的过程的另一示例的流程图。
图13是示出由编码器的预测处理器执行的过程的另一示例的流程图。
图14是示出在实施例中的帧内预测中使用的六十七个帧内预测模式的概念图。
图15是示出帧间预测的示例基本处理流程的流程图。
图16是示出运动矢量的导出的一个示例的流程图。
图17是示出运动矢量的导出的另一示例的流程图。
图18是示出运动矢量的导出的另一示例的流程图。
图19是示出常规帧间模式下的帧间预测的示例的流程图。
图20是示出合并模式下的帧间预测的示例的流程图。
图21是用于示出合并模式下的运动矢量导出过程的一个示例的概念图。
图22是示出帧速率上转换(FRUC)过程的一个示例的流程图。
图23是用于示出沿着运动轨迹的两个块之间的模式匹配(双边匹配)的一个示例的概念图。
图24是用于示出当前图片中的模板与参考图片中的块之间的模式匹配(模板匹配)的一个示例的概念图。
图25A是用于示出基于多个相邻块的运动矢量来导出每个子块的运动矢量的一个示例的概念图。
图25B是用于示出在使用三个控制点的仿射模式中导出每个子块的运动矢量的一个示例的概念图。
图26A是用于示出仿射合并模式的概念图。
图26B是用于示出使用两个控制点的仿射合并模式的概念图。
图26C是用于示出使用三个控制点的仿射合并模式的概念图。
图27是示出仿射合并模式下的过程的一个示例的流程图。
图28A是用于示出使用两个控制点的仿射帧间模式的概念图。
图28B是用于示出使用三个控制点的仿射帧间模式的概念图。
图29是用于示出仿射帧间模式下的过程的一个示例的流程图。
图30A是用于示出仿射帧间模式的概念图,其中当前块具有三个控制点,而相邻块具有两个控制点。
图30B是用于示出仿射帧间模式的概念图,其中当前块具有两个控制点,而相邻块具有三个控制点。
图31A是示出了包括解码器运动矢量细化(DMVR)的合并模式过程的流程图。
图31B是用于示出DMVR过程的一个示例的概念图。
图32是示出了生成预测图像的一个示例的流程图。
图33是示出了生成预测图像的另一示例的流程图。
图34是示出了生成预测图像的另一示例的流程图。
图35是示出通过重叠块运动补偿(OBMC)过程执行的预测图像校正过程的一个示例的流程图。
图36是用于示出由OBMC过程执行的预测图像校正过程的一个示例的概念图。
图37是用于示出两个三角预测图像的生成的概念图。
图38是用于示出假设匀速直线运动的模型的概念图。
图39是用于示出使用由局部照度补偿(LIC)过程执行的亮度校正过程的预测图像生成方法的一个示例的概念图。
图40是示出编码器的安装示例的框图。
图41是示出根据实施例的解码器的功能配置的框图。
图42是示出由解码器执行的整个解码过程的一个示例的流程图。
图43是示出由解码器的预测处理器执行的过程的一个示例的流程图。
图44是示出由解码器的预测处理器执行的过程的另一示例的流程图。
图45是示出解码器中的常规帧间模式下的帧间预测的示例的流程图。
图46是示出解码器的安装示例的框图。
图47A是示出根据一个实施例的将图像块分割成包括至少第一分区和第二分区的多个分区,从至少第一分区的运动矢量候选集合中预测运动矢量,并执行进一步处理的过程流程的示例的流程图。
图47B是示出根据一个实施例的将图像块分割成包括至少第一分区和第二分区的多个分区,从至少第一分区的单预测运动矢量候选集合中预测运动矢量,并执行进一步处理的过程流程的示例的流程图。
图48是用于示出将图像块分割成第一分区和第二分区的示例性方法的概念图。
图49是用于示出第一分区的相邻和非相邻的空间相邻分区的概念图。
图50是用于示出图像块的单预测和双预测运动矢量候选(uni-prediction andbi-prediction motion vector candidate)的概念图。
图51是用于示出根据双预测运动矢量来确定单预测运动矢量的概念图。
图52是用于示出根据双预测运动矢量来确定单预测运动矢量的概念图。
图53是用于示出根据双预测运动矢量来确定单预测运动矢量的概念图。
图54是用于示出从单预测运动矢量生成一个或多个单预测运动矢量的概念图。
图55是用于示出从单预测运动矢量生成一个或多个单预测运动矢量的概念图。
图56是用于示出从单预测运动矢量生成一个或多个单预测运动矢量的概念图。
图57是用于示出图像块的第一分区和第二分区的单向运动矢量的概念图。
图58是示出根据一个实施例的以下过程流程的示例的流程图:根据分区的形状从第一单预测运动矢量候选集合或从包括双预测运动矢量候选和单预测运动矢量候选的第二运动矢量候选集合中预测图像块的分区的运动矢量,以及执行进一步的处理。
图59是示出根据一个实施例的以下过程流程的示例的流程图:从第一单预测运动矢量候选集合或从包括双预测运动矢量候选和单预测运动矢量候选的第二运动矢量候选集合中预测图像块的分区的运动矢量,并执行进一步的处理。
图60是示出根据一个实施例的以下过程流程的示例的流程图:从第一分区和第二分区的运动矢量候选集合中导出第一分区的运动矢量和第二分区的运动矢量,并执行进一步的处理。
图61是示出用于实现内容分发服务的内容提供系统的整体配置的框图。
图62是示出可缩放编码中的编码结构的一个示例的概念图。
图63是示出可缩放编码中的编码结构的一个示例的概念图。
图64是示出网页的显示屏幕的示例的概念图。
图65是示出网页的显示屏幕的示例的概念图。
图66是示出智能电话的一个示例的框图。
图67是示出智能电话的配置的示例的框图。
具体实施方式
在下文中,将参考附图描述实施例。注意,以下描述的实施例均示出一般或特定示例。在以下实施例中指示的数值、形状、材料、组件、组件的布置和连接、步骤、步骤的关系和顺序等仅是示例,而无意于限制权利要求的范围。
下面将描述编码器和解码器的实施例。实施例是编码器和解码器的示例,在本公开的方面的描述中呈现的过程和/或配置可应用于编码器和解码器。所述过程和/或配置也可以在不同于根据实施例的编码器和解码器的编码器和解码器中实现。例如,关于应用于实施例的过程和/或配置,可以实现以下任何一种:
(1)根据在本公开的方面的描述中呈现的实施例的编码器或解码器的任何组件可以用在本公开的方面的描述中任何地方呈现的另一组件替代或与之组合。
(2)在根据实施例的编码器或解码器中,可以对由编码器或解码器的一个或多个组件执行的功能或过程进行任意改变,例如功能或过程的增加、替换、移除等。例如,任何功能或过程可以用在本公开的各方面的描述中任何地方出现的另一功能或过程替代或与之组合。
(3)在由根据实施例的编码器或解码器实现的方法中,可以进行任意改变,例如添加、替换和移除该方法中包括的一个或多个过程。例如,该方法中的任何过程可以用在本公开的方面的描述中任何地方出现的另一过程代替或与之组合。
(4)根据实施例的包括在编码器或解码器中的一个或多个组件可以与本公开的各方面的描述中的任何地方呈现的组件组合,可以与包括在本公开的各个方面的描述中的任何地方的一个或多个功能呈现的组件组合,并且可以与实现由在本公开的各方面的描述中呈现的组件实现的一个或多个过程的组件组合。
(5)可以将包括根据实施例的编码器或解码器的一个或多个功能的组件、或实现根据实施例的编码器或解码器的一个或多个过程的组件与在本公开的各方面的描述中的任何地方呈现的组件、与包括在本公开的各方面的描述中的任何地方呈现的一个或多个功能的组件或与实现在本公开的各方面的描述中的任何地方呈现的一个或多个过程的组件组合或用其替换。
(6)在由根据实施例的编码器或解码器实现的方法中,该方法中包括的任何过程可以用本公开的各方面的描述中任何地方呈现的过程或与任何对应或等同的过程进行替换或与之组合。
(7)可以将根据实施例的由编码器或解码器实现的方法中包括的一个或多个过程与本公开的各方面的描述中任何地方呈现的过程组合。
(8)在本公开的方面的描述中呈现的过程和/或配置的实现不限于根据实施例的编码器或解码器。例如,可以在用于与实施例中公开的运动图像编码器或运动图像解码器不同的目的的设备中实现过程和/或配置。
(编码器)
首先,将描述根据实施例的编码器。图1是示出根据实施例的编码器100的功能配置的框图。编码器100是视频编码器,其以块为单位对视频进行编码。
如图1所示,编码器100是一种以块为单位对图像进行编码的装置,包括分割器102、减法器104、变换器106、量化器108、熵编码器110、逆量化器112、逆变换器114、加法器116、块存储器118、环路滤波器120、帧存储器122、帧内预测器124、帧间预测器126和预测控制器128。
编码器100被实现为例如通用处理器和存储器。在这种情况下,当处理器执行存储在存储器中的软件程序时,处理器用作分割器102、减法器104、变换器106、量化器108、熵编码器110、逆量化器112、逆变换器114、加法器116、环路滤波器120、帧内预测器124、帧间预测器126和预测控制器128。可替代地,编码器100可以被实现为对应于分割器102、减法器104、变换器106、量化器108、熵编码器110、逆量化器112、逆变换器114、加法器116、环路滤波器120、帧内预测器124、帧间预测器126和预测控制器128的一个或多个专用电子电路。
在下文中,描述了由编码器100执行的过程的总体流程,然后将描述被包括在编码器100中的每个组成元件。
(编码过程的总体流程)
图2是示出由编码器100执行的整体编码过程的一个示例的流程图。
首先,编码器100的分割器102将包括在作为视频的输入图像中的每个图片分割成具有固定大小(例如128×128像素)的多个块(步骤Sa_1)。然后,分割器102为固定尺寸的块选择分割图案(也称为块形状)(步骤Sa_2)。换句话说,分割器102进一步将固定尺寸的块分割成形成所选择的分割图案的多个块。针对多个块中的每个块,编码器100针对该块(即,要编码的当前块)执行步骤Sa_3至Sa_9。
换句话说,包括帧内预测器124、帧间预测器126和预测控制器128的全部或一部分的预测处理器生成要编码的当前块(也称为当前块)的预测信号(也称为预测块)(步骤Sa_3)。
接下来,减法器104生成当前块和预测块之间的差作为预测残差(也称为差块)(步骤Sa_4)。
接下来,变换器106对差块进行变换,并且量化器108对结果进行量化,以生成多个量化系数(步骤Sa_5)。注意,具有多个量化系数的块也称为系数块。
接下来,熵编码器110对系数块和与预测信号的生成有关的预测参数进行编码(具体地,熵编码)以生成编码信号(步骤Sa_6)。要注意的是,编码信号也被称为编码比特流、压缩比特流或流。
接下来,逆量化器112对系数块进行逆量化,并且逆变换器114对结果进行逆变换,以恢复多个预测残差(即,差块)(步骤Sa_7)。
接下来,加法器116将预测块添加到恢复的差块,以将当前块重构为重构图像(也称为重构块或解码图像块)(步骤Sa_8)。这样,生成了重构图像。
当生成重构图像时,环路滤波器120根据需要对重构图像进行滤波(步骤Sa_9)。
编码器100然后确定整个图片的编码是否已经完成(步骤Sa_10)。当确定尚未完成编码时(步骤Sa_10中为否),重复执行来自步骤Sa_2的过程。
尽管在上述示例中,编码器100为固定大小的块选择一个分割图案,并根据该分割图案对每个块进行编码,但是要注意,可以根据多个分割图案中的对应一个对每个块进行编码。在这种情况下,编码器100可以评估多个分割图案中的每一个的成本,并且例如可以选择通过根据产生最小成本的分割图案对作为输出的编码信号进行编码可获得的编码信号。
如图所示,步骤Sa_1至Sa_10中的过程由编码器100顺序执行。可替代地,可以并行执行两个或更多个过程,可以对过程进行重新排序,等等。
(分割器)
分割器102将输入视频中包括的每个图片分割成多个块,并且将每个块输出到减法器104。例如,分割器102首先将图片分割成固定大小(例如128×128)的块。可以采用其他固定的块大小。固定大小的块也称为编码树单元(CTU)。然后,分割器102基于递归四叉树和/或二叉树块分割,将每个固定大小的块分割为可变大小的块(例如64×64或更小)。换句话说,分割器102选择分割图案。可变大小块也称为编码单元(CU)、预测单元(PU)或变换单元(TU)。要注意的是,在各种处理示例中,不需要在CU、PU和TU之间进行区分。图片中的全部或一些块可以在CU、PU或TU的单元中进行处理。
图3是示出根据实施例的块分割的一个示例的概念图。在图3中,实线表示通过四叉树块分割而划分的块的块边界,而虚线表示通过二叉树块分割而划分的块的块边界。
在此,块10是具有128×128像素的正方形块(128×128块)。首先将该128×128块10分割成四个正方形的64×64块(四叉树块分割)。
左上方的64×64块进一步垂直分割为两个矩形32×64块,而左方的32×64块进一步垂直分割为两个矩形16×64块(二叉树块分割)。结果,左上方的64×64块被分割成两个16×64块11和12以及一个32×64块13。
右上方的64×64块在水平方向上被分割为两个矩形64×32块14和15(二叉树块分割)。
首先将左下方的64×64块分割成四个正方形的32×32块(四叉树块分割)。将四个32×32块之中的左上方块和右下方块进一步分割。左上方的32×32块在垂直方向上分割为两个矩形的16×32块,并且右方的16×32块在水平方向上进一步分割为两个16×16块(二叉树块分割)。右下方的32×32块被水平分割为两个32×16块(二叉树块分割)。结果,左下方的64×64块被分割成16×32块16、两个16×16块17和18、两个32×32块19和20以及两个32×16块21和22。
右下方的64×64块23未被分割。
如上所述,在图3中,基于递归四叉树和二叉树块分割,块10被分割为十三个可变大小块11至23。这种分割类型也称为四叉树加二叉树(QTBT)分割。
要注意的是,在图3中,一个块被分割成四个或两个块(四叉树或二叉树块分割),但是分割不限于这些示例。例如,可以将一个块分割成三个块(三元块分割)。包括这种三元块分割的分割也被称为多类型树(MBT)分割。
(图片结构:切片/图块)
可以以一个或多个切片或图块为单位配置图片,以便对图片进行并行解码。以一个或多个切片或图块为单位配置的图片可以由分割器102配置。
切片是图片中包含的基本编码单位。图片可以包括例如一个或多个切片。另外,切片包括一个或多个连续的编码树单元(CTU)。
图4A是示出切片配置的一个示例的概念图。例如,图片包括11×8个CTU,并被分割为四个切片(切片1-4)。切片1包含16个CTU,切片2包含21个CTU,切片3包含29个CTU,并且切片4包含22个CTU。在此,图片中的每个CTU都属于切片之一。每个切片的形状是通过水平分割图片而可获得的形状。每个切片的边界不需要与图像一端一致,并且可以与图像中的CTU之间的任何边界一致。切片中的CTU的处理顺序(编码顺序或解码顺序)例如是光栅扫描顺序。切片包括报头信息和编码数据。切片的特征可以在报头信息中描述。这些特征包括切片中顶部CTU的CTU地址、切片类型等。
图块是图片中包括的矩形区域的单位。可以以光栅扫描顺序为每个图块指派称为TileId的数字。
图4B是指示图块配置的示例的概念图。例如,图片包括11×8个CTU,并被分割成四个矩形区域的图块(图块1至4)。当使用图块时,CTU的处理顺序从不使用图块的情况下的处理顺序改变。当不使用图块时,图片中的CTU按光栅扫描顺序处理。在使用图块时,每个图块中的至少一个CTU以光栅扫描顺序进行处理。例如,如图4B所示,图块1中包括的CTU的处理顺序是从图块1的第一行的左端开始向图块1的第一行的右端然后从图块1的第二行的左端开始向图块1的第二行的右端的顺序。
要注意的是,一个图块可以包括一个或多个切片,并且一个切片可以包括一个或多个图块。
(减法器)
减法器104以从分割器102输入并由分割器102分割的块为单位,从原始信号(原始样本)中减去预测信号(从下面指示的预测控制器128输入的预测样本)。换句话说,减法器104计算要编码的块(以下也称为当前块)的预测误差(也称为残差)。减法器104然后将计算出的预测误差(残差)输出到变换器106。
原始信号是已经输入到编码器100中并且表示视频中包括的每个图片的图像(例如,亮度信号和两个色度信号)的信号。在下文中,表示图像的信号也称为样本。
(变换器)
变换器106将空间域中的预测误差变换成频域中的变换系数,并将变换系数输出到量化器108。更具体地,变换器106将例如定义的离散余弦变换(DCT)或离散正弦变换(DST)应用于空间域中的预测误差。定义的DCT或DST可以是预定义的。
要注意的是,变换器106可以从多个变换类型之中自适应地选择变换类型,并且可以通过使用与所选择的变换类型相对应的变换基函数来将预测误差变换为变换系数。这种类型的变换也称为显式多核变换(EMT)或自适应多变换(AMT)。
变换类型包括例如DCT-II、DCT-V、DCT-VIII、DST-I和DST-VII。图5A是指示用于示例变换类型的变换基函数的图。在图5A中,N指示输入像素的数量。例如,从多种变换类型之中选择变换类型可以取决于预测类型(帧内预测和帧间预测之一),并且可以取决于帧内预测模式。
指示是应用这种EMT还是AMT的信息(例如,称为EMT标志或AMT标志)以及指示所选择的变换类型的信息通常在CU级别上用信号传送。要注意的是,这种信息的信令不一定需要在CU级别上执行,而可以在另一个级别(例如,在比特序列级别、图片级别、切片级别、图块级别或CTU级别)上执行。
另外,变换器106可以重新变换变换系数(变换结果)。这种重新变换也称为自适应二次变换(AST)或不可分离的二次变换(NSST)。例如,变换器106以与帧内预测误差相对应的变换系数块中包括的子块(例如,4×4的子块)为单位执行重新变换。指示是否应用NSST的信息和与要在NSST中使用的变换矩阵有关的信息通常在CU级别上用信号传送。要注意的是,这种信息的信令不一定需要在CU级别上执行,而可以在另一个级别(例如,在序列级别、图片级别、切片级别、图块级别或CTU级别)上执行。
变换器106可以采用可分离变换和不可分离变换。可分离变换是这样一种方法,其中通过根据输入的维数对多个方向中的每一个分别执行变换来多次执行变换。不可分离变换是一种执行集体变换的方法,其中将多维输入中的两个或更多个维度共同视为单个维度。
在不可分离变换的一个示例中,当输入是4×4块时,该4×4块被视为包含16个元素的单个数组,并且该变换将16×16变换矩阵应用于该数组。
在不可分离变换的另一个示例中,将4×4输入块视为包含16个元素的单个数组,然后可以执行对数组进行多次给定旋转的变换(超立方体给定变换)。
在变换器106中的变换中,可以根据CU中的区域来切换要变换到频域中的基础的类型。示例包括空间变化变换(SVT)。如图5B所示,在SVT中,CU在水平或垂直方向上被分割成两个相等的区域,并且仅一个区域被变换到频域。可以为每个区域设置变换基础类型。例如,使用DST7和DST8。在此示例中,CU中的这两个区域中的仅一个被变换,并且另一个不被变换。但是,这两个区域都可以被变换。另外,分割方法不限于分割成两个相等的区域,而是可以更加灵活。例如,CU可以被分割成四个相等的区域,或者指示分割的信息可以被单独地编码并且以与CU分割相同的方式被用信号传送。要注意的是,SVT也被称为子块变换(SBT)。
(量化器)
量化器108量化从变换器106输出的变换系数。更具体地,量化器108以确定的扫描顺序扫描当前块的变换系数,并且基于与这些变换系数相对应的量化参数(QP)来量化扫描的变换系数。量化器108然后将当前块的量化的变换系数(以下也称为量化系数)输出到熵编码器110和逆量化器112。确定的扫描顺序可以是预定的。
所确定的扫描顺序是用于对变换系数进行量化/逆量化的顺序。例如,确定的扫描顺序可以被定义为频率的升序(从低频到高频)或频率的降序(从高频到低频)。
量化参数(QP)是定义量化步长(量化宽度)的参数。例如,当量化参数的值增加时,量化步长也增加。换句话说,当量化参数的值增加时,量化误差增加。
另外,量化矩阵可以用于量化。例如,几种量化矩阵可以与以下各项相对应地使用:频率变换大小(例如4×4和8×8)、诸如帧内预测和帧间预测之类的预测模式、以及诸如亮度和色度像素分量之类的像素分量。要注意的是,量化是指将以与确定的水平相对应地确定的间隔采样的值数字化。在本技术领域中,可以使用诸如舍入和缩放之类的其他表达来引用量化,并且量化可以采用舍入和缩放。所确定的间隔和级别可以是预定的。
使用量化矩阵的方法包括使用直接在编码器侧设置的量化矩阵的方法和使用已设置为默认(默认矩阵)的量化矩阵的方法。在编码器侧,可以通过直接设置量化矩阵来设置适合于图像的特征的量化矩阵。然而,这种情况具有增加用于对量化矩阵进行编码的编码量的缺点。
存在不使用量化矩阵来量化高频系数和低频系数的方法。要注意的是,该方法等效于使用其系数具有相同值的量化矩阵(平面矩阵)的方法。
可以使用例如序列参数集(SPS)或图片参数集(PPS)来指定量化矩阵。SPS包括用于序列的参数,并且PPS包括用于图片的参数。SPS和PPS中的每一个都可以简称为参数集。
(熵编码器)
熵编码器110基于已经从量化器108输入的量化系数来生成编码信号(编码比特流)。更具体地,例如,熵编码器110对量化系数进行二进制化并且对二进制信号进行算术编码,并且输出压缩比特流或序列。
(逆量化器)
逆量化器112对已经从量化器108输入的量化系数进行逆量化。更具体地,逆量化器112以确定的扫描顺序对当前块的量化系数进行逆量化。逆量化器112然后将当前块的逆量化后的变换系数输出到逆变换器114。确定的扫描顺序可以是预定的。
(逆变换器)
逆变换器114通过对从逆量化器112输入的变换系数进行逆变换来恢复预测误差(残差)。更具体地说,逆变换器114通过对变换系数应用与变换器106所施加的变换相对应的逆变换来恢复当前块的预测误差。逆变换器114然后将恢复的预测误差输出到加法器116。
注意,由于信息在量化中丢失,所以恢复的预测误差与减法器104计算出的预测误差不匹配。换句话说,恢复的预测误差通常包括量化误差。
(加法器)
加法器116通过将已从逆变换器114输入的预测误差和已从预测控制器128输入的预测样本相加来重构当前块。加法器116然后将重构的块输出到块存储器118和环路滤波器120。重构块也称为本地解码块。
(块存储器)
块存储器118例如是用于存储要在帧内预测中参考的要编码的图片(在下文中称为当前图片)中的块的存储装置。更具体地说,块存储器118存储从加法器116输出的重构块。
(帧存储器)
帧存储器122例如是用于存储在帧间预测中使用的参考图片的存储装置,并且也被称为帧缓冲器。更具体地说,帧存储器122存储由环路滤波器120滤波的重构块。
(环路滤波器)
环路滤波器120将环路滤波器应用于由加法器116重构的块,并将滤波后的重构块输出至帧存储器122。环路滤波器是在编码环路中使用的滤波器(环路内滤波器),并且包括例如:解块滤波器(DF或DBF)、样本自适应偏移(SAO)和自适应环路滤波器(ALF)。
在ALF中,应用了用于消除压缩伪影的最小二乘误差滤波器。例如,针对当前块中的2×2子块中的每一个,应用基于局部梯度的方向和活动性(activity)从多个滤波器之中选择的一个滤波器。
更具体地,首先,将每个子块(例如,每个2×2子块)分类到多个类别(例如,十五或二十五个类别)中的一个中。子块的分类基于梯度方向性和活动性。例如,基于梯度方向性D(例如0至2或0至4)和梯度活动性A(例如0至4)来导出分类索引C(例如C=5D+A)。然后,基于分类索引C,将每个子块分类到多个类别中的一个中。
例如,通过比较多个方向(例如,水平方向、垂直方向和两个对角线方向)的梯度来计算梯度方向性D。而且,例如,通过将多个方向的梯度相加并对相加结果进行量化来计算出梯度活动性A。
基于这种分类的结果,从多个滤波器之中确定要用于每个子块的滤波器。
在ALF中使用的滤波器形状是例如圆形对称滤波器形状。图6A至图6C示出了ALF中使用的滤波器形状的示例。图6A示出了5×5菱形滤波器。图6B示出了7×7菱形滤波器。图6C示出了9×9菱形滤波器。指示滤波器形状的信息通常在图片级别上用信号传送。要注意的是,指示滤波器形状的信息的信令这种不一定需要在图片级别执行,而可以在另一级别(例如,在序列级别、切片级别、图块级别、CTU级别或CU级别)执行。
例如,在图片级别或CU级别确定ALF的开启或关闭。例如,可以在CU级别上做出是否将ALF应用于亮度的决策,并且可以在图片级别上做出是否将ALF应用于色度的决策。指示ALF开启或关闭的信息通常在图片级别或CU级别上发送。注意,指示ALF的开启或关闭的信息的信令不一定需要在图片级别或CU级别上执行,并且可以在另一级别(例如,在序列级别、切片级别、图块级别或CTU级别)上执行。
通常在图片级别上用信号传送为多个可选择的滤波器(例如,十五个或多达二十五个滤波器)设置的系数。要注意的是,所设置的系数的信令不一定需要在图片级别上执行,而可以在另一级别(例如,在序列级别、切片级别、图块级别、CTU级别、CU级别或子块级别)上执行。
(环路滤波器>解块滤波器)
在解块滤波器中,环路滤波器120对重构图像中的块边界执行滤波过程,以便减少在块边界处发生的失真。
图7是示出用作解块滤波器的环路滤波器120的特定配置的一个示例的框图。
环路滤波器120包括:边界确定器1201;滤波器确定器1203;滤波执行器1205;过程确定器1208;滤波器特性确定器1207;以及开关1202、1204和1206。
边界确定器1201确定在块边界周围是否存在要被解块滤波的像素(即,当前像素)。边界确定器1201然后将确定结果输出到开关1202和处理确定器1208。
在边界确定器1201已确定在块边界周围存在当前像素的情况下,开关1202将未滤波的图像输出到开关1204。在相反的情况下(其中,边界确定器1201确定在块边界周围不存在当前像素),开关1202将未滤波的图像输出到开关1206。
滤波器确定器1203基于位于当前像素周围的至少一个周围像素的像素值,来确定是否对当前像素执行解块滤波。然后,滤波器确定器1203将确定结果输出到开关1204和处理确定器1208。
在滤波器确定器1203已经确定要对当前像素执行解块滤波的情况下,开关1204将通过开关1202获得的未滤波图像输出到滤波执行器1205。在相反的情况下(其中,滤波器确定器1203已经确定了不对当前像素执行解块滤波),开关1204将通过开关1202获得的未滤波图像输出到开关1206。
当通过开关1202和1204获得未滤波图像时,滤波执行器1205针对当前像素执行由滤波器特性确定器1207确定的滤波特性的解块滤波。滤波执行器1205然后将滤波后的像素输出至开关1206。
在处理确定器1208的控制下,开关1206选择性地输出尚未被解块滤波的像素和已被滤波执行器1205解块滤波的像素。
处理确定器1208基于边界确定器1201和滤波器确定器1203做出的确定结果来控制开关1206。换句话说,当边界确定器1201已经确定块边界周期存在当前像素并且滤波器确定器1203已经确定对当前像素执行解块滤波时,处理确定器1208使开关1206输出已被解块滤波的像素。另外,除了上述情况之外,处理确定器1208使开关1206输出尚未被解块滤波的像素。通过以这种方式重复像素的输出,从开关1206输出滤波后的图像。
图8是示出关于块边界具有对称滤波特性的解块滤波器的示例的概念图。
在解块滤波器过程中,使用像素值和量化参数来选择具有不同特性的两个解块滤波器之一,即强滤波器和弱滤波器。在强滤波器的情况下,如图8所示,跨块边界存在像素p0至p2和像素q0至q2,通过例如根据以下表达式进行计算,将相应像素q0至q2的像素值改变为像素值q’0至q’2。
q’0=(p1+2×p0+2×q0+2×q1+q2+4)/8
q’1=(p0+q0+q1+q2+2)/4
q’2=(p0+q0+q1+3×q2+2×q3+4)/8
注意,在以上表达式中,p0至p2和q0至q2是相应像素p0至p2和像素q0至q2的像素值。另外,q3是相对于块边界位于像素q2的相反侧的相邻像素q3的像素值。另外,在每个表达式的右侧,与要用于解块滤波的像素的相应像素值相乘的系数是滤波器系数。
此外,在解块滤波中,可以执行削波(clipping),使得计算出的像素值不设置为高于阈值。在削波过程中,使用基于量化参数确定的阈值,将根据以上表达式计算的像素值削波为根据“计算像素值±2×阈值”获得的值。这样,可以防止过度的平滑化。
图9是用于示出对其执行解块滤波过程的块边界的概念图。图10是指示Bs值的示例的概念图。
对其执行解块滤波过程的块边界例如是如图9所示的具有8×8像素块的预测单元(PU)之间的边界或变换单元(TU)之间的边界。解块滤波过程可以以四行或四列为单位执行。首先,对于图9中所示的块P和块Q,如图10所指示地确定边界强度(Bs)值。
根据图10中的Bs值,确定是否使用不同的强度对属于同一图像的块边界执行解块滤波过程。当Bs值为2时,执行针对色度信号的解块滤波过程。当Bs值为1或以上且满足确定条件时,对亮度信号进行解块滤波过程。确定的条件可以是预定的。要注意的是,用于确定Bs值的条件不限于图10中所示的那些,并且Bs值可以基于另一个参数来确定。
(预测处理器(帧内预测器、帧间预测器、预测控制器))
图11是示出由编码器100的预测处理器执行的过程的一个示例的流程图。要注意的是,预测处理器包括以下组成元件的全部或一部分:帧内预测器124;帧间预测器126;以及预测控制器128。
预测处理器生成当前块的预测图像(步骤Sb_1)。该预测图像也称为预测信号或预测块。要注意的是,预测信号例如是帧内预测信号或帧间预测信号。具体地,预测处理器使用已经通过生成预测块、生成差块、生成系数块、恢复差块以及生成解码图像块来生成当前块的预测图像。
重构图像可以是例如参考图片中的图像,或者是当前图片中的编码块的图像,当前图片是包括当前块的图片。当前图片中的编码块例如是当前块的相邻块。
图12是示出由编码器100的预测处理器执行的过程的另一示例的流程图。
预测处理器使用第一方法生成预测图像(步骤Sc_1a),使用第二方法生成预测图像(步骤Sc_1b),并且使用第三方法生成预测图像(步骤Sc_1c)。第一方法、第二方法和第三方法可以是用于生成预测图像的彼此不同的方法。第一至第三方法中的每一个可以是帧间预测方法、帧内预测方法或另一预测方法。在这些预测方法中可以使用上述重构图像。
接下来,预测处理器选择在步骤Sc_1a、Sc_1b和Sc_1c中生成的多种预测方法中的任何一种(步骤Sc_2)。预测图像的选择(即,用于获得最终预测图像的方法或模式的选择)可以通过针对每个生成的预测图像计算成本并且基于该成本来进行。可替代地,可以基于在编码过程中使用的参数来进行预测图像的选择。编码器100可以将用于识别选择的预测图像、方法或模式的信息转换为编码信号(也称为编码比特流)。该信息可以是例如标志等。以这种方式,解码器能够根据在编码器100中基于信息选择的方法或模式来生成预测图像。要注意的是,在图12所示的示例中,在使用相应方法生成预测图像之后,预测处理器选择任何预测图像。然而,预测处理器可以在生成预测图像之前基于在上述编码过程中使用的参数来选择方法或模式,并且可以根据选择的方法或模式来生成预测图像。
例如,第一方法和第二方法可以分别是帧内预测和帧间预测,并且预测处理器可以从根据预测方法生成的预测图像中为当前块选择最终预测图像。
图13是示出由编码器100的预测处理器执行的过程的另一示例的流程图。
首先,预测处理器使用帧内预测来生成预测图像(步骤Sd_1a),并且使用帧间预测来生成预测图像(步骤Sd_1b)。注意,通过帧内预测生成的预测图像也称为帧内预测图像,并且通过帧间预测生成的预测图像也称为帧间预测图像。
接下来,预测处理器评估帧内预测图像和帧间预测图像中的每一个(步骤Sd_2)。评估中可以使用成本。换句话说,预测处理器针对帧内预测图像和帧间预测图像中的每一个计算成本C。可以根据RD优化模型的表达式来计算成本C,例如,C=D+λ×R。在该表达式中,D表示预测图像的编码失真,并且例如被表示为当前块的像素值和预测图像的像素值之间的绝对差的总和。另外,R表示预测图像的预测编码量,具体而言,是对用于生成预测图像的运动信息等进行编码所需的编码量。另外,λ表示例如根据拉格朗日乘法器的方法的乘法器。
然后,预测处理器在帧内预测图像和帧间预测图像之中选择已经计算出最小成本C的预测图像作为当前块的最终预测图像(步骤Sd_3)。换句话说,选择用于生成当前块的预测图像的预测方法或模式。
(帧内预测器)
帧内预测器124通过参考当前图片中的并且存储在块存储器118中的一个块或多个块来执行当前块的帧内预测(也称为帧内的预测),来生成预测信号(帧内预测信号)。更具体地,帧内预测器124通过参考与当前块相邻的一个或多个块的样本(例如,亮度和/或色度值)执行帧内预测来生成帧内预测信号,然后将帧内预测信号输出至预测控制器128。
例如,帧内预测器124通过使用已经定义的多个帧内预测模式之中的一种模式来执行帧内预测。帧内预测模式包括一个或多个非定向预测模式和多个定向预测模式。定义的模式可以是预定义的。
一种或多种非定向预测模式包括例如在H.265/高效视频编码(HEVC)标准中定义的平面预测模式和DC预测模式。
多个定向预测模式例如包括在H.265/HEVC标准中定义的33个定向预测模式。要注意的是,除了33个定向预测模式之外,多个定向预测模式还可以包括32个定向预测模式(总共65个定向预测模式)。图14是示出可以在帧内预测中使用的总共六十七个帧内预测模式(两个非定向预测模式和六十五个定向预测模式)的概念图。实线箭头表示在H.265/HEVC标准中定义的33个方向,而虚线箭头表示附加的32个方向(图14中未示出两个非定向预测模式)。
在各种处理示例中,可以在色度块的帧内预测中参考亮度块。换句话说,可以基于当前块的亮度分量来预测当前块的色度分量。这种帧内预测也称为跨分量线性模型(CCLM)预测。可以添加针对参考这样的亮度块的色度块的帧内预测模式(也称为例如CCLM模式),作为针对色度块的帧内预测模式之一。
帧内预测器124可以基于水平/垂直参考像素梯度来校正帧内预测的像素值。伴随这种校正的帧内预测也称为位置相关帧内预测组合(PDPC)。指示是否应用PDPC的信息(例如,称为PDPC标志)通常在CU级别上用信号传送。要注意的是,这种信息的信令不一定需要在CU级别上执行,而可以在另一个级别(例如,在序列级别、图片级别、切片级别、图块级别或CTU级别)上执行。
(帧间预测器)
帧间预测器126通过参考参考图片(其与当前图片不同且被存储在帧存储器122中)中的一个或多个块来执行当前块的帧间预测(也称为帧间的预测),来生成预测信号(帧间预测信号)。帧间预测以当前块或当前块中的当前子块(例如,4×4块)为单位执行。例如,帧间预测器126在当前块或当前子块的参考图片中执行运动估计,并找出最佳匹配当前块或当前子块的参考块或子块。然后,帧间预测器126获得补偿从参考块或子块到当前块或子块的运动或变化的运动信息(例如,运动矢量)。帧间预测器126通过基于运动信息执行运动补偿(或运动预测)来生成当前块或子块的帧间预测信号。帧间预测器126将生成的帧间预测信号输出到预测控制器128。
在运动补偿中使用的运动信息可以以各种形式作为帧间预测信号用信号传送。例如,可以用信号传送运动矢量。作为另一示例,可以用信号传送运动矢量和运动矢量预测器之间的差。
(帧间预测的基本流程)
图15是示出帧间预测的示例基本处理流程的流程图。
首先,帧间预测器126生成预测信号(步骤Se_1至Se_3)。接下来,减法器104生成当前块和预测图像之间的差作为预测残差(步骤Se_4)。
这里,在预测图像的生成中,帧间预测器126通过确定当前块的运动矢量(MV)(步骤Se_1和Se_2)和运动补偿(步骤Se_3)来生成预测图像。此外,在确定MV时,帧间预测器126通过选择运动矢量候选(MV候选)(步骤Se_1)和导出MV(步骤Se_2)来确定MV。通过例如从MV候选列表中选择至少一个MV候选来进行MV候选的选择。可替代地,在MV的导出中,帧间预测器126可以进一步从至少一个MV候选中选择至少一个MV候选,并且将所选择的至少一个MV候选确定为当前块的MV。可替代地,帧间预测器126可以通过在由所选择的至少一个MV候选中的每个候选所指定的参考图片区域中执行估计来确定当前块的MV。注意,参考图片区域中的估计可以被称为运动估计。
另外,尽管在上述示例中由帧间预测器126执行步骤Se_1至Se_3,但是可以由编码器100中包括的另一组成元件执行过程(其是例如步骤Se_1、步骤Se_2等)。
(运动矢量导出流程)
图16是示出运动矢量导出的一个示例的流程图。
帧间预测器126以用于对运动信息进行编码的模式(例如,MV)来导出当前块的MV。在这种情况下,例如,运动信息被编码为预测参数,并用信号传送。换句话说,编码的运动信息被包括在编码信号(也称为编码比特流)中。
可替代地,帧间预测器126以不对运动信息进行编码的模式来导出MV。在这种情况下,在编码信号中不包括运动信息。
在此,MV导出模式可以包括稍后描述的常规帧间模式、合并模式、FRUC模式、仿射模式等。在其中对运动信息进行编码的模式包括常规帧间模式、合并模式、仿射模式(具体来说,仿射帧间模式和仿射合并模式)等。要注意,运动信息可以不仅包括MV,而且包括运动矢量预测器选择信息,其将在稍后描述。没有运动信息被编码的模式包括FRUC模式等。帧间预测器126从这些模式中选择用于导出当前块的MV的模式,并使用所选择的模式来导出当前块的MV。
图17是示出运动矢量的导出的另一示例的流程图。
帧间预测器126以对MV差进行编码的模式来导出当前块的MV。在这种情况下,例如,MV差被编码为预测参数,并且用信号传送。换句话说,编码的MV差被包括在编码信号中。MV差是当前块的MV与MV预测器之间的差。
可替代地,帧间预测器126以不对MV差编码的模式导出MV。在这种情况下,在编码信号中不包括编码的MV差。
在此,如上所述,MV导出模式包括稍后描述的常规帧间模式、合并模式、FRUC模式、仿射模式等。在其中对MV差进行编码的模式包括常规帧间模式、仿射模式(具体地,仿射帧间模式)等。在其中没有对MV差进行编码的模式包括FRUC模式、合并模式、仿射模式(具体地,仿射合并模式)等。帧间预测器126从多个模式中选择用于导出当前块的MV的模式,并使用所选择的模式来导出当前块的MV。
(运动矢量导出流程)
图18是示出运动矢量的导出的另一示例的流程图。作为帧间预测模式的MV导出模式包括多个模式,并且大致分为在其中对MV差进行编码的模式和在其中不对运动矢量差进行编码的模式。在其中不对MV差进行编码的模式包括合并模式、FRUC模式、仿射模式(具体地,仿射合并模式)等。这些模式将稍后详细描述。简而言之,合并模式是用于通过从编码的周围块中选择运动矢量来导出当前块的MV的模式,而FRUC模式是用于通过在编码区域之间执行估计来导出当前块的MV的模式。仿射模式是用于导出当前块中包括的多个子块中的每个子块的运动矢量作为当前块的MV的模式(假设仿射变换)。
更具体地,如所示,当帧间预测模式信息指示0(Sf_1中为0)时,帧间预测器126使用合并模式(Sf_2)导出运动矢量。当帧间预测模式信息指示为1(Sf_1中为1)时,帧间预测器126使用FRUC模式(Sf_3)导出运动矢量。当帧间预测模式信息指示为2(Sf_1中为2)时,帧间预测器126使用仿射模式(具体地说,仿射合并模式)(Sf_4)导出运动矢量。当帧间预测模式信息指示3时(Sf_1中为3),帧间预测器126使用在其中对MV差进行编码的模式(例如,常规帧间模式(Sf_5))来导出运动矢量。
(MV导出>常规帧间模式)
常规帧间模式是一种帧间预测模式,其用于从类似于由MV候选指定的参考图片区域中基于与当前块的图像相似的块来导出当前块的MV。在该常规帧间模式下,对MV差进行编码。
图19是示出常规帧间模式下的帧间预测的示例的流程图。
首先,帧间预测器126基于诸如在时间上或空间上围绕当前块的多个编码块的MV之类的信息,获得当前块的多个MV候选(步骤Sg_1)。换句话说,帧间预测器126生成MV候选列表。
接下来,帧间预测器126根据所确定的优先级顺序从在步骤Sg_1中获得的多个MV候选中提取N(2或更大的整数)个MV候选作为运动矢量预测器候选(也称为MV预测器候选)(步骤Sg_2)。注意,可以针对N个MV候选中的每一个预先确定优先级顺序。
接下来,帧间预测器126从N个运动矢量预测器候选中选择一个运动矢量预测器候选,作为当前块的运动矢量预测器(也称为MV预测器)(步骤Sg_3)。此时,帧间预测器126在流中编码用于识别所选择的运动矢量预测器的运动矢量预测器选择信息。应当注意,流是如上所述的编码信号或编码比特流。
接下来,帧间预测器126通过参考编码的参考图片来导出当前块的MV(步骤Sg_4)。此时,帧间预测器126还在流中将导出的MV和运动矢量预测器之间的差值编码为MV差。要注意的是,编码参考图片是包括在编码之后已经被重构的多个块的图片。
最后,帧间预测器126通过使用导出的MV和编码的参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤Sg_5)。注意,如上所述,预测图像是帧间预测信号。
另外,将表示用于生成预测图像的帧间预测模式(在上述示例中为常规帧间模式)的信息例如编码为预测参数。
应当注意,MV候选列表也可以用作在另一模式中使用的列表。另外,与MV候选列表有关的过程可以应用于与列表有关的过程,以用于另一模式。与MV候选列表有关的过程包括例如从MV候选列表中提取或选择MV候选、MV候选的重新排序或MV候选的删除。
(MV导出>合并模式)
合并模式是一种帧间预测模式,其用于从MV候选列表中选择MV候选作为当前块的MV,从而导出MV。
图20是示出合并模式下的帧间预测的示例的流程图。
首先,帧间预测器126基于诸如在时间上或空间上围绕当前块的多个编码块的MV之类的信息,来获得当前块的多个MV候选(步骤Sh_1)。换句话说,帧间预测器126生成MV候选列表。
接下来,帧间预测器126从在步骤Sh_1中获得的多个MV候选中选择一个MV候选,从而导出当前块的MV(步骤Sh_2)。此时,帧间预测器126在流中对用于识别所选择的MV候选的MV选择信息进行编码。
最后,帧间预测器126通过使用导出的MV和编码的参考图片执行当前块的运动补偿,来生成当前块的预测图像(步骤Sh_3)。
另外,例如,将指示用于生成预测图像并被包括在编码信号中的帧间预测模式(在以上示例中为合并模式)的信息编码为预测参数。
图21是用于示出合并模式下的当前图片的运动矢量导出过程的一个示例的概念图。
首先,生成MV候选列表,其中MV预测器候选被登记。MV预测器候选的示例包括:空间相邻的MV预测器,其是空间上围绕当前块的多个编码块的MV;时间相邻的MV预测器,是在其上投影了当前块在编码参考图片中的位置的周围块的MV;组合MV预测器,其是通过将空间相邻的MV预测器的MV值和时间相邻的MV预测器的MV进行组合而生成的MV;以及零MV预测器,其是具有零值的MV。
接下来,从登记在MV预测器列表中的多个MV预测器中选择一个MV预测器,并且将所选择的MV预测器确定为当前块的MV。
此外,可变长度编码器在流中描述并编码merge_idx,该merge_idx是指示已选择哪个MV预测器的信号。
要注意的是,在图21中描述的MV预测器列表中登记的MV预测器是示例。MV预测器的数量可以与图中的MV预测器的数量不同,可以以以下方式配置MV预测器列表:图中的MV预测器的种类中的一些可以不被包括,或者除了图中的MV预测器的种类以外一个或多个MV预测器被包括。
可以通过使用在合并模式中导出的当前块的MV通过执行稍后将描述的解码器运动矢量细化过程(DMVR)来确定最终MV。
注意,MV预测器候选是上述MV候选,并且MV预测器列表是上述MV候选列表。注意,MV候选列表可以被称为候选列表。另外,merge_idx是MV选择信息。
(MV导出>FRUC模式)
可以在解码器侧导出运动信息而无需从编码器侧用信号传送。注意,如上所述,可以使用在H.265/HEVC标准中定义的合并模式。另外,例如,可以通过在解码器侧执行运动估计来导出运动信息。在实施例中,在解码器侧,在不使用当前块中的任何像素值的情况下执行运动估计。
这里,描述了用于在解码器侧执行运动估计的模式。在解码器侧执行运动估计的模式可以被称为模式匹配运动矢量导出(PMMVD)模式或帧速率上转换(FRUC)模式。
图22以流程图的形式示出了FRUC过程的一个示例。首先,通过参考在空间或时间上与当前块相邻的编码块中的运动矢量来生成均具有运动矢量(MV)预测器的多个候选的列表(即,也可以用作合并列表的MV候选列表)(步骤Si_1)。接下来,从在MV候选列表中登记的多个MV候选中选择最佳MV候选(步骤Si_2)。例如,计算被包括在MV候选列表中的相应MV候选的评估值,并且基于评估值选择一个MV候选。基于所选择的候选运动矢量,然后导出当前块的运动矢量(步骤Si_4)。更具体地,例如,直接将选择的运动矢量候选(最佳MV候选)导出为当前块的运动矢量。另外,例如,可以使用在参考图片中的位置与所选运动矢量候选相对应的参考图片中的位置的周围区域中的模式匹配来导出当前块的运动矢量。换句话说,可以在最佳MV候选的周围区域中使用模式匹配和评估值来执行估计,并且当存在产生更好评估值的MV时,可以将最佳MV候选更新为产生更好的评估值的MV,并且可以将更新的MV确定为当前块的最终MV。不执行用于将最佳MV候选更新为评价值更好的MV的过程的配置也是可能的。
最后,帧间预测器126通过使用导出的MV和编码的参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤Si_5)。
可以以子块为单位执行类似的过程。
可以根据各种方法来计算评估值。例如,在与运动矢量相对应的参考图片中的区域中的重构图像与确定的区域中的重构图像之间进行比较(确定的区域可以是例如另一参考图片中的区域或当前图片的相邻块中的区域,如下所示)。确定的区域可以是预定的。
两个重构图像的像素值之间的差可以用于运动矢量的评估值。注意,可以使用除差值之外的信息来计算评估值。
接下来,详细描述了模式匹配的示例。首先,通过模式匹配,选择MV候选列表(例如,合并列表)中包括的一个MV候选作为估计的起点。例如,作为模式匹配,可以使用第一模式匹配或第二模式匹配。第一模式匹配和第二模式匹配也分别称为双边匹配和模板匹配。
(MV导出>FRUC>双边匹配)
在第一模式匹配中,在沿着当前块的运动轨迹的两个块之间执行模式匹配,所述两个块是不同的两个参考图片中的两个块。因此,在第一模式匹配中,沿着当前块的运动轨迹的另一参考图片中的区域被用作确定区域,以用于计算上述候选的评估值。确定区域可以是预定的。
图23是用于示出沿着运动轨迹的两个参考图片中的两个块之间的第一模式匹配(双边匹配)的一个示例的概念图。如图23所示,在第一模式匹配中,通过估计两个不同参考图片(Ref0,Ref1)中的两个块(其为沿着当前块(当前块)的运动轨迹的两个块)中的对之中的最佳匹配的对来导出两个运动矢量(MV0,MV1)。更具体地,针对当前块导出由MV候选指定的第一编码参考图片(Ref0)中的指定位置处的重构图像与由对称MV指定的第二编码参考图片(Ref1)中的指定位置处的重构图像之间的差,该对称MV是通过以显示时间间隔按比例缩放MV候选获得的,并且使用所获得的差的值来计算评估值。可以选择在多个MV候选之中产生最佳评估值并且可能产生良好结果的MV候选作为最终MV。
在连续运动轨迹的假设下,指定两个参考块的运动矢量(MV0,MV1)与当前图片(当前图片)和两个参考图片(Ref0,Ref1)之间的时间距离(TD0,TD1)成比例。例如,在当前图片在时间上位于两个参考图片之间并且从当前图片到相应的两个参考图片的时间距离彼此相等时,在第一模式匹配中导出镜像对称的双向运动矢量。
(MV导出>FRUC>模板匹配)
在第二模式匹配(模板匹配)中,在参考图片中的块与当前图片中的模板(模板是与当前图片中的当前块相邻的块(相邻的块是例如上部和/或左侧的相邻块))之间执行模式匹配。因此,在第二模式匹配中,将当前图片中与当前块相邻的块用作用于计算上述候选的评估值的确定区域。
图24是用于示出当前图片中的模板与参考图片中的块之间的模式匹配(模板匹配)的一个示例的概念图。如图24所示,在第二模式匹配中,通过在参考图片(Ref0)中估计与当前图片(当前图片)中的当前块相邻的块最佳匹配的块,来导出当前块(当前块)的运动矢量。更具体地,可能的是,导出在左侧和上方相邻或者在左侧或上方相邻的编码区域中的重构图像与在编码参考图片(Ref0)中的对应区域中且由MV候选指定的重构图像之间的差,使用所获得的差的值计算评估值,并且选择在多个MV候选之中产生最佳评估值的MV候选作为最佳MV候选。
指示是否应用FRUC模式的这种信息(例如,称为FRUC标志)可以在CU级别上用信号传送。此外,当应用FRUC模式时(例如,当FRUC标志为真(true)时),可以在CU级别上用信号传送指示适用的模式匹配方法(第一模式匹配或第二模式匹配)的信息。要注意的是,这种信息的信令不一定需要在CU级别上执行,而可以在另一个级别(例如,在序列级别、图片级别、切片级别、图块级别、CTU级别或子块级别)上执行。
(MV导出>仿射模式)
接下来,描述用于基于多个相邻块的运动矢量以子块为单位导出运动矢量的仿射模式。该模式也称为仿射运动补偿预测模式。
图25A是用于示出基于多个相邻块的运动矢量来导出每个子块的运动矢量的一个示例的概念图。在图25A中,当前块包括十六个4×4子块。在此,基于相邻块的运动矢量来导出当前块中的左上角控制点处的运动矢量V
[数学式1]
在此,x和y分别表示子块的水平位置和垂直位置,并且w表示确定的加权系数。所确定的加权系数可以是预定的。
指示仿射模式的此类信息(例如,称为仿射标志)可以在CU级别上用信号传送。要注意的是,指示仿射模式的信息的信令不一定需要在CU级别上执行,并且可以在另一个级别(例如,在序列级别、图片级别、切片级别、图块级别、CTU级别或子块级别)上执行。
另外,仿射模式可以包括用于导出左上角控制点和右上角控制点处的运动矢量的不同方法的几种模式。例如,仿射模式包括两个模式,其为仿射帧间模式(也称为仿射常规帧间模式)和仿射合并模式。
(MV导出>仿射模式)
图25B是用于示出在使用三个控制点的仿射模式中导出每个子块的运动矢量的一个示例的概念图。在图25B中,当前块包括十六个4×4块。在此,基于相邻块的运动矢量来导出当前块的左上角控制点处的运动矢量V
[数学式2]
这里,x和y分别表示子块的中心的水平位置和垂直位置,w表示当前块的宽度,并且h表示当前块的高度。
可以切换使用不同数量的控制点(例如,两个和三个控制点)的仿射模式,并将其在CU级别上用信号传送。应当注意,CU级别上的指示使用的仿射模式下的控制点的数量的信息可以在另一级别(例如,序列级别、图片级别、切片级别、图块级别、CTU级别或子块级别)上用信号传送。
另外,其中使用三个控制点的这种仿射模式可以包括用于导出左上、右上和左下角控制点处的运动矢量的不同方法。例如,仿射模式包括两个模式,它们是仿射帧间模式(也称为仿射常规帧间模式)和仿射合并模式。
(MV导出>仿射合并模式)
图26A、图26B和图26C是用于示出仿射合并模式的概念图。
如图26A所示,在仿射合并模式下,例如基于与当前块相邻的编码块A(左)、块B(上)、块C(右上)、块D(左下)和块E(左上)之中的根据仿射模式编码的块相对应的多个运动矢量,计算当前块的相应控制点处的运动矢量预测器。更具体地,按照列出的顺序检查已编码的块A(左)、块B(上)、块C(右上)、块D(左下)和块E(左上),并且识别根据仿射模式编码的第一有效块。基于与所识别的块相对应的多个运动矢量来计算当前块的控制点处的运动矢量预测器。
例如,如图26B所示,当已经根据使用两个控制点的仿射模式对与当前块左侧相邻的块A进行了编码时,导出投影在包括块A的编码块的左上角位置和右上角位置处的运动矢量v
例如,如图26C所示,当已经根据使用三个控制点的仿射模式对与当前块的左侧相邻的块A进行了编码时,导出投影在包括块A的编码块的左上角位置、右上角位置和左下角位置的运动矢量v
应当注意,这种用于导出运动矢量预测器的方法可以用于在稍后描述的图29的步骤Sj_1中导出当前块的相应控制点的运动矢量预测器。
图27是示出仿射合并模式的一个示例的流程图。
在所示的仿射合并模式中,首先,帧间预测器126导出当前块的相应控制点的MV预测器(步骤Sk_1)。如图25A所示,控制点是当前块的左上角点和当前块的右上角点,或者如图25B所示,是当前块的左上角点、当前块的右上角点和当前块的左下角点。
换句话说,如图26A所示,帧间预测器126按所列顺序检查已编码的块A(左)、块B(上)、块C(右上)、块D(左下)和块E(左上),并识别根据仿射模式编码的第一有效块。
当识别出块A并且块A具有两个控制点时,如图26B所示,帧间预测器126根据包括块A的已编码块的左上角和右上角的运动矢量v
可替代地,当识别出块A并且块A具有三个控制点时,如图26C所示,帧间预测器126根据包括块A的已编码块的左上角、右上角和左下角处的运动矢量v
接下来,帧间预测器126对当前块中包括的多个子块中的每个子块执行运动补偿。换句话说,帧间预测器126通过使用(i)两个运动矢量预测器v
(MV导出>仿射帧间模式)
图28A是用于示出使用两个控制点的仿射帧间模式的概念图。
在仿射帧间模式下,如图28A所示,从与当前块相邻的已编码的块A、块B和块C的运动矢量中选择的运动矢量被用作当前块的左上角控制点处的运动矢量预测器v
图28B是用于示出使用三个控制点的仿射帧间模式的概念图。
在仿射帧间模式下,如图28B所示,从与当前块相邻的已编码的块A、块B和块C的运动矢量中选择的运动矢量被用作当前块的左上角控制点处的运动矢量预测器v
图29是示出仿射帧间模式的一个示例的流程图。
在所示的仿射帧间模式中,首先,帧间预测器126导出当前块的相应两个或三个控制点的MV预测器(v
换句话说,帧间预测器126通过选择在图28A或图28B中所示的当前块的相应控制点附近的编码块之中的任何块的运动矢量,来导出当前块的相应两个或三个控制点的运动矢量预测器(v
例如,帧间预测器126可以使用成本评估等来从与当前块相邻的已编码块之中确定从中选择作为控制点处的运动矢量预测器的运动矢量的块,并且可以在比特流中描述标志,该标志指示已选择了哪个运动矢量预测器。
接下来,帧间预测器126执行运动估计(步骤Sj_3和Sj_4),同时更新在步骤Sj_1中选择或导出的运动矢量预测器(步骤Sj_2)。换句话说,帧间预测器126使用上述表达式(1A)或表达式(1B)来计算与更新后的运动矢量预测器相对应的每个子块的运动矢量作为仿射MV(步骤Sj_3)。然后,帧间预测器126使用这些仿射MV和已编码的参考图片来执行子块的运动补偿(步骤Sj_4)。结果,例如,帧间预测器126确定在运动估计循环中的控制点处产生最小成本的运动矢量预测器作为运动矢量(步骤Sj_5)。此时,帧间预测器126还在流中将所确定的MV和运动矢量预测器之间的差值编码为MV差。
最后,帧间预测器126通过使用所确定的MV和编码的参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤Sj_6)。
(MV导出>仿射帧间模式)
当在其中使用不同数量的控制点(例如,两个和三个控制点)的仿射模式可以在CU级别上进行切换且以信号传送时,已编码块中的控制点数量和当前块中的控制点数量可能彼此不同。图30A和图30B是用于示出当编码块中的控制点的数量与当前块中的控制点的数量彼此不同时导出控制点处的运动矢量预测器的方法的概念图。
例如,如图30A所示,在当前块具有在左上角、右上角和左下角处的三个控制点,并且已经根据其中使用两个控制点的仿射模式对与当前块的左侧相邻的块A进行了编码时,导出投影在在包括块A的编码块中的左上角位置和右上角位置的运动矢量v
例如,如图30B所示,在当前块在左上角和右上角具有两个控制点,并且已经根据其中使用三个控制点的仿射模式对与当前块左侧相邻的块A进行了编码时,导出投影在包括块A的编码块中的左上角位置、右上角位置和左下角位置处的运动矢量v
应当注意,这种用于导出运动矢量预测器的方法可以用于在图29的步骤Sj_1中导出当前块的相应控制点的运动矢量预测器。
(MV导出>DMVR)
图31A是示出合并模式和DMVR之间的关系的流程图。
帧间预测器126根据合并模式导出当前块的运动矢量(步骤Sl_1)。接下来,帧间预测器126确定是否执行运动矢量的估计,即运动估计(步骤Sl_2)。这里,当确定不执行运动估计时(步骤Sl_2中的否),帧间预测器126将在步骤Sl_1中导出的运动矢量确定为当前块的最终运动矢量(步骤Sl_4)。换句话说,在这种情况下,根据合并模式确定当前块的运动矢量。
当在步骤Sl_1中确定执行运动估计时(步骤Sl_2中的是),帧间预测器126通过估计由步骤Sl_1中导出的运动矢量所指定的参考图片的周围区域来导出当前块的最终运动矢量(步骤Sl_3)。换句话说,在这种情况下,根据DMVR确定当前块的运动矢量。
图31B是用于示出用于确定MV的DMVR过程的一个示例的概念图。
首先,(例如,在合并模式下)已被设置为当前块的最佳MVP被确定为MV候选。从第一参考图片(L0)中识别参考像素,该第一参考图片是根据MV候选(LO)在LO方向上的编码图片。同样地,根据第二参考图片(L1)识别参考像素,第二参考图片(L1)是根据MV候选(L1)的L1方向的编码图片。通过计算这些参考像素的平均值来生成模板。
接下来,估计第一参考图片(L0)和第二参考图片(L1)的MV候选的每个周围区域,并且将产生最小成本的MV确定为最终MV。注意,可以例如使用模板中的每个像素值与估计区域中的像素值中的对应像素值之间的差值、MV候选的值等来计算成本值。
要注意的是,这里描述的过程、配置和操作通常在编码器和稍后将描述的解码器之间基本上是共用的。
并不总是需要执行此处描述的完全相同的示例过程。可以使用通过在MV候选的周围区域中进行估计来实现导出最终MV的任何过程。
(运动补偿>BIO/OBMC)
运动补偿涉及用于生成预测图像并校正预测图像的模式。该模式例如是稍后描述的BIO和OBMC。
图32是示出了生成预测图像的一个示例的流程图。
帧间预测器126生成预测图像(步骤Sm_1),并且例如根据上述任何模式来校正预测图像(步骤Sm_2)。
图33是示出了生成预测图像的另一示例的流程图。
帧间预测器126确定当前块的运动矢量(步骤Sn_1)。接下来,帧间预测器126生成预测图像(步骤Sn_2),并确定是否执行校正过程(步骤Sn_3)。这里,当确定执行校正过程时(步骤Sn_3中为是),帧间预测器126通过校正预测图像来生成最终预测图像(步骤Sn_4)。当确定不执行校正过程时(步骤Sn_3中为否),帧间预测器126将预测图像输出为最终预测图像,而不校正预测图像(步骤Sn_5)。
另外,运动补偿涉及用于在生成预测图像时校正预测图像的亮度的模式。该模式例如是稍后将描述的LIC。
图34是示出了生成预测图像的另一示例的流程图。
帧间预测器126导出当前块的运动矢量(步骤So_1)。接下来,帧间预测器126确定是否执行亮度校正过程(步骤So_2)。这里,当确定执行亮度校正过程时(步骤So_2中为是),帧间预测器126在执行亮度校正过程时生成预测图像(步骤So_3)。换句话说,使用LIC来生成预测图像。当确定不执行亮度校正过程时(步骤So_2中为否),帧间预测器126通过执行常规运动补偿来生成预测图像,而不执行亮度校正过程(步骤So_4)。
(运动补偿>OBMC)
要注意的是,除了从运动估计获得的当前块的运动信息之外,还可以使用相邻块的运动信息来生成帧间预测信号。更具体地,可以通过对基于从运动估计获得的运动信息(在参考图片中)的预测信号和基于相邻块的运动信息(在当前图片中)的预测信号执行加权相加,来在当前块中以子块为单位生成帧间预测信号。这种帧间预测(运动补偿)也被称为重叠块运动补偿(OBMC)。
在OBMC模式中,可以在序列级别上用信号传送指示用于OBMC的子块大小(例如,称为OBMC块大小)的信息。此外,可以在CU级别上用信号传送指示是否应用OBMC模式的信息(例如,称为OBMC标志)。要注意的是,这种信息的信令不一定需要在序列级别和CU级别上执行,并且可以在另一级别(例如,图片级别、切片级别、图块级别、CTU级别或子块级别)上执行。
将更详细地描述OBMC模式的示例。图35和图36是用于示出由OBMC过程执行的预测图像校正过程的概要的流程图和概念图。
首先,如图36中所示,使用指派给处理目标(当前)块的运动矢量(MV)通过常规运动补偿来获得预测图像(Pred)。在图36中,箭头“MV”指向参考图片,并且指示为了获得预测图像当前图片的当前块参考的是什么。
接下来,通过将已经针对与当前块的左侧相邻的编码块导出的运动矢量(MV_L)应用于当前块(对当前块重新使用运动矢量)来获得预测图像(Pred_L)。运动矢量(MV_L)由箭头“MV_L”指示,箭头“MV_L”指示来自当前块的参考图片。通过重叠两个预测图像Pred和Pred_L来执行预测图像的第一校正。这提供了混合相邻块之间的边界的效果。
同样,通过将已经针对与当前块上方相邻的编码块导出的运动矢量(MV_U)应用于当前块(对当前块重新使用运动矢量),来获得预测图像(Pred_U)。运动矢量(MV_U)由箭头“MV_U”指示,箭头“MV_U”指示来自当前块的参考图片。通过将预测图像Pred_U与已经执行了第一校正的预测图像(例如,Pred和Pred_L)重叠,来执行预测图像的第二校正。这提供了混合相邻块之间的边界的效果。通过第二校正获得的预测图像是其中相邻块之间的边界已经被混合(平滑化)的预测图像,因此是当前块的最终预测图像。
尽管以上示例是使用左和上相邻块的两路径校正方法,但是要注意的是,校正方法可以是也使用右相邻块和/或下相邻块的三路径或更多路径校正方法。
注意,在其中执行这种重叠的区域可以是块边界附近的区域的仅一部分,而不是整个块的像素区域。
注意,上面已经描述了根据用于通过重叠附加预测图像Pred_L和Pred_U从一个参考图片获得一个预测图像Pred的OBMC的预测图像校正过程。然而,当基于多个参考图像校正预测图像时,可以将相似的过程应用于多个参考图片中的每一个。在这种情况下,在通过基于多个参考图片执行OBMC图像校正而从相应参考图片获得校正后的预测图像之后,将所获得的校正的预测图像进一步重叠以获得最终的预测图像。
要注意的是,在OBMC中,当前块的单位可以是预测块的单位,或者是通过进一步分割预测块而获得的子块的单位。
用于确定是否应用OBMC过程的方法的一个示例是用于使用obmc_flag的方法,obmc_flag是指示是否应用OBMC过程的信号。作为一个具体示例,编码器确定当前块是否属于具有复杂运动的区域。当块属于具有复杂运动的区域时,编码器将obmc_flag的值设置为“1”,而在编码时,应用OBMC过程;并且当块不属于具有复杂运动的区域时,并且将obmc_flag的值设置为“0”,并且在不应用OBMC过程的情况下对该块进行编码。解码器通过解码被写入流中的obmc_flag(例如,压缩序列)并通过根据标志值在OBMC过程的应用和非应用之间切换来对块进行解码,来在OBMC过程的应用和非应用之间切换。
在以上示例中,帧间预测器126为矩形当前块生成一个矩形预测图像。然而,帧间预测器126可以生成多个预测图像,每个预测图像具有与矩形当前块的矩形不同的形状,并且可以组合多个预测图像以生成最终的矩形预测图像。与矩形不同的形状可以是例如三角形。
图37是用于示出两个三角预测图像的生成的概念图。
帧间预测器126通过使用第一分区的第一MV对当前块中具有三角形形状的第一分区执行运动补偿来生成三角形预测图像,以生成三角形预测图像。同样,帧间预测器126通过使用第二分区的第二MV对当前块中具有三角形形状的第二分区执行运动补偿来生成三角预测图像,以生成三角预测图像。然后,帧间预测器126通过组合这些预测图像来生成具有与当前块的矩形形状相同的矩形形状的预测图像。
要注意的是,尽管在图37所示的示例中第一分区和第二分区是三角形,但第一分区和第二分区可以是梯形或彼此不同的其他形状。此外,尽管在图37所示的示例中当前块包括两个分区,当前块可以包括三个或更多个分区。
另外,第一分区和第二分区可以彼此重叠。换句话说,第一分区和第二分区可以包括相同的像素区域。在这种情况下,可以使用第一分区中的预测图像和第二分区中的预测图像来生成当前块的预测图像。
另外,尽管使用帧间预测针对两个分区中的每一个生成预测图像的示例,但是可以使用帧内预测针对至少一个分区生成预测图像。
(运动补偿>BIO)
接下来,描述用于导出运动矢量的方法。首先,将描述用于基于假设均匀线性运动的模型来导出运动矢量的模式。此模式也称为双向光流(bi-directional optical flow,BIO)模式。
图38是用于示出假设匀速直线运动的模型的概念图。在图38中,(vx,vy)指示速度矢量,并且τ0和τ1指示当前图片(当前图片)和两个参考图片(Ref0,Ref1)之间的时间距离。(MVx0,MVy0)指示与参考图片Ref0相对应的运动矢量,并且(MVx1,MVy1)指示与参考图片Ref1相对应的运动矢量。
在此,在假设速度矢量(v
[数学式3]
在此,I(k)表示参考图片k的运动补偿亮度值(k=0、1)。该光流等式表明,以下各项的总和等于零:(i)亮度值的时间导数,(ii)水平速度和参考图像的空间梯度的水平分量的乘积,以及(iii)垂直速度和参考图像的空间梯度的垂直分量的乘积。从例如合并列表获得的每个块的运动矢量可以基于光流等式和埃尔米特插值的组合以像素为单位进行校正。
要注意的是,可以使用除了基于假设均匀线性运动的模型来导出运动矢量以外的方法,来在解码器侧上导出运动矢量。例如,可以基于相邻块的运动矢量以子块为单位导出运动矢量。
(运动补偿>LIC)
接下来,将描述其中通过使用局部照度补偿(LIC)过程来生成预测图像(预测)的模式的示例。
图39是用于示出使用由LIC过程执行的亮度校正过程的预测图像生成方法的一个示例的概念图。
首先,从编码的参考图片导出MV,并获得与当前块相对应的参考图像。
接下来,针对当前块提取指示在参考图片和当前图片之间的亮度值如何变化的信息。基于针对编码的左相邻参考区域(周围参考区域)和编码的上相邻参考区域(周围参考区域)的亮度像素值以及由导出的MV指定的参考图片中的对应位置处的亮度像素值来执行该提取。通过使用指示亮度值如何改变的信息来计算亮度校正参数。
通过执行亮度校正过程来生成用于当前块的预测图像,在该亮度校正过程中,将亮度校正参数应用于由MV指定的参考图片中的参考图像。
要注意的是,图39中示出的周围参考区域的形状只是一个示例;周围参考区域可以具有不同的形状。
此外,尽管这里已经描述了从单个参考图片生成预测图像的过程,但是可以以相同的方式描述其中根据多个参考图片生成预测图像的情况。可以在以与上述相同的方式对从参考图片获得的参考图像执行亮度校正过程之后生成预测图像。
用于确定是否应用LIC过程的方法的一个示例是用于使用lic_flag的方法,该lic_flag是指示是否应用LIC过程的信号。作为一个具体示例,编码器确定当前块是否属于具有亮度变化的区域。当块属于具有亮度变化的区域时,编码器将lic_flag的值设置为“1”,并且在编码时应用LIC过程,而当该块不属于亮度变化的区域时,则将lic_flag的值设置为“0”,并且在不应用LIC过程的情况下对当前块进行编码。解码器可以通过根据标志值在LIC过程的应用和非应用之间切换来解码被写入流中的lic_flag并解码当前块。
确定是否应用LIC过程的另一种方法的一个示例是根据是否对周围块应用了LIC过程的确定方法。在一个特定示例中,当在当前块上使用合并模式时,确定在合并模式过程中是否在导出MV时选择的周围编码块的编码中应用了LIC过程。根据结果,通过在LIC过程的应用和非应用之间切换来执行编码。注意,同样在该示例中,在解码器侧的过程中应用相同的过程。
下面详细描述参考图39描述的亮度校正(LIC)过程的实施例被示出。
首先,帧间预测器126从作为编码图片的参考图片中导出用于获得与要编码的当前块相对应的参考图像的运动矢量。
接下来,帧间预测器126使用与当前块的左侧或上方相邻的经编码的周围参考区域的亮度像素值和由运动矢量指定的参考图片中的对应位置的亮度值,提取指示参考图片的亮度值如何改变为当前图片的亮度值的信息,并计算亮度校正参数。例如,假设当前图片中的周围参考区域中的给定像素的亮度像素值为p0,并且假设与参考图片中的周围参考区域中的给定像素相对应的像素的亮度像素值是p1。帧间预测器126计算用于优化A×p1+B=p0的系数A和B,作为针对周围参考区域中的多个像素的亮度校正参数。
接下来,帧间预测器126使用由运动矢量指定的参考图片中的参考图像的亮度校正参数来执行亮度校正过程,以生成当前块的预测图像。例如,假定参考图像中的亮度像素值为p2,并且预测图像的经亮度校正的亮度像素值为p3。在通过针对参考图像中的每个像素计算A×p2+B=p3进行亮度校正过程之后,帧间预测器126生成预测图像。
要注意的是,图39中示出的周围参考区域的形状是一个示例;可以使用除了周围参考区域的形状以外的不同形状。另外,可以使用图39中所示的周围参考区域的一部分。例如,具有从上相邻像素和左相邻像素中的每一个提取的确定数量的像素的区域可以用作周围参考区域。所确定的像素数量可以是预定的。
另外,周围参考区域不限于与当前块相邻的区域,并且可以是不与当前块相邻的区域。在图39所示的示例中,参考图片中的周围参考区域是来自当前图片中的周围参考区域的由当前图片中的运动矢量指定的区域。但是,由另一个运动矢量指定的区域也是可能的。例如,另一运动矢量可以是当前图片中的周围参考区域中的运动矢量。
尽管这里已经描述了由编码器100执行的操作,但是要注意,解码器200通常执行类似的操作。
要注意的是,LIC过程不仅可以应用于亮度,而且可以应用于色度。此时,可以针对Y、Cb和Cr中的每一个个别地导出校正参数,或者可以针对Y、Cb和Cr中的任何一个使用公共校正参数。
另外,可以以子块为单位应用LIC过程。例如,可以使用由当前子块的MV指定的参考图片中的当前子块中的周围参考区域和参考子块中的周围参考区域来导出校正参数。
(预测控制器)
帧间预测器128选择帧内预测信号(从帧内预测器124输出的信号)和帧间预测信号(从帧间预测器126输出的信号)之一,并将所选择的信号输出到减法器104和加法器116作为预测信号。
如图1所示,在各种编码器示例中,预测控制器128可以输出被输入到熵编码器110的预测参数。熵编码器110可以基于从预测控制器输入的预测参数和从量化器108输入的量化系数来生成编码比特流(或序列)。预测参数可以在解码器中使用。解码器可以接收和解码编码的比特流,并且执行与由帧内预测器124、帧间预测器126和预测控制器128执行的预测过程相同的过程。预测参数可以包括(i)选择预测信号(例如,由帧内预测器124或帧间预测器126使用的运动矢量、预测类型或预测模式),或(ii)基于在帧内预测器124、帧间预测器126和预测控制器128中的每一个中执行的预测过程或指示预测过程的可选的索引、标志或值。
(编码器的安装示例)
图40是示出编码器100的安装示例的框图。编码器100包括处理器a1和存储器a2。例如,图1所示的编码器100的多个组成元件可以安装在图40中所示的处理器a1和存储器a2上。
处理器a1是执行信息处理并且可被存储器a2访问的电路。例如,处理器a1是对视频进行编码的专用或通用电子电路。处理器a1可以是诸如CPU之类的处理器。另外,处理器a1可以是多个电子电路的聚合。另外,例如,处理器a1可以担任图1所示的编码器100等的多个组成元件中的两个或更多个组成元件的角色。
存储器a2是专用或通用存储器,用于存储处理器a1用来编码视频的信息。存储器a2可以是电子电路,并且可以连接到处理器a1。另外,存储器a2可以被包括在处理器a1中。另外,存储器a2可以是多个电子电路的聚合。另外,存储器a2可以是磁盘、光盘等,或者可以表示为存储装置、记录介质等。另外,存储器a2可以是非易失性存储器或易失性存储器。
例如,存储器a2可以存储要编码的视频或与编码的视频相对应的比特流。另外,存储器a2可以存储用于使处理器a1对视频进行编码的程序。
另外,例如,存储器a2可以担任图1所示的编码器100等的多个组成元件中用于存储信息的两个或更多个组成元件的角色。例如,存储器a2可以担任图1所示的块存储器118和帧存储器122的角色。更具体地,存储器a2可以存储重构块、重构图片等。
要注意的是,在编码器100中,可以不实现图1中指示的所有多个组成元件等,并且可以不执行上述所有过程。图1中指示的组成元件的一部分等可以被包括在另一设备中,或者上述过程的一部分可以由另一设备执行。
(解码器)
接下来,将描述能够解码例如从上述编码器100输出的编码信号(编码比特流)的解码器。图41是示出根据实施例的解码器200的功能配置的框图。解码器200是视频解码器,其以块为单位对视频进行解码。
如图41所示,解码器200包括熵解码器202、逆量化器204、逆变换器206、加法器208、块存储器210、环路滤波器212、帧存储器214、帧内预测器216、帧间预测器218和预测控制器220。
解码器200被实现为例如通用处理器和存储器。在这种情况下,当处理器执行存储在存储器中的软件程序时,处理器用作熵解码器202、逆量化器204、逆变换器206、加法器208、环路滤波器212、帧内预测器216、帧间预测器218和预测控制器220。可替代地,解码器200可以被实现为与熵解码器202、逆量化器204、逆变换器206、加法器208、环路滤波器212、帧内预测器216、帧间预测器218和预测控制器220相对应的一个或多个专用电子电路。
在下文中,描述了由解码器200执行的过程的总体流程,然后将描述被包括在解码器200中的每个组成元件。
(解码过程的总体流程)
图42是示出由解码器200执行的整个解码过程的一个示例的流程图。
首先,解码器200的熵解码器202识别具有固定大小(例如,128×128像素)的块的分割图案(步骤Sp_1)。该分割图案是由编码器100选择的分割图案。然后,解码器200针对该分割图案的多个块中的每一个执行步骤Sp_2至Sp_6的过程。
换句话说,熵解码器202对要被解码的当前块(也称为当前块)的预测参数和编码量化系数进行解码(具体地,熵解码)(步骤Sp_2)。
接下来,逆量化器204对多个量化系数执行逆量化,并且逆变换器206对结果执行逆变换,以恢复多个预测残差(即,差块)(步骤Sp_3)。
接下来,包括帧内预测器216、帧间预测器218和预测控制器220的全部或一部分的预测处理器生成当前块的预测信号(也称为预测块)(步骤Sp_4)。
接下来,加法器208将预测块添加到差块以生成当前块的重构图像(也称为解码图像块)(步骤Sp_5)。
当生成重构图像时,环路滤波器212对重构图像执行滤波(步骤Sp_6)。
解码器200然后确定整个图片的解码是否已经完成(步骤Sp_7)。当确定解码尚未完成时(步骤Sp_7中为否),解码器200重复执行从步骤Sp_1开始的过程。
如图所示,由解码器200顺序地执行步骤Sp_1至Sp_7的过程。可替代地,可以并行执行两个或更多个过程,可以修改两个或更多个过程的处理顺序,等等。
(熵解码器)
熵解码器202对解码的比特流进行熵解码。更具体地,例如,熵解码器202将编码的比特流算术解码为二进制信号。然后,熵解码器202将二进制信号去二进制化。这样,熵解码器202将每个块的量化系数输出到逆量化器204。熵解码器202可以将被包括在编码比特流(见图1)中的预测参数输出到帧内预测器216、帧间预测器218和预测控制器220。实施例中的帧内预测器216、帧间预测器218和预测控制器220能够执行与由帧内预测器124、帧间预测器126和预测控制器128在编码器侧执行的预测过程相同的预测过程。
(逆量化器)
逆量化器204对从熵解码器202输入的要解码的块(以下称为当前块)的量化系数进行逆量化。更具体地,逆量化器204基于与量化系数相对应的量化参数对当前块的量化系数进行逆量化。逆量化器204然后将当前块的经逆量化的变换系数输出到逆变换器206。
(逆变换器)
逆变换器206通过对变换系数(其为来自逆量化器204输入)进行逆变换来恢复预测误差。
例如,当从编码的比特流解析的信息指示将应用EMT或AMT时(例如,当AMT标志为真时),逆变换器206基于指示经解析的变换类型的信息对当前块的变换系数进行逆变换。
此外,例如,当从编码比特流解析的信息指示将要应用NSST时,逆变换器206将二次逆变换应用于变换系数。
(加法器)
加法器208通过将预测误差(其为来自逆变换器206的输入)和预测样本(其为来自预测控制器220的输入)相加来重构当前块。加法器208然后将重构的块输出到块存储器210和环路滤波器212。
(块存储器)
块存储器210是用于存储要被解码的图片(以下称为当前图片)中的并且要在帧内预测中被参考的块的存储装置。更具体地,块存储器210存储从加法器208输出的重构块。
(环路滤波器)
环路滤波器212将环路滤波器应用于由加法器208重构的块,并将滤波后的重构块输出到帧存储器214、显示设备等。
当从编码比特流解析的表示ALF的ON或OFF的信息表示ALF为ON时,基于局部梯度的方向和活动性从多个滤波器之中选择一个滤波器,并将所选择的滤波器应用于重构块。
(帧存储器)
帧存储器214例如是用于存储在帧间预测中使用的参考图片的存储装置,并且也被称为帧缓冲器。更具体地,帧存储器214存储由环路滤波器212滤波的重构块。
(预测处理器(帧内预测器、帧间预测器、预测控制器))
图43是示出由解码器200的预测处理器执行的过程的一个示例的流程图。要注意,预测处理器包括以下组成元件的全部或一部分:帧内预测器216;帧间预测器218;和预测控制器220。
预测处理器生成当前块的预测图像(步骤Sq_1)。该预测图像也称为预测信号或预测块。注意,预测信号例如是帧内预测信号或帧间预测信号。具体地,预测处理器使用已经通过生成预测块、生成差块、生成系数块、恢复差块以及生成解码的图像块获得的重构图像,来生成当前块的预测图像。
重构图像可以是例如参考图片中的图像,或者是当前图片(其为包括当前块的图片)中的解码块的图像。当前图片中的解码块例如是当前块的相邻块。
图44是示出由解码器200的预测处理器执行的过程的另一示例的流程图。
预测处理器确定用于生成预测图像的方法或模式(步骤Sr_1)。例如,可以基于例如预测参数等来确定方法或模式。
当将第一方法确定为用于生成预测图像的模式时,预测处理器根据第一方法生成预测图像(步骤Sr_2a)。当将第二方法确定为用于生成预测图像的模式时,预测处理器根据第二方法生成预测图像(步骤Sr_2b)。当确定第三方法作为用于生成预测图像的模式时,预测处理器根据第三方法生成预测图像(步骤Sr_2c)。
第一方法、第二方法和第三方法可以是用于生成预测图像的彼此不同的方法。第一至第三方法中的每一个可以是帧间预测方法、帧内预测方法或另一预测方法。可以在这些预测方法中使用上述重构图像。
(帧内预测器)
帧内预测器216基于从编码比特流解析的帧内预测模式,通过参考块存储器210中存储的当前图片中的一个或多个块来执行帧内预测,来生成预测信号(帧内预测信号)。更具体地,帧内预测器216通过参考与当前块相邻的一个或多个块的样本(例如,亮度和/或色度值)执行帧内预测来生成帧内预测信号,然后将帧内预测信号输出至预测控制器220。
应当指出的是,当选择其中在色度块的帧内预测中参考亮度块的帧内预测模式时,帧内预测器216可以基于当前块的亮度分量来预测当前块的色度分量。
此外,当从编码比特流解析的信息指示将要应用PDPC时,帧内预测器216基于水平/垂直参考像素梯度来校正帧内预测的像素值。
(帧间预测器)
帧间预测器218通过参考存储在帧存储器214中的参考图片来预测当前块。以当前块或当前块中的子块(例如,4×4块)为单位执行帧间预测。例如,帧间预测器218通过使用从编码比特流(例如,从熵解码器202输出的预测参数)解析的运动信息(例如,运动矢量)执行运动补偿,来生成当前块或子块的帧间预测信号,并将帧间预测信号输出到预测控制器220。
要注意的是,当从编码比特流解析的信息指示将应用OBMC模式时,帧间预测器218使用相邻块的运动信息(附加于从运动估计获取的当前块的运动信息)来生成帧间预测信号。
此外,当从编码比特流解析的信息指示将应用FRUC模式时,帧间预测器218通过根据从编码比特流解析的模式匹配方法(双边匹配或模板匹配)执行运动估计来导出运动信息。然后,帧间预测器218使用导出的运动信息来执行运动补偿(预测)。
此外,当将要应用BIO模式时,帧间预测器218基于假设均匀线性运动的模型来导出运动矢量。此外,当从编码的比特流解析的信息指示仿射运动补偿预测模式将被应用时,帧间预测器218基于相邻块的运动矢量来导出每个子块的运动矢量。
(MV导出>常规帧间模式)
当从编码的比特流解析的信息指示将要应用常规帧间模式时,帧间预测器218基于从编码的比特流解析的信息来导出MV,并使用MV执行运动补偿(预测)。
图45是示出解码器200中的常规帧间模式下的帧间预测的示例的流程图。
解码器200的帧间预测器218针对每个块执行运动补偿。帧间预测器218基于诸如在时间上或空间上围绕当前块的多个解码块的MV之类的信息,来获得当前块的多个MV候选(步骤Ss_1)。换句话说,帧间预测器218生成MV候选列表。
接下来,帧间预测器218根据所确定的优先级顺序从在步骤Ss_1中获得的多个MV候选中提取N(2或更大的整数)个MV候选作为运动矢量预测器候选(也称为MV预测器候选)(步骤Ss_2)。应当注意,可以针对N个MV预测器候选中的每一个预先确定优先级顺序。
接下来,帧间预测器218从输入流(即,编码比特流)中解码运动矢量预测器选择信息,并使用解码后的运动矢量预测器选择信息从N个MV预测器候选中选择一个MV预测器候选作为当前块的运动矢量(也称为MV预测器)(步骤Ss_3)。
接下来,帧间预测器218从输入流解码MV差,并且通过将作为解码的MV差的差值与所选择的运动矢量预测器相加来导出当前块的MV(步骤Ss_4)。
最后,帧间预测器218通过使用导出的MV和解码的参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤Ss_5)。
(预测控制器)
预测控制器220选择帧内预测信号或帧间预测信号,并将所选择的预测信号输出到加法器208。总体上,解码器侧的预测控制器220、帧内预测器216和帧间预测器218的配置、功能和过程可以对应于编码器侧的预测控制器128、帧内预测器124和帧间预测器126的配置、功能和过程。
(解码器的安装示例)
图46是示出解码器200的安装示例的框图。解码器200包括处理器b1和存储器b2。例如,图41所示的解码器200的多个组成元件安装在图46所示的处理器b1和存储器b2上。
处理器b1是执行信息处理并且可以被存储器b2访问的电路。例如,处理器b1是专用的或通用的电子电路,其对视频(即,编码的比特流)进行解码。处理器b1可以是诸如CPU之类的处理器。另外,处理器b1可以是多个电子电路的聚合。另外,例如,处理器b1可以担任图41所示的解码器200等的多个组成元件中的两个或更多个组成元件的角色。
存储器b2是专用的或通用的存储器,其用于存储处理器b1用来解码编码的比特流的信息。存储器b2可以是电子电路,并且可以连接到处理器b1。另外,存储器b2可以被包括在处理器b1中。另外,存储器b2可以是多个电子电路的聚合。另外,存储器b2可以是磁盘、光盘等,或者可以表示为存储器、记录介质等。另外,存储器b2可以是非易失性存储器或易失性存储器。
例如,存储器b2可以存储视频或比特流。另外,存储器b2可以存储用于使处理器b1对编码的比特流进行解码的程序。
另外,例如,存储器b2可以担任图41所示的解码器200等的多个组成元件中用于存储信息的两个或更多个组成元件的角色。具体地,存储器b2可以担任图41所示的块存储器210和帧存储器214的角色。更具体地,存储器b2可以存储重构块、重构图片等。
要注意的是,在解码器200中,可以不实现图41中示出的所有多个组成元件等,并且可以不执行上述所有过程。图41中指示的组成元件的一部分等可以被包括在另一设备中,或者上述过程的一部分可以由另一设备执行。
(术语的定义)
相应术语可以被定义为如下示例所示。
图片是单色格式的亮度样本数组,或者是4:2:0、4:2:2和4:4:4颜色格式的亮度样本数组和两个对应的色度样本数组。图片可以是帧或场。
帧是顶部场和底部场的组成,其中样本行0、2、4、……源自顶部场,而样本行1、3、5、……源自底部场。
切片是一个独立切片段中包含的整数个编码树单元,以及相同访问单元内下一个独立切片段(如果有)之前的所有后续依赖切片段(如果有)。
图块是图片中特定图块列和特定图块行内的编码树块的矩形区域。图块可以是旨在能够被独立地解码和编码的帧的矩形区域,但仍然可以应用跨图块边缘的环路滤波。
块是样本的M×N(M列乘N行)阵列或变换系数的M×N阵列。块可以是包括一个亮度矩阵和两个色度矩阵的像素的正方形或矩形区域。
编码树单元(CTU)可以是具有三个样本阵列的图片的亮度样本的编码树块,或者是色度样本的两个对应的编码树块。可替代地,CTU可以是单色图片和使用三个单独的色彩平面和用于对样本进行编码的语法结构进行编码的图片中的一个的样本的编码树块。超级块可以是由1或2个模式信息块组成的64×64像素的正方形块,也可以递归地划分为四个32×32块,它们本身可以进一步划分。
图47A是示出了根据一个实施例的以下过程流程1000的示例的流程图:将图像块分割为包括至少第一分区和第二分区的多个分区,从至少第一分区的运动矢量候选集合中预测运动矢量,并执行进一步处理。过程流程1000可以例如由图1的编码器100、图41的解码器200等执行。
在步骤S1001中,将图像块分割为包括至少第一分区的多个分区,第一分区可以具有或可以不具有非矩形形状。图48是用于示出将图像块分割成第一分区和第二分区的示例性方法的概念图。例如,如图48所示,图像块可以被分割成具有各种形状的两个或更多个分区。图48的示例图示包括:从图像块的左上角分割到图像块的右下角以创建均具有非矩形形状(例如,三角形形状)的第一分区和第二分区的图像块;被分割为L形分区和矩形分区的图像块;被分割为五边形分区和三角形分区的图像块;被分割为六边形分区和五边形分区的图像块;以及被分割成两个多边形分区的图像块。可以通过以其他方式分割图像块来形成各种示出的分区形状。例如,可以通过将图像块从图像块的右上角分割到图像块的左下角以创建均具有三角形形状的第一分区和第二分区来形成两个三角形的分区。在一些实施例中,图像块的两个或更多个分区可以具有重叠部分。
在步骤S1002中,过程从至少第一分区的运动矢量候选集合中预测第一运动矢量。运动矢量候选列表的运动的运动矢量候选可包括从至少第一分区的空间或时间相邻分区导出的运动矢量候选。在步骤S1003中,使用第一运动矢量对至少第一分区进行编码或解码。
图49是用于示出当前图片的第一分区的邻近和非邻近的空间相邻分区的概念图。邻近的空间相邻分区是与当前图片中的第一分区邻近的分区。非邻近的空间相邻分区是与当前图片中的第一分区间隔开的分区。在一些实施例中,在图47A的S1002中的候选运动矢量集合可以从当前图片中的至少第一分区的空间相邻的分区导出。
在一些实施例中,运动矢量候选集合可以从运动矢量候选列表导出,所述运动矢量候选列表例如在帧间预测模式(例如,合并模式、跳过模式或帧间模式)中使用的运动矢量候选列表。这样的列表可以包括单预测运动矢量候选和双预测运动矢量候选。
图50是用于示出当前图片的图像块的单预测和双预测运动矢量候选的概念图。单预测运动矢量候选是相对于单个参考图片的当前图片中的当前块的单个运动矢量。如在图50的顶部所示,单预测运动矢量候选是从当前图片的块到参考图片的块的运动矢量,其中参考图片以显示顺序出现在当前图片之前。在一些实施例中,参考图片可以按照显示顺序出现在当前图片之后。
双预测运动矢量候选包括两个运动矢量:相对于第一参考图片的当前块的第一运动矢量,和相对于第二参考图片的当前块的第二运动矢量。如图50所示,左下角的双预测运动矢量候选具有从当前图片的块到第一参考图片的块的第一运动矢量,以及从当前图片的块到第二参考图片的块的第二运动矢量。如图所示,第一参考图片和第二参考图片以显示顺序出现在当前图片之前。在图50的右下角的双预测运动矢量候选具有从当前图片的块到第一参考图片的块的第一运动矢量,以及从当前图片的块到第二参考图片的块的第二运动矢量。第一参考图片按显示顺序出现在当前图片之前,第二参考图片按显示顺序出现在当前图片之后。
在一些实施例中,从其预测至少一个分区的运动矢量的运动矢量候选集合可以是单预测运动矢量候选集合。图47B是示出了根据一个实施例的以下过程流程1000'的示例的流程图:将图像块分割为包括至少第一分区和第二分区的多个分区,从至少第一分区的单预测运动矢量候选集合中预测运动矢量,并执行进一步处理。过程流程1000’可以例如由图1的编码器100、图41的解码器200等执行。图47B的过程流程1000’与图47A的过程流程1000不同在于,在图47B的步骤1002’中,运动矢量的预测来自单预测运动矢量候选集合。使用单预测运动矢量候选集合可以帮助减少存储器带宽要求和编码分区所需的操作数量。
可以例如通过仅将列表的单预测运动矢量包括在运动矢量候选集合中,来从运动矢量候选的列表中导出单预测运动矢量候选集合。但是,也可以以各种方式从双预测运动矢量中导出单预测运动矢量,并且可以以各种方式从单预测运动矢量候选中导出单预测运动矢量。
例如,索引可用于从运动矢量候选列表的双预测运动矢量候选中导出单预测运动矢量候选以包括在单预测运动矢量候选集合中。例如,双向运动矢量候选可以具有相关联的索引,该索引标识第一列表(例如,参考图片列表L0)中的第一参考图片,并且标识第二列表(例如,参考图片列表L1)中的第二参考图片。下表1示出了双预测运动矢量候选的索引到第一参考图片列表中的第一参考图片以及第二参考图片列表中的第二参考图片的示例映射。
[表1]
表1:将双预测运动矢量候选索引映射到参考图片列表中的参考图片的示例映射
参考表1,索引为1的双预测运动矢量候选指向参考图片列表L0中的参考图片0,并且指向参考图片列表L1中的参考图片8。可以从以下各项导出两个单预测运动矢量候选:索引为1的双预测运动矢量候选,基于参考图片列表L0的相对于当前块和参考图片0的块的单预测运动矢量候选,以及基于参考图片列表L1的相对于当前块和参考图片8的块的单预测运动矢量。单预测运动矢量候选中的一个或两个可以被包括在单预测运动矢量候选集合中,从单预测运动矢量候选集合中针对当前图像的块的当前分区预测运动矢量(例如,基于参考图片列表L0的单预测运动矢量,基于参考图片列表L1的单预测运动矢量,或二者)。注意,对于当前图片,列表L0中的参考图片8与列表L1中的参考图片8相同。
类似地,具有索引2的双预测运动矢量候选指向参考图片列表L0中的参考图片8,并且指向参考图片列表L1中的参考图片16;可以从以下各项导出两个单预测运动矢量候选:索引为2的双预测运动矢量候选,相对于当前块和参考图片8的块的双预测运动矢量候选,以及相对于当前块和参考图片16的块的双预测运动矢量。单预测运动矢量候选中的一个或两个都可以被包括在单预测运动矢量候选集合中,从单预测运动矢量候选集合中可以预测当前图像的块的当前分区的运动矢量(例如,基于参考图片列表L0的单预测运动矢量候选,基于参考图片列表L1的单预测运动矢量候选,或二者)。
在一些实施例中,仅基于参考图片列表L0的单预测运动矢量候选被包括在从候选列表中的双预测运动矢量候选导出的单预测运动矢量候选集合中。在一些实施例中,仅基于参考图片列表L1的单预测运动矢量候选被包括在单预测运动矢量候选集合中。在一些实施例中,单预测运动矢量候选集合是有序集合,例如其中,基于参考图片列表L0的单预测运动矢量候选在单预测运动矢量候选集合中后跟基于参考图片列表L1的单预测运动矢量候选。
在一些实施例中,可以基于图片的显示顺序或编码顺序来确定要包括在单预测运动矢量候选集合中的双预测运动矢量候选的运动矢量。一般规则可以是包括双预测运动矢量候选的运动矢量,其指向在时间上最接近的参考图片或最早的参考图片。图51至图53是用于示出基于图片的显示或编码顺序从双预测运动矢量候选确定单预测运动矢量以包括在单预测运动矢量候选集合中的概念图。
在一些实施例中,按显示顺序最接近当前图片的双预测运动矢量的参考图片的运动矢量被包括在该单个预测运动矢量候选集合中。如图51所示,双预测运动矢量候选包括指向参考图片0的Mv0和指向参考图片1的Mv1。选择Mv1作为单预测运动矢量以包括在单预测运动矢量集合中,因为参考图片1按显示顺序比参考图片0更接近当前图片。
在一些实施例中,按编码顺序最接近当前图片的双预测运动矢量的参考图片的运动矢量被包括在单预测运动矢量候选集合中。如图52所示,双预测运动矢量候选包括指向参考图片1的Mv0和指向参考图片2的Mv1。选择Mv0作为单预测运动矢量以包括在单预测运动矢量集合中,因为参考图片1按编码顺序比参考图片2更接近当前图片。
在一些实施例中,双预测运动矢量的参考图片(其为按显示顺序在当前图片之前的参考图片)的运动矢量被包括在单预测运动矢量候选集合中。如图52所示,双预测运动矢量候选包括指向参考图片1的Mv0和指向参考图片2的Mv1。选择Mv0作为单预测运动矢量以包括在单预测运动矢量集合中,因为参考图片1是按显示顺序出现在当前图片之前的参考图片。
在一些实施例中,双预测运动矢量的参考图片(其为按显示顺序在当前图片之后的参考图片)的运动矢量被包括在单预测运动矢量候选集合中。如图52所示,双预测运动矢量候选包括指向参考图片1的Mv0和指向参考图片2的Mv1。选择Mv1作为单预测运动矢量以包括在单预测运动矢量集合中,因为参考图片2是按显示顺序在当前图片之后的参考图片。
在一些实施例中,可以组合从双预测运动矢量导出单预测运动矢量的上述示例方式。例如,在一些实施例中,按显示顺序最接近当前图片并且在当前图片之前的双预测运动矢量的参考图片的运动矢量可以被包括在单预测运动矢量候选集合中。如图53所示,双预测运动矢量候选包括指向参考图片1的Mv0和指向参考图片2的Mv1。选择Mv0作为单预测运动矢量以包括在单预测运动矢量集合中,因为即使参考图片2按显示顺序可能与当前图片更接近或距离相同,参考图片1按显示顺序也在当前图片之前。
在另一个示例中,在一些实施例中,按显示顺序最接近当前图片并且在当前图片之后的双预测运动矢量的参考图片的运动矢量可以被包括在单预测运动矢量候选集合中。如图53所示,双预测运动矢量候选包括指向参考图片1的Mv0和指向参考图片2的Mv1。选择Mv1作为单预测运动矢量以包括在单预测运动矢量集合中,因为即使参考图片1可能按显示顺序与当前图片更接近或距离相同,参考图片2按显示顺序也在当前图片之后。
在另一示例中,在一些实施例中,可以将双预测运动矢量的(按显示顺序最接近当前图片并且指向参考图片列表0的)参考图片的运动矢量包括在单预测运动矢量候选集合中。可以采用从运动矢量候选列表中导出单预测运动矢量候选的方式的其他组合(例如,包括来自列表的单预测运动矢量候选和从列表的双预测运动矢量候选中导出的单预测运动矢量候选)。
如前所述,也可以从单预测运动矢量中导出单预测运动矢量集合中的单预测运动矢量。图54至图56是用于示出从单预测运动矢量生成一个或多个单预测运动矢量的概念图。
例如,在一些实施例中,仅候选运动矢量列表中的单预测运动矢量可以被包括在单预测运动矢量候选集合中,并且附加的单预测运动矢量可以从该候选运动矢量列表中的单预测运动矢量导出,并且被包括在单预测运动矢量集合中。图54示出了候选运动矢量列表中的单预测运动矢量Mv0,该候选运动矢量列表被包括在单预测运动矢量候选集合中。Mv0指向列表L0中与单预测运动矢量的索引相关联的参考图片。除了Mv0之外,指向与单预测运动矢量的索引相关联的参考图片列表L1的Mv0'(Mv0的镜像)也被包括在该单预测运动矢量集合中。
在另一个示例中,图55示出了被包括在单预测运动矢量候选集合中的候选运动矢量列表中的单预测运动矢量Mv0。Mv0指向与单预测运动矢量的索引相关联的列表L0中的第一参考图片。除了Mv0之外,Mv0的缩放运动矢量也可以被包括在单预测运动矢量候选集合中。如图55所示,Mv0'(其为指向列表L0中的第二参考图片的Mv0的缩放版本)和MV0”(其为指向列表L0中的第三参考图片的Mv0的缩放版本)也被包括在单预测运动矢量集合中。
在一些实施例中,列表的单预测运动矢量候选和列表的双预测运动矢量候选的个体运动矢量可以包括在单预测运动矢量候选集合中。参考图51至53,Mv0和Mv1二者都将被包括在该单预测运动矢量候选集合中,以及被包括在该列表中的任何单预测运动矢量候选。单预测运动矢量候选集合通常可以包括五个或六个单预测运动矢量候选(例如,对于分区五个,对于块六个)。
在一些实施例中,可以从双预测运动矢量候选的两个运动矢量中导出要包括在单预测运动矢量集合中的单预测运动矢量。图56示出了从双预测运动矢量候选的两个运动矢量中导出要包括在集合中的单预测运动矢量的示例。如图56所示,双预测运动矢量候选包括指向参考图片0的Mv0和指向参考图片1的Mv1。生成Mv1(Mv1’的镜像),其指向参考图片0(Mv0指向的参考图片)。Mv0和Mv1’可以被平均,并且所得到的矢量可以被包括在单预测运动矢量候选集合中(例如,与列表中的任何单预测运动矢量候选一起)。
在一些实施例中,列表的单预测运动矢量以及至少一个分区的相邻分区的两个运动矢量的平均运动矢量被包括在该集合中。在一些实施例中,列表的单预测运动矢量以及从相邻分区的运动矢量导出的运动矢量被包括在该集合中。可以使用运动矢量导出模型来对相邻分区进行编码,例如以仿射模式。在一些实施例中,列表的单预测运动矢量以及相邻分区的多个运动矢量的加权组合被包括在该集合中。施加到多个运动矢量中的运动矢量的权重可以例如基于相邻分区的位置、大小、编码模式等。
在实施例中,预测第一运动矢量(参见图47A的S1002和图47B的S1002')可以包括从运动矢量候选的第一集合中选择运动矢量,以及将所选择的运动矢量与相邻分区的运动矢量进行比较。图57是用于示出图像块的第一和第二分区的单向运动矢量的概念图。如图57所示,可以针对至少第一分区从运动矢量候选集合中选择Mv0(如图所示的白色三角形),并且可以针对相邻分区从运动矢量候选集合中选择Mv1(如图所示的阴影三角形)。注意,块的两个三角形分区不具有相同的单预测运动矢量候选。
在实施例中,Mv0是单预测运动矢量,并且用于预测第一分区的运动矢量。
在实施例中,Mv0是双预测运动矢量候选,并且Mv1是单预测运动矢量候选。例如,可以选择指向与Mv1指向(例如,指向列表L0或指向列表L1)相同的预测方向的Mv0的运动矢量,作为用于预测至少第一分区的第一运动矢量的运动矢量。在另一示例中,例如可以选择Mv0的运动矢量,该运动矢量指向Mv1指向(例如,指向列表L0或列表L1)的相反预测方向,作为用于针对至少第一分区预测第一运动矢量的运动矢量。
在实施例中,Mv0和Mv1二者都是双预测运动矢量候选。可以确定Mv0和Mv1之间的差,并且例如,如果在L0方向上的差大于或等于在L1方向上的差,则可以使用在L0方向上的Mv0的运动矢量来预测第一运动矢量,否则可以使用L1方向上的Mv0的运动矢量。在另一示例中,如果在L0方向上的差大于或等于在L1方向上的差,则可以使用L1方向上的Mv0的运动矢量来预测第一运动矢量,否则可以使用L0方向上的Mv0的运动矢量。
在另一示例中,预测第一运动矢量可以包括基于单预测运动矢量候选的位置或大小从单预测运动矢量集合中选择运动矢量。
相邻分区的单预测运动矢量候选集合可以包括例如五个单预测运动矢量候选(例如,{Mv1,Mv2,Mv3,Mv4,Mv5})。如果选择Mv2作为从中针对相邻分区预测运动矢量的单预测运动矢量,则Mv2将不被包括在(或可以从中排除)从中针对至少第一分区预测第一运动矢量的单预测运动矢量候选集合中。如果从单预测运动矢量候选集合(例如,Mv6)的集合中移除了Mv2,则Mv2可以由另一单预测运动矢量代替。
在实施例中,是使用第一运动矢量候选集合(其可以包含单预测和双预测运动矢量候选二者),还是使用第二单预测运动矢量候选集合来预测图像块的分区的运动矢量可以基于各种标准。
例如,图58是示出了根据一个实施例的以下过程流程2000的示例的流程图:根据分区的形状从第一单预测运动矢量候选集合或从第二运动矢量候选集合(其包括双预测运动矢量候选和单预测运动矢量候选)中预测图像块的分区的运动矢量,并执行进一步的处理。
在步骤S2001中,将图像块分割为包括至少第一分区的多个分区,该第一分区可以具有或可以不具有非矩形形状。参见图48,其是将图像块分割成多个分区的示例。
在步骤S2002中,过程流程2000判断或确定当前分区(例如,如图所示,至少第一分区)是否是矩形形状的分区。当在步骤S2002处确定当前分区是矩形形状的分区时,过程流程2000进行到S2004。当在S2002处确定当前分区不是矩形形状的分区时,过程流程2000进行到S2003。
在步骤S2004中,从第一单预测运动矢量候选集合中预测第一运动矢量,例如,可以如上所述生成第一单预测运动矢量候选集合。在步骤S2003中,从第二运动矢量候选集合中预测第一运动矢量,该第二运动矢量候选集合可以包括单预测和双预测运动矢量候选二者。在步骤S2005中,使用第一运动矢量对当前分区进行编码或解码。
在另一个示例中,图59是示出根据一个实施例的以下过程流程的示例的流程图:根据块的大小或分区的大小从第一单预测运动矢量候选集合或从第二运动矢量候选集合(包括双预测运动矢量候选和单预测运动矢量候选)中预测图像块的分区的运动矢量,并执行进一步处理。
在步骤S3001中,将图像块分割为包括至少第一分区的多个分区,该第一分区可以具有或可以不具有非矩形形状。参见图48,其是将图像块分割成多个分区的示例。
在步骤S3002中,过程流程3000判断或确定当前块或当前分区的大小是否大于阈值大小。当在步骤S3002处确定当前块或当前分区的大小没有大于阈值大小时,过程流程3000进行到S3004。当在S3002确定当前块或分区的大小大于阈值大小时,过程流程3000进行到S3003。
在步骤S3004中,从第一单预测运动矢量候选集合中预测第一运动矢量,例如,可以如上所述生成第一单预测运动矢量候选集合。在步骤S3003中,从第二运动矢量候选集合中预测第一运动矢量,该第二运动矢量候选集合可以包括单预测和双预测运动矢量候选二者。在步骤S3005中,使用第一运动矢量对当前分区进行编码或解码。
可以采用各种阈值大小。例如,可以采用16×16像素阈值大小,并且可以使用单预测运动矢量候选集合来处理小于16×16像素的块或分区,而可以使用双预测来处理较大的大小。另外,图像块或分区的大小可以是图像块或分区的宽度、图像块或分区的高度、图像块或分区的宽度与高度的比率、图像块或分区的高度与宽度比率、图像块或分区的亮度样本的数量、图像块或分区的样本的数量等、以及它们的各种组合。
图60是示出了根据一个实施例的以下过程流程4000的示例的流程图:从第一分区和第二分区的候选运动矢量集合中导出第一分区的运动矢量和第二分区的运动矢量,并执行进一步的处理。
在步骤S4001中,将图像块分割为包括至少第一分区和第二分区的多个分区,第一分区和第二分区可以具有或可以不具有非矩形形状。例如,第一分区和第二分区可以是三角形形状的分区。参见图48,其是将图像块分割成多个分区的示例。
在步骤S4002中,过程流程4000为第一和第二分区创建第一运动矢量候选集合。第一运动矢量候选集合可以是图像块的运动矢量候选列表。运动矢量候选列表的运动矢量候选可以包括双预测运动矢量候选和单预测运动矢量候选。在实施例中,第一运动矢量候选集合可以是双预测运动矢量候选集合。
在步骤S4003中,从第一运动矢量候选集合中选择至少两个运动矢量。所选择的运动矢量候选可以包括双预测运动矢量候选和单预测运动矢量候选。在实施例中,所选择的运动矢量候选是双预测运动矢量候选。
在步骤S4004中,过程流程4000根据基于至少两个选择的运动矢量候选的比较结果,导出用于第一分区的第一运动矢量和用于第二分区的第二运动矢量。这可以以各种方式来完成。
例如,对于总共四个运动矢量,至少两个选择的运动矢量候选都可以是均具有两个运动矢量的双预测运动矢量候选。所导出的第一和第二所导出的运动矢量可以是至少两个所选运动矢量候选的所有四个运动矢量之中幅度差异最大的四个运动矢量中的两个运动矢量。所导出的第一和第二运动矢量是单预测运动矢量。
在另一示例中,对于总共四个运动矢量,至少两个选择的运动矢量候选都可以是双预测运动矢量候选,其均具有两个运动矢量。所导出的第一和第二所导出的运动矢量可以是至少两个所选运动矢量候选的所有四个运动矢量之中幅度差最小的四个运动矢量中的两个运动矢量。所导出的第一和第二运动矢量是单预测运动矢量。
在另一示例中,至少两个所选运动矢量候选中的至少一个可以是具有两个运动矢量(总共三个或四个运动矢量)的双预测运动矢量候选。所导出的第一和第二导出的运动矢量可以是至少两个所选运动矢量候选中的运动矢量中的最大或最小的所选运动矢量候选的运动矢量中的两个运动矢量。所导出的第一和第二运动矢量是单预测运动矢量。在步骤S4005中,使用第一和第二导出的运动矢量对第一运动矢量、第一和第二分区进行编码或解码。
可以通过组合本公开中的其他方面的至少一部分来执行本文公开的一个或多个方面。另外,本文公开的一个或多个方面可以通过将根据这些方面的任何流程图中指示的过程的部分、任何设备的配置的一部分、语法的一部分等与其他方面相组合来执行。
(实施方式与应用)
如以上每个实施例中所描述的,每个功能或操作块通常可以被实现为例如MPU(微处理单元)和存储器。此外,由每个功能块执行的过程可以被实现为程序执行单元,例如读取并执行被记录在诸如ROM之类的记录介质上的软件(程序)的处理器。该软件可以被分发。该软件可以被记录在诸如半导体存储器之类的各种记录介质上。注意,每个功能块也可以被实现为硬件(专用电路)。可以采用硬件和软件的各种组合。
每个实施例中描述的处理可以经由使用单个装置(系统)的集成处理来实现,并且可替代地,可以经由使用多个装置的分散处理来实现。此外,执行上述程序的处理器可以是单个处理器或多个处理器。换句话说,可以执行集成处理,并且可替代地,可以执行分散处理。
本公开的实施例不限于以上示例性实施例;可以对示例性实施例进行各种修改,其结果也被包括在本公开的实施例的范围内。
接下来,将描述在以上每个实施例中描述的运动图像编码方法(图像编码方法)和运动图像解码方法(图像解码方法)的应用示例,以及实现该应用示例的各种系统。这样的系统的特性可以在于包括:采用图像编码方法的图像编码器;采用图像解码方法的图像解码器;或者包括图像编码器和图像解码器二者的图像编码器-解码器。这种系统的其他配置可以视情况而定地修改。
(用法示例)
图61示出了适于实现内容分发服务的内容提供系统ex100的整体配置。提供通信服务的区域被分成期望大小的小区,并且基站ex106、ex107、ex108、ex109和ex110(在所示的示例中是固定无线站)位于相应小区中。
在内容提供系统ex100中,包括计算机ex111、游戏设备ex112、相机ex113、家用电器ex114和智能手机ex115的设备经由互联网服务提供商ex102或通信网络ex104以及基站ex106至ex110连接到互联网ex101。内容提供系统ex100可以组合并连接上述设备的任何组合。在各种实施方式中,设备可以直接连接在一起,或者经由电话网络或近场通信而不是经由基站ex106至ex110间接地连接在一起。此外,流式传输服务器ex103可以经由例如互联网ex101连接到包括计算机ex111、游戏设备ex112、相机ex113、家用电器ex114和智能手机ex115的设备。流式传输服务器ex103还可以经由卫星ex116连接到例如飞机ex117中的热点中的终端。
注意,可以使用无线接入点或热点代替基站ex106到ex110。流式传输服务器ex103可以直接连接到通信网络ex104,而不是通过互联网ex101或互联网服务提供商ex102,并且可以直接连接到飞机ex117,而不是通过卫星ex116。
相机ex113是一种能够捕获静止图像和视频的设备,例如数码相机。智能手机ex115是可以在2G、3G、3.9G和4G系统以及下一代5G系统的移动通信系统标准下操作的智能手机设备、蜂窝电话或个人手持电话系统(PHS)电话。
家用电器ex114例如是冰箱或被包括在家庭燃料电池热电联产系统中的设备。
在内容提供系统ex100中,包括图像和/或视频捕获功能的终端能够例如通过经由例如基站ex106连接到流式传输服务器ex103而进行实时流式传输。当进行实时流式传输时,终端(例如,计算机ex111、游戏设备ex112、相机ex113、家用电器ex114、智能手机ex115或飞机ex117中的终端)可以对用户经由终端捕获到的静止图像或视频内容执行上述实施例中描述的编码处理,可以将通过编码获得的视频数据和通过对与视频相对应的音频进行编码而获得的音频数据进行复用,并且可以将获得的数据发送到流式传输服务器ex103。换句话说,根据本公开的一方面,终端用作图像编码器。
流式传输服务器ex103将发送的内容数据流式传输到请求该流的客户端。客户端示例包括能够解码上述编码数据的计算机ex111、游戏设备ex112、相机ex113、家用电器ex114、智能手机ex115和飞机ex117内的终端。接收流式传输的数据的设备可以解码和再现接收的数据。换句话说,根据本公开的一方面,设备均可以用作图像解码器。
(分散处理)
流式传输服务器ex103可以被实现为在其之间划分诸如数据的处理、记录和流式传输之类的任务的多个服务器或计算机。例如,流式传输服务器ex103可以被实现为内容传递网络(CDN),该CDN经由连接位于世界各地的多个边缘服务器的网络来流式传输内容。在CDN中,可以将物理上接近客户端的边缘服务器动态分配给客户端。内容被缓存并流式传输到边缘服务器以减少加载时间。例如,如果由于流量高峰而出现某种类型的错误或连接性的更改,则可以稳定地高速流式传输数据,因为可以通过以下方式避免网络的受影响部分:例如,在多个边缘服务器之间划分处理,或者将流式传输职责切换到不同的边缘服务器并继续流式传输。
分散化不仅限于针对流式传输的处理的划分;捕获的数据的编码可以在终端之间划分并由终端执行、在服务器侧执行、或二者兼有。在一个示例中,在典型编码中,该处理在两个循环中执行。第一循环用于在逐帧或逐场景的基础上检测图像的复杂程度,或检测编码负载。第二循环用于保持图像质量并提高编码效率的处理。例如,可以通过使终端执行编码的第一循环并且使接收内容的服务器侧执行编码的第二循环,来减轻终端的处理负荷并提高内容的质量和编码效率。在这种情况下,在接收到解码请求时,有可能近似实时地在另一个终端上接收并再现由一个终端执行的第一循环所产生的编码数据。这使得可以实现流畅的实时的流式传输。
在另一示例中,相机ex113等从图像提取特征量(特征量或特性量),将与该特征量有关的数据压缩为元数据,并将压缩后的元数据发送到服务器。例如,服务器基于特征量确定对象的重要性,并相应地改变量化精度以执行适合于图像的含义(或内容重要性)的压缩。在服务器执行的第二遍压缩期间,特征量数据在提高运动矢量预测的精度和效率方面特别有效。此外,终端可以处理诸如可变长度编码(VLC)之类的具有相对较低处理负荷的编码,并且可以由服务器处理诸如上下文自适应二进制算术编码(CABAC)之类的具有相对较高处理负荷的编码。
在又一示例中,存在其中例如在体育场、购物中心或工厂中的多个终端捕获近似相同场景的多个视频的情况。在这种情况下,例如,可以通过在捕获视频的多个终端(以及如果需要的话,未捕获视频的其他终端)与服务器之间在每单位的基础上划分处理任务来分散编码。单位可以是例如图片组(GOP)、图片或划分图片得到的图块。这样可以减少加载时间并实现更接近实时的流式传输。
由于视频具有大致相同的场景,因此服务器可以执行管理和/或指令,使得可以交叉引用终端捕获的视频。此外,服务器可以从终端接收编码的数据,改变数据项之间的引用关系,或者校正或替换图片本身,然后执行编码。这使得可以为个体数据项以提高的质量和效率生成流。
此外,服务器可以在执行转码以转换视频数据的编码格式之后流式传输视频数据。例如,服务器可以将编码格式从MPEG转换为VP(例如VP9),可以将H.264转换为H.265等。
这样,可以由终端或一个或多个服务器来执行编码。因此,尽管在下面的描述中将执行编码的设备称为“服务器”或“终端”,但是由服务器执行的一些或全部过程可以由终端执行,并且同样地,由终端执行的一些或全部过程也可以由服务器执行。这也适用于解码过程。
(3D,多角度)
通过多个终端(例如,相机ex113和/或智能手机ex115),从同时捕获的不同场景的图像或视频或从不同角度捕获的同一场景的图像或视频组合的图像或视频的使用已经增加。可以基于例如终端之间单独获得的相对位置关系或视频中具有匹配特征点的区域来组合由终端捕获的视频。
除了对二维运动图像进行编码之外,服务器还可以基于运动图片的场景分析来自动地或在用户指定的时间点对静止图像进行编码,并将编码后的静止图像发送到接收终端。此外,当服务器可以获得视频捕获终端之间的相对位置关系时,除了二维运动图像之外,服务器还可以基于从不同角度捕获的同一场景的视频来生成场景的三维几何形状。服务器可以单独地对从例如点云生成的三维数据进行编码,并且基于使用三维数据识别或跟踪人或对象的结果,服务器可以从多个终端捕获的视频中选择或重构并生成要发送到接收终端的视频。
这允许用户通过自由地选择与视频捕获终端相对应的视频来享受场景,并且允许用户享受通过从由多个图像或视频重构的三维数据中在选择的视点提取视频而获得的内容。此外,与视频一样,可以从相对不同的角度记录声音,并且服务器可以将来自特定角度或空间的音频与对应的视频进行复用,并发送复用的视频和音频。
近年来,由诸如虚拟现实(VR)和增强现实(AR)内容之类的现实世界和虚拟世界组成的内容也变得流行。在VR图像的情况下,服务器可以创建来自左眼和右眼二者的视点的图像,并执行容许在两个视点图像之间进行参考的编码,例如多视图编码(MVC),并且可替代地,可以将图像编码为单独的流而无需参考。当将图像解码为单独的流时,可以在再现时对流进行同步,以便根据用户的观点来重新创建虚拟三维空间。
在AR图像的情况下,服务器可以基于从用户的角度来看的三维位置或运动,来将存在于虚拟空间中的虚拟对象信息叠加到表示真实空间的相机信息上。解码器可以获取或存储虚拟对象信息和三维数据,基于从用户角度的运动来生成二维图像,然后通过无缝地连接图像来生成叠加数据。可替代地,除了针对虚拟对象信息的请求之外,解码器还可以向服务器发送从用户的角度的运动。服务器可以根据接收到的运动,基于存储在服务器中的三维数据来生成叠加数据,并将所生成的叠加数据编码并流式传输至解码器。注意,叠加数据通常除了RGB值之外还包括表示透明度的α值,并且服务器将除了从三维数据生成的对象以外的部分的α值设置为例如0,并且可以在那些部分是透明的同时执行编码。可替代地,服务器可以将背景设置为确定的RGB值(例如色度键),并生成将除了对象以外的区域设置为背景的数据。所确定的RGB值可以是预定的。
类似地流式传输的数据的解码可以由客户端(例如,终端)执行、在服务器侧执行、或者在它们之间划分。在一个示例中,一个终端可以将接收请求发送到服务器,所请求的内容可以被另一终端接收和解码,并且解码的信号可以被发送到具有显示器的设备。无论通信终端本身的处理能力如何,都可以通过分散处理并适当地选择内容来再现高质量图像数据。在又一示例中,例如,当TV正在接收大尺寸的图像数据时,可以对诸如通过划分图片而获得的图块之类的图片的区域进行解码并显示在TV的一个或多个观看者的一个或多个个人终端上。这使得观看者可以共享大图片视图,并且每个观看者都可以检查他的或她的被指派的区域,或者更近距离地检视区域。
在近距离、中距离和远距离上(室内或室外)可能有多个无线连接的情况下,可以使用诸如MPEG-DASH之类的流式传输系统标准无缝地接收内容。用户可以在数据之间实时切换,同时自由地选择包括用户终端、布置在室内或室外的显示器等的解码器或显示装置。此外,使用例如关于用户位置的信息,可以在切换哪个终端处理解码并且哪个终端处理内容的显示的同时执行数据解码。这使得用户可以在前往目的地的途中的同时、在嵌入了能够显示内容的设备的附近建筑物的墙壁上、或在地面的部分上映射并显示信息。此外,还可以基于对网络上的编码数据的可访问性来切换接收到的数据的比特率,例如何时将编码数据缓存在可从接收终端快速访问的服务器上,或者何时将编码数据复制到内容交付服务中的边缘服务器。
(可缩放编码)
将参考图62中所示的可缩放流来描述内容的切换,经由上述实施例所述的运动图像编码方法的实施方式来对该可缩放流进行压缩编码。服务器可以具有这样的配置,其中,在利用流的时间和/或空间可缩放性的同时切换内容,这通过对层进行划分和编码来实现,如图62所示。请注意,可以存在多个内容相同但质量不同的个体流。换句话说,通过基于诸如解码器侧的处理能力之类的内部因素和诸如通信带宽之类的外部因素确定要解码哪个层,解码器侧可以在解码的同时在低分辨率内容和高分辨率内容之间自由切换。例如,在用户想要例如在家中在诸如连接到互联网的TV之类的设备上继续观看该用户先前在移动的同时在智能手机ex115上观看的视频的情况下,该设备可以简单地将同一流解码到不同层,这减少了服务器端的负载。
此外,除了上述配置(其中,由于按层对图片进行编码而实现了可缩放性,其中增强层位于基础层之上)之外,增强层还可以包括基于例如关于图像的统计信息的元数据。解码器侧可以通过基于元数据对基础层中的图片执行超分辨率成像来生成高图像质量内容。超分辨率成像可以在保持分辨率和/或提高分辨率的同时提高信噪比。元数据包括用于识别在超分辨率处理中使用的线性或非线性滤波器系数的信息,或识别在超分辨率处理中使用的滤波处理、机器学习或最小二乘法的参数值的信息。
可替代地,可以提供一种配置,其中根据例如图像中的对象的含义将图片划分为例如图块。在解码器侧,通过选择要解码的图块仅解码部分区域。此外,通过将对象(人、汽车、球等)的属性和对象在视频中的位置(相同图像中的坐标)存储为元数据,解码器侧可以基于元数据识别期望的对象的位置并确定哪个或哪些图块包括该对象。例如,如图63所示,可以使用不同于像素数据的数据存储结构来存储元数据,例如HEVC中的SEI(补充增强信息)消息。该元数据表示例如主要对象的位置、大小或颜色。
元数据可以以多个图片为单位存储,例如流、序列或随机访问单位。解码器侧可以获得例如特定人出现在视频中的时间,并且通过将时间信息与图片单位信息相匹配,可以识别其中存在对象的图片,并且可以确定图片中的对象的位置。
(网页优化)
例如,图64示出了计算机ex111上的网页的显示屏幕的示例。图65示出了例如智能手机ex115上的网页的显示屏幕的示例。如图64和图65所示,网页可以包括作为到图像内容的链接的多个图像链接,并且网页的外观可以取决于用于查看网页的设备而不同。当在屏幕上可查看多个图像链接时,直到用户明确选择图像链接,或者直到图像链接位于屏幕的大致中心或者整个图像链接适于屏幕中为止,显示装置(解码器)可以显示内容或I图片中包括的静止图像作为图像链接;可以使用多个静止图像或I图片显示诸如动画gif之类的视频;或者可以仅接收基础层,并且解码并显示视频。
当用户选择图像链接时,显示装置在例如将最高优先级给予基础层的同时执行解码。注意,如果网页的HTML代码中存在指示内容是可缩放的信息,则显示装置可以解码直至增强层。此外,为了保证实时再现,在进行选择之前或当带宽受到严重限制时,显示装置可以减小在对前导图片进行解码的时间点与通过仅解码和显示前向参考图片(I图片、P图片、前向参考B图片)来显示经解码的图片的时间点之间的延迟(即,从内容的解码开始到内容的显示之间的延迟)。更进一步,显示装置可以有意地忽略图片之间的参考关系,并且将所有B和P图片粗略地解码为前向参考图片,然后随着时间推移接收到的图片数量的增加而执行常规解码。
(自动驾驶)
当发送和接收静止图像或视频数据(例如用于自动驾驶或辅助驾驶汽车的二维或三维地图信息)时,除了属于一层或多层的图像数据之外,接收终端还可以接收关于例如天气或道路建设的信息作为元数据,并在解码时将元数据与图像数据相关联。注意,元数据可以按层指派,并且可替代地可以简单地与图像数据复用。
在这种情况下,由于包含接收终端的汽车、无人机、飞机等是可移动的,因此接收终端可以在基站ex106至ex110之中的基站之间进行切换的同时,通过发送指示接收终端的信息来无缝地接收并执行解码。而且,根据用户进行的选择、用户的状况和/或连接的带宽,接收终端可以动态地选择接收元数据的程度或例如更新地图信息的程度。
在内容提供系统ex100中,客户端可以实时接收、解码和再现由用户发送的编码信息。
(流式传输个体内容)
在内容提供系统ex100中,除了高图像质量之外,由视频分发实体分发的长内容、低图像质量的单播或多播流式传输以及来自个人的短内容也是可能的。来自个人的此类内容可能会进一步普及。服务器可以首先在编码处理之前对内容执行编辑处理,以便细化个体内容。例如,这可以使用以下配置来实现。
在捕获视频或图像内容的同时,或者在捕获和累积内容之后,服务器会实时基于原始数据或编码数据执行识别处理,例如捕获错误处理、场景搜索处理、含义分析和/或对象检测处理。然后,基于识别处理的结果,服务器(在被提示时或自动地)编辑内容,其示例包括:诸如焦点和/或运动模糊校正之类的校正;移除低优先级的场景,例如与其他图片相比亮度较低的场景、或对焦不清晰的场景;对象边缘调整;和色调调整。服务器基于编辑结果对编辑的数据进行编码。已知过长的视频往往收到较少的观看。因此,为了将内容保持在与原始视频的长度成比例的特定长度内,除了上述低优先级场景之外,服务器还可以基于图像处理结果来自动裁剪出具有低运动的场景。可替代地,服务器可以基于对场景含义的分析结果来生成并编码视频摘要。
存在这样的实例,其中个体内容可能包括侵犯版权、精神权利、肖像权等的内容。这种实例可能会使创作者处于不利的处境,例如当内容共享超出了创作者预期的范围时。因此,例如,在编码之前,服务器可以例如编辑图像以便使屏幕外围的人的脸部模糊或使房屋的内部模糊。此外,服务器可以被配置为在要编码的图像中识别除了注册的人之外的人的面部,并且当这样的面部出现在图像中时,可以将马赛克过滤器应用于例如该人的面部。可替代地,作为用于编码的预处理或后处理,用户出于版权原因可以指定图像的包括人的区域或待处理背景的区域。服务器可以例如通过用不同的图像替换该区域或使该区域模糊来处理指定的区域。如果该区域包括人,则可以在运动图片中跟踪该人,并且当该人移动时,可以用另一个图像替换该人的头部区域。
由于存在实时观看个人产生的内容的需求,并且该内容的数据大小往往很小,因此解码器可以首先接收基础层作为最高优先级,并执行解码和再现,但这可能会取决于带宽而有所不同。当内容被再现两次或更多次时,例如当解码器在基础层的解码和再现期间接收到增强层并且循环再现时,解码器可以再现包括增强层的高图像质量视频。如果使用这种可缩放编码对流进行编码,则视频处于未选择状态时或在视频开始时可能质量低下,但是它可以提供一种流的图像质量以智能方式逐渐提高的体验。这不仅限于可缩放编码;通过配置来自第一次再现的低质量流的单个流和使用第一流作为参考进行编码的第二流,可以提供相同的体验。
(其他实施方式和应用示例)
编码和解码可以由通常被包括在每个终端中的LSI(大规模集成电路)ex500(参见图61)执行。LSI ex500可以由单个芯片或多个芯片构成。可以将用于对运动图像进行编码和解码的软件集成到某种类型的记录介质(例如CD-ROM、软盘或硬盘)中,该记录介质可由例如计算机ex111读取,并且可以使用软件进行编码和解码。此外,当智能手机ex115配备有相机时,相机所获得的视频数据可以被传输。在这种情况下,视频数据可以通过智能手机ex115中包括的LSI ex500进行编码。
请注意,LSI ex500可以被配置为下载并激活应用。在这种情况下,终端首先确定它是否与用于编码内容的方案兼容,或者是否能够执行特定服务。当终端与内容的编码方案不兼容时,或者当终端不能够执行特定服务时,终端可以首先下载编解码器或应用软件,然后获取并再现内容。
除了使用互联网ex101的内容提供系统ex100的示例之外,至少在上述实施例中描述的运动图像编码器(图像编码器)或运动图像解码器(图像解码器)可以在数字广播系统中实现。可以将相同的编码处理和解码处理应用于使用例如卫星来发送和接收与复用的音频和视频数据叠加的广播无线电波,虽然这是针对多播而装备的,而对于内容提供系统ex100,单播更容易。
(硬件配置)
图66示出了图61中所示的智能手机ex115的更多细节。图67示出了智能手机ex115的配置示例。智能手机ex115包括用于向基站ex110发送无线电波和从基站ex110接收无线电波的天线ex450、能够捕获视频和静止图像的相机ex465、以及显示解码数据的显示器ex458,所述数据例如相机ex465捕获的视频和天线ex450接收的视频。智能手机ex115还包括:诸如触摸面板之类的用户界面ex466,诸如用于输出语音或其他音频的扬声器之类的音频输出单元ex457,诸如用于音频输入的麦克风之类的音频输入单元ex456,能够存储诸如捕获的视频或静止图像、录制的音频、接收到的视频或静止图像、以及邮件、以及解码的数据的之类的解码数据的存储器ex467,以及插槽ex464(它是SIM ex468的用于授权访问网络和各种数据的接口)。请注意,可以使用外部存储器代替存储器ex467。
可以全面控制显示器ex458和用户界面ex466的主控制器ex460、电源电路ex461、用户界面输入控制器ex462、视频信号处理器ex455、相机接口ex463、显示控制器ex459、调制器/解调器ex452、复用器/解复用器ex453、音频信号处理器ex454、插槽ex464和存储器ex467经由总线ex470连接。
当用户打开电源电路ex461的电源按钮时,智能手机ex115通电而进入可操作状态,并且从电池组为每个组件供电。
智能电话ex115基于由包括CPU、ROM和RAM的主控制器ex460执行的控制来执行例如呼叫和数据传输的处理。当进行呼叫时,由音频输入单元ex456记录的音频信号由音频信号处理器ex454转换为数字音频信号(通过调制器/解调器ex452对数字音频信号应用扩频处理并对其进行数模转换),并通过发送器/接收器ex451应用频率转换处理,并且所得信号通过天线ex450发送。接收到的数据被放大、频率转换以及模数转换、通过调制器/解调器ex452进行逆扩频处理、通过音频信号处理器ex454转换为模拟音频信号、然后从音频输出单元ex457输出。在数据传输模式中,例如,可以基于主体的用户界面ex466的操作,经由用户界面输入控制器ex462在主控制器ex460的控制下传输文本、静止图像或视频数据。执行类似的发送和接收处理。在数据传输模式下,当发送视频、静止图像或视频和音频时,视频信号处理器ex455经由上述实施例中所述的运动图像编码方法对存储在存储器ex467中的视频信号或从相机ex465输入的视频信号进行压缩编码,并将编码的视频数据发送到复用器/解复用器ex453。音频信号处理器ex454在相机ex465正在捕获视频或静止图像的同时,对由音频输入单元ex456记录的音频信号进行编码,并将编码后的音频数据发送至复用器/解复用器ex453。复用器/解复用器ex453使用确定的方案复用编码的视频数据和编码的音频数据,使用调制器/解调器(调制器/解调器电路)ex452和发送器/接收器ex451对数据进行调制和转换,并且经由天线ex450发送结果。所确定的方案可以是预定的。
例如,当接收到附加在电子邮件或聊天中的视频或从网页链接的视频时,为了对经由天线ex450接收到的复用数据进行解码,复用器/解复用器ex453对复用数据进行解复用以将复用数据划分成视频数据的比特流和音频数据的比特流,将编码的视频数据经由同步总线ex470提供给视频信号处理器ex455,并将编码的音频数据经由同步总线ex470提供给音频信号处理器ex454。视频信号处理器ex455使用与上述实施例中描述的运动图像编码方法相对应的运动图像解码方法对视频信号进行解码,并且链接的运动图像文件中包括的视频或静止图像经由显示控制器ex459显示在显示器ex458上。音频信号处理器ex454解码音频信号并从音频输出单元ex457输出音频。由于实时流式传输正变得越来越流行,因此根据用户的环境,可能存在实例,其中音频的再现可能在社会上不合适。因此,作为初始值,仅再现视频数据即不再现音频信号的配置可以是优选的;仅当接收到的输入时(例如当用户点击视频数据时),才可以同步和再现音频。
尽管在以上示例中使用了智能手机ex115,但也可想到其他实施方式:包括编码器和解码器二者的收发器终端;仅包括编码器的发送器终端;仅包括解码器的接收器终端。在数字广播系统的描述中,给出了一个示例,其中,接收或发送作为视频数据与音频数据被复用的结果而获得的复用数据。然而,复用的数据可以是与除音频数据之外的数据(例如与视频有关的文本数据)复用的视频数据。此外,可以接收或发送视频数据本身而不是复用数据。
尽管将包括CPU的主控制器ex460描述为控制编码或解码过程,但是各种终端通常包括GPU。因此,可接受这样的配置,其中经由CPU和GPU共享的存储器或包括被管理以便允许CPU和GPU共同使用的地址的存储器,通过利用GPU的执行能力来一次处理一个大区域。这使得可以缩短编码时间,保持流的实时性质并减少延迟。特别地,例如,与运动估计、解块滤波、样本自适应偏移(SAO)以及变换/量化有关的处理可以由GPU而不是CPU以图片为单位有效地一次全部执行。
- 一种用于视频编码的计算系统及视频编码方法
- 视频编码器、视频编码系统和视频编码方法