具体实施方式
(第一实施方式)
以下,参照附图对本发明的实施方式进行说明。
图1是表示本实施方式的图像传输系统1的构成的概略图。
图像传输系统1是传输对编码对象图像进行编码而得到的编码流,对所传输的编码流进行解码并显示图像的系统。图像传输系统1构成为包括:运动图像编码装置(图像编码装置)11、网络21、运动图像解码装置(图像解码装置)31以及运动图像显示装置(图像显示装置)41。
运动图像编码装置11被输入图像T。
网络21将运动图像编码装置11生成的编码流Te传输至运动图像解码装置31。网络21是互联网(Internet)、广域网(WAN:Wide Area Network)、小型网络(LAN:Local AreaNetwork,局域网)或它们的组合。网络21不一定限定于双向的通信网,也可以是传输地面数字广播、卫星广播等广播波的单向的通信网。此外,网络21也可以用DVD(DigitalVersatile Disc:数字通用光盘,注册商标)、BD(Blue-ray Disc:蓝光光盘,注册商标)等记录有编码流Te的存储介质代替。
运动图像解码装置31对网络21所传输的编码流Te分别进行解码,生成解码后的一个或多个解码图像Td。
运动图像显示装置41显示运动图像解码装置31所生成的一个或多个解码图像Td的全部或一部分。运动图像显示装置41例如具备液晶显示器、有机EL(Electro-luminescence:电致发光)显示器等显示设备。作为显示器的形式,可列举出固定式、移动式、HMD等。此外,在运动图像解码装置31具有高处理能力的情况下显示画质高的图像,在仅具有较低处理能力的情况下显示不需要高处理能力、高显示能力的图像。
<运算符>
以下记述在本说明书中使用的运算符。
>>为向右位移,<<为向左位移,&为逐位AND,|为逐位OR,|=为OR代入运算符,||表示逻辑和。
x?y:z是在x为真(0以外)的情况下取y、在x为假(0)的情况下取z的3项运算符。
Clip3(a,b,c)是将c裁剪到a以上b以下的值的函数,是在c<a的情况下返回a、在c>b的情况下返回b、在其他情况下返回c的函数(其中a<=b)。
abs(a)是返回a的绝对值的函数。
Int(a)是返回a的整数值的函数。
floor(a)是返回a以下的最大整数的函数。
ceil(a)是返回a以上的最小整数的函数。
a/d表示a除以d(舍去小数点以下)。
sign(a)是返回a的记号(sign)的函数。
a^b表示a的b次方。
<编码流Te的结构>
在对本实施方式的运动图像编码装置11和运动图像解码装置31进行详细说明之前,对由运动图像编码装置11生成并由运动图像解码装置31进行解码的编码流Te的数据结构进行说明。
图4是表示编码流Te中的数据的分级结构的图。编码流Te示例性地包括序列和构成序列的多张图片。图4的(a)~(f)分别是表示既定序列SEQ的编码视频序列、规定图片PICT的编码图片、规定切片S的编码切片、规定切片数据的编码切片数据、编码切片数据中所包括的编码树单元以及编码树单元中所包括的编码单元的图。
(编码视频序列)
在编码视频序列中,规定有供运动图像解码装置31参照以便对处理对象的序列SEQ进行解码的数据的集合。序列SEQ如图4的(a)所示,包括视频参数集(Video ParameterSet)、序列参数集SPS(Sequence Parameter Set)、图片参数集PPS(Picture ParameterSet)、图片PICT以及补充增强信息SEI(Supplemental Enhancement Information)。
视频参数集VPS在由多层构成的运动图像中,规定有多个运动图像通用的编码参数的集合,以及运动图像中包括的多层和与各层关联的编码参数的集合。
在序列参数集SPS中,规定有供运动图像解码装置31参照以便对对象序列进行解码的编码参数的集合。例如,规定有图片的宽度、高度。需要说明的是,SPS可以存在多个。在该情况下,从PPS中选择多个SPS中的任一个。
在图片参数集PPS中,规定有供运动图像解码装置31参照以便对对象序列内的各图片进行解码的编码参数的集合。例如包括用于图片的解码的量化宽度的基准值(pic_init_qp_minus26)、指示加权预测的应用的标志(weighted_pred_flag)。需要说明的是,PPS可以存在多个。在该情况下,从对象序列内的各图片中选择多个PPS中的任一个。
(编码图片)
在编码图片中,规定有供运动图像解码装置31参照以便对处理对象的图片PICT进行解码的数据的集合。图片PICT如图4的(b)所示,包括切片0~切片NS-1(NS为图片PICT中所包括的切片的总数)。
需要说明的是,以下,在无需对各切片0~切片NS-1进行区分的情况下,有时会省略代码的下标来进行记述。此外,以下所说明的编码流Te中包括的且带有下标的其他数据也是同样的。
(编码切片)
在编码切片中,规定有供运动图像解码装置31参照以便对处理对象的切片S进行解码的数据的集合。切片如图4的(c)所示包括切片标头和切片数据。
切片报头中包括供运动图像解码装置31参照以便确定对象切片的解码方法的编码参数组。指定切片类型的切片类型指定信息(slice_type)是切片报头中包括的编码参数的一个示例。
作为能由切片类型指定信息指定的切片类型,可列举出:(1)在进行编码时仅使用帧内预测的I切片、(2)在进行编码时使用单向预测或帧内预测的P切片以及(3)在进行编码时使用单向预测、双向预测或帧内预测的B切片等。需要说明的是,帧间预测不限于单向预测、双向预测,也可以使用更多的参照图片来生成预测图像。以下,称为P、B切片的情况是指包括能使用帧间预测的块的切片。
需要说明的是,切片报头中也可以包括对图片参数集PPS的参照(pic_parameter_set_id)。
(编码切片数据)
在编码切片数据中,规定有供运动图像解码装置31参照以便对处理对象的切片数据进行解码的数据的集合。切片数据如图4的(d)所示包括CTU。CTU是构成切片的固定大小(例如64×64)的块,也称为最大编码单位(LCU:Largest Coding Unit)。
(编码树单元)
在图4的(e)中,规定有供运动图像解码装置31参照以便对处理对象的CTU进行解码的数据的集合。CTU通过递归的四叉树分割(QT(Quad Tree)分割)、二叉树分割(BT(Binary Tree)分割)或三叉树分割(TT(Ternary Tree)分割)分割成作为编码处理的基本单位的编码单元CU。将BT分割和TT分割统称为多叉树分割(MT(Multi Tree)分割)。将通过递归的四叉树分割而得到的树形结构的节点称为编码节点(Coding Node)。四叉树、二叉树以及三叉树的中间节点为编码节点,CTU本身也被规定为最上层的编码节点。
CT包括以下信息作为CT信息:表示是否进行QT分割的QT分割标志(qt_split_cu_flag)、表示有无MT分割的MT分割标志(mtt_split_cu_flag)、表示MT分割的分割方向的MT分割方向(mtt_split_cu_vertical_flag)、表示MT分割的分割类型的MT分割类型(mtt_split_cu_binary_flage)。qt_split_cu_flag、mtt_split_cu_flag、mtt_split_cu_vertical_flag、mtt_split_cu_binary_flag按每个编码节点传输。
图5是表示CTU的分割例的图。在qt_split_cu_flag为1的情况下,编码节点分割成4个编码节点(图5的(b))。
在qt_split_cu_flag为0时,mtt_split_cu_flag为0的情况下,不分割编码节点,而保持1个CU作为节点(图5的(a))。CU为编码节点的末端节点,且不进行进一步分割。CU为编码处理的基本单位。
在mtt_split_cu_flag为1的情况下如下所述地对编码节点进行MT分割。在mtt_split_cu_vertical_flag为0且mtt_split_cu_binary_flag为1的情况下将编码节点水平分割成2个编码节点(图5的(d)),在mtt_split_cu_vertical_flag为1且mtt_split_cu_binary_flag为1的情况下将编码节点垂直分割成2个编码节点(图5的(c))。此外,在mtt_split_cu_vertical_flag为0且mtt_split_cu_binary_flag为0的情况下将编码节点水平分割成3个编码节点(图5的(f)),在mtt_split_cu_vertical_flag为1且mtt_split_cu_binary_flag为0的情况下将编码节点垂直分割成3个编码节点(图5的(e))。将它们在图5的(g)中示出。
此外,在CTU的大小为64×64像素的情况下,CU的大小可以取64×64像素、64×32像素、32×64像素、32×32像素、64×16像素、16×64像素、32×16像素、16×32像素、16×16像素、64×8像素、8×64像素、32×8像素、8×32像素、16×8像素、8×16像素、8×8像素、64×4像素、4×64像素、32×4像素、4×32像素、16×4像素、4×16像素、8×4像素、4×8像素以及4×4像素中的任一种。
(编码单元)
如图4的(f)所示,规定有供运动图像解码装置31参照以便对处理对象的编码单元进行解码的数据的集合。具体而言,CU由CU报头CUH、预测参数、变换参数、量化变换系数等构成。在CU报头中规定有预测模式等。
预测处理存在以CU为单位进行的情况和以进一步分割CU而得到的子CU为单位进行的情况。在CU与子CU的大小相等的情况下,CU中的子CU为1个。在CU的大小大于子CU的大小的情况下,CU被分割成子CU。例如,在CU为8×8、子CU为4×4的情况下,CU被分割成4个子CU,包括水平分割的两部分和垂直分割的两部分。
预测的种类(预测模式)存在帧内预测和帧间预测两种。帧内预测是同一图片内的预测,帧间预测是指在互不相同的图片间(例如显示时刻间)进行的预测处理。
变换/量化部处理以CU为单位来进行,但量化变换系数也可以以4×4等子块为单位来进行熵编码。
(预测参数)
预测图像由附加于块的预测参数推导。预测参数中存在帧内预测和帧间预测的预测参数。
以下,对帧间预测的预测参数进行说明。帧间预测参数由预测列表利用标志predFlagL0、predFlagL1、参照图片索引refIdxL0、refIdxL1以及运动矢量mvL0、mvL1构成。预测列表利用标志predFlagL0、predFlagL1是表示是否使用各个被称为L0列表、L1列表的参照图片列表的标志,在值为1的情况下使用对应的参照图片列表。需要说明的是,在本说明书中记为“表示是否为××的标志”的情况下,将标志为0以外(例如1)设为是××的情况,将标志为0设为不是××的情况,在逻辑非、逻辑积等中将1视为真,将0视为假(以下同样)。不过,在实际的装置、方法中也可以使用其他值作为真值、假值。
用于推导帧间预测参数的语法要素中,例如有仿射标志affine_flag、合并标志merge_flag、合并索引merge_idx、帧间预测标识符inter_pred_idc、参照图片索引refIdxLX、预测矢量索引mvp_LX_idx、差分矢量mvdLX以及运动矢量精度模式amvr_mode。
(参照图片列表)
参照图片列表是由存储于参照图片存储器306的参照图片构成的列表。图6是表示参照图片和参照图片列表的一个示例的概念图。在图6的(a)中,矩形表示图片,箭头表示图片的参照关系,横轴表示时间,矩形中的I、P、B分别表示帧内图片、单向预测图片、双向预测图片,矩形中的数字表示解码顺序。如图6的(a)所示,图片的解码顺序为I0、P1、B2、B3、B4,显示顺序为I0、B3、B2、B4、P1。图6的(b)中示出图片B3(对象图片)的参照图片列表的示例。参照图片列表是表示参照图片的候选的列表,一张图片(切片)可以具有一个以上的参照图片列表。在图6的(b)的示例中,对象图片B3具有L0列表RefPicList0和L1列表RefPicList1这两个参照图片列表。在各CU中,由参照图片索引refIdxLX指定实际上以参照图片列表RefPicListX(X=0或1)中的哪一张图片来进行参照。图6的(b)是refIdxL0=2、refIdxL1=0的示例。需要说明的是,LX是在不对L0预测和L1预测进行区分的情况下使用的记述方法,以下,通过将LX置换为L0、L1对针对L0列表的参数和针对L1列表的参数进行区分。
(合并预测和AMVP预测)
预测参数的解码(编码)方法中有合并预测(merge)模式和AMVP(Advanced MotionVector Prediction:先进运动矢量预测、自适应运动矢量预测)模式,合并标志merge_flag是用于识别它们的标志。合并预测模式是不将预测列表利用标志predFlagLX(或帧间预测标识符inter_pred_idc)、参照图片索引refIdxLX、运动矢量mvLX包括于编码数据而从已处理的附近块的预测参数推导出并使用的模式。AMVP模式是将帧间预测标识符inter_pred_idc、参照图片索引refIdxLX、运动矢量mvLX包括于编码数据的模式。需要说明的是,运动矢量mvLX被编码为识别预测矢量mvpLX的预测矢量索引mvp_LX_idx、差分矢量mvdLX以及运动矢量精度模式amvr_mode。合并预测模式是选择从邻接块的运动信息等推导出的合并候选来获得运动矢量mvLX(运动矢量信息)的模式。此外,除了合并预测模式之外,还可以有通过仿射标志affine_flag识别的仿射预测模式。作为合并预测模式的一个方式,可以有通过跳过标志skip_flag识别的跳过模式。需要说明的是,跳过模式是指通过与合并模式同样的方法推导出预测参数并使用的模式,并且是不将预测误差(残差图像、残差信息)包括在编码数据中的模式。换言之,在跳过标志skip_flag为1的情况下,关于对象CU,仅包括该跳过标志skip_flag和合并索引merge_idx等与合并模式关联的语法,运动矢量、残差信息等不包括于编码数据。
(运动矢量)
运动矢量mvLX表示不同的两张图片上的块间的移位量。将与运动矢量mvLX有关的预测矢量、差分矢量分别称为预测矢量mvpLX、差分矢量mvdLX。
(帧间预测标识符inter_pred_idc和预测列表利用标志predFlagLX)
帧间预测标识符inter_pred_idc是表示参照图片的种类和数量的值,取PRED_L0、PRED_L1、PRED_BI中的任一值。PRED_L0、PRED_L1分别表示使用在L0列表、L1列表中进行管理的一张参照图片的单向预测。PRED_BI表示使用在L0列表和L1列表中进行管理的两张参照图片的双向预测BiPred。
合并索引merge_idx是表示是否将从处理已完成的块推导出的预测参数候选(合并候选)中的任一个预测参数用作对象块的预测参数的索引。
帧间预测标识符inter_pred_idc与预测列表利用标志predFlagL0、predFlagL1的关系能如下进行相互变换。
inter_pred_idc=(predFlagL1<<1)+predFlagL0
predFlagL0=inter_pred_idc&1
predFlagL1=inter_pred_idc>>1
(双向预测biPred的判定)
是否为双向预测BiPred的标志biPred能根据两个预测列表利用标志是否均为1而推导出。例如能通过以下算式推导出。
biPred=(predFlagL0==1&&predFlagL1==1)
或者,标志biPred也能根据帧间预测标识符是否是表示使用两个预测列表(参照图片)的值而推导出。例如能通过以下算式推导出。
biPred=(inter_pred_idc==PRED_BI)?1∶0
(运动图像解码装置的构成)
对本实施方式的运动图像解码装置31(图7)的构成进行说明。
运动图像解码装置31构成为包括:熵解码部301、参数解码部302、环路滤波器305、参照图片存储器306、预测参数存储器307、预测图像生成部(预测图像生成装置)308、逆量化/逆变换部311以及加法部312。需要说明的是,根据后文所述的运动图像编码装置11,也存在运动图像解码装置31中不包括环路滤波器305的构成。
参数解码部302还具备未图示的报头解码部3020、CT信息解码部3021以及CU解码部3022(预测模式解码部),CU解码部3022还具备TU解码部3024。也可以将它们统称为解码模块。报头解码部3020从编码数据解码VPS、SPS、PPS等参数集信息、切片报头(切片信息)。CT信息解码部3021从编码数据解码CT。CU解码部3022从编码数据解码CU。TU解码部3024在TU中包括预测误差的情况下,从编码数据解码QP更新信息(量化校正值)和量化预测误差(residual_coding)。
TU解码部3024在跳过模式以外(skip_mode==0)的情况下从编码数据解码QP更新信息(量化校正值)和量化预测误差(residual_coding)。更具体而言,TU解码部3024在skip_mode==0的情况下,从编码数据解码表示对象块中是否包括量化预测误差的标志cu_cbp,在cu_cbp为1的情况下对量化预测误差进行解码。在cu_cbp不存在于编码数据的情况下,TU解码部3024将cu_cbp推导为0。
此外,参数解码部302构成为包括未图示的帧间预测参数解码部303和帧内预测参数解码部304。预测图像生成部308构成为包括帧间预测图像生成部309和帧内预测图像生成部310。
此外,在下文中对将CTU、CU用作处理单位的示例进行了记载,但不限于此,也可以以子CU为单位进行处理。或者,也可以设为将CTU、CU替换为块,将子CU替换为子块,以块或者子块为单位进行的处理。
熵解码部301对从外部输入的编码流Te进行熵解码,对各个编码(语法要素)进行解码。解码后的代码中存在用于生成预测图像的预测信息和用于生成差分图像的预测误差等。
熵解码部301将解码后的代码输出至参数解码部302。解码后的代码例如是指predMode、merge_flag、merge_idx、inter_pred_idc、refIdxLX、mvp_LX_idx、mvdLX、amvr_mode等。基于参数解码部302的指示来进行对哪一个代码进行解码的控制。
(帧间预测参数解码部的构成)
帧间预测参数解码部303基于从熵解码部301输入的代码,参照存储于预测参数存储器307的预测参数来对帧间预测参数进行解码。此外,帧间预测参数解码部303将解码后的帧间预测参数输出至预测图像生成部308,存储于预测参数存储器307。
图8是表示本实施方式的帧间预测参数解码部303的构成的概略图。帧间预测参数解码部303构成为包括:合并预测部30374、DMVR部30375、子块预测部(仿射预测部)30372、MMVD预测部30376、三角形(Triangle)预测部30377、AMVP预测参数推导部3032以及加法部3038。合并预测部30374构成为包括合并预测参数推导部3036。AMVP预测参数推导部3032、合并预测参数推导部3036、仿射预测部30372是在运动图像编码装置、运动图像解码装置中通用的部,因此也可以将这些总称为运动矢量推导部(运动矢量推导装置)。
(仿射预测部)
仿射预测部30372推导出对象块的仿射预测参数。在本实施方式中,作为仿射预测参数,推导出对象块的两个控制点(V0、V1)的运动矢量(mv0_x,mv0_y)(mv1_x,mv1_y)。具体而言,可以通过根据对象块的邻接块的运动矢量进行预测来推导出各控制点的运动矢量,也可以通过被推导为控制点的运动矢量的预测矢量与从编码数据推导出的差分矢量之和推导出各控制点的运动矢量。
图10是表示从控制点V0的运动矢量(mv0_x,mv0_y)和V1的运动矢量(mv1_x,mv1_y)推导出构成对象块(bW×bH)的各子块的运动矢量spMvLX的示例的图。各子块的运动矢量spMvLX如图10所示地推导为位于各子块的中心的每个点的运动矢量。
仿射预测部30372基于对象块的仿射预测参数,使用下述的算式推导出对象块中的各子块的运动矢量spMvLX[xi][yi](xi=xPb+sbW*i、yj=yPb+sbH*j、i=0,1,2……bW/sbW-1、j=0,1,2……bH/sbH-1)。
spMvLX[xi][yi][0]=mv0_x+(mv1_x-mv0_x)/bW*(xi+sbW/2)-(mv1_y-mv0_y)/bH*(yi+sbH/2)
spMvLX[xi][yi][1]=mv0_y+(mv1_y-mv0_y)/bW*(xi+sbW/2)+(mv1_x-mv0_x)/bH*(yi+sbH/2)
(合并预测)
图9的(a)是表示合并预测部30374中所包括的合并预测参数推导部3036的构成的概略图。合并预测参数推导部3036具备合并候选推导部30361、合并候选选择部30362。需要说明的是,合并候选构成为包括:预测列表利用标志predFlagLX、运动矢量mvLX以及参照图片索引refIdxLX,储存于合并候选列表。索引按照规定的规则被分配至储存于合并候选列表的合并候选。
合并候选推导部30361直接使用已解码的邻接块的运动矢量和参照图片索引refIdxLX来推导出合并候选。
储存于合并候选列表mergeCandList[]的顺序例如是空间合并候选A1、B1、B0、A0、B2、时间合并候选Col、成对合并候选avgK、零合并候选ZK。需要说明的是,不可利用的(块为帧内预测等)参照块不储存于合并候选列表。
合并候选选择部30362通过以下的算式选择合并候选列表中所包括的合并候选中的合并索引merge_idx所示的合并候选N。
N=mergeCandList[merge_idx]
在此,N是表示合并候选的标签,取A1、B1、B0、A0、B2、Col、avgK、ZK等。标签N所示的合并候选的运动信息由(mvLXN[0],mvLXN[1])、predFlagLXN、refIdxLXN表示。
合并候选选择部30362将所选出的合并候选的运动信息(mvLXN[0],mvLXN[1])、predFlagLXN、refIdxLXN选作对象块的帧间预测参数。合并候选选择部30362将所选出的合并候选的的帧间预测参数存储于预测参数存储器307,并且输出至预测图像生成部308。
(AMVP预测)
图9的(b)是表示本实施方式的AMVP预测参数推导部3032的构成的概略图。AMVP预测参数推导部3032具备矢量候选推导部3033和矢量候选选择部3034。矢量候选推导部3033基于参照图片索引refIdxLX,根据预测参数存储器307所存储的已解码的邻接块的运动矢量mvLX推导出预测矢量候选,并储存于预测矢量候选列表mvpListLX[]。
矢量候选选择部3034选择预测矢量候选列表mvpListLX[]的预测矢量候选中的预测矢量索引mvp_LX_idx所示的运动矢量mvpListLX[mvp_LX_idx]作为预测矢量mvpLX。矢量候选选择部3034将所选出的预测矢量mvpLX输出至加法部3038。
需要说明的是,预测矢量候选通过对距对象块预先设定的范围的已解码邻接块的运动矢量进行缩放来推导出。需要说明的是,邻接块除了包括与对象块空间上邻接的块,例如左块、上块以外,还包括与对象块时间上邻接的区域,例如,根据包含与对象块相同的位置,显示时刻不同的块的预测参数获得的区域。
加法部3038将从AMVP预测参数推导部3032输入的预测矢量mvpLX和已解码的差分矢量mvdLX相加,计算出运动矢量mvLX。加法部3038将计算出的运动矢量mvLX输出至预测图像生成部308和预测参数存储器307。
mvLX[0]=mvpLX[0]+mvdLX[0]
mvLX[1]=mvpLX[1]+mvdLX[1]
运动矢量精度模式amvr_mode是切换在AMVP模式下推导出的运动矢量的精度的语法,例如在amvr_mode=0、1、2时切换1/4像素、1像素、4像素精度。
在将运动矢量的精度设为1/16精度(MVPREC=16)的情况下,可以如下所述地使用由amvr_mode推导出的MvShift(=1<<amvr_mode)来进行逆量化,用于将1/4、1、4像素精度的运动矢量差分变更为1/16像素精度的运动矢量差分。
mvdLX[0]=mvdLX[0]<<(MvShift+2)
mvdLX[1]=mvdLX[1]<<(MvShift+2)
需要说明的是,参数解码部302还可以对以下的语法进行解码来推导出通过上述MvShift移位前的mvdLX[]。
·abs_mvd_greater0_flag
·abs_mvd_minus2
·mvd_sign_flag
然后,参数解码部302通过使用以下的算式从语法解码差分矢量lMvd[]。
lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx])
而且,在平移MVD的情况(MotionModelIdc[x][y]==0)下将解码后的差分矢量lMvd[]设定为MvdLX,在控制点MVD的情况(MotionModelIdc[x][y]!=0)下,将解码后的差分矢量lMvd[]设定为MvdCpLX。
(运动矢量缩放)
对运动矢量的缩放的推导方法进行说明。当设为运动矢量Mv(参照运动矢量)、包括具有Mv的块的图片PicMv、Mv的参照图片PicMvRef、包括缩放后的运动矢量sMv、具有sMv的块的图片CurPic、sMv所参照的参照图片CurPicRef时,sMv的推导函数MvScale(Mv,PicMv,PicMvRef,CurPic,CurPicRef)通过以下算式表示。
sMv=MvScale(Mv,PicMv,PicMvRef,CurPic,CurPicRef)
=Clip3(-R1,R1-1,sign(distScaleFactor*Mv)*((abs(distScaleFactor*Mv)+round1-1)>>shift1))
distScaleFactor=Clip3(-R2,R2-1,(tb*tx+round2)>>shift2)
tx=(16384+abs(td)>>1)/td
td=DiffPicOrderCnt(PicMv,PicMvRef)
tb=DiffPicOrderCnt(CurPic,CurPicRef)
在此,round1,round2,shift1,shift2是用于使用倒数进行除法的舍入值和移位值,例如,round1=1<<(shift1-1)、round2=1<<(shift2-1)、shift1=8、shift2=6等。DiffPicOrderCnt(Pic1,Pic2)是返回Pic1与Pic2的时间信息(例如POC)之差的函数。R1、R2是对值域进行限制,以通过被限定的精度进行处理的值,例如,R1=32768、R2=4096等。
此外,缩放函数MvScale(Mv,PicMv,PicMvRef,CurPic,CurPicRef)可以是以下的算式。
MvScale(Mv,PicMv,PicMvRef,CurPic,CurPicRef)=Mv*DiffPicOrderCnt(CurPic,CurPicRef)/DiffPicOrderCnt(PicMv,PicMvRef)
即,可以根据CurPic与CurPicRef的时间信息之差和PicMv与PicMvRef的时间信息之差的比对Mv进行缩放。
(DMVR)
接着,对DMVR部30375所进行的DMVR(Decoder side Motion Vector Refinement:解码器侧运动矢量细化)处理进行说明。DMVR部30375在针对对象CU满足以下的条件的情况下使用参照图像来修正合并预测部30374所推导出的该对象CU的运动矢量mvLX。
-指示针对对象CU,merge_flag应用合并模式或skip_flag应用跳过模式。
-指示针对对象CU,affine_flag未使用仿射模式。
-对象CU为双向预测。
-针对参照图片满足以下的等式(相对于对象图片,两张参照图片为相反方向,并且距离对象图片相同的POC距离(POC的差分))。
POC_current-POC0=POC1-POC_current
-对象CU的大小大于规定的值。例如,CU的宽度和高度之和大于12。
DMVR处理由以下的步骤构成。
步骤0:获取合并索引所指示的初始(initial)矢量。此时,通过四舍五入将运动矢量的值整数化并设为初始整数矢量。
步骤1:求出搜索点的块的像素值的平均值。
步骤2:计算合并候选的运动矢量(初始矢量)所指的点和其附近的4个点的MRSAD成本(cost),求出成本最小的点。
步骤3:计算步骤2的成本最小的点和其附近8个点的MRSAD成本,求出成本最小的点,将初始(initial)矢量(未整数化)修正最小的点的整数像素,并设为细化运动矢量。
步骤4:在步骤2和步骤3中运动矢量未从初始整数矢量变更的情况下,使用误差面方程(error surface equation)来获取小数精度的细化(refinement)运动矢量。
步骤5:基于细化运动矢量,使用8-tap(抽头)的插值滤波器来获取最终的预测图像。
在步骤2和3中,MRSAD成本通过以下的算式来计算。
MRSAD=ΣΣabs(Temp_L0[xi][yi]-Temp_L1[xi][yi]-AVE(Temp_L0)+AVE(Temp_L1))
在此,AVE为块内的像素值的平均值。即,
AVE(Temp_L0)=ΣΣTemp_L0[xi][yi]/(BH*BW)
AVE(Temp_L1)=ΣΣTemp_L1[xi][yi]/(BH*BW)。BH为块的垂直方向的像素数,BW为块的水平方向的像素数。
在步骤4中,误差面方程如下所示。
E(x,y)=A(x-x0)^2+B(y-y0)^2+C
在此,将以初始矢量所指的点为中心(0,0)的4个附近位置(-1,0)、(0,-1)、(1,0)、(0,1)的成本设为E(-1,0)、E(0,-1)、E(1,0)、E(0,1)来推导出(x0,y0)。
x0=(E(-1,0)-E(1,0))/(2(E(-1,0)+E(1,0)-2E(0,0)))
y0=(E(0,-1)-E(0,1))/(2(E(0,-1)+E(0,1)-2E(0,0)))
需要说明的是,细化运动矢量mvL0’、mvL1’和细化前的运动矢量mvL0、mvL1满足以下的等式。
mvL0’-mvL0=mvL1-mvL1’
细化运动矢量mvLX供给至帧间预测图像生成部309。
细化运动矢量mvLX可以用于去块动作和时间上的运动矢量(temporal motionvector)预测。
此外,在空间上的运动矢量(spatial motion vector)预测中使用来自上和左上的CTU的细化运动矢量mvLX。不过,在合并候选的运动矢量不是上和左上的CTU的情况下使用未细化的运动矢量。
在此,示出了使用MRSAD作为误差评估值的方法,但也可以使用作为绝对值差分和的SAD值SAD=ΣΣabs(Temp_L0[xi][yi]-Temp_L1[xi][yi])。在该情况下,不需要步骤1的求出块的平均值的处理。
(三角形预测)
接着,对三角形预测进行说明。在三角形预测中,以对角线或相反的对角线为边界,将对象CU分割成两个三角形的预测单位。各三角形预测单位中的预测图像通过对对象CU(包括三角形预测单位的矩形块)的预测图像的各像素进行与像素的位置对应的加权并实施掩码处理来推导出。例如,能通过乘以将矩形区域内的三角形区域的像素设为1,将三角形以外的区域设为0的掩码,从矩形图像推导出三角形图像。对夹住对角线的双方的区域应用预测图像的自适应的加权处理,通过使用两个预测图像的自适应的加权处理来推导出对象CU(矩形块)的一个预测图像。将该处理称为三角形合成处理。在三角形合成处理中,变换(逆变换)和量化(逆量化)处理应用于整个对象CU。需要说明的是,三角形预测仅在合并预测模式或跳过模式的情况下应用。
三角形预测部30377推导出与用于三角形预测的两个三角形区域对应的预测参数,供给至帧间预测图像生成部309。在三角形预测中,为了处理的简略化,也可以是不使用双向预测的构成。在该情况下,在一个三角形区域中推导出单向预测的帧间预测参数。需要说明的是,两个预测图像的推导和使用预测图像的合成在运动补偿部3091、三角形合成部30952中进行。
(MMVD预测部30376)
MMVD预测部30376进行MMVD(Merge with Motion Vector Differece)模式下的处理。MMVD模式是通过将规定距离和规定方向的差分矢量与从合并候选推导出的运动矢量(从邻接块的运动矢量等推导出的运动矢量)相加来获得运动矢量的模式。在MMVD模式下,MMVD预测部30376通过使用合并候选,并且将差分矢量的值域限制在规定距离(例如8种)和规定方向(例如4个方向、8个方向等)来高效地推导出运动矢量。
MMVD预测部30376使用从合并候选mergeCandList[]和编码数据解码或对编码数据进行编码的语法base_candidate_idx、direction_idx、distance_idx来推导出运动矢量mvLX[]。而且,MMVD预测部30376可以对选择距离表的语法distance_list_idx进行编码或解码来利用。
MMVD预测部30376在针对对象CU指示merge_flag应用合并模式的情况或指示skip_flag应用跳过模式的情况下,对MMVD标志进行解码。而且,MMVD预测部30376在指示MMVD标志应用MMVD模式的情况(mmvd_flag=1)下应用MMVD模式。
MMVD预测部30376通过从合并候选列表的起点起两个候选中的任一个的预测矢量和按方向和距离表示的差分矢量(MVD:motion vector difference)推导出运动矢量。而且,MMVD预测部30376从预测矢量和差分矢量推导出运动矢量。
图15是表示在MMVD预测部30376中推导出的差分矢量mvdLX的候选。在图15所示的示例中,中央的黑圆点是预测矢量mvLXN(中心矢量)所指的位置。
图14的(a)表示mergeCandList[]的索引base_candidate_idx与mvLXN的关系,对mvLXN设置mergeCandList[base_candidate_idx]的运动矢量。该中心矢量所指的位置(图15的黑圆点)与实际的运动矢量之差为差分矢量mvdLX。
图14的(b)是表示与对象块邻接的块的一个示例的图。例如,在mergeCandList[]={A1,B1,B0,A0,B2}的情况下,当解码后的base_candidate_idx表示0时,MMVD预测部30376选择图14的(b)所示的块A1的运动矢量作为预测矢量mvLXN。此外,当解码后的base_candidate_idx表示1时,MMVD预测部30376选择图14的(b)所示的块B1的运动矢量作为预测矢量mvLXN。需要说明的是,在未通过编码数据来通知base_candidate_idx的情况下,可以估计为base_candidate_idx=0。
此外,MMVD预测部30376使用表示差分矢量mvdLX的长度的索引distance_idx和表示mvdLX的方向的索引direction_idx来推导mvdLX。
图14的(c)是表示distance_idx的一个示例的图。如图14的(c)所示,在distance_idx中,0、1、2、3、4、5、6以及7的值分别与1/4pel、1/2pel、1pel、2pel、4pel、8pel、16pel以及32pel这8个距离(长度)建立有对应。
图14的(d)是表示direction_idx的一个示例的图。如图14的(d)所示,在direction_idx中,0、1、2以及3的值分别与x轴为正的方向、x轴为负的方向、y轴为正的方向、y轴为负的方向建立有对应。MMVD预测部30376参照方向表DirectionTable从direction_idx推导出基本运动矢量(mvdUnit[0],mvdUnit[1])。(mvdUnit[0],mvdUnit[1])也可以记述为(sign[0],sign[1])。此外,MMVD预测部30376通过以下算式,从距离表DistanceTable中distance_idx所示的距离DistanceTable[distance_idx]推导出作为基本的差分矢量的大小DistFromBaseMV。
DistFromBaseMV=DistanceTable[distance_idx]
(4个方向以外的情况)
上述对基本运动矢量(mvdUnit[0],mvdUnit[1])为上下左右的4个方向的情况进行了说明,但不限于4个方向,也可以是8个方向。将基本运动矢量设为8个方向的情况下的方向表DirectionTable的x分量dir_table_x[]和y分量dir_table_y[]的示例如下所示。
dir_table_x[]={8,-8,0,0,6,-6,-6,6}
dir_table_y[]={0,0,8,-8,6,-6,6,-6}
需要说明的是,方向表的大小、顺序可以是上述以外。
MMVD预测部30376参照DirectionTable,从direction_idx推导出基本运动矢量(mvdUnit[0],mvdUnit[1])。
mvdUnit[0]=dir_table_x[direction_idx]
mvdUnit[1]=dir_table_y[direction_idx]
此外,例如可以使用如下所示的方向表来设为4个、6个、12个、16个方向。
·6个方向的情况
dir_table_x[]={8,-8,2,-2,-2,2}
dir_table_y[]={0,0,4,-4,4,-4}
或
dir_table_x[]={8,-8,3,-3,-3,3}
dir_table_y[]={0,0,6,-6,6,-6}
·12个方向的情况
dir_table_x[]={8,-8,0,0,4,2,-4,-2,-2,-4,2,4}
dir_table_y[]={0,0,8,-8,2,4,-2,-4,4,2,-4,-2}
或
dir_table_x[]={8,-8,0,0,6,3,-6,-3,-3,-6,3,6}
dir_table_y[]={0,0,8,-8,3,6,-3,-6,6,3,-6,-3}
·16个方向的情况
dir_table_x[]={8,-8,0,0,4,-4,-4,4,6,2,-6,-2,-2,-6,2,6}
dir_table_y[]={0,0,8,-8,4,-4,4,-4,2,6,-2,-6,6,2,-6,-2}
当然,4个方向的情况也如下所述。
dir_table_x[]={1,-1,0,0}
dir_table_y[]={0,0,1,-1}
需要说明的是,方向表的大小、顺序可以是上述以外。
(多个距离表)
此外,距离表不限于一个,也可以是多个。例如,MMVD预测部30376可以从第一距离表DistanceTable1[]和第二距离表DistanceTable2[]中如下所述地推导出DistFromBaseMV。
MMVD预测部30376进一步使用从编码数据解码或推导出的distance_list_idx所示的DistanceTable[]来推导出差分矢量mvdLX的长度。
DistanceTable1[]={1,2,3,5}
DistanceTable2[]={4,8,16,32}
DistanceTable=DistanceTable1(distance_list_idx==0)
DistanceTable=DistanceTable2(distance_list_idx==1)
DistFromBaseMV=DistanceTable[distance_idx]
此外,MMVD预测部30376可以使用二维表DistanceTable2d来切换两个距离表。
DistanceTable2d[]={{1,2,3,5},{4,8,16,32}}
DistFromBaseMV=DistanceTable2d[distance_list_idx][distance_idx](差分矢量的推导)
MMVD预测部30376从基本运动矢量和差分矢量的大小DistFromBaseMV推导出refineMvLX。在与中心矢量有关的合并候选N是根据L0参照图片的单向预测(predFlagL0N=1,predFlagL1N=0)的情况下,MMVD预测部30376从基本运动矢量和差分矢量的大小DistFromBaseMV推导出L0的差分矢量refineMvL0。
refineMvL0[0]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[0]
refineMvL0[1]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[1]
refineMvL1[0]=0
refineMvL1[1]=0
在此,shiftMMVD是调整差分矢量的大小以匹配运动补偿部3091(插补部)中的运动矢量的精度MVPREC的值。例如在MVPREC为16,就是说在1/16像素的运动矢量精度且4个方向,就是说mvdUnit[0]、mvdUnit[1]为0或1的情况下使用2是适当的。此外,shiftMMVD的移位方向不限于左移位。例如,在6个、8个、12个、16个方向等,mvdUnit[0]、mvdUnit[1]使用0或1以外的值(例如8)等的情况下,MMVD预测部30376可以将移位方向设为右移位。例如,MMVD预测部30376可以如下所示地在乘以基本运动矢量(mvdUnit[0],mvdUnit[1])后右移位。
refineMvL0[0]=(DistFromBaseMV*mvdUnit[0])>>shiftMMVD
refineMvL0[1]=(DistFromBaseMV*mvdUnit[1])>>shiftMMVD
此外,MMVD预测部30376可以分为运动矢量的大小和代码进行计算。之后,在差分矢量的其他推导方法中也是同样的。
refineMvL0[0]=((DistFromBaseMV*abs(mvdUnit[0]))>>shiftMMVD)*sign(mvdUnit[0])
refineMvL0[1]=((DistFromBaseMV*abs(mvdUnit[1]))>>shiftMMVD)*sign(mvdUnit[1])
除上述之外,在与中心矢量有关的合并候选N是根据L1参照图片的单向预测(predFlagL0N=0,predFlagL1N=1)的情况下,MMVD预测部30376从基本运动矢量和差分矢量的大小DistFromBaseMV推导出L1的差分矢量refineMvL1。
refineMvL0[0]=0
refineMvL0[1]=0
refineMvL1[0]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[0]
refineMvL1[1]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[1]
或
refineMvL1[0]=(DistFromBaseMV*mvdUnit[0])>>shiftMMVD
refineMvL1[1]=(DistFromBaseMV*mvdUnit[1])>>shiftMMVD
除上述之外,在与中心矢量有关的合并候选N是双向预测(predFlagL0N=1,predFlagL1N=1)的情况下,MMVD预测部30376从基本运动矢量和差分矢量的大小DistFromBaseMV推导出第一差分矢量firstMv。
firstMv[0]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[0]
firstMv[1]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[1]
或
firstMv=(DistFromBaseMV*mvdUnit[0])>>shiftMMVD
firstMv=(DistFromBaseMV*mvdUnit[1])>>shiftMMVD
在此,第一差分矢量refineMv与对象图片和参照图片的POC距离(POC的差)大的一方的差分矢量对应。就是说,在将参照图片列表L0和参照图片列表L1的参照图片内的对象图片与参照图片的POC距离(POC的差)大的一方的参照图片设为参照图片列表LX的参照图片时,是POC距离(POC的差)大的一方(LX)的参照图片的参照图像与对象图片上的对象块的差分矢量。
接着,MMVD预测部30376可以通过对第一运动矢量firstMv进行缩放来推导出另一方的参照图片(参照列表LY(Y=1-X))的第二运动矢量(POC距离小的一方的参照图片的运动矢量secondMv)。
例如,在对象图片currPic与L0图片RefPicList0[refIdxLN0]的距离大于对象图片与L1图片RefPicList1[refIdxLN1]的距离的情况下,第一矢量firstMv与L0差分矢量refineMvL0对应。而且,MMVD预测部30376可以对第一矢量firstMv进行缩放来推导出L1差分矢量refineMvL1。
refineMvL0[0]=firstMv[0]
refineMvL0[1]=firstMv[1]
refineMvL1[0]=Clip3(-32768,32767,Sign(distScaleFactor*firstMv[0])*((Abs(distScaleFactor*refineMvL0[0])+127)>>8))
refineMvL1[1]=Clip3(-32768,32767,Sign(distScaleFactor*firstMv[1])*((Abs(distScaleFactor*refineMvL0[1])+127)>>8))
在此,MMVD预测部30376从currPic与L0参照图片的POC差DiffPicOrderCnt(currPic、RefPicList0[refIdxLN0]和currPic与L1参照图片的POC差DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1]如下所示地进行推导出distScaleFactor。
distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6)
tx=(16384+(Abs(td)>>1))/td
td=Clip3(-128,127,DiffPicOrderCnt(currPic,RefPicList0[refIdxLN0]))
tb=Clip3(-128,127,DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1]))
除上述之外,在对象图片currPic与L0图片RefPicList0[refIdxLN0]的距离为对象图片与L1图片RefPicList1[refIdxLN1]的距离以下的情况下,第一矢量firstMv与L1差分矢量refineMvL1对应。在该情况下,MMVD预测部30376可以对第一矢量firstMv进行缩放来推导出L0差分矢量refineMvL0。
refineMvL0[0]=Clip3(-32768,32767,Sign(distScaleFactor*firstMv[0])*((Abs(distScaleFactor*firstMv[0])+127)>>8))
refineMvL0[1]=Clip3(-32768,32767,Sign(distScaleFactor*firstMv[1])*((Abs(distScaleFactor*firstMv[1])+127)>>8))
refineMvL1[0]=firstMv[0]
refineMvL1[1]=firstMv[1]
在此,MMVD预测部30376从currPic与L0参照图片的POC差DiffPicOrderCnt(currPic、RefPicList0[refIdxLN0]和currPic与L1参照图片的POC差DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1]如下所示地进行推导出distScaleFactor。
distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6)
tx=(16384+(Abs(td)>>1))/td
td=Clip3(-128,127,DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1]))
tb=Clip3(-128,127,DiffPicOrderCnt(currPic,RefPicList0[refIdxLN0]))
需要说明的是,在对象图片currPic与L0图片RefPicList0[refIdxLN0]的距离等于对象图片与L1图片RefPicList1[refIdxLN1]的距离的情况下,MMVD预测部30376可以不对firstMv[]进行缩放而由以下的处理(处理A或处理B)设定为refineMv[]。
处理A:
refineMvL0[0]=firstMv[0]
refineMvL0[1]=firstMv[1]
refineMvL1[0]=-firstMv[0]
refineMvL1[1]=-firstMv[1]
处理B:
refineMvL0[0]=firstMv[0]
refineMvL0[1]=firstMv[1]
refineMvL1[0]=firstMv[0]
refineMvL1[1]=firstMv[1]
更具体而言,MMVD预测部30376在按时间顺序排列L0参照图片、对象图片currPic、L1对象图片的情况下通过处理A推导出refineMv[],在除此以外的情况下通过处理B推导出refineMv[]。
需要说明的是,按时间顺排列的情况是指:
(POC_L0-POC_curr)*(POC_L1-POC_curr)<0的情况,即,DiffPicOrderCnt(RefPicList0[refIdxLN0],currPic)*DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1])>0的情况。
在此,POC_L0、POC_L1、POC_curr分别表示L0参照图片、L1参照图片、对象图片的图片顺序计数(Picture Order Count)。
其相反的情况(与时间顺序相反)是指:
(POC_L0-POC_curr)*(POC_L1-POC_curr)>0的情况,即,DiffPicOrderCnt(RefPicList0[refIdxLN0],currPic)*DiffPicOrderCnt(currPic,RefPicList1[refIdxLN1])<0的情况。
需要说明的是,即使在POC间的距离不同的情况下,MMVD预测部30376也可以在先推导出上述POC间的距离相等的情况下说明过的refineMvLX[]之后,根据参照图片与对象图片的POC距离以refineMvLX[]为标尺推导出最终的refineMvLX[]。
(中心矢量与差分矢量的相加)
最终,MMVD预测部30376从差分矢量refineMv[](mvdLX[])和中心矢量mvLXN[](mvpLX[])如下所述地推导出MMVD合并候选的运动矢量。
mvL0[0]=mvL0N[0]+refineMvL0[0]
mvL0[1]=mvL0N[1]+refineMvL0[1]
mvL1[0]=mvL1N[0]+refineMvL1[0]
mvL1[1]=mvL1N[1]+refineMvL1[1]
(总结)
如此,即使预测矢量为双向预测,MMVD预测部30376也仅通知一组一个方向的运动矢量的信息(direction_idx,distance_idx)。然后,从一组的信息推导出两个运动矢量。MMVD预测部30376根据需要从两个参照图片各自的POC与对象图片的POC的差进行运动矢量的缩放。POC距离(POC的差)大的一方的参照图片LX的参照图像与对象图片上的对象块的差分矢量与所通知的运动矢量(firstMv)对应。
firstMv[0]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[0]
firstMv[1]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[1]
MMVD预测部30376将POC距离小的一方的参照图片LY(Y=1-X)的运动矢量mvdLY(secondMv)按图片间的POC距离之比(POCS/POCL)进行缩放,由此进行推导。
secondMv[0]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[0]*POCS/POCL
secondMv[1]=(DistFromBaseMV<<shiftMMVD)*mvdUnit[1]*POCS/POCL
需要说明的是,POC距离小的一方的参照图片与对象图片和参照图片的POC距离(POC的差)小的一方对应。在此,POCS是与距离对象图片近的参照图片的POC差的差分值,POCL是距离对象图片远的参照图片的POC差的差分值。或者,可以通过以下算式推导出运动矢量mvdLY。
mvdLY=MvScale(DistFromBaseMV,CurPic,PicLX,CurPic,PicLY)
在此,CurPic、PicLX、PicLY表示对象图片、距离对象图片远的参照图片、距离对象图片近的参照图片。
如上所述,MMVD预测部30376推导出mvpLX[](mvLXN[])和mvdLX[](refineMv[]),并使用这些推导出对象块的运动矢量mvLX[]。
mvLX[0]=mvpLX[0]+mvdLX[0]
mvLX[1]=mvpLX[1]+mvdLX[1]
(运动矢量的取整)
MMVD预测部30376可以在与中心矢量相加的差分矢量mvdLX的大小大于规定的阈值的情况下进行修正,以使对象块的运动矢量mvLX表示整数像素位置。例如,MMVD预测部30376可以在DistFromBaseMV为规定的阈值16以上的情况下进行整数化。
此外,MMVD预测部30376可以在选择距离表的索引distance_list_idx为特定的距离表(例如DistanceTable2),并且选择距离表的元素的(选择距离的系数)索引distance_idx为特定的范围(例如,distance_idx为2、3)的情况下进行整数化。例如,MMVD预测部30376可以在distance_list_idx==1且distance_idx>=2时根据以下的算式修正mvLX。
mvLX[0]=(mvLX[0]/MVPREC)*MVPREC
mvLX[1]=(mvLX[1]/MVPREC)*MVPREC
此外,MMVD预测部30376可以使用移位推导出mvLX。
mvLX[0]=(mvLX[0]>>MVBIT)<<MVBIT
mvLX[1]=(mvLX[1]>>MVBIT)<<MVBIT
在此,MVBIT=log2(MVPREC)。例如4。此外,可以考虑正和负通过以下进行推导。
mvLX[0]=mvLX[0]>=0?(mvLX[0]>>MVBIT)<<MVBIT:-((-mvLX[0]>>MVBIT)<<MVBIT)
mvLX[1]=mvLX[1]>=0?(mvLX[1]>>MVBIT)<<MVBIT:-((-mvLX[1]>>MVBIT)<<MVBIT)
如此,能通过将运动矢量取整来削减预测图像生成的运算量。
(语法)
接着,参照图16和图17,对MMVD预测部30376中的预测模式的选择处理的流程进行说明。图16是表示MMVD预测部30376中的预测模式的选择处理的流程的流程图。图17是示出表示本实施方式的预测模式的选择处理的语法的图,是与图16所示的处理的一部分对应的语法表。
如图16所示,在本实施方式中,参数解码部302首先对跳过标志(图17中的skip_flag)进行解码(S1301)。在跳过标志表示为跳过模式的情况下(在S1302中为是(YES)),参数解码部302对MMVD标志(图17中的mmvd_flag)进行解码(S1303)。在MMVD标志不表示为MMVD模式的情况下(在S1304中为否(NO)),预测模式为跳过模式(S1305)。在跳过模式下,如图17所示,参数解码部302对合并索引(图17中的merge_idx)进行解码。
在MMVD标志表示为MMVD模式的情况下(在S1304中为是),预测模式为MMVD模式(S1305)。在MMVD模式下,如图17所示,参数解码部302对base_candidate_idx、distance_idx以及direction_idx进行解码。
在跳过标志不表示为跳过模式的情况下(在S1302中为否),参数解码部302对合并标志(图17中的merge_flag)进行解码(S1307)。在合并标志表示为合并模式的情况下(在S1308中为是),参数解码部302对MMVD标志(图17中的mmvd_flag)进行解码(S1309)。在MMVD标志不表示为MMVD模式的情况下(在S1310中为否),预测模式为合并模式(S1311)。在合并模式下,如图17所示,参数解码部302对合并索引(图17中的merge_idx)进行解码。
在MMVD标志表示为MMVD模式的情况下(在S1310中为是),预测模式为MMVD模式(S1312)。在MMVD模式下,如图17所示,参数解码部302对base_candidate_idx、distance_idx以及direction_idx进行解码。
在合并标志不表示为合并模式的情况下(在1308中为否),预测模式为AMVP模式(S1313)。
在跳过模式、合并模式下,参数解码部302对merge_idx进行解码。
在MMVD模式下,参数解码部302对base_candidate_idx、distance_idx以及direction_idx进行解码。MMVD预测部30376使用这些参数推导出mvpLX、mvdLX。然后推导出mvLX。
接着,参照图18和图19,对本发明的另一实施方式的MMVD预测部30376中的预测模式的选择处理的流程进行说明。图18是表示MMVD预测部30376中的预测模式的选择处理的流程的流程图。图19是示出表示本实施方式的预测模式的选择处理的语法的图,是与图18所示的处理的一部分对应的语法表。
在图16的流程图和图17的语法中,在跳过模式和合并模式下,存在对MMVD标志进行解码的处理。在想要以高压缩率进行编码、解码的情况下,选择相对多的跳过模式、合并模式,但在该情况下,MMVD标志的存在成为开销。在图18的流程图和图19的语法中,MMVD预测部30376在不选择跳过模式和合并模式中的任一个的情况下选择MMVD模式。
如图18所示,在本实施方式中,参数解码部302首先对跳过标志(图19中的skip_flag)进行解码(S1401)。在跳过标志表示为跳过模式的情况下(在S1402中为是),预测模式为跳过模式(S1403)。在跳过模式下,如图19所示,参数解码部302对合并索引(图19中的merge_idx)进行解码。
在跳过标志不表示为跳过模式的情况下(在S1402中为否),参数解码部302对合并标志(图19中的merge_flag)进行解码(S1404)。在合并标志表示为合并模式的情况下(在1405中为是),预测模式为合并模式(S1406)。在合并模式下,如图19所示,参数解码部302对合并索引(图19中的merge_idx)进行解码。
在合并标志不表示为合并模式的情况下(在S1405中为否),参数解码部302对MMVD标志(图19中的mmvd_flag)进行解码(S1407)。在MMVD标志不表示为MMVD模式的情况下(在S1408中为否),预测模式为AMVP模式(S1409)。在MMVD标志表示为MMVD模式的情况下(在S1408中为是),预测模式为MMVD模式(S1410)。在MMVD模式下,如图19所示,参数解码部302对base_candidate_idx、distance_idx以及direction_idx进行解码。参数编码部111通过同样的动作对语法进行编码。
需要说明的是,在合并模式的情况下,与跳过模式的不同点在于是否在预测图像生成中使用预测残差,因此,参数解码部302无需在图18和图19的处理后将表示是否存在逆变换处理的标志解码为语法。另一方面,在为MMVD模式的情况下,能进行与跳过模式不同的预测图像生成,因此,参数解码部302需要将表示是否存在逆变换处理的标志解码为语法。
通过采用如上构成,在以高压缩率进行编码时,在许多跳过标志表示不存在预测残差的跳过模式的情况下,无需对MMVD标志进行解码,因此不会降低编码效率。
接着,参照图20和图21,对本发明的实施方式的MMVD预测部30376中的预测模式的选择处理的流程进行说明。图20是表示MMVD预测部30376中的预测模式的选择处理的流程的流程图。图21是示出表示本实施方式的预测模式的选择处理的语法的图,是与图20所示的处理的一部分对应的语法表。
在图20的流程图和图21的语法中,在跳过模式下不进行MMVD预测,能仅在合并模式时选择MMVD预测。
如图20所示,在本实施方式中,参数解码部302(预测参数解码部)首先对跳过标志(图21中的skip_flag)进行解码(S1501)。在跳过标志表示为跳过模式的情况下(在S1502中为是),预测模式为跳过模式(S1503)。在跳过模式下,如图20所示,参数解码部302对合并索引(图21中的merge_idx)进行解码。
在跳过标志不表示为跳过模式的情况下(在S1502中为否),参数解码部302对合并标志(图21中的merge_flag)进行解码(S1504)。在合并标志表示为合并模式的情况下(在S1505中为是),参数解码部302对MMVD标志(图21中的mmvd_flag)进行解码(S1506)。在MMVD标志不表示为MMVD模式的情况下(在S1507中为否),预测模式为合并模式(S1508)。在合并模式下,如图21所示,参数解码部302对合并索引(图21中的merge_idx)进行解码。在MMVD标志表示为MMVD模式的情况下(在S1507中为是),预测模式为MMVD模式(S1509)。在MMVD模式下,如图21所示,参数解码部302对base_candidate_idx、distance_idx以及direction_idx进行解码。
在合并标志不表示为合并模式的情况下(在1505中为否),预测模式为AMVP模式(S1510)。参数编码部111通过同样的动作对语法进行编码。
需要说明的是,在不是合并模式和MMVD模式的情况下,与跳过模式的不同点在于是否在预测图像生成中使用预测残差,因此,参数解码部302无需在图20和21的处理后将表示是否存在逆变换处理的标志解码为语法。另一方面,在不是合并模式而是MMVD模式的情况下,能进行与跳过模式不同的预测图像生成,因此,参数解码部302需要将表示是否存在逆变换处理的标志解码为语法。
通过采用如上构成,在以高压缩率进行编码时,在许多跳过标志表示不存在预测残差的跳过模式的情况下,无需对MMVD标志进行解码,因此不会降低编码效率。
环路滤波器305是设于编码环路内的滤波器,是去除块失真、振铃失真来改善画质的滤波器。环路滤波器305对加法部312所生成的CU的解码图像实施去块滤波、取样自适应偏移(SAO)、自适应环路滤波(ALF)等滤波。
参照图片存储器306将加法部312所生成的CU解码图像按每个对象图片和对象CU存储于预定的位置。
预测参数存储器307将预测参数按每个解码对象的CTU或CU存储于预定的位置。具体而言,预测参数存储器307存储由参数解码部302解码后的参数和由熵解码部301解码后的预测模式predMode等。
预测图像生成部308被输入预测模式predMode、预测参数等。此外,预测图像生成部308从参照图片存储器306中读出参照图片。预测图像生成部308在预测模式predMode所指示的预测模式下,使用预测参数和读出的参照图片(参照图片块)来生成块或子块的预测图像。在此,参照图片块是指参照图片上的像素的集合(通常为矩形,因此称为块),是为了生成预测图像而参照的区域。
(帧间预测图像生成部309)
在预测模式predMode指示帧间预测模式的情况下,帧间预测图像生成部309使用从帧间预测参数解码部303输入的帧间预测参数和读出的参照图片,通过帧间预测来生成块或子块的预测图像。
图11是表示本实施方式的预测图像生成部308中所包括的帧间预测图像生成部309的构成的概略图。帧间预测图像生成部309构成为包括运动补偿部(预测图像生成装置)3091和合成部3095。
(运动补偿)
运动补偿部3091(插补图像生成部3091)基于从帧间预测参数解码部303输入的帧间预测参数(预测列表利用标志predFlagLX、参照图片索引refIdxLX、运动矢量mvLX),从参照图片存储器306中读出处于在由参照图片索引refIdxLX指定的参照图片RefPicLX中的以对象块的位置为起点移位了运动矢量mvLX的位置的块,由此生成插补图像(运动补偿图像)。在此,在运动矢量mvLX的精度并非整数精度的情况下,实施称为运动补偿滤波的用于生成小数位置的像素的滤波,生成插补图像。
运动补偿部3091首先通过以下的算式推导出与预测块内坐标(x,y)对应的整数位置(xInt,yInt)和相位(xFrac,yFrac)。
xInt=xPb+(mvLX[0]>>(log2(MVPREC)))+x
xFrac=mvLX[0]&(MVPREC-1)
yInt=yPb+(mvLX[1]>>(log2(MVPREC)))+y
yFrac=mvLX[1]&(MVPREC-1)
在此,(xPb,yPb)为bW*bH大小的块的左上坐标,x=0……bW-1,y=0……bH-1,MVPREC表示运动矢量mvLX的精度(1/MVPREC像素精度)。例如可以是MVPREC=16。
运动补偿部3091使用内插滤波器对参照图片refImg进行水平插补处理,由此推导出临时的图像temp[][]。以下的Σ是与k=0..NTAP-1的k有关的和,shift1是调整值的区间的归一化参数,offset1=1<<(shift1-1)。
temp[x][y]=
(ΣmcFilter[xFrac][k]*refImg[xInt+k-NTAP/2+1][yInt]+offset1)>>shift1
接着,运动补偿部3091通过对临时的图像temp[][]进行垂直插补处理,推导出插补图像Pred[][]。以下的Σ是与k=0..NTAP-1的k有关的和,shift2是调整值的区间的归一化参数,offset2=1<<(shift2-1)。
Pred[x][y]=(ΣmcFilter[yFrac][k]*temp[x][y+k-NTAP/2+1]+offset2)>>shift2
(合成部)
合成部3095参照由运动补偿部3091供给的插补图像、由帧间预测参数解码部303供给的帧间预测参数以及由帧内预测图像生成部310供给的帧内图像来生成预测图像,将所生成的预测图像供给至加法部312。
合成部3095具备:组合的帧内/帧间(Combined intra/inter)合成部30951、三角形合成部30952、OBMC部30953、BIO部30954。
(组合的帧内/帧间合成处理)
组合的帧内/帧间合成部30951通过复合地使用AMVP中的单向预测、跳过模式、合并模式以及帧内预测来生成预测图像。
(三角形合成处理)
三角形合成部30952生成使用了上述的三角形预测的预测图像。
(OBMC处理)
OBMC部30953使用OBMC(Overlapped block motion compensation:重叠块运动补偿)处理生成预测图像。OBMC处理中包括以下的处理。
·利用使用附加于对象子块的帧间预测参数生成的插补图像(PU插补图像)和使用对象子块的邻接子块的运动参数生成的插补图像(OBMC插补图像)来生成对象子块的插补图像(运动补偿图像)。
·通过对OBMC插补图像和PU插补图像进行加权平均来生成预测图像。
(BIO处理)
BIO部30954通过进行BIO(Bi-directional optical flow:双向光流;双向预测梯度变化)处理来生成预测图像。在BIO处理中,参照运动补偿图像PredL0和PredL1以及梯度校正项来生成预测图像。BIO部30954可以采用通过进行后述的加权预测来生成预测图像的构成。
(加权预测)
在加权预测中,通过将运动补偿图像PredLX与加权系数相乘来生成块的预测图像。在预测列表利用标志的一方(predFlagL0或predFlagL1)为1(单向预测)且不使用加权预测的情况下,进行使运动补偿图像PredLX(LX为L0或L1)与像素比特数bitDepth匹配的以下的算式的处理。
Pred[x][y]=Clip3(0,(1<<bitDepth)-1,(PredLX[x][y]+offset1)>>shift1)
在此,shift1=14-bitDepth,offset1=1<<(shift1-1)。此外,在参照列表利用标志两者(predFlagL0和predFlagL1)为1(双向预测BiPred)且不使用加权预测的情况下,进行将运动补偿图像PredL0、PredL1平均,并使其平均数与像素比特数匹配的以下的算式的处理。
Pred[x][y]=Clip3(0,(1<<bitDepth)-1,(PredL0[x][y]+PredL1[x][y]+offset2)>>shift2)
在此,shift2=15-bitDepth,offset2=1<<(shift2-1)。
而且,在进行单向预测且进行加权预测的情况下,加权预测部3094从编码数据推导出加权预测系数w0和偏移值o0,并进行以下的算式的处理。
Pred[x][y]=Clip3(0,(1<<bitDepth)-1,((PredLX[x][y]*w0+2^(log2WD-1))>>log2WD)+o0)
在此,log2WD是表示规定的移位量的变量。
而且,在进行双向预测BiPred且进行加权预测的情况下,加权预测部3094从编码数据推导出加权预测系数w0、w1、o0、o1,进行以下的算式的处理。
Pred[x][y]=Clip3(0,(1<<bitDepth)-1,(PredL0[x][y]*w0+PredL1[x][y]*w1+((o0+o1+1)<<log2WD))>>(log2WD+1))
然后,将所生成的块的预测图像输出至加法部312。
逆量化/逆变换部311将从熵解码部301输入的量化变换系数逆量化来求出变换系数。该量化变换系数是在编码处理中对预测误差进行DCT(Discrete Cosine Transform、离散余弦变换)、DST(Discrete Sine Transform、离散正弦变换)等频率变换并量化而得到的系数。逆量化/逆变换部311对求出的变换系数进行逆DCT、逆DST等逆频率变换,计算预测误差。逆量化/逆变换部311将预测误差输出至加法部312。逆量化/逆变换部311在skip_flag为1的情况或cu_cbp为0的情况下将预测误差全部设定为0。
加法部312按每个像素将从预测图像生成部308输入的块的预测图像与从逆量化/逆变换部311输入的预测误差相加,生成块的解码图像。加法部312将块的解码图像存储于参照图片存储器306,并向环路滤波器305输出。
(运动图像编码装置的构成)
接着,对本实施方式的运动图像编码装置11的构成进行说明。图12是表示本实施方式的运动图像编码装置11的构成的框图。运动图像编码装置11构成为包括:预测图像生成部101、减法部102、变换/量化部103、逆量化/逆变换部105、加法部106、环路滤波器107、预测参数存储器(预测参数存储部、帧存储器)108、参照图片存储器(参照图像存储部、帧存储器)109、编码参数确定部110、参数编码部111以及熵编码部104。
预测图像生成部101按将每个图像T的各图片分割而成的区域即CU生成预测图像。预测图像生成部101进行与已说明的预测图像生成部308相同的动作,在此省略其说明。
减法部102从图像T的像素值中减去从预测图像生成部101输入的块的预测图像的像素值,生成预测误差。减法部102将预测误差输出至变换/量化部103。
变换/量化部103对从减法部102输入的预测误差,通过频率变换计算出变换系数,并通过量化推导量化变换系数。变换/量化部103将量化变换系数输出至熵编码部104和逆量化/逆变换部105。
逆量化/逆变换部105与运动图像解码装置31中的逆量化/逆变换部311(图7)相同,在此省略其说明。计算出的预测误差输入至加法部106。
熵编码部104中,从变换/量化部103输入量化变换系数,从参数编码部111输入编码参数。在编码参数中,例如有参照图片索引refIdxLX、预测矢量索引mvp_LX_idx、差分矢量mvdLX、运动矢量精度模式amvr_mode、预测模式predMode以及合并索引merge_idx等代码。
熵编码部104对分割信息、预测参数、量化变换系数等进行熵编码生成编码流Te并输出。
参数编码部111具备:未图示的标头编码部1110、CT信息编码部1111、CU编码部1112(预测模式编码部)以及参数编码部112。CU编码部1112还具备TU编码部1114。
以下,对各模块的概略动作进行说明。参数编码部111进行报头信息、分割信息、预测信息、量化变换系数等参数的编码处理。
CT信息编码部1111从编码数据对QT、MT(BT、TT)分割信息等进行编码。
CU编码部1112对CU信息、预测信息、TU分割标志split_transform_flag、CU残差标志cbf_cb、cbf_cr、cbf_luma等进行编码。
TU编码部1114在TU中包括预测误差的情况下,对QP更新信息(量化校正值)和量化预测误差(residual_coding)进行编码。
CT信息编码部1111、CU编码部1112将帧间预测参数(预测模式predMode、合并标志merge_flag、合并索引merge_idx、帧间预测识别子inter_pred_idc、参照图片索引refIdxLX、预测矢量索引mvp_LX_idx、差分矢量mvdLX)、帧内预测参数(prev_intra_luma_pred_flag、mpm_idx、rem_selected_mode_flag、rem_selected_mode、rem_non_selected_mode)、量化变换系数等的语法元素供给至熵编码部104。
(参数编码部的构成)
参数编码部112基于从编码参数确定部110输入的预测参数来推导出帧间预测参数。参数编码部112包括与由帧间预测参数解码部303推导出帧间预测参数的构成部分相同的构成。
图13是表示参数编码部112的构成的概略图。对参数编码部112的构成进行说明。如图13所示,参数编码部112构成为包括:参数编码控制部1121、合并预测部30374、子块预测部(仿射预测部)30372、DMVR部30375、MMVD预测部30376、三角形预测部30377、AMVP预测参数推导部3032、减法部1123。合并预测部30374具备合并预测参数推导部3036。参数编码控制部1121包括合并索引推导部11211和矢量候选索引推导部11212。此外,参数编码控制部1121通过合并索引推导部11211推导出merge_idx、affine_flag、base_candidate_idx、distance_idx、direction_idx等,通过矢量候选索引推导部11212推导出mvpLX等。也可以将合并预测参数推导部3036、AMVP预测参数推导部3032、仿射预测部30372、MMVD预测部30376、三角形预测部30377统称为运动矢量推导部(运动矢量推导装置)。参数编码部112将运动矢量mvLX、参照图片索引refIdxLX、帧间预测标识符inter_pred_idc或表示这些的信息输出至预测图像生成部101。此外,参数编码部112将merge_flag、skip_flag、merge_idx、inter_pred_idc、refIdxLX、mvp_lX_idx、mvdLX、amvr_mode、affine_flag输出至熵编码部104。
参数编码控制部1121推导出表示差分矢量的参数(base_candidate_idx、distance_idx、direction_idx等),输出至MMVD预测部30376。参照图15对参数编码控制部1121中的差分矢量推导进行说明。图15的中央的黑圆点是预测矢量mvpLX所指的位置,以该位置为中心,在4个(上、下、左、右)方向分别搜索8个搜索距离。mvpLX是合并候选列表的起点和第二个候选的运动矢量,分别对其实施搜索。有两个合并候选列表的预测矢量(列表的第一个和第二个),搜索距离为8,搜索方向为4,因此,在mvdLX中有64种候选。通过base_candidate_idx、distance_idx以及direction_idx来表示所搜索之中成本最小的mvdLX。
如此,MMVD模式是对限制为以预测矢量为中心的候选点进行搜索,推导出适当的运动矢量的模式。
合并索引推导部11211推导出合并索引merge_idx并输出至合并预测参数推导部3036(合并预测部)。在MMVD模式下,合并索引推导部11211将合并索引merge_idx的值设定为与base_candidate_idx的值相同的值。矢量候选索引推导部11212推导出预测矢量索引mvp_lX_idx。
合并预测参数推导部3036基于合并索引merge_idx推导出帧间预测参数。
AMVP预测参数推导部3032基于运动矢量mvLX推导出预测矢量mvpLX。AMVP预测参数推导部3032将预测矢量mvpLX输出至减法部1123。需要说明的是,参照图片索引refIdxLX和预测矢量索引mvp_lX_idx被输出至熵编码部104。
仿射预测部30372推导出子块的帧间预测参数(仿射预测参数)。
减法部1123从由编码参数确定部110输入的运动矢量mvLX中减去作为AMVP预测参数推导部3032的输出的预测矢量mvpLX,生成差分矢量mvdLX。减法部1123将差分矢量mvdLX输出至熵编码部104。
加法部106将从预测图像生成部101输入的块预测图像的像素值和从逆量化/逆变换部105输入的预测误差按每个像素相加来生成解码图像。加法部106将生成的解码图像存储于参照图片存储器109。
环路滤波器107对加法部106所生成的解码图像,实施去块滤波、SAO、ALF。需要说明的是,环路滤波器107不一定包括上述三种滤波器,例如也可以是仅包括去块滤波器的构成。
预测参数存储器108将编码参数确定部110所生成的预测参数按每个对象图片和CU存储于预定的位置。
参照图片存储器109将环路滤波器107所生成的解码图像按每个对象图片和CU每存储于预定的位置。
编码参数确定部110选择编码参数的多个集合中的一个集合。编码参数是指上述的QT、BT或TT分割信息、预测参数或与它们关联生成的作为编码对象的参数。预测图像生成部101使用这些编码参数来生成预测图像。
编码参数确定部110对多个集合的每一个集合计算出表示信息量的大小和编码误差的RD成本值。编码参数确定部110选择计算出的成本值为最小的编码参数的集合。由此,熵编码部104将所选出的编码参数的集合作为编码流Te输出。编码参数确定部110将所确定的编码参数存储于预测参数存储器108。
需要说明的是,可以通过计算机实现上述的实施方式中的运动图像编码装置11、运动图像解码装置31中的一部分,例如,熵解码部301、参数解码部302、环路滤波器305、预测图像生成部308、逆量化/逆变换部311、加法部312、预测图像生成部101、减法部102、变换/量化部103、熵编码部104、逆量化/逆变换部105、环路滤波器107、编码参数确定部110以及参数编码部111。在该情况下,可以通过将用于实现该控制功能的程序记录于计算机可读记录介质,使计算机系统读入记录于该记录介质的程序并执行来实现。需要说明的是,在此提到的“计算机系统”是指内置于运动图像编码装置11、运动图像解码装置31中的任一个的计算机系统,采用包括OS、外围设备等硬件的计算机系统。此外,“计算机可读记录介质”是指软盘、磁光盘、ROM、CD-ROM等可移动介质、内置于计算机系统的硬盘等存储装置。而且,“计算机可读记录介质”也可以包括:像经由互联网等网络或电话线路等通信线路来发送程序的情况下的通信线那样短时间内、动态地保存程序的记录介质;以及像作为该情况下的服务器、客户端的计算机系统内部的易失性存储器那样保存程序固定时间的记录介质。此外,上述程序可以是用于实现上述功能的一部分的程序,也可以是能通过与已记录在计算机系统中的程序进行组合来实现上述功能的程序。
此外,也可以将上述的实施方式中的运动图像编码装置11、运动图像解码装置31中的一部分或全部作为LSI(Large Scale Integration:大规模集成电路)等集成电路而实现。运动图像编码装置11、运动图像解码装置31的各功能块可以单独地处理器化,也可以将一部分或全部集成来处理器化。此外,集成电路化的方法并不限于LSI,也可以通过专用电路或通用处理器来实现。此外,在随着半导体技术的进步而出现代替LSI的集成电路化的技术的情况下,也可以使用基于该技术的集成电路。
以上,参照附图对该发明的一实施方式详细地进行了说明,但具体构成并不限于上述实施方式,在不脱离该发明的主旨的范围内,可以进行各种设计变更等。
〔应用例〕
上述运动图像编码装置11和运动图像解码装置31可以搭载于进行运动图像的发送、接收、记录、再现的各种装置而利用。需要说明的是,运动图像可以是通过摄像机等拍摄的自然运动图像,也可以是通过计算机等生成的人工运动图像(包括CG和GUI)。
首先,参照图2对能将上述的运动图像编码装置11和运动图像解码装置31用于运动图像的发送和接收的情况进行说明。
图2的(a)是表示搭载有运动图像编码装置11的发送装置PROD_A的构成的框图。如图2的(a)所示,发送装置PROD_A具备:通过对运动图像进行编码而得到编码数据的编码部PROD_A1、通过利用编码部PROD_A1所得到的编码数据对载波进行调制而得到调制信号的调制部PROD_A2以及发送调制部PROD_A2所得到的调制信号的发送部PROD_A3。上述的运动图像编码装置11被用作该编码部PROD_A1。
作为输入至编码部PROD_A1的运动图像的供给源,发送装置PROD_A也可以进一步具备:拍摄运动图像的摄像机PROD_A4、记录有运动图像的记录介质PROD_A5、用于从外部输入运动图像的输入端子PROD_A6以及生成或加工图像的图像处理部A7。在图2的(a)中举例示出了发送装置PROD_A具备全部这些的构成,但也可以省略一部分。
需要说明的是,记录介质PROD_A5可以是记录有未被编码的运动图像的介质,也可以是记录有以与传输用的编码方式不同的记录用的编码方式进行编码后的运动图像的介质。在后者的情况下,使按照记录用的编码方式对从记录介质PROD_A5读出的编码数据进行解码的解码部(未图示)介于记录介质PROD_A5与编码部PROD_A1之间为好。
图2的(b)是表示搭载有运动图像解码装置31的接收装置PROD_B的构成的框图。如图2的(b)所示,接收装置PROD_B具备:接收调制信号的接收部PROD_B1、通过对接收部PROD_B1所接收到的调制信号进行解调而得到编码数据的解调部PROD_B2以及通过对解调部PROD_B2所得到的编码数据进行解码而得到运动图像的解码部PROD_B3。上述的运动图像解码装置31被用作该解码部PROD_B3。
接收装置PROD_B作为解码部PROD_B3所输出的运动图像的供给目的地,也可以进一步具备显示运动图像的显示器PROD_B4、用于记录运动图像的记录介质PROD_B5以及用于将运动图像输出至外部的输出端子PROD_B6。在图2的(b)中举例示出了接收装置PROD_B具备全部这些的构成,但也可以省略一部分。
需要说明的是,记录介质PROD_B5可以是用于记录未被编码的运动图像的介质,也可以是以与传输用的编码方式不同的记录用的编码方式编码后的介质。在后者的情况下,使按照记录用的编码方式对从解码部PROD_B3获取到的运动图像进行编码的编码部(未图示)介于解码部PROD_B3与记录介质PROD_B5之间为好。
需要说明的是,传输调制信号的传输介质可以是无线的,也可以是有线的。此外,传输调制信号的传输方案可以是广播(在此,指发送目的地未预先确定的发送方案),也可以是通信(在此,指发送目的地已预先确定的发送方案)。即,调制信号的传输可以通过无线广播、有线广播、无线通信以及有线通信中的任一个来实现。
例如,地面数字广播的广播站(广播设备等)/接收站(电视接收机等)是通过无线广播收发调制信号的发送装置PROD_A/接收装置PROD_B的一个示例。此外,有线电视广播的广播站(广播设备等)/接收站(电视接收机等)是通过有线广播收发调制信号的发送装置PROD_A/接收装置PROD_B的一个示例。
此外,使用互联网的VOD(Video On Demand:视频点播)服务、运动图像共享服务等服务器(工作站等)/客户端(电视接收机、个人计算机、智能手机等)是通过通信收发调制信号的发送装置PROD_A/接收装置PROD_B的一个示例(通常,在LAN中使用无线或有线的任一个作为传输介质,在WAN中使用有线作为传输介质)。在此,个人计算机包括台式PC、膝上型PC以及平板型PC。此外,智能手机中也包括多功能便携电话终端。
需要说明的是,运动图像共享服务的客户端除了对从服务器下载的编码数据进行解码并显示于显示器的功能以外,还具有对通过摄像机拍摄到的运动图像进行编码并上传至服务器的功能。即,运动图像共享服务的客户端发挥发送装置PROD_A和接收装置PROD_B这两方的功能。
接着,参照图3,对能将上述的运动图像编码装置11和运动图像解码装置31用于运动图像的记录和再现的情况进行说明。
图3的(a)是表示搭载有上述的运动图像编码装置11的记录装置PROD_C的构成的框图。如图3的(a)所示,记录装置PROD_C具备:通过对运动图像进行编码而得到编码数据的编码部PROD_C1和将编码部PROD_C1所得到的编码数据写入记录介质PROD_M的写入部PROD_C2。上述的运动图像编码装置11被用作该编码部PROD_C1。
需要说明的是,记录介质PROD_M可以是(1)如HDD(Hard Disk Drive:硬盘驱动器)、SSD(Solid State Drive:固态硬盘)等那样内置于记录装置PROD_C的类型的记录介质,也可以是(2)如SD存储卡、USB(Universal Serial Bus:通用串行总线)闪存等那样连接于记录装置PROD_C的类型的记录介质,还可以是(3)如DVD(Digital Versatile Disc:数字通用光盘、注册商标)、BD(Blu-ray Disc:蓝光光盘、注册商标)等那样装填至内置于记录装置PROD_C的驱动装置(未图示)的记录介质。
此外,作为输入至编码部PROD_C1的运动图像的供给源,记录装置PROD_C也可以进一步具备:拍摄运动图像的摄像机PROD_C3、用于从外部输入运动图像的输入端子PROD_C4、用于接收运动图像的接收部PROD_C5以及生成或加工图像的图像处理部PROD_C6。在图3的(a)中举例示出了记录装置PROD_C具备全部这些的构成,但也可以省略一部分。
需要说明的是,接收部PROD_C5可以接收未被编码的运动图像,也可以接收以与记录用的编码方式不同的传输用的编码方式编码后的编码数据。在后者的情况下,使对以传输用的编码方式编码后的编码数据进行解码的传输用解码部(未图示)介于接收部PROD_C5与编码部PROD_C1之间为好。
作为这种记录装置PROD_C,例如可举出:DVD刻录机、BD刻录机、HDD(Hard DiskDrive)刻录机等(在该情况下,输入端子PROD_C4或接收部PROD_C5为运动图像的主要的供给源)。此外,便携式摄像机(在该情况下,摄像机PROD_C3为运动图像的主要的供给源)、个人计算机(在该情况下,接收部PROD_C5或图像处理部C6为运动图像的主要的供给源)、智能手机(在该情况下,摄像机PROD_C3或接收部PROD_C5为运动图像的主要的供给源)等也是这种记录装置PROD_C的一个示例。
图3的(b)是表示搭载有上述的运动图像解码装置31的再现装置PROD_D的构成的框图。如图3的(b)所示,再现装置PROD_D具备:读出已写入记录介质PROD_M的编码数据的读出部PROD_D1和通过对读出部PROD_D1所读出的编码数据进行解码而得到运动图像的解码部PROD_D2。上述的运动图像解码装置31被用作该解码部PROD_D2。
需要说明的是,记录介质PROD_M可以是(1)如HDD、SSD等那样内置于再现装置PROD_D的类型的记录介质,也可以是(2)如SD存储卡、USB闪存等那样连接于再现装置PROD_D的类型的记录介质,也可以是(3)如DVD、BD等那样装填至内置于再现装置PROD_D的驱动装置(未图示)的记录介质。
此外,作为解码部PROD_D2所输出的运动图像的供给目的地,再现装置PROD_D也可以进一步具备:显示运动图像的显示器PROD_D3、用于将运动图像输出至外部的输出端子PROD_D4以及发送运动图像的发送部PROD_D5。在图3的(b)中举例示出了再现装置PROD_D具备全部这些的构成,但也可以省略一部分。
需要说明的是,发送部PROD_D5可以发送未被编码的运动图像,也可以发送以与记录用的编码方式不同的传输用的编码方式编码后的编码数据。在后者的情况下,使以传输用的编码方式对运动图像进行编码的编码部(未图示)介于解码部PROD_D2与发送部PROD_D5之间为好。
作为这种再现装置PROD_D,例如可列举出DVD播放器、BD播放器、HDD播放器等(在该情况下,连接有电视接收机等的输出端子PROD_D4为运动图像的主要供给目的地)。此外,电视接收机(在该情况下,显示器PROD_D3为运动图像的主要供给目的地)、数字标牌(也称为电子看板、电子公告板等,显示器PROD_D3或发送部PROD_D5为运动图像的主要供给目的地)、台式PC(在该情况下,输出端子PROD_D4或发送部PROD_D5为运动图像的主要供给目的地)、膝上型或平板型PC(在该情况下,显示器PROD_D3或发送部PROD_D5为运动图像的主要供给目的地)、智能手机(在该情况下,显示器PROD_D3或发送部PROD_D5为运动图像的主要供给目的地)等也是这种再现装置PROD_D的一个示例。
(硬件实现以及软件实现)
此外,上述的运动图像解码装置31和运动图像编码装置11的各块可以通过形成于集成电路(IC芯片)上的逻辑电路而以硬件方式实现,也可以利用CPU(Central ProcessingUnit:中央处理器)而以软件方式地实现。
在后者的情况下,上述各装置具备:执行实现各功能的程序的命令的CPU、储存上述程序的ROM(Read Only Memory:只读存储器)、展开上述程序的RAM(Random AccessMemory:随机存取存储器)以及储存上述程序和各种数据的存储器等存储装置(记录介质)等。然后,本发明的实施方案的目的在于通过以下方式也能达到:将以计算机可读取的方式记录实现前述功能的软件即上述各装置的控制程序的程序代码(执行形式程序、中间代码程序、源程序)的记录介质供给至上述各装置,该计算机(或CPU、MPU)读出记录于记录介质的程序代码并执行。
作为上述记录介质,例如能使用:磁带、盒式磁带等带类;包括软盘(注册商标)/硬盘等磁盘、CD-ROM(Compact Disc Read-Only Memory:光盘只读存储器)/MO盘(Magneto-Optical disc:磁光盘)/MD(Mini Disc:迷你磁光盘)/DVD(Digital Versatile Disc:数字通用光盘,注册商标)/CD-R(CD Recordable:光盘刻录片)/蓝光光盘(Blu-ray Disc:注册商标)等光盘的盘类;IC卡(包括存储卡)/光卡等卡类;掩模ROM/EPROM(ErasableProgrammable Read-Only Memory:可擦可编程只读存储器)/EEPROM(ElectricallyErasableandProgrammableRead-OnlyMemory:电可擦可编程只读存储器)/闪存ROM等半导体存储器类;或者PLD(Programmable logic device:可编程逻辑器件)、FPGA(FieldProgrammable Gate Array:现场可编程门阵列)等逻辑电路类等。
此外,也可以将上述各装置构成为能与通信网络连接,并经由通信网络供给上述程序代码。该通信网络能传输程序代码即可,不被特别限定。例如,可利用互联网、内联网(intranet)、外联网(extranet)、LAN(Local Area Network:局域网)、ISDN(IntegratedServices Digital Network:综合业务数字网)、VAN(Value-Added Network:增值网络)、CATV(Community Antenna television/Cable Television:共用天线电视/有线电视)通信网、虚拟专用网(Virtual Private Network)、电话线路网、移动通信网、卫星通信网等。此外,构成该通信网络的传输介质也是为能传输程序代码的介质即可,不限定于特定的构成或种类。例如,无论在IEEE(Institute of Electrical and Electronic Engineers:电气和电子工程师协会)1394、USB、电力线输送、有线TV线路、电话线、ADSL(AsymmetricDigital Subscriber Line:非对称数字用户线路)线路等有线中,还是在如IrDA(InfraredData Association:红外线数据协会)、遥控器那样的红外线、BlueTooth(注册商标)、IEEE802.11无线、HDR(High Data Rate:高数据速率)、NFC(Near Field Communication:近场通讯)、DLNA(Digital Living Network Alliance:数字生活网络联盟,注册商标)、便携电话网、卫星线路、地面数字广播网等无线中都可利用。需要说明的是,本发明的实施方式即使以通过电子传输来将上述程序代码具体化的嵌入载波的计算机数据信号的形态也能够实现。
本发明的实施方式并不限定于上述的实施方式,能在权利要求所示的范围内进行各种变更。即,将在权利要求所示的范围内经过适当变更的技术方案组合而得到的实施方式也包括在本发明的技术范围内。
(关联申请的相互参照)
本申请对2018年12月7日提出申请的日本专利申请:日本特愿2018-230199主张优先权的利益,并通过对其进行参照而将其全部内容包括到本说明书中。
(本发明的其他的表达)
需要说明的是,本发明也表现为如下。
即,本发明的一个方案的图像解码装置具有参数解码部,对用于生成预测图像的参数进行解码,上述参数解码部对表示是否为不存在预测残差的跳过模式的跳过标志进行解码,在跳过标志不表示跳过模式的情况下,对表示是否为从合并候选获得运动矢量信息的合并模式的合并标志进行解码,在合并标志不表示合并模式的情况下,对表示是否为除了从上述合并候选获得的运动矢量信息之外,通过从编码数据解码规定方向的差分的运动矢量信息来获得运动矢量信息的MMVD模式的MMVD标志进行解码。
此外,本发明的一个方案的图像解码装置具有参数解码部,对用于生成预测图像的参数进行解码,上述参数解码部对表示是否为不存在预测残差的跳过模式的跳过标志进行解码,在跳过标志不表示跳过模式的情况下,对表示是否为从合并候选获得运动矢量信息的合并模式的合并标志进行解码,在合并标志表示合并模式的情况下,对表示是否为除了从上述合并候选获得的运动矢量信息之外,通过从编码数据解码规定方向的差分的运动矢量信息来获得运动矢量信息的MMVD模式的MMVD标志进行解码。
此外,本发明的一个方案的图像编码装置的特征在于,具有参数编码部,对用于生成预测图像的参数进行编码,上述参数编码部对表示是否为不存在预测残差的跳过模式的跳过标志进行编码,在跳过标志不表示跳过模式的情况下,对表示是否为从合并候选获得运动矢量信息的合并模式的合并标志进行编码,在合并标志不表示合并模式的情况下,对表示是否为除了从上述合并候选获得的运动矢量信息之外,通过对规定方向的差分的运动矢量信息进行编码来获得运动矢量信息的MMVD模式的MMVD标志进行编码。
此外,本发明的一个方案的图像编码装置具有参数编码部,对用于生成预测图像的参数进行编码,上述参数编码部对表示是否为不存在预测残差的跳过模式的跳过标志进行编码,在跳过标志不表示跳过模式的情况下,对表示是否为从合并候选获得运动矢量信息的合并模式的合并标志进行编码,在合并标志表示合并模式的情况下,对表示是否为除了从上述合并候选获得的运动矢量信息之外,通过对规定方向的差分的运动矢量信息进行编码来获得运动矢量信息的MMVD模式的MMVD标志进行编码。
此外,本发明的一个方案的图像解码装置具有参数解码部,对用于生成预测图像的参数进行解码,上述参数解码部对表示是否为通过从编码数据解码规定方向的差分的运动矢量信息来获得运动矢量信息的MMVD模式的MMVD标志、表示距离表的索引以及选择距离表的元素的索引进行解码,具有通过将规定距离和规定方向的差分矢量与从合并候选推导出的运动矢量相加来获得运动矢量的MMVD预测部,上述MMVD预测部在选择上述距离表的特定的元素的情况下将运动矢量变换成整数精度。
通过采用如上构成,在以高压缩率对图像进行编码时,许多预测参数通过跳过标志表示不存在预测残差时的情况下,由于无需对合并标志、MMVD标志进行解码,因此不会降低编码效率。
此外,本发明的一个方案的图像解码装置的特征在于,具有预测参数解码部,对用于生成预测图像的参数进行解码,所述预测参数解码部对表示不存在预测残差的跳过标志进行解码,在存在预测残差的情况下,接着对隐式地获得运动矢量信息的合并标志进行解码,在不是合并模式的情况下,对除了隐式地获得的运动矢量信息之外,通过从编码数据解码差分的运动矢量信息来获得运动矢量信息的MMVD标志进行解码。
通过采用如上构成,在低速率时,许多预测参数通过跳过标志表示不存在预测残差时的情况下,由于无需对合并标志、MMVD标志进行解码,因此不会降低编码效率。
工业上的可利用性
本发明的实施方式能优选地应用于对将图像数据编码而得到的编码数据进行解码的运动图像解码装置,以及生成将图像数据编码而得到的编码数据的运动图像编码装置。此外,能优选地应用于由运动图像编码装置生成并被运动图像解码装置参照的编码数据的数据结构。
附图标记说明
31图像解码装置
301熵解码部
302参数解码部
3020报头解码部
303帧间预测参数解码部
304帧内预测参数解码部
308预测图像生成部
309帧间预测图像生成部
310帧内预测图像生成部
311逆量化/逆变换部
312加法部
11图像编码装置
101预测图像生成部
102减法部
103变换/量化部
104熵编码部
105逆量化/逆变换部
107环路滤波器
110编码参数确定部
111参数编码部
112参数编码部
1110报头编码部
1111CT信息编码部
1112CU编码部(预测模式编码部)
1114TU编码部。