导出子预测单元的时间点之间的运动信息的方法和装置与流程

文档序号:20040094发布日期:2020-02-28 11:48阅读:140来源:国知局
导出子预测单元的时间点之间的运动信息的方法和装置与流程

本申请为于2016年7月1日提交、申请号为201580003671.6、发明名称为“用于导出子预测单元的时间点之间的运动信息的方法和装置”的中国专利申请的分案申请。所述母案申请的国际申请日为2015年1月5日,国际申请号为pct/kr2015/000050。

本发明涉及对3d图像进行编码/解码的设备和方法,更具体地涉及根据子预测单元并行地导出视点间运动信息的图像编码/解码方法和设备。



背景技术:

发展的it产业已经使hd(高清晰度)广播服务遍及全球,并且越来越多的用户习惯了高清图像。

因此,用户需要更高质量和更高分辨率的图像,并且许多机构正在激励自己开发下一代成像装置以不辜负这种期望。因此,用户可以体验全高清(fhd)和超高清(uhd)支持的图像。

用户更近一步的需求是获得可以提供3d感觉和效果的3d图像。各种机构已经开发了3d图像以满足用户的这种需求。

然而,3d图像包括深度图信息以及真正图像(纹理),并且因此比2d图像具有更多的数据。因此,利用现有的图像编码/解码处理对3d图像进行编码/解码不能表现出足够的编码/解码效率。



技术实现要素:

[技术问题]

本发明的目的是提供一种用于导出针对编码/解码的块的运动信息的装置和方法。

本发明的另一目的是提供一种用于在导出针对编码/解码的块的运动信息时去除数据相关性的装置和方法。

本发明的又一目的是提供一种通过在每个子预测单元的基础上导出针对编码/解码的块的运动信息时去除数据相关性来提高图像编码/解码效率的装置和方法。

本发明的又一目的是提供一种当在每个子预测单元地基础上导出针对编码/解码的块的运动信息时使用参考块的运动信息来提高图像编码/解码效率的装置和方法。

[技术方案]

根据本发明的实施方式,提供有一种对三维(3d)图像进行编码的方法,该方法包括:将用于当前块的预测模式确定为帧间预测模式;确定参考图片中的与当前块对应的参考块是否具有运动信息;当参考块具有运动信息时,针对当前块中的每个子预测块导出关于当前块的运动信息;以及基于关于当前块的运动信息导出用于当前块的预测样本。

此处,当前块和参考块可以是预测块。

此处,关于参考块的运动信息可以位于参考块的中心。

此处,在针对当前块中的每个子预测块导出关于当前块的运动信息的步骤中,如果参考块中的与当前块中的子预测块对应的子预测块具有运动信息,则可以将关于当前块的子预测块的运动信息导出为存在于参考块的子预测块中的运动信息。

此处,如果参考块中的与当前块中的子预测块对应的子预测块不具有运动信息,则将关于当前块的子预测块的运动信息导出为参考块的运动信息。

根据本发明的另一实施方式,提供有一种对三维(3d)图像进行编码的设备,该设备包括:存储模块,该存储模块将用于当前块的预测模式确定为帧间预测模式,并且确定参考图片中的与当前块对应的参考块是否具有运动信息;导出模块,当参考块具有运动信息时,该导出模块针对当前块中的每个子预测块导出关于当前块的运动信息,并且基于关于当前块的运动信息导出用于当前块的预测样本。

此处,当前块和参考块可以是预测块。

此处,关于参考块的运动信息可以位于参考块的中心。

此处,在导出模块中,如果参考块中的与当前块中的子预测块对应的子预测块具有运动信息,则可以将关于当前块的子预测块的运动信息导出为存在于参考块的子预测块中的运动信息。

此处,如果参考块中的与当前块中的子预测块对应的子预测块不具有运动信息,则可以将关于当前块的子预测块的运动信息导出为参考块的运动信息。

根据本发明的又一实施方式,提供有一种对三维(3d)图像进行解码的方法,该方法包括:将用于当前块的预测模式确定为帧间预测模式;确定参考图片中的与当前块对应的参考块是否具有运动信息;当参考块具有运动信息时,针对当前块中的每个子预测块导出关于当前块的运动信息;以及基于关于当前块的运动信息导出用于当前块的预测样本。

此处,当前块和参考块可以是预测块。

此处,关于参考块的运动信息可以位于参考块的中心。

此处,在针对当前块中的每个子预测块导出关于当前块的运动信息的步骤中,如果参考块中的与当前块中的子预测块对应的子预测块具有运动信息,则可以将当前块上的子预测块的运动信息导出为存在于参考块的子预测块中的运动信息。

此处,如果参考块中的与当前块中的子预测块对应的子预测块不具有运动信息,则可以将关于当前块的子预测块的运动信息导出为参考块的运动信息。

根据本发明的又一实施方式,提供有一种对三维(3d)图像进行解码的设备,该设备包括:存储模块,该存储模块将用于当前块的预测模式确定为帧间预测模式,并且确定参考图片中的与当前块对应的参考块是否具有运动信息;以及导出模块,当参考块具有运动信息时,该导出模块针对当前块中的每个子预测块导出关于当前块的运动信息,并且基于关于当前块的运动信息导出用于当前块的预测模式。

此处,当前块和参考块可以是预测块。

此处,关于参考块的运动信息可以位于参考块的中心。

此处,在导出模块中,如果参考块中的与当前块中的子预测块对应的子预测块具有运动信息,则将关于当前块的子预测块的运动信息导出为存在于当前块的子预测块中的运动信息。

此处,如果参考块中的与当前块中的子预测块对应的子预测块不具有运动信息,则可以将关于当前块的子预测块的运动信息导出为参考块的运动信息。

[有益效果]

本发明可以导出针对编码/解码的块的运动信息。

本发明可以在导出针对编码/解码的块的运动信息时去除数据相关性。

本发明可以通过在每个子预测单元的基础上导出针对编码/解码的块的运动信息时去除数据相关性来提高图像编码/解码效率。

本发明可以通过在每个子预测单元的基础上导出针对编码/解码的块的运动信息时去除数据相关性来使用参考块的运动信息提高图像编码/解码效率。

附图说明

图1是示意性示出3维(3d)图像系统的基本结构的图。

图2是示出“气球”图像的示例和深度信息图图像的示例的图。

图3是示意性示出在编码和解码图像时对图像进行分割的结构的图。

图4示出了可以包括在编码单元(cu)中的预测单元。

图5示出了3d图像编解码器中的视点间预测结构的示例。

图6示出了在3d图像编码器和/或解码器中对真正图像(纹理图)和深度信息图(深度图)进行编码和/或解码的处理的示例的图。

图7是示出根据本发明的实施方式的图像编码器的配置的框图。

图8是示出根据本发明的实施方式的图像解码器的配置的框图。

图9是用于3d图像编解码器的示例性预测结构的图。

图10示出了使用相邻块来配置用于当前块的合并候选列表的示例。

图11是示出使用相邻图处的运动信息导出关于当前块的运动信息的示例性处理的图。

图12是示出将一个预测单元(pu)分割成若干子预测单元的示例的图。

图13是示出使用参考块导出关于当前块的运动信息的示例性处理的图。

图14是用于导出关于当前块的运动信息的示例性参考块的图。

图15a至图15e是示意性示出使用存储在存储空间中的运动信息导出运动信息的示例性处理的图。

图16a至图16g是示意性示出使用存储在存储空间中的运动信息导出运动信息的另一示例性处理的图。

图17是根据本发明的实施方式的使用参考块的子预测单元导出关于当前块的子预测单元的运动信息的方法的流程图。

图18是使用参考块的子预测单元并行导出当前块的子预测单元上的信息的示例性处理的图。

图19是当可用子预测单元位于参考块的最右端和最下端时发现可用子预测单元的示例性处理的图。

图20是示意性示出以每子预测单元的基础上导出运动信息所需的时间的图。

图21是示出本发明应用的帧间预测模块的配置的框图。

图22是示意性示出根据本发明的实施方式的使用参考块导出关于当前块的子预测单元的运动信息的方法的流程图。

图23是示意性示出根据本发明的另一实施方式的导出关于当前块的子预测单元的运动信息的方法的流程图。

图24是示出使用位置处的运动信息导出关于当前块的子预测单元的运动信息的示例性处理的图。

图25是示出根据本发明的又一实施方式的使用运动信息值导出关于当前块的子预测单元的运动信息的方法的流程图。

图26是示出了使用一些运动信息导出关于当前块的子预测单元的运动信息的示例性处理的图。

图27是示意性示出根据本发明导出运动信息所需的时间的图。

具体实施方式

在下文中,参照附图来详细描述本发明的实施方式。当相关已知配置或功能的详细描述被确定成使本公开内容的主题不清楚时,将其省略。

当部件“连接至”或“耦接至”另一部件时,部件可以直接地连接至或耦接至另一部件,或者其他部件可以介于其间。如本文所使用的,本发明“包括”或“包含”特定部件,但本发明并不排除其他部件,并且更确切地,在本发明的技术精神或本发明的各个实施方式中还可以包括另外的部件。

术语“第一”和“第二”可以用于描述各种部件,但所述部件不受这些术语的限定。这些术语仅用于区分各个部件。例如,在不脱离本发明的范围的情况下,可以将第一部件表示成第二部件,并且可以将第二部件表示成第一部件。

本文所使用的部件可以被单独示出以表示其各自不同的特征,但这并不意味着每个部件应当被配置为单独的硬件单元或软件单元。换言之,为了便于描述,可以独立于彼此来示出各个部件。所述部件中的至少两个部件可以被组合以配置单个部件,或者每个部件可以被分成多个部件以执行功能。这样的组合或分离也属于本发明的范围而不脱离本发明的要点。

一些部件可以是用于增强性能的可选部件,而不是用于执行本发明的基本功能的必要部件。可以不包括用于增强性能的部件而仅利用实现本发明的要点的必要部件来实现本发明,并且这样的配置也属于本发明的范围。

3d图像通过3d立体显示器提供立体效果,就像用户在真实世界看到和感受到的一样。在这方面,联合标准化小组即iso/iec中的mpeg(运动图像专家组)和itu-t中的vceg(视频编码专家组)的jct-3v(3d图像编码扩展开发的联合协作小组)正在开展3d图像标准化工作。

图1是示意性示出3维(3d)图像系统的基本结构的图。

参照图1,3d视频(3vd)系统可以包括发送器和接收器。在这种情况下,图1的3d视频系统可以是如3d图像标准中所认为的基本3d视频系统,所述3d图像标准可以包括关于以下的标准:高级数据格式及其可以支持自动立体图像回放的相关技术,以及使用纹理及其对应深度信息图的立体图像。

发送器可以生成多视点图像内容。具体地,发送器可以使用立体摄影机和多视点摄影机来生成图像信息,并且使用深度信息摄影机生成深度信息图(或深度视图)。发送器可以使用变换装置将2d图像转换成3d图像。发送器可以使用所生成的图像信息和深度信息图来生成n(≥2)视点(即,多视点)图像内容。在这种情况下,n视点图像内容可以包含n视点图像信息、其深度图信息和摄影机相关的其他信息。n视点图像内容可以由3d图像编码器使用多视点图像编码方案进行压缩,并且经压缩的图像内容(位流)可以通过网络传送至接收器的终端。

