视频解码方法、视频编码方法及装置
文献发布时间:2024-04-18 19:58:30
本申请是申请日为2018年8月27日、申请号为201880035934.5(国际阶段申请号为PCT/KR2018/009867)、发明名称为“视频信号处理方法及装置”的发明专利申请的分案申请。
技术领域
本发明涉及视频信号处理方法及装置。
背景技术
近年来,各种应用领域对HD(High Definition)图像及UHD(Ultra HighDefinition)图像之类的高分辨率、高品质的图像的需求正在增加。由于图像数据的分辨率及品质变得越高则与现有图像数据相比数据量相对增加,因此在利用现有有线/无线宽带线路之类的介质传送图像数据或利用现有存储介质存储的情况下,传送费用和存储费用会增加。为了解决伴随图像数据的高分辨率、高品质化而发生的这样的问题,可利用高效的图像压缩技术。
作为图像压缩技术,存在各种技术,如根据当前图片的上一个或下一个图片预测当前图片所包含的像素值的画面间预测技术、利用当前图片内的像素信息预测当前图片所包含的像素值的画面内预测技术、对出现频率高的值分配短码并对出现频率低的值分配长码的熵编码技术、等,能够利用这样的图像压缩技术有效地压缩图像数据来进行传送或存储。
另一方面,随着对高分辨率图像的需求增加,作为新的图像服务,对立体图像内容的需求也正在同时增加。正在讨论用于有效地提供高分辨率及超高分辨率的立体图像内容的视频压缩技术。
发明内容
技术问题
本发明的目的在于提供一种在对视频信号进行编码/解码时能够对编码/解码对象块有效地执行帧间预测的方法及装置。
本发明的目的在于提供一种在对视频信号进行编码/解码时对执行了动作补偿的块适用重叠的块动作补偿的方法及装置。
本发明的目的在于提供一种对视频信号进行编码/解码时以子块单位适用光流的方法及装置。
本发明要解决的技术问题并不限定于上面的提及的技术问题,本领域技术人员能够从下面的记载明确理解未提及的技术问题或其他技术问题。
解决问题的手段
根据本发明的视频信号解码方法及装置,可在获取当前块的动作矢量,并对所述当前块适用双向光流的情况下,更新所述动作矢量,利用更新的所述动作矢量,对所述当前块执行动作补偿。此时,可以以所述当前块内的规定大小的子块单位适用所述双向光流。
在根据本发明的视频信号编码方法及装置中,可在获取当前块的动作矢量,并对所述当前块适用双向光流的情况下,更新所述动作矢量,利用更新的所述动作矢量,对所述当前块执行动作补偿。此时,可以以所述当前块内的规定大小的子块单位适用所述双向光流。
在根据本发明的视频信号编码/解码方法及装置中,更新所述动作矢量可包括:获取对所述当前块内的子块的动作调整矢量;以及利用所述动作调整矢量,更新所述动作矢量。
在根据本发明的视频信号编码/解码方法及装置中,所述动作调整矢量可基于所述子块所包含的样本的动作调整矢量平均值来获取。
在根据本发明的视频信号编码/解码方法及装置中,所述动作调整矢量可基于所述子块内特定位置样本来获取。
在根据本发明的视频信号编码/解码方法及装置中,所述特定位置样本可包含位于所述子块的角的样本或位于所述子块的中央的样本中的至少一个。
在根据本发明的视频信号编码/解码方法及装置中,所述子块的大小或形态可基于所述当前块的大小或形态中的至少一个来决定。
在根据本发明的视频信号编码/解码方法及装置中,所述子块的大小或形态可基于对执行了图像的分辨率或所述动作补偿的当前块是否执行重叠的块动作补偿来决定。
在根据本发明的视频信号编码/解码方法及装置中,可包括对执行了所述动作补偿当前块适用重叠的块动作补偿。此时,所述重叠的块动作补偿可以以所述当前块内的规定大小的子块单位来适用。
此外,根据本公开的一方面,提供了视频解码方法,其包括:基于经由比特流用信号发出的标志来决定子块级别运动矢量导出或块级别运动矢量导出中的哪一个被应用于当前块,其中,响应于子块级别运动矢量导出被应用于当前块,该方法还包括:获取当前块的时间运动矢量;基于当前块的时间运动矢量决定源图片中的对应块,其中源图片由源图片索引信息指定;基于对应块的运动矢量获取当前块中的子块的子块级别运动矢量,当前块被分割为多个固定大小的子块;以及基于所述子块级别运动矢量获取所述子块的预测块,其中,当当前块的大小等于或大于阈值时,允许对当前块进行子块级别运动矢量导出,其中,当前块的时间运动矢量是从已定义的相邻块导出的,该已定义的相邻块是左相邻块,并且其中,所述时间运动矢量被包括在当前块中的所有子块共享以导出所有子块各自的对应块。
此外,根据本公开另一方面,提供了一种视频编码方法,其包括:决定子块级别运动矢量导出或块级别运动矢量导出中的哪一个被应用于当前块,指示子块级别运动矢量导出和块级别运动矢量导出之一的标志被编码到比特流中,其中,响应于子块级别运动矢量导出被应用于当前块,该方法还包括:获取当前块的时间运动矢量;基于当前块的时间运动矢量决定源图片中的对应块;基于对应块的运动矢量获取当前块中的子块的子块级别运动矢量,当前块被分割为多个固定大小的子块;以及基于所述子块级别运动矢量获取所述子块的预测块,其中,当当前块的大小等于或大于阈值时,允许对当前块进行子块级别运动矢量导出,并且其中,所述时间运动矢量被包括在当前块中的所有子块共享以导出所有子块各自的对应块。
此外,根据本公开再一方面,提供了一种装置,其包括:传送部,用于传送压缩视频数据,其中,所述压缩视频数据是通过编码方法生成的,该编码方法包括:决定子块级别运动矢量导出或块级别运动矢量导出中的哪一个被应用于当前块,指示子块级别运动矢量导出和块级别运动矢量导出之一的标志被编码到比特流中,其中,响应于子块级别运动矢量导出被应用于当前块,该方法还包括:获取当前块的时间运动矢量;基于当前块的时间运动矢量决定源图片中的对应块;基于对应块的运动矢量获取当前块中的子块的子块级别运动矢量,当前块被分割为多个固定大小的子块;以及基于所述子块级别运动矢量获取所述子块的预测块,其中,当当前块的大小等于或大于阈值时,允许对当前块进行子块级别运动矢量导出,并且其中,所述时间运动矢量被包括在当前块中的所有子块共享以导出所有子块各自的对应块。
以上对本发明简要概述的特征仅是后述的本发明的详细说明的示例性的方面,并不限制本发明的范围。
发明的效果
根据本发明,能够对编码/解码对象块有效地执行帧间预测。
根据本发明,通过对执行了动作补偿的块适用重叠的块动作补偿,具有提高帧间预测的效率。
根据本发明,通过以块单位适用光流而非样本单位,具有能够减少存储部使用量的优点。
本发明能够得到的效果并不限定于上面的提及的效果,本领域技术人员能够从下面的记载明确理解未提及的效果或其他效果。
附图说明
图1是示出根据本发明的一实施例的图像编码装置的框图。
图2是示出根据本发明的一实施例的图像解码装置的框图。
图3示出了作为适用本发明的一实施例的基于树结构(tree structure)将编码块分层次分割的一例。
图4是示出了作为应用本发明的一实施例的允许基于二叉树的分割的分区形态的图。
图5是示出了作为应用本发明的一实施例的仅允许特定形态的基于二叉树的分割的例子的图。
图6是用于说明作为应用本发明的一实施例的对与二叉树分割允许次数相关的信息进行编码/解码的例子的图。
图7是例示了作为应用本发明的一实施例的能够适用于编码块的分区模式的图。
图8是示出作为应用本发明的一实施例的帧间预测方法的顺序图。
图9是示出了在当前块适用合并模式时导出当前块的动作信息的过程的图。
图10是示出在对前块适用AMVP模式的情况下导出当前块的动作信息的过程的图。
图11是用于说明基于ATMVP以子块单位导出动作矢量的方法的图。
图12用于说明基于STMVP以子块单位导出动作矢量的方法的图。
图13是用于说明执行重叠的块动作补偿所利用到的相邻预测块的图。
具体实施方式
本发明可以实施各种变更,并且可以具有多种实施例,下面在图中例示特定实施例,进行详细说明。然而,这并非要将本发明限定在特定的实施方式,应理解本发明的思想以及技术范围所包含的所有变更、等同物乃至代替物均包含在其中。在对各附图的说明中,类似的附图标记使用在类似的结构要素上。
第一、第二等用语虽然可以使用在对各种构成要素的说明中,但上述构成要素并非限定在上述用语。使用上述用语的目的仅在于,将一个构成要素与另一结构要素进行区分。例如,在不脱离本发明权利范围的前提下,第一构成要素可以被命名为第二结构要素,类似地,第二结构要素也可以被命名为第一结构要素。”和/或”这一用语包含多个相关记载项目的组合或者多个相关记载项目中的任一项目。
在提及某一结构要素“连接于”或者“接入”另一结构要素时,虽然可以直接连接于或者接入另一结构要素,但也应该理解成中间也可以存在其他构成要素。相反,在提及某一结构要素“直接连接于”或者“直接接入”另一结构要素时,应当理解成中间不存在其他结构要素。
本申请中所使用的用语仅为了说明特定实施例而使用,并非意图限定本发明。单数表现形式包含复数表现形式,除非在文脉上存在明确的不同含义。在本申请中,“包含”或者“具有”等用语,应当理解成用于指定说明书中所记载的特征、数字、步骤、动作、结构要素、部件或他们的组合的存在,而非事先排除一个或一个以上的其他特征或数字、步骤、动作、结构要素、部件或它们的组合的存在或附加可能性。
下面,参照附图,对本发明的优选实施例进行更详细的说明。以下,对于图中的同一结构要素,使用同一附图标记,对于同一结构要素省略重复的说明。
图1是示出根据本发明的一实施例的图像编码装置的框图。
参照图1,图像编码装置100可包括图片分割部110、预测部120、125、转换部130、量化部135、重新整理部160、熵编码部165、反量化部140、反转换部145、滤波部150、及存储部155。
对于图1所示出的各结构部,为了在图像编码装置中表示出相互不同的特定功能而单独地示出,并非意味着各结构部由分离的硬件或者一个软件结构单位构成。即,各结构部为了便于说明而以各个结构部的形式罗列包含进来,各结构部中至少两个结构部可以合在一起构成一个结构部、或者一个结构部分为多个结构部而执行功能,这种各结构部统合在一起的实施例以及分离的实施例,只要不脱离本发明的本质,则均包含在本发明的权利范围。
此外,一部分结构要素在本发明中可能不是执行本质功能的必要性结构要素,而只是用于提高性能的选择性结构要素。本发明可以仅包含除了用于提高性能而使用的结构要素之外的实现本发明的本质所必须的结构部来实现,仅包含除了用于提高性能而使用的选择性结构要素之外的必要结构要素的结构,也包含在本发明的权利范围。
图片分割部110可将所输入的图片分割为至少一个处理单位。此时,处理单位可以是预测单位(Prediction Unit:PU),也可以是转换单位(Transform Unit:TU),还可以是编码单位(Coding Unit:CU)。在图片分割部110中,可将一个图片分割为多个编码单位、预测单位及转换单位的组合,并按照规定的基准(例如,费用函数)选择一个编码单位、预测单位及转换单位组合来对图片进行编码。
例如,一个图片可被分割为多个编码单位。为了在图片分割编码单位,可使用如四叉树结构(Quad Tree Structure)之类的递归性的树结构,以一个图像或最大大小的编码单位(largest coding unit)为跟被分割为其他编码单位的编码单元可以以具有与被分割的编码单位的个数相同的子节点的方式被分割。因一定的限制而不能再被分割的编码单位成为叶节点。即,在假定对一个编码单元只能进行正方形分割时,一个编码单位最多能分割成四个其他编码单位。
下面,在本发明的实施例中,编码单位既可以以执行编码的单位的含义使用,也可以以执行解码的单位的含义使用。
预测单位可以是在一个编码单位内以同一大小的至少一个正方形或长方形等的形态被分割的单位,也可以是在一个编码单位内以在被分割的预测单位中某一个预测单位与另一个预测单位具有不同的形态及/或大小的方式被分割的单位。
在基于编码单位生成执行帧内预测的预测单位时,在不是最小编码单位的情况下,可以不多个分割为预测单位NxN而执行帧内预测。
预测部120、125可包括执行帧间预测的帧间预测部120、和执行帧内预测的帧内预测部125。可决定对预测单位使用帧间预测还是执行帧内预测,并决定与各预测方法对应的具体的信息(例如,帧内预测模式、运动矢量、参照图片等)。此时,被执行预测的处理单位可以与被决定预测方法及具体的内容的处理单位不同。例如,预测方法和预测模式等可通过预测单位决定,预测的执行可通过转换单位执行。所生成的预测块与原块之间的残插值(残余块)可被输入至转换部130。另外,为了预测而使用的预测模式信息、运动矢量信息等可与残插值一起在熵编码部165被编码后传送至解码器。在使用特定的编码模式的情况下,也能够不通过预测部120、125生成预测块而将原块直接编码后传送至解码部。
帧间预测部120可基于当前图片的上一个图片或下一个图片中的至少一个图片的信息预测预测单位,也可以根据情况基于当前图片内的编码完成的一部分区域的信息进行预测单位的预测。帧间预测部120可包括参照图片插值部、运动预测部、及动作补偿部。
在参照图片插值部中,可从存储部155接收参照图片信息,并从参照图片生成整数像素以下的像素信息。在亮度像素的情况下,为了以1/4像素单位生成整数像素以下的像素信息,可使用基于使滤波系数不同的DCT的8抽头插值滤波(DCT-based InterpolationFilter)。在色差信号的情况下,为了以1/8像素单位生成整数像素以下的像素信息,可使用基于使滤波系数不同的DCT的4抽头插值滤波(DCT-based Interpolation Filter)。
运动预测部可基于通过参照图片插值部插值后的参照图片执行运动预测。作为用于计算运动矢量的方法,可使用FBMA(Full search-based Block Matching Algorithm)、TSS(Three Step Search)、NTS(New Three-Step Search Algorithm)等各种方法。运动矢量可基于插值后的像素具有1/2或1/4像素单位的运动矢量值。在运动预测部中,可使运动预测方法不同来预测当前预测单位。作为运动预测方法,可使用跳过(Skip)法、合并(Merge)法、AMVP(Advanced Motion Vector Prediction)法、帧内块复制(Intra BlockCopy)法等各种方法。
帧内预测部125可基于当前图片内的像素信息即当前块周边的参照像素信息生成预测单位。在因当前预测单位的周边块为执行了帧间预测的块而参照像素为执行了帧间预测的像素的情况下,可将执行了帧间预测的块所包含的参照像素替代为周边的执行了帧内预测的块的参照像素信息来使用。即,在参照像素不可用的情况下,可将不可用的参照像素信息替代为可用的参照像素中的至少一个参照像素来使用。
在帧内预测中,预测模式可具有将参照像素信息沿预测方向使用的定向预测模式、和在执行预测时不使用定向信息的非定向模式。用于预测亮度信息的模式与用于预测色差信息的模式可以不同,为了预测色差信息可使用为了预测亮度信息而使用的帧内预测模式信息或预测出的亮度信号信息。
在执行帧内预测时,在预测单位的大小与转换单位的大小相同的情况下,可基于存在于预测单位的左侧的像素、存在于左侧上端的像素、及存在于上端的像素执行对预测单位的帧内预测。但是,在执行帧内预测时,在预测单位的大小与转换单位的大小不同的情况下,可利用基于转换单位的参照像素来执行帧内预测。另外,可仅对最小编码单位使用利用了NxN分割的帧内预测。
在帧内预测方法中,可按照预测模式对参照像素适用AIS(Adaptive IntraSmoothing)滤波之后生成预测块。适用于参照像素的AIS滤波的种类可不同。为了执行帧内预测方法,当前预测单位的帧内预测模式可根据存在于当前预测单位的周边的预测单位的帧内预测模式进行预测。在利用根据周边预测单位预测出的模式信息预测当前预测单位的预测模式的情况下,若当前预测单位与周边预测单位的帧内预测模式相同,则可利用规定的标志信息传送表示当前预测单位与周边预测单位的预测模式相同的信息,若当前预测单位与周边预测单位的预测模式不同,则可执行熵编码来对当前块的预测模式信息实施编码。
另外,可基于在预测部120、125生成的预测单位,生成包含执行了预测的预测单位与预测单位的原块的差值即残插值(Residual)信息的残余块。所生成的残余块可输入至转换部130。
在转换部130中,可将包含原块和通过预测部120、125生成的预测单位的残插值(residual)信息的残余块使用如DCT(Discrete Cosine Transform)、DST(Discrete SineTransform)、KLT之类的转换方法进行转换。对于为了转换残余块而适用DCT还是适用DST又或者适用KLT,可基于为了生成残余块而使用的预测单位的帧内预测模式信息来决定。
量化部135可量化在转换部130转换为频率区域的值。可根据块或根据图像的重要度来改变量化系数。在量化部135计算出的值可提供至反量化部140及重新整理部160。
重新整理部160可对量化的残插值执行系数值的重新整理。
重新整理部160可通过系数扫描(Coefficient Scanning)方法将二维块形态系数变更为一维矢量形态。例如,在重新整理部160中,利用锯齿扫描(Zig-Zag Scan)方法从DC系数扫描至高频区域的系数来变更为一维矢量形态。根据转换单位的大小及帧内预测模式,可代替锯齿扫描而使用将二维块形态系数沿列方向扫描的垂直扫描、将二维块形态系数沿行方向扫描的水平扫描。即,可根据转换单位的大小及帧内预测模式,决定使用锯齿扫描、垂直方向扫描、及水平方向扫描中的哪种扫描方法。
熵编码部165可基于通过重新整理部160计算出的值执行熵编码。熵编码例如可使用如指数哥伦布(Exponential Golomb)、CAVLC(Context-Adaptive Variable LengthCoding)、CABAC(Context-Adaptive Binary Arithmetic Coding)之类的各种编码方法。
熵编码部165可从重新整理部160及预测部120、125对编码单位的残插值系数信息及块类型信息、预测模式信息、分割单位信息、预测单位信息及传送单位信息、运动矢量信息、参照帧信息、块的插值信息,滤波信息等各种信息。
在熵编码部165中可以对从重新整理部160输入的编码单位的系数值进行熵编码。
在反量化部140及反转换部145中,将在量化部135量化的值进行反量化,并对在转换部130转换后的值进行反转换。在反量化部140及反转换部145生成的残插值(Residual)可以与通过预测部120、125所包含的动作推定部、动作补偿部及帧内预测部预测出的预测单位合在一起而生成重建块(Reconstructed Block)。
滤波部150可包括去块滤波、偏移补正部、ALF(Adaptive Loop Filter)中的至少一个。
去块滤波可除去在重建的图片中因块间的边界而产生的块失真。为了判断是否执行去块,可基于块所包含的几个列或行所包含的像素判断在当前块是否适用去块滤波。在块适用去块滤波的情况下,可根据所需的去块滤波强度适用强的滤波(Strong Filter)或弱的滤波(Weak Filter)。另外,在适用去块滤波时,可在执行垂直滤波及水平滤波执行时并行处理水平方向滤波及垂直方向滤波。
偏移补正部可对执行了去块的图像以像素单位补正与原图像之间的偏移。为了执行对特定图片的偏移补正,可使用将图像所包含的像素分割为一定数量的区域之后决定要执行偏移的区域并对相应区域适用偏移的方法、或者考虑各像素的边缘信息来适用偏移的方法。
ALF(Adaptive Loop Filtering)可基于将滤波后的重建图像和原来的图像进行比较得到的值来执行。可以将图像所包含的像素分割为规定的组之后决定适用于相应组的滤波,从而按照各组进行区别性的滤波。有关是否适用ALF的信息,可以按照编码单位(Coding Unit,CU)传送亮度信号,按照各块所要适用的ALF滤波的图案以及滤波系数可以不同。此外,可以与适用对象块的特性无关,适用同一形态(固定形态)的ALF滤波。
存储部155可以存储通过滤波部150算出的重建块或者图片,所存储的重建块或者图片可以在执行帧间预测时提供给预测部120、125。
图2是示出根据本发明的一实施例的图像解码装置的框图。
参照图2,图像解码器200可包括熵解码部210、重新整理部215、反量化部220、反转换部225、预测部230、235、滤波部240以及存储部245。
在图像编码器中中输入图像比特流的情况下,所输入的比特流可以按照与图像编码器相反的步骤解码。
熵解码部210可以按照在图像编码器的熵编码部中执行熵编码的步骤相反的步骤执行熵解码。例如,与在图像编码器中所执行的方法对应地,可以适用如指数哥伦布(Exponential Golomb)、CAVLC(Context-Adaptive Variable Length Coding)、CABAC(Context-Adaptive Binary Arithmetic Coding)之类的多种方法。
在熵解码部210中可以对与在编码器中所执行的帧内预测以及帧间预测有关的信息进行解码。
重新整理部215可以将在熵解码部210中进行熵解码的比特流基于编码部中重新整理的方法执行重新整理。可以将以一维矢量形态表现的系数重建成二维块形态的系数来进行重新整理。在重新整理部215,可以通过接收与在编码部执行的系数扫描有关的信息,并基于在相应编码部中执行的扫描顺序向反方向扫描的方法来执行重新整理。
反量化部220可以基于编码器中提供的量化参数和重新整理的块的系数值来执行反量化。
反转换部225可以对在图像编码器中执行的量化结果执行与在转换部中执行的转换即DCT、DST、以及KLT相反的转换即反DCT、反DST以及反KLT。反转换可以基于在图像编码器中决定的传送单位来执行。在图像解码器的反转换部225中,可以按照预测方法、当前块的大小以及预测方向等多个信息,选择性地执行转换方法(例如,DCT、DST、KLT)。
预测部230、235可以基于在熵解码部210中提供的预测块生成相关信息、和在存储部245中提供的之前已解码的块或者图片信息,来生成预测块。
如前所述,与图像编码器中的动作相同地,在执行帧内预测时预测单位的大小和转换单位的大小相同的情况下,基于存在于预测单位的左侧的像素、存在于左侧上端的像素、存在于上端的像素,来执行对预测单位的帧内预测,但在执行帧内预测时预测单位的大小和转换单位的大小不同的情况下,利用基于转换单位的参照像素来执行帧内预测。此外,可以只对最小编码单位使用利用NxN分割的帧内预测。
预测部230、235可以包括预测单位判别部、帧间预测部以及帧内预测部。预测单位判别部可以接收从熵解码部210输入的预测单位信息、帧内预测方法的预测模式信息、帧间预测方法的运动预测相关信息等多种信息的输入,从当前编码单位区分预测单位,判断预测单位是执行帧间预测还是执行帧内预测。帧间预测部230可以利用图像编码器中提供的当前预测单位的帧间预测所需要的信息,基于包含当前预测单位的当前图片的上一个图片或者下一个图片中的至少一个图片所包含的信息,来执行对当前预测单位的帧间预测。或者,基于包含当前预测单位的当前图片内已重建的一部分区域的信息,来执行帧间预测。
为了执行帧间预测,可以基于编码单位,判断相应编码单位所包含的预测单位的运动预测方法为跳过模式(Skip Mode)、合并模式(Merge模式)、AMVP模式(AMVP Mode)、帧内块复制模式中的哪一种方法。
帧内预测部235可以基于当前图片内的像素信息来生成预测块。在预测单位为执行了帧内预测的预测单位的情况下,可以基于图像编码器中提供的预测单位的帧内预测模式信息来执行帧内预测。帧内预测部235可以包含AIS(Adaptive Intra Smoothing)滤波器、参照像素插值部、DC滤波器。AIS滤波器为对当前块的参照像素执行滤波的部分,可以根据当前预测单位的预测模式决定滤波器的适用与否来适用。可以利用图像编码器中提供的预测单位的预测模式以及AIS滤波器信息,来对当前块的参照像素执行AIS滤波。在当前块的预测模式为不执行AIS滤波的模式的情况下,可以不适用AIS滤波器。
参照像素插值部在预测单位的预测模式为基于对参照像素进行插值的像素值来执行帧内预测的预测单位的情况下,可以对参照像素进行插值而生成整数值以下的像素单位的参照像素。在当前预测单位的预测模式为不对参照像素进行插值就生成预测块的预测模式的情况下,可以不对参照像素进行插值。DC滤波器在当前块的预测模式为DC模式的情况下,可以通过滤波来生成预测块。
已重建的块或者图片可以提供给滤波部240。滤波部240可以包括去块滤波、偏移补正部、ALF。
可以从图像编码器接收与是否对相应块或者图片适用去块滤波器有关的信息、以及与在适用了去块滤波器的情况下是适用了强滤波器还是适用了弱滤波器有关的信息。在图像解码器的去块滤波器中,可以接收图像编码器中提供的去块滤波器相关信息,并在图像解码器中对相应块执行去块滤波。
偏移补正部可以基于在编码时适用于图像的偏移补正的种类以及偏移值信息等,来对重建的图像执行偏移补正。
ALF可以基于从编码器提供的ALF适用与否信息、ALF系数信息等,来适用于编码单位。这种ALF信息可以包含在特定的参数集来提供。
存储部245可以存储已重建的图片或者块以使得能够作为参照图片或者参照块来适用,并且还可以将已重建的图片提供给输出部。
如前所述,以下,在本发明的实施例中,为便于说明,将编码单元(Coding Unit)作为编码单位这一用语使用,但也可以成为除执行编码之外还执行解码的单位。
另外,当前块表示编码/解码对象块,根据编码/解码步骤可以表示编码树块(或者编码树单元)、编码块(或者编码单元)、转换块(或者转换单元)或者预测块(或者预测单元)等。
一个图片可以被分割成正方形或者非正方形的基本块来被编码/解码。此时,基本块可以称为编码树单元(Coding Tree Unit)。编码树单元可以被定义为序列(Sequence)或者条带(slice)中所允许的大小最大的编码单元。与编码树单元是正方形还是非正方形、或者编码树单元的大小有关的信息,可以通过序列参数集、图片参数集或者片头(SliceHeader)等来用信号发出(Signaling)。编码树单元可以被分割成大小更小的分区。此时,在将通过分割编码树单元而生成的分区设为深度1(depth)的情况下,通过分割设为深度1的分区而生成的分区可以被定义为深度2。即,通过分割编码树单元内设为深度k的分区而生成的分区可以被定义为具有深度k+1。
可以将随着分割编码树单元而生成的任意大小的分区定义为编码单元。编码单元可以被递归性地分割、或者被分割成用于执行预测、量化、转换或者环路滤波(in-loopfilter)等的基本单位。作为一例,随着分割编码单元而生成的任意大小的分区可以被定义为编码单元,或者被定义为用于执行预测、量化、转换或者环路滤波等的基本单位即转换单元或者预测单元。
编码树单元或者编码单元的分区可以基于垂直线(Vertical Line)或者水平线(Horizontal Line)中的至少一个来执行。此外,对编码树单元或者编码单元进行分区的垂直线或者水平线的个数可以为至少一个。作为一例,可以利用一个垂直线或者一个水平线将编码树单元或者编码单元分割为两个分区,或者利用两个垂直线或者两个水平线,将编码树单元或者编码单元分割为三个分区。或者,可以利用一个垂直线以及一个水平线,将编码树单元或者编码单元分割为长度以及宽度为1/2的四个分区。
在将编码树单元或者编码单元利用至少一个垂直线或者至少一个水平线分割为多个分区的情况下,分区可以具有均匀的大小或者不同的大小。或者,任一分区可以具有与剩余分区不同的大小。
在后述的实施例中,假定编码树单元或者编码单元被分割成四叉树、三叉树(Triple Tree)或者二叉树(Binary Tree)结构。然而,也可以利用数量更多的垂直线或者数量更多的水平线来分割编码树单元或者编码单元。
图3示出了作为适用本发明的一实施例的基于树结构(tree structure)将编码块分层次分割的一例。
输入图像信号被解码成规定的块单位,像这样用于解码输入图像信号的基本单位称为编码块。编码块可以成为执行帧内/帧间预测、转换、量化的单位。此外,按照编码块单位决定预测模式(例如,画面内预测模式或者画面间预测模式),编码块所包含的预测块可以共享所决定的预测模式。编码块可以为属于8x8乃至64x64范围的具有任意大小的正方形或者非正方形块,可以为具有128x128、256x256或者其以上大小的正方形或者非正方形块。
具体地,编码块可以基于四叉树(quad tree)、三叉树(triple tree)以及二叉树(binary tree)中的至少一个而分层次被分割。其中,基于四叉树的分割可以是指将2Nx2N编码块分割成四个NxN编码块的方式,基于三叉树的分割可以是指将一个编码块分割成三个编码块的方式,基于二叉树的分割可以是指将一个编码块分割成两个编码块的方式。即便执行了基于三叉树的分割或者基于二叉树的分割,下位深度可以存在正方形编码块。或者,在执行基于三叉树的分割或者基于二叉树的分割之后,也可以在下位深度限制正方形编码块的生成。
基于二叉树的分割,既可以以对称方式执行,也可以以非对称方式执行。基于二叉树分割出的编码块,既可以是正方形块,也可以是如长方形之类的非正方形块。作为一例,允许基于二叉树的分割的分区形态,如图4所示,可以包含对称形(symmetric)的2NxN(水平方向非正方编码单元)或者Nx2N(垂直方向非正方编码单元)、非对称形(asymmetric)的nLx2N、nRx2N、2NxnU或者2NxnD中的至少一个。
基于二叉树的分割,可以限制性地允许对称形或者非对称形态分区中的任意一个。该情况下,将编码树单元构成为正方形块可以相当于四叉树CU分区,将编码树单元构成为对称形非正方形块可以相当于二叉树分区。将编码树单元构成为正方形块和对称形非正方形块可以相当于四叉树以及二叉树CU分区。
基于二叉树的分割,可以对不再执行基于四叉树的分割的编码块执行。对于基于二叉树分割出来的编码块,可以设定成不再执行基于四叉树的分割、基于三叉树的分割或者基于二叉树的分割中的至少一个。
或者,对于基于二叉树分割出来的编码块,可以在允许基于三叉树的分割或者基于二叉树的分割的同时,限制性地仅允许水平方向或者垂直方向的分割中的任意一个。
例如,可以按照基于二叉树分割出来的编码块的位置、索引(index)、形态、相邻分区的追加分割形态等,来对基于二叉树分割出来的编码块限制追加分割或者追加分割方向。作为一例,在将通过基于二叉树的分割而生成的两个编码块中编码顺序处于前面的编码块的索引设为0(下称编码块索引0,并且将编码顺序处于后面的编码块的索引设为1(下称编码块索引1)时,在对编码块索引0或者编码块索引1的编码块均适用基于二叉树的分割的情况下,编码块索引为1的编码块的基于二叉树的分割方向,可以根据编码块索引为0的编码块的基于二叉树的分割方向来决定。具体而言,在编码块索引为0的编码块的基于二叉树的分割方向为将编码块索引为0的编码块分割成正方形分区的情况下,编码块索引为1的编码块的基于二叉树的分割可以被限制成具有与编码块索引为1的编码块的基于二叉树的分割不同的方向。即,可以限制编码块索引0以及编码块索引1的编码块均分割成正方形分区。该情况下,可以省略表示编码块索引为1的编码块的二叉树分割方向的信息的编码/解码。这是因为,编码块索引0以及编码块索引1的编码块均分割成正方形分区,呈现与将上位深度块基于四叉树进行分割相同的效果,允许将编码块索引0以及编码块索引1均分割成正方形分区在编码效率方面并不优选。
基于三叉树的分割表示沿水平或者垂直方向将编码块分割为三个分区。通过基于三叉树的分割而生成的三个分区可以均具有不同的大小。或者,通过基于三叉树的分割而生成的分区中,可以是两个具有相同的大小,剩余一个具有不同的大小。作为一例,随着编码块的分割而生成的分区的宽度比或者高度比,可以沿着分割方向设定为1:n:1,1:1:n,n:1:1或者m:n:1。其中,m和n为1或者大于1的实数,例如可以是2之类的整数。
基于三叉树的分割可以对不再执行基于四叉树的分割的编码块执行。对于基于三叉树而分割出来的编码块,可以被设定为不再执行基于四叉树的分割、基于三叉树的分割或者基于二叉树的分割中的至少一个。
或者,对基于三叉树分割出来的编码块允许基于三叉树的分割或者基于二叉树的分割的同时,限制性地仅允许水平方向或者垂直方向的分割中的任意一个。
例如,可以根据基于三叉树分割出来的编码块的位置、索引、形态、大小、相邻分区的追加分割形态等,来对基于三叉树分割出来的编码块限制追加分割或者追加分割方向。作为一例,对于因基于三叉树的分割而生成的编码块中大小最大的分区,可以限制水平方向分割或者垂直方向分割中的任意一个。具体地,在因基于三叉树的分割而生成的编码块中大小最大的分区有可能不允许与上位深度分区的三叉树分割方向相同的方向的二叉树分割、或相同的方向的三叉树分割方向。该情况下,对于基于三叉树分割的编码块中最大的分区,可省略表示二叉树分割或三叉树分割方向的信息的编码/解码。
可以根据当前块的大小或者形态,限制基于二叉树或者基于三叉树的分割。其中,当前块的大小可以基于当前块的宽度、高度、宽度/高度中最小值/最大值、宽度与高度之和、宽度与高度之积或者当前块所包含的样品数量中的至少一个来表现。作为一例,在当前块的宽度或者高度中的至少一个大于已定义的值的情况下,可以不允许基于二叉树或者基于三叉树的分割。其中,已定义的值可以为16、32、64或者128等整数。作为另一例,在当前块的宽度与高度之比大于已定义的值的情况下或者小于已定义的值的情况下,可以不允许基于二叉树或者基于三叉树的分割。在已定义的值为1的情况下,可以仅针对当前块为宽度和高度相同的正方形块的情况允许基于二叉树或者基于三叉树的分割。
下位深度的分割可以依赖于上位深度的分割形态而决定。作为一例,在两个以上的深度允许基于二叉树的分割的情况下,可以在下位深度仅允许形态与上位深度的二叉树分割形态相同的基于二叉树的分割。例如,在上位深度按照2NxN形态执行了基于二叉树的分割的情况下,可以在下位深度也执行2NxN形态的基于二叉树的分割。或者,在上位深度按照Nx2N形态执行了基于二叉树的分割的情况下,可以在下位深度也允许Nx2N形态的基于二叉树的分割。
相反,在下位深度,可以仅允许形态与上位深度的二叉树分割形态不同的基于二叉树的分割。
针对序列、条带、编码树单元或者编码单元,可以限制它们仅使用特定形态的基于二叉树的分割或者特定形态的基于三叉树的分割。作为一例,可以对编码树单元进行限制而仅允许2NxN或者Nx2N形态的基于二叉树的分割。所允许的分区形态,既可以是事先定义在编码器或者解码器,也可以对与所允许的分区形态或者不允许的分区形态相关的信息进行编码并通过比特流用信号发出(Signaling)。
图5为表示仅允许特定形态的基于二叉树的分割得例子的图。图5的(a)表示限制成仅允许Nx2N形态的基于二叉树的分割的例子,图5的(b)表示限制成仅允许2NxN形态的基于二叉树的分割例子。为了实现基于上述四叉树或者二叉树的适应性分割,可以利用指示基于四叉树的分割的信息、与允许基于四叉树的分割的编码块的大小/深度有关的信息、指示基于二叉树的分割的信息、与允许基于二叉树的分割的编码块的大小/深度有关的信息、与不允许基于二叉树的分割的编码块的大小/深度有关的信息或者与基于二叉树的分割为纵向还是横向有关的信息等。
另外,针对编码树单元或者规定的编码单元,可以获取允许二叉树分割/三叉树分割的次数、允许二叉树分割/三叉树分割的深度或者允许二叉树分割/三叉树分割的深度的个数等。上述信息可以编码成编码树单元或者编码单元单位,并通过比特流传送给解码器。
作为一例,通过比特流,表示允许二叉树分割的最大深度的语法‘ma x_binary_depth_idx_minus1’可以通过比特流编码/解码。该情况下,max_binary_depth_idx_minus1+1可以指代允许二叉树分割的最大深度。
观察图6所示出的例子可以发现,在图6中,针对深度2的编码单元以及深度3的编码单元执行了二叉树分割。由此,表示编码树单元内执行了二叉树分割的次数(两次)的信息、表示编码树单元内允许二叉树分割的最大深度(深度3)的信息或者表示编码树单元内允许二叉树分割的深度的个数(两个,深度2以及深度3)的信息中的至少一个,可以通过比特流编码/解码。
作为另一例子,允许二叉树分割/三叉树分割的次数、允许二叉树分割/三叉树分割的深度或者允许二叉树分割/三叉树分割的深度的个数中的至少一个,可以按照序列、图片或者条带获取。作为一例,上述信息可以被编码成序列、图片或者条带单位后通过比特流传送。或者,按照序列、图片或者条带事先定义允许二叉树分割/三叉树分割的深度或者允许二叉树分割/三叉树分割的深度的个数。由此,第一条带以及第二条带的二叉树/三叉树分割次数、允许二叉树/三叉树分割的最大深度或者允许二叉树/三叉树分割的深度的个数中的至少一个可以不同。作为一例,在第一条带,仅在一个深度允许二叉树分割,相反在第二条带,在两个深度允许二叉树分割。
作为另一其他例子,可以根据条带或者图片的时间级别标识符(TemporalID)将允许二叉树/三叉树分割的次数、允许二叉树/三叉树分割的深度或者允许二叉树/三叉树分割的深度的个数中的至少一个设定为不同。其中,时间级别标识符(TemporalID)是用于识别在视点(view)、空间(spatial)、时间(temporal)、或者画质(quality)中具有至少一个的可扩展性(Scalability)的图像的多个层中的每一个。
如图3所示,分割深度(split depth)为k的第一编码块300可以基于四叉树(quadtree)而分割成多个第二编码块。例如,第二编码块310乃至340可以为具有第一编码块的宽度和高度的一半大小的正方形块,第二编码块的分割深度增加为k+1。
分割深度为k+1的第二编码块310可被分割为分割深度为k+2的多个第三编码块。第二编码块310的分割可以根据分割方式选择性地利用四叉树或者二叉树中的任意一个来执行。其中,分割方式可以基于指示基于四叉树的分割的信息或者指示基于二叉树的分割的信息中的至少一个来决定。
在将第二编码块310基于四叉树分割的情况下,第二编码块310可以被分割成具有第二编码块的宽度和高度的一半大小的四个第三编码块310a,并且第三编码块310a的分割深度增加为k+2。相反,在将第二编码块310基于二叉树分割的情况下,第二编码块310可以被分割成两个第三编码块。此时,两个第三编码块分别为第二编码块的宽度和高度中任意一个为一半大小的非正方形块,并且分割深度增加为k+2。第二编码块可以根据分割方向决定成横向或者纵向的非正方形块,分割方向则可基于与基于二叉树的分割为纵向还是横向有关的信息来决定。
另一方面,第二编码块310可以被决定成不能再基于四叉树或者二叉树分割的末端编码块,该情况下,相应编码块可以作为预测块或者转换块使用。
第三编码块310a可以与第二编码块310的分割相同地决定成末端编码块,或者基于四叉树或者二叉树被进一步分割。
另一方面,基于二叉树分割出来的第三编码块310b还可以基于二叉树进一步分割成纵向的编码块310b-2或者横向的编码块310b-3,并且相应编码块的分割深度增加为k+3。或者,第三编码块310b可以被决定成不再基于二叉树分割的末端编码块310b-1,该情况下,相应编码块310b-1可以作为预测块或者转换块使用。上述的分割过程可以基于与允许基于四叉树的分割的编码块的大小/深度有关的信息、与允许基于二叉树的分割的编码块的大小/深度有关的信息或者与不允许基于二叉树的分割的编码块的大小/深度有关的信息中的至少一个来限制性地执行。
编码块所能具有的大小可以被限制为规定个数,或者规定单位内编码块的大小可以具有固定的值。作为一例,序列内编码块的大小或者图片内编码块的大小可以被限制成256x256、128x128或者32x32。表示序列或者图片内编码块的大小的信息,可以通过序列报头或者图片报头用信号发出。
基于四叉树、二叉树以及三叉树分割的结果,编码单元可以呈正方形或者任意大小的长方形。
可以利用跳过模式、画面内预测、画面间预测或者跳过方法中的至少一种来对编码块进行编码/解码。
作为另一例子,可以通过编码块的分割,而以与编码块相同的大小或者小于编码块的单位执行帧内预测或者帧间预测。为此,当编码块被决定时,可以通过编码块的预测分割来决定预测块(Prediction Block)。编码块的预测分割可以通过表示编码块的分割形态的分区模式(Part_mode)来执行。预测块的大小或者形态可以根据编码块的分区模式来决定。作为一例,根据分区模式而决定的预测块的大小可以具有与编码块的大小相同或小的值。作为一例,根据分区模式决定的预测块的大小可具有与编码块的大小相比相同或小的值。
图7为表示通过画面间预测对编码块进行编码时可适用于编码块的分区模式的图。
在通过画面间预测对编码块进行编码的情况下,如图7的示例所示,可以将8个分区模式中的任意一个适用于编码块。
在通过画面内预测对编码块进行编码的情况下,可以将分区模式PART_2Nx2N或者PART_NxN适用于编码块。
PART_NxN可以在编码块具有最小大小的情况下予以适用。其中,编码块的最小大小可以在编码器以及解码器中事先定义。或者,与编码块的最小大小有关的信息可以通过比特流用信号发出。作为一例,编码块的最小大小可以通过片头用信号发出,因此,可以按照每个条带定义编码块的最小大小。
一般而言,预测块的大小可以具有从64x64到4x4的大小。然而,在通过画面间预测对编码块进行编码的情况下,当执行动作补偿时,为了减小存储部带宽(memorybandwidth),可以使预测块不具有4x4大小。
图8是示出作为应用本发明的一实施例的帧间预测方法的顺序图。
参照图8,可决定当前块的动作信息(S810)。当前块的动作信息可包括关于当前块的动作矢量、当前块的参照图片索引、或当前块的帧间预测方向中的至少一个。
当前块的动作信息可基于与通过比特流用信号发出的信息或当前块相邻的相邻块的动作信息中的至少一个来获取。
图9是示出了在当前块适用合并模式时导出当前块的动作信息的过程的图。
在当前块适用合并模式的情况下,可根据当前块的空间相邻块导出空间合并候选(S910)。空间相邻块可包括与当前块的上端、左侧、或当前块的角(例如,上端左侧角、右侧上端角、或左侧下端角中的至少一个)相邻的块中的至少一个。在此,与当前块的上端相邻的块可包括与当前块的左侧上端样本相邻的块、与上端中央样本相邻的块、或与当前块的右侧上端样本相邻的块中的至少一个,与当前块的左侧相邻的块可包括与当前块的左侧上端样本相邻的块、与左侧中央样本相邻的块、或与当前块的左侧下端样本相邻的块中的至少一个。
可从空间非相邻块导出当前块的空间合并候选。作为一例,可基于和与当前块的上端、右侧上端角、或左侧上端角相邻的块位于相同的垂直线上的块、和与当前块的左侧、左侧下端角、或左侧上端角相邻的块位于相同的水平线上的块、或和与当前块的角相邻的块位于相同的对角线上的块中的至少一个导出当前块的空间合并候选。作为具体的例子,在与当前块相邻的相邻块不能利用为合并候选的情况下,可将与当前块不相邻的块使用为当前块的合并候选。
空间合并候选的动作信息可与空间相邻块的动作信息相同地设定。
可从当前块的时间相邻块导出时间合并候选(S920)。时间相邻块可以为并置图片所包含的同一位置块(co-located block,并置块)。并置图片具有与包含当前块的当前图片不同的时间顺序(Picture Order Count,POC)。并置图片可通过在参照图片列表内具有已定义的索引的图片来决定,或者通过比特流用信号发出的索引来决定。时间相邻块可决定为并置图片内与当前块具有相同的位置及大小的块内的任意的块、或和与当前块具有相同的位置及大小的块相邻的块。作为一例,包含在并置图片内具有与当前块相同的位置及大小的块的中心坐标的块、或与所述块的右侧下端边界相邻的块中的至少一个可决定为时间相邻块。
时间合并候选的动作信息可基于时间相邻块的动作信息来决定。作为一例,时间合并候选的动作矢量可基于时间相邻块的动作矢量来决定。另外,时间合并候选的帧间预测方向可与时间相邻块的帧间预测方向相同地设定。但是,时间合并候选的参照图片索引可具有固定的值。作为一例,时间合并候选的参照图片索引可设定为“0”。
此后,可生成包含空间合并候选及时间合并候选的合并候选列表(S930)。如果,在合并候选列表所包含的合并候选的个数比最大合并候选个数小的情况下,组合了二个以上的合并候选的被组合的合并候选、或具有(0,0)动作矢量(zero motion vector)的合并候选可被包含于合并候选列表。
合并候选可按照已定义的优先顺序包含于合并候选列表。优先顺序越高则分配于合并候选的索引可具有越小的值。作为一例,空间合并候选可比时间合并候选先追加到合并候选列表。另外,空间合并候选可按照左侧相邻块的空间合并候选、上端相邻块的空间合并候选、与右侧上端角相邻的块的空间合并候选、与左侧下端角相邻的块的空间合并候选、及与上端左侧角相邻的块的空间合并候选的顺序追加到合并候选列表。
作为另一例子,还可根据当前块的大小或形态决定合并候选之间的优先顺序。作为一例,在当前块是宽度比高度大的长方形形态的情况下,左侧相邻块的空间合并候选可在上端相邻块的空间合并候选之前追加到合并候选列表。相反,在当前块是高度比宽度大的长方形形态的情况下,上端相邻块的空间合并候选可在左侧相邻块的空间合并候选之前追加到合并候选列表。
作为另一例子,还可根据合并候选各自的动作信息,决定合并候选之间的优先顺序。作为一例,具有双向动作信息的合并候选可具有比具有单向动作信息的合并候选高的优先顺序。由此,具有双向动作信息的合并候选可在具有单向动作信息的合并候选之前追加到合并候选列表。
作为另一例子,在按照已定义的优先顺序生成合并候选列表之后,还可重新排列合并候选。重新排列可基于合并候选的动作信息执行。作为一例,可基于合并候选是否具有双向动作信息、动作矢量的大小、或当前图片与合并候选的参照图片之间的时间顺序(POC)中的至少一个来执行重新排列。具体地,可以以使具有双向动作信息的合并候选比具有单向合并候选的合并候选具有更高的优先顺序的方式执行重新排列。
若生成了合并候选列表,可基于合并候选索引,特定合并候选列表所包含的合并候选中的至少一个(S940)。
当前块的动作信息可与通过合并候选索引特定的合并候选的动作信息相同地设定(S950)。作为一例,在通过合并候选索引选择了空间合并候选的情况下,当前块的动作信息可与空间相邻块的动作信息相同地设定。或者,在通过合并候选索引选择了时间合并候选的情况下,当前块的动作信息可与时间相邻块的动作信息相同地设定。
图10是示出在对前块适用AMVP模式的情况下导出当前块的动作信息的过程的图。
在当前块适用AMVP模式的情况下,可从比特流,解码当前块的帧间预测方向或参照图片索引中的至少一个(S1010)。即,在适用AMVP模式的情况下,当前块的帧间预测方向或参照图片索引中的至少一个可基于通过比特流编码的信息来决定。
可基于当前块的空间相邻块的动作矢量决定空间动作矢量候选(S1020)。空间动作矢量候选可包括从当前块的上端相邻块导出的第一空间动作矢量候选及从当前块的左侧相邻块导出的第二空间动作矢量候选中的至少一个。在此,上端相邻块可包括与当前块的上端或上端右侧角相邻的块中的至少一个,当前块的左侧相邻块可包括与当前块的左侧或左侧下端角相邻的块中的至少一个。与当前块的左侧上端角相邻的块可被视为上端相邻块,或还可被视为左侧相邻块。
在当前块与空间相邻块之间的参照图片不同的情况下,还可通过缩放空间相邻块的动作矢量来获取空间动作矢量。
可基于当前块的时间相邻块的动作矢量决定时间动作矢量候选(S1030)。在当前块与时间相邻块之间的参照图片不同的情况下,还可通过缩放时间相邻块的动作矢量获取时间动作矢量。
可生成包含空间动作矢量候选及时间动作矢量候选的动作矢量候选列表(S1040)。
若生成出动作矢量候选列表,可基于特定动作矢量候选列表中的至少一个的信息,特定动作矢量候选列表所包含的动作矢量候选中的至少一个(S1050)。
可将通过所述信息特定的动作矢量候选设定为当前块的动作矢量预测值,并对动作矢量预测值加上动作矢量差分值来获取当前块的动作矢量(S1060)。此时,可通过比特流解析动作矢量差分值。
若获取到当前块的动作信息,可基于所获取的动作信息,执行对当前块的动作补偿(S820)。具体地,可基于当前块的帧间预测方向、参照图片索引、及动作矢量,执行对当前块的动作补偿。
帧间预测还可以以子块单位执行。具体地,可将当前块分割为多个子块,以子块单位决定动作信息。然后,可基于决定的动作信息以子块单位执行动作补偿。
是否是否以子块单位执行画面间预测,可基于当前块的大小、形态、或图像的分辨率中的至少一个来决定。作为一例,在编码块的大小比已定义的大小大的情况下,可将编码块分为规定大小的子块,以子块单位执行动作补偿。或者,将表示是否可以以子块单位动作补偿的信息进行编码来向解码器传送。所述信息可向块单位(例如,编码单元或编码数单元)或条带单位传送。
在设定为以子块单位执行动作补偿的情况下,当前块可分割为规定大小/形态的子块。在此,子块的大小及形态可以是已在编码器及解码器定义的。作为一例,可以以4x4大小的子块单位执行动作补偿。
或者,还可根据当前块的大小或形态适应性地决定子块的大小或形态。例如,可在64x64以上的编码块以8x8大小的子块单位执行动作补偿,在比64x64小的编码块以4x4大小的子块单位执行动作补偿。或者,还可将表示子块的大小或形态的信息进行编码来向解码器传送。
为了以子块单位导出动作信息可利用ATMVP(Alternative Temporal MotionVector Prediction)或STMVP(Spatial Temporal Motion Vector Prediction)模式。
图11是用于说明基于ATMVP以子块单位导出动作矢量的方法的图。
ATMVP是决定与当前块对应的参照图片内对应块(corresponding block)并利用决定的对应块按照各子块获取动作信息的方法。参照图片及对应块可基于相邻块的动作信息来导出。作为一例,可利用特定位置的空间相邻块的动作信息或当前块的合并候选列表所包含的第一个合并候选的动作信息,决定参照图片及对应块。为了决定参照图片及对应块而使用的相邻块的动作矢量及参照图片索引可分别定义为时间矢量及动作源图片索引。可基于时间矢量及源图片索引,决定当前块的对应块,并将决定的对应块分割为与当前块相同地子块。然后,可将与当前块内的子块对应的对应块内的子块的动作信息作为相应子块的动作信息导出。
图12用于说明基于STMVP以子块单位导出动作矢量的方法的图。
STMVP是利用各子块的空间相邻块及时间相邻块获取动作信息的方法。具体地,可从与子块的上端相邻的空间相邻块、与子块的左侧相邻的空间相邻块、或子块的时间相邻块中的至少一个导出动作矢量,并利用导出的至少一个动作信息执行子块的动作补偿。
作为一例,在图12示出的例子中,子块A的动作矢量可基于与子块A的上端相邻的块c、与子块A的左侧相邻的块b、及子块的时间相邻块中能够利用的至少一个动作矢量来导出。具体地,可基于块c、块b及时间相邻块中能够利用的动作矢量的平均值导出子块A的动作矢量,或者可将块c、块b及时间相邻块中能够利用的某一个作为子块A的动作矢量导出。
在使用STMVP的情况下,可按照规定的顺序按照子块执行动作补偿。作为一例,在图12示出的例子中,可按照光栅扫描顺序子块A、B、C、D的顺序执行动作补偿。子块的动作补偿还可按照垂直扫描、水平扫描、或对角方向扫描顺序执行。
由于以块单位执行动作补偿,在块边界有可能发生因块伪影(BlockingArtifact)产生的画质劣化。为了减少因块伪影的发生而产生的画质劣化,可对执行了动作补偿的块执行块重叠动作补偿(Overlapped Block Motion Compensation,OBMC)(S830)。
是否执行块重叠动作补偿,可基于当前块的大小、形态、帧间预测模式、动作信息(例如,动作矢量的大小或当前图片与参照图片之间的时间距离(POC))、或图像分辨率中的至少一个来决定(第一实施例)。作为一例,在当前块所包含的样本的个数比已定义的值大的情况下,执行块重叠动作补偿。
或者,表示是否执行块重叠动作补偿的信息可通过比特流用信号发出(第二实施例)。所述信息可在图片、条带、或块(例如,编码块或预测块)级别用信号发出。
或者,可决定是否组合所述第一实施例与所述第二实施例来执行块重叠动作补偿。作为一例,可限于在当前块的大小为已定义的大小以上的情况、或当前块的帧间预测模式为已定义的模式(例如,合并模式或AMVP模式)的情况,来将表示是否执行块重叠动作补偿的标志用信号发出。
块重叠动作补偿可以以编码块、通过对所述编码块执行动作补偿来所生成的预测块、或以规定大小的子块单位执行。在动作补偿以编码块单位执行,并且块重叠动作补偿以子块单位执行的情况下,编码块内的子块的动作信息可与编码块的动作块相同地设定。
为了以子块单位执行块重叠动作补偿,可将当前块分割为多个子块。此时,子块的大小及形态可以是已在编码器及解码器定义的。作为一例,可将4x4大小的正方形块定义为子块。或者,还可以以线单位(例如,至少一个以上的列及/或至少一个以上的行)定义子块。
或者,在以子块单位执行动作补偿的情况下,可与执行了动作补偿的子块相同地设定要执行块重叠动作补偿的子块。
或者,可根据当前块的大小、形态、或样本数量适应性地决定子块的大小或形态。例如,在64x64以上的预测块可以以8x8大小的子块单位执行块重叠动作补偿,在比64x64小的预测块可以以4x4大小的子块单位执行块重叠动作补偿。
或者,还可将表示子块的大小或形态的信息进行编码来向解码器传送。
为了方便说明,在后述的实施例中,假设以子块单位执行块重叠动作补偿。另外,将作为动作补偿的执行结果(即,S820步骤的执行结果)生成的预测块称为“第一预测块”,将作为在第一预测块适用了块重叠动作补偿的结果(即,S830步骤的执行结果)生成的预测块称为“第二预测块”。另外,将第一预测块所包含的预测样本称为“第一预测样本”,将第二预测块所包含的预测样本称为“第二预测样本”。另外,将作为块重叠动作补偿的执行对象的子块称为“当前子块”。
块重叠动作补偿可基于预测块间加权预测或预测样本间加权预测来执行。此时,执行块重叠动作补偿所利用的多个预测块或多个样本中的至少一个可以是当前子块的周边块或周边块所包含的样本,或者可以是根据基于周边块的动作信息生成的预测块或周边块的动作信息来生成的预测块所包含的预测样本。
作为一例,多个预测块/预测样本可包括与当前子块的左侧相邻的预测块P
所述相邻预测块或所述相邻预测块内预测样本可以是基于相邻子块的动作信息生成的。作为一例,左侧预测块P
当前子块的第二预测块/第二预测样本可基于与当前子块的第一预测块/第一预测样本相邻预测块/相邻预测块所包含的预测样本之间的加权预测来获取。作为一例,当前子块的第二预测块可基于与当前子块的第一预测块与和当前子块的左侧、右侧、上端、或下端相邻的预测块中的至少一个之间的加权预测来获取。在相邻预测块是基于周边块的动作信息生成的块的情况下,当前子块的第二预测块可以是通过基于当前子块的动作信息特定的参照块(即,第一预测块)与基于周边块的动作信息特定的参照块之间的加权和运算来生成的。
块重叠动作补偿可适用于当前块所包含的所有的子块,还可仅适用当前块所包含的子块中一部分。作为一例,可仅对与当前块所包含的子块中的规定边界相邻的块执行块重叠动作补偿。在此,规定边界可表示与已完成编码/解码的块相邻的边界。作为一例,根据编码/解码顺序、或根据当前块的大小或形态,规定边界可包括上端边界、左侧边界、右侧边界、或下端边界中的至少一个。
适用块重叠动作补偿的子块的范围可基于当前块的大小、形态、帧间预测模式、动作补偿的执行单位、或动作信息中的至少一个来决定。作为一例,在执行了以编码块单位帧间预测的情况下(例如,利用了跳过模式、合并模式、或AMVP模式的情况下),仅当前块的一部分子块可决定为块重叠动作补偿适用对象。相反,在执行了以子块单位帧间预测的情况下(例如,利用了ATMVP或STMVP模式的情况下),当前块内所有的子块可决定为块重叠动作补偿的适用对象。
或者,表示适用块重叠动作补偿的子块的范围的信息可通过比特流用信号发出。所述信息可包括表示对所有的子块是否可适用块重叠动作补偿的信息、或表示与适用块重叠动作补偿的子块相邻的边界的位置的信息中的至少一个。
或者,可根据是否存在可用的相邻子块来决定适用块重叠动作补偿的子块的范围。相邻子块的可用性可基于相邻子块是否具有与当前子块相同的动作信息、相邻子块的帧间预测模式、相邻子块的位置、相邻子块是否以帧间预测编码、是否存在相邻子块、或相邻子块是否已被编码/解码等来决定。作为一例,与当前子块具有相同的动作信息的相邻子块可决定为不可用。在此,相同的动作信息可表示动作矢量、参照图片索引、双向预测指示符中的至少一个相同。另外,相同的动作信息可表示第一方向动作信息及第二方向动作信息均相同的情况、第一方向动作信息及第二方向动作信息中某一个相同的情况。或者,在相邻子块未以帧间预测编码的情况、相邻子块不存在的情况、相邻子块尚未被编码/解码的情况、或相邻子块包含于与当前子块不同的编码数块或不同的条带(或带)的情况等下,可决定为相邻子块不能利用于块重叠动作补偿。
由此,在当前块内所有的子块的动作信息相同的情况下,针对除了位于当前块的上端边界及/或左侧边界的子块之外的子块,在周边不存在可用的相邻子块,有可能不能被执行重叠的动作补偿。
图13是用于说明执行重叠的块动作补偿所利用到的相邻预测块的图。
图13的(a)示出限于位于当前块的规定边界的子块执行块重叠动作补偿的例子,图13的(b)示出对当前块内所有的子块执行块重叠动作补偿的例子。
如图13的(a)示出的例子,可对与当前块的左侧边界相邻的子块及/或与上端边界相邻的子块执行块重叠动作补偿。作为一例,如图13的(a)示出的例子,对于与当前块的上端边界相邻的子块(例如,子块P
另一方面,对于与当前块的左侧上端角相邻的子块(例如,子块P
如图13的(b)示出的例子,还对块内所有的子块执行块重叠动作补偿。作为一例,如图13的(b)示出的例子,可利用子块(例如,子块PN)的左侧预测块P
相邻子块中不可用的相邻子块或从其导出的预测块可不利用于当前子块的块重叠动作补偿的执行。作为一例,从与当前子块具有相同的动作信息的相邻子块导出的预测块可决定为不能利用于块重叠动作补偿。
在当前子块周边存在可用的多个相邻预测块的情况下,当前子块的第二预测块/第二预测样本可通过将当前块的第一预测块/第一预测样本和可用的多个相邻预测块/相邻预测样本所包含的相邻预测样本依次进行加权预测来获取。即,可通过将第一预测样本及相邻预测块所包含的多个预测样本中某一个进行加权预测来生成临时预测样本之后,通过将所生成的临时预测样本和剩余预测样本递归性地进行加权预测来获取第二预测样本。这样,可将通过递归性地加权预测第一预测样本及多个预测块所包含的预测样本来执行块重叠动作补偿的处理定义为递归性块重叠动作补偿(recursive OBMC)。
与递归性块重叠动作补偿对应的多个预测块之间的加权预测顺序可以是已在编码器及解码器定义的。作为一例,可以以当前子块的左侧预测块P
加权预测可利用加权参数执行。加权参数可包括加权值或偏移中的至少一个。在此,加权值表示用于乘以利用于加权预测的预测样本中的至少一个的值,偏移表示用于加适用了加权和的结果的值。
加权值及/或偏移可根据预测对象样本的位置(例如,x轴位置或y轴位置中的至少一个)适应性地决定。作为一例,在利用与当前子块位于相同的水平线上的相邻预测块执行加权预测的情况下,可通过考虑预测对象样本的x轴位置来决定加权值及/或偏移。相反,在利用与当前子块位于相同的垂直线上的相邻预测块执行加权预测的情况下,可通过考虑预测对象样本的y轴位置来决定加权值及/或偏移。
作为一例,下述数学式1至数学式4表示将第一预测样本及相邻预测块所包含的预测样本递归性地执行加权预测来生成第二预测样本的数学式。
[数学式1]
P
P
P
P
如所述数学式1所示,可基于第一预测样本P
[数学式2]
P
P
P
P
如所述数学式2所示,可基于第一临时预测样本P
[数学式3]
P
P
P
P
如所述数学式3所示,可基于第二临时预测样本P
[数学式4]
P
P
P
P
如所述数学式4所示,可基于第三临时预测样本P
多个预测块之间的加权预测顺序可根据当前块或当前子块的大小、形态、动作信息、或位置等来可变地决定。作为一例,在当前块是宽度比高度长的长方形的情况下,可以以当前子块的上端预测块P
或者,表示多个预测块之间的加权预测顺序的信息可通过比特流用信号发出。所述信息在图片、条带、或块级别用信号发出。
在数学式1至数学式4中说明了利用四个的相邻预测块递归性执行块重叠动作补偿的情况,但还可根据当前块的大小、形态、动作信息、动作补偿的执行单位、或周边块的可用性等仅利用一部分相邻预测块来执行递归性块重叠动作补偿。
在适用递归性块重叠动作补偿的情况下,会发生根据周边预测块的加权预测顺序而第二预测样本的值变得不同的问题。另外,在特定时间临时预测样本的大小变大的情况下,会发生与所述临时预测样本加权预测的周边预测块的预测样本不对加权和运算产生大的影响的问题。同时,随着执行加权预测,还因第二预测样本的大小变得过大而会发生预测图像的画质劣化。
为了消除这样的问题,可考虑将与当前块设定为水平方向的预测块执行加权预测并将与当前块位于垂直方向的预测块执行加权预测的分离式块重叠动作补偿(SeparableOBMC),以替代将当前块及预测块依次执行加权预测。
分离式块重叠动作补偿可包括水平方向加权预测及垂直方向加权预测。水平方向加权预测表示当前子块及与当前子块位于相同的水平线上的至少一个相邻预测块之间的加权预测,垂直方向加权预测表示当前子块及与当前子块位于相同的垂直线上的至少一个相邻预测块之间的加权预测。作为一例,水平方向加权预测可利用当前子块的左侧预测块或右侧预测块中的可用的至少一个来执行,垂直方向加权预测利用当前子块的上端预测块或下端预测块中可用的至少一个来执行。
加权预测可利用加权参数执行。加权参数可包括加权值或偏移中的至少一个。在此,加权值表示用于乘以利用于加权预测的预测样本中的至少一个的值,偏移表示用于加适用了加权和的结果的值。
加权值及/或偏移可根据预测对象样本的位置(例如,x轴位置或y轴位置中的至少一个)适应性地决定。作为一例,在执行水平方向加权预测时,可通过考虑预测对象样本的x轴位置来决定加权值及/或偏移。相反,在执行垂直方向加权预测时,可通过考虑预测对象样本的y轴位置来决定加权值及/或偏移。
分离式块重叠动作补偿可按照已定义的顺序执行。作为一例,可在执行了水平方向加权预测之后,执行垂直方向加权预测。分离式块重叠动作补偿的执行顺序可以是一编码器及解码器定义的。
或者,可基于当前块的大小、形态、帧间预测模式、动作信息,动作补偿执行单位等来决定执行顺序。作为一例,在当前块是宽度比高度大的长方形的情况下,水平方向加权预测可先于垂直方向加权预测执行。相反,在当前块是高度比宽度大的长方形的情况下,垂直方向加权预测可先于水平方向加权预测执行。
或者,表示分离式块重叠动作补偿的执行顺序的信息可通过比特流用信号发出。所述信息可在图片、条带、或块级别用信号发出。
下述的数学式5及数学式6是示出了以水平方向加权预测及垂直方向加权预测的顺序执行块重叠动作补偿的例子。
[数学式5]
P
P
P
P
如数学式5所示,可基于第一预测样本P
[数学式6]
P
P
P
P
若获取到水平方向块重叠预测样本P
下述的数学式7及数学式8示出了以垂直方向加权预测及水平方向加权预测的顺序执行块重叠动作补偿的例子。
[数学式7]
P
P
P
P
P
P
P
P
如数学式7所示,可基于第一预测样本Pc、上端预测块所包含的预测样本PA、及下端预测块所包含的预测样本PB的加权和运算来生成垂直方向块重叠预测样本P
[数学式8]
P
P
P
P
P
P
P
P
若获取到垂直方向块重叠预测样本P
在上述的例子中,说明了以规定顺序执行水平方向加权预测及垂直方向加权预测的情况。作为另一例子,还可并行地执行水平方向加权预测及垂直方向加权预测。作为一例,在通过水平方向加权预测获取到水平方向块重叠预测样本P
还可仅利用水平方向加权预测及垂直方向加权预测中的某一个来执行块重叠动作补偿。作为一例,可基于当前块的大小、形态、帧间预测模式、动作信息、相邻子块的可用性、或第一预测对象样本的位置,决定是否执行水平方向加权预测及/或垂直方向加权预测。
在通过块重叠动作补偿获取到第二预测样本时,可基于第二预测样本来重建当前块。具体地,可通过将第二预测样本与残余样本加起来获取当前块的重建样本。
上述的实施例基于一系列步骤或者顺序图来进行说明,但这并非限定发明的时间序列,可以根据需要同时执行或者按照其他顺序执行。此外,在上述的实施例中构成框图的构成要素(例如,单元、模块等)每一个既可以由硬件装置或者软件来实现,也可以通过多个构成要素的结合而由一个硬件装置或者软件来实现。上述的实施例可由能够通过多种计算机构成要素来执行的程序指令形态来实现并存储于计算机可读取存储介质中。上述计算机可读取存储介质可以以单独方式或者组合方式包含程序指令、数据文件、数据结构等。作为计算机可读取存储介质的示例,包括硬盘、软盘以及磁带之类的磁介质、CD-ROM、DVD之类的光存储介质、光磁盘(floptical disk)之类的光磁介质(magneto-optical media)、以及ROM、RAM、闪存等之类的以存储程序指令并予以执行的方式特别构成的硬件装置。上述硬件装置为了执行本发明所涉及的处理而可以构成为作为一个以上的软件模块运转,反之也一样。
此外,根据本公开的实施例,提供了下述配置1-15。
1.一种图像解码方法,其特征在于,包括:
获取对当前块的动作信息的步骤;
通过基于所述动作信息执行动作补偿,获取对所述当前块内的第一子块的第一预测块的步骤;以及
通过对所述第一子块执行块重叠动作补偿来获取第二预测块的步骤。
2.根据配置1所述的图像解码方法,其特征在于,
所述第二预测块是通过对所述第一预测块及与对所述第一子块相邻的至少一个相邻子块的预测块亦即相邻预测块执行加权预测来获取的。
3.根据配置1所述的图像解码方法,其特征在于,
所述加权预测包括:利用与所述第一子块放置于相同的水平线上的至少一个相邻子块执行的水平方向加权预测、以及利用与所述第一子块放置于相同的垂直线上的至少一个相邻子块执行的垂直方向加权预测。
4.根据配置3所述的图像解码方法,其特征在于,
所述水平方向加权预测及所述垂直方向加权预测按照已定义的顺序依次执行。
5.根据配置2所述的图像解码方法,其特征在于,
适用于所述第一预测块及所述相邻预测块的加权值根据所述第一预测块内的预测对象样本的位置被可变地决定。
6.根据配置2所述的图像解码方法,其特征在于,
根据是否是从具有与所述第一子块相同的动作信息的相邻预测块导出的,决定所述相邻预测块的可用性。
7.根据配置1所述的图像解码方法,其特征在于,
所述第二预测块是对所述第一预测块及对与所述第一子块相邻的相邻子块的预测块亦即相邻预测块递归性地进行加权预测来获取的。
8.根据配置7所述的图像解码方法,其特征在于,
各所述相邻预测块的加权预测顺序是所述当前块的大小、形态、帧间预测模式、或所述第一子块的位置中的至少一个来决定的。
9.根据配置1所述的图像解码方法,其特征在于,
所述块重叠动作补偿仅适用于所述当前块内的与规定边界相邻的子块。
10.根据配置1所述的图像解码方法,其特征在于,
是否执行所述块重叠动作补偿基于所述当前块的大小、形态、帧间预测模式、动作信息、或图像分辨率中的至少一个来决定。
11.一种图像解码方法,其特征在于,包括:
获取对当前块的动作信息的步骤;
通过基于所述动作信息执行动作补偿,获取对所述当前块内的第一子块的第一预测块的步骤;以及
通过对所述第一子块执行块重叠动作补偿来获取第二预测块的步骤。
12.根据配置11所述的图像解码方法,其特征在于,
所述第二预测块是通过对所述第一预测块及与对所述第一子块相邻的至少一个相邻子块的预测块亦即相邻预测块执行加权预测来获取的。
13.根据配置11所述的图像解码方法,其特征在于,
所述加权预测包括:利用与所述第一子块放置于相同的水平线上的至少一个相邻子块执行的水平方向加权预测、以及利用与所述第一子块放置于相同的垂直线上的至少一个相邻子块执行的垂直方向加权预测。
14.一种图像解码装置,其特征在于,
包括帧间预测部,该帧间预测部获取对当前块的动作信息,并通过基于所述动作信息执行动作补偿,来获取对所述当前块内的第一子块的第一预测块,并通过对所述第一子块执行块重叠动作补偿来获取第二预测块。
15.一种图像解码装置,其特征在于,
包括帧间预测部,该帧间预测部获取对当前块的动作信息,并通过基于所述动作信息执行动作补偿,来获取对所述当前块内的第一子块的第一预测块,并通过对所述第一子块执行块重叠动作补偿来获取第二预测块。
工业可利用性
本发明可适用于能够对图像进行编码/解码的电子装置。
- 一种视频编码方法、解码方法、装置及电子设备
- 一种视频图像的编码方法和装置
- 运动向量推断方法、多视点视频编码方法、多视点视频解码方法、运动向量推断装置、多视点视频编码装置、多视点视频解码装置、运动向量推断程序、多视点视频编码程序及多视点视频解码程序
- 视频编码装置、视频编码方法、视频编码程序、视频解码装置、视频解码方法以及视频解码程序