具体实施方式
〔实施方式1〕
参照图1~图18,对本发明的一实施方式进行说明。首先,参照图2,对运动图像解码装置(图像解码装置)1和运动图像编码装置(图像编码装置)2的概要进行说明。图2是表示运动图像解码装置1的概略构成的功能框图。
图2所示的运动图像解码装置1和运动图像编码装置2安装在HEVC(High-Efficiency Video Coding:高效视频编码)中采用的技术。在这些运动图像编码方式中,运动图像编码装置2对规定从编码器传输到解码器的语法(syntax)的值进行熵编码而生成编码数据#1。
作为熵编码方式,已知有基于上下文的自适应二进制算术编码(CABAC:Context-based Adaptive Binary Arithmetic Coding)。
在利用CABAC进行的编码/解码中,进行自适应于上下文的处理。上下文是指编码/解码的状况(前后关系),用于记录关联语法的发生概率。在CABAC中,对能取多值的语法实施二值化处理,并根据发生概率对通过该二值化处理得到的二值数据自适应地进行算术编码。具体而言,准备多个保持二进制值(0或1)的发生概率的缓冲器,根据上下文选择一个缓冲器,并基于记录于该缓冲器的发生概率来进行算术编码。此外,通过基于进行解码/编码的二进制值来更新该缓冲器的发生概率,能根据上下文维持适当的发生概率。
在运动图像解码装置1中输入运动图像编码装置2对运动图像进行编码后的编码数据#1。运动图像解码装置1对被输入的编码数据#1进行解码并将运动图像#2输出至外部。在对运动图像解码装置1进行详细说明之前,以下对编码数据#1的构成进行说明。
<编码流Te的结构>
在对本实施方式的运动图像编码装置2和运动图像解码装置1进行详细说明之前,对由运动图像编码装置2生成并由运动图像解码装置1进行解码的编码流Te的数据结构进行说明。
图3是表示编码流Te中的数据的分级结构的图。编码流Te示例性地包括序列和构成序列的多张图片。图3的(a)~(f)分别是表示既定序列SEQ的编码视频序列、规定图片PICT的编码图片、规定切片S的编码切片、规定切片数据的编码切片数据、编码切片数据中所包括的编码树单元以及编码树单元中所包括的编码单元(Coding Unit:CU)的图。
(编码视频序列)
在编码视频序列中,规定有运动图像解码装置1为了对处理对象的序列SEQ进行解码而参考的数据的集合。序列SEQ如图3的(a)所示,包括视频参数集(Video ParameterSet)、序列参数集SPS(Sequence Parameter Set)、图片参数集PPS(Picture ParameterSet)、图片PICT以及补充增强信息SEI(Supplemental Enhancement Information)。在此,在#后示出的值表示层ID。在图3中示出存在#0和#1即层0和层1的编码数据的示例,但层的种类和层数并不取决于此。
视频参数集VPS在由多层构成的运动图像中,规定有多个运动图像通用的编码参数的集合,以及运动图像中所包括的多层和与各层关联的编码参数的集合。
在序列参数集SPS中,规定有运动图像解码装置1为了对对象序列进行解码而参考的编码参数的集合。例如,规定有图片的宽度、高度。需要说明的是,SPS可以存在多个。在该情况下,从PPS中选择多个SPS中的任一个。
在图片参数集PPS中,规定有运动图像解码装置1为了对对象序列内的各图片进行解码而参考的编码参数的集合。例如包括用于图片的解码的量化宽度的基准值(pic_init_qp_minus26)和指示加权预测的应用的标志(weighted_pred_flag)。需要说明的是,PPS可以存在多个。在该情况下,从对象序列内的各图片中选择多个PPS中的任一个。
(编码图片)
在编码图片中,规定有运动图像解码装置1为了对处理对象的图片PICT进行解码而参考的数据的集合。如图3的(b)所示,图片PICT包括切片S0~SNS-1(NS为图片PICT中所包括的切片的总数)。
需要说明的是,以下,在无需对各切片S0~SNS-1进行区分的情况下,有时会省略代码的下标来进行记述。此外,以下所说明的编码流Te中所包括的且带有下标的其他数据也是同样的。
(编码切片)
在编码切片中,规定有运动图像解码装置1为了对处理对象的切片S进行解码而参考的数据的集合。切片S如图3的(c)所示,包括切片报头SH和切片数据SDATA。
切片报头SH中包括运动图像解码装置1为了确定对象切片的解码方法而参考的编码参数组。指定切片类型的切片类型的指定信息(slice_type)是切片报头SH中所包括的编码参数的一个示例。
作为能由切片类型指定信息指定的切片类型,可列举出:(1)在进行编码时仅使用帧内预测的I切片、(2)在进行编码时使用单向预测或帧内预测的P切片以及(3)在进行编码时使用单向预测、双向预测或帧内预测的B切片等。
需要说明的是,切片报头SH中也可以包括上述编码视频序列中所包括的对图片参数集PPS的参考(pic_parameter_set_id)。
(编码切片数据)
在编码切片数据中,规定有运动图像解码装置1为了对处理对象的切片数据SDATA进行解码而参考的数据的集合。如图3的(d)所示,切片数据SDATA包括编码树单元(CTU:Coding Tree Unit)。CTU是构成切片的固定大小(例如64×64)的块,有时也称为最大编码单位(LCU:Largest Coding Unit)。
(编码树单元)
如图3的(e)所示,规定有运动图像解码装置1为了对处理对象的编码树单元进行解码而参考的数据的集合。编码树单元通过递归的四叉树分割来进行分割。将通过递归的四叉树分割而得到的树形结构的节点称为编码节点(CN:Coding Node)。四叉树的中间节点为编码节点,编码树单元本身也被规定为最上层的编码节点。CTU包括分割标志(cu_split_flag),在cu_split_flag为1的情况下,分割为四个编码节点CN。在cu_split_flag为0的情况下,编码节点CN具有一个编码单元(Coding Unit:CU)来作为节点而不被分割。编码单元CU是编码节点的末端节点,且不进行进一步分割。编码单元CU为编码处理的基本单位。
此外,在编码树单元CTU的大小为64×64像素的情况下,编码单元的大小可以取64×64像素、32×32像素、16×16像素以及8×8像素中的任一种。
(编码单元)
如图3的(f)所示,规定有运动图像解码装置1为了对处理对象的编码单元进行解码而参考的数据的集合。具体而言,编码单元包括预测树、变换树以及CU报头CUH。在CU报头中规定有预测模式、分割方法(PU分割模式)等。
在预测树中规定有将编码单元分割为一个或多个而得到的各预测单元(PU)的预测信息(参考图片索引、运动矢量等)。如果换为其他表述,则预测单元是构成编码单元的一个或多个不重复的区域。此外,预测树包括通过上述分割而得到的一个或多个预测单元。需要说明的是,以下将进一步分割预测单元而得到的预测单位称为“子块”。子块由多个像素构成。在预测单元与子块的大小相等的情况下,预测单元中的子块为一个。在预测单元的大小大于子块的大小的情况下,预测单元被分割为子块。例如在预测单元为8×8、子块为4×4的情况下,预测单元被分割为四个子块,包括水平分割的两部分和垂直分割的两部分。
预测处理可以按每个该预测单元(子块)进行。
预测树中的分割的种类大体来说有帧内预测的情况和帧间预测的情况这两种。帧内预测是同一图片内的预测,帧间预测是指在互不相同的图片间(例如显示时刻间、层图像间)进行的预测处理。
在帧内预测的情况下,分割方法有2N×2N(与编码单元相同大小)和N×N。
此外,在帧间预测的情况下,分割方法根据编码数据的PU分割模式(part_mode)来进行编码,有2N×2N(与编码单元相同大小)、2N×N、2N×nU、2N×nD、N×2N、nL×2N、nR×2N以及N×N等。需要说明的是,2N×N、N×2N表示1∶1的对称分割,2N×nU、2N×nD以及nL×2N、nR×2N表示1∶3、3∶1的非对称分割。将CU中所包括的PU依次表示为PU0、PU1、PU2、PU3。
图4的(a)~(h)中具体图示出各个PU分割模式中的分区的形状(PU分割的边界的位置)。图4的(a)表示2N×2N的分区,图4的(b)、(c)、(d)分别表示2N×N、2N×nU以及2N×nD的分区(横长分区)。图4的(e)、(f)、(g)分别表示N×2N、nL×2N、nR×2N的情况下的分区(纵长分区),图4的(h)表示N×N的分区。需要说明的是,将横长分区和纵长分区统称为分区,将2N×2N、N×N统称为正方形分区。
此外,在变换树中,编码单元被分割为一个或多个变换单元,并规定有各变换块的位置和大小。如果换为其他表述,则变换单元是构成编码单元的一个或多个不重复的区域。此外,变换树包括通过上述分割而得到的一个或多个变换单元。
变换树的分割中有将与编码单元相同的大小的区域分配为变换单元的分割和与上述CU的分割相同地通过递归的四叉树分割而进行的分割。
变换处理按每个该变换单元进行。
(运动图像解码装置)
以下,参照图1和图2,对本实施方式的运动图像解码装置1的构成进行说明。
<运动图像解码装置的概要>
运动图像解码装置1按每个PU生成预测图像Pred,通过将所生成的预测图像Pred与从编码数据#1解码的预测残差D(以下有时将预测残差标记为r[][])相加,生成解码图像#2,并将所生成的解码图像#2输出至外部。
在此,预测图像Pred的生成参考通过对编码数据#1进行解码而得到的编码参数来进行。编码参数是指为了生成预测图像Pred而参考的参数。编码参数中除了包括在画面间预测中参考的运动矢量、在画面内预测中参考的预测模式等预测参数以外,还包括PU的大小、形状、TU的大小、形状以及原图像与预测图像Pred的残差数据等。以下,将编码参数中所包括的信息中除了上述残差数据以外的全部信息的集合称为边信息。
此外,以下将作为解码的对象的图片(帧)、切片、CTU、CT、CU以及PU、TT、TU分别称为对象图片、对象切片、对象CTU、对象CT、对象CU、对象PU、对象TT以及对象TU。
需要说明的是,树单元的大小例如为64×64像素,PU、TU的大小例如为64×64像素、32×32像素、16×16像素、8×8像素、4×4像素等。然而,这些大小仅为示例,树单元和PU、TU的大小也可以是以上所示的大小以外的大小。
<运动图像解码装置的构成>
若再次参照图2对运动图像解码装置1的概略构成进行说明,则如下所述。图2是表示运动图像解码装置1的概略构成的功能框图。
如图2所示,运动图像解码装置1具备:解码模块10、CT信息解码部11、PU信息解码部12、TT信息解码部13、预测图像生成部14、逆量化/逆变换部15、帧存储器16以及加法器17、环路滤波器18、报头解码部19、CU解码部20以及CU信息解码部21。TT信息解码部13还具备TU解码部22。
[基本流程]
图1是对运动图像解码装置1的概略动作进行说明的流程图。
(S1100:参数集信息解码)报头解码部19从编码数据#1对VPS、SPS、PPS等参数集信息进行解码。
(S1200:切片信息解码)报头解码部19从编码数据#1对切片报头(切片信息)进行解码。
以下,运动图像解码装置1通过针对对象图片中所包括的各CTU重复进行S1300到S5000的处理来导出各CTU的解码图像。
(S1300:CTU信息解码)CT信息解码部11从编码数据#1对树单元(CTU)进行解码。
(S1400:CT信息解码)CT信息解码部11从编码数据#1对编码树(CT)进行解码。
(S1500:CU解码)CU解码部20实施S1510、S1600、S1700,从编码数据#1对编码单元(CU)进行解码。
(S1510:CU信息解码)CU信息解码部21从编码数据#1对CU信息进行解码。
(S1600:PU信息解码)PU信息解码部12从编码数据#1对预测单元信息(PU信息PTI)进行解码。
(S1700:TT信息解码)TT信息解码部13从编码数据#1对变换树TT进行解码。
(S2000:预测图像生成)预测图像生成部14针对对象CU中所包括的各PU,基于PU信息PUI生成预测图像Pred。
(S3000:逆量化/逆变换)逆量化/逆变换部15针对对象CU中所包括的各TU,基于TT信息TTI执行逆量化/逆变换处理。
(S4000:解码图像生成)加法器17通过将由预测图像生成部14供给的预测图像Pred与由逆量化/逆变换部15供给的预测残差D相加来生成针对对象CU的解码图像P0。
(S5000:环路滤波)环路滤波器18对解码图像P0施加去块滤波、取样自适应滤波(SAO)等环路滤波,生成解码图像P。
[解码模块]
以下,对各模块的概略动作进行说明。解码模块10进行由二进制对语法值进行解码的解码处理。更具体而言,解码模块10基于由供给源供给的编码数据和语法类别对通过CABAC等熵编码方式编码的语法值进行解码,并将解码后的语法值返回给供给源。
在以下所示的示例中,编码数据和语法类别的供给源是CT信息解码部11、CU解码部20(CU信息解码部21、PU信息解码部12以及TT信息解码部13)。
[报头解码部]
报头解码部19对从运动图像编码装置2输入的编码数据#1的VPS(videoparameter set:视频参数集)、SPS、PPS、切片报头进行解码。
[CT信息解码部]
CT信息解码部11使用解码模块10对从运动图像编码装置2输入的编码数据#1进行树单元层和编码树层中的解码处理。具体而言,CT信息解码部11按照以下的步骤从编码数据#1对CTU信息、CT信息进行解码。
首先,CT信息解码部11使用解码模块10对CTU信息的树单元报头CTUH进行解码。接着,CT信息解码部11根据表示是否对对象CT进行QT分割的QT分割标志的上下文,从CT中所包括的CT信息对QT分割标志进行解码。然后,CT信息解码部11递归地对对象CT进行分割并解码,直至QT分割标志不再通知进一步分割。最后,对CTU信息的树单元脚注CTUF进行解码。对被解码的CT信息为QT分割标志(qt_split_flag)的示例进行了说明,但被解码的CT信息也可以被追加表示是否对对象CT进行BT(binary tree:二进制树)分割的BT分割标志(bt_split_flag),表示是否对对象CT进行TT(triple tree:三进制树)分割的TT分割标志(tt_split_flag)。
树单元报头CTUH和树单元脚注CTUF中包括运动图像解码装置1为了确定对象编码树单元的解码方法而参考的编码参数。此外,CT信息中除了QT分割标志以外,还可以包括在BT方向标志(BT分割模式)、对象CT以及下层的编码节点中应用的参数。
[CU解码部]
CU解码部20由CU信息解码部21、PU信息解码部12、TT信息解码部13构成,对最下层的编码树CT(即CU)的CU信息、PUI信息、TTI信息进行解码。
[CU信息解码部]
在CU信息解码部21中,使用解码模块10对各CU的CU信息(跳过标志SKIP、CU预测方式信息PredMode、PU分割类型信息PartMode等)进行解码。
[PU信息解码部]
在PU信息解码部12中,使用解码模块10对各PU的PU信息(合并标志(merge_flag)、合并索引(merge_idx)、估计运动矢量索引(mvp_idx)、参考图像索引(ref_idx)、帧间预测标识符(inter_pred_flag)以及运动矢量残差(mvd)等)进行解码。
[TT信息解码部]
TT信息解码部13使用解码模块10对各TTI(TU分割标志SP_TU(split_transform_flag)、CU残差标志CBP_TU(cbf_cb、cbf_cr、cbf_luma)等以及TU)进行解码。
此外,TT信息解码部13具备TU解码部22。TU解码部22在TU中包括残差的情况下,对QP更新信息(量化校正值)进行解码。需要说明的是,QP更新信息是表示与量化参数QP的预测值即量化参数预测值qPpred的差分值的值。此外,TU解码部22对量化预测残差(residual_coding)进行解码。
更详细而言,如图5所示,CT信息解码部11进行以下的动作。图5是对本发明的一实施方式的CT信息解码部11(CTU信息解码S1300、CT信息解码S1400)的概略动作进行说明的流程图。
图7是表示本发明的一实施方式的CTU信息和CT信息的语法表的构成例的图。
(S1311)CT信息解码部11从编码数据#1对CTU信息进行解码,并对用于管理被递归地分割的编码树CT的变量进行初始化。具体而言,如下式所述,将表示编码树的层的CT层(CT深度)cqtDepth设定为0,将编码树的大小即CT大小(在此为对数CT大小log2CbSize)设定为树单元的对数大小CtbLog2SizeY作为初始值。
cqtDepth=0
log2CbSize=CtbLog2SizeY
需要说明的是,CT层cqtDepth在最上层设为0,并设为随着下层变深而逐一变大,但并不限于此。在上述说明中,通过将CT大小和CTU大小限定为2的指数幂(4、8、16、32、64、128、256......等)来用以2为底的对数对这些大小进行处理,但并不限于此。需要说明的是,在大小为4、8、16、32、64、128、256的情况下,2、3、4、5、6、7、8分别为对数值。
以下,CT信息解码部11递归地对编码树CT(coding_quadtree)进行解码(S1400)。
CT信息解码部11对最上层(根)的编码树coding_quadtree(xCtb、yCtb、CtbLog2SizeY、0)进行解码(SYN1400)。需要说明的是,xCtb、yCtb为CTU的左上坐标,CtbLog2SizeY为CTU的对数大小(例如,如果大小为64、128、256,则为6、7、8)。
(S1411)CT信息解码部11判定对数CT大小log2CbSize是否大于规定的最小CT大小的对数值MinCbLog2SizeY(SYN1411)。在对数CT大小log2CbSize大于MinCbLog2SizeY的情况下,进入S1421,在除此以外的情况下进入S1422。
(S1421)CT信息解码部11在判定为对数CT大小log2CbSize大于MinCbLog2SizeY的情况下,对SYN1421所示的语法元素即CU分割标志(split_cu_flag)进行解码。
(S1422)CT信息解码部11在除此以外的情况下(对数CT大小log2CbSize为MinCbLog2SizeY以下),就是说,在编码数据#1中未出现CU分割标志split_cu_flag的情况下,省略从编码数据#1对CU分割标志split_cu_flag进行解码,而将CU分割标志split_cu_flag导出为0。
(S1431)CT信息解码部11在CU分割标志split_cu_flag为0以外(=1)的情况下(SYN1431),实施后述的(S1441),进入下一层并重复进行(S1411)之后的处理。就是说,在CT层cqtDepth+1的位置(x0,y0)、(x1,y0)、(x0,y1)、(x1,y1)对对数CT大小log2CbSize-1的四个编码树CT进行解码。CT信息解码部11在下层的编码树CT中也继续进行从S1411开始的CT信息解码处理S1400。
coding_quadtree(x0,y0,log2CbSize-1,cqtDepth+1)(SYN1441A)
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)(SYN1441B)
coding_quadtree(x0,y1,log2CbSize-1,cqtDepth+1)(SYN1441C)
coding_quadtree(x1,y1,log2CbSize-1,cqtDepth+1)(SYN1441D)
在此,x0,y0是对象编码树的左上坐标,x1,y1如以下算式所述将(x0,y0)加上对数CT大小(1<<log2CbSize)的1/2而导出。
x1=x0+(1<<(log2CbSize-1))
y1=y0+(1<<(log2CbSize-1))
需要说明的是,<<表示左移位。1<<N是与2的N次幂相同的值(以下同样)。同样地,以下>>表示右移位。
在除此以外的情况(CU分割标志split_cu_flag为0的情况)下,进入S1500来对编码单元CU进行解码。
(S1441)将表示编码树的层的CT层cqtDepth加1,并将编码单元大小的对数值即对数CT大小log2CbSize减1(CT大小减1/2)而进行更新。
cqtDepth=cqtDepth+1
log2CbSize=log2CbSize-1
图6是对本发明的一实施方式的CU解码部20(CU解码S1500)、CU信息解码部21(CU信息解码S1510)、PU信息解码部12(PU信息解码S1600)、TT信息解码部13(TT信息解码S1700)的概略动作进行说明的流程图。图8是表示本发明的一实施方式的CU信息、PT信息PTI、TT信息TTI的语法表的构成例的图。
[CU解码部]
(S1500)CU解码部20对编码单元CU(coding_unit(x0,y0,log2CbSize))进行解码(SYN1500)。在此,x0,y0是编码单元的左上坐标。编码单元的对数大小即log2CbSize由CT信息解码部11通知。CU解码部20的具体处理通过以下的CU信息解码部21、PU信息解码部12、TT信息解码部13来进行。
[CU信息解码部]
CU信息解码部21使用解码模块10对CU信息(跳过标志、CU预测方式信息PartMode、PU分割类型信息、残差根标志)进行解码。
(S1511)CU信息解码部21使用解码模块10从编码数据#1对跳过标志cu_skip_flag进行解码。
(S1512)CU信息解码部21判定跳过标志cu_skip_flag是否为0以外的值(=1)。在跳过标志cu_skip_flag为0以外的情况下,CU信息解码部21对PU信息解码部12进行通知。此外,在跳过标志cu_skip_flag为0的情况下,(S1513)CU信息解码部21对CU预测方式信息pred_mode_flag进行解码,进而(S1514)对PU分割类型信息PartMode(part_mode)进行解码,并通知给PU信息解码部12。进而,(S1515)CU信息解码部21对残差根标志rqt_root_flag进行解码,(S1516)判定残差根标志是否为0以外的值,在残差根标志为0的情况下结束处理,在0以外的值的情况下通知给TT信息解码部13。
[PU信息解码部]
PU信息解码部12使用解码模块10进行PU信息PUI的解码处理。具体而言,PU信息解码部12按照以下的步骤对PU信息PUI进行解码。
PU信息解码部12参考预先设定的或者由CU信息解码部21通知的PU分割类型信息PartMode来确定对象CU中的PU分割类型。接着,PU信息解码部12将对象CU中所包括的各PU依次作为对象PU,执行与对象PU对应的PU信息的解码处理。
即,PU信息解码部12从与对象PU对应的PU信息,进行用于生成预测图像Pred的各参数的解码处理。
PU信息解码部12将对对象PU进行解码后的PU信息PUI供给至预测图像生成部14。
更详细而言,如图6所示,PU信息解码部12进行以下的动作。图6是对S1600所示的PU信息解码的概略动作进行说明的流程图。
图9是表示本发明的一实施方式的PU信息PUI的语法表的构成例的图。
(S1631)PU信息解码部12根据PU分割类型信息PartMode所示的PU分割数,从编码数据#1对对象CU中所包括的各PU信息进行解码。
例如,在PU分割类型为2N×2N的情况下,PU信息解码部12对将CU设为一个PU的下述一个PU信息PUI进行解码。
prediction_unit(x0,y0,nCbS,nCbS)(SYN1631A)
PU信息解码部12在PU分割类型为2N×N的情况下,对将CU上下分割的下述两个PU信息PUI进行解码。
prediction_unit(x0,y0,nCbS,nCbS/2)(SYN1631B)
prediction_unit(x0,y0+(nCbS/2),nCbS,nCbS/2)(SYN1631C)
PU信息解码部12在PU分割类型为N×2N的情况下,对将CU左右分割的下述两个PU信息PUI进行解码。
prediction_unit(x0,y0,nCbS/2,nCbS)(SYN1631D)
prediction_unit(x0+(nCbS/2),y0,nCbS/2,nCbS)(SYN1631E)
在PU分割类型为N×N的情况下,对将CU四等分的下述四个PU信息PUI进行解码。
prediction_unit(x0,y0,nCbS/2,nCbS/2)(SYN1631F)
prediction_unit(x0+(nCbS/2),y0,nCbS/2,nCbS/2)(SYN1631G)
prediction_unit(x0,y0+(nCbS/2),nCbS/2,nCbS/2)(SYN1631H)
prediction_unit(x0+(nCbS/2),y0+(nCbS/2),nCbS/2,nCbS/2)(SYN1631I)
(S1632)在跳过标志为1的情况下,PU信息解码部12将PU分割类型设为2N×2N,对一个PU信息PUI进行解码。
prediction_unit(x0,y0,nCbS,nCbS)(SYN1632S)
[TT信息解码部]
在CU信息解码部21中解码后的残差根标志rqt_root_cbf为0以外的值(=1)的情况下,进入S1700对TT信息TTI进行解码,实施由TT信息解码部13进行的处理。在残差根标志rqt_root_cbf为0的情况下,省略从编码数据#1对对象CU的TT信息TTI进行解码的处理,设为未对对象CU进行TU分割且对象CU的量化预测残差为0而导出TT信息TTI。
TT信息解码部13使用解码模块10进行TT信息TTI(TU分割信息、CU残差标志、AMT标志以及TU)的解码处理。
[预测图像生成部]
预测图像生成部14针对对象CU中所包括的各PU,基于PU信息PUI生成预测图像Pred。具体而言,预测图像生成部14通过按照与对象PU对应的PU信息PUI中所包括的参数进行帧内预测或帧间预测,从作为已解码图像的局部解码图像P’生成预测图像Pred。预测图像生成部14将所生成的预测图像Pred供给至加法器17。
需要说明的是,若对预测图像生成部14基于运动补偿预测参数(运动矢量、参考图像索引、帧间预测标识符)生成对象CU中所包括的PU的预测图像Pred的方法进行说明,则如下所述。
在帧间预测标识符指示单向预测的情况下,预测图像生成部14在参考图像索引所示的参考图像中,使用运动矢量所示的位置的解码图像来生成预测图像Pred。
另一方面,在帧间预测标识符指示双向预测的情况下,预测图像生成部14针对两组参考图像索引与运动矢量的组合的每一个通过运动补偿生成预测图像并计算出平均值,或者基于对象图片与各参考图像的显示时间间隔对各预测图像进行加权相加,由此,生成最终的预测图像Pred。
[逆量化/逆变换部]
逆量化/逆变换部15针对对象CU中所包括的各TU,基于TT信息TTI执行逆量化/逆变换处理。具体而言,逆量化/逆变换部15通过对对象TU中所包括的量化变换系数qd[][]进行逆量化和逆正交变换来复原每个像素的预测残差D。即,逆量化/逆变换部15进行复原(逆运算)的变换是指以能量(分散的总和)集中(即偏向)于少数分量的方式对由多个分量构成的信息进行映射的处理,变换的性能取决于如何使该能量集中于较少的分量。
需要说明的是,在此,变换是指例如从像素区域向频域的正交变换。因此,逆变换是从频域向像素区域的变换。此外,作为逆变换的示例,可列举出逆DCT变换(InverseDiscrete Cosine Transform:离散余弦逆变换)和逆DST变换(Inverse Discrete SineTransform:离散正弦逆变换)等。逆量化/逆变换部15将复原后的预测残差D供给至加法器17。
逆量化/逆变换部15除了上述逆变换以外还可以使用自适应核变换(AdaptiveMultiple Core Transform:AMT、自适应多核变换)(第一变换)和/或二次变换(SecondaryTransform)(第二变换)来复原预测残差D,自适应核变换是根据帧内/帧间的预测方法以及块大小、亮度/色度的信号的区别自适应地选择的变换,二次变换是在帧内预测模式中选择的变换。该自适应核变换和二次变换将在下文进行说明。
[加法器]
加法器17通过将由预测图像生成部14供给的预测图像Pred与由逆量化/逆变换部15供给的预测残差D相加来生成对象CU的解码图像P0。
[环路滤波器]
环路滤波器18对对象CU的解码图像P0实施去块滤波、取样自适应偏移滤波SAO、自适应环路滤波ALF等滤波,生成解码图像P。
[帧存储器]
在帧存储器16中,实施了环路滤波的解码图像P与用于该解码图像P的解码的参数一起被依次记录。在帧存储器16中,在对对象树单元进行解码的时间点,与比该对象树单元更先被解码的所有树单元(例如,按照光栅扫描的顺序排列在先的所有树单元)对应的解码图像被记录。作为记录于帧存储器16的解码参数的示例,可列举出CU预测方式信息(PredMode)等。
需要说明的是,在运动图像解码装置1中,针对图像内的所有树单元,在各树单元的解码图像生成处理结束的时间点,与输入至运动图像解码装置1的一帧大小的编码数据#1对应的解码图像#2输出至外部。
(自适应核变换和二次变换)
图10是表示逆量化/逆变换部15的构成例的功能框图。如图10所示,量化/逆变换部15具备逆量化部151和逆变换部152。逆量化部151对通过TT信息解码部13内的TU解码部22解码后的量化变换系数qd[][]进行逆量化,导出变换系数d[][]。逆量化部151将所导出的变换系数d[][]发送至逆变换部152。
逆变换部152对接收到的变换系数d[][]进行逆变换,复原预测残差r[][](在图2中也表示为D)。复原后的预测残差r[][]从逆变换部152传送至加法器17。
逆变换部152能使用自适应核变换和二次变换。
需要说明的是,变换与逆变换在作为变换基底的系数的值以外的处理上没有差别。在以后的说明中,关于逆变换部152中的变换处理,将使用“变换”这一术语而不是“逆变换”。
<自适应核变换>
在逆变换部152中,能自适应地切换变换的方法,在本说明书中,将通过明确示出的标志、索引以及预测模式等进行切换的变换称为自适应核变换。在自适应核变换中使用的变换(核变换)是由垂直变换和水平变换构成的分离型变换或非分离型变换。核变换的变换基底为DCT2、DST7、DCT8、DST1以及DCT5。在自适应核变换中,对垂直变换和水平变换分别独立地切换变换基底。需要说明的是,可选择的变换并不限于上述,也可以使用其他变换(变换基底)。需要说明的是,会将DCT2、DST7、DCT8、DST1以及DCT5分别表示为DCT-II、DST-VII、DCT-VIII、DST-I以及DCT-V。
自适应核变换参考从编码数据解码的AMT标志(amt_flag),切换不进行基于索引的切换的固定变换(基本核变换)和进行基于索引的切换的选择性变换(扩展核变换)。在amt_flag=0时,使用固定变换,在amt_flag=1时,使用选择性变换。在固定变换(amt_flag=0)中,不参考AMT索引amt_idx,而使用固定变换,在此使用DCT2来进行变换。在选择性变换(amt_flag=1)中,进一步从编码数据对用于选择的AMT索引amt_idx进行解码,并根据预测模式和AMT索引amt_idx来切换变换。需要说明的是,在本实施例中,记载了以CU单位或TU单位对AMT标志进行解码、以TU单位对AMT索引amt_idx进行解码的示例,但解码(切换)的单位并不限于此。
AMT索引amt_idx是用于选择自适应核变换的变换基底的切换索引。AMT索引amt_idx的上位比特被分配为垂直变换的变换选择标志,amt_idx的下位比特被分配为水平变换的变换选择,垂直变换的变换选择标志amt_trans_idx即amt_trans_idx_ver和水平变换的变换选择标志amt_trans_idx即amt_trans_idx_hor通过以下算式导出。
amt_trans_idx_ver=amt_idx>>1
amt_trans_idx_hor=amt_idx&1
将amt_trans_idx_ver和ramt_trans_idx_hor统称为amt_trans_idx。
需要说明的是,当使用表示是垂直变换还是水平变换的标志vertTrFlag(垂直为1,水平为0)时,amt_trans_idx也可以由以下算式导出。
amt_trans_idx=(vertTrFlag)?amt_trans_idx_ver:amt_trans_idx_hor
需要说明的是,在amt_trans_idx的比特中,垂直变换、水平变换的分配并不限于上述,例如也可以如下所述。
amt_trans_idx_ver=amt_idx&1
amt_trans_idx_hor=amt_idx>>1
在自适应核变换中使用的变换使用预测模式(帧内、帧间)和变换选择标志(amt_trans_idx),从上述多个变换基底中选择。图11的(a)是对变换集coreTrSet的表进行说明的图,使用该图对选择方法进行说明。
在帧内预测模式的情况下,从名称(Name)为TrSetIntraO、TrSetIntra1、TrSetIntra2的三个变换集中选择使用的变换。各变换集具有两个变换基底。例如TrSetIntraO具有DST7和DCT8作为集。然后,使用变换选择标志(amt_trans_idx)来对使用这两个变换基底中的哪一个进行切换。例如在TrSetIntraO的情况下,如果是amt_trans_idx=0,则选择DST7,如果是amt_trans_idx=1,则选择DCT8。
在帧间预测模式的情况下,变换集是TrSetInter的一种。TrSetInter所具有的两个变换基底与帧内预测模式的情况相同,使用变换选择标志(amt_trans_idx)来对使用哪一个进行切换。
使用帧内预测模式的三个变换集(TrSetIntraO、TrSetIntra1、TrSetIntra2)中的哪一个变换集参考帧内预测模式IntraPredMode来确定。将这些在图12中示出。图12示出了三十五种帧内预测模式IntraPredMode的各自的水平变换和垂直变换选择哪一个变换集。图12中的0、1、2分别表示变换集TrSetIntraO、TrSetIntra1、TrSetIntra2。例如在IntraPredMode=10的情况下,图中的水平变换(Horizontal)的值为0,因此,水平变换中使用TrSetIntraO(=0)的变换集,图中的垂直变换(Vertical)的值为2,因此,垂直变换中使用TrSetIntra2(=2)的变换集。
使用图13对上述说明的自适应核变换具体地进行说明。图13的逆变换部152是图10的逆变换部152的一个示例。图13的核变换部1521由下述构成:核变换处理导出部15211,从多个变换基底中导出所使用的核变换;以及核变换处理部15212,使用所导出的核变换(修正)来从变换系数d[][]计算出预测残差r[][]。在未实施二次变换的情况下,修正变换系数等于变换系数。在实施了二次变换的情况下,修正变换系数取与变换系数不同的值。核变换处理导出部15211由下述构成:核变换集导出部152111,导出所使用的变换集的索引coreTrSetIdx;以及核变换处理设定部152112,使用coreTrSetIdx来导出所使用的核变换的索引coreTrIdx。
对核变换集导出部152111进行说明。
首先,将归纳了四种变换集(TrSetIntraO、TrSetIntra1、TrSetIntra2、TrSetInter)的表coreTrSet示于下述。
核变换集导出部152111通过下述的算式导出接下来使用的变换集的索引coreTrSetIdx。
coreTrSetIdx=(PredMode==PRED_INTER)?TrSetInter:coreTrSetTbl[IntraPredMode][vertTrFlag]
在此,PredMode是帧内或者帧间预测模式,coreTrSetTbl和vertTrFlag是在图12中说明的表和表示是水平变换还是垂直变换的标志。例如,在帧间预测(PredMode=PRED_INTER)的情况下,为coreTrSetIdx=TrSetInter。在帧内预测(PredMode=PRED_INTRA)且帧内预测模式IntraPredMode=10的情况下,如果是水平变换(vertTrFlag=0),则为coreTrSetIdx=TrSetIntra0,如果是垂直变换(vertTrFlag=1),则为coreTrSetIdx=TrSetIntra2。
对核变换处理设定部152112进行说明。核变换处理设定部152112通过下述的算式导出所使用的核变换的索引coreTrIdx。
coreTrIdx=(amt_flag==0)?fixedTr:coreTrSet[coreTrSetIdx][amt_trans_idx]在此fixedTr表示固定变换。此外,以下对coreTrIdx进行定义(图11的(b))。
coreTrIdx={DCT2,DCT5,DCT8,DST1,DST7}
需要说明的是,coreTrIdx可以用数值进行处理。即,DCT2、DCT5、DCT8、DST1、DST7能使用0、1、2、3、4等。
需要说明的是,在amt_flag==0且选择了固定变换fixedTr的情况下,变换基底的水平变换、垂直变换均为DCT2或DST7,因此,可以选择DCT2或DST7作为coreTrIdx通过核变换处理部15212进行处理,也可以设置未图示的固定变换专用的处理部来进行处理。在后文对amt_flag=1且选择了自适应变换的情况的详细内容加以叙述。
核变换处理部15212由下述构成:核变换矩阵导出部152121,导出核变换的索引coreTrIdx所示的变换矩阵;垂直变换部152122,对修正变换系数d[][]实施垂直变换;以及水平变换部152123,对修正变换系数d[][]实施水平变换。核变换处理部15212首先通过核变换矩阵导出部152121导出核变换的索引coreTrIdx所示的变换矩阵transMatrix[][]。
transMatrix[][]=coreTransMatrixTbl[coreTrIdx][][]
在此,coreTransMatrixIdx是储存了图11的(b)所示的变换基底的表。
需要说明的是,也可以将垂直变换的变换矩阵transMatrix与transMatrixV、将水平变换的变换矩阵与transMatrixH进行区别。
接着,核变换处理部15212将用于垂直/水平变换而分别导出的变换矩阵通知给垂直变换部152122和水平变换部152123,将修正变换系数d[][]变换为预测残差r[][]。垂直变换部152122通过垂直方向一维变换将修正变换系数d[][]变换为中间值e[][],并将中间值e[][]传送至中间值截取部152124。中间截取部152124通过对中间值e[][]进行截取来导出中间值g[][],并传送至水平变换部152123。水平变换部152123将中间值g[][]变换为预测残差r[][]。预测残差r[][]从水平变换部152123传送至加法器17。
垂直变换部152121(核变换处理部15212)导出第一中间值e[x][y]。
e[x][y]=∑(transMatrix[y][j]×d[x][j])(j=0..nTbs-1)
在此,transMatrix[][](=transMatrixV[][])是以在垂直变换(vertTrFlag=1)的情况下通过上式导出的nTbs×nTbs的矩阵表示的变换基底。nTbs是TU大小。在coreTrIdx为DCT2的4×4变换(nTbs=4)的情况下,例如使用transMatrix={{29,55,74,84}{74,74,0,-74}{84,-29,-74,55}{55,-84,74,-29}}。符号∑是指,对j=0到nTbs-1的下标j加上矩阵transMatrix[y][j]与变换系数d[x][j]的积的处理。就是说,e[x][y]通过对从作为d[x][y]的各列(column)的d[x][j](j=0..nTbs-1)组成的矢量x[j](j=0..nTbs-1)与矩阵要素transMatrix[y][j]的积得到的列进行排列而得到。
中间截取部152124(核变换处理部15212)对第一中间值e[x][y]进行截取,导出第二中间值g[x][y]。
g[x][y]=Clip3(coeffMin,coeffMax,(e[x][y]+64)>>7)
上式的64、7是根据变换基底的比特深度确定的数值,在上式中将变换基底假定为7bit。此外,coeffMin、coeffMax是截取的最小值和最大值。
水平变换部152123(核变换处理部15212)使用以在垂直变换(vertTrFlag=1)的情况下通过上式导出的nTbs×nTbs的矩阵表示的变换基底transMatrix[][](=transMatrixH[][]),通过水平方向一维变换将中间值g[x][y]变换为预测残差r[x][y]。
r[x][y]=∑transMatrix[x][j]×g[j][y](j=0..nTbs-1)
上述符号∑是指,对直至j=0到nTbs-1的下标j加上矩阵transMatrix[x][j]与g[j][y]的积的处理。就是说,r[x][y]是对从作为g[x][y]的各行(row)的g[j][y](j=0..nTbs-1)与矩阵transMatrix的积得到的行进行排列而得到。
需要说明的是,作为变换的实施例,也可以使用下述所示的将一维信号x[j]变换为一维信号y[i]的方法来进行垂直变换和水平变换。在垂直变换中,将x列的变换系数d[x][j]设置为一维变换系数x[j]来进行变换。在水平变换中,将y行的中间系数g[j][y]设置为x[j]来进行变换。
y[i]=∑(transMatrix[i][j]×x[j])(j=0..nTbs-1)
<变换基底交换>
在由上述的核变换处理设定部152112进行的变换基底的设定和由核变换处理部进行的使用了该变换基底的核变换中使用现有的多个变换基底的技术中,存在使运算电路或矩阵系数存储器增多基底数的部分的问题。
为了解决上述的问题,在本实施方式的运动图像解码装置1所使用的多个变换基底中包括:第一变换基底;以及第二变换基底,对该第一变换基底实施对称变换(交换)而得到。需要说明的是,本申请的说明书中的术语“对称变换”是表示如下变换:在将变换对象或变换基底等矩阵的要素与对称变换后的矩阵的要素左右并列的情况下,重新排列矩阵的要素,使这些要素呈左右对称(镜像对称、线对称)的配置。例如,mxm矩阵T的对象变换后的矩阵TSwap如下式所示。
T[s][t]=TSwap[m-1-s][t]
[数式1]
TSwap[s][t]=T[m-1-s][t]
以下,参照图14对基于本实施方式的运动图像解码装置1的变换基底交换方法进行说明。图14是说明基于本实施方式的运动图像解码装置1的变换基底交换方法的流程图。
首先,TT信息解码部13参考编码数据,对作为表示是否进行基本核变换的标志的amt_flag进行解码,并发送至核变换处理设定部152112(步骤S0)。
接着,核变换处理设定部152112判定TT信息解码部13解码后的amt_flag是否为0(步骤S1)。在核变换处理设定部152112判定为amt_flag为0的情况下,进入步骤S2,在核变换处理设定部152112判定为amt_flag为1的情况下,进入步骤S3。
在步骤S2中,核变换处理设定部152112选择不进行基于索引的变换基底的切换的固定变换(基本核变换),设定DCT2作为所使用的核变换的索引即coreTrIdx。需要说明的是,基本核变换不限于DCT2,也可以使用DST1或DST7交换等。
在步骤S3中,核变换处理设定部152112选择进行基于索引的切换的选择性变换(扩展核变换),TT信息解码部13对AMT索引amt_idx进行解码,并发送至核变换处理设定部152112。在此,在步骤S3中TT信息解码部13解码后的AMT索引amt_idx所示的变换基底中包括:第一变换基底;第二变换基底,对该第一变换基底实施对称变换而得到。作为这两个变换基底的示例,可列举出DST7与DST7交换的变换对、DCT8与DCT8交换的变换对、DCT5与DCT5交换的变换对以及DST4与DST4交换的变换对等。需要说明的是,在后文对这些变换对的详细内容加以叙述。
作为步骤S3的下一工序,核变换处理设定部152112设定AMT索引amt_idx所示的变换基底作为所使用的核变换的索引的coreTrIdx(步骤S4)。需要说明的是,如上所述,在该变换基底中包括:第一变换基底;以及第二变换基底,对该第一变换基底实施对称变换而得到。
作为步骤S2或步骤S4的下一工序,核变换处理部15212导出核变换处理设定部152112所设定的coreTrIdx所示的变换矩阵(变换基底),通过该变换矩阵将修正变换系数d[][]变换成预测残差r[][](步骤S5)。需要说明的是,在核变换处理部15212所导出的变换矩阵中包括:第一变换矩阵;以及第二变换矩阵,对该第一变换矩阵实施对称变换而得到。
(变换基底交换的具体例)
以下,对基于本实施方式的运动图像解码装置1的变换基底交换方法的具体例进行说明。图15是表示在上述的步骤S3中TT信息解码部13解码后的AMT索引amt_idx所示的4点或8点的变换基底的示例的图表。在图15的(a)~(d)的各图表中,K0~K3的各线表示第K0~第K3个分量的变换基底,横轴表示空间坐标上的位置,纵轴表示变换基底的值。
如上所述,在步骤S3中TT信息解码部13解码后的AMT索引amt_idx所示的变换基底中包括:第一变换基底;第二变换基底(交换变换基底),对该第一变换基底实施对称变换而得到。
作为上述的两个变换基底的示例,可列举出DST7[s][t]和DST7swap[s][t]。在此,DST7swap[s][t]满足下述的关系式(1)。
DST7swap[s][t]=DST7[nTbs-1-s][t](s=0..nTbs-1)…算式(1)
此外,例如,如上所述,在步骤S5中核变换处理部15212(核变换矩阵导出部152121)参考coreTrIdx而导出的变换矩阵中包括:第一变换矩阵,如下述的算式(2)所示;以及第二变换矩阵,如算式(3)所示,对该第一变换矩阵实施对称变换而得到。
第一变换矩阵:
y[i]=∑transMatrix[i][j]*x[j],i=0..nTbs-1…算式(2)
第二变换矩阵:
y[i]=∑transMatrix[nTbs-1-i][j]*x[j]
=∑transMatrixSwap[i][j]*x[j],i=0..nTbs-1…算式(3)
需要说明的是,上述的算式(2)和算式(3)中的∑表示针对j=0..nTbs-1的和。
在此,核变换处理部15212使用上述的算式(2)所示的基底transMatrix,通过下述的算式(4)导出算式(3)所示的交换基底transMatrixSwap。
transMatrixSwap[i][j]=transMatrix[nTbs-1-i][j],
i=0..nTbs-1,j=0..nTbs-1…算式(4)
图16的(o)和(a)~(d)是表示通过变换集的索引coreTrSetIdx和变换选择标志amt_trans_idx指定的变换基底的一览的表。上述的核变换处理设定部152112在步骤S4中设定的coreTrIdx通过图16所示的各表来确定。图16的(o)与图15(a)相同,是表示现有的变换基底的一览的表,图16的(a)~(d)是表示本实施方式的变换基底的一览的表。例如,如图16的(a)所示,也可以使用DST7Swap来代替DCT8。或者,如图16的(b)所示,也可以使用DCT8Swap来代替DST7。在图16的(a)中无需将DCT8的变换基底储存于存储器,在图16的(b)中无需将DST7的变换基底储存于存储器,能减少变换基底的储存所需的存储器。或者,如图16的(c)所示,可以将DST7替换成DST4,使用DST4Swap来代替DCT8。在图16的(c)中,将DST4追加至存储器,从存储器删除DCT8和DST7,因此能减少总体上变换基底的储存所需的存储器量。或者,如图16的(d)所示,也可以仅将一部分的变换基底,例如仅将TrSetIntra0的DST7变更为DCT5Swap。需要说明的是,在对象变换中进行的切换并不限于图16所示的示例。
图17的(a)~(d)是表示在步骤S5中核变换处理部15212(核变换矩阵导出部152121)参考coreTrIdx导出的变换矩阵(变换基底)的示例的算式。该变换矩阵的系数精度为8位。此外,图18的(a)和(b)是表示与图17相同的变换矩阵的示例的算式,该变换矩阵的系数精度为6位。如图17的(a)~(d)和图18的(a)和(b)所示,第一变换基底和对该第一变换基底实施对称变换而得到的第二变换基底左右并列,这些要素呈左右对称(镜像对象、线对称)的配置。
(变换基底交换的变形例)
以下,对基于本实施方式的运动图像解码装置1的变换基底交换方法的变形例进行说明。该变形例的运动图像解码装置1进行如下处理:在使用第一变换基底的逆变换中加入后处理来代替使用上述的第二变换基底的逆变换。由此,能仅使用第一变换基底来进行左右对称(镜像对象、线对称)的逆变换。具体而言,核变换处理部15212通过第一变换基底对输入信号(变换系数、修正变换系数)进行逆变换,并交换该逆变换的输出信号。
例如,在上述的步骤S5中,核变换处理部15212(核变换矩阵导出部152121)参考核变换处理设定部152112所设定的coreTrIdx。在选择了已交换的变换基底的情况下,变换基底不发生变更(使用对应的第一变换基底),对变换系数进行逆变换,并交换输出信号。例如,在图16的(a)的情况下,如果coreTrSetIdx=0且amt_trans_idx=1或者coreTrSetIdx=3且amt_trans_idx=0,则选择交换后的变换基底(DST7Swap)作为coreTrIdx。
在使用作为相互呈对称关系的变换的一方的第二变换基底的情况下(例如选择DST7Swap的情况下),作为逆变换处理,使用作为相互呈对称关系的变换的另一方的第一变换基底进行变换。在此,使用DST7Swap和呈左右对称(镜像对称、线对称)的关系的变换基底的DST7来进行变换。
output[i]=∑transMatrix[i][j]*x[j],j=0..nTbs-1…算式(5)
在此∑表示针对j=0..nTbs-1的和。在此,transMatrix在进行DST7Swap所示的变换的情况下也使用与进行DST7的变换的情况相同的变换基底。
在使用作为相互呈对称关系的变换的一方的第二变换基底的情况下(例如选择DST7Swap的情况下),将表示进行交换的标志amt_swap_flag设定为1。在除此以外的情况下(使用作为相互呈对称关系的变换的另一方的第一变换基底的情况或使用不相互呈对称关系的变换的情况下),将amt_swap_flag设定为0。
在amt_swap_flag表示0的情况下,如算式(6)所示,不交换逆变换的输出信号(output)而直接输出。在amt_swap_flag表示1的情况下,如算式(7)所示,交换逆变换的输出信号(output)并输出。
y[i]=output[i]i=0..nTbs-1(ifamt_swap_flag==0)…算式(6)
y[i]=output[nTbs-1-i]i=0..nTbs-1(ifamt_swap_flag!=0)…算式(7)
例如,在图16的(a)中,在coreTrSetIdx=0且amt_trans_idx=0的情况下,选择变换基底DST7作为coreTrIdx。由于不是交换后的变换基底,因此设定为amt_swap_flag=0,对transMatrix[][]设置DST7,通过算式(5),对变换系数x[]进行逆变换,将输出结果output[]代入y[]。另一方面,在coreTrSetIdx=0且amt_trans_idx=1的情况下,选择变换基底DST7Swap作为coreTrIdx。由于是交换后的变换基底,因此设定为amt_swap_flag=1,对transMatrix[][]设置DST7,通过算式(5),对变换系数x[]进行逆变换,通过算式(7)交换输出结果output[]代入y[]。
如上所述,不只是交换变换基底,还交换对变换系数(向垂直或水平变换部输入的输入信号)进行逆变换后的输出,由此能得到与变换基底的交换相同的结果。因此,能减少储存变换基底的存储器。
需要说明的是,在分离型的逆变换的情况下,实施水平方向和垂直方向的两次逆变换。就是说,在第一次逆变换中使用第一变换基底对输入信号实施逆变换,并交换输出信号。接着将交换后的输出信号作为第二次逆变换的输入,使用第一变换基底对输入信号实施逆变换,并交换输出信号。
需要说明的是,在如本申请的实施方式1和变形例进行二次变换的情况下,输入至核变换部1521的进行处理的变换系数为修正变换系数(二次逆变换后的变换系数)。在不实施二次变换的情况下仅为变换系数。
此外,能对运动图像编码装置2应用与基于本实施方式的运动图像解码装置1的变换基底交换方法的变形例相同的方法。在该情况下,运动图像编码装置2在指定了交换后的变换基底的情况下,不变更变换基底,对输入信号(预测残差)进行如算式(9)所示的交换,并对交换后的输入信号进行正变换。
input[j]=x[j]j=0..nTbs-1(ifamt_swap_flag==0)...(算式8)
input[j]=x[nTbs-1-j]j=0..nTbs-1(ifamt_swap_flag!=0)...(算式9)
需要说明的是,在分离型的变换的情况下,实施水平方向和垂直方向的两次正变换。就是说,在第一次正变换中交换输入信号,变换使用第一变换基底交换后的输入信号。在第二次正变换中也同样,交换第一变换基底的输出信号作为第二次正变换的输入,使用第一变换基底来进行正变换,计算出输出信号。
需要说明的是,在如本申请的实施方式1和变形例进行二次变换的情况下,核变换部1521所输出的变换系数为修正变换系数(二次变换前的变换系数)。在不实施二次变换的情况下仅为变换系数。
(总结)
如上所述,本实施方式的图像解码装置(运动图像解码装置1)具备变换部(核变换部1521),所述变换部(15)使用从多个变换基底中选出的变换基底按每个规定的单位对变换系数或修正变换系数进行逆变换,其中,上述多个变换基底中包括:第一变换基底;以及第二变换基底,对该第一变换基底实施对称变换而得到。
根据上述的构成,第二变换基底是对第一变换基底实施对象变换而得到的,因此,无需存储第二变换基底。因此,能使运算电路或矩阵系数存储器减少第二变换基底的部分。
此外,在本实施方式的图像解码装置(运动图像解码装置1)中,上述变换部通过一个变换基底进行上述相互呈镜像对称(线对称)的逆变换,在一方的逆变换中对输出信号实施作为对称变换的追加处理,在另一方的逆变换中不进行对称变换的追加处理。换言之,使用了第二变换基底的逆变换也可以通过使用第一变换基底对使用了逆变换的输出信号实施对称变换来进行。
根据上述的构成,无需具备第二变换基底,因此,能减少用于第二变换的运算电路和用于第二变换基底的矩阵系数存储器。
此外,具有与本实施方式的运动图像解码装置1相同的构成的运动图像编码装置2也包括在本实施方式的范围内。本实施方式的图像编码装置(运动图像编码装置2)具备:变换部,使用从多个变换基底中选出的变换基底按每个规定的单位对预测误差进行正变换;以及变换部,与图像解码装置同样实施逆变换,其中,上述多个变换基底中包括:第一变换基底;以及第二变换基底,对该第一变换基底实施对称变换而得到。
此外,本实施方式的图像编码装置(运动图像编码装置2)具备:正变换部,使用从多个变换基底中选出的变换基底按每个规定的单位对预测误差进行正变换;以及逆变换部,与图像解码装置同样实施逆变换,其中,通过一个变换基底进行相互呈镜像对称(线对称)的变换,在一方的变换中对输入信号实施作为对称变换的前处理,在另一方的变换中不进行对称变换的前处理。换言之,也可以对使用了第一变换基底的变换使用对称变换的前处理来进行使用了第二变换基底的逆变换。
根据上述的构成,与本实施方式的图像解码装置所起到的效果相同,第二变换基底是通过对第一变换基底实施对象变换而得到的,因此,无需存储第二变换基底。因此,能使运算电路或矩阵系数存储器减少第二变换基底的部分。
〔实施方式2〕
在上述的二次变换(NSST)中,存在作为二次变换的对象的块的大小越大,变换所需的处理时间(延迟时间)越长这一问题。此外,存在如下问题:作为二次变换的对象的块的大小越大,储存变换的电路规模或变换基底矩阵的存储器大小越大。
为了解决上述的问题,本实施方式的运动图像解码装置1具备:第一变换部(核变换部1521),对变换系数应用核变换;以及第二变换部(二次变换部1522),对变换系数进行非分离型的二次变换,基于第二变换部的变换的单位中包括非正方形的子块。
基于附图对具有如上所述的构成的本发明的实施方式2进行说明,如下所述。需要说明的是,在本实施方式也使用实施方式1的运动图像解码装置1和运动图像编码装置2。因此,对在实施方式1中说明过的与运动图像解码装置1所具备的构件具有相同功能的构件标注相同的附图标记,并省略其说明。
<二次变换>
在逆变换部152中,除了上述说明过的自适应核变换以外,还可以使用二次变换。
就二次变换而言,在运动图像解码装置1中,在接着逆量化而进行的逆变换中按照二次变换、自适应核变换的顺序来进行(需要说明的是,在运动图像编码装置2中,在变换中按照自适应核变换、二次变换的顺序来进行,并对其结果进行量化)。
在此,使用图19对除了核变换以外还能进行二次变换的逆变换部152的构成进行说明。图19是表示逆变换部152的构成例的功能框图。如图19所示,逆变换部152具备核变换部1521和二次变换部1522。二次变换部1522从TT信息解码部13接收表示进行二次变换的信息,并通过对从逆量化部151接收到的变换系数d[][]进行二次变换来复原修正变换系数d[][]。复原后的修正变换系数d[][]从二次变换部1522发送至核变换部1521。如果在未进行二次变换的情况下,则二次变换部1522所接收到的变换系数d[][]被直接从二次变换部1522发送至核变换部1521。
此外,表示二次变换的开关、二次变换的种类的信息可以是sec_idx等索引。此外,也可以不以一个索引sec_idx来表达表示二次变换的开关、二次变换的种类的信息,而是分为两个语法。例如,当分割为表示二次变换的有无的语法sec_flag和表示二次变换的种类的语法sec_trans_idx时,彼此具有以下关系。
sec_flag=sec_idx!=0
sec_trans_idx=sec_idx-1
sec_idx=(sec_flag)?sec_trans_idx+1∶0
例如,作为二次变换处理,在不使用二次变换(二次变换关闭)的情况下和选择名称(Name)为二次变换1~3的三个二次变换的情况下,关于二次变换的索引即sec_idx能取0~3的共计四个值。各sec_idx所示的二次变换的示例可列举出以下。
在sec_idx=0(即sec_flag=0)的情况下,二次变换部1522不进行二次变换处理,
在sec_idx=1(即sec_flag=1、sec_trans_idx=0)的情况下,二次变换部1522进行二次变换1(例如水平方向用的变换),
在sec_idx=2(即sec_flag=1、sec_trans_idx=1)的情况下,二次变换部1522进行二次变换2(例如垂直方向用的变换),
在sec_idx=3(即sec_flag=1、sec_trans_idx=2)的情况下,二次变换部1522进行二次变换3(例如水平和垂直方向用的变换)。
需要说明的是,sec_idx的值的范围并不限于上述。例如,也可以设为0至M-1的M个阶段来代替在上述中0~3的四个阶段,M可以是2、3、4等值。
核变换部1521接收由变换系数d[][]或二次变换部1522复原的修正变换系数d[][],进行自适应核变换,导出预测残差r[][]。预测残差r[][]从核变换部1521传送至加法器17。在二次变换关闭的情况下,修正变换系数与变换系数相同。
二次变换针对nTbs×nTbs大小的TU(变换系数d[][])按每4×4子块执行。二次变换仅在帧内CU中应用,变换基底参考帧内预测模式来确定。在后文对变换基底的选择加以叙述。
二次变换中存在:分离型变换(Rotational Transform:ROT、旋转变换),将子块的变换分为1×4垂直变换和4×1水平变换这两个阶段来进行;以及非分离型二次变换(Non-separable secondary transform:NSST),将子块的变换作为一维的16×1矢量变换一次进行。
[分离型变换(ROT)]
接着,使用图20对分离型变换(ROT)进行说明。图20是表示图19的二次变换部1522进行分离型变换的情况的二次变换部1522的构成例的图。
二次变换部1522具备二次变换处理导出部15221和二次变换处理部15222。二次变换处理导出部15221进一步具备二次变换处理设定部152211。另一方面,二次变换处理部15222具备二次变换矩阵导出部152221、子集导出部152222、子集变换处理部152223以及子集储存部152224。
二次变换处理设定部152211从TT信息解码部13接收索引(sec_idx)。此外,二次变换处理设定部152211从sec_idx导出表示是否进行垂直变换和水平变换的变换处理的索引secTrIdx,并将索引secTrIdx(垂直方向二次变换处理索引secTrIdxV,水平方向二次变换处理索引secTrIdxH)传送至二次变换矩阵导出部152221。
secTrIdxH=secTrSet[sec_trans_idx_hor]
secTrIdxV=secTrSet[sec_trans_idx_ver]
在此,sec_trans_idx_ver=sec_idx>>1,sec_trans_idx_hor=sec_idx&1。
二次变换矩阵导出部152221从接收到的表示二次变换处理的参数secTrIdxV、secTrIdxH导出实际的变换(子集变换处理)所需的用于垂直变换的矩阵transMatrixV[][]和用于水平变换的矩阵transMatrixH[][]。
transMatrixV[][]=secTransMatrix[secTrIdxV][][]
transMatrixH[][]=secTransMatrix[secTrIdxH][][]
二次变换矩阵导出部152221将所导出的矩阵传送至子集变换处理部152223。
二次变换处理部15222按顺序抽出从逆量化部151接收到的nTbsxnTbs的变换系数d[][]的一部分,导出子块(M×N的矩阵)(子集导出部152222),以所导出的单位对子块进行逆变换(子集变换处理部152223),将逆变换后的子块再次重新构成为nTbs×nTbs的修正变换系数d[][](子集储存部152224),并输出至核变换部1521。在此,子块的大小可以取4×4、4×8、8×4、×8。
以下,依次设定子块坐标(xS,yS),通过环路处理对各子块进行处理。
以下,参照图21对本实施方式的子集导出部152222导出的子块的示例进行说明。图21的(a)~(f)是表示子集导出部152222所导出的子块的示例的图。
例如,如图21的(a)或(b)所示,子集导出部152222导出左上坐标(0,0)的子块(8×4或4×8)。该示例中的子块环路的环路次数为1次,环路变量为(xS,yS)=(0,0)。
在另一示例中,如图21的(c)或(d)所示,子集导出部152222导出左上坐标(0,0)的子块(8×4或4×8)和与该子块在长边方向邻接的子块(8×4或4×8)。该示例中的子块环路的环路变量在子块的大小为8×4的情况下为(xS,yS)=(0,0),(xS,yS)=(0,4)。或者,子块环路的环路次数为2次,环路变量在子块的大小为4×8的情况下为(xS,yS)=(0,0),(xS,yS)=(4,0)。
在另一示例中,如图21的(e)或(f)所示,子集导出部152222导出左上坐标(0,0)的子块(8×4或4×8)和与该子块在短边方向邻接的子块(8×4或4×8)。该示例中的子块环路的环路变量在子块的大小为8×4的情况下为(xS,yS)=(0,0),(xS,yS)=(8,0)。或者,子块环路的环路次数为2次,环路变量在子块的大小为4×8的情况下为(xS,yS)=(0,0),(xS,yS)=(0,8)。
在另一示例中,子集导出部152222不从自逆量化部151接收到的nTbs×nTbs的变换系数d[][]中抽出子块,子集变换处理部152223对nTbs×nTbs的变换系数d[][]进行变换。该示例中的子块环路的环路次数为nTbs/M*nTbs/N,环路变量为xS=0..nTbs/M-1,yS=0..nTbs/N-1。
关于二次变换处理部15222,更详细而言,子集导出部152222从nTbs×nTbs的变换系数d[][]抽出坐标(xS,yS)的位置的M×N子块e[][](M×N子块e[][]的示例如上所述)。
e[i][j]=d[xx][yy],xx=(xS)+i,yy=(yS)+j(i=0..M-1,j=0..N-1)
在此,i,j为子块上的位置,xx,yy为nTbs×nTbs的变换系数d[][]上的位置。
子集变换处理部152223对子块e[][]进行参数secTrIdxV、secTrIdxH所示的二次变换处理。子集变换处理部152223在垂直子集变换(垂直的二次变换)中,将子集e[][]变换为临时变量x[][],另一方面,在水平子集变换(水平的二次变换)中,将临时变量x[j][y]变换为g[i][y]。
x[x][i]=∑(transMatrixV[i][j]×e[x][j])(j=0..N-1)
g[i][y]=∑(transMatrixH[i][j]×x[j][y])(j=0..M-1)
子集储存部152224将g[i][j]储存为修正变换系数d[xx][yy],并将该变换系数(修正变换系数d[][])传送至核变换部1521。
d[xx][yy]=g[i][j],xx=xS+i,yy=yS+j(i=0..M-1,j=0..N-1)
[非分离型变换(NSST)]
接着,使用图22对非分离型二次变换(NSST)进行说明。图22是表示图19的二次变换部1522进行非分离型变换的情况的二次变换部1522的构成例的图。
二次变换部1522具备二次变换处理导出部15221和二次变换处理部15222。二次变换处理导出部15221还具备二次变换集导出部152212和二次变换处理设定部152211。另一方面,二次变换处理部15222具备二次变换矩阵导出部152221、子集导出部152222、子集变换处理部152223以及子集储存部152224。
二次变换集导出部152212参考二次变换集索引表secTrSetIdxTbl导出与帧内预测模式IntraPredMode对应的二次变换集索引secTrSetIdx,并传送至二次变换处理设定部152211。
secTrSetIdx=secTrSetIdxTbl[IntraPredMode]
二次变换处理设定部152211基于sec_idx从二次变换集索引secTrSetIdx和二次变换集表SecTrSet导出表示二次变换的方法的索引secTrIdx。
secTrSetIdx=secTrSetIdxTbl[IntraPredMode]
在此,sec_idx=0表示二次变换关闭。二次变换处理设定部152211将所导出的secTrIdx传送至二次变换矩阵导出部152221。
二次变换矩阵导出部152221从接收到的表示二次变换处理的参数secTrIdx导出实际的变换(子集变换处理)所需的矩阵transMatrix[][]。
transMatrix[][]=secTransMatrixTbl[secTrIdx][][]
二次变换矩阵导出部152221将所导出的变换矩阵传送至子集变换处理部152223。
二次变换处理以构成TU的M×N子块为单位进行子集变换。具体而言,由从块导出子块的处理(子集导出部152222)、对子块进行变换的处理(子集变换处理部152223)、将子块储存于块的处理(子集储存部152224)这三个处理构成。
与分离型变换(ROT)相同,子集导出部152222所导出的子块的大小M×N可以是4×4、4×8、8×4或8×8。在此,以下对子集导出部152222根据从逆量化部151接收到的变换系数d[][]的大小(nTbs×nTbs)导出的子块的大小例(构成例1~4)进行说明。
(构成例1)
例如,在从逆量化部151接收到的变换系数d[][]的大小(nTbs×nTbs)为4×4的情况下,子集导出部152222导出4×4的子块。此外,在从逆量化部151接收到的变换系数d[][]的大小(nTbs×nTbs)为4×4以外的大小的情况下,子集导出部152222选择4×8的子块和8×4的子块中的任一种。更详细而言,在从逆量化部151接收到的变换系数d[][]的横向大小为4的情况下,子集导出部152222选择4×8的子块。在从逆量化部151接收到的变换系数d[][]的纵向大小为4的情况下,子集导出部152222选择8×4的子块。在从逆量化部151接收到的变换系数d[][]的纵向大小和横向大小不为4的情况下,子集导出部152222选择4×8的子块和8×4的子块中的任一种。
(构成例2)
例如,在从逆量化部151接收到的变换系数d[][]的大小(nTbs×nTbs)为4×4的情况下,子集导出部152222根据不从自逆量化部151接收到的nTbs×nTbs的变换系数d[][]抽出子块。此外,在从逆量化部151接收到的变换系数d[][]的大小(nTbs×nTbs)为4×4以外的大小的情况下,子集导出部152222选择4×8的子块和8×4的子块中的任一种。更详细而言,在从逆量化部151接收到的变换系数d[][]的横向大小为4的情况下,子集导出部152222选择4×8的子块。在从逆量化部151接收到的变换系数d[][]的纵向大小为4的情况下,子集导出部152222选择8×4的子块。在从逆量化部151接收到的变换系数d[][]的纵向大小和横向大小不为4的情况下,子集导出部152222选择4×8的子块和8×4的子块中的任一种。
(构成例3)
例如,在从逆量化部151接收到的变换系数d[][]的大小(nTbs×nTbs)为4×4的情况下,子集导出部152222导出4×4的子块。此外,在从逆量化部151接收到的变换系数d[][]的横向大小为4的情况下,子集导出部152222导出4×8的子块。此外,在从逆量化部151接收到的变换系数d[][]的纵向大小为4的情况下,子集导出部152222导出8×4的子块。在从逆量化部151接收到的变换系数d[][]的纵向大小和横向大小不为4的情况下,子集导出部152222选择4×8的子块、8×4的子块以及8×8的子块中的任一种。
(构成例4)
例如,在从逆量化部151接收到的变换系数d[][]的纵向大小和横向大小中的任一方为4的情况下(横向和纵向的最小值为4的情况下),子集导出部152222提取4×4的子块。此外,在从逆量化部151接收到的变换系数d[][]的纵向大小和横向大小中的任一方不为4的情况下,选择4×4的子块和8×8的子块中的任一种。
上述的构成例1~4能应用于后文所述的非正方二次变换的实施例1。上述的构成例1和2能应用于后文所述的非正方二次变换的实施例2。上述的构成例1和2能应用于后文所述的非正方二次变换的实施例3。
以下,依次设定子块坐标(xS,yS),通过环路处理对各子集进行处理。在此,子块大小为M×N,其中,M=2^m,N=2^n。子块环路为xS=0..nTbs/4-1,yS=0..nTbs/4-1。
子集导出部152222从自逆量化部151接收到的nTbs×nTbs的变换系数d[][]导出将坐标(xS<<2,yS<<2)的位置的M×N块重排为一维阵列的子块e[j]。
e[j]=d[xx][yy],xx=(xS<<m)+j%M,yy=(yS<<n)+j/M(j=0..M*N-1)
子集变换处理部152223在此为非分离型,因此,对M*N要素的一维矢量e[j]的子块进行变换(子集变换),导出g[i](i=0..15)。
g[i]=∑(transMatrix[i][j]×x[j])(j=0..M*N-1)
子集储存部152224将g[i]储存为变换系数d[xx][yy],并将该修正变换系数d[][]传送至核变换部1521。
d[xx][yy]=y[i],xx=(xS<<m)+i%M,yy=(yS<<n)+i/M(i=0..M*N-1)
[与二次变换有关的标志sec_idx的解码]
图23是表示本发明的一实施方式的CU信息、PT信息PTI、TT信息TTI的语法表的构成例的图。首先,如图23所示,CU信息解码部21使用解码模块10对CU信息(跳过标志cu_skip_flag、CU预测方式信息pred_mode_flag、PU分割类型信息part_mode、残差根标志rqt_root_cbf)进行解码。接着,PU信息解码部12使用解码模块10进行PU信息PUI(prediction_unit)的解码处理。
在残差根标志rqt_root_cbf为0以外的值(=1)的情况下,TT信息解码部13对变换树transform_tree进行解码(SYN1700)。
transform_tree(x0,y0,x0,y0,log2CbSize,0,0)
此时,TT信息解码部13可以通过以下算式导出用于变换树transform_tree的解码的最大TU层MaxTrafoDepth。
MaxTrafoDepth=CuPredMode[x0][y0]==MODE_INTRA?
(max_transform_hierarchy_depth_intra+intraSplitFlag):max_transform_hierarchy_depth_inter)
接着,TT信息解码部13在标志cbf_cu为0以外的值且预测模式为帧内预测模式的情况下,对索引sec_idx进行解码。
if(cbf_cu&&PredMode==PRED_INTRA)
sec_idx[x0][y0][trafoDepth]
接着,使用图24对TT信息解码部13对与二次变换有关的索引sec_idx进行解码的处理(图23的SYN1700)进行说明。图24是对本发明的一实施方式的TT信息解码部13(TT信息解码S1700)的概略动作进行说明的流程图。需要说明的是,为了便于说明,对进行与已经说明的处理同样的处理的工序和表示同样的处理的语法标注相同的符号,并省略其说明。
(S1731)TT信息解码部13在对象TU大小(例如,对数TU大小log2TrafoSize)为规定的变换大小的范围(在此为最大对数TU大小MaxTbLog2SizeY以下且大于最小对数TU大小MinTbLog2SizeY)且对象TU的TU层trafoDepth小于规定的层(在此为小于最大TU层MaxTrafoDepth)的情况下,对TU分割标志(split_transform_flag)进行解码。更具体而言,在图24的S1721中为是的情况下,进入至S1731,对TU分割标志(split_transform_flag)进行解码(SYN1731)。需要说明的是,TT信息解码部13在IntraSplitFlag==1(N×N)且TU层trafoDepth为0的情况下,也可以不对TU分割标志split_transform_flag进行解码。
(S1732)另一方面,在编码数据#1中未出现split_transform_flag的情况下,即,在S1721中为否的情况下),TT信息解码部13导出TU分割标志split_transform_flag。更具体而言,在对数TU大小log2TrafoSize大于最大对数TU大小MaxTbLog2SizeY的情况下,TT信息解码部13将TU分割标志split_transform_flag导出作为表示进行分割的值(=1),在除此以外的情况下(对数TU大小log2TrafoSize为最小对数TU大小MaxTbLog2SizeY以下或TU层trafoDepth为最大TU层MaxTrafoDepth以上),将TU分割标志split_transform_flag导出作为表示不进行分割的值(=0)。
(S1733)TT信息解码部13在TU分割标志split_transform_flag为表示进行分割的值(例如1)的情况下(在S1733中为是),首先导出x1、y1。
x1=x0+(1<<(log2TrafoSize-1))
y1=y0+(1<<(log2TrafoSize-1))
进而,在TU层trafoDepth=0且对象的变换树为帧内预测模式时,对sec_idx进行解码。在不是这样的情况下,不对sec_idx进行解码,而是设置为0。
接着,设置作为对数CT大小log2CbSize-1、TU层trafoDepth+1的位置(x0,y0)、(x1,y0)、(x0,y1)、(x1,y1)的四个下层的变换树TT,返回S1721。
transform_tree(x0,y0,x0,y0,log2TrafoSize-1,trafoDepth+1,0)
transform_tree(x1,y0,x0,y0,log2TrafoSize-1,trafoDepth+1,1)
transform_tree(x0,y1,x0,y0,log2TrafoSize-1,trafoDepth+1,2)
transform_tree(x1,y1,x0,y0,log2TrafoSize-1,trafoDepth+1,3)
在此,x0,y0为对象变换树的左上坐标,x1,y1是如以下算式所述将变换树坐标(x0,y0)加上对象TU大小(1<<log2TrafoSize)的1/2而导出的坐标(SYN1756)。
就是说,TT信息解码部13在递归地对变换树transform_tree进行解码之前,通过下式将表示变换树TT的层的TU层trafoDepth加1,并将对象TU大小即对数CT大小log2TrafoSize减1来进行更新。
trafoDepth=trafoDepth+1
log2TrafoSize=log2TrafoSize-1
(S1751)另一方面,在TU分割标志split_transform_flag为0的情况下(在S1733中为否),TT信息解码部13对表示对象TU中是否包括残差的TU残差标志(例如cbf_luma)进行解码。在此,作为TU残差标志,使用表示对象TU的亮度分量中是否包括残差的亮度残差标志cbf_luma,但并不限于此。
(S1760)接着,TT信息解码部13在TU分割标志split_transform_flag为0的情况下,对SYN1760所示的变换单元TUtransform_unit(x0,y0,xBase,yBase,log2TrafoSize,trafoDepth,blkIdx)进行解码。
(S1761)TT信息解码部13在TU残差标志cbf_luma为0且预测模式为帧内预测模式的情况下,对与二次变换有关的索引sec_idx进行解码。
需要说明的是,在上述的示例中,对按CU级别对与二次变换有关的索引sec_idx进行解码的情况进行了说明,但并不限定于此。例如,也可以按TT级别对sec_idx进行解码。对于这种变形例,以下使用图25和图26进行说明。
如图25所示,也可以按TT级别对TT信息解码部13对与二次变换有关的索引sec_idx进行解码的处理进行处理。图25是对本发明的一实施方式的TT信息解码部13(TT信息解码S1700)的概略动作进行说明的流程图。此外,图26是表示本发明的一实施方式的TT信息TTI的语法表的构成例的图。
(S1755a)TT信息解码部13在TU分割标志split_transform_flag是表示进行分割的值(例如1)的情况下(在S1733中为是),如果TU层trafoDepth为0且预测模式为帧内预测模式(在S1754a中为是),则对与二次变换有关的索引sec_idx进行解码(SYN1755a),除此以外(在S1754a中为否),设为sec_idx=0,进入S1756。
(1756)TT信息解码部13设置对数CT大小log2CbSize-1、TU层trafoDepth+1的位置(x0,y0)、(x1,y0)、(x0,y1)、(x1,y1)的四个下层的变换树TT。
(S1751)另一方面,在TU分割标志split_transform_flag为0的情况下(在S1733中为否),TT信息解码部13对TU残差标志(例如,cbf_luma)进行解码。在此,作为TU残差标志,使用表示对象TU的亮度分量中是否包括残差的亮度残差标志cbf_luma,但并不限于此。
(S1753a)TT信息解码部13在TU层trafoDepth为0且TU残差标志(例如,cbf_luma)不为0且预测模式为帧内预测模式的情况下(在S1752a中为是),对与二次变换有关的索引sec_idx进行解码(SYN1753a)。在除此以外的情况下(在S1752a中为否),TT信息解码部13不从编码数据对与二次变换有关的索引sec_idx进行解码,而是导出为sec_idx=0,并进入S1760。
(S1760)TT信息解码部13在TU分割标志split_transform_flag为0的情况下,对SYN1760所示的变换单元TU进行解码。
transform_unit(x0,y0,xBase,yBase,log2TrafoSize,trafoDepth,blkIdx)
<非正方二次变换(实施例1)>
以下,参照图27对基于本实施方式的运动图像解码装置1的非正方二次变换方法的实施例1进行说明。图27是说明基于本实施方式的运动图像解码装置的非正方二次变换方法的实施例1的流程图。需要说明的是,以下说明的非正方二次变换方法也能应用于上述的分离型变换(ROT)和非分离型变换(NSST)中的任一方。
首先,子集导出部152222判定TT信息解码部13解码后的sec_idx是否为0(步骤S10)。在子集导出部152222判定为sec_idx为0的情况下(在步骤S10为是),不进行二次变换,而将变换系数发送至核变换部1521。在子集导出部152222判定为sec_idx非0的情况下(在步骤S10为否),进入步骤S11。
在步骤S11中,子集导出部152222依次抽出从逆量化部151接收到的nTbs×nTbs的变换系数d[][]的一部分,导出与sec_idx的值对应的大小的子块。在后文对此处的与sec_idx的值对应的大小的子块加以叙述。
接着,子集变换处理部152223对子集导出部152222所导出的子块进行二次变换(步骤S12)。
接着,子集储存部152224将子集变换处理部152223进行二次变换后的子块储存于块,作为修正变换系数发送至核变换部1521(步骤S13)。
以下,参照图28对在上述的步骤S11中子集导出部152222所导出的与sec_idx的值对应的大小的子块的示例进行说明。图28的(a)~(c)是表示子集导出部152222所导出的子块的示例的图。例如,在sec_idx=1或sec_idx=2的情况下,子集导出部152222导出图28的(a)所示的大小为8×4的子块。此外,在sec_idx=3的情况下,子集导出部152222导出图28的(b)所示的大小为4×8的子块。
在另一示例中,在sec_idx=1的情况下,子集导出部152222导出大小为4×8的子块。此外,在sec_idx=2或sec_idx=3的情况下,子集导出部152222导出大小为8×4的子块。
在另一示例中,子集导出部152222所导出的子块中包括8×8的子块。更详细而言,在sec_idx=1的情况下,子集导出部152222导出大小为4×8的子块。此外,在sec_idx=2的情况下,子集导出部152222导出大小为8×4的子块。此外,在sec_idx=3的情况下,子集导出部152222导出图28的(c)所示的大小为8x8的子块。
<非正方二次变换(实施例2)>
以下,参照图29对基于本实施方式的运动图像解码装置1的非正方二次变换方法的实施例2进行说明。图29是说明基于本实施方式的运动图像解码装置的非正方二次变换方法的实施例2的流程图。需要说明的是,以下说明的非正方二次变换方法也能应用于上述的分离型变换(ROT)和非分离型变换(NSST)中的任一方。
首先,子集导出部152222依次抽出从逆量化部151接收到的nTbs×nTbs的变换系数d[][]的一部分,导出与帧内预测模式intraPredMode对应的大小的子块(步骤S20)。需要说明的是,在此也可以如图27的步骤S10所示地进行是否进行二次变换的判定。在后文对此处的与帧内预测模式intraPredMode对应的大小的子块加以叙述。
接着,子集变换处理部152223对子集导出部152222所导出的子块进行二次变换(步骤S21)。
接着,子集储存部152224将子集变换处理部152223进行二次变换后的子块储存于块,作为修正变换系数发送至核变换部1521(步骤S22)。
以下,对在上述的步骤S20中子集导出部152222所导出的与帧内预测模式intraPredMode对应的大小的子块的示例进行说明。例如,在帧内预测模式intraPredMode表示垂直预测的情况下,在nTbs×nTbs的变换系数d[][]中变换系数容易集中在上侧。因此,在该情况下,子集导出部152222导出大小为8×4的子块。此外,在帧内预测模式intraPredMode表示水平预测的情况下,在nTbs×nTbs的变换系数d[][]中变换系数容易集中在左侧。因此,在该情况下,子集导出部152222导出大小为4×8的子块。如此,在垂直预测中,选择水平方向较长的NSST块的8×4作为二次变换的块大小,在水平预测中,选择垂直方向较长的NSST块的4×8作为二次变换的块大小,由此能使残差的能量高效集中。
以下,对在上述的步骤S20中子集导出部152222判定帧内预测模式并选择子块的大小的方法的具体例进行说明。例如,子集导出部152222在判定为帧内预测模式intraPredMode表示靠近垂直方向的角度预测的情况下,导出大小为8×4的子块。此外,子集导出部152222在判定为帧内预测模式intraPredMode表示靠近水平方向的角度预测的情况下,导出大小为4×8的子块。
在另一示例中,子集导出部152222计算出帧内预测模式intraPredMode(角度预测)与垂直预测模式verMode的距离或帧内预测模式intraPredMode(角度预测)与水平预测模式verMode的距离,并根据该距离选择子块的大小。更详细而言,子集导出部152222在满足下述的算式(10)的情况下,导出大小为8×4的大小的子块,在满足下述的算式(11)的情况下,导出大小为4×8的大小的子块。
abs(IntraPredMode-verMode)<intraHorVerDistThres…算式(10)
abs(IntraPredMode-horMode)<intraHorVerDistThres…算式(11)
intraHorVerDistThres为规定的阈值。子集导出部152222在不满足算式(10)和算式(11)中的任一个的情况下,导出大小为4x4大小的子块。
在另一示例中,子集导出部152222比较帧内预测模式intraPredMode(角度预测)和左上倾斜方向(45度)的帧内预测模式diagMode,选择子块的大小。更详细而言,子集导出部152222在满足下述的算式(12)的情况下,导出大小为8×4大小的子块,在满足下述的算式(13)的情况下,导出大小为4×8的子块。
IntraPredMode>diagMode…算式(12)
IntraPredMode<=diagMode…算式(13)
<非正方二次变换(实施例3)>
以下,参照图30对基于本实施方式的运动图像解码装置1的非正方二次变换方法的实施例3进行说明。图30是说明基于本实施方式的运动图像解码装置的非正方二次变换方法的实施例3的流程图。需要说明的是,以下说明的非正方二次变换方法也能应用于上述的分离型变换(ROT)和非分离型变换(NSST)中的任一方。
首先,子集导出部152222依次抽出从逆量化部151接收到的变换系数d[][]的一部分,导出与该变换系数d[][]的块大小对应的大小的子块(步骤S30)。需要说明的是,在此也可以如图27的步骤S10所示地进行是否进行二次变换的判定。在后文对此处的与变换系数d[][]的块大小对应的大小的子块加以叙述。
接着,子集变换处理部152223对子集导出部152222所导出的子块进行二次变换(步骤S31)。
接着,子集储存部152224将子集变换处理部152223进行二次变换后的子块储存于块,作为修正变换系数发送至核变换部1521(步骤S32)。
以下,参照图31对在上述的步骤S11中子集导出部152222所导出的与变换系数d[][]的块大小对应的大小的子块的示例进行说明。图31的(a)~(d)是表示变换系数d[][]的块和与该块所包括的子块(粗框)的图。
例如,如图31的(a)所示,在变换系数d[][]的块在水平方向较长的情况下(W>H),子集导出部152222导出大小为8×4的子块。此外,如图31的(b)所示,在变换系数d[][]的块在垂直方向较长的情况下(W<=H),子集导出部152222导出大小为4×8的子块。
在另一示例中,如图31的(c)所示,在变换系数d[][]的块在垂直方向较长的情况下(W<=H),子集导出部152222导出大小为8×4的子块。此外,如图31的(d)所示,在变换系数d[][]的块在水平方向较长的情况下(W>H),子集导出部152222导出大小为4×8的子块。在上述说明中,W为块的宽度,H为块的高度。
(总结)
如上所述,本实施方式的图像解码装置(运动图像解码装置1)按每个规定的单位对变换系数进行逆变换,具备:第一变换部(核变换部1521),对上述变换系数应用核变换;以及第二变换部(二次变换部1522),对上述变换系数进行非分离型的二次变换,由上述第二变换部进行的变换的单位中包括非正方形的子块。
根据上述的构成,作为二次变换的对象的块为非正方形的块,因此,能通过将大小比现有的正方形的块小的非正方形的块作为二次变换的对象来减少变换所需的处理时间(延迟时间)。此外,能减小储存变换的电路规模或变换基底矩阵的存储器大小。
此外,在本实施方式的图像解码装置(运动图像解码装置1)中也可以是,上述第二变换部根据帧内预测模式切换上述非正方形的子块的大小。
根据上述的构成,能根据帧内预测模式切换作为二次变换的对象的非正方形的子块的大小。能根据帧内预测模式,推测作为逆变换的对象的规定的单位的块中的变换系数容易集中的位置,因此,能根据能由帧内预测模式推测的变换系数容易集中的位置适当地设定切换的子块的大小,由此使残差的能量高效地集中。
此外,在本实施方式的图像解码装置(运动图像解码装置1)中也可以是,上述第二变换部根据上述规定的单位的块大小切换上述非正方形的子块的大小。
根据上述的构成,能根据作为逆变换的对象的规定的单位的块大小适当地设定切换的非正方形的子块的大小,由此使残差的能量高效地集中。
此外,本实施方式的图像解码装置(运动图像解码装置1)按每个规定的单位对变换系数进行逆变换,具备:第一变换部,对上述变换系数应用核变换;第二变换部,对上述变换系数进行二次变换;以及切换部,根据索引切换由上述第二变换部进行的变换的单位。
根据上述的构成,能通过该索引适当地规定其他的二次变换的设定,并且能规定作为二次变换的对象的子块的大小。因此,能减少变换所需的处理时间(延迟时间)。
此外,具有与本实施方式的运动图像解码装置1相同的构成的运动图像编码装置2也包括在本实施方式的范围内。本实施方式的图像编码装置(运动图像编码装置2)具备:正变换部,按每个规定的单位对预测误差进行正变换并导出变换系数;以及逆变换部,按每个规定的单位对变换系数进行逆变换,具备:第一变换部,对上述预测误差和上述变换系数应用核变换;以及第二变换部,对上述变换系数进行非分离型的二次变换,由上述第二变换部进行的变换的单位中包括非正方形的子块。
根据上述的构成,与本实施方式的图像解码装置所起到的效果相同,作为二次变换的对象的块为非正方形的块,因此,能通过将大小比现有的正方形的块小的非正方形的块作为二次变换的对象来减少变换所需的处理时间(延迟时间)。此外,能减小储存变换的电路规模或变换基底矩阵的存储器大小。
〔实施方式3〕
关于上述的核变换AMT和二次变换NSST,运动图像解码装置1所执行的核变换AMT和二次变换NSST的组合大量存在。因此,存在运动图像解码装置1选择这些组合中的哪一种来执行的问题。此外,从大量的核变换AMT和二次变换NSST的组合中选择以及执行所选出的核变换AMT和二次变换NSST使与预测残差的复原有关的处理量增大。
为了解决上述的问题,本实施方式的运动图像解码装置1具备:第一变换部(核变换部1521),对变换系数应用第一种核变换(基本核变换)和第二种核变换(扩展核变换)中的任一种核变换;以及第二变换部(二次变换部1522),仅在第一变换部进行第一种核变换的情况下,对变换系数进行二次变换。
基于附图对具有如上所述的构成的本发明的实施方式2进行说明,如下所述。需要说明的是,在本实施方式中也使用实施方式1的运动图像解码装置1和运动图像编码装置2。因此,对在实施方式1中说明过的与运动图像解码装置1所具备的构件具有相同功能的构件标注相同的附图标记,并省略其说明。
<实施方式3的主要部分构成>
使用图32对TT信息解码部13和逆变换部152的构成进行说明。图32是表示TT信息解码部13和逆变换部152的构成的一个示例的功能框图。TT信息解码部13具备:sec_idx解码部131、amt_flag解码部132以及amt_idx解码部133,进行TT信息解码和TU信息解码。逆变换部152具备二次变换部1522和核变换部1521。
amt_flag解码部132对AMT标志amt_flag进行解码,并将解码后的AMT标志amt_flag传送至amt_idx解码部133和核变换部1521。
amt_idx解码部133从接收到的AMT标志amt_flag对AMT索引amt_idx进行解码,并将解码后的AMT索引amt_idx传送至核变换部1521。更详细而言,在amt_flag=0(基本核变换)的情况下,amt_idx解码部133不从接收到的AMT标志amt_flag对AMT索引amt_idx进行解码。另一方面,在amt_flag=1(扩展核变换)的情况下,amt_idx解码部133从接收到的AMT标志amt_flag对AMT索引amt_idx进行解码。
当TT信息解码部13从CU信息解码部21接收编码数据时,sec_idx解码部131对sec_idx进行解码,并将解码后的sec_idx传送至二次变换部1522。更详细而言,sec_idx解码部131参考amt_flag解码部132解码后的amt_flag,在amt_flag=0(基本核变换)的情况下对sec_idx进行解码。另一方面,sec_idx解码部131在amt_flag=1(扩展核变换)的情况下,设定表示不进行二次变换的sec_idx=0。
二次变换部1522根据sec_idx的值,选择是否对变换系数d[][]进行二次变换以及在进行二次变换的情况下进行哪一个二次变换并执行。另一方面,核变换部1521从二次变换部1522接收修正变换系数d[][],并进行与AMT标志amt_flag和AMT索引amt_idx的值对应的变换处理。
<核变换/二次变换限制>
以下,参照图33对基于本实施方式的运动图像解码装置1的核变换/二次变换限制方法进行说明。图33是说明基于本实施方式的运动图像解码装置的核变换/二次变换限制方法的流程图。
首先,sec_idx解码部131判定amt_flag解码部132解码后的amt_flag是否为0(步骤S40)。
在amt_flag为0的情况下(在步骤S40为是),sec_idx解码部131对sec_idx进行解码,二次变换部1522对变换系数d[][]进行sec_idx解码部131解码后的sec_idx所示的二次变换,并将二次变换后的修正变换系数d[][]发送至核变换部1521(步骤S41)。
在amt_flag为1的情况下(在步骤S40为否),sec_idx解码部131将sec_idx设定为0,二次变换部1522根据sec_idx解码部131所设定的sec_idx=0而不进行二次变换,将变换系数d[][]发送至核变换部1521(步骤S42)。
作为步骤S41的下一工序,核变换部1521对二次变换部1522进行二次变换后的修正变换系数d[][]执行基本核变换(步骤S43)。此处的基本核变换是不进行基于索引的切换的固定变换,是将块的变换分为垂直变换和水平变换两阶段进行的分离型变换。
作为步骤S42的下一工序,核变换部1521对从二次变换部1522接收到的变换系数d[][]进行与amt_idx解码部133解码后的amt_idx的值对应的扩展核变换(步骤S44)。此处的扩展核变换是进行基于索引的切换的选择性变换。此外,扩展核变换可以是将块的变换分为垂直变换和水平变换两阶段进行的分离型变换或将块的变换作为一维的16x1矢量变换一次进行的非分离型二次变换(Non-separable secondary transform:NSST)。
(总结)
如上所述,本实施方式的图像解码装置(运动图像解码装置1)按每个规定的单位对变换系数进行逆变换,具备:第一变换部(核变换部1521),对上述变换系数应用第一种核变换和第二种核变换中的任一种的核变换;以及第二变换部(二次变换部1522),仅在上述第一变换部进行上述第一种核变换的情况下,对上述变换系数进行二次变换。
根据上述的构成,在进行处理时间长的第二种核变换的情况下,不进行二次变换,因此能减少与预测残差的复原有关的处理量。
此外,在本实施方式的图像解码装置(运动图像解码装置1)中也可以是,上述第一变换部所应用的上述第二种核变换为非分离型变换。
根据上述的构成,在二次变换为非分离型变换的情况下,能避免同时执行非分离型变换的第二种核变换和非分离型变换的二次变换的浪费。因此,能减少与预测残差的复原有关的处理量。
此外,在本实施方式的图像解码装置(运动图像解码装置1)中也可以是,上述第一变换部参考第一语法选择上述第一种核变换,参考该第一语法和第二语法选择上述第二种核变换。
根据上述的构成,在选择第一种核变换的情况下仅参考第一语法即可,因此能减少与预测残差的复原有关的处理量。
此外,具有与本实施方式的运动图像解码装置1相同的构成的运动图像编码装置2也包括在本实施方式的范围内。本实施方式的图像编码装置(运动图像编码装置2),具备:正变换部,按每个规定的单位对预测误差进行正变换并导出变换系数;以及逆变换部,按每个规定的单位对变换系数进行逆变换,具备:第一变换部,对上述变换系数应用第一种核变换和第二种核变换中的任一种的核变换;以及第二变换部,仅在上述第一变换部进行上述第一种核变换的情况下,对上述变换系数进行二次变换。
根据上述的构成,与本实施方式的图像解码装置所起到的效果相同,在进行第二种核变换的情况下不进行二次变换,因此能减少与预测残差的复原有关的处理量。
〔运动图像编码装置〕
以下,参照图34,对本实施方式的运动图像编码装置2(图像编码装置)进行说明。
(运动图像编码装置的概要)
概括地说,运动图像编码装置2是通过对输入图像#10进行编码来生成编码数据#1,并对运动图像解码装置1输出编码数据#1的装置。
(运动图像编码装置的构成)
首先,使用图34对运动图像编码装置2的构成例进行说明。图34是表示运动图像编码装置2的构成的功能框图。如图34所示,运动图像编码装置2具备编码设定部30、逆量化/逆变换部35、预测图像生成部23、加法器24、帧存储器25、减法器26、变换/量化部27以及编码数据生成部(自适应处理部)29。
编码设定部30基于输入图像#10来生成与编码有关的图像数据和各种设定信息。
具体而言,编码设定部30生成下一图像数据和设定信息。
首先,编码设定部30通过将输入图像#10依次分割为切片单位、树单元单位来生成针对对象CU的CU图像#100。
此外,编码设定部30基于分割处理的结果来生成报头信息H’。报头信息H’包括:(1)有关对象切片所属的树单元的大小、形状以及在对象切片内的位置的信息;以及(2)有关各树单元所属的CU的大小、形状以及在对象树单元内的位置的CU信息CU’。
进而,编码设定部30参考CU图像#100和CU信息CU’来生成PT设定信息PTI’。PT设定信息PTI’中包括:(1)对象CU向各PU的可分割模式;以及(2)与可分配至各PU的预测模式的所有组合有关信息。
编码设定部30将CU图像#100供给至减法器26。此外,编码设定部30将报头信息H’供给至编码数据生成部29。此外,编码设定部30将PT设定信息PTI’供给至预测图像生成部23。
逆量化/逆变换部35通过对由变换/量化部27供给的每个TU的量化预测残差进行逆量化和逆正交变换来复原每个TU的预测残差D。对于逆正交变换,如已经对图2和图10所示的逆量化/逆变换部15进行说明那样,因此,在此省略其说明。
此外,逆量化/逆变换部35按照由TT分割信息(后述)指定的分割模式对每个块的预测残差进行合并,生成针对对象CU的预测残差D。逆量化/逆变换部35将所生成的针对对象CU的预测残差D供给至加法器24。
预测图像生成部23参考记录于帧存储器25的局部解码图像P’和PT设定信息PTI’来生成针对对象CU的预测图像Pred。预测图像生成部23将通过预测图像生成处理得到的预测参数设定为PT设定信息PTI’,并将设定后的PT设定信息PTI’传输至编码数据生成部29。需要说明的是,由预测图像生成部23进行的预测图像生成处理与运动图像解码装置1所具备的预测图像生成部14相同,因此,在此省略其说明。
加法器24通过将由预测图像生成部23供给的预测图像Pred与由逆量化/逆变换部35供给的预测残差D相加来生成针对对象CU的解码图像P。
在帧存储器25中,解码后的解码图像P被依次记录。在帧存储器25中,在对对象树单元进行解码的时间点,与比该对象树单元更先被解码的所有树单元(例如,按照光栅扫描的顺序排列在先的所有树单元)对应的解码图像与用于该解码图像P的解码的参数一起被记录。
减法器26通过从CU图像#100中减去预测图像Pred来生成针对对象CU的预测残差D。减法器26将所生成的预测残差D供给至变换/量化部27。
变换/量化部27通过对预测残差D进行正交变换和量化来生成量化预测残差。需要说明的是,在此,正交变换是指从像素区域向频域的正交变换。此外,作为逆正交变换的示例,可列举出DCT变换(Discrete Cosine Transform:离散余弦变换)和DST变换(DiscreteSine Transform:离散正弦变换)等。
具体而言,变换/量化部27参考CU图像#100和CU信息CU’来确定对象CU向一个或多个块的分割模式。此外,按照已确定的分割模式将预测残差D分割为针对各块的预测残差。
此外,变换/量化部27通过对针对各块的预测残差进行正交变换来生成频域中的预测残差之后,通过对该频域中的预测残差进行量化来生成每个块的量化预测残差。
此外,变换/量化部27生成包括所生成的每个块的量化预测残差、指定对象CU的分割模式的TT分割信息以及与对象CU向各块的可能的所有分割模式有关的信息的TT设定信息TTI’。变换/量化部27将所生成的TT设定信息TTI’供给至逆量化/逆变换部35和编码数据生成部29。
编码数据生成部29对报头信息H’、TT设定信息TTI’以及PT设定信息PTI’进行编码,并对编码后的报头信息H、TT设定信息TTI以及PT设定信息PTI进行复用来生成编码数据#1并输出。
〔应用例〕
上述的运动图像编码装置2和运动图像解码装置1能搭载于进行运动图像的发送、接收、记录、再现的各种装置而利用。需要说明的是,运动图像可以是通过摄像机等拍摄的自然运动图像,也可以是通过计算机等生成的人工运动图像(包括CG和GUI)。
首先,参照图35,对能将上述的运动图像编码装置2和运动图像解码装置1利用于运动图像的发送和接收的情况进行说明。
图35的(a)是表示搭载有运动图像编码装置2的发送装置PROD_A的构成的框图。如图35的(a)所示,发送装置PROD_A具备:通过对运动图像进行编码而得到编码数据的编码部PROD_A1、通过利用编码部PROD_A1所得到的编码数据对载波进行调制而得到调制信号的调制部PROD_A2以及发送调制部PROD_A2所得到的调制信号的发送部PROD_A3。上述的运动图像编码装置2用作该编码部PROD_A1。
作为输入至编码部PROD_A1的运动图像的供给源,发送装置PROD_A也可以进一步具备:拍摄运动图像的摄像机PROD_A4、记录运动图像的记录介质PROD_A5、用于从外部输入运动图像的输入端子PROD_A6以及生成或加工图像的图像处理部A7。在图35的(a)中举例示出了发送装置PROD_A具备全部这些的构成,但也可以省略一部分。
需要说明的是,记录介质PROD_A5可以是记录有未被编码的运动图像的介质,也可以是记录有以与传输用的编码方式不同的记录用的编码方式进行编码后的运动图像的介质。在后者的情况下,使按照记录用的编码方式对从记录介质PROD_A5读出的编码数据进行解码的解码部(未图示)介于记录介质PROD_A5与编码部PROD_A1之间为好。
图35的(b)是表示搭载有运动图像解码装置1的接收装置PROD_B的构成的框图。如图35的(b)所示,接收装置PROD_B具备:接收调制信号的接收部PROD_B1、通过对接收部PROD_B1所接收到的调制信号进行解调而得到编码数据的解调部PROD_B2以及通过对解调部PROD_B2所得到的编码数据进行解码而得到运动图像的解码部PROD_B3。上述的运动图像解码装置1被用作该解码部PROD_B3。
接收装置PROD_B作为解码部PROD_B3所输出的运动图像的供给目的地,也可以进一步具备显示运动图像的显示器PROD_B4、用于记录运动图像的记录介质PROD_B5以及用于将运动图像输出至外部的输出端子PROD_B6。在图35的(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双方来发挥功能。
接着,参照图36,对能将上述的运动图像编码装置2和运动图像解码装置1利用于运动图像的记录和再现的情况进行说明。
图36的(a)是表示搭载有上述的运动图像编码装置2的记录装置PROD_C的构成的框图。如图36的(a)所示,记录装置PROD_C具备:通过对运动图像进行编码而得到编码数据的编码部PROD_C1和将编码部PROD_C1所得到的编码数据写入记录介质PROD_M的写入部PROD_C2。上述的运动图像编码装置2用作该编码部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以及生成或加工图像的图像处理部C6。在图36的(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的一个示例。
图36的(b)是表示搭载有上述的运动图像解码装置1的再现装置PROD_D的构成的框。如图36的(b)所示,再现装置PROD_D具备:读出已写入记录介质PROD_M的编码数据的读出部PROD_D1和通过对读出部PROD_D1所读出的编码数据进行解码而得到运动图像的解码部PROD_D2。上述的运动图像解码装置1用作该解码部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。在图36的(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的一个示例。
〔基于软件的实现例和基于软件的实现例〕
此外,上述的运动图像解码装置1和运动图像编码装置2的各块既可以通过形成于集成电路(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(Erasable ProgrammableRead-Only Memory:可擦可编程只读存储器)/EEPROM(Electrically Erasable andProgrammable Read-Only Memory:电可擦可编程只读存储器)/闪速ROM等半导体存储器类;或者PLD(Programmable logic device:可编程逻辑器件)、FPGA(Field ProgrammableGate 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:数字生活网络联盟)、便携电话网、卫星线路、地面播数字网等无线中都可利用。需要说明的是,本发明即使以通过电子传输将上述程序代码具体化的嵌入载波的计算机数据信号的形态也能实现。
本发明并不限定于上述的实施方式,在权利要求所示的范围内可进行各种变更。即,将在权利要求所示的范围内经过适当变更的技术方案组合而得到的实施方式也包括在本发明的技术范围内。
本发明并不限定于上述的各实施方式,在权利要求所示的范围内可进行各种变更,将分别在不同的实施方式中公开的技术方案适当组合而得到的实施方式也包括在本发明的技术范围内。而且,通过将分别在各实施方式中公开的技术方案组合,能形成新的技术特征。
(关联申请的相互参考)
本申请对于2017年9月28日提出申请的日本专利申请2017-189061主张优先权的利益,并通过对其进行参照而将其全部内容包括到本说明书中。
符号说明
1 运动图像解码装置(图像解码装置)
10 解码模块
11 CT信息解码部(解码部)
12 PU信息解码部(解码部)
13 TT信息解码部(解码部)
15、35 逆量化/逆变换部
16、25 帧存储器
2 运动图像编码装置(图像编码装置)
131 sec_idx解码部
132 amt_flag解码部
133 amt_idx解码部
21 CU信息解码部
25 帧存储器
27 变换/量化部