接收器可以对从发送器接收的图像内容进行解码,并且可以提供多视点图像。具体地,接收器的图像解码器(例如,3d图像解码器、立体图像解码器或2d图像解码器)可以使用多视点图像解码方案对所接收到的位流进行解码,以将位流恢复成n视点图像。在这种情况下,图像解码器可以使用所恢复的n视点图像和基于深度图像的渲染(dibr)处理来生成n(或更多)视点虚拟视点图像。所生成的n(或更多)视点虚拟视点图像通过各种3d显示器(例如,n视点显示器、立体显示器或2d显示器)进行播放,从而向用户提供3d效果。

图2是示出“气球”图像的示例和深度信息图图像的示例的图。

图2(a)示出了在mpeg(国际标准化组织)3d图像编码标准中采用的“气球”图像。图2(b)示出了与图2(a)中所示的“气球”图像对应的深度信息图图像。深度信息图图像是通过以每像素八位来表示屏幕上所示出的深度信息而获得的图像。

深度信息图用于生成虚拟视点图像,并且深度信息图是通过以预定位数来表示摄影机与真实世界中的真正对象之间的距离而获得的图(深度信息以与纹理相同的分辨率来与每个像素对应)。在这种情况下,可以使用深度信息图摄影机或使用真正公共图像(纹理)来获得深度信息图。

使用深度信息图摄影机获得的深度信息图主要为静止对象或场景提供高可靠的深度信息,但深度信息图摄影机仅在预定距离内进行操作。在这种情况下,深度信息图摄影机可以利用使用激光束或结构化光的测量方案或者基于光的渡越时间(tfl)的测量方案。

还可以使用真正公共图像(纹理)以及视差矢量来生成深度信息图。视差矢量是指表示两个公共图像之间的视点的差的信息。可以通过以下来获得视差矢量:通过将当前视点处的像素与其他视点处的像素进行比较以发现与当前视点像素最相似的像素,并且测量当前视图像素与最相似像素之间的距离。

纹理及其深度信息图可以是由一个或更多个摄影机获得的(一个或更多个)图像。由多个摄影机获得的图像可以被独立地编码,并且可以使用典型的2d编码/解码的编解码器进行编码/解码。通过多个摄影机获得的图像在其视图之间具有相关性,并且为了更高的编码效率,因此可以使用不同视图之间的预测进行编码。

图3是示意性示出在编码和解码图像时对图像进行分割的结构的图。

对于有效分割,可以针对每个编码单元(cu)对图像进行编码和解码。术语“单元”是指包括语法元素和图像样本的块。“对单元进行分割”是指对与该单元对应的块进行分割。

参照图3,图像300被顺序地分割成最大编码单元(lcu),并且每个lcu的分割结构是确定的。如本文中所使用的,“lcu”可以是指编码树单元(ctu)。分割结构可以是指用于在每个lcu310中对图像进行有效编码的编码单元(cu)的分布,并且这样的分布可以取决于是否将一个cu分割成四个在水平方向和垂直方向上均减小1/2该cu的大小的cu来确定。以相同的方式,经分割的cu可以被递归地分割成四个在水平方向和垂直方向上均减小至其1/2的cu。

在这种情况下,cu的分割可以被递归地执行至预定的深度。深度信息是指表示cu的大小的信息,并且可以针对每个cu进行存储。例如,lcu的深度可以是0,而最小编码单元(scu)的深度可以是预定最大深度。此处,lcu是具有上述最大大小的编码单元,而scu是具有最小大小的编码单元。

每当lcu310在水平方向和垂直方向上均被对半分割时,cu的深度增加一。例如,如果cu的大小在某一深度l处为2n×2n,则在不被分割的情况下cu的大小为2n×2n,而在被分割的情况下,其大小减小至n×n。在这种情况下,n×n大小的cu的深度变为l+1。换言之,每次深度增加一时,与该cu的大小对应的n减小一半。

参照图3,最小深度为0的lcu的大小可以是64×64像素,而最小深度为3的scu的大小可以是8×8像素。在这种情况下,可以将具有64×64像素的cu(lcu)的深度表示成0,将具有32×32像素的cu的深度表示成1,将具有16×16像素的cu的深度表示成2,并且将具有8×8像素的cu(scu)的深度表示成3。

此外,可以通过cu的一位分割信息来表示关于是否分割具体cu的信息。分割信息可以包含在除了scu以外的所有其他cu中。例如,如果cu不被分割,则将0保留在cu的分割信息中,并且如果cu被分割,则将1保留在cu的分割信息中。

图4示出了可以被包括在编码单元(cu)中的预测单元。

在从lcu分割的cu中,不再经受进一步分割的cu可以被分割或划分成一个以上的预测单元。

预测单元(在下文中,“pu”)是进行预测的基本单元。可以以跳跃模式、帧间模式或帧内模式对预测单元进行编码和解码。可以取决于各个模式来以各种方式划分预测单元。

参照图4,在不分割cu的情况下,跳过模式可以支持与cu具有相同大小的2n×2n模式410。

帧间模式针对cu可以支持八种划分类型,例如,2n×2n模式410、2n×n模式415、n×2n模式420、n×n个模式425、2n×nu模式430、2n×nd模式435、nl×2n模式440以及nr×2n模式445。

帧内模式针对cu可以支持2n×2n模式410和n×n模式425。

图5示出了3d图像编解码器中的视点间预测结构的示例。

可以使用视图0作为参考图像来进行针对视图1和视图2的视点间预测,并且视图0应当早于视图1和视图2被编码。

在这种情况下,可以独立于其他视图对视图0进行编码,并且因此,视图0被称为独立视图。与此相反,应当使用视图0作为参考图像的视图1和视图2被称为依赖视图。独立视点图像可以使用典型的2d图像编解码器进行编码。相反,依赖视点图像需要经过视点间预测,并且因此这些视图可以使用配备有视点间预测处理的3d图像编解码器进行编码。

为了提高编码效率,可以使用深度信息图对视图1和视图2进行编码。例如,纹理和深度信息图在被编码时可以独立于彼此进行编码和/或解码。或者,纹理和深度信息图在被编码时可以如图6所示那样依赖于彼此进行编码和/或解码。

图6示出了在3d图像编码器和/或解码器中对真正图像(纹理视图)和深度信息图(深度视图)进行编码和/或解码的处理的示例。

参照图6,3d图像编码器可以包括用于对真正图像(纹理视图)进行编码的纹理编码器(纹理编码器)和用于对深度信息图(深度视图)进行编码的深度信息图编码器(深度编码器)。

在这种情况下,纹理编码器可以使用由深度信息图编码器编码的深度信息图对纹理进行编码。相反,深度信息图编码器可以使用由纹理编码器编码的纹理对深度信息图进行编码。

3d图像解码器可以包括用于对纹理进行解码的真正图像解码器(纹理解码器)以及用于对深度信息图进行解码的深度信息图解码器。

在这种情况下,纹理解码器可以使用由深度信息图解码器解码的深度信息图对纹理进行解码。相反,深度信息图解码器可以使用由纹理解码器解码的纹理对深度信息图进行解码。

图7是示出根据本发明的实施方式的图像编码器的配置的框图。

图7示出了可以通过扩展单视点结构图像编码器实现的适用于多视点结构的示例图像编码器。在这种情况下,图7的图像编码器可以用在如图6所示的纹理编码器和/或深度信息图编码器中,并且编码器可以是指编码装置。

参照图7,图像编码器700包括帧间预测模块710、帧内预测模块720、开关715、减法器725、变换模块730、量化模块740、熵编码单元750、去量化模块760、逆变换模块770、加法器775、滤波器780以及参考图片缓冲器790。

图像编码器700可以以帧内模式或帧间模式对输入图像进行编码,以输出位流。

帧内预测是指图片内预测,而帧间预测是指图片间或视点间预测。在帧内模式下,开关715切换至帧内模式,而在帧间模式下,开关715切换至帧间模式。

图像编码器700可以针对输入图片的块(当前块)生成预测块,并且然后对当前块与预测块之间的差进行编码。

在帧内模式下,帧内预测模块720可以使用当前块的已经编码的相邻块的像素值作为其参考像素。帧内预测模块720可以使用参考像素生成用于当前块的预测样本。

在帧间模式下,帧间预测模块710可以获得下述运动矢量,该运动矢量指定在参考图片缓冲器790中所存储的参考图片中的与输入块(当前块)对应的参考块。帧间预测模式710可以通过使用运动矢量和参考图片缓冲器790中所存储的参考图片执行运动补偿来生成用于当前块的预测块。

在多视点结构中,应用于帧间模式的帧间预测可以包括视点间预测。帧间预测模块710可以通过对参考视点图片进行采样来配置视点间参考图片。帧间预测模块710可以使用包括视点间参考图片的参考图片列表来进行视点间预测。视图之间的参考关系可以通过指定视点间依赖性的信息进行传达。

同时,在当前视点图片和参考视点图片具有相同大小时,应用于参考视点图片的采样可以是指通过根据参考视点图片进行样本复制或插值来生成参考样本。在当前视点图片与参考视点图片具有不同大小的情况下,应用于参考视点图片的采样可以是指上采样或下采样。例如,在视图具有不同分辨率的情况下,可以对参考视图的恢复图片进行上采样来配置视点间参考图片。

可以考虑例如编码成本来确定要将哪个视点图片用于配置视点间参考图片。编码器可以向解码装置发送指定要用作视点间参考图片的图片所属的视图的信息。

在视点间预测中所参考的视图——即,参考视图——中的用于预测当前块的图片可以与同一访问单元(au)的作为当前图片(针对当前视图中的预测的图片)的图片相同。

减法器725可以通过当前块与预测块之间的差来生成残差块(残差信号)。

变换模块730将残差块变换成变换系数。在变换跳过模式中,变换模块730可以跳过对残差块的转换。

量化模块740根据量化参数将变换系数量化成经量化的系数。

熵编码单元750根据概率分布对通过量化模块740获得的值或者在编码成位流的过程中获得的编码参数进行熵编码。熵编码单元750除了对图像的像素信息进行熵编码以外还对用于图像解码的信息(例如,语法元素)进行熵编码。

编码参数可以包括编码或解码过程中可推断的信息以及例如由编码器编码并且传输至解码装置的语法元素的信息来作为用于编码和解码所必需的信息。

残差信号可以是指原始信号与预测信号之间的差、通过对原始信号与预测信号之间的差进行变换而获得的信号或者通过对原始信号与预测信号之间的差进行变换并且对变换后的差进行量化而获得的信号。从块的角度看,残差信号可以被表示成残差块。

在熵编码适用的情况下,可以以如下方式来表示符号,在这样的方式中,具有较高出现可能性的符号被分配较少的位,而具有较低出现可能性的符号被分配较多的位,并且因此可以减小针对编码的符号的位流的大小。正因为如此,图像编码通过熵编码可以具有提高的压缩能力。

熵编码可以使用例如指数哥伦布码、上下文自适应可变长度编码(cavlc)或上下文自适应二进制算术编码(cabac)的编码方案。例如,熵编码单元750可以使用可变长度编码/码(vlc)表来执行熵编码。熵编码单元750可以导出二值化方法和目标符号以及目标符号/箱的概率模型,并且可以使用所导出的二值化方法和概率模型来执行熵编码。

经量化的系数可以通过去量化模块760进行逆量化,并且可以通过逆变换模块770进行逆变换。逆量化且逆变换的系数通过加法器775加至预测块,从而产生恢复的块。

恢复的块经过滤波器780。滤波器780可以将去块滤波器、样本自适应偏移(sao)以及自适应环路滤波器(alf)中的至少一个或更多个应用于恢复的块或恢复的图片。在经过滤波器780之后,恢复的块可以被存储在参考图片缓冲器790中。

