一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

图像解码装置、图像解码方法及程序与流程

2022-04-02 16:11:21 来源:中国专利 TAG:

图像解码装置、图像解码方法及程序
[技术领域]
[0001]
本发明涉及一种图像解码装置、图像解码方法及程序。
[

背景技术:
]
[0002]
以往,关于bdof(bi-directional optical flow,双向光流)技术,已知使用两个参考帧的像素值来生成预测信号的方法。并且,作为bdof的块单位的应用条件,已知具有如下条件的方法:两个参考帧中的任一个与该帧相比为后续的帧,另一个与该帧相比为过去的帧(例如,参考非专利文献1)。
[0003]
[现有技术文献]
[0004]
非专利文献
[0005]
非专利文献1:versatile video coding(draft 6),jvet-n1001
[

技术实现要素:
]
[0006]
发明要解决的课题
[0007]
然而,非专利文献1的bdof处理是在对两个参考帧间的各自的像素值及根据像素值算出的梯度等的各自的值进行运算(例如,相互加减运算)时,使用均等的权重进行计算。该处理是隐含地假设该帧与后续方向的参考帧的时间距离的绝对值等于该帧与过去方向的参考帧的时间距离的绝对值。另一方面,在bdof的应用条件中,未考虑参考帧间的时间距离。
[0008]
因此,本发明是鉴于上述问题而完成的,其目的在于提供一种图像解码装置、图像解码方法及程序,能够根据bdof处理内的运算中各参考帧的像素值的权重,在bdof的应用条件中设置和参考帧与该帧的距离相关的条件。
[0009]
用于解决课题的手段
[0010]
本发明的第一特征的主旨在于一种图像解码装置,包括:预测信号生成部,构成为针对每个块判断是否满足bdof处理的应用条件,当判断出满足所述应用条件时,执行所述bdof处理,并生成预测信号,在所述bdof处理中,基于使用两个参考帧各自的像素值或根据所述像素值算出的各自的值进行运算时的权重系数,在所述应用条件中包括和两个参考帧与该帧的时间距离相关的条件。
[0011]
本发明的第二特征的主旨在于一种图像解码装置,包括:预测信号生成部,构成为进行bdof处理;及仿射预测信号生成部,构成为进行prof处理;并且,当所述prof处理应用于两个参考帧时,使由所述预测信号生成部进行的所述bdof处理中的梯度算出处理、与由所述仿射预测信号生成部进行的所述prof处理中的梯度算出处理为相同的处理。
[0012]
本发明的第三特征的主旨在于一种图像解码方法,针对每个块判断是否满足bdof处理的应用条件,当判断出满足所述应用条件时,执行所述bdof处理,并生成预测信号,在所述bdof处理中,基于使用两个参考帧各自的像素值或根据所述像素值算出的各自的值进行运算时的权重系数,在所述应用条件中包括和两个参考帧与该帧的时间距离相关的条
件。
[0013]
本发明的第四特征的主旨在于一种程序,使计算机作为图像解码装置发挥功能,所述图像解码装置针对每个块判断是否满足bdof处理的应用条件,当判断出满足所述应用条件时,执行所述bdof处理,并生成预测信号,在所述bdof处理中,基于使用两个参考帧各自的像素值或根据所述像素值算出的各自的值进行运算时的权重系数,在所述应用条件中包括和两个参考帧与该帧的时间距离相关的条件。
[0014]
发明的效果
[0015]
根据本发明,可以提供一种图像解码装置、图像解码方法及程序,能够通过考虑到bdof处理内的各参考帧的像素值的权重,在bdof的应用条件中设置和参考帧与该帧的时间距离相关的条件,而仅在具有与bdof处理内的运算相匹配的参考帧结构的块中应用bdof,从而防止编码効率降低。
[0016]
[附图的简单说明]
[0017]
图1是示出一实施方式的图像处理系统10的构成的一个例子的图。
[0018]
图2是示出一实施方式的图像编码装置100的功能块的一个例子的图。
[0019]
图3是示出从一实施方式的图像编码装置100的编码部140输出的编码后数据(比特流)的构成的一个例子的图。
[0020]
图4是示出图3所示的sps 141内包含的控制数据的一个例子的图。
[0021]
图5是示出图3所示的切片头部143a中包含的控制数据的一个例子。
[0022]
图6是示出一实施方式的图像编码装置100的帧间预测部111的功能块的一个例子的图。
[0023]
图7是示出一实施方式的图像编码装置100的帧间预测部111的细化部111c的处理顺序的一个例子的流程图。
[0024]
图8是示出一实施方式的图像编码装置100的帧间预测部111的预测信号生成部111d的处理顺序的一个例子的流程图。
[0025]
图9是示出一实施方式的图像编码装置100的帧间预测部111的仿射运动矢量算出部111e的处理顺序的一个例子的流程图。
[0026]
图10是用于说明一实施方式的图像编码装置100的帧间预测部111的仿射运动矢量算出部111e的处理顺序的一个例子的图。
[0027]
图11是示出一实施方式的图像编码装置100的帧间预测部111的仿射预测信号生成部111f的处理顺序的一个例子的流程图。
[0028]
图12是示出一实施方式的图像编码装置100的环路滤波处理部150的功能块的一个例子的图。
[0029]
图13是用于说明一实施方式的图像编码装置100的环路滤波处理部150的边界强度判断部153(153a/153b)的处理顺序的图。
[0030]
图14是示出一实施方式的图像解码装置200的功能块的一个例子的图。
[0031]
图15是示出一实施方式的图像解码装置200的帧间预测部241的功能块的一个例子的图。
[0032]
图16是示出一实施方式的图像解码装置200的环路滤波处理部250的功能块的一个例子的图。
[0033]
图17是用于说明变更例1的图。
[0034]
图18是用于说明变更例1的图。
[0035]
图19是用于说明变更例2的图。
[0036]
图20是用于说明变更例2的图。
[具体实施方式]
[0037]
下面,参考附图对本发明的实施方式进行说明。另外,下述实施方式中的构成要素可以适当地与现有的构成要素等进行置换,并且,可以进行包括与其他现有的构成要素的组合在内的各种变形。因此,不应以下述实施方式的记载来限定权利要求书所记载的发明内容。
[0038]
(第一实施方式)
[0039]
下面,参考图1至图16对本发明的第一实施方式的图像处理系统10进行说明。图1是示出本实施方式的图像处理系统10的图。
[0040]
如图1所示,图像处理系统10包括图像编码装置100及图像解码装置200。
[0041]
图像编码装置100构成为通过对输入图像信号进行编码来生成编码数据。图像解码装置200构成为通过对编码数据进行解码来生成输出图像信号。
[0042]
此处,该编码数据可以经由传输路径从图像编码装置100发送至图像解码装置200。并且,编码数据也可以在存储至存储介质后,从图像编码装置100提供至图像解码装置200。
[0043]
(图像编码装置100)
[0044]
下面,参考图2对本实施方式的图像编码装置100进行说明。图2是示出本实施方式的图像编码装置100的功能块的一个例子的图。
[0045]
如图2所示,图像编码装置100包括帧间预测部111、帧内预测部112、减法器121、加法器122、变换及量化部131、逆变换及逆量化部132、编码部140、环路滤波处理部150及帧缓冲器160。
[0046]
帧间预测部111构成为通过帧间预测(interframe prediction)来生成预测信号。
[0047]
具体来说,帧间预测部111构成为通过对编码对象的帧(以下称为对象帧)与存储在帧缓冲器160中的参考帧进行比较,来指定参考帧中包含的参考块,并确定所指定的参考块的运动矢量。
[0048]
并且,帧间预测部111构成为基于参考块及运动矢量,针对每个预测块生成预测块中包含的预测信号。帧间预测部111构成为将预测信号输出至减法器121及加法器122。此处,参考帧是与对象帧不同的帧。
[0049]
帧内预测部112构成为通过帧内预测(intraframe prediction)来生成预测信号。
[0050]
具体来说,帧内预测部112构成为指定对象帧中包含的参考块,并基于所指定的参考块,针对每个预测块生成预测信号。并且,帧内预测部112构成为将预测信号输出至减法器121及加法器122。
[0051]
此处,参考块是预测对象的块(以下称为对象块)所参考的块。例如,参考块是与对象块相邻的块。
[0052]
减法器121构成为从输入图像信号中减去预测信号,并将预测残差信号输出至变
换及量化部131。此处,减法器121构成为生成通过帧内预测或帧间预测所生成的预测信号与输入图像信号的差分即预测残差信号。
[0053]
加法器122构成为将预测信号与从逆变换及逆量化部132输出的预测残差信号相加来生成滤波处理前解码信号,并将该滤波处理前解码信号输出至帧内预测部112及环路滤波处理部150。
[0054]
此处,滤波处理前解码信号构成帧内预测部112中使用的参考块。
[0055]
变换及量化部131构成为进行预测残差信号的变换处理,且获取系数等级值。此外,变换及量化部131也可以构成为进行系数等级值的量化。
[0056]
此处,变换处理是将预测残差信号变换为频率成分信号的处理。在该变换处理中,可以使用与离散余弦变换(dct,discrete cosine transform)对应的基模型(变换矩阵),也可以使用与离散正弦变换(dst,discrete sine transform)对应的基模型(变换矩阵)。
[0057]
逆变换及逆量化部132构成为进行从变换及量化部131输出的系数等级值的逆变换处理。此处,逆变换及逆量化部132也可以构成为在逆变换处理之前进行系数等级值的逆量化。
[0058]
此处,逆变换处理及逆量化是按照与由变换及量化部131进行的变换处理及量化相反的顺序进行。
[0059]
编码部140构成为对从变换及量化部131输出的系数等级值进行编码,并输出编码数据。
[0060]
此处,例如编码是基于系数等级值的产生概率来分配不同长度的代码的熵编码。
[0061]
并且,编码部140构成为不仅对系数等级值进行编码,还对解码处理中使用的控制数据进行编码。
[0062]
此处,控制数据可以包括编码块(cu,coding unit)尺寸、预测块(pu,prediction unit)尺寸、变换块(tu,transform unit)尺寸等尺寸数据。
[0063]
环路滤波处理部150构成为对从加法器122输出的滤波处理前解码信号进行滤波处理,且将滤波处理后解码信号输出至帧缓冲器160。
[0064]
此处,例如滤波处理是减少在块(编码块、预测块或变换块)的边界部分产生的失真的解块滤波处理。
[0065]
帧缓冲器160构成为存储帧间预测部111中使用的参考帧。
[0066]
此处,滤波处理后解码信号构成帧间预测部111中使用的参考帧。
[0067]
(编码部140)
[0068]
下面,使用图3至图5对由编码部140编码的控制数据进行说明。图3是从编码部140输出的编码后数据(比特流)的构成例。
[0069]
首先,该比特流可以在开头包含sps(sequence parameter set,序列参数集)141。sps 141是以序列(图片的集合)为单位的控制数据的集合。具体示例将在下文叙述。各sps 141至少包含在有多个sps 141时用于识别各sps 141的id信息。
[0070]
该比特流也可以在sps 141后面包含pps(picture parameter set,图片参数集)142。pps 142是以图片(切片的集合)为单位的控制数据的集合。各pps 142至少包含在有多个sps 141时用于识别各sps 141的id信息。并且,各pps 142至少包含用于指定与各pps 142对应的sps 141的sps id信息。
[0071]
该比特流也可以在pps 142后面包含切片头部143a。切片头部143a是以切片为单位的控制数据的集合。具体示例将在下文叙述。各切片头部143a至少包含用于指定与各切片头部143a对应的pps 142的pps id信息。
[0072]
该比特流也可以在切片头部143a后面包含切片数据144a。切片数据144a可以包含上述系数等级值及尺寸数据等。
[0073]
如上所述,为如下构成:各有一个切片头部143a/143b、pps 142、sps 141与各切片数据144a/144b对应。如上所述,在切片头部143a/143b中,由pps id信息来指定参考哪一pps 142,在该pps 142中,进一步由sps id信息来指定参考哪一sps 141,因此,可以对多个切片数据144a/144b使用共同的sps 141及pps 142。
[0074]
换句话说,不必针对每个切片数据144a/144b均传输sps 141及pps 142。例如,如图3所示,也可以为如下流构成:在切片头部143b及切片数据144b之前,不对sps 141及pps 142进行编码。
[0075]
另外,图3的构成只是一个例子。若为由切片头部144a/144b、pps 142、sps 141指定的控制数据与各切片数据144a/144b对应的构成,则还可以追加除上述以外的要素作为流的构成要素。并且,同样地,也可以在传输时整形为与图3不同的构成。
[0076]
图4是示出sps 141内包含的控制数据的一个例子的图。
[0077]
如上所述,sps 141至少包含用于识别各sps 141的id信息(sps_seq_parameter_set_id)。
[0078]
sps 141也可以包含用于对可否使用(有效、无效)下述bdof(bi-directional optical flow)处理进行控制的标志“sps_bdof_enabled_flag”。当该标志的值为“0”时,表示在与该sps 141对应的切片内不使用bdof处理。另一方面,当该标志的值为“1”时,表示在与sps 141对应的切片内可使用bdof处理。在下述处理中,针对每个块确定在切片内的各块中实际上是否使用bdof处理。
[0079]
即,“sps_bdof_enabled_flag”是sps 141中包含的表示可否以序列为单位使用bdof处理的标志(第四标志)。
[0080]
sps 141也可以包含用于对可否使用(有效、无效)下述dmvr(decoder-side motion vector refinemtnt)处理进行控制的标志“sps_dmvr_enabled_flag”。当该标志的值为“0”时,表示在与该sps 141对应的切片内不使用dmvr处理。另一方面,当该标志的值为“1”时,表示在与该sps 141对应的切片内可使用dmvr处理。在下述处理中,针对每个块确定在切片内的各块中实际上是否使用dmvr处理。
[0081]
即,“sps_dmvr_enabled_flag”是sps 141中包含的表示可否以序列为单位使用dmvr处理的标志(第三标志)。
[0082]
sps 141还可以包含用于对可否使用(有效、无效)下述仿射运动补偿进行控制的标志“sps_affine_enabled_flag”。当该标志的值为“0”时,表示在与该sps 141对应的切片内不使用仿射运动补偿。另一方面,当该标志的值为“1”时,表示在与该sps 141对应的切片内可使用仿射运动补偿。在下述处理中,针对每个块确定在切片内的各块中实际上是否使用仿射运动补偿。
[0083]
即,“sps_affine_prof_enabled_flag”是sps 141中包含的表示可否以序列为单位使用prof处理的标志(第五标志)。
[0084]
当“sps_affine_enabled_flag”为“1”时,sps 141还可以另外包含“sps_affine_type_flag”这一标志。当该标志的值为“0”时,表示在与该sps 141对应的切片内将下述仿射运动补偿时的参数个数始终设为“4”。另一方面,当该标志的值为“1”时,表示在与该sps 141对应的切片内进行仿射运动补偿时,可针对每个块选择“4”或“6”中的任一个作为参数个数。
[0085]
当“sps_affine_enabled_flag”的值为“1”时,sps 141还可以另外包含“sps_affine_prof_enabled_flag”这一标志。当该标志的值为“0”时,表示在与该sps 141对应的切片内不使用下述prof(prediction refinement with optical flow)处理。另一方面,当该标志的值为“1”时,表示在与该sps 141对应的切片内可使用prof处理。在下述处理中,针对每个块确定在切片内的各块中实际上是否使用prof处理。
[0086]
当“sps_bdof_enabled_flag”、“sps_dmvr_enabled_flag”及“sps_affine_prof_enabled_flag”中至少任一标志的值为“1”时,sps 141还可以另外包含“sps_bdof_dmvr_prof_slice_present_flag”这一标志。当该标志为“1”时,表示在与该sps 141对应的切片头部143a/143b内包含下述“slice_disable_bdof_dmvr_prof_flag”这一标志。当该标志的值为“0”时,表示在与该sps 141对应的切片头部143a/143b内不包含“slice_disable_bdof_dmvr_prof_flag”。
[0087]
即,“sps_bdof_dmvr_prof_slice_present_flag”是表示在切片头部143a/143b内是否包含“slice_disable_bdof_dmvr_prof_flag”的标志(第二标志)。另外,当不存在该标志时,可以隐含地视为该标志的值为“0”。
[0088]
图5是示出切片头部143a/143b中包含的控制数据的一个例子的图。
[0089]
如上所述,在切片头部143a/143b中,至少包含用于指定与该切片对应的pps 142的pps id信息“slice_pic_parameter_set_id”。如上所述,由该pps id信息指定的pps内所参考的sps 141为与该切片头部143a/143b对应的sps 141。
[0090]
当在与该切片头部143a/143b对应的sps 141内包含“sps_bdof_dmvr_prof_slice_present_flag”,且该标志的值为“1”时,在该切片头部143a/143b中也可以包含有“slice_disable_bdof_dmvr_prof_flag”。当该标志的值为“1”时,如下所述,可以控制为在该切片中包含的各块中不使用bdof处理、dmvr处理、prof处理。当该标志的值为“0”时,可以控制为在该切片中包含的各块中可使用bdof处理、dmvr处理、prof处理。
[0091]
即,“slice_disable_bdof_dmvr_prof_flag”是切片头部143a/143b中包含的对可否使用dmvr处理、bdof处理及prof处理进行统一控制的标志(第一标志)。
[0092]
换句话说,“slice_disable_bdof_dmvr_prof_flag”是切片头部143a/143b中包含的对可否使用prof处理进行控制的标志,是切片头部143a/143b中包含的对可否使用dmvr处理进行控制的标志,且是切片头部143a/143b中包含的对可否使用bdof处理进行控制的标志。
[0093]
以上所说明的标志的值只是一个例子。当使赋予给标志的值(“0”及“1”)的意义相反时,可以通过使所对应的处理也相应地相反,来实现等效处理。
[0094]
并且,如上所述,能够通过设置控制为不以切片为单位使用bdof处理、dmvr处理、prof处理的标志,而由图像编码装置100侧明确地控制不使用该功能,因此,能够通过不使用该功能,来削减图像编码装置100及所对应的图像解码装置200的处理负荷及消耗电力。
[0095]
(帧间预测部111)
[0096]
下面,参考图6对本实施方式的图像编码装置100的帧间预测部111进行说明。图6是示出本实施方式的图像编码装置100的帧间预测部111的功能块的一个例子的图。
[0097]
如图6所示,帧间预测部111包括运动矢量搜索部111a、运动矢量编码部111b、细化部111c、预测信号生成部111d、仿射运动矢量算出部111e及仿射预测信号生成部111f。
[0098]
帧间预测部111是构成为基于运动矢量来生成预测块中包含的预测信号的预测部的一个例子。
[0099]
运动矢量搜索部111a构成为通过对象帧与参考帧的比较,来指定参考帧中包含的参考块,并搜索所指定的参考块的运动矢量。
[0100]
并且,对多个候补参考帧进行上述搜索,以确定该预测块中用于预测的参考帧及运动矢量。对于一个块最多可以各使用两个参考帧及运动矢量。将对于一个块仅使用一组参考帧与运动矢量的情况称为单向预测,将使用两组参考帧与运动矢量的情况称为双向预测。在下文中,将第一组称为l0,将第二组称为l1。
[0101]
此外,运动矢量搜索部111a构成为确定参考帧及运动矢量的编码方法。在编码方法中,除分别传输参考帧及运动矢量的信息的常规方法以外,还有下述合并模式及仿射运动补偿等。
[0102]
另外,关于运动矢量的搜索方法、参考帧的确定方法以及参考帧及运动矢量的编码方法的确定方法,可以采用已知的方法,因此,省略其详细说明。
[0103]
运动矢量编码部111b构成为使用由运动矢量搜索部111a所确定的编码方法,对同样由运动矢量搜索部111a所确定的参考帧及运动矢量的信息进行编码。关于具体的参考帧及运动矢量信息的编码方法,可以采用已知的方法,因此,省略其详细说明。
[0104]
当该块的编码方法为合并模式时,在图像编码装置100侧,首先创建针对该块的合并列表。此处,合并列表是列举了多个参考帧与运动矢量的组合的列表。
[0105]
为各组合分配有索引,图像编码装置100仅对该索引进行编码,并传输至图像解码装置200,代替单独对参考帧及运动矢量的信息进行编码。通过预先在图像编码装置100侧与图像解码装置200侧共用合并列表的创建方法,在图像解码装置200侧,可以仅根据该索引的信息,解码出参考帧及运动矢量的信息。
[0106]
另外,关于合并列表的创建方法,可以采用已知的方法,因此,省略其详细说明。
[0107]
仿射运动补偿是如下方法:对每个块传输少量参数,并基于该参数及预定的模型,导出将该块分割所得的每个子块的运动矢量。导出该运动矢量的方法的详细内容将在下文叙述。
[0108]
当为仿射运动补偿时,运动矢量编码部111b构成为对下述控制点运动矢量的信息及参考帧的信息进行编码。如下所述,控制点运动矢量对每个块传输两个或三个运动矢量信息。
[0109]
并且,当该块是进行双向预测的块时,对l0及l1分别各传输两个或三个控制点运动矢量的信息。关于具体的编码方法,可以采用已知的方法,因此,省略其详细说明。
[0110]
当在该块中使用仿射运动补偿时,移至图6所示的仿射运动矢量算出部111e的处理,否则,移至细化部111c的处理。
[0111]
细化部111c构成为进行对由运动矢量编码部111b编码的运动矢量进行修正的细
化处理(例如dmvr)。
[0112]
具体来说,细化部111c构成为进行如下细化处理:以由运动矢量编码部111b编码的运动矢量所指定的参考位置为基准,设定搜索范围,从搜索范围中指定特定成本最小的修正参考位置,并基于修正参考位置,对运动矢量进行修正。
[0113]
图7是示出细化部111c的处理顺序的一个例子的流程图。
[0114]
如图7所示,在步骤s71中,细化部111c判断是否满足用于应用细化处理的特定条件。当该特定条件全部被满足时,本处理顺序前进至步骤s72。另一方面,当该特定条件中任一条件未被满足时,本处理顺序前进至步骤s75,结束细化处理。
[0115]
此处,特定条件包括该块是进行双向预测的块这一条件。
[0116]
并且,特定条件也可以包括如下条件:l0侧的参考帧及l1侧的参考帧中的任一方相对于该帧来说在时间上为过去的帧,另一参考帧相对于该帧来说在时间上为后续的帧,且l0侧与l1侧的距该帧的时间距离(例如,poc(picture order count,图像序列号)的差的绝对值)相等。
[0117]
并且,特定条件也可以包括运动矢量在合并模式下被编码这一条件。
[0118]
并且,特定条件也可以包括如下条件:在该块所属的序列的sps 141中,“sps_dmvr_enabled_flag”的值表示在该序列中可使用dmvr(例如,该标志的值为“1”)。
[0119]
此外,特定条件也可以包括如下条件:在该块所属的切片的切片头部143a/143b中,“slice_disable_bdof_dmvr_prof_flag”的值表示在该切片中可使用dmvr(例如,该标志的值为“0”)。
[0120]
在步骤s72中,细化部111c基于由运动矢量编码部111b编码的运动矢量及参考帧的信息,生成搜索用图像。
[0121]
此处,当运动矢量指向非整数像素位置时,细化部111c应用滤波器将非整数像素位置的像素内插至参考帧的像素值。此时,细化部111c能够通过使用抽头数比下述预测信号生成部111d中使用的内插滤波器少的内插滤波器,来削减运算量。例如,细化部111c可以通过双线性插值来内插非整数像素位置的像素值。
[0122]
在步骤s73中,细化部111c使用步骤s72中生成的搜索用图像,以整数像素精度进行搜索。此处,整数像素精度是指以由运动矢量编码部111b编码的运动矢量为基准,仅搜索间隔整数像素的点。
[0123]
细化部111c通过步骤s72的搜索来确定整数像素间隔位置处的修正后运动矢量。作为搜索方法,可以使用已知的方法。
[0124]
例如,细化部111c也可以利用如下方法进行搜索:仅搜索仅将l0侧及l1侧的差分运动矢量的符号反转所得的组合所对应的点。在搜索时,细化部111c例如也可以在各搜索点处算出搜索成本,并在搜索成本最小的搜索点处对运动矢量进行修正。
[0125]
此处,细化部111c也可以按照仅使与由运动矢量编码部111b编码的运动矢量对应的搜索点处的搜索成本减小的方式算出搜索成本。例如,关于该搜索点,细化部111c也可以将使利用与其他搜索点同样的方法算出的搜索成本减小至3/4所得的值设定为该搜索点的最终搜索成本。
[0126]
步骤s73中的搜索结果也可能是与搜索前的运动矢量相同的值。
[0127]
在步骤s74中,细化部111c以步骤s73中确定的整数像素精度的修正后运动矢量为
初始值,以非整数像素精度进行运动矢量的搜索。作为运动矢量的搜索方法,可以使用已知的方法。
[0128]
并且,细化部111c也可以在实际上未进行搜索的情况下,将步骤s73的结果作为输入,使用抛物线拟合等参数模型来确定非整数像素精度的矢量。
[0129]
细化部111c在步骤s74中确定非整数像素精度的修正后运动矢量后,移至步骤s45,结束细化处理。此处,为方便起见,使用了非整数像素精度的修正后运动矢量这样的表达,但根据步骤s74的搜索结果,结果也可能是与步骤s73中求出的整数像素精度的运动矢量相同的值。
[0130]
细化部111c也可以将大于预定阈值的块分割为较小的子块,并对每个子块执行细化处理。例如,细化部111c可以预先将细化处理的执行单位设定为16
×
16像素,当块的水平方向或垂直方向的尺寸大于16像素时,分别分割成16像素以下。此时,对于同一块内的所有子块,使用由运动矢量编码部111b编码的该块的运动矢量,作为细化处理的基准运动矢量。
[0131]
当对每个子块进行处理时,细化部111c可以对每个子块执行图7的所有步骤。并且,细化部111c也可以仅对每个子块进行图7的部分处理。具体来说,细化部111c可以对每个块进行图7的步骤s71及s72的处理,且对每个子块进行步骤s73及s74的处理。
[0132]
预测信号生成部111d构成为基于从细化部111c输出的经修正的运动矢量来生成预测信号。
[0133]
此处,如下所述,预测信号生成部111d构成为基于上述细化处理过程中算出的信息(例如搜索成本),来判断是否对每个块进行bdof处理。
[0134]
具体来说,当运动矢量未被修正时,预测信号生成部111d构成为基于由运动矢量编码部111b编码的运动矢量来生成预测信号。另一方面,当运动矢量被修正时,预测信号生成部111d构成为基于由细化部111c修正的运动矢量来生成预测信号。
[0135]
图8是示出预测信号生成部111d的处理顺序的一个例子的流程图。此处,当利用细化部111c以子块为单位进行细化处理时,预测信号生成部111d的处理也以子块为单位执行。此时,以下说明中的块这一术语可以适当替换为子块。
[0136]
如图8所示,在步骤s81中,预测信号生成部111d生成预测信号。
[0137]
具体来说,预测信号生成部111d将由运动矢量编码部111b编码的运动矢量或由细化部111c编码的运动矢量作为输入,当该运动矢量所指的位置为非整数像素位置时,应用滤波器将非整数像素位置的像素内插至参考帧的像素值。此处,关于具体的滤波器,可以应用非专利文献1中所揭示的最大8抽头的水平垂直可分离型滤波器。
[0138]
当该块是进行双向预测的块时,预测信号生成部111d生成基于第一组(以下称为l0)参考帧与运动矢量的预测信号、及基于第二组(以下称为l1)参考帧与运动矢量的预测信号这两者。
[0139]
在步骤s82中,预测信号生成部111d针对每个块确认是否满足下述bdof处理的应用条件。
[0140]
作为该应用条件,至少包括该块是进行双向预测的块这一条件。
[0141]
并且,应用条件也可以包括如下条件:在细化部111c在步骤s73中的整数像素位置搜索中,上述搜索成本最小的搜索点的搜索成本大于预定阈值或为预定阈值以上。
[0142]
并且,特定条件也可以包括如下条件:在该块所属的序列的sps 141中,“sps_
bdof_enabled_flag”的值表示在该序列中可使用bdof(例如,该标志的值为“1”)。
[0143]
并且,应用条件也可以包括如下条件:在该块所属的切片的切片头部143a/143b中,“slice_disable_bdof_dmvr_prof_flag”的值表示在该切片中可使用bdof处理(例如,该标志的值为“0”)。
[0144]
并且,应用条件也可以包括如下条件:l0侧的参考帧及l1侧的参考帧中的任一方相对于该帧来说在时间上为过去的帧,另一参考帧相对于该帧来说在时间上为后续的帧,且l0侧与l1侧的距该帧的时间距离(例如,poc的差的绝对值)的比率为预定比率。
[0145]
此处,作为比率的确定方法,例如可以按照如下方式进行确定:与使用下述bdof处理中的l0侧及l1侧的梯度或亮度值进行运算时的权重系数的倒数成正比。
[0146]
例如,当将l0侧的权重系数设为“2/3”,且将l1侧的权重系数设为“1/3”时,作为参考帧的距离的比率,若将l0与该帧间的距离设为“1”,则l1与该帧间的距离为“2”,只有在该情况下,才应用bdof处理。
[0147]
同样地,例如,当将l0侧的权重系数设为“1/2”,且将l1侧的权重系数设为“1/2”时,作为参考帧的距离的比率,若将l0与该帧间的距离设为“1”,则l1与该帧间的距离为“1”,即,该帧与l0之间的距离等于该帧与l1之间的距离,只有在该情况下,才应用bdof处理。
[0148]
即,预测信号生成部111d也可以包括如下条件作为该应用条件:以与使用两个参考帧(l0/l1)各自的像素值或根据两个参考帧(l0/l1)的像素值算出的各自的值进行运算时的权重系数的倒数成正比的方式,和两个参考帧(l0/l1)与该帧的时间距离相关。
[0149]
并且,预测信号生成部111d也可以包括如下条件作为该应用条件:当该权重系数相等时,作为与该时间距离相关的条件,两个参考帧(l0/l1)各自与该帧的时间距离相等。
[0150]
另外,此处,以权重系数为“1/2”的情形为例进行了说明,但当在l0侧与l1侧使用相同权重(例如,也可以为“1”)时,仅在该帧与l0之间的距离等于该帧与l1之间的距离的情况下,才应用bdof处理。
[0151]
当判断出满足该应用条件时,本处理顺序移至步骤s83,当不满足该应用条件时,本处理顺序移至步骤s84。
[0152]
在步骤s83中,预测信号生成部111d执行bdof处理,并生成预测信号。bdof处理的处理本身可以使用已知的方法,因此,仅对概况进行说明,省略其详细说明。
[0153]
第一,预测信号生成部111d对该块的参考块内的各像素算出垂直方向及水平方向的亮度值的梯度。作为具体的算出方法,例如可以使用非专利文献1所述的方法来算出。此处,将l0的水平方向的梯度称为“gradienthl0”,将l0的垂直方向的梯度称为“gradientvl0”,将l1的水平方向的梯度称为“gradienthl1”,将l1的垂直方向的梯度称为“gradientvl1”。
[0154]
第二,预测信号生成部111d算出该块的校正mv(vx,vy)。作为具体的算出方法,例如可以使用非专利文献1所述的方法来算出。此处,上述梯度的和(temph,tempv)及l0与l1的参考块间的亮度值差分(diff)是以如下方式算出,如非专利文献1所述,也可以用于算出上述(vx,vy)。
[0155]
diff=predsamplel0
×
weightl0-predsamplel1
×
weightl1temph=gradienthl0
×
weightl0 gradienthl1
×
weightl1tempv=gradientvl0
×
weightl0
gradientvl1
×
weightl1此处,“predsamplel0”及“predsamplel1”分别为l0及l1的参考块的亮度值,“weightl0”及“weightl1”分别为算出上述梯度及亮度值差分时的权重系数。
[0156]
此处,以“diff”、“temph”、“tempv”这三个参数为例,对使用共同的权重的例子进行了说明,在对l0侧的信息及l1侧的信息进行加减乘除时,可以设定同样的权重。
[0157]
并且,也可以按照与该权重的倒数成正比的方式,像上述那样设定与距参考帧的距离相关的bdof处理的应用条件。换句话说,也可以按照与该帧与l0及l1的各参考帧的距离的比的倒数成正比的方式,像上述那样设定加减乘除时的权重。
[0158]
通过以这种方式进行设定,当假设梯度或亮度值等在l0与l1之间线性变化时,可以对该帧的时间位置设定合适的权重系数。并且,能够通过设定与权重系数对应的bdof处理的应用条件,来保证始终使用合适的权重系数。
[0159]
第三,预测信号生成部111d使用上述所求出的梯度及校正mv,例如以如下方式算出各像素的亮度值校正量“bdofoffset。
[0160]
bdofoffset=vx
×
(weightl0
×
gradienthl0―weightl1
×
gradienthl1) vy
×
(weightl0
×
gradientvl0―weightl1
×
gradientvl1)第四,预测信号生成部111d例如可以如非专利文献1所述,使用“bdofoffset”,算出各像素的校正后亮度值的预测值。
[0161]
即,预测信号生成部111d构成为在bdof处理中,基于使用两个参考帧(l0/l1)各自的像素值或根据两个参考帧(l0/l1)的像素值算出的各自的值进行运算时的权重系数,在上述应用条件中包括与两个参考帧与该帧的时间距离相关的条件。
[0162]
在实施bdof处理后,本处理顺序移至步骤s85,结束处理。
[0163]
在步骤s84中,当该块是进行双向预测的块时,预测信号生成部111d对步骤s81中生成的l0与l1的预测信号进行合成,生成最终预测信号。关于具体的合成方法,可以使用已知的方法,因此,省略其详细说明。当该块是进行单向预测的块时,预测信号生成部111d直接将步骤s81中生成的预测信号作为最终预测信号。
[0164]
预测信号生成部111d在按照以上顺序生成最终预测信号后,移至步骤s85,结束处理。
[0165]
仿射运动矢量算出部111e构成为当由运动矢量搜索部111a确定在该块中进行仿射运动补偿时,基于由运动矢量编码部111b编码的控制点运动矢量,来算出将该块分割所得的每个子块的运动矢量。
[0166]
图9是示出仿射运动矢量算出部111e的处理顺序的一个例子的流程图。
[0167]
如图9所示,在步骤s91中,仿射运动矢量算出部111e计算“dhorx”、“dhory”、“dverx”及“dvery”共四个参数的值。
[0168]
此处,仿射运动矢量算出部111e在计算参数时,使用由运动矢量编码部111b编码的控制点运动矢量的值。
[0169]
如上所述,每个块有两个或三个控制点运动矢量。在图10中,示出了控制点运动矢量为三个(“cpmv0”、“cpmv1”、“cpmv2”)时的例子。
[0170]
此处,在图10中,实线表示该块的边界,虚线表示将该块分割所得的子块的边界,实线箭头表示控制点运动矢量,虚线箭头表示各子块的运动矢量。
[0171]
当控制点运动矢量为两个时,为仅有图10的cpmv0及cpmv1的状态。根据控制点运动矢量的值计算“dhorx”、“dhory”、“dverx”及“dvery”共四个参数的值的具体方法可以使
用已知的方法,因此,省略其详细说明。
[0172]
在步骤s92中,仿射运动矢量算出部111e确定是否对该块应用“fallbackmode”。
[0173]
此处,“fallbackmode”是在将该块分割所得的所有子块中使用同一运动矢量的模式。“fallbackmode”的判断方法可以使用已知的方法,因此,省略其详细说明。当对该块应用“fallbackmode”时,本处理顺序前进至步骤s93,当不对该块应用“fallbackmode”时,本处理顺序前进至步骤s94。
[0174]
在步骤s93中,仿射运动矢量算出部111e算出使用“fallbackmode”时的各子块的运动矢量。
[0175]
如上所述,当为“fallbackmode”时,同一块内的所有子块的运动矢量的值相同。具体的算出方法可以使用已知的方法,因此,省略其详细说明。
[0176]
例如,在非专利文献1中,将上述“dhorx”、“dhory”、“dverx”及“dvery”的值、及以该块的左上方的坐标为原点时的块中央的坐标值(分别使该块的高度及宽度为“1/2”所得的值)代入预定模型,来算出运动矢量。本处理顺序在步骤s93完成后,移至步骤s97,结束处理。
[0177]
在步骤s94中,仿射运动矢量算出部111e算出不应用“fallbackmode”时的各子块的运动矢量。具体的算出方法可以使用已知的方法,因此,省略其详细说明。
[0178]
例如,在非专利文献1中,将“dhorx”、“dhory”、“dverx”及“dvery”的值、及以该块的左上方的坐标为原点时的各子块中央的坐标值代入预定模型,来算出运动矢量。本处理顺序在步骤s94结束后,移至步骤s95。
[0179]
在步骤s95中,仿射运动矢量算出部111e判断是否满足在该块中应用prof处理的条件。
[0180]
应用条件可以包括“sps_affine_prof_enabled_flag”的值为“1”这一条件。
[0181]
并且,应用条件也可以包括“slice_disable_bdof_dmvr_prof_flag”的值表示在该切片中可使用prof处理(例如,该标志的值为“0”)这一条件。
[0182]
此外,应用条件也可以包括不对该块应用“fallbackmode”这一条件。
[0183]
仿射运动矢量算出部111e在判断出满足所有应用条件时,确定对该块应用prof处理,本处理顺序前进至步骤s96。在除此以外的情况下,确定不对该块应用prof处理,本处理顺序移至步骤s97,结束处理。
[0184]
以上示出了仿射运动矢量算出部111e判断是否满足所有应用条件的例子,但仿射运动矢量算出部111e也可以通过逻辑上等效的其他方法来判断。
[0185]
具体来说,也可以使上述所有应用条件反转,且定义为不应用prof处理的条件,仿射运动矢量算出部111e在任一情况符合不应用的条件时,确定不对该块应用prof处理,前进至步骤s97,在均不符合不应用的条件时,确定对该块应用prof处理,前进至步骤s96。
[0186]
与上述例子对应的不应用prof处理的条件可以按照如下方式定义。
[0187]
该不应用的条件可以包括“sps_affine_prof_enabled_flag”的值为“0”这一条件。
[0188]
并且,该不应用的条件也可以包括“slice_disable_bdof_dmvr_prof_flag”的值表示在该切片中禁止使用prof处理(例如,该标志的值为“1”)这一条件。
[0189]
此外,该不应用的条件也可以包括对该块应用“fallbackmode”这一条件。
[0190]
在步骤s96中,仿射运动矢量算出部111e算出prof处理中使用的“diffmv”的值。例如,对以各子块的左上方的坐标为原点时的各像素位置,算出“diffmv”的值。另外,当该块内的各子块的尺寸相同时(例如,4
×
4像素),算出一个子块的各像素位置的“diffmv”,便可以在其他子块中沿用该值。
[0191]
例如,可以按照如下方式算出“diffmv”。
[0192]
diffmv[x][y][0]=x
×
(dhorx<<2) y
×
(dverx<<2)-posoffsetxdiffmv[x][y][1]=x
×
(dhory<<2) y
×
(dvery<<2)-posoffsety此处,x、y表示以各子块的左上方的坐标为原点时的各像素位置(x,y),[0]表示“diffmv”的x方向分量,[1]表示“diffmv”的y方向分量。
[0193]
另外,以下关系成立。
[0194]
posoffsetx=6
×
dhorx 6
×
dverx
[0195]
posoffsety=6
×
dhory 6
×
dvery
[0196]
之后,如非专利文献1所述,仿射运动矢量算出部111e进行右移及限幅处理。
[0197]
在算出“diffmv”后,本处理顺序移至步骤s97,结束处理。
[0198]
以上说明是关于该块中的一个参考帧的处理。例如,当为具有两个参考帧的双向预测时,对l0及l1分别执行上述步骤s91至s97的处理。因此,对于l0及l1,是否应用prof处理的判断结果或“diffmv”的算出结果可能会分别不同。
[0199]
图11是示出仿射预测信号生成部111f的处理的一个例子的流程图。
[0200]
仿射预测信号生成部111f构成为当“slice_disable_bdof_dmvr_prof_flag”表示在与切片头部对应的切片内可使用prof处理时(标志的值为“0”时),进行prof处理,当表示不可使用prof处理时(标志的值为“0”时),不进行prof处理,来生成预测信号。
[0201]
另外,仿射预测信号生成部111f也可以构成为当在切片头部中不包含“slice_disable_bdof_dmvr_prof_flag”时,隐含地解释为该标志表示可使用(标志的值为“0”)来进行处理。
[0202]
在步骤s111中,仿射预测信号生成部111f生成预测信号。
[0203]
具体来说,仿射预测信号生成部111f将由仿射运动矢量算出部111e算出的每个子块的运动矢量作为输入,当该运动矢量所指的位置为非整数像素位置时,应用滤波器将非整数像素位置的像素内插至参考帧的像素值。此处,关于具体的滤波器,可以应用非专利文献1中所揭示的最大6抽头的水平垂直可分离型滤波器。
[0204]
当该块是进行双向预测的块时,仿射预测信号生成部111f生成l0及l1的预测信号这两者。
[0205]
在步骤s112中,仿射预测信号生成部111f判断在该块的该预测方向(l0或l1)上是否应用prof处理。在该判断中,可直接使用上述步骤s95中的判断结果。
[0206]
当判断出在该块的该预测方向上应用prof处理时,本处理顺序前进至步骤s113。另一方面,当判断出在该块的该预测方向上不应用prof处理时,本处理顺序前进至步骤s114。
[0207]
在步骤s113中,仿射预测信号生成部111f执行prof处理。prof处理的具体处理可以使用已知的方法,因此,省略其详细说明。仿射预测信号生成部111f通过prof处理进行预测信号的校正。
[0208]
在步骤s114中,当该块是进行双向预测的块时,仿射预测信号生成部111f对步骤s111中生成的l0与l1的预测信号、或在步骤s113中校正该预测信号所得的预测信号进行合成,生成最终预测信号。具体的合成方法可以使用已知的方法,因此,省略其详细说明。当该块是进行单向预测的块时,仿射预测信号生成部111f将步骤s111中生成的预测信号、或在步骤s113中校正该预测信号所得的预测信号直接作为最终预测信号。
[0209]
在最终预测信号的生成完成后,本处理顺序移至步骤s115,结束处理。
[0210]
在以上例子中,为方便起见,将预测信号生成部111d与仿射预测信号生成部111f作为不同的处理块进行了说明,但它们的部分处理可共用,也可以设为单一的处理块。
[0211]
例如,步骤s81与s111、以及步骤s84与步骤s114可以视为相同的处理。
[0212]
在该情况下,若在图8的步骤s82中判断为“否”之后,依次执行图10的步骤s112、s113及s114,便可以将图8及图10的流程图整合起来,视为单一的处理块。此时,以块为单位排他地应用bdof处理及prof处理。
[0213]
(环路滤波处理部150)
[0214]
下面,对本实施方式的环路滤波处理部150进行说明。图12是示出本实施方式的环路滤波处理部150的图。
[0215]
如图12所示,环路滤波处理部150包括块边界检测部151、边界强度判断部153、滤波确定部154及滤波处理部155。
[0216]
此处,末尾标注有“a”的构成是与垂直方向的块边界的解块滤波处理相关的构成,末尾标注有“b”的构成是与水平方向的块边界的解块滤波处理相关的构成。
[0217]
下面,例示在进行垂直方向的块边界的解块滤波处理后,进行水平方向的块边界的解块滤波处理的情况。
[0218]
如上所述,解块滤波处理可以应用于编码块,可以应用于预测块,也可以应用于变换块。并且,解块滤波处理也可以应用于将上述各块分割所得的子块。即,对象块及相邻块可以是编码块,可以是预测块,可以是变换块,也可以是将它们分割所得的子块。
[0219]
在子块的定义中,包括作为细化部111c及预测信号生成部111d的处理单位所说明的子块。并且,在子块的定义中,包括作为仿射运动矢量算出部111e及仿射预测信号生成部111e的处理单位所说明的子块。当对子块应用解块滤波时,可以适当将以下说明中的块替换为子块。
[0220]
由于垂直方向的块边界的解块滤波处理与水平方向的块边界的解块滤波处理是同样的处理,所以下面对垂直方向的块边界的解块滤波处理进行说明。
[0221]
块边界检测部151a构成为基于表示块尺寸的控制数据,来检测块的边界。此处,块是编码块(cu)、预测块(pu)、变换块(tu)。具体的检测方法可应用已知的方法,因此,省略其详细说明。
[0222]
边界强度判断部153a构成为判断对象块与相邻块的块边界的边界强度。
[0223]
边界强度判断部153a还可以构成为基于表示对象块及相邻块是否是帧内预测块的控制数据,来判断块边界的边界强度。
[0224]
例如,如图13所示,边界强度判断部153a也可以构成为当对象块及相邻块中的至少任一个块是帧内预测块时(即,块边界两侧的块中的至少任一个是帧内预测块时),判断块边界的边界强度为“2”。
[0225]
边界强度判断部153a还可以构成为基于表示在对象块及相邻块中是否包含非零(zero)的正交变换系数、及块边界是否是变换块的边界的控制数据,来判断块边界的边界强度。
[0226]
例如,如图13所示,边界强度判断部153a也可以构成为当对象块及相邻块中的至少任一个块包含非零的正交变换系数,且块边界是变换块的边界时(即,块边界两侧的块中的至少任一个中存在非零的变换系数,且是tu的边界时),判断块边界的边界强度为“1”。
[0227]
边界强度判断部153a还可以构成为基于表示对象块及相邻块的运动矢量的差的绝对值是否为阈值(例如1/2像素)以上的控制数据,来判断块边界的边界强度。
[0228]
例如,如图13所示,边界强度判断部153a也可以构成为当对象块及相邻块的运动矢量的差的绝对值为阈值(例如1/2像素)以上时(即,块边界两侧的块的运动矢量的差的绝对值为阈值(例如1/2像素)以上时),判断块边界的边界强度为“1”。
[0229]
边界强度判断部153a还可以构成为基于表示对象块及相邻块的运动矢量的预测所参考的参考块是否不同的控制数据,来判断块边界的边界强度。
[0230]
例如,如图13所示,边界强度判断部153a也可以构成为当对象块及相邻块的运动矢量的预测所参考的参考块不同时(即,在块边界两侧的块中参考图像不同时),判断块边界的边界强度为“1”。
[0231]
边界强度判断部153a也可以构成为基于表示对象块及相邻块的运动矢量的个数是否不同的控制数据,来判断块边界的边界强度。
[0232]
例如,如图13所示,边界强度判断部153a也可以构成为当对象块及相邻块的运动矢量的个数不同时(即,在块边界两侧的块中运动矢量的个数不同时),判断块边界的边界强度为“1”。
[0233]
例如,如图13所示,边界强度判断部153a也可以构成为当上述条件均不被满足时,判断块边界的边界强度为“0”。
[0234]
另外,很可能边界强度的值越大,在块边界产生的块失真越大。
[0235]
对于亮度信号及色差信,上述边界强度判断方法可以通过共同的方法来判断,也可以使用部分不同的条件来判断。
[0236]
滤波确定部154a构成为确定应用于块边界的滤波处理(例如,解块滤波处理)的种类。
[0237]
例如,滤波确定部154a也可以构成为基于块边界的边界强度、或对象块及相邻块中包含的量化参数等,来确定是否对块边界应用滤波处理、是否应用弱滤波处理及强滤波处理中的任一滤波处理。
[0238]
滤波确定部154a也可以构成为当块边界的边界强度为“0”时,确定不应用滤波处理。
[0239]
滤波处理部155a构成为基于滤波确定部154a的确定结果,来对解块前图像进行处理。对解块前图像进行的处理是无滤波处理、弱滤波处理、强滤波处理等。
[0240]
(图像解码装置200)
[0241]
下面,参考图14对本实施方式的图像解码装置200进行说明。图14是示出本实施方式的图像解码装置200的功能块的一个例子的图。
[0242]
如图14所示,图像解码装置200包括解码部210、逆变换及逆量化部220、加法器
230、帧间预测部241、帧内预测部242、环路滤波处理部250及帧缓冲器260。
[0243]
解码部210构成为对由图像编码装置100生成的编码数据进行解码,且对系数等级值进行解码。
[0244]
此处,例如解码是顺序与由编码部140进行的熵编码相反的熵解码。
[0245]
并且,解码部210也可以构成为通过编码数据的解码处理来获取控制数据。
[0246]
另外,如上所述,控制数据可以包括编码块尺寸、预测块尺寸、变换块尺寸等尺寸数据。
[0247]
并且,如上所述,控制数据也可以包括序列参数集(sps)、图片参数集(pps)、切片头部等头部信息。
[0248]
例如,解码部21也可以构成为从切片头部解码出对可否使用prof处理进行控制的标志、或者对可否使用dmvr处理、bdof处理及prof处理进行统一控制的标志等。
[0249]
逆变换及逆量化部220构成为进行从解码部210输出的系数等级值的逆变换处理。此处,逆变换及逆量化部220也可以构成为在逆变换处理之前进行系数等级值的逆量化。
[0250]
此处,逆变换处理及逆量化是按照与由变换及量化部131进行的变换处理及量化相反的顺序进行。
[0251]
加法器230构成为将预测信号与从逆变换及逆量化部220输出的预测残差信号相加来生成滤波处理前解码信号,并将滤波处理前解码信号输出至帧内预测部242及环路滤波处理部250。
[0252]
此处,滤波处理前解码信号构成帧内预测部242中使用的参考块。
[0253]
与帧间预测部111同样地,帧间预测部241构成为通过帧间预测(interframe prediction)来生成预测信号。
[0254]
具体来说,帧间预测部241构成为基于从编码数据中解码出的运动矢量及参考帧中包含的参考信号,针对每个预测块生成预测信号。帧间预测部241构成为将预测信号输出至加法器230。
[0255]
与帧内预测部112同样地,帧内预测部242构成为通过帧内预测(intraframe prediction)来生成预测信号。
[0256]
具体来说,帧内预测部242构成为指定对象帧中包含的参考块,并基于所指定的参考块,针对每个预测块生成预测信号。帧内预测部242构成为将预测信号输出至加法器230。
[0257]
与环路滤波处理部150同样地,环路滤波处理部250构成为对从加法器230输出的滤波处理前解码信号进行滤波处理,且将滤波处理后解码信号输出至帧缓冲器260。
[0258]
此处,例如滤波处理是减少在块(编码块、预测块、变换块或将它们分割所得的子块)的边界部分产生的失真的解块滤波处理。
[0259]
与帧缓冲器160同样地,帧缓冲器260构成为存储帧间预测部241中使用的参考帧。
[0260]
此处,滤波处理后解码信号构成帧间预测部241中使用的参考帧。
[0261]
(帧间预测部241)
[0262]
下面,参考图15对本实施方式的帧间预测部241进行说明。图15是示出本实施方式的帧间预测部241的功能块的一个例子的图。
[0263]
如图15所示,帧间预测部241包括运动矢量解码部241b、细化部241c、预测信号生成部241d、仿射运动矢量算出部241e及仿射预测信号生成部241f。
[0264]
帧间预测部241是构成为基于运动矢量来生成预测块中包含的预测信号的预测部的一个例子。
[0265]
运动矢量解码部241b构成为通过从图像编码装置100接收到的控制数据的解码,来获取运动矢量。
[0266]
并且,运动矢量解码部241b构成为也对与是否对该块使用仿射运动补偿相关的信息进行解码。
[0267]
此处,当不对该块使用仿射运动补偿时,进行细化处理部241c及预测信号生成部241d的处理,当对该块使用仿射运动补偿时,进行仿射运动矢量算出部241e及仿射预测信号生成部241f的处理。
[0268]
与细化部111c同样地,细化部241c构成为执行对运动矢量进行修正的细化处理。
[0269]
与预测信号生成部111d同样地,预测信号生成部241d构成为基于运动矢量来生成预测信号。
[0270]
与仿射运动矢量算出部111e同样地,仿射运动矢量算出部241e构成为使用由运动矢量解码部241b解码出的控制点运动矢量来算出各子块的运动矢量。
[0271]
与仿射预测信号生成部111f同样地,仿射预测信号生成部241f使用由仿射运动矢量算出部241e算出的各子块的运动矢量来生成预测信号,且与预测信号生成部111d及仿射预测信号生成部111f同样地,预测信号生成部241d与仿射预测信号生成部241f也可以整合为同一处理块。
[0272]
(环路滤波处理部250)
[0273]
下面,对本实施方式的环路滤波处理部250进行说明。图16是示出本实施方式的环路滤波处理部250的图。
[0274]
如图16所示,环路滤波处理部250包括块边界检测部251、边界强度判断部253、滤波确定部254及滤波处理部255。
[0275]
此处,末尾标注有“a”的构成是与垂直方向的块边界的解块滤波处理相关的构成,末尾标注有“b”的构成是与水平方向的块边界的解块滤波处理相关的构成。
[0276]
此处,例示在进行垂直方向的块边界的解块滤波处理后,进行水平方向的块边界的解块滤波处理的情况。
[0277]
如上所述,解块滤波处理可以应用于编码块,可以应用于预测块,也可以应用于变换块。并且,解块滤波处理也可以应用于将上述各块分割所得的子块。即,对象块及相邻块可以是编码块,可以是预测块,可以是变换块,也可以是将它们分割所得的子块。
[0278]
由于垂直方向的块边界的解块滤波处理与水平方向的块边界的解块滤波处理是同样的处理,所以下面对垂直方向的块边界的解块滤波处理进行说明。
[0279]
与块边界检测部151a同样地,块边界检测部251a构成为基于表示块尺寸的控制数据,来检测块的边界。
[0280]
与边界强度判断部153a同样地,边界强度判断部253a构成为判断对象块与相邻块的块边界的边界强度。块边界的边界强度的判断方法如上所述。
[0281]
与滤波确定部154a同样地,滤波确定部254a构成为确定应用于块边界的解块滤波处理的种类。解块滤波处理的种类的确定方法如上所述。
[0282]
与滤波处理部155a同样地,滤波处理部255a构成为基于滤波确定部254a的确定结
果,来对解块前图像进行处理。对解块前图像进行的处理是无滤波处理、弱滤波处理、强滤波处理等。
[0283]
(变更例1)
[0284]
下面,参考图17及图18对上述实施方式的变更例1进行说明。下面,主要对与上述实施方式的不同点进行说明。在上述实施方式中,关于bdof处理及prof处理,分别省略了详细说明,但在本变更例中,对具体处理的一个例子进行说明。
[0285]
第一,使用图17对步骤s83的bdof处理的具体示例进行说明。
[0286]
如图17所示,在步骤s171中,预测信号生成部111d/241d分别对与应用bdof处理的块或子块对应的l0及l1的参考块内的各像素算出水平方向及垂直方向的亮度值梯度。
[0287]
具体来说,预测信号生成部111d/241d利用下式对块内的各像素位置(x,y)算出上述梯度。
[0288]
gradienthl0[x][y]=(predsamplesl0[hx 1][vy]>>shift1)-(predsamplesl0[hx-1][vy]>>shift1)
[0289]
gradientv0[x][y]=(predsamplesl0[hx][vy 1]>shift1)-(predsamplesl0[hx][vy-1]>>shift1)
[0290]
gradienthl1[x][y]=(predsamplesl1[hx 1][vy]>>shift1)-(predsamplesl1[hx-1][vy]>>shift1)
[0291]
gradientv1[x][y]=(predsamplesl1[hx][vy 1]>shift1)-(predsamplesl0[hx][vy-1]>>shift1)
[0292]
此处,“predsamplesl0”及“predsamplesl1”是步骤s81中算出的l0及l1的预测信号。并且,“hx”及“vy”由下式定义。
[0293]
在下式中,“ncbw”是该块的宽度,“ncbh”是该块的高度,“clip3(min,max,input)”是将“input”的值限幅在“min≦input≦max”的函数。
[0294]
hx=clip3(1,ncbw,x)
[0295]
hy=clip3(1,ncbh,y)
[0296]
另外,“shift1”由下式定义。
[0297]
shift1=max(6,bitdepth-6)
[0298]
此处,“bitdepth”是进行像素值的处理时的比特深度。
[0299]
在步骤s172中,预测信号生成部111d/241d算出校正mv。
[0300]
此处,第一,预测信号生成部111d/241d对该块或子块的各像素算出以下三个参数的值。
[0301]
diff[x][y]=(predsamplesl0[hx][vy]>>shift2)-(predsamplesl1[hx][vy]>>shift2)
[0302]
temph[x][y]=(gradienthl0[x][y] gradienthl1[x][y])>>shift3
[0303]
tempv[x][y]=(gradientvl0[x][y] gradientvl1[x][y])>>shift3
[0304]
此处,“shift2”及“shift3”由下式定义。
[0305]
shift2=max(4,bitdepth-8)
[0306]
shift3=max(3,15-bitdepth)
[0307]
第二,预测信号生成部111d/241d将该块或子块分割成4
×
4像素块,如下所述,针
对每个4
×
4像素块算出参数。
[0308]
[数学式1]
[0309]
sgx2=∑i∑jabs(temph[xsb i][ysb j])with i,j=-1..4
[0310]
sgy2=∑i∑jabs(tempv[xsb i][ysb j])with i,j=-1..4
[0311]
sgxgy=∑i∑j(sign(tempv[xsb i][ysb j])*
[0312]
temph[xsb i][ysb j])with i,j=-1..4
[0313]
sgxgym=sgxgy>>12
[0314]
sgxgys=sgxgy&((1<<12)-1)
[0315]
sgxdi=∑i∑j(-sign(temph[xsb i][ysb j])*diff[xsb i][ysb j])with i,j=-1..4
[0316]
sgydi=∑i∑j(-sign(tempv[xsb i][ysb j])*diff[xsb i][ysb j])with i,j=-1..4
[0317]
此处,“xsb”及“yxb”是以该块或子块的左上方像素为原点时各4
×
4像素块的左上方像素的坐标。并且,“sign(input)”是如下函数:在“input”的值为正时返回“1”,在“input”的值为负时返回
“‑
1”,在“input”的值为“0”时返回“0”。
[0318]
如下所述,预测信号生成部111d/241d使用以上述方式算出的值,来算出校正mv(vx,vy)。
[0319]
vx=sgx2>0?clip3(-mvrefinethres,mvrefinethres-1,-(sgxdi<<3)>>floor(log2(sgx2))):0vy=sgx2>0?clip3(-mvrefinethres,mvrefinethres一1,((sgydi<<3)-((vx
×
sgxgym)<<12 vx
×
sgxgys)>>1)>>floor(log2(sgx2))):0
[0320]
此处,“mvrefinethres”由下式定义。
[0321]
mvrefinethres=1<<max(5,bitdepth-7)
[0322]
通过设为上述构成,能够将校正mv(vx,vy)的各分量的比特宽度抑制在“1<<max(5,bitdepth-7) 1”比特以内(含符号)。
[0323]
在步骤s173中,如下所述,预测信号生成部111d/241d对各像素的预测信号进行校正。
[0324]
bdofoffset=(vx
×
(gradienthl0[x 1][y 1]-gradienthl1[x 1][y 1]))>>1 (vy
×
(gradientvl0[x 1][y 1]-gradientvl1[x 1][y 1]))>>1
[0325]
pbsamples[x][y]=clip3(0,(2
bitdepth
)-1,(predsamplesl0[x 1][y 1] offset4 predsamplesl1[x 1][y 1] bdofoffset)>>shift4)
[0326]
此处,“offset4”及“shift4”由下式定义。
[0327]
offset4=1<<(shift4-1)
[0328]
shift4=max(3,15-bitdepth)
[0329]
预测信号生成部111d/241d在进行以上所有处理后,进入步骤s174,结束处理。
[0330]
接着,使用图18对步骤s113的prof处理的具体示例进行说明。
[0331]
如图18所示,在步骤s181中,仿射预测信号生成部111f/241f分别对应用prof处理的l0及l1的参考块内的各像素算出水平方向及垂直方向的亮度值梯度。
[0332]
具体来说,仿射预测信号生成部111f/241f利用下式对块内的各像素位置(x,y)算出梯度。
[0333]
gradienth[x][y]=(predsamples[x 2][y]>>shift1)-(predsamples[x][y]>>shift1)
[0334]
gradientv[x][y]=(predsamples[x][y 2]>>shift1)-(predsamples[x][y]>>shift1)
[0335]
此处,“predsamples”是步骤s111中生成的l0或l1的预测信号。此处,设为shift1=max(6,bitdepth-6)。
[0336]
当对l0及l1这两者应用prof处理时,仿射预测信号生成部111f/241f分别对l0及l1算出上述“gradienth”及“gradientv”。此时,以像素为单位来看,步骤s181中的计算内容与步骤s171的计算内容完全相同。
[0337]
在步骤s182中,仿射预测信号生成部111f/241f计算校正mv。该处理实际上是作为步骤s96,在仿射运动矢量算出部111e/241e的内部进行,但为方便起见,视为在步骤s182中进行的处理来说明。实际上,仿射预测信号生成部111f/241f直接使用步骤s96中算出的值即可。
[0338]
第一,与上述步骤s96的说明同样地,仿射预测信号生成部111f/241f算出“diffmv”的值。
[0339]
diffmv[x][y][0]=x
×
(dhorx<<2) y
×
(dverx<<2)-posoffsetx
[0340]
diffmv[x][y][1]=x
×
(dhory<<2) y
×
(dvery<<2)-posoffsety
[0341]
第二,仿射预测信号生成部111f/241f将上述“diffmv”的值分别右移7比特。
[0342]
第三,如下所述,仿射预测信号生成部111f/241f进行限幅处理。
[0343]
diffmv[x][y][i]=clip3(-dmvlimit,dmvlimit-1,diffmv[x][y][i])
[0344]
此处,
[0345]
dmvlimit=1<<max(5,bitdepth-7)。
[0346]
通过设为上述构成,能够将“diffmv”的各分量的比特宽度抑制在“1<<max(5,bitdepth-7) 1”比特以内(含符号)。该比特宽度与步骤s172中算出的校正mv相同。
[0347]
在步骤s183中,仿射预测信号生成部111f/241f进行预测信号的校正。
[0348]
如下所述,仿射预测信号生成部111f/241f对应用prof处理的块及预测方向进行预测信号“pbsamples”的值的校正。
[0349]
di=gradienth[x][y]
×
diffmv[x][y][0] gradientv[x][y]
×
diffmv[x][y][1]pbsamples[x][y]=predsamples[x 1][y 1] (di>>1)当在l0及l1这两者中应用prof处理时,仿射预测信号生成部111f/241f分别对l0及l1执行上述处理。
[0350]
仿射预测信号生成部111f/241f在上述校正完成后,移至步骤s184,结束prof处理。
[0351]
仿射预测信号生成部111f/241f在prof处理完成后,执行步骤s114中说明的预测值合成处理。预测值的合成例如可以由下式执行。
[0352]
predsamples[x][y]=clip3(0,(1<<bitdepth)-1,(predsamplesl0[x][y] predsamplesl1[x][y] offset2)>>shift2)
[0353]
此处,
[0354]
offset2=1<<(shift2-1)
[0355]
shift2=max(3,15-bitdepth)。
[0356]
另外,当进一步通过prof处理对l0侧的预测信号“predsamplesl0”及l1侧的预测信号“predsamplesl1”这两者进行校正时,若将步骤s183的计算代入“predsamplesl0”及“predsamplesl1”,则可以进行如下变形。
[0357]
di_bi=(di_l0>>1) (di_l1>>1)pbsamples[x][y]=clips(0,(1<<bitdepth)-1,(predsamplesl0_orig[x][y] offset2 predsamplesl1_orig[x][y] di_bi)>>shift2)
[0358]
此处,“di_l0”及“di_l1”分别为l0及l1的di的值,“predsamplesl0_orig”及“predsamplesl1_orig”是通过prof处理进行校正前的预测信号。
[0359]
以上所说明的bdof处理及prof处理中算出的梯度及校正mv的值分别被以比特宽度相同的方式限幅,因此,由此算出的“bdofoffset”及“di_bi”的比特宽度也相同。
[0360]
即,也可以按照如下方式进行运算:由预测信号生成部111d/241d进行的bdof处理中算出的偏移量、与由仿射预测信号生成部111f/241f进行的prof处理中分别对两个参考帧(l0/l1)算出的偏移量合成后的值的比特宽度相同。
[0361]
并且,对prof处理后的预测信号进行合成时的“offset2”及“shift2”的值与bdof处理的“offset4”及“shift4”的值也相同。因此,对l0及l1这两者应用bdof处理及prof处理时的预测值生成处理是完全相同的公式。
[0362]
通过将bdof处理及prof处理设为上述构成,有如下效果。
[0363]
第一,能够使步骤s171与步骤s181的梯度算出处理为完全相同的处理。
[0364]
即,能够在prof处理应用于两个参考帧(l0/l1)时,使由预测信号生成部111d/241d进行的bdof处理中的梯度算出处理、与由仿射预测信号生成部111f/241f进行的prof处理中的梯度算出处理为相同的处理。
[0365]
第二,能够使步骤s172与步骤s182的输出即校正mv的比特宽度完全相同。
[0366]
即,能够分别进行限幅处理,使由预测信号生成部111d/241d进行的bdof处理中的校正mv量、与由仿射预测信号生成部111f/241f进行的prof处理中使用的校正mv量分别为相同的比特宽度。
[0367]
第三,能够使步骤s173的预测值校正处理与步骤s183的预测值校正处理及步骤s114的预测值合成处理为完全相同的处理。
[0368]
即,能够使由预测信号生成部111d/241d使用偏移量进行的最终预测信号生成处理、与由仿射预测信号生成部111f/241f使用偏移量合成后的值进行的最终预测信号生成处理为相同的处理。
[0369]
由于如上所述,针对每个块排他地应用bdof处理及prof处理,所以上述相同的处理部分在硬件上实现时,可以在bdof处理及prof处理中共用处理电路。由此,可以期待削减电路规模。
[0370]
(变更例2)
[0371]
下面,参考图19及图20对上述实施方式的变更例2进行说明。下面,主要对与上述实施方式的不同点进行说明。在本变更例中,使用与上述实施方式不同的例子,对块边界检测部151/251中的块边界检测方法及边界强度判断部153/253中的边界强度的判断方法进行说明。
[0372]
下面,对块边界检测部151a进行说明,但在块边界检测部151b/251a/251b中,也可
以通过同样的处理来检测块边界。
[0373]
图19是示出块边界检测部151a的处理的一个例子的流程图。下面,将以cu为单位进行处理的情况作为例子进行说明。
[0374]
在步骤s191中,块边界检测部151a检测cu边界。由于块边界检测部151a是检测垂直方向的边界的处理块,所以将该cu左侧的垂直方向的边界检测为滤波处理对象的块边界。
[0375]
另外,“检测为块边界”例如相当于事先准备表示画面内的该像素位置是否为边界的二维标志序列(例如,“edgeflags[x][y]”),将检测为边界的像素位置的标志值设为“1”,将不是边界的像素位置的标志值设为“0”。
[0376]
此处,当该cu左侧的垂直方向的边界位于图片边界或切片边界或瓦片边界等编码单位的边界时,块边界检测部151a也可以不将该边界检测为块边界。
[0377]
块边界检测部151a在按照上述顺序检测出cu边界后,移至步骤s192。
[0378]
在步骤s192中,块边界检测部151a检测tu边界(变换块边界)。
[0379]
块边界检测部151a以该cu左侧的垂直方向的边界为起点,一边使水平方向的坐标每次增加4像素,使垂直方向的像素位置每次增加1像素,一边确认各像素位置是否为tu边界。当该像素位置为tu边界时,块边界检测部151a将该像素位置检测为块边界。
[0380]
块边界检测部151a在按照上述顺序检测出tu边界后,移至步骤s193。
[0381]
在步骤s193中,块边界检测部151a检测子块边界。
[0382]
在步骤s193中,作为检测对象的子块边界例如也可以是进行帧间预测后的cu的子块边界。
[0383]
此时,在上述子块边界中,可以包括由细化部111c/241c执行的dmvr处理中的子块(例如,16
×
16像素尺寸)的边界、及由仿射运动矢量算出部111e/241e及仿射预测信号生成部111f/241f进行的仿射运动补偿中的子块(例如,4
×
4像素尺寸)的边界这两者。
[0384]
在步骤s193中,作为检测对象的子块边界例如也可以是应用仿射运动补偿或“merge_subblock”后的cu的子块边界。
[0385]
另外,当在该cu中应用prof处理时,仿射运动补偿的子块与prof处理的子块一致。
[0386]
此处,在步骤s193中将仿射运动补偿的子块边界作为检测对象的情况下,当在该cu中应用prof处理时,块边界检测部151a也可以不将仿射运动补偿的子块边界及prof处理的子块边界作为检测对象。
[0387]
即,也可以仅当在该cu中应用仿射运动补偿且在该cu中不应用prof处理时,块边界检测部151a才将仿射运动补偿的子块边界作为检测对象。当然,对于应用prof处理的cu,块边界检测部151a也可以将仿射运动补偿的子块边界及prof处理的子块边界作为检测对象。
[0388]
另外,对于进行双向预测的块的子块边界,可以当在l0或l1中的至少任一者中应用prof处理时,块边界检测部151a便将该块视为“应用prof处理的cu”。并且,也可以仅当在l0及l1这两者中均应用prof处理时,块边界检测部151a才将该块视为“应用prof处理的cu”。在以下说明中也可以进行同样的解释。
[0389]
块边界检测部151a将该cu左侧的垂直方向的边界作为起点,一边使水平方向的坐标每次增加通过以下方法算出的子块尺寸,使垂直方向的像素位置每次增加1像素,一边确
认各像素位置是否为子块边界。
[0390]
当该像素位置为子块边界时,块边界检测部151a将该像素位置检测为块边界。此处,可以设为如下处理:即使该位置为子块边界,当对该cu应用prof处理时,块边界检测部151a也不将其检测为子块边界。
[0391]
例如,上述子块尺寸可以按照如下方式算出。
[0392]
子块尺寸=max(8,(ncbw/numsbx))
[0393]
此处,“ncbw”是该cu的宽度(水平方向的像素数),“numsbx”是该cu内的水平方向上包括的子块的数量。
[0394]
当使用上式时,是判断子块边界是否是以该cu左侧的垂直方向的边界为起点,且在水平方向上最小每隔8像素的位置处的子块边界。
[0395]
例如,上述子块尺寸还可以按照如下方式算出。
[0396]
子块尺寸=max(4,(ncbw/numsbx))
[0397]
此时,是判断子块边界是否是以该cu左侧的垂直方向的边界为起点,且在水平方向上最小每隔4像素的位置处的子块边界。
[0398]
即,块边界检测部151a构成为以对象块左端或上端的坐标为基准,以最小每隔4像素的间隔,判断对象像素位置是否为子块边界。
[0399]
块边界检测部151a在按照上述顺序检测出子块边界后,移至步骤s194,结束处理。
[0400]
以上以不对cu边界、tu边界、子块边界分别进行区分而是单纯地检测块边界为例进行了说明,但也可以对它们进行区分并存储。
[0401]
例如,可以区分成cu边界、tu边界、子块边界进行存储,也可以区分成tu边界、运动矢量边界。此时,cu边界被检测为tu边界及运动矢量边界这两者。并且,tu边界被检测为tu边界,子块边界被检测为运动矢量边界。该区分例如可以在下述边界强度判断部153a中使用。
[0402]
下面对边界强度判断部153a进行说明,在边界强度判断部153b/253a/253b中也可以进行完全相同的判断。
[0403]
边界强度判断部153a可以构成为当对象像素位置不是块边界时,将边界强度判断为“0”。
[0404]
即,块边界检测部151可以构成为不将应用prof处理的块内的子块检测为块边界,边界强度判断部153a可以构成为将未被检测为块边界的像素位置的边界强度判断为“0”,滤波确定部154可以构成为当边界强度为“0”时,确定不对块边界应用解块滤波。
[0405]
边界强度判断部153a也可以构成为基于表示对象块及相邻块是否为帧内预测块的控制数据,来判断块边界的边界强度。
[0406]
例如,如图20所示,边界强度判断部153a也可以构成为当对象块及相邻块中的至少任一个块是帧内预测块时(即,块边界两侧的块中的至少任一个是帧内预测块时),判断块边界的边界强度为“2”。
[0407]
边界强度判断部153a还可以构成为基于表示在对象块及相邻块中是否包含非零(zero)的正交变换系数、及块边界是否是变换块的边界的控制数据,来判断块边界的边界强度。
[0408]
例如,如图20所示,边界强度判断部153a也可以构成为当对象块及相邻块中的至
少任一个块包含非零的正交变换系数,且块边界是变换块的边界时(即,块边界两侧的块中的至少任一个中存在非零的变换系数,且是tu的边界时),判断块边界的边界强度为“1”。
[0409]
边界强度判断部153a还可以构成为基于表示对象块及相邻块的运动矢量的差的绝对值是否为阈值(例如1/2像素)以上的控制数据,来判断块边界的边界强度。此时,也可以构成为基于该块边界是否是应用prof处理的块内的子块边界,来判断边界的边界强度。
[0410]
例如,如图20所示,边界强度判断部153a也可以构成为当对象块及相邻块的运动矢量的差的绝对值为阈值(例如1/2像素)以上时(即,块边界两侧的块的运动矢量的差的绝对值为阈值(例如1/2像素)以上时),且该块边界不是步骤s95中判断出应用prof处理的块的子块(4
×
4像素块)边界时,判断块边界的边界强度为“1”。
[0411]
即,边界强度判断部153a也可以构成为对每个块边界判断边界强度,并构成为当该块边界两侧的块的运动矢量的差的绝对值为1/2像素以上,且该块边界不是应用prof处理后的子块边界时,将边界强度判断为“1”。
[0412]
此处,滤波确定部154也可以构成为当边界强度为“0”时,确定不对块边界应用解块滤波。
[0413]
例如,边界强度判断部153a也可以构成为当对象块及相邻块的运动矢量的差的绝对值为阈值(例如1/2像素)以上时(即,块边界两侧的块的运动矢量的差的绝对值为阈值(例如1/2像素)以上时),且该块边界两侧的块不是步骤s95中判断出应用prof处理的块时,判断块边界的边界强度为“1”。
[0414]
例如,边界强度判断部153a也可以构成为当对象块及相邻块的运动矢量的差的绝对值为阈值(例如1/2像素)以上时(即,块边界两侧的块的运动矢量的差的绝对值为阈值(例如1/2像素)以上时),且该块边界处至少任一个块不是步骤s95中判断出应用prof处理的块时,判断块边界的边界强度为“1”。
[0415]
另外,对于进行双向预测的块的子块边界,当在l0或l1中的至少任一者中应用prof处理时,也可以视为“判断出应用prof处理的块”。即,在该情况下,当未在l0及l1这两者中应用prof处理时,在运动矢量的差为阈值以上时,将边界强度判断为“1”。
[0416]
即,边界强度判断部153a也可以构成为当对象块为双向预测时,且对两个参考帧中的至少任一个应用了prof处理时,便视为对对象块应用了prof处理。
[0417]
还可以仅当在l0及l1这两者中应用prof处理时,才视为“判断出应用prof处理的块”。即,在该情况下,当仅在l0或l1中应用了prof处理时,且运动矢量的差为阈值以上时,将边界强度判断为“1”。
[0418]
并且,作为另一个例子,也可以进行如下判断:对于应用了prof处理的块边界,在判断边界强度时,不判断运动矢量的差,或将运动矢量的差视为“0”。作为具体示例,可以按照如下方式来判断。
[0419]
当该块是进行单向预测的块,且在该块中应用prof时,在判断子块边界的边界强度时,不判断运动矢量的差,或将运动矢量的差视为“0”。
[0420]
当该块是进行双向预测的块,且l0侧的参考帧与l1侧的参考帧不同时,在l0侧及l1侧中应用prof的预测方向(仅l0、仅l1或两者)上,不判断运动矢量的差,或将运动矢量的差视为“0”。
[0421]
当该块是进行双向预测的块,且l0侧的参考帧与l1侧的参考帧是同一帧时,当在
l0侧应用prof时,不判断该子块边界两侧的l0的运动矢量之间的差,或将该子块边界两侧的l0的运动矢量之间的差视为“0”。
[0422]
同样地,当在l1侧应用prof时,不判断该子块边界两侧的l1的运动矢量之间的差,或将该子块边界两侧的l1的运动矢量之间的差视为“0”。
[0423]
在该情况下,如以往那样,l0与l1之间的运动矢量的差用于判断边界强度。具体来说,例如,该子块边界左侧的子块的l0侧的运动矢量与该子块边界右侧的子块的l1侧的运动矢量的差用于判断边界强度。
[0424]
即,边界强度判断部153a也可以构成为在判断对象边界两侧的块在相同预测方向上各自的运动矢量的差时,当在该预测方向上应用prof处理时,不判断该预测方向上各自的运动矢量的差,或将该预测方向上各自的运动矢量的差视为“0”。
[0425]
或者,在该块是进行双向预测的块,且l0侧的参考帧与l1侧的参考帧是同一帧时,当该子块边界两侧的运动矢量分别应用prof时,也可以不判断运动矢量的差,或将运动矢量的差视为“0”。
[0426]
在该情况下,例如,当在l0侧及l1侧这两者中应用prof时,也不判断l0与l1间的运动矢量的差,或将l0与l1间的运动矢量的差视为“0”,这一点与上述例子不同。
[0427]
边界强度判断部153a还可以构成为基于表示对象块及相邻块的运动矢量的预测所参考的参考块是否不同的控制数据,来判断块边界的边界强度。
[0428]
例如,如图20所示,边界强度判断部153a也可以构成为当对象块及相邻块的运动矢量的预测所参考的参考块不同时(即,在块边界两侧的块中参考图像不同时),判断块边界的边界强度为“1”。
[0429]
边界强度判断部153a也可以构成为基于表示对象块及相邻块的运动矢量的个数是否不同的控制数据,来判断块边界的边界强度。
[0430]
例如,如图20所示,边界强度判断部153a也可以构成为当对象块及相邻块的运动矢量的个数不同时(即,在块边界两侧的块中运动矢量的个数不同时),判断块边界的边界强度为“1”。
[0431]
以上对使用运动矢量或参考块来判断边界强度的方法的例子进行了说明,但也可以仅对检测为上述cu边界、子块边界或运动矢量边界的块边界,进行使用运动矢量或参考块的判断。
[0432]
换句话说,也可以在是tu边界、但不是子块边界或运动矢量边界的块边界,跳过使用运动矢量或参考块的判断。此时,在tu边界,仅确认在边界两侧的块中的至少任一个中是否存在非零的正交变换系数。
[0433]
例如,如图20所示,边界强度判断部153a也可以构成为当上述条件均不被满足时,判断块边界的边界强度为“0”。
[0434]
即,仿射预测信号生成部111f/241f构成为对每个块判断prof是否适合,且当应用该prof处理时,对将块分割所得的每个子块进行prof处理。
[0435]
并且,环路滤波处理部150/250构成为对每个块边界判断解块滤波是否适合,且确定不对应用prof处理后的块的子块边界应用解块滤波。
[0436]
通过设为上述构成,应用prof处理后的块边界或子块边界的边界强度为“0”,从而不再应用解块滤波。由于prof处理具有提高主观画质的效果,因此,通过设为这种构成,能
够防止以下情况:由于利用解块滤波对块边界的像素值进行校正,反而损害主观画质。
[0437]
并且,上述图像编码装置100及图像解码装置200也可以通过使计算机执行各功能(各步骤)的程序来实现。
[0438]
另外,在上述各实施方式中,以将本发明应用于图像编码装置100及图像解码装置200为例进行了说明,但本发明并不仅限于此例,同样也可以应用于具有图像编码装置100及图像解码装置200的各功能的图像编码/解码系统。
[0439]
根据本发明,能够通过使bdof处理与prof处理内的各变量的比特宽度一致,来共用电路,从而减小电路规模。
[0440]
[符号说明]
[0441]
10:图像处理系统;100:图像编码装置;111、241:帧间预测部;111a:运动矢量搜索部;111b:运动矢量编码部;111c、241c:细化部;111d、241d:预测信号生成部;111e、241e:仿射运动矢量算出部;111f、241f:仿射预测信号生成部;112、242:帧内预测部;121:减法器;122、230:加法器;131:变换及量化部;132、220:逆变换及逆量化部;140:编码部;150、250:环路滤波处理部;160、260:帧缓冲器;200:图像解码装置;210:解码部;241b:运动矢量解码部。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献