图8是示出根据本发明的实施方式的图像解码器的配置的框图。

图8示出了可以通过扩展单视点结构的图像解码器实现的适用于多视点结构的示例图像解码器。

在这种情况下,图8的图像解码器可以用在图6所示的纹理解码器和/或深度信息图解码器中。为了便于描述,如在本文中所使用的,术语“解密”和“解码”可以互换使用,或者术语“解码装置”和“解码器”可以互换使用。

参照图8,图像解码器800包括熵解码单元810、去量化模块820、逆变换模块830、帧内预测模块840、帧间预测模块850、滤波器860以及参考图片缓冲器870。

图像解码器800可以从编码器接收位流,以帧内模式或帧间模式对位流进行解码,并且输出重构的图像,即重构图像。

在帧内模式下,开关可以切换至帧内预测,而在帧间模式下,开关可以切换至帧间预测。

图像解码器800可以获得从接收到的位流恢复的残差块,生成预测块并且将所恢复的残差块和预测块相加,以生成重构的块,即恢复块。

熵解码单元810可以根据概率分布将所接收的位流熵解码成例如经量化的系数和语法元素的信息。

经量化的系数通过去量化模块820进行逆量化,并且通过逆变换模块830进行逆变换。量化的系数可以逆量化/逆变换成恢复的残差块。

在帧内模式下,帧内预测模块840可以使用当前块的已经编码的相邻块的像素值来生成用于当前块的预测块。

在帧间模式下,帧内预测模块850可以通过使用运动矢量和参考图片缓冲器870中所存储的参考图片执行运动补偿来生成用于当前块的预测块。

在多视点结构中,应用于帧间模式的帧间预测可以包括视点间预测。帧间预测模块850可以通过对参考视点图片进行采样来配置视点间参考图片。帧间预测模块850可以使用包括视点间参考图片的参考图片列表进行视点间预测。视图之间的参考关系可以通过指定视点间依赖性的信息进行传达。

同时,在当前视点图片(当前图片)和参考视点图片具有相同大小的情况下,应用于参考视点图片的采样可以是指通过根据参考视点图片进行样本复制或插值来生成参考样本。在当前视点图片和参考视点图片具有不同大小时,应用于参考视点图片的采样可以是指上采样或下采样。

例如,在视点间预测应用于具有不同分辨率的视图时,可以对参考视图的恢复图片进行上采样来配置视点间参考图片。

在这种情况下,可以将指定要被用作视点间参考图片的图片所属的视图的信息从编码器传送至解码器。

在视点间预测中所参考的视图——即,参考视图——中的用于预测当前块的图片可以与同一访问单元(au)的作为当前图片(针对当前视图中的预测的图片)的图片相同。

恢复的残差块与预测块通过加法器855相加成恢复的块。换言之,残差样本和预测样本彼此相加成恢复的样本或恢复的图片。

恢复的图片通过滤波器860进行滤波。滤波器860可以将去块滤波器、sao和alf中至少一个或更多个应用于恢复的块或恢复的图片。滤波器860输出重构(修改)的图片或滤波后的恢复图片(重构图片)。重构图像被存储在参考图片缓冲器870中,以用于在帧间预测中使用。

尽管在结合图7和图8描述的实施方式中模块执行其各自的彼此不同的功能,但本发明不限于此。例如,一个模块可以执行两个或更多个功能。例如,图7和图8所示的帧内预测模块和帧间预测模块的相应操作可以由一个模块(预测单元)来执行。

同时,如以上结合图7和图8所描述的,一个编码器/解码器对多个视图的所有视图进行编码/解码。然而,这仅仅是为了便于描述,可以为多个视图分别配置单独的编码器/解码器。

在这种情况下,用于当前视图的编码器/解码器可以使用关于其他视图的信息来对当前视图进行编码/解码。例如,用于当前视图的预测单元(帧间预测模块)可以使用其他视图的像素信息或恢复图片信息来对当前块执行帧内预测或帧间预测。

尽管在本文中描述了视点间预测,但可以使用关于其他视图的信息来对当前层进行编码/解码,而不管编码器/解码器是否被配置成用于每个视图或者一个装置是否处理多个视图。

根据本发明的对视图的描述可以同样适用于支持可扩展的层。例如,如本文所描述的视图可以是层。

图9是示出用于3d图像编解码器的示例性预测结构的图。为了便于描述,图9示出了用于对通过三个摄影机获得的纹理以及分别与各个纹理对应的深度信息图进行编码的预测结构。

如图9所示,从三个摄影机分别获得的三个纹理根据视图被表示成t0、t1和t2,并且分别与三个纹理对应的三个深度信息图根据视图被表示为d0、d1和d2。此处,t0和d0是在视图0处获得的图像,t1和d1是在视图1处获得的图像以及t2和d2是在视图2处获得图像。在这种情况下,图9所示的正方形是图像(图片)。

图像(图片)取决于编码/解码类型被分为i图片(帧内图像)、p图片(单向预测图片)以及b图片(双向预测图片),并且每个图片可以取决于其编码/解码类型进行编码/解码。对于i图片,图像本身被编码,而无需经过帧间预测。对于p图片,仅单向存在的参考图像可以经受帧间预测,而对于b图片,双向存在的参考图片可以经受帧间预测。在这种情况下,图9所示的箭头表示预测的方向。换言之,取决于预测方向,纹理以及其深度信息图可以被相互依赖地编码/解码。

需要关于当前块的运动信息来通过帧间预测对图像进行编码/解码。为了推断关于当前块的运动信息,可能会使用以下方法:使用与当前块邻近的块的运动信息的方法;使用同一时间内的时间相关性的方法;以及使用相邻时间处的视点间相关性的方法。针对一个图片,可以组合使用上述帧间预测方法。此处,当前块是指被执行预测的块。运动信息可以是指运动矢量、参考图像数量和/或预测方向(例如,是单向预测还是双向预测,是否使用时间相关性或者是否使用视点间相关性等)。

在这种情况下,取决于是否使用参考图片列表(refpiclist),预测方向通常可以分为单向预测或双向预测。双向预测分为使用正向参考图片列表(列表0,l0)的正向预测(pred_l0:预测l0)和使用反向参考图片列表(列表1,l1)的反向预测(pred_l1:预测l1)。此外,使用正向参考图片列表(列表0)和反向参考图片列表(列表1)二者的双向预测(pred_bi:预测bi)可以表示存在正向预测和反向预测二者。甚至将正向参考图片列表(列表0)复制到反向参考图片列表(列表1)以使得存在两个正向预测处理的情况也可以属于双向预测的范畴。

预测方向可以使用predflagl0和predflagl1来定义。在这种情况下,predflagl0是指示是否使用正向参考图片列表(列表0)的指示符,而predflag1是指示是否使用反向参考图片列表(列表1)的指示符。例如,在单向预测并且正向预测的情况下,predflagl0可以是‘1’,而predflagl1可以是‘0’;在单向预测并且反向预测的情况下,predflagl0可以是‘0’,而predflagl1可以是‘1’;以及在双向预测的情况下,predflagl0可以是‘1’,而predflagl1可以是‘1’。

图10示出了使用相邻块来配置用于当前块的合并候选列表的示例。

合并模式是用于执行帧间预测的方法。合并模式可以采用当前块的相邻块的运动信息作为关于当前块的运动信息(例如,运动矢量、参考图片列表和参考图片索引中至少一个)。在这种情况下,将使用关于相邻块的运动信息作为关于当前块的运动信息称为合并、运动合并或合并运动。

在合并模式下,可以是每编码单元(cu)合并运动和每预测单元(pu)合并运动。

以每块(例如,cu或pu)(为了便于描述,在下文中称为“块)为基础进行合并运动的情况需要关于以下的信息:是否按照块划分来执行合并运动的信息,以及关于合并运动处理当前块的相邻块中的哪个块的信息。

合并候选列表可以被配置成执行合并运动。

合并候选列表是指多条运动信息的列表,并且可以在合并模式被执行之前生成这个合并候选列表。此处,合并候选列表中的运动信息可以是当前块上的相邻块的运动信息,或者是通过组合已经存在于合并候选列表中的多条运动信息而新生成的运动信息。关于相邻块的运动信息(例如,运动矢量和/或参考图片索引)可以是由相邻块指定的运动信息或者存储于相邻块中的(或者用于对相邻块进行解码的)运动信息。

在这种情况下,如图10所示,相邻块可以包括在空间上位置邻近于当前块的相邻块a、b、c、d和e,以及在时间上对应于当前块的共置候选块h或m。共置候选块是指位于在时间上对应于包括当前块的当前图片的共置图片中的相应位置处的块。如果h块在共置图片中可用,则可以将h块确定为共置候选块,而如果h块不可用,则可以将共置图片中的m块确定为共置候选块。

在配置合并候选列表时,确定是否可以将关于相邻块(a、b、c、d和e)和共置候选块(h或m)的运动信息用作配置当前块的合并候选列表的合并候选。换言之,可以将可用于关于当前块的帧间预测的块的运动信息添加至合并候选列表作为合并候选。

例如,作为用于配置x块的合并候选列表的方法,1)在相邻块a可用的情况下,将相邻块a添加至合并候选列表。2)此后,仅当关于相邻块b的运动信息与关于相邻块a的运动信息不同时,将相邻块b添加至合并候选列表。3)以此方式,仅当关于相邻块c的运动信息不同于关于相邻块b的运动信息时,将相邻块c添加至合并候选列表,以及4)仅当关于相邻块d的运动信息不同于关于相邻块c的运动信息时,将相邻块d添加至合并候选列表。此外,5)仅当关于相邻块e的运动信息不同于关于相邻块d的运动信息时,将相邻块e添加至合并候选列表,以及6)最后,将相邻块h(或m)添加至合并候选列表。总之,可以按照a→b→c→d→e→h(或m)的顺序将相邻块添加至合并候选列表。此处,相同运动信息可以是指使用相同运动矢量、相同参考图片和相同预测方向(单向或双向)。

为了便于描述,在本文中将短语“将相邻块添加至合并候选列表作为合并候选”和“将运动信息添加至合并候选列表作为合并候选”混用,尽管这两个短语在意思上基本上相同。例如,作为合并候选的相邻块可以是指关于该块的运动信息。

图11是示出使用相邻视图处的运动信息导出关于当前块的运动信息的示例性处理的图。

结合图11,仅为了便于描述,仅使用一个视图来导出关于当前块的运动信息。然而,可以存在两个或更多个相邻视图。

参照图11,3d视频系统可以使用相邻视图处的运动信息,以便有效地编码/解码运动信息。具体地,图11所示的当前块(当前位置x处的块)搜索位于相邻视图处的目标块(参考位置xr),以便导出关于当前块的运动信息。在这种情况下,相邻视图处的目标块是指与当前块对应的块。由于当前图片中的在当前视图与参考视图之间的差仅在于摄影机的位置,所以可以根据上述视差矢量(dv)导出相邻视图处的目标块。

图12是示出将一个预测单元(pu)分成若干子预测单元的示例的图。

在图12所示的示例中,将大小为64×64的预测单元划分成大小均为8×8的子预测单元。为了便于结合图12进行描述,预测单元的大小为64×64,但不限于此,大小可以是32×32、16×16、8×8或4×4。在3d视频系统中,可以将一个预测单元分成多个子预测单元。在这种情况下,以每子预测单元为基础来执行使用视差矢量导出运动信息。子预测单元可以具有预定大小(例如,4×4、8×8或16×16),并且可以在编码时指定子预测单元的大小。关于子预测单元的大小的信息可以被包括和传达在图像参数集(vps)扩展语法中。

图13是示出使用参考块导出关于当前块的运动信息的示例性处理的图。

导出关于当前块的运动信息的处理是指将存在于参考块中的运动信息设置为关于当前块的运动信息。然而,3d视频系统可以针对位于当前视图处的当前图片中的当前块x以每子预测单元为基础来导出运动信息,以便有效地编码/解码运动信息。

换言之,3d视频系统可以将存在于参考块xr的子预测单元中的运动信息设置成关于当前块x的子预测单元的运动信息。在这种情况下,参考块xr可以是指位于参考视图处的当前图片中的参考块xr。下面描述导出运动信息的具体处理。

图14是示出用于导出关于当前块的运动信息的示例性参考块的图。

参照图14,参考块可以是指pu,并且一个参考块可以包括总共16个子参考单元。在这种情况下,可以根据存在于参考块的子预测单元中的运动信息导出当前块中的关于每个子预测单元的运动信息。

现在参照图15a至图15e以及图16a至图16g来描述使用参考块导出关于当前块的子预测单元的运动信息的方法。

图15a至图15e是示意性示出使用存储在存储空间中的运动信息导出运动信息的示例性处理的图。在这种情况下,图15a至图15e中所使用的参考块可以是如图14所示的参考块。

在当前块的子预测单元带来参考块的子预测单元上的mi时,参考块的所有子预测单元不具有运动信息。换言之,可能存在参考块的无法从其中提出运动信息的一些子预测单元。因此,在存在无法从其中获得运动信息的子预测单元的情况下,可以将当前所参考的子预测单元的前一子预测单元或后一子预测单元上的mi投入使用,以便弥补未能从当前块的子预测单元获得运动信息。例如,在参考块中可用的关于子预测单元的运动信息可以被预先存储,以便为存在参考块的无法从其中导出运动信息的一些其他子预测单元的情况做准备,使得可以将预先存储的运动信息插入在当前块的子预测单元中,以导出关于当前块的运动信息。

为了更好地理解上述方法,下面参照附图来描述用于在参考块的第一子预测单元具有其运动信息而该参考块的第二子预测单元或其后续子预测单元可能不具有运动信息的情况下导出关于当前块的子预测单元的运动信息的示例性方法的每个步骤。

图15a是示出存储空间和当前块的子预测单元的初始状态的图。

参照图15a,ref表示参考块,并且ref0、ref1、ref2和ref3分别表示参考块中的子预测单元。即,ref0是指参考块的子预测单元0(参考块的第一子预测单元),ref1是指参考块的子预测单元1(参考块的第二子预测单元),ref2是指参考块的子预测单元2(参考块的第三子预测单元),而ref3是指参考块的子预测单元3(参考块的第四子预测单元)。cur表示当前块,并且cur0、cur1、cur2和cur3分别表示当前块中的子预测单元。即,cur0是指当前块的子预测单元0(当前块的第一子预测单元),cur1是指当前块的子预测单元1(当前块的第二子预测单元),cur2是指当前块的子预测单元2(当前块的第三子预测单元),而cur3是指子预测单元3(当前块的第四子预测单元)。

在这种情况下,图15a的ref2中所标识的‘x’表示使用参考块的子预测单元2不能导出运动信息。

图15b示出了从参考块的子预测单元导出运动信息的第一步骤。

参照图15b,从用于当前块的子预测单元0的参考块的子预测单元0导出运动信息。在这种情况下,由于可以从参考块的子预测单元0导出运动信息,所以将关于参考块的子预测单元0的运动信息存储在存储空间中。在这种情况下,可以将存储在存储空间中的运动信息定义为运动信息0,当不能从参考块的一些其他子预测单元导出运动信息时,使用该运动信息0。

图15c示出了从参考块的子预测单元导出运动信息的第二步骤。

参照图15c,从用于当前块的子预测单元1的参考块的子预测单元1导出运动信息。在这种情况下,由于可以从参考块的子预测单元1导出运动信息,所以将关于参考块的子预测单元1的运动信息存在存储空间中。在这种情况下,可以将所存储的关于子预测单元1的运动信息定义为运动信息1,并且将运动信息1取代运动信息0而存储在存储空间中。当不能从参考块的一些其他子预测单元导出运动信息时,可以使用该运动信息1。

图15d示出了从参考块的子预测单元导出运动信息的第三步骤。

参照图15d,尝试从用于当前块的子预测单元2的参考块的子预测单元2导出运动信息。然而,由于不能从参考块的子预测单元2导出运动信息,所以从存储在存储空间中的运动信息导出关于当前块的子预测单元2的运动信息。在这种情况下,存储在存储空间中的运动信息可以是运动信息1。

图15e示出了从参考块的子预测单元导出运动信息的第四步骤。

参照图15e,从用于当前块的子预测单元3的参考块的子预测单元3导出运动信息。在这种情况下,由于可以从参考块的子预测单元3导出运动信息,所以将关于参考块的子预测单元3的运动信息存储在存储空间中。在这种情况下,可以将所存储的关于子预测单元3的运动信息定义为运动信息3,并且可以将运动信息3取代运动信息1而存储在存储空间中。当不能从参考块的一些其他预测单元导出运动信息时,可以使用该运动信息3。

图16a至图16g是示意性示出使用存储在存储空间中的运动信息导出运动信息的另一示例性处理的图。

图16a至图16g示出了在以下情况下导出运动信息的示例性处理:继参考块的无法从其中导出运动信息的子预测单元之后,跟随有参考块的可以从其中导出运动信息的又一子预测单元。

图16a是示出存储空间和当前块的子预测单元的初始状态的图。

参照图16a,ref表示参考块,并且ref0、ref1、ref2和ref3分别表示参考块中的子预测单元。即,ref0是指参考块的子预测单元0,ref1是指参考块的子预测单元1,ref2是指参考块的子预测单元2,而ref3是指参考块的子预测单元3。cur表示当前块,并且cur0、cur1、cur2和cur3分别表示当前块的子预测单元。即,cur0是指当前块的子预测单元0,cur1是指当前块的子预测单元1,cur2是指当前块的子预测单元2,而cur3是指当前块的子预测单元3。在这种情况下,图16a中的ref0中所标记的‘x’表示使用参考块的子预测单元0和参考块的子预测单元1不能导出运动信息。

图16b示出了从参考块的预测单元导出运动信息的第一步骤。

参照图16b,尝试从用于当前块的子预测单元0的参考块的子预测单元0导出运动信息。然而,如上所述,既不能从参考块的子预测单元0导出运动信息,存储空间中也没有运动信息。因此,执行第二步骤。

图16c示出了从参考块的子预测单元导出运动信息的第二步骤。

参照图16c,尝试从用于当前块的子预测单元1的参考块的子预测单元1导出运动信息。然而,如上所述,既不能参考块的子预测单元1导出运动信息,存储空间中也没有存储运动信息。因此,执行第三步骤。

图16d示出了从参考块的子预测单元导出运动信息的第三步骤。

参照图16d,从用于当前块的子预测单元2的参考块的子预测单元2导出运动信息。在这种情况下,由于可以从参考块的子预测单元2导出运动信息,所以将关于参考块的子预测单元2的运动信息存储在存储空间中。在这种情况下,可以将存储在存储空间中的运动信息定义为运动信息2。当不能从参考块的一些其他子预测单元导出运动信息时,使用该运动信息2。

图16e示出了从参考块的子预测单元导出运动信息的第四步骤。

参照图16e,针对当前块的子预测单元0,使用存储在存储空间中的运动信息2导出运动信息。

图16f示出了从参考块的子预测单元导出运动信息的第五步骤。

参照图16f,针对当前块的子预测单元1,使用存储在存储空间中的运动信息2导出运动信息。

图16g示出了从参考块的子预测单元导出运动信息的第六步骤。

参照图16g,从用于当前的子预测单元3的参考块的子预测单元3导出运动信息。在这种情况下,由于可以从参考块的子预测单元3导出运动信息,所以将关于参考块的子预测单元3的运动信息存储在存储空间中。在这种情况下,可以将所存储的关于子预测单元3的运动信息定义为运动信息3,并且可以将运动信息3取代运动信息2而存储在存储空间中。当不能从参考块的一些其他子预测单元导出运动信息时,可以使用运动信息3。

图17是根据本发明的实施方式使用参考块的子预测单元导出关于当前块的子预测单元的运动信息的方法的流程图。可以通过编码器和/或解码器或者编码器和/或解码器中的帧间预测模块(例如图7的帧内预测模块720或图8的帧间预测模块850)来执行图17的处理中的每个操作。

首先参考图17来描述当参考块的子预测单元具有其运动信息时的处理。帧间预测模块确定参考块的子预测单元是否具有运动信息(s1700)。

如果参考块的子预测单元具有运动信息,则帧间预测模块将存在于参考块的子预测单元中的运动信息插入针对导出运动信息的当前块的子预测单元中(s1710)。

此后,帧间预测模块确定存储空间是否存储运动信息(s1720)。如果存储空间存储运动信息,则执行步骤s1750。在这样的情况下,上面已经详细描述了存储空间,也详细描述了运动信息。

除非存储空间存储运动信息,否则帧间预测模块确定针对导出运动信息的当前块的子预测单元是否为当前块的第一子预测单元(s1730)。如果针对导出运动信息的当前块的子预测单元是当前块的第一子预测单元,则帧间预测模块执行步骤s1750。

在步骤s1730中,除非当前块的子预测单元是第一子预测单元,否则帧间预测模块将存在于参考块的子预测单元的运动信息插入定位于当前块的第一子预测单元之前的当前块的(一个或更多个)子预测单元中。例如,如果针对导出运动信息的当前块的子预测单元是第三子预测单元,则帧间预测模块将关于参考块的子预测单元的运动信息插入当前块的第一子预测单元和第二子预测单元中。

帧间预测模块将关于参考块的子预测单元的运动信息存储在存储空间中(并且用关于参考块的子预测单元的运动信息更新存储空间中的现有信息)(s1750)。在这样的情况下,上面已给出存储和更新运动信息的具体描述。

帧间预测模块确定针对导出运动信息的参考块的子预测单元是否为参考块的最后的子预测单元(s1790)。如果针对导出运动信息的参考块的子预测单元是参考块的最后的子预测单元,则帧间预测模块终止运动信息导出处理。除非针对导出运动信息的参考块的子预测单元是参考块的最后的子预测单元,否则帧间预测模块行进至参考块的下一子预测单元进行处理(s1780)。此后,帧间预测模块重复步骤s1700至步骤s1790。

如果参考块的子预测单元没有运动信息,则进行下面的处理。

帧间预测模块确定参考块的子预测单元是否具有运动信息(s1700)。

如果参考块的子预测单元没有运动信息,则帧间预测模块确定存储空间是否保留运动信息(s1770)。除非存储空间保留运动信息,否则帧间预测模块执行步骤s1790。

在存储空间保留运动信息的情况下,帧间预测模块将存储在存储空间中的运动信息插入针对导出运动信息的参考块的子预测单元中(s1750)。

在执行上面的步骤之后,帧间预测模块确定针对导出运动信息的参考块的子预测单元是否为参考块的最后的子预测单元(s1790)。如果针对导出运动信息的参考块的子预测单元是参考块的最后的子预测单元,则帧间预测模块终止运动信息导出处理。除非针对导出运动信息的参考块的子预测单元是参考块的最后的子预测单元,否则帧间预测模块行进至参考块的下一子预测单元进行处理(s1780)。此后,帧间预测模块重复步骤s1700至步骤s1790。

然后,帧间预测模块基于由上面的步骤导出的关于当前块的运动信息来导出针对当前块的预测样本。预测样本可以是指上述预测信号,并且预测信号可以是指如上所述的原始信号与残差信号之间的差。

导出关于当前块的子预测单元的运动信息的上述处理可以特定地应用于如表格1所示的3d图像。如上所述,可以通过编码器/解码器或编码器/解码器的帧间预测模块来执行表格1所示的操作。

[表格1]

现在详细描述表格1。

参考表格1,将当前预测块的左上端的位置、当前预测块的宽度和高度、参考视图索引和视差矢量输出至帧间预测模块。在这样的情况下,当前预测块的左上端的位置可以被表示为(xpb,ypb),其中,“xpb”可以指代当前预测块的x轴坐标,而“ypb”可以指代当前预测块的y轴坐标。当前预测块的宽度可以被表示为“npbw”,而当前预测块的高度可以被表示为“npbh”。参考视图索引可以被表示为“refviewidx”,并且视差矢量可以被表示为“mvdisp”。在这样的情况下,帧间预测模块可以对应于图像编码器/解码器的上述帧间预测模块。

参考图17,在使用参考块的子预测单元完成导出关于当前块的子预测单元的运动信息的处理之后,帧间预测模块输出用于确定临时视点间运动候选是否可用的标志、临时视点间候选运动矢量和存在于参考图片列表中的参考图片。在这样的情况下,用于确定临时视点间候选运动是否可用的标记可以被定义为“availableflaglxinterview”,并且临时视点间候选运动可以被定义为“mvlxinterview”。参考图片列表可以被表示为“refpiclistlx”,并且指定存在于参考图片列表中的参考图片的参考索引可以被定义为“refidxlxinterview”。在“availableflaglxinterview”、“mvlxinterview”、“refpiclistlx”和“refidxlxinterview”中,“lx”可以是参考图片列表0(列表0,l0)或参考图片列表1(列表1,l1)。

现在描述使用参考块的子预测单元导出关于当前块的子预测单元的运动信息以便帧间预测模块根据上述输入导出上述输出的方法。

在使用参考块的子预测单元导出关于当前块的子预测单元的运动信息之前,帧间预测模块执行初始化。在这样的情况下,availableflaglxinterview被设置为0,mvlxinterview被设置为(0,0),并且refidxlxinterview被设置为-1。当帧间预测模块执行初始化时,还对子预测单元的宽度和高度进行初始化。在这样的情况下,子预测单元的宽度可以被表示为“nsbw”,并且子预测单元的高度被表示为“nsbh”。下面等式1给出将变量nsbw和变量nsbh初始化的具体方法。

[等式1]

nsbw=min(npbw,subpbsize[nuh_layer_id])

nsbh=min(npbh,subpbsize[nuh_layer_id])

在这样的情况下,subpbsize表示由图像参数集(vps)指定的子预测单元的(包括高度和宽度的)大小,而nuh_layer_id表示用于识别层的索引(例如,它是哪个参考视点)。如在等式2中min()可以被定义为对输入变量中较小的输入变量进行输出。

[等式2]

帧间预测模块不仅可以将上述变量初始化,而且可以将以下信息初始化:用于识别当前块的子预测单元和视点间参考图片中的(xref,yref)处的亮度预测块的信息,以及用于识别存储在存储空间中的运动信息是否可用的信息。

在这样的情况下,视点间参考图片中的(xref,yref)处的亮度预测块被设置为视图索引与当前访问单元中的参考视图索引相同的图片中的块。在这样的情况下,视点间参考图片中的(xref,yref)处的亮度预测块被定义为“ivrefpic”,并且访问单元是指对图像进行编码/解码的单元。访问单元包括具有相同的图片顺序计数(poc)的、不同视点的图像。例如,如果存在3个视点,则一个访问单元可以包括第一视点的公共图像和/或深度信息图像、第二视点的公共图像和/或深度信息图像以及第三视点的公共图像和/或深度信息图像。参考视图索引可以被定义为“refviewidx”,并且视图索引被定义为“viewidx”。在这样的情况下,viewidx可以是指当前图片的视点。

在这样的情况下,用于识别用于初始化的当前块的子预测单元的信息可以被设置为0,并且用于识别当前块的子预测单元的信息可以被定义为“cursubblockidx”。用于识别存储在存储空间中的运动信息是否可用的信息还被设置并且被初始化为0,并且用于识别运动信息是否被存储在存储空间中的信息可以被定义为“lastavalableflag”。

在将上述变量初始化之后,帧间预测模块对范围从0至(npbh/nsbh-1)的yblk和范围从0至(npbw/nsbw-1)的xblk执行以下处理。此处,xblk是指块的x坐标,而yblk是指块的y坐标。

首先,帧间预测模块对以下进行初始化:用于识别是否预测来自参考块的子预测单元的运动信息的信息、子预测单元预测标志、关于子预测单元的运动信息和子预测单元的参考索引。具体地,用于识别是否预测来自参考块的子预测单元的运动信息的信息可以被设置为0。在这样的情况下,用于识别是否预测来自参考块的子预测单元的运动信息的信息可以被定义为“curavailableflag”。子预测单元预测标志可以被设置为0,并且子预测单元预测标志可以被定义为“sppredflagl1”。为了表示块的坐标,子预测单元标志可以被定义为“sppredflagl1[xblk][yblk]”。子预测单元的运动矢量被设置为(0,0),并且子预测单元的运动矢量可以被定义为“spmvlx”。子预测单元的参考索引可以被设置为-1,并且子预测单元的参考索引可以被定义为“sprefidxlx”。为了表示块的坐标,子预测单元的参考索引可以被定义为“sprefidxlx[xblk][yblk]”。

参考块的位置(xref,yref)可以如以下等式3进行设置。

[等式3]

xref=clip3(0,picwidthinsamplesl-1,xpb+xblk*nsbw+nsbw/2+((mvdisp[0]+2)>>2)))

yref=clip3(0,picheightinsamplesl-1,ypb+yblk*nsbw+nsbw/2+((mvdisp[1]+2)>>2)))

此处,xref是指参考块的位置的x坐标,而yref是指参考块的位置的y坐标。picwidthinsamplesl是指当前图片处的宽度,而picheightinsamplesl是指当前图片处的高度。clip3()可以如以下等式4进行定义。

[等式4]

在以帧内模式对视点间参考块进行编码的情况下,对范围从0至1的x执行以下处理。视点间参考块指代由ivrefpic表示的视点间参考图片中的(xref,yref)处的亮度预测块,并且视点间参考块可以被定义为“ivrefpb”。即,ivrefpb表示由ivrefpic表示的视点间参考图片中的(xref,yref)处的亮度预测块,并且ivrefpic表示视点间参考图片。由ivrefpb表示的参考块的左上端的位置可以被设置为(xivrefpb,yivrefpb)。

当x为0或者当前片为片b时,如下对y(y的范围从x至(1-x))重置每个变量。refpiclistlyivref被设置为由ivrefpic表示的图片中的refpiclistly,其中,refpiclistly是指参考图片列表。predflaglyivref[x][y]被设置为由ivrefpic表示的图片中的predflagly[x][y],其中,predflagly是指表示参考图片列表的标识符。mvlyivref[x][y]被设置为由ivrefpic表示的图片中的mvly[x][y],其中,mvly是指运动矢量。同样地,refidxlyivref[x][y]被设置为由ivrefpic表示的图片中的refidxly[x][y],其中,refidxly是指参考索引。

在这样的情况下,如果predflaglyivref[xivrefpb][yivrefpb]为1,则以下等式5可以应用于范围从0至num_ref_idx_lx_active_minus1(参考图片列表中的参考图片的数目)的i。

[等式5]

spmvlx[xblk][yblk]=mvlyivref[xivrefpb][yivrefpb]

sprefidxlx[xblk][yblk]=i

sppredflaglx[xblk][yblk]=1

curavailableflag=1

同时,参考表格1,以下处理分别应用于curavailableflag为1的情况和curavailablefalg为0的情况。

如果curavailableflag为1,则帧间预测模块执行以下处理。

1.如果lastavailableflag为0,则以下等式6可以应用于范围从0至1的x。

[等式6]

mxlxinterview=spmvlx[xblk][yblk]

refidxlxinterview=sprefidxlx[xblk][yblk]

availableflaglxinterview=sppredflag[xblk][yblk]

如果lastavailableflag为0,并且cursubblockidx大于0,则对于范围从0至(cursubblockidx-1)的k,以下等式7可以应用于变量i和变量j。

[等式7]

i=k%(npsw/nsbw)

j=k/(npsw/nsbw)

在这样的情况下,以下等式8应用于范围从0至1的x。

[等式8]

spmvlx[i][j]=spmvlx[xblk][yblk]

sprefidxlx[i][j]=sprefidxlx[xblk][yblk]

sppredflaglx[i][j]=sppredflaglx[xblk][yblk]

2.在上述处理之后,帧间预测模块将lastavailableflag替换为1。

3.此后,帧间预测模块在变量xlastavail和变量ylastavail中分别存储xblk和yblk。

如果curavailableflag为1,并且lastavailableflag为1,则帧间预测模块将以下等式9应用于范围从0至1的x。

[等式9]

spmvlxxblk][yblk]=spmvlx[xlastavail][ylastavail]

sprefidxlx[xblk][yblk]=sprefidxlx[xlastavail][ylastavail]

sppredflaglx[xblk][yblk]=sppredflaglx[xlastavail][ylastavail]

在执行所有上述处理之后,变量cursubblockidx被设置为cursubblockidx+1。

上面结合图17描述的导出关于当前块的子预测单元的运动信息的方法,当不能从参考块的子预测单元导出运动信息时,使用之前(或之后)已经参考的关于参考块的子预测单元的运动信息。这样,根据图17的导出运动信息的方法应当必要地参考其他参考块的子预测单元,并且因此该方法是相关性的。参考图18详细描述了相关性的运动信息导出方法易受并行设计的侵害。

图18是使用参考块的子预测单元并行导出当前块的子预测单元上的信息的示例性处理的图。

参考图18,ref是指参考块,并且ref0、1、2、3、4、5、6和7分别是参考块的子预测单元0、1、2、3、4、5、6和7。cur是指当前块,并且cur0、1、2、3、4、5、6和7分别是指当前块的子预测单元0、1、2、3、4、5、6和7。在ref2、3、4和5中标识的x是指参考块的子预测单元2、3、4和5在导出运动信息时不可用。

在根据图18的实施方式中,为了从不能导出运动信息的子预测单元导出运动信息,帧间预测模块根据可以如上所述导出运动信息来检测子预测单元。因此,帧间预测模块不能独立地导出每个当前块的子预测单元的运动信息,并且上述运动信息导出处理难以并行执行。

图19是当可用子预测单元位于参考块的最右端和最下端处时发现可用子预测单元的示例性处理的图。

参考图19,每个方形是指子预测单元,其中,粗体实划线是指在导出运动信息时可用的子预测单元,而较细实划线是指在导出运动信息时的不可用子预测单元。虚线箭头表示发现运动信息的顺序。

在从其中可以导出运动信息的子预测单元仅被定位在如图19所示的参考块的最右和最下端处的情况下,子预测单元应当顺序地经受可以沿着虚线箭头从参考块的最左和最上端导出运动信息的子预测单元的发现。在典型情况下,不知道在参考块中哪个子预测单元可以被用于导出运动信息。因此,参考块的子预测单元从参考块的第一子预测单元经受顺序发现,以确定可以被用于导出运动信息的子预测单元。

然而,如图19所示的导出运动信息的方法需要参考块中所有子预测单元,以发现可用子预测单元,从而导致对存储器的频繁访问。在这样的情况下,如果在参考块的子预测单元中仅几个子预测单元具有运动信息,则发生不必要的子预测单元发现。具体地,如果参考块中没有子预测单元被用于导出运动信息,则发现参考块的可用子预测单元的处理仅带来没有任何利益的不必要的存储器访问。在这样的情况下,“没有运动信息”是指当前块在邻近帧的参考块中未能发现类似区域。

因此,在参考块中仅几个子预测单元或没有子预测单元具有运动信息的情况下,使用帧间预测对当前块进行编码/解码可以导致更高效。换言之,在参考块仅几个子预测单元或没有子预测单元具有运动信息的这种情况下,可以更有效地发现当前块的邻近像素中的类似区域,以执行对当前块的编码/解码。

图20是示意性示出在每个子预测单元基础上导出运动信息所需的时间的图。

参考图20,当从一个子预测单元导出运动信息所花费的时间为t并且参考块中子预测单元的数目为n时,从参考块导出所有运动信息所花费的时间为nxt。上面提到的运动信息导出方法带来数据相关性和频繁的存储器访问。数据相关的运动信息导出方法不能从每个子预测单元独立地导出运动信息,并且为了从一个子预测单元导出运动信息,因此应当等待,直至从其他子预测单元导出运动信息为止。从而,数据相关的运动信息导出方法可能导致编码/解码延迟。

结果,上述运动信息导出方法不能实现用于同时导出运动信息的数据并行化,并且根据其设计架构,该方法可能导致频繁的存储器访问,这使存储器使用效率恶化。

本文提出了用于去除当导出运动信息时的相关性的设备和方法以解决以上问题。图21示出了本发明应用的帧间预测模块的示例性配置。根据本发明的实施方式,参考图22至图26详细描述了导出运动信息的方法。

图21是示出本发明应用的帧间预测模块2100的配置的框图。

参考图21,帧间预测模块2100可以包括存储模块2110和导出模块2120。帧间预测模块2100可以是指上述3d图像编码器中的帧间预测模块710或3d图像解码器中的帧间预测模块850。图21的帧间预测模块2100可以应用于上述图像编码/解码处理。

存储模块2110指定运动信息并且将相同运动信息存储在存储空间中。存储模块2110可以使用存在于参考块的位置处的运动信息,以获得所存储的运动信息。此处,所述位置可以是参考块的中心或覆盖参考块的中心的(子)预测单元。存储在存储模块2110中的运动信息可以被设置为初始值。除非运动信息可以被存储在存储空间中,否则可以省略在每个子预测单元基础上导出运动信息的处理。当在每个子预测单元基础上省略导出运动信息的处理时,可以如上所描地执行帧间预测。下面更详细地描述了存储模块2110。

导出模块2120执行从当前块的子预测单元导出运动信息的处理。在这样的情况下,导出模块2120可以基本上执行上述运动信息导出处理。然而,除非与当前块的第一子预测单元对应的参考块的子预测单元具有运动信息,否则本文提出的导出模块2120可以执行对具有运动信息的参考块的子预测单元的发现,并且代替从具有运动信息的参考块的子预测单元导出关于当前块的第一子预测单元的运动信息,而可以从存储在存储模块中的运动信息导出关于当前块的第一子预测单元的运动信息。下面更详细地描述了导出模块2120。

现在参考附图详细描述本发明的实施方式。

实施方式1

图22是示意性示出根据本发明的实施方式的使用参考块导出关于当前块的子预测单元的运动信息的方法的流程图。

在实施方式1中,基于参考块的中心位置的运动信息来导出关于当前块的子预测单元(当前子单元)的运动信息。可以在编码器和解码器或者编码器和解码器的预测单元或帧间预测模块中执行实施方式1。为了便于本文的描述,图21的帧间预测模块2100执行实施方式1的操作。

参考图22,帧间预测模块2100可以导出参考块的中心位置(s2200)。可以根据下面的等式10导出所述参考块的中心位置。此处,参考块可以是存在于与参考图片中的当前块相同位置处的块,并且参考块可以具有与当前块相同的大小。

[等式10]

x位置=xpb+(npbw>>1)

y位置=ypb+(npbh>>1)

此处,xpb和ypb指代当前pu的左上位置,npbw指代当前pu的宽度,而npbh指代当前pu的高度。

帧间预测模块2100可以确定参考块的中心位置处是否存在运动信息(s2210)。可以如上所述指定所述参考块的中心位置。

除非参考块的中心位置处存在可用的运动信息,否则帧间预测模块2100可以终止导出运动信息的处理。例如,在参考块的中心处没有可用的运动信息的情况下,帧间预测模块2100不会导出关于当前块的运动信息。

如果参考块的中心位置处存在运动信息,则帧间预测模块2100可以将存在于参考块的中心位置处的运动信息存储在存储空间中(s2220)。存在于参考块的中心位置处的运动信息可以是包括最邻近参考块的中心的全样本位置的关于预测块的运动信息。上面已经描述了通过帧间预测模块2100存储运动信息的具体处理。帧间预测模块2100可以基于参考块上存储的运动信息导出关于当前子预测单元的运动信息。

帧间预测模块2100可以确定与当前子预测单元对应的参考块的子预测单元是否具有运动信息(s2240)。

在参考块的子预测单元具有运动信息的情况下,帧间预测模块2100可以将关于参考块的子预测单元的运动信息插入当前子预测单元(s2250)。换言之,帧间预测模块2100可以将关于参考块的子预测单元的运动信息(例如,运动矢量、参考图片索引)设置为对应的关于当前子预测单元的运动信息。

除非参考块的子预测单元具有可用的运动信息,否则帧间预测模块2100将存储在存储空间中的参考块的运动信息插入当前子预测单元中(s2260)。换言之,在与当前子预测单元对应的关于参考块的子预测单元的运动信息不可用的情况下,帧间预测模块2100可以将存储在步骤s2200中的关于参考块的中心的运动信息设置为关于当前子预测单元的运动信息。

帧间预测模块2100可以确定与当前子预测单元对应的参考块的子预测单元是否为参考块中的最后的子预测单元(或者以相同的含义,当前子预测单元是否为当前块中的最后子预测单元)(s2270)。在参考块的子预测单元是最后的子预测单元的情况下,帧间预测模块2100可以终止导出运动信息的处理。

除非参考块的子预测单元是最后的子预测单元,否则帧间预测模块2100继续进行关于当前块的下一子预测单元的运动信息,以继续导出运动信息(s2230)。

根据实施方式1的上述运动信息导出处理可以应用于如表格2中进行解码的3d图像。

[表格2]

基于表格2再次描述实施方式1。

参考表格2,将当前预测块的左上端的位置、当前预测块的宽度和高度、参考视图索引和视差矢量输出至帧间预测模块2100。此处,当前预测块的左上端的位置可以被定义为(xpb,ypb)。当前预测块的宽度可以被定义为“npbw”,并且当前预测块的高度可以被定义为“npbh”。参考视图索引可以被定义为“refviewidx”,并且视差矢量可以被定义为“mvdisp”。

在使用参考块的子预测单元完成导出关于当前块的子预测单元的运动信息的处理之后,帧间预测模块2100可以输出用于确定视点间预测是否可行的标志、视点间运动矢量和指定存在于参考图片列表中的参考图片的参考索引。在这样的情况下,用于确定临时视点间候选运动是否可用的标记可以被定义为“availableflaglxinterview”,并且临时视点间运动候选可以被定义为“mvlxinterview”。参考图片列表可以被表示为“refpiclistlx”,并且指定存在于参考图片列表中的参考图片的参考索引可以被定义为“refidxlxinterview”。在“availableflaglxinterview”、“mvlxinterview”、“refpiclistlx”和“refidxlxinterview”中,“lx”可以是参考图片列表0(列表0,l0)或参考图片列表1(列表1,l1)。

现在描述通过从输入获得上述输出来导出关于当前块的子预测单元的运动信息的方法。

首先,在使用参考块的子预测单元导出关于当前块的子预测单元的运动信息之前,帧间预测模块2100执行初始化。在这样的情况下,availableflaglxinterview可以被设置为0,mvlxinterview被设置为(0,0),并且refidxlxinterview被设置为-1。当帧间预测模块2100执行初始化时,还可以将子预测单元的宽度和高度进行初始化。在这样的情况下,子预测单元的宽度可以被表示为“nsbw”,并且子预测单元的高度被表示为“nsbh”。等式11表示用于将变量nsbw和变量nsbh进行初始化的方法的示例。

[等式11]

nsbw=min(npbw,subpbsize[n/uh_layer_id])

nsbh=min(npbh,subpbsze[n/uh_layer_id])

在这样的情况下,subpbsize表示由vps指定的子预测单元的(包括高度和宽度的)大小,并且nuh_layer_id表示用于识别层的索引(例如,它是哪个参考视点)。min()是对变量输入中较小的变量输入进行输出的运算符。

帧间预测模块2100不仅可以将上述变量初始化,而且可以将以下信息初始化:用于识别当前块的子预测单元和视点间参考图片中的(xref,yref)处的亮度预测块的信息,以及用于识别存储在存储空间中的运动信息是否可用的信息。

在这样的情况下,视点间参考图片可以被设置为具有当前访问单元中的视图索引(例如参考视图索引)的图片。此处,视点间参考图片可以被表示为“ivrefpic”,并且视点间参考图片中的(xref,yref)处的亮度预测块可以被表示为“ivrefpb”。一个访问单元包括具有相同的图片顺序计数(poc)的、不同视点的图像。参考视图索引可以被定义为“refviewidx”,并且视图索引被定义为“viewidx”。

参考位置可以是根据实施方式1的指定覆盖参考块的中心的预测块的位置。可以存储关于参考位置的运动信息,以导出关于当前子预测单元的运动信息。等式12示出了导出参考位置(xref,yref)的示例性方法。

[等式12]

xreffull=xpb+(npbw>>1)+((mvdisp[0]+2)>>2)

yreffull=ypb+(npbh>>1)+((mvdisp[1]+2)>>2)

xref=clip3(0,picwidthinsamplesl-1,(xreffull>>3)<<3)

yref=clip3(0,picheightinsamplesl-1,(yreffull>>3)<<3)

此处,xreffull和yreffull表示接近参考块的中心的全样本的位置。即,xreffull和yreffull分别表示整数位置处的样本的x坐标和y坐标。

ivrefpb可以是覆盖(xref,yref)的子预测单元或预测块。亮度样本的位置(xivrefpb,yivrefpb)可以指定ivrefpb的左上端。

除非已经以帧内模式对ivrefpb进行了编码/解码,否则以下处理(1)和处理(2)可以应用于范围从x至(1-x)的y。

refpiclistlyivref被设置为视点间参考图片ivrefpic中的refpiclistly、视点间参考图片ivrefpic中的predflaglyivref[x][y]至predflag[x][y]以及视点间参考图片ivrefpic中的refidxlyivref[x][y]至refidxly[x][y]。

如果predflaglyivref[xivrefpb][yivrefpb]为1,则以下处理应用于范围从0至num_ref_idx_lx_active_minus1(参考图片列表x中的参考图片的数目)的i。如果refpiclistlyivref[refidxlyivref[xivrefpb][yivrefpb]]的poc(图片顺序计数)为refpiclistlx[i]且availableflaglxinterview为0,则等式13可以应用。

[等式13]

availableflaglxinterview=1

mvlxinterview=mvlyivref[xivrefpb][yivrefpb]

refidxlx=i

在availableflagl0interview或availableflagl1interview为1的情况下,帧间预测模块2100对范围从0至(npbh/nsbh-1)的yblk和范围从0至(npbw/nsbw-1)的xblk执行以下处理。此处,xblk是指x坐标,而yblk是指y坐标。换言之,如果导出参考块的中心处的可用运动信息,则帧间预测模块2100可以在每个子预测单元基础上导出运动信息。

首先,帧间预测单元2100可以将以下进行初始化:用于识别是否预测来自参考块的子预测单元的运动信息、子预测单元预测标志、关于子预测单元的运动信息和子预测单元的参考索引。

在这样的情况下,用于识别是否预测来自参考块的子预测单元的运动信息的信息可以被定义为“curavailableflag”、子预测单元预测标志“sppredflaglx1”、子预测单元预测标志“sppredflaglx[xblk][yblk]”、子预测单元的运动矢量“spmvlx”、子预测单元的参考索引“sprefidxlx”和子预测单元的参考索引“sprefidxlx[xblk][yblk]”。

如以下等式14,在每个子预测单元基础上重置参考块的位置(xref,yref)。

[等式14]

xref=clip3(0,picwidthinsamplesl-1,xpb+xblk*nsbw+nsbw/2+((mvdisp[0]+2)>>2)))

yref=clip3(0,picheightinsamplesl-1,ypb+yblk*nsbh+nsbh/2+((mvdisp[1]+2)>>2)))

picwidthinsamplesl是指当前图片的宽度,而picheightinsamplesl是指当前图片的高度。另外,上面已经描述了clip3()。

此后,在以帧内模式对视点间参考块进行编码的情况下,对范围从0至1的x执行以下处理。

当x为0或者当前片为片b时,如下对于y(y的范围从x至(1-x))重置每个变量。refpiclistlyivref可以被设置为由ivrefpic(即,视点间参考图片)指定的图片的参考图片列表refpiclistly。predflaglyivref[x][y]被设置为predflagly[x][y]。predflagly[x][y]表示应用于由ivrefpic指定的图片中的(x,y)处的参考图片列表。mvlyivref[x][y]被设置为mvly[x][y]。mvly[x][y]是指由ivrefpic指定的图片中的(x,y)处的运动矢量。refidxlyivref[x][y]被设置为refidxly[x][y]。refidxly[x][y]表示由ivrefpic表示的图片中的(x,y)处的参考像素。

在predflaglyivref[xivrefpb][yivrefpb]为1的情况下,如果refpiclistlyivref[refidxlyivref[xivrefpb][yivrefpb]]的poc为refpiclistlx[i]并且sppredflaglx[xblk][yblk]为0,则以下等式15可以应用于范围从0至num_ref_idx_lx_active_minus1(参考图片列表中的参考图片的数目)的i。

[等式15]

spmvlx[xblk][yblk]=mvlyivref[xivrefpb][yivrefpb]

sprefidxlx[xblk][yblk]=i

sppredflaglx[xblk][yblk]=1

curavailableflag=1

即使是在已经执行了上述处理之后,如果curavailableflagasset为0(即,除非sprefidxlx=i(例如,sprefidxlx=-1),并且sppredflaglx=1(例如,sppredflaglx=-1)),则可以说不会在每个子预测单元基础上导出运动信息。因此,帧间预测模块2100可以将等式16应用于范围从0至1的x。

换言之,在不能从参考块的子预测单元导出运动信息的情况下,帧间预测模块2100可以从关于参考块的中心位置的运动信息导出关于当前块的子预测单元的运动信息。

[等式16]

spmvlx[xblk][yblk]=mvlxinterview

sprefidxlx[xblk][yblk]=refidxlx

sppredflaglx[xblk][yblk]=availableflaglxinterview

最后,在已完成所有上述处理之后,变量cursubblockidx被设置为cursubblockidx+1,并且如果availableflagl0interview和availableflagl1interview为0,则结束根据实施方式1的导出运动信息的处理。

实施方式2

图23是示意性示出根据本发明的另一实施方式的导出当前块的每个关于子预测单元的运动信息的方法的流程图。在图23所示的示例中,可以使用存在于参考块的位置处的子预测单元来导出关于当前块的子预测单元的运动信息。

在实施方式2中,可以基于覆盖参考块的中心的关于子预测单元的运动信息来导出关于当前块的子预测单元的运动信息。

可以在编码器和解码器或者编码器和解码器的预测单元或者图21所示的帧间预测模块2100中执行图23所示的示例。此处,为了便于描述,帧间预测模块2100执行如图23所示的每个步骤。

参考图23,帧间预测模块2100可以导出定位于参考块的中心处的子预测单元(中心子预测单元)的位置(s2300)。定位于参考块中的中心子预测单元是指位于参考块的中心处的子预测单元,并且上面已经描述了参考块的中心。等式17表示导出参考块的中心子预测单元的位置的示例。

[等式17]

中心子预测单元的x值=xpb+(npbw/nsbw/2)*nsbw+nsbw/2

中心子预测单元的y值=ypb+(npbh/nsbh/2)*nsbh+nsbh/2

此处,xpb和ypb指代当前预测单元的左上位置,npbw指代当前预测单元的宽度,而npbh指代当前预测单元的高度。

帧间预测模块2100确定参考块的中心子预测单元是否具有运动信息(s2310),并且上面已经描述了所述参考块的中心子预测单元的位置。如果没有运动信息存在于参考块的中心子预测单元的位置处,则帧间预测模块2100可以终止运动信息导出处理。

在运动信息存在于参考块的中心子预测单元的情况下,帧间预测模块2100可以存储存在于中心位置处的运动信息(s2320)。上面已描述了通过帧间预测模块2100存储运动信息的具体处理。

帧间预测模块2100导出关于当前子预测单元的运动信息。帧间预测模块2100可以确定与当前子预测单元对应的参考块的子预测单元是否具有运动信息(s2340)。

在参考块的子预测单元具有运动信息的情况下,帧间预测模块2100可以将存在于参考块的子预测单元中的运动信息插入当前子预测单元中(s2350)。除非参考块的子预测单元具有运动信息,否则帧间预测模块2100可以将存储在步骤s2320中的运动信息插入当前子预测单元(s2360)。

帧间预测模块2100可以确定针对导出运动信息的参考块的子预测单元是否为最后的子预测单元(s2370)。在参考块的子预测单元是最后的子预测单元的情况下,帧间预测模块2100可以终止导出关于当前块的运动信息的处理。除非参考块的子预测单元是最后的子预测单元,否则行进至当前块的下一子预测单元,以继续导出运动信息(s2330)。

根据实施方式2的上述运动信息导出处理可以应用于如表格3中的3d图像。

[表格3]

基于表格3再次描述实施方式2。

表格3中的变量与表格2中的变量相同。

帧间预测模块2100在使用参考块的子预测单元导出关于当前子预测单元的运动信息之前执行初始化。初始化与上面结合表格2描述的初始化相同。

帧间预测模块可以指定参考块的中心子预测单元的位置。可以基于参考位置确定参考块的位置,并且如等式18导出参考位置(xref,yref)。

[等式18]

xref=clip3(0,picwidthinsamplesl-1,xpb+(npbw/nsbw/2)*nsbw+nsbw/2)

yref=clip3(0,picheightinsamplesl-1,ypb+(npbh/nsbh/2)*nsbh+nsbh/2)

ivrefpic是具有与当前访问单元中的refviewidx相同的viewidx的图片,并且ivrefpb是覆盖通过ivrefpic中的等式19导出的(xref,yref)的预测块或子预测单元。

(xivrefpb,yivrefpb)指定ivrefpb的左上位置。

在尚未以帧内模式对ivrefpb进行编码/解码并且x为0或者当前片为片b的情况下,以下处理应用于范围从x至(1-x)的y。

如结合表格2所描述的,refpiclistlyivref被设置为refpiclistly、predflaglyivref[x][y]至predflag[x][y]以及refidxlyivref[x][y]至refidxly[x][y]。

如果predflaglyivref[xivrefpb][yivrefpb]为1,则在refpiclistlyivref[refidxlyivref[xivrefpb][yivrefpb]]的poc(图片顺序计数)为refpiclistlx[i]并且availableflaglxinterview为0的情况下,等式19应用于范围从0至num_ref_idx_lx_active_minus1(参考图片列表x中的参考图片的数目)的i。

[等式19]

centeravailableflag=1

centermvlx=mvlyivref[xivrefpb][yivrefpb]

centerrefidxlx=j

centerpredflaglx=1

在等式中,centeravailableflag表示参考块的中心子预测单元是否可用,并且centermvlx是指参考块的中心子预测单元的运动矢量。此外,centerrefidxlx指代参考块的中心子预测单元的参考索引,并且centerpredflaglx指代中心子预测单元的参考图片列表。此处,centeravailableflag、centermvlx、centerrefidxlx和/或centerpredflaglx是指中心子预测单元的运动信息。换言之,帧间预测模块2100可以将设置在等式19中的关于参考块的中心子预测单元的运动信息存储在存储空间中。

在如上所述已经设置了变量之后,在centeravailableflag为1的情况下,帧间预测模块2100对范围从0至(npbh/nsbh-1)的yblk和范围从0至(npbw/nsbw-1)的xblk执行以下处理。此处,xblk是指块的x坐标,而yblk是指块的y坐标。换言之,如果导出来自参考块的中心处的子块的可用运动信息,则帧间预测模块2100可以在每个子预测单元基础上导出关于当前块的运动信息。

首先,帧间预测模块2100将以下进行初始化:用于识别是否预测来自参考块的子预测单元的运动信息的信息、子预测单元预测标志、关于子预测单元的运动信息和子预测单元的参考索引。初始化与上面结合表格2描述的初始化相同。

如等式20所示,在每个子预测单元基础上重置参考块的位置(xref,yref)。

[等式20]

xref=clip3(0,picwidthinsamplesl-1,xpb+xblk*nsbw+nsbw/2+((mvdisp[0]+2)>>2)))

yref=clip3(0,picheightinsamplesl-1,ypb+yblk*nsbh+nsbh/2+((mvdisp[1]+2)>>2)))

此处,xref是指参考块的位置的x坐标,而yref是指参考块的位置的y坐标。picwidthinsamplesl是指当前图片的宽度,而picheightinsamplesl是指当前图片的高度。上面已经描述了clip3()。

在以帧内模式对视点间参考块进行编码的情况下,帧间预测模块2100对范围从0至1的x执行以下处理。

当x为0或者当前片为片b时,如下对于y(y的范围从x至(1-x))重置每个变量。初始化与上面结合表格2描述的初始化相同。

在predflaglyivref[xivrefpb][yivrefpb]为1的情况下,如果refpiclistlyivref[refidxlyivref[xivrefpb][yivrefpb]]的poc为refpiclistlx[i]并且sppredflaglx[xblk][yblk]为0,则以下等式21可以应用于范围从0至num_ref_idx_lx_active_minus1(参考图片列表中的参考图片的数目)的i。

[等式21]

spmvlx[xblk][yblk]=mvlyivref[xivrefpb][yivrefpb]

sprefidxlx[xblk][yblk]=i

sppredflaglx[xblk][yblk]=1

curavailableflag=1

即使在已经执行了上述处理之后,如果curavailableflagasset为0(即,除非sprefidxlx=i(例如,sprefidxlx=-1),并且sppredflaglx=1(例如,sppredflaglx=-1)),则可以说不会在每个子预测单元基础上导出运动信息。因此,帧间预测模块2100可以将等式22应用于范围从0至1的x。

换言之,在不能从参考块的子预测单元导出运动信息的情况下,帧间预测模块2100可以从关于中心子单元的运动信息导出关于当前块的子预测单元的运动信息。

[等式22]

spmvlx[xblk][yblk]=centermvlx

sprefidxlx[xblk][yblk]=centerrefidxlx

sppredflaglx[xblk][yblk]=centerpredflaglx

最后,在已完成所有上述处理之后,变量cursubblockidx被设置为cursubblockidx+1,并且如果availableflagl0interview和availableflagl1interview为0,则结束根据实施方式2的导出运动信息的处理。

图24是示出使用位置处的运动信息导出关于当前块的子预测单元的运动信息的示例性处理的图。

参考图24,位于图24的上端处的块是指参考块的子预测单元,而定位于图24的下端处的块是指当前块的子预测单元。x表示位置,并且x处的运动信息被存储在存储空间中。此处,图24的位置处的运动信息可以是指如实施方式1中的参考块的中心位置处的运动信息,并且图24的位置处的运动信息可以是指如实施方式2中的关于参考块的中心子预测单元的运动信息。

在使用该位置处的运动信息来导出关于当前块的子预测单元的运动信息时,参考块中的每个子预测单元可以利用该位置处的运动信息。换言之,可以使用该位置处的运动信息来同时导出关于当前块的多个子预测单元的运动信息,并且使用该位置处的运动信息导出运动信息可以解决数据相关性的问题。因此,在使用该位置处的运动信息时,帧间预测模块2100可以并行导出运动信息。

如上所述,实施方式1和实施方式2使用存在于任意位置处的运动信息来导出运动信息。因此,根据实施方式1和实施方式2的运动信息导出方法使得能够独立导出参考块中的关于每个子预测单元的运动信息。换言之,实施方式1和实施方式2为了找到可以导出运动信息的子预测单元不需要可以导出运动信息的子预测单元的顺序发现,并且在参考块的第一子预测单元不可能用于导出运动信息的情况下,实施方式1和实施方式2使用预先确定的运动信息来导出关于当前块的子预测单元的运动信息。这样,根据实施方式1和实施方式2的运动信息导出去除了数据相关性,从而使得关于每个子预测单元的运动信息能够并行导出。此外,与现有运动信息导出方法相比,根据实施方式1和实施方式2的运动信息导出防止了额外的存储器访问,从而减少了访问存储器的次数。

实施方式3

图25是示出根据本发明的又一实施方式的使用运动信息值导出关于当前块的子预测单元的运动信息的方法的流程图。

参考图25,实施方式4提供了在运动信息不能从参考块的子预测单元导出的情况下设置默认运动信息并且从该默认运动信息导出关于当前子预测单元的运动信息的方法。此处,默认运动信息可以是指零矢量。下面描述了根据实施方式3的导出运动信息的具体方法。

帧间预测模块2100可以在存储空间中存储默认运动信息(s2500)。上面已经描述了通过帧间预测模块2100存储运动信息的具体处理。

随后,帧间预测模块2100可以导出关于当前子预测单元的运动信息。帧间预测模块2100可以确定与当前子预测单元对应的参考块的子预测单元是否具有运动信息(s2520)。

在参考块的子预测单元具有运动信息的情况下,帧间预测模块2100可以将关于参考块的子预测单元的运动信息插入当前子预测单元(s2530)。除非参考块的子预测单元具有运动信息,否则帧间预测模块2100可以将存储在存储空间中的运动信息插入当前子预测单元(s2540)。

帧间预测模块2100可以确定针对导出运动信息的参考块的子预测单元是否为最后的子预测单元(s2550)。在参考块的子预测单元是最后的子预测单元的情况下,帧间预测模块2100可以终止导出运动信息的处理。除非参考块的子预测单元是最后的子预测单元,否则帧间预测模块2100可以发现关于参考块的下一子预测单元的运动信息,以继续导出运动信息(s2510)。

根据实施方式3的上述运动信息导出处理可以应用于如表格4中的3d-hevc草案文本2。

[表格4]

基于表格4再次描述实施方式3。表格3中的变量与表格2中的变量相同。

帧间预测模块2100在使用参考块的子预测单元导出关于当前子预测单元的运动信息之前执行初始化。初始化与上面结合表格2描述的初始化相同。

此外,如等式23和等式24中设置变量availableflaglxzero、mvlxzero和refidxlxzero。此处,x为0或1。

[等式23]

availableflagl0zero=1

mvl0zero=(0,0)

refidxl0zero=0

[等式24]

availableflagl1zero=1

mvl1zero=(0,0)

refidxl1zero=0

此处,availableflaglxzero是指关于默认运动信息是否可用的标识符,mvlxzero表示默认运动信息,并且refidxlxzero表示默认运动信息的参考索引。

在如上设置变量之后,帧间预测模块2100对范围从0至(npbh/nsbh-1)的yblk和范围从0至(npbw/nsbw-1)的xblk执行以下处理。此处,xblk是指块的x坐标,而yblk是指块的y坐标。首先,帧间预测模块2100对以下进行初始化:用于识别是否预测来自参考块的子预测单元的运动信息的信息、子预测单元预测标志、关于子预测单元的运动信息和子预测单元的参考索引。初始化与上面结合表格2描述的初始化相同。

如等式25所示,在每个子预测单元的基础上设置参考块的位置(xref,yref)。

[等式25]

xref=clip3(0,picwidthinsamplesl-1,xpb+xblk*nsbw+nsbw/2+((mvdisp[0]+2)>>2)))

yref=clip3(0,picheightinsamplesl-1,ypb+yblk*nsbh+nsbh/2+((mvdisp[1]+2)>>2)))

在以帧内模式对视点间参考块进行编码的情况下,帧间预测模块2100可以对范围从0至1的x执行以下处理。

当x为0或者当前片为片b时,如上所述结合表格2对于y(y的范围从x至(1-x))重置每个变量。

在这样的情况下,如果predflaglyivref[xivrefpb][yivrefpb]为1,则以下等式26可以应用于范围从0至num_ref_idx_lx_active_minus1(参考图片列表中的参考图片的数目)的i。

[等式26]

spmvlx[xblk][yblk]=mvlyivref[xivrefpb][yivrefpb]

sprefidxlx[xblk][yblk]=i

sppredflaglx[xblk][yblk]=1

curavailableflag=1

在执行上述处理后,在curavailableflag为0的情况下,帧间预测模块2100可以将等式27应用于范围从0至1的x。

换言之,在不能从参考块的子预测单元导出运动信息的情况下,帧间预测模块2100可以从任意设置的默认运动信息导出关于当前块的子预测单元的运动信息。

[等式27]

spmvlx[xblk][yblk]=mvlxzero

sprefidxlx[xblk][yblk]=refidxlxzero

sppredflaglx[xblk][yblk]=availableflaglxzero

最后,在已完成所有上述处理之后,变量cursubblockidx被设置为cursubblockidx+1,并且如果availableflagl0interview和availableflagl1interview为0,则结束根据实施方式3的导出运动信息的处理。

图26是示出了使用一些运动信息导出当前块上的子预测单元的运动信息的示例性处理的图。

参考图26,位于图26的上端处的块是指参考块的子预测单元,并且位于图26的下端处的块是指当前块的子预测单元。另外,默认运动信息被存储在存储空间中。此处,图26所示的默认运动信息可以是指根据实施方式3任意设置的默认运动信息。

在使用默认运动信息导出关于当前块的子预测单元的运动信息时,参考块中的每个子预测单元可以利用任意设置的默认运动信息。换言之,可以使用默认运动信息来同时导出关于当前块的多个子预测单元的运动信息,并且当前块的所述多个子预测单元可以解决数据相关性的问题。因此,在使用具有若干值的默认运动信息时,帧间预测模块2100可以并行导出运动信息。

如上所述,根据实施方式3,帧间预测模块2100使用具有某个值的默认运动信息来导出运动信息。因此,根据实施方式3的运动信息导出方法使得能够独立导出参考块中的关于每个子预测单元的运动信息。换言之,实施方式3为了找到可以导出运动信息的子预测单元不需要可以导出运动信息的子预测单元的顺序发现,并且在参考块的第一子预测单元不可能用于导出运动信息的情况下,实施方式3使用预定的运动信息来导出关于当前块的子预测单元的运动信息。这样,根据实施方式3的运动信息导出去除了数据相关性,从而使得关于每个子预测单元的运动信息能够并行导出。此外,与现有运动信息导出方法相比,根据实施方式3的运动信息导出防止额外的存储器访问,从而减少访问存储器的次数。

图27是示意性示出根据本发明导出运动信息所需的时间的图。

参考图20,当从一个子预测单元导出运动信息所花费的时间为t并且参考块中子预测单元的数目为n时,从参考块导出所有运动信息所花费的时间为nxt。然而,在根据本发明的实施方式导出运动信息时,可以将运动信息导出并行化,并且因此,导出运动信息的时间对应于t,并且3d图像编码/解码延迟减少。

上述实施方式可以取决于块大小、编码单元(cu)深度或变换单元(tu)深度而具有不同的适用范围。当可以使用用于确定适用范围的变量、在编码器/解码器中预定的值或根据简况或等级确定的值时,或者如果编码器指定比特流中的变量值,则解码器可以从比特流获得变量值。

例如,在不同的适用范围取决于cu深度而应用的情况下,可以存在:仅应用于给定的深度或更多深度的方案(方法a)、仅应用于给定的深度或更少深度的方案(方法b)或者仅应用于给定的深度的方案(方法c)。在根据本发明的方法不适用于深度的情况下,指示符(标志)可以被用于表示相同要素,或者它可以用没有应用根据本发明的方法的cu深度来表示,其中,cu深度可以被设置为大于cu可以具有的最大深度。

[表格5]

在上述实施方式中,基于具有一系列步骤或单元的流程图来描述所述方法,但是本发明不限于步骤的顺序,而是可以同时或者以具有其他步骤的不同顺序执行一些步骤。本领域的普通技术人员应当理解:流程图中的步骤并不互相排斥,并且在不影响本发明的范围的情况下,其他步骤可以被添加至流程图,或者一些步骤可以从流程图删除。

此外,上述实施方式包括示例的各个方面。虽然不能描述表示各方面的所有可能的组合,但是本领域的技术人员应当理解,任何其他组合可行。因此,本发明包括归属于所附权利要求的所有其他改变、修改和变化。

根据本发明的上述方法可以在可以存储在计算机可读记录介质(其示例包括rom、ram、cd-rom、磁带、软盘或光学存储装置)中的计算机可执行程序中准备,或者可以以载波的形式实现(例如,通过互联网传输)。

计算机可读记录介质可以被分布在通过网络连接的计算机系统中,并且计算机可读代码可以以分布式被存储和执行。可以由本发明所属的领域中的程序员容易地推断用于实现上述方法的功能程序、代码或代码段。

虽然结合本发明的优选实施方式已经示出和描述了本发明,但是本发明不限于此,并且在不背离在所附权利要求中限定的本发明的范围的情况下,可以对其进行各种变化,并且这样的变化不应当根据本发明的技术精神或范围来单独地解释。

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