图像处理设备和方法与流程

文档序号:21368947发布日期:2020-07-04 04:44阅读:343来源:国知局
图像处理设备和方法与流程

本公开涉及图像处理设备和方法,并且具体地涉及使得能够抑制正交变换和逆正交变换所需的存储器容量的增大的图像处理设备和方法。



背景技术:

常规地,已经公开了关于亮度的自适应一次变换(自适应多核变换amt),在该自适应一次变换中,针对每个变换单位(tu)的每个水平一次变换pthor(也称为一次水平变换)和垂直一次变换ptver(也称为一次垂直变换),从多个不同的正交变换中自适应地选择一次变换(例如,参见非专利文献1)。

在非专利文献1中,存在作为一次变换的候选的五个一维正交变换:dct-ii、dst-vii、dct-viii、dst-i和dct-vi。此外,已经提出了添加dst-iv和恒等变换(idt:一维变换跳过)这两个一维正交变换,因此总共具有作为一次变换的候选的七个一维正交变换(例如,参见非专利文献2)。

引用列表

非专利文件

非专利文献1:jianlechen,elenaalshina,garyj.sullivan,jens-rainer,jillboyce,“algorithmdescriptionofjointexplorationtestmodel4”,jvet-g1001_v1,jointvideoexplorationteam(jvet)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg117thmeeting:torino,it,13-21july2017

非专利文献2:v.lorcy,p.philippe,“proposedimprovementstotheadaptivemultiplecoretransform”,jvet-c0022,jointvideoexplorationteam(jvet)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg113rdmeeting:geneva,ch,26may-1june2016



技术实现要素:

本发明要解决的问题

然而,在这些方法的情况下,存在保持一次变换的所有变换矩阵所需的查找表(lut)的大小增大的可能性。即,在考虑一次变换的硬件实现的情况下,存在保持变换矩阵的系数所需的存储器大小增大的可能性。

已经鉴于这种情况而作出了本公开,并且本公开使得能够抑制正交变换和逆正交变换所需的存储器容量的增大。

问题的解决方案

根据本技术的一个方面的图像处理设备是包括下述的图像处理设备:导出单元,其被配置成使用第一变换矩阵导出第二变换矩阵;正交变换单元,其被配置成使用由导出单元导出的第二变换矩阵对图像的预测残差进行正交变换;以及编码单元,其被配置成对通过由正交变换单元对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

根据本技术的一个方面的图像处理方法是包括下述的图像处理方法:使用第一变换矩阵导出第二变换矩阵;使用所导出的第二变换矩阵对图像的预测残差进行正交变换;以及对通过对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

根据本技术的另一方面的图像处理设备是包括下述的图像处理设备:解码单元,其被配置成对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;导出单元,其被配置成使用第一变换矩阵导出第二变换矩阵;以及逆正交变换单元,其被配置成使用由导出单元导出的第二变换矩阵对由解码单元获得的系数数据进行逆正交变换。

根据本技术的另一方面的图像处理方法是包括下述的图像处理方法:对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;使用第一变换矩阵导出第二变换矩阵;以及使用所导出的第二变换矩阵对所获得的系数数据进行逆正交变换。

根据本技术的又一方面的图像处理设备是包括下述的图像处理设备:操作单元,其被配置成对图像的预测残差执行置换操作;正交变换单元,其被配置成使用用作基础的变换矩阵,对通过操作单元进行了置换操作的预测残差进行正交变换;以及编码单元,其被配置成对通过由正交变换单元对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

根据本技术的又一方面的图像处理方法是包括下述的图像处理方法:对图像的预测残差执行置换操作;使用用作基础的变换矩阵对进行了置换操作的预测残差进行正交变换;以及对通过对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

根据本技术的又一方面的图像处理设备是包括下述的图像处理设备:解码单元,其被配置成对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;逆正交变换单元,其被配置成对由解码单元获得的系数数据进行逆正交变换;以及操作单元,其被配置成对由逆正交变换单元获得的系数数据的逆正交变换结果执行置换操作。

根据本技术的又一方面的图像处理方法是包括下述的图像处理方法:对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;对所获得的系数数据进行逆正交变换;以及对所获得的系数数据的逆正交变换结果执行置换操作。

在根据本技术的一个方面的图像处理设备和方法中,使用第一变换矩阵导出第二变换矩阵,使用所导出的第二变换矩阵对图像的预测残差进行正交变换,并且对通过对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

在根据本技术的另一方面的图像处理设备和方法中,对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据,使用第一变换矩阵导出第二变换矩阵,并且使用所导出的第二变换矩阵对所获得的系数数据进行逆正交变换。

在根据本技术的又一方面的图像处理设备和方法中,对图像的预测残差进行置换操作,使用基础变换矩阵对进行了置换操作的预测残差进行正交变换,并且对通过对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

在根据本技术的再一方面的图像处理设备和方法中,对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据,对所获得的系数数据进行逆正交变换,并且对所获得的系数数据的逆正交变换结果进行置换。

本发明的效果

根据本公开,可以处理图像。特别地,可以抑制正交变换和逆正交变换所需的存储器容量的增大。

附图说明

图1是示出变换集与要选择的正交变换之间的对应关系的图。

图2是示出正交变换的类型与要使用的函数之间的对应关系的图。

图3是示出变换集与预测模式之间的对应关系的图。

图4是示出存储在lut中的正交变换的类型的示例的图。

图5是示出在hevc中保持变换矩阵所需的lut大小的示例的图。

图6是示出保持变换矩阵所需的lut大小的示例的图。

图7是用于描述变换矩阵之间的相似性的示例的图。

图8是用于描述可以通过翻转进行替换的变换类型的示例的图。

图9是用于描述可以通过转置进行替换的变换类型的示例的图。

图10是示出变换矩阵的替换的主要具体示例的列表的图。

图11是示出图像编码装置的主要配置示例的框图。

图12是示出正交变换单元的主要配置示例的框图。

图13是用于描述图像编码处理的流程的示例的流程图。

图14是用于描述正交变换处理的流程的示例的流程图。

图15是示出图像解码装置的主要配置示例的框图。

图16是示出逆正交变换单元的主要配置示例的框图。

图17是用于描述图像解码处理的流程的示例的流程图。

图18是用于描述逆正交变换处理的流程的示例的流程图。

图19是示出变换类型导出的示例的图。

图20是示出变换类型导出的具体示例的图。

图21是示出保持变换矩阵所需的lut大小的示例的图。

图22是示出一次变换单元的主要配置示例的框图。

图23是示出一次水平变换单元的主要配置示例的框图。

图24是示出变换矩阵导出单元的主要配置示例的框图。

图25是示出一次垂直变换单元的主要配置示例的框图。

图26是示出变换矩阵导出单元的主要配置示例的框图。

图27是用于描述一次变换处理的流程的示例的流程图。

图28是用于描述一次水平变换处理的流程的示例的流程图。

图29是示出每个元素的运算表达式的示例的图。

图30是用于描述变换矩阵导出处理的流程的示例的流程图。

图31是示出对于变换类型标识符的变换类型的分配的示例的图。

图32是用于描述一次垂直变换处理的流程的示例的流程图。

图33是示出每个元素的运算表达式的示例的图。

图34是示出逆一次变换单元的主要配置示例的框图。

图35是示出逆一次垂直变换单元的主要配置示例的框图。

图36是示出变换矩阵导出单元的主要配置示例的框图。

图37是示出逆一次水平变换单元的主要配置示例的框图。

图38是示出变换矩阵导出单元的主要配置示例的框图。

图39是用于描述逆一次变换处理的流程的示例的流程图。

图40是用于描述逆一次变换选择处理的流程的示例的流程图。

图41是用于描述逆一次垂直变换处理的流程的示例的流程图。

图42是用于描述逆一次水平变换处理的流程的示例的流程图。

图43是示出变换类型导出的示例的图。

图44是示出变换类型导出的具体示例的图。

图45是示出保持变换矩阵所需的lut大小的示例的图。

图46是示出变换矩阵导出单元的主要配置示例的框图。

图47是示出变换矩阵导出单元的主要配置示例的框图。

图48是示出变换矩阵导出单元的主要配置示例的框图。

图49是示出对于变换类型标识符的变换类型的分配的示例的图。

图50是示出变换矩阵导出单元的主要配置示例的框图。

图51是示出变换矩阵导出单元的主要配置示例的框图。

图52是示出变换类型导出的示例的图。

图53是示出保持变换矩阵所需的lut大小的示例的图。

图54是用于描述变换矩阵导出处理的流程的示例的流程图。

图55是示出对于变换类型标识符的变换类型的分配的示例的图。

图56是示出变换类型导出的示例的图。

图57是示出保持变换矩阵所需的lut大小的示例的图。

图58是示出对于变换类型标识符的变换类型的分配的示例的图。

图59是示出变换类型导出的示例的图。

图60是示出保持变换矩阵所需的lut大小的示例的图。

图61是用于描述变换矩阵导出处理的流程的示例的流程图。

图62是示出对于变换类型标识符的变换类型的分配的示例的图。

图63是用于描述二维正交变换的空间对称性的图。

图64是用于描述水平对称性的图。

图65是用于描述垂直对称性的图。

图66是用于描述水平和垂直对称性的图。

图67是示出涉及预测残差的变换的变换矩阵的替换的主要具体示例的列表的图。

图68是示出保持变换矩阵所需的lut大小的示例的图。

图69是示出一次变换单元的主要配置示例的框图。

图70是用于描述一次变换处理的流程的示例的流程图。

图71是用于描述预测残差置换操作处理的流程的示例的流程图。

图72是示出对于变换类型标识符的变换类型的分配的示例的图。

图73是示出逆一次变换单元的主要配置示例的框图。

图74是用于描述逆一次变换处理的流程的示例的流程图。

图75是示出保持变换矩阵所需的lut大小的示例的图。

图76是示出变换矩阵导出单元的主要配置示例的框图。

图77是示出变换矩阵导出单元的主要配置示例的框图。

图78是用于描述变换矩阵导出处理的流程的示例的流程图。

图79是示出对于变换类型标识符的变换类型的分配的示例的图。

图80是示出变换矩阵导出单元的主要配置示例的框图。

图81是示出变换矩阵导出单元的主要配置示例的框图。

图82是示出对于变换类型标识符的变换类型的分配的示例的图。

图83是示出对于变换类型标识符的变换类型的分配的示例的图。

图84是用于描述使用子矩阵导出变换矩阵的图。

图85是示出从子矩阵导出的变换矩阵的主要具体示例的列表的图。

图86是示出变换矩阵导出的状态的示例的图。

图87是示出变换矩阵导出的状态的示例的图。

图88是示出变换矩阵导出的状态的示例的图。

图89是示出变换矩阵导出的状态的示例的图。

图90是示出变换矩阵导出的状态的示例的图。

图91是示出变换矩阵导出的状态的示例的图。

图92是示出变换矩阵导出单元的主要配置示例的框图。

图93是示出变换矩阵导出单元的主要配置示例的框图。

图94是用于描述变换矩阵导出处理的流程的示例的流程图。

图95是示出对于变换类型标识符的变换类型的分配的示例的图。

图96是示出变换矩阵导出单元的主要配置示例的框图。

图97是示出变换矩阵导出单元的主要配置示例的框图。

图98是示出保持变换矩阵所需的lut大小的示例的图。

图99是示出变换矩阵导出单元的主要配置示例的框图。

图100是用于描述变换矩阵导出处理的流程的示例的流程图。

图101是示出对于变换类型标识符的变换类型的分配的示例的图。

图102是示出计算机的主要配置示例的框图。

具体实施方式

在下文中,将描述用于实现本公开的模式(在下文中被称为“实施方式”)。注意,将按以下顺序给出描述。

1.自适应一次变换[0022]

2.第一实施方式(从变换矩阵导出变换矩阵)[0047]

2-1.公共概念

2-2.示例1-1

2-3.示例1-2

2-4.示例1-3

2-5.示例1-4

2-6.示例1-5

3.第二实施方式(预测残差变换)[0567]

3-1.公共概念

3-2.示例2-1

3-3.示例2-2

3-4.示例2-3

3-5.示例2-4

4.第三实施方式(从子矩阵导出变换矩阵)[0740]

4-1.公共概念

5.第四实施方式(示例的组合)[0846]

5-1.公共概念

6.附记

<1.自适应一次变换>

<支持技术内容和技术术语的文献>

由本技术公开的范围不仅包括示例中描述的内容,而且包括在提交时已知的下述非专利文献中描述的内容。

非专利文献1:(如上所述)

非专利文献3:telecommunicationstandardizationsectorofitu(internationaltelecommunicationunion),“advancedvideocodingforgenericaudiovisualservices”,h.264,04/2017

非专利文献4:telecommunicationstandardizationsectorofitu(internationaltelecommunicationunion),“highefficiencyvideocoding”,h.265,12/2016

即,上述非专利文献中描述的内容也用作用于确定支持要求的基础。例如,即使在示例中没有直接描述非专利文献4中描述的四叉树块结构和非专利文献1中描述的四叉树加二叉树(qtbt)块结构的情况下,这些内容也落入本技术的公开范围内,并且满足权利要求的支持要求。此外,例如,即使在示例中没有直接描述诸如解析、语法和语义的技术术语的情况下,这些技术术语也类似地落入本技术的公开范围内,并且满足权利要求的支持要求。

此外,在本说明书中,除非另有说明,否则用于作为图像(图片)的部分区域或处理单位的描述的“块”(不是指示处理单位的块)指示图片中的任意部分区域,并且块的大小、形状、特性等不受限制。例如,“块”包括诸如在非专利文献1、3和4中描述的变换块(tb)、变换单位(tu)、预测块(pb)、预测单位(pu)、最小编码单位(scu)、编码单位(cu)、最大编码单位(lcu)、编码树块(ctb)、编码树单位(ctu)、变换块、子块、宏块、图块(tile)或片(slice)之类的任意部分区域(处理单位)。

此外,在指定这种块的大小时,不仅可以直接指定块大小,而且可以间接指定块大小。例如,可以使用用于标识大小的标识信息来指定块大小。此外,例如,块大小可以通过与基准块(例如,lcu、scu等)的大小的比率或差异来指定。例如,在将用于指定块大小的信息作为语法元素等进行传送的情况下,可以使用如上所述的用于间接指定大小的信息作为该信息。利用该配置,在一些情况下,可以减少信息量,并且可以提高编码效率。此外,块大小的指定还包括块大小的范围的指定(例如,可允许块大小的范围的指定等)。

<自适应一次变换>

在非专利文献1中描述的测试模型(联合探索测试模型4(jointexplorationtestmodel4,jem4))中,公开了自适应一次变换(自适应多核变换(amt)),在该自适应一次变换中,针对关于亮度变换块的每个水平一次变换pthor(也称为一次水平变换)和垂直一次变换ptver(也称为一次垂直变换),从多个不同的一维正交变换中自适应地选择一次变换。

具体地,关于亮度变换块,在指示是否执行自适应一次变换的自适应一次变换标志apt_flag是0(假(false))的情况下,如在图1中所示的表(lut_trsettotrtypeidx)中那样,通过模式信息将离散余弦变换(dct)-ii或离散正弦变换(dst)-vii唯一地确定为一次变换,例如,(trsetidx=4)。

在自适应一次变换标志apt_flag是1(真(true))并且包括要处理的亮度变换块的当前编码单位(cu)是帧内cu的情况下,如图1所示的表中所示,针对水平方向(x方向)和垂直方向(y方向)中的每一个从图1所示的三个变换集trset(trsetidx=0、1和2)中选择包括用作一次变换候选的正交变换的变换集trset。注意,图1中所示的dst-vii、dct-viii等指示正交变换的类型,并且使用诸如图2的表中所示的那些函数的函数。

基于图3中所示的模式信息和变换集的对应表(的帧内预测模式信息)来唯一地确定变换集trset。例如,如下面的表达式(1)和(2)中那样,针对变换集trseth和trsetv中的每一个设置用于指定对应变换集trset的变换集标识符trsetidx。

[数学式1]

trseth=lut_intramodetotrset[intramode][0]…(1)

trsetv=lut_intramodetotrset[intramode][1]…(2)

这里,trseth表示一次水平变换pthor的变换集,trsetv表示一次垂直变换ptver的变换集,并且查找表lut_intramodetotrset表示图3中的对应表。查找表lut_intramodetotrset[][]的第一阵列以帧内预测模式intramode为参数,并且第二阵列以{h=0,v=1}为参数。

例如,在帧内预测模式编号19(intramode==19)的情况下,选择图1的表中示出的变换集标识符trsetidx=0的变换集作为一次水平变换pthor的变换集trseth(也称为一次水平变换集),并且选择图1的表中示出的变换集标识符trsetidx=2的变换集作为一次垂直变换ptver的变换集trsetv(也称为一次垂直变换集)。

注意,在自适应一次变换标志apt_flag是1(真)并且包括要处理的亮度变换块的当前cu是帧间cu的情况下,专用于帧间cu的变换集intertrset(trsetidx=3)被分配给一次水平变换的变换集trseth和一次垂直变换的变换集trsetv。

接下来,针对水平方向和垂直方向中的每一个,根据一次水平变换指定标志pt_hor_flag和一次垂直变换指定标志pt_ver_flag之间的对应指定标志,选择应用所选择的变换集trset中的哪个正交变换。

例如,使用一次{水平,垂直}变换集trset{h,v}和一次{水平,垂直}变换指定标志pt_{hor,ver}_flag作为参数,如下面的表达式(3)和(4)中那样,从图1所示的变换集定义表(lut_trsettotrtypeidx)中导出变换集。

[数学式2]

trtypeidxh=lut_trsettotrtypeidx[trseth][pt_hor_flag]…(3)

trtypeidxv=lut_trsettotrtypeidx[trsetv][pt_ver_flag]…(4)

例如,在帧内预测模式编号34(intramode==34)(即,一次水平变换集traaseth为0)且一次水平变换指定标志pt_hor_flag为0的情况下,根据图1中的变换集定义表(lut_trsettotrtypeidx),表达式(3)的变换类型标识符trtypeidxh的值为4,并且通过参照图2,与该变换类型标识符trtypeidxh的值对应的变换类型trtypeh为dst-vii。也就是说,选择变换集标识符trsetidx为0的变换集的dst-vii作为一次水平变换pthor的变换类型。此外,在一次水平变换指定标志pt_hor_flag为1的情况下,选择dct-viii作为变换类型。注意,选择变换类型trtype包括:通过变换类型标识符trtypeidx选择用变换类型标识符trtypeidx指定的变换类型。

注意,基于下面的表达式(5),从一次水平变换指定标志pt_hor_flag和一次垂直变换指定标志pt_ver_flag导出一次变换标识符pt_idx。即,一次变换标识符pt_idx的高1位对应于一次垂直变换指定标志的值,并且低1位对应于一次水平变换指定标志的值。

[数学式3]

pt_idx=(pt_ver_flag<<1)+pt_hor_flag…(5)

通过对导出的一次变换标识符pt_idx的二进制串(binstring)应用算术编码以生成位串(bitstring)来执行编码。注意,在亮度变换块中用信号传递自适应一次变换标志apt_flag和一次变换标识符pt_idx。

如上所述,非专利文献1提出了dct-ii(dct2)、dst-vii(dst7)、dct-viii(dct8)、dst-i(dst1)和dct-v(dct5)这五个一维正交变换作为一次变换候选。此外,除了上述之外,非专利文献2还提出了dst-iv(dst4)和恒等变换(idt:一维变换跳过)这两个一维正交变换,从而总共具有作为一次变换候选的七个一维正交变换。

即,在非专利文献1的情况下,如图4所示,一维正交变换被存储在lut中作为一次变换候选。此外,在非专利文献2的情况下,除了上述之外,还将dst-iv(dst4)和idt存储在lut中(参见图4)。

在高效视频编码(hevc)的情况下,保持变换矩阵所需的查找表(lut)的大小如图5中的表中所示。也就是说,lut的大小总共约为1.3kb。相比之下,在非专利文献1中描述的方法的情况下,例如,dct2需要在lut上保持2/4/8/16/32/64/128个点的每个大小的变换矩阵。此外,其他一维变换(dst7/dst1/dct8)需要在lut上保持4/8/16/32/64个点的每个大小的变换矩阵。在这种情况下,假设变换矩阵的每个系数的位精度是10位,则保持一次变换的所有变换矩阵所需的lut的大小在图6中的a中示出。即,在这种情况下,lut的大小总共约为53kb。也就是说,在这种情况下,lut的大小增加大约hevc的情况的50倍。

类似地,在非专利文献2中描述的方法的情况下,保持一次变换的所有变换矩阵所需的lut的大小如图6中的b中的表所示。也就是说,在这种情况下,lut的大小总共约为67kb。也就是说,在这种情况下,lut的大小增加大约hevc的情况的60倍。

在考虑一次变换的硬件实现的情况下,lut的大小被反映在存储容量(存储器容量)中。即,在非专利文献1和2中描述的方法的情况下,存在电路规模(保持变换矩阵的系数所需的存储器容量)增加大约hevc的情况的50至60倍的可能性。

<2.第一实施方式>

<2-1.公共概念>

<变换矩阵的导出>

因此,使用第一变换矩阵导出第二变换矩阵,使用导出的第二变换矩阵对图像的预测残差进行正交变换,并且对通过对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

例如,图像处理设备包括:导出单元,其被配置成使用第一变换矩阵导出第二变换矩阵;正交变换单元,其被配置成使用由导出单元导出的第二变换矩阵对图像的预测残差进行正交变换;以及编码单元,其被配置成对通过由正交变换单元对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

利用该配置,变换矩阵可以从另外的变换矩阵导出。因此,可以抑制为正交变换准备的变换矩阵的数目的增大,并且可以抑制正交变换所需的存储器容量的增大。

此外,对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据,使用第一变换矩阵导出第二变换矩阵,并且使用导出的第二变换矩阵对获得的系数数据进行逆正交变换。

例如,图像处理设备包括:解码单元,其被配置成对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;导出单元,其被配置成使用第一变换矩阵导出第二变换矩阵;以及逆正交变换单元,其被配置成使用由导出单元导出的第二变换矩阵对由解码单元获得的系数数据进行逆正交变换。

利用该配置,变换矩阵可以从另外的变换矩阵导出。因此,可以抑制为逆正交变换准备的变换矩阵的数目的增大,并且可以抑制逆正交变换所需的存储器容量的增大。

<变换矩阵的特性>

变换矩阵的主要作用之一是使低阶(特别是0阶)频率分量的信号在dc分量方向上偏移,并且如何收集频率分量是重要的特性。低阶(特别是0阶)基向量(basevector)(行向量)的波形分量对于如何使频率分量偏移是重要的。即,在基向量的波形分量方面具有相似趋势的变换矩阵可以期望正交变换/逆正交变换的相似性能(使频率分量偏移的方式是相似的)。

因此,关注变换矩阵的低阶(特别是0阶)基向量(行向量)的波形。例如,在图7的变换矩阵30中,假设帧31中的低阶(特别是0阶)行向量的波形(元素的值的趋势)如曲线图32所示。

曲线图32示出了频率分量的元素的值朝向左侧变得更低(的趋势)并且频率分量的元素的值朝向右侧变得更高(的趋势)。此外,曲线32示出了值朝向图7中的上侧变得更大并且值朝向图7中的下侧变得更小。注意,曲线图32中的上下方向的中心示出0,并且中心的上侧示出正值,而中心的下侧示出负值。

曲线图32中的波形32a示出了变换矩阵30的0阶行向量的波形。如波形32a所示,在这种情况下,变换矩阵30的0阶行向量具有值从低频分量向高频分量变得更大的趋势。

此外,例如,在图7的变换矩阵30中,假设帧33中的低阶(特别是0阶)列向量的波形(元素的值的趋势)如曲线图34所示。曲线图34示出了频率分量的元素的值朝向图7中的上侧变得更低(的趋势)并且频率分量的元素的值朝向图7中的下侧变得更高(的趋势)。此外,曲线图34示出了值朝向图7中的更左侧变得更大,并且值朝向图7中的更右侧变得更小。注意,曲线图34中的左右方向的中心示出0,并且中心的左侧示出正值,而中心的右侧示出负值。

曲线图34中的波形34a示出了变换矩阵30的0阶列向量的波形。如波形34a所示,在这种情况下,变换矩阵30的0阶列向量在中间的频率分量处具有峰值(即,具有值在低频侧朝向更低的频率分量变得更小并且值在高频侧朝向更高的频率分量变得更小的趋势)。

注意,在本说明书中,变换矩阵30的0阶列向量的波形可以如曲线图35所示以转置状态示出。曲线图35的结构与曲线图32的结构相似。波形35a等同于波形34a。

如上所述,具有相似的低阶(特别是0阶)基向量(行向量)的波形的变换矩阵具有相似的性能。换言之,变换矩阵可以由具有相似的低阶(特别是0阶)基向量(行向量)的波形的另外的变换矩阵来替换。因此,通过使用上述特性,可以抑制要存储在lut中的变换矩阵的数目的增大。

在此,关注非专利文献1和非专利文献2中描述的变换类型,可以将这些变换类型的变换矩阵的0阶行向量和0阶列向量的波形分类为四种类型。图8示出了示例。

第一种类型是平坦型。平坦型是在每个频率分量中值基本上均匀的波形类型。第二种类型是增大型。增大型是值从低频分量向高频分量趋向于增大的波形类型。第三种类型是减小型。减小型是值从低频分量向高频分量趋向于减小的波形类型。第四种类型是人字型。人字型是值趋向于在中间具有峰值(最大值)的波形类型。即,在人字型的情况下,波形的值在低频分量侧朝向更低的频率分量趋向于减小,并且该值在高频分量侧朝向更高的频率分量趋向于减小。

注意,这些类型中的每一个呈现出波形的近似形状,而不需要完全匹配。例如,在增大型的情况下,只要波形整体上值从低频侧到高频侧趋向于增大即可,而不需要波形严格地从低频侧到高频侧单调增大。

类似地,在减小型的情况下,只要波形整体上值从低频侧到高频侧趋向于减小即可,而不需要波形严格地从低频侧到高频侧单调减小。

类似地,在人字型的情况下,只要波形整体上具有靠近中心的峰值(最大值)并且值在两侧在远离峰值的方向上趋向于减小即可,而不需要波形的值在峰值的两侧在远离峰值的方向上单调减小。此外,峰值不需要由一个分量形成。例如,可以能够从多个分量中指定峰值的近似位置和值。此外,峰值的位置不需要恰好在中心处。

类似地,在平坦型的情况下,只要波形整体上值基本上均匀即可,而不需要波形严格平坦。也就是说,值可能存在一些变化。换言之,不能被分类为其他三种类型的波形可以被分类为平坦型。

上述波形分类是示例,并且分类不限于上述示例。即,波形可以被分类为除了上述类型之外的类型,并且要分类的类型的数目是任意的,而不限于上述四种类型。注意,该分类是为了便于描述本技术而执行的,而不是作为实际处理来执行。

根据这种分类,如图8所示,dct2的变换矩阵的0阶行向量的波形被分类为平坦型,并且0阶列向量的波形被分类为减小型。此外,dst7的变换矩阵的0阶行向量的波形被分类为增大型,并且0阶列向量的波形被分类为人字型。此外,dct8的变换矩阵的0阶行向量的波形被分类为减小型,并且0阶列向量的波形被分类为减小型。此外,dct5的变换矩阵的0阶行向量的波形被分类为平坦型,并且0阶列向量的波形被分类为平坦型。注意,dst4的变换矩阵的0阶行向量的波形被分类为增大型,并且0阶列向量的波形被分类为增大型。

如上所述,变换矩阵可以由具有相似的0阶行向量的波形的另外的变换矩阵来替换。即,在具有相同类型的0阶行向量的波形的变换类型之间,变换矩阵可以彼此替换。

即,在使用上述第一变换矩阵导出第二变换矩阵时,导出单元可以导出最低阶行向量具有期望的波形类型的第二变换矩阵。利用该配置,可以抑制为正交变换/逆正交变换准备的变换矩阵的数目的增大,并且可以抑制正交变换/逆正交变换所需的存储器容量的增大。

例如,导出单元可以使用第一变换矩阵导出其中最低阶行向量具有平坦型波形的第二变换矩阵。利用该配置,可以用导出的第二变换矩阵来替换具有最低阶行向量的平坦型波形的变换矩阵。此外,例如,导出单元可以使用第一变换矩阵导出其中最低阶行向量具有增大型波形的第二变换矩阵。利用该配置,可以用导出的第二变换矩阵来替换具有最低阶行向量的增大型波形的变换矩阵。

此外,例如,导出单元可以使用第一变换矩阵导出其中最低阶行向量具有减小型波形的第二变换矩阵。利用该配置,可以用导出的第二变换矩阵来替换具有最低阶行向量的减小型波形的变换矩阵。此外,例如,导出单元可以使用第一变换矩阵导出其中最低阶行向量具有人字型的波形的第二变换矩阵。利用该配置,可以用导出的第二变换矩阵来替换具有具有最低阶行向量的人字形波形的变换矩阵。

例如,在图8中,dst7、dst4、dst8和dst3全部具有第0阶行向量的增大型波形,变换矩阵可以彼此替换。即,即使变换矩阵具有不同的变换类型,也可以替换变换矩阵。

即,在使用上述第一变换矩阵导出第二变换矩阵时,导出单元可以导出与第一变换矩阵的变换类型不同的变换类型的第二变换矩阵。利用该配置,可以抑制为正交变换/逆正交变换准备的变换类型的数目的增大,并且可以抑制正交变换/逆正交变换所需的存储器容量的增大。

注意,在导出中,导出单元可以导出与第一变换矩阵具有相同的行数和相同的列数的第二变换矩阵。在改变行数和列数的情况下,存在波形类型被无意地改变的可能性。因此,通过将行数和列数设定为与第一变换矩阵的行数和列数相同,可以抑制波形类型被非预期改变的可能性,并且可以更容易地导出第二变换矩阵。

注意,可以容易地对矩阵执行对元素的操作。对矩阵的元素的操作的示例包括元素的重新排列等。更具体地,例如,在矩阵中,可以在预定方向上翻转(反转)元素组的排列顺序,或者可以对元素组进行转置以互换行和列。注意,转置等同于围绕连接矩阵的左上端和右下端的对角线进行翻转(反转)。也就是说,转置可以说是翻转的一部分。此外,还容易反转每个元素的符号(从正到负或者从负到正)。

通过使用这样的操作,可以有意地改变0阶行向量的波形(的类型)。例如,当具有0阶行向量的增大型波形的矩阵在行方向上翻转时,0阶行向量的波形变为减小型。相反,当具有0阶行向量的减小型波形的矩阵在行方向上翻转时,0阶行向量的波形变为增大型。

即,如图8所示,通过使其中0阶行向量的波形是增大变换类型(例如,dst7、dst4、dst8或dst3)的变换矩阵在行方向上翻转,可以获得可以替换其中0阶行向量的波形是减小变换类型(例如,dct7、dct4、dct8或dct3)的变换矩阵。

此外,例如,当矩阵被转置时,0阶行向量的波形类型与0阶列向量的波形类型互换。即,通过转置,矩阵的0阶行向量的波形变成与转置之前矩阵的0阶列向量的波形的类型相同的类型。

例如,如图9所示,通过转置其中0阶列向量的波形是减小型的dct2(dct6)的变换矩阵,可以获得可以替换其中0阶行向量的波形是递减变换类型(dct3、dct7、dct4或dct8)的变换矩阵。此外,如图9所示,通过转置其中0阶列向量的波形是人字型的dst7(dst3)的变换矩阵,可以获得可以替换其中0阶行向量的波形为人字变换类型(dst2、dst6、dst1或dst5)的变换矩阵。

也就是说,导出单元可以通过对这样的第一变换矩阵的元素的操作来导出第二变换矩阵。然后,对元素的操作可以包括如上所述的元素的重新排列(改变排列顺序)。利用该配置,可以有意地改变波形的类型,使得可以从第一变换矩阵导出更多不同的第二变换矩阵。因此,可以抑制为正交变换/逆正交变换准备的变换类型的数目的增大,并且可以抑制正交变换/逆正交变换所需的存储器容量的增大。

注意,当然,导出单元可以多次执行这样的操作来导出第二变换矩阵。例如,可以任意组合诸如翻转和转置的操作。此外,相同的操作可以被重复多次。通过这样做,可以从第一变换矩阵导出更多的各种第二变换矩阵。

注意,如上所述,用于正交变换/逆正交变换的变换矩阵被存储在lut中。因此,导出单元可以使用存储在查找表(lut)中的第一变换矩阵来导出第二变换矩阵。通过这样做,可以抑制lut的大小的增大。因此,可以抑制正交变换/逆正交变换所需的存储器容量的增大。

<导出示例>

图10示出了涉及上述操作的变换矩阵导出示例的列表。注意,用于导出的变换矩阵(第一变换矩阵)也被称为基础变换矩阵tbase。基础变换矩阵的变换类型也被称为基础变换类型或第一变换类型。此外,要导出的变换矩阵(第二变换矩阵)的变换类型也被称为第二变换类型。

在图10所示的表中,除了项目名称的最上一行之外从顶部起的第一行示例的导出聚焦于第一变换类型的最低阶行向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。

在这种情况下,导出单元翻转第一变换矩阵以导出第二变换矩阵。更具体地,导出单元使用dst7的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵以导出flipdst7的变换矩阵。由于dst7的变换矩阵的0阶行向量的波形是增大型,所以导出的flipdst7的变换矩阵的0阶行向量的波形是减小型。因此,可以用flipdst7的变换矩阵替换具有0阶行向量的减小型波形的dct8的变换矩阵。

通过应用这种导出,变得不需要准备dct8的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型(uniquetransformtype)的数目。也就是说,可以抑制lut大小的增大。此外,通过使用导出的第二变换类型(flipdst7)的变换矩阵执行正交变换/逆正交变换,可以获得与使用dct8的变换矩阵进行正交变换/逆正交变换的情况类似的编码效率。此外,在这种情况下,可以通过一次操作导出第二变换矩阵(减小型替换变换矩阵)。

此外,第一行示例下方一行的示例(从顶部起的第二行示例)的导出聚焦于第一变换类型的最低阶列向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。

在这种情况下,导出单元对第一变换矩阵进行转置以导出第二变换矩阵。更具体地,导出单元使用dst7的变换矩阵作为基础变换矩阵tbase,并且对变换矩阵进行转置以导出trdst7的变换矩阵。由于dst7的变换矩阵的0阶列向量的波形是人字型,因此导出的trdst7的变换矩阵的0阶行向量的波形是人字型。因此,可以用trdst7的变换矩阵替换具有0阶行向量的人字型波形的dst1的变换矩阵。

通过应用这样的导出,变得不需要准备dst1的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增大。此外,通过使用导出的第二变换类型(trdst7)的变换矩阵执行正交变换/逆正交变换,可以获得与使用dst1的变换矩阵进行正交变换/逆正交变换的情况类似的编码效率。此外,在这种情况下,可以通过一次操作导出第二变换矩阵(人字形替换变换矩阵)。

此外,第二行示例下方一行的示例(从顶部起的第三行示例)的导出聚焦于成对的dct与dst之间的特性。更具体地,在要配对的dct/dst(例如,dst7与dct8)之间,关注如下点:偶数编号的行向量是轴对称的,而奇数编号的行向量是点对称的。

在这种情况下,导出单元翻转第一变换矩阵,并且反转翻转后的第一变换矩阵的奇数编号的行向量的符号,以导出第二变换矩阵。更具体地,导出单元使用dst7的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵,并且进一步反转奇数阶行向量的符号以导出dct8的变换矩阵。注意,行向量符号反转简单地通过变换行向量的每个元素的最高有效位来执行。当然,可以用导出的dct8的变换矩阵来替换具有0阶行向量的减小型波形的dst8的变换矩阵。

通过应用这种导出,变得不需要准备dct8的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增大。此外,当然,通过使用导出的第二变换类型(dct8)的变换矩阵来执行正交变换/逆正交变换,可以获得与使用dct8的变换矩阵进行正交变换/逆正交变换的情况相同的编码效率。此外,在这种情况下,可以通过两次操作来导出第二变换矩阵(要配对的替换变换矩阵)。

此外,与从顶部起的第一行示例的情况类似,第三行示例下方一行的示例(从顶部起的第四行示例)的导出聚焦于第一变换类型的最低阶行向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。

在这种情况下,导出单元翻转第一变换矩阵以导出第二变换矩阵。更具体地,导出单元使用dct8的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵以导出flipdct8的变换矩阵。由于dct8的变换矩阵的0阶行向量的波形是减小型,所以导出的flipdct8的变换矩阵的0阶行向量的波形是增大型。因此,可以用flipdct8的变换矩阵替换具有0阶行向量的增大型波形的dst7的变换矩阵。

通过应用这样的导出,变得不需要准备dst7的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增大。此外,通过使用导出的第二变换类型的变换矩阵(flipdct8)执行正交变换/逆正交变换,可以获得与使用dst7的变换矩阵进行正交变换/逆正交变换的情况类似的编码效率。此外,在这种情况下,可以通过一次操作导出第二变换矩阵(减小型替换变换矩阵)。

此外,第四行示例下方一行的示例(从顶部起的第五行示例)的导出聚焦于第一变换类型的最高阶列向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。

在这种情况下,导出单元翻转第一变换矩阵,并且对翻转后的第一变换矩阵进行转置,以导出第二变换矩阵。更具体地,导出单元使用dct8的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵,并且进一步转置变换矩阵以导出trflipdct8的变换矩阵。由于dct8的变换矩阵的最高阶列向量的波形是人字型,所以所导出的trflipdct8的变换矩阵的0阶行向量的波形是人字型。因此,可以用trflipdct8的变换矩阵替换具有0阶行向量的人字型波形的dst1的变换矩阵。

通过应用这样的导出,变得不需要准备dst1的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增大。此外,通过使用导出的第二变换类型(trflipdct8)的变换矩阵执行正交变换/逆正交变换,可以获得与使用dst1的变换矩阵进行正交变换/逆正交变换的情况类似的编码效率。此外,在这种情况下,可以通过两次操作来导出第二变换矩阵(人字形替换变换矩阵)。

此外,在第五行示例下方一行的示例(从顶部起的第六行示例)的导出聚焦于成对的dct与dst之间的特性,类似于从顶部起的第三行示例的情况。更具体地,在要配对的dct/dst(例如,dct8与dst7)之间,关注如下点:偶数编号的行向量是轴对称的,而奇数编号的行向量是点对称的。

在这种情况下,导出单元翻转第一变换矩阵,并且反转翻转后的第一变换矩阵的奇数编号的行向量的符号,以导出第二变换矩阵。更具体地,导出单元使用dct8的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵,并且进一步反转奇数阶行向量的符号以导出dst7的变换矩阵。当然,可以用导出的dst7的变换矩阵来替换具有0阶行向量的增大型波形的dst7的变换矩阵。

通过应用这样的导出,变得不需要准备dst7的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增大。此外,当然,通过使用导出的第二变换类型(dst7)的变换矩阵执行正交变换/逆正交变换,可以获得与使用dst7的变换矩阵进行正交变换/逆正交变换的情况相同的编码效率。此外,在这种情况下,可以通过两次操作来导出第二变换矩阵(要配对的替换变换矩阵)。

此外,第六行示例下方一行的示例(从顶部起的第七行示例)的导出聚焦于第一变换类型的最低阶列向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。

在这种情况下,导出单元转置第一变换矩阵以导出第二变换矩阵。更具体地,导出单元使用dct2的变换矩阵作为基础变换矩阵tbase,并且对变换矩阵进行转置以导出dct3的变换矩阵。由于dct2的变换矩阵的0阶列向量的波形是减小型,所以导出的dct3的变换矩阵的0阶行向量的波形是减小型。因此,可以用dct3的变换矩阵替换具有0阶行向量的减小型波形的dct8的变换矩阵。

通过应用这种导出,变得不需要准备dct8的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增大。此外,通过使用导出的第二变换类型(dct3)的变换矩阵执行正交变换/逆正交变换,可以获得与使用dct8的变换矩阵进行正交变换/逆正交变换的情况类似的编码效率。此外,在这种情况下,可以通过一次操作导出第二变换矩阵(减小型替换变换矩阵)。

此外,第七行示例下方一行的示例(从顶部起的第八行示例)的导出聚焦于第一变换类型的最高阶列向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。

在这种情况下,导出单元对第一变换矩阵进行转置,并且翻转转置后的第一变换矩阵以导出第二变换矩阵。更具体地,导出单元使用dct2的变换矩阵作为基础变换矩阵tbase,并且对变换矩阵进行转置,并且在行方向上翻转变换矩阵,以导出flipdct3的变换矩阵。由于dct2的变换矩阵的最高阶列向量的波形是人字型,所以导出的flipdct3的变换矩阵的0阶行向量的波形是增大型。因此,可以用flipdct3的变换矩阵替换具有0阶行向量的增大型波形的dst7的变换矩阵。

通过应用这样的导出,变得不需要准备dst7的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增大。此外,通过使用导出的第二变换类型(flipdct3)的变换矩阵执行正交变换/逆正交变换,可以获得与使用dst7的变换矩阵进行正交变换/逆正交变换的情况类似的编码效率。此外,在这种情况下,可以通过两次操作来导出第二变换矩阵(增大型替换变换矩阵)。

注意,上述导出示例中的每一个可以独立地执行,或者可以以多个导出示例的组合来执行。

<图像编码装置>

接下来,将描述用于导出上述变换矩阵的配置。图11是示出作为应用了本技术的图像处理设备的一个模式的图像编码装置的配置示例的框图。图11中所示的图像编码装置100是对运动图像的图像数据进行编码的装置。例如,图像编码装置100实现非专利文献1、非专利文献3或非专利文献4中描述的技术,并且通过符合前述文献中的任何一个中描述的标准的方法来对运动图像的图像数据进行编码。

注意,图11示出了主要处理单元、数据流等,并且图11中示出的内容不必然是全部。即,在图像编码装置100中,可以存在未在图11中被示出为块的处理单元,或者可以存在未在图11中被示出为箭头等的处理或数据流。这在用于描述图像编码装置100中的处理单元等的其他附图中是类似的。

如图11所示,图像编码装置100包括控制单元101、重新排列缓冲器111、计算单元112、正交变换单元113、量化单元114、编码单元115、累积缓冲器116、逆量化单元117、逆正交变换单元118、计算单元119、环内滤波单元120、帧存储器121、预测单元122和速率控制单元123。

<控制单元>

控制单元101基于外部或预先指定的处理单位的块大小,以处理为单位将由重新排列缓冲器111保持的运动图像数据划分成块(cu、pu、变换块等)。此外,控制单元101基于例如率失真优化(rdo)来确定要提供给每个块的编码参数(报头信息hinfo、预测模式信息pinfo、变换信息tinfo、滤波器信息finfo等)。

下面将描述这些编码参数的详情。在确定上述编码参数之后,控制单元101将编码参数提供给每个块。具体地,编码参数如下。

报头信息hinfo被提供给每个块。

预测模式信息pinfo被提供给编码单元115和预测单元122。

变换信息tinfo被提供给编码单元115、正交变换单元113、量化单元114、逆量化单元117和逆正交变换单元118。

滤波器信息finfo被提供给环内滤波单元120。

<重新排列缓冲器>

运动图像数据的每个字段(输入图像)按照再现顺序(显示顺序)被输入到图像编码装置100。重新排列缓冲器111以其再现顺序(显示顺序)获取并且保持(存储)每个输入图像。重新排列缓冲器111基于控制单元101的控制,以编码顺序(解码顺序)重新排列输入图像,或者以处理为单位将输入图像划分为块。重新排列缓冲器111将经处理的输入图像提供给计算单元112。此外,重新排列缓冲器111还将输入图像(原始图像)提供给预测单元122和环内滤波单元120。

<计算单元>

计算单元112使用与以处理为单位的块对应的图像i以及从预测单元122提供的预测图像p作为输入,如下面的表达式(6)所示从图像i中减去预测图像p以导出预测残差d,并且将预测残差d提供给正交变换单元113。

[数学式4]

d=i-p…(6)

<正交变换单元>

正交变换单元113使用从计算单元112提供的预测残差d以及从控制单元101提供的变换信息tinfo作为输入,并且基于变换信息tinfo对预测残差d进行正交变换以导出变换系数coeff。正交变换单元113将获得的变换系数coeff提供给量化单元114。

<量化单元>

量化单元114使用从正交变换单元113提供的变换系数coeff以及从控制单元101提供的变换信息tinfo作为输入,并且基于变换信息tinfo来缩放(量化)变换系数coeff。注意,该量化的速率由速率控制单元123控制。量化单元114将通过量化而获得的量化变换系数(即,量化变换系数水平level)提供给编码单元115和逆量化单元117。

<编码单元>

编码单元115使用从量化单元114提供的量化变换系数水平level、从控制单元101提供的各种编码参数(报头信息hinfo、预测模式信息pinfo、变换信息tinfo、滤波器信息finfo等)、从环内滤波单元120提供的关于滤波器的信息(例如,滤波器系数)、以及从预测单元122提供的关于最佳预测模式的信息作为输入。编码单元115对量化变换系数水平level进行可变长度编码(例如,算术编码),以生成位串(编码数据)。

此外,编码单元115从量化变换系数水平level导出残差信息rinfo,并且对残差信息rinfo进行编码以生成位串。

此外,编码单元115将从环内滤波单元120提供的关于滤波器的信息包括到滤波器信息finfo中,并且将从预测单元122提供的关于最佳预测模式的信息包括到预测模式信息pinfo中。然后,编码单元115对上述各种编码参数(报头信息hinfo、预测模式信息pinfo、变换信息tinfo、滤波器信息finfo等)进行编码以生成位串。

此外,编码单元115对如上所述的那样生成的各种类型的信息的位串进行复用,以生成编码数据。编码单元115将编码数据提供给累积缓冲器116。

<累积缓冲器>

累积缓冲器116临时存储由编码单元115获得的编码数据。累积缓冲器116在预定定时处将所存储的编码数据作为比特流等输出到图像编码装置100的外部。例如,通过任意记录介质、任意传输介质、任意信息处理装置等将编码数据传输到解码侧。也就是说,累积缓冲器116也是传送编码数据(比特流)的传送单元。

<逆量化单元>

逆量化单元117执行关于逆量化的处理。例如,逆量化单元117使用从量化单元114提供的量化变换系数水平level以及从控制单元101提供的变换信息tinfo作为输入,并且基于变换信息tinfo对量化变换系数水平level的值进行缩放(逆量化)。注意,逆量化是在量化单元114中执行的量化的逆处理。逆量化单元117将通过逆量化而获得的变换系数coeff_iq提供给逆正交变换单元118。

<逆正交变换单元>

逆正交变换单元118执行关于逆正交变换的处理。例如,逆正交变换单元118使用从逆量化单元117提供的变换系数coeff_iq以及从控制单元101提供的变换信息tinfo作为输入,并且基于变换信息tinfo对变换系数coeff_iq进行逆正交变换以导出预测残差d'。注意,逆正交变换是在正交变换单元113中执行的正交变换的逆处理。逆正交变换单元118将通过逆正交变换获得的预测残差d'提供给计算单元119。注意,由于逆正交变换单元118类似于解码侧的逆正交变换单元(将在下面描述),所以可以将针对解码侧给出的描述(将在下面描述)应用于逆正交变换单元118。

<计算单元>

计算单元119使用从逆正交变换单元118提供的预测残差d'以及从预测单元122提供的预测图像p作为输入。计算单元119将预测残差d'和与预测残差d'对应的预测图像p相加,以导出局部解码图像rlocal。计算单元119将导出的局部解码图像rlocal提供给环内滤波单元120和帧存储器121。

<环内滤波单元>

环内滤波单元120执行关于环内滤波处理的处理。例如,环内滤波单元120使用从计算单元119提供的局部解码图像rlocal、从控制单元101提供的滤波器信息finfo、以及从重新排列缓冲器111提供的输入图像(原始图像)作为输入。注意,输入到环内滤波单元120的信息可以是除上述信息之外的信息。例如,可以根据需要将诸如预测模式、运动信息、代码量目标值、量化参数qp、图片类型、块(cu、ctu等)的信息输入到环内滤波单元120。

环内滤波单元120基于滤波器信息finfo适当地对局部解码图像rlocal执行滤波处理。环内滤波单元120还根据需要使用输入图像(原始图像)和用于滤波处理的其他输入信息。

例如,如非专利文献1中所描述的,环内滤波单元120按双边滤波器、去块滤波器(dbf)、自适应偏移滤波器(采样自适应偏移(sao))和自适应环路滤波器(自适应环路滤波器(alf))的顺序应用这四个环内滤波器。注意,应用哪个滤波器以及以何种顺序应用滤波器是任意的,并且可以适当地选择。

当然,由环内滤波单元120执行的滤波处理是任意的,并且不限于上述示例。例如,环内滤波单元120可以应用维纳(wiener)滤波器等。

环内滤波单元120将经滤波的局部解码图像rlocal提供给帧存储器121。注意,在将诸如滤波器系数的关于滤波器的信息传送到解码侧的情况下,环内滤波单元120将关于滤波器的信息提供给编码单元115。

<帧存储器>

帧存储器121执行关于与图像有关的数据的存储的处理。例如,帧存储器121使用从计算单元119提供的局部解码图像rlocal以及从环内滤波单元120提供的经滤波的局部解码图像rlocal作为输入,并且保持(存储)这些输入。此外,帧存储器121使用局部解码图像rlocal针对每个图片单位重构并且保持解码图像r(将解码图像r存储在帧存储器121中的缓冲器中)。帧存储器121响应于来自预测单元122的请求将解码图像r(或其部分)提供给预测单元122。

<预测单元>

预测单元122执行关于预测图像的生成的处理。例如,预测单元122使用从控制单元101提供的预测模式信息pinfo、从重新排列缓冲器111提供的输入图像(原始图像)以及从帧存储器121中读取的解码图像r(或其部分)作为输入。预测单元122使用预测模式信息pinfo和输入图像(原始图像)执行诸如帧间预测、帧内预测等的预测处理,将解码图像r用作参考图像执行预测,基于预测结果来执行运动补偿处理,并且生成预测图像p。预测单元122将生成的预测图像p提供给计算单元112和119。此外,预测单元122根据需要将通过上述处理选择的预测模式(即,关于最佳预测模式的信息)提供给编码单元115。

<速率控制单元>

速率控制单元123执行关于速率控制的处理。例如,速率控制单元123基于累积在累积缓冲器116中的编码数据的代码量来控制量化单元114的量化操作的速率,使得不会发生上溢或下溢。

在具有上述配置的图像编码装置100中,正交变换单元113作为导出单元和正交变换单元执行应用了上述本技术的处理。此外,编码单元115作为编码单元执行应用了上述本技术的处理。此外,逆正交变换单元118作为逆正交变换单元和导出单元执行应用了上述本技术的处理。因此,图像编码装置100能够抑制正交变换/逆正交变换所需的存储器容量的增大。

<正交变换单元的详情>

图12是示出图11中的正交变换单元113的主要配置示例的框图。如图12所示,正交变换单元113包括开关151、一次变换单元152和二次变换单元153。

开关151使用预测残差d以及与分量标识符compid对应的变换跳过标志ts_flag[compid]作为输入,并且在变换跳过标志ts_flag[compid]的值为no_ts(=0)的情况下(在未应用变换跳过的情况下)将预测残差d提供给一次变换单元152。此外,在变换跳过标志ts_flag[compid]的值是2d_ts(=1)的情况下(在该值指示应用二维变换跳过的情况下),开关151跳过一次变换单元152和二次变换单元153,并且将预测残差d输出到正交变换单元113的外部(将预测残差d提供给量化单元114)作为变换系数coeff。

一次变换单元152执行关于一次变换的处理,该一次变换是诸如正交变换的预定变换处理。例如,一次变换单元152使用分量标识符compid、分量标识符compid的自适应一次变换标志apt_flag[compid]、分量标识符compid的一次变换标识符pt_idx[compid]、预测模式信息pinfo、变换块的大小(宽度的对数值log2tbwsize和高度的对数值log2tbhsize)以及预测残差d作为输入。注意,变换块的宽度tbwsize也被称为tbwidth,并且其对数值也被称为log2tbwidth。类似地,变换块的高度tbhsize也被称为tbheight,并且其对数值也被称为log2tbheight。

一次变换单元152通过参考预测模式信息pinfo、分量标识符compid、分量标识符compid的自适应一次变换标志apt_flag[compid]和分量标识符compid的一次变换标识符pt_idx[compid],来选择与分量标识符compid对应的一次水平变换的变换类型trtypeh(和指示变换类型的一次水平变换类型标识符trtypeidxh)以及一次垂直变换的变换类型trtypev(和指示变换类型的一次垂直变换类型标识符trtypeidxv)。

此外,一次变换单元152针对预测残差d、执行由一次水平变换类型标识符trtypeidxh(或一次水平变换类型trtypeh)和变换块的宽度log2tbwsize确定的一次水平变换、以及由一次垂直变换类型标识符trtypeidxv(或一次垂直变换类型trtypev)和变换块的高度log2tbhsize确定的一次垂直变换,以导出变换系数coeff_p。一次水平变换是水平一维正交变换,并且一次垂直变换是垂直一维正交变换。

一次变换单元152将导出的变换系数coeff_p提供给二次变换单元153。

二次变换单元153执行关于二次变换的处理,该二次变换是诸如正交变换的预定变换处理。例如,二次变换单元153使用二次变换标识符st_idx、指示扫描变换系数的方法的扫描标识符scanidx、以及变换系数coeff_p作为输入。二次变换单元153基于二次变换标识符st_idx和扫描标识符scanidx对变换系数coeff_p执行二次变换,以导出二次变换之后的变换系数coeff_s。

更具体地,在二次变换标识符st_idx指示应用二次变换(st_idx>0)的情况下,二次变换单元153针对变换系数coeff_p执行与二次变换标识符st_idx对应的二次变换处理,以导出二次变换之后的变换系数coeff_s。

二次变换单元153将二次变换系数coeff_s输出到正交变换单元113的外部(将二次变换系数coeff_s提供给量化单元114)作为变换系数coeff。

此外,在二次变换标识符st_idx指示不应用二次变换(st_idx==0)的情况下,二次变换单元153跳过二次变换,并且将一次变换之后的变换系数coeff_p输出到正交变换单元113的外部(将变换系数coeff_p提供给量化单元114)作为变换系数coeff(二次变换之后的变换系数coeff_s)。

在具有上述配置的正交变换单元113中,一次变换单元152作为导出单元和正交变换单元执行应用了上述本技术的处理。即,导出单元使用第一变换矩阵导出第二变换矩阵,并且正交变换单元使用由导出单元导出的第二变换矩阵对预测残差进行一次变换。因此,可以抑制一次变换所需的存储器容量的增大。

注意,如上所述,一次变换单元152执行一次水平变换和一次垂直变换作为一次变换。即,导出单元导出用于水平一维正交变换的第二变换矩阵和用于垂直一维正交变换的第二变换矩阵,并且正交变换单元使用由导出单元导出的用于水平一维正交变换的第二变换矩阵来执行水平一维正交变换,并且进一步使用由导出单元导出的用于垂直一维正交变换的第二变换矩阵来执行垂直一维正交变换,作为一次变换。因此,可以抑制执行水平一维正交变换和垂直一维正交变换的一次变换所需的存储器容量的增大。

<图像编码处理的流程>

接下来,将描述由上述图像编码装置100执行的每个处理的流程。首先,将参照图13中的流程图描述图像编码处理的流程的示例。

当开始图像编码处理时,在步骤s101中,重新排列缓冲器111由控制单元101控制,并且将输入的运动图像数据的帧从显示顺序重新排列成编码顺序。

在步骤s102中,控制单元101对由重新排列缓冲器111保持的输入图像设定处理单位(执行块划分)。

在步骤s103中,控制单元101确定(设定)针对由重新排列缓冲器111保持的输入图像的编码参数。

在步骤s104中,预测单元122执行预测处理,并生成最佳预测模式的预测图像等。例如,在预测处理中,预测单元122执行帧内预测以生成最佳帧内预测模式的预测图像,执行帧间预测以生成最佳帧间预测模式的预测图像,并且基于成本函数值等从预测图像中选择最佳预测模式。

在步骤s105中,计算单元112计算输入图像与在步骤s104中通过预测处理选择的最佳模式的预测图像之间的差异。即,计算单元112生成输入图像与预测图像之间的预测残差d。这样得到的预测残差d与原始图像数据相比,数据量减少。因此,与对图像进行原样编码的情况相比,可以压缩数据量。

在步骤s106中,正交变换单元113对通过步骤s105中的处理生成的预测残差d执行正交变换处理,以导出变换系数coeff。

在步骤s107中,量化单元114通过使用由控制单元101等计算的量化参数来量化通过步骤s106中的处理获得的变换系数coeff,以导出量化变换系数水平level。

在步骤s108中,逆量化单元117利用与步骤s107中的量化的特性对应的特性,对通过步骤s107中的处理生成的量化变换系数水平level进行逆量化,以导出变换系数coeff_iq。

在步骤s109中,逆正交变换单元118通过与步骤s106的正交变换处理对应的方法,对通过步骤s108的处理得到的变换系数coeff_iq进行逆正交变换,以导出预测残差d'。注意,由于逆正交变换处理类似于在解码侧执行的逆正交变换处理(将在下面描述),所以可以将对解码侧的描述(将在下面给出)应用于步骤s109中的逆正交变换处理。

在步骤s110中,计算单元119将通过步骤s104的预测处理得到的预测图像与通过步骤s109的处理导出的预测残差d'相加,以生成局部解码图像。

在步骤s111中,环内滤波单元120对通过步骤s110中的处理得到的局部解码图像执行环内滤波处理。

在步骤s112中,帧存储器121存储通过步骤s110中的处理导出的局部解码图像以及在步骤s112中被滤波的局部解码图像。

在步骤s113中,编码单元115对通过步骤s107中的处理获得的量化变换系数水平level进行编码。例如,编码单元115通过算术编码等对作为与图像有关的信息的量化变换系数水平level进行编码,以生成编码数据。此外,此时,编码单元115对各种编码参数(报头信息hinfo、预测模式信息pinfo和变换信息tinfo)进行编码。此外,编码单元115从量化变换系数水平level导出残差信息rinfo,并且对残差信息rinfo进行编码。

在步骤s114中,累积缓冲器116累积由此获得的编码数据,并且将编码数据输出到图像编码装置100的外部,例如,作为比特流。例如,经由传输路径或记录介质将比特流传送到解码侧。此外,速率控制单元123根据需要执行速率控制。

当步骤s114中的处理结束时,图像编码处理结束。

在上述流程的图像编码处理中,应用了上述本技术的处理作为步骤s106的处理被执行。此外,应用了上述本技术的处理作为步骤s109的处理被执行。此外,应用了上述本技术的处理作为步骤s113的处理被执行。因此,通过执行该图像编码处理,可以抑制正交变换/逆正交变换所需的存储器容量的增大。

<正交变换处理的流程>

接下来,将参照图14中的流程图描述在图13中的步骤s106中执行的正交变换处理的流程的示例。

当开始正交变换处理时,在步骤s131中,开关151确定变换跳过标志ts_flag是否是2d_ts(在指示二维变换跳过的情况下)(例如,1(真))或者变换量化旁路标志transquant_bypass_flag是否是1(真)。在确定变换跳过标志ts_flag是2d_ts(例如,1(真))或者变换量化旁路标志是1(真)的情况下,正交变换处理结束,并且处理返回到图13。在这种情况下,省略正交变换处理(一次变换和二次变换),并且将输入预测残差d用作变换系数coeff。

此外,在图14的步骤s131中,在确定变换跳过标志ts_flag不是2d_ts(不是二维变换跳过)(例如,0(假))并且变换量化旁路标志transquant_bypass_flag是0(假)的情况下,处理进行到步骤s132。在这种情况下,执行一次变换处理和二次变换处理。

在步骤s132中,一次变换单元152基于利用分量标识符compid指定的自适应一次变换信息对输入的预测残差d执行一次变换处理,以导出一次变换之后的变换系数coeff_p。

在步骤s133中,二次变换单元153对变换系数coeff_p执行二次变换处理,以导出二次变换之后的变换系数coeff_s(变换系数coeff)。

当步骤s133中的处理结束时,正交变换处理结束。

在上述正交变换处理中,应用了上述本技术的处理作为步骤s132的处理被执行。因此,通过执行正交变换处理,可以抑制一次变换所需的存储器容量的增大。

<图像解码装置>

图15是示出作为应用了本技术的图像处理设备的一个模式的图像解码装置的配置的示例的框图。图15中所示的图像解码装置200是对作为图像与预测图像之间的编码预测残差的编码数据进行解码的装置,例如avc或hevc。例如,图像解码装置200实现非专利文献1、非专利文献3或非专利文献4中描述的技术,并且通过与上述文献中的任一文献中记载的标准对应的方法,对作为运动图像的编码图像数据的编码数据进行解码。例如,图像解码装置200对由上述图像编码装置100生成的编码数据(比特流)进行解码。

注意,图15示出了主要处理单元、数据流等,并且图15中示出的内容不必然是全部。即,在图像解码装置200中,可以存在未在图15中被示出为块的处理单元,或者存在未在图15中被示出为箭头等的处理或数据流。这在用于描述图像解码装置200中的处理单元等的其他附图中也是相似的。

在图15中,图像解码装置200包括累积缓冲器211、解码单元212、逆量化单元213、逆正交变换单元214、计算单元215、环内滤波单元216、重新排列缓冲器217、帧存储器218和预测单元219。注意,预测单元219包括帧内预测单元和帧间预测单元(未示出)。图像解码装置200是通过对编码数据(比特流)进行解码来生成运动图像数据的装置。

<累积缓冲器>

累积缓冲器211获取输入到图像解码装置200的比特流,并且保持(存储)该比特流。例如,累积缓冲器211在预定定时处或者在满足预定条件的情况下将累积的比特流提供给解码单元212。

<解码单元>

解码单元212执行关于图像解码的处理。例如,解码单元212使用从累积缓冲器211提供的比特流作为输入,并且根据语法表的定义对来自位串的每个语法元素的语法值执行可变长度解码以导出参数。

从语法元素和语法元素的语法值导出的参数包括例如诸如报头信息hinfo、预测模式信息pinfo、变换信息tinfo、残差信息rinfo和滤波器信息finfo的信息。即,解码单元212从比特流解析(分析和获取)这样的信息。这些信息将在下面描述。

<报头信息hinfo>

报头信息hinfo包括例如报头信息,诸如视频参数集(vps)/序列参数集(sps)/图片参数集(pps)/切片报头(sh)。报头信息hinfo包括例如定义图像大小(宽度picwidth和高度picheight)、位深度(亮度bitdepthy和色度bitdepthc)、色度阵列类型chromaarraytype、cu大小最大值maxcusize/最小值mincusize、四叉树划分的最大深度maxqtdepth/最小深度minqtdepth、二叉树划分的最大深度maxbtdepth/最小深度minbtdepth、变换跳过块的最大值maxtssize(也称为最大变换跳过块大小)、每个编码工具的开/关标志(也称为有效标志)等的信息。

例如,在报头信息hinfo中包括的编码工具的开/关标志的示例包括与以下的变换和量化处理相关的开/关标志。注意,编码工具的开/关标志也可以被解释为指示与编码工具相关的语法是否存在于编码数据中的标志。此外,在开/关标志的值是1(真)的情况下,该值指示编码工具可用。在开/关标志的值是0(假)的情况下,该值指示编码工具不可用。注意,可以反转对标志值的解释。

分量间预测使能标志(ccp_enabled_flag)是指示分量间预测(跨分量预测(ccp))是否可用的标志信息。例如,在标志信息是“1”(真)的情况下,标志信息指示分量间预测可用。在标志信息为“0”(假)的情况下,标志信息指示分量间预测不可用。

注意,该ccp也被称为分量间线性预测(cclm或cclmp)。

<预测模式信息pinfo>

预测模式信息pinfo例如包括诸如要处理的预测块(pb)的大小信息pbsize(预测块大小)、帧内预测模式信息ipinfo和运动预测信息mvinfo的信息。

帧内预测模式信息ipinfo包括例如jctvc-w1005,7.3.8.5codingunitsyntax(编码单元语法)中的prev_intra_luma_pred_flag、mpm_idx和rem_intra_pred_mode、从该语法导出的亮度帧内预测模式intrapredmodey等。

此外,帧内预测模式信息ipinfo包括例如分量间预测标志(ccp_flag(cclmp_flag))、多类线性预测模式标志(mclm_flag)、色度样本位置类型标识符(chroma_sample_loc_type_idx)、色度mpm标识符(chroma_mpm_idx)、从这些语法导出的亮度帧内预测模式(intrapredmodec)等。

分量间预测标志(ccp_flag(cclmp_flag))是指示是否应用分量间线性预测的标志信息。例如,ccp_flag==1指示应用分量间预测,并且ccp_flag==0指示没有应用分量间预测。

多类线性预测模式标志(mclm_flag)是关于线性预测模式的信息(线性预测模式信息)。更具体地,多类线性预测模式标志(mclm_flag)是指示是否设定多类线性预测模式的标志信息。例如,“0”指示一类模式(单类模式)(例如,cclmp),并且“1”指示二类模式(多类模式)(例如,mclmp)。

色度样本位置类型标识符(chroma_sample_loc_type_idx)是用于标识色度分量的像素位置的类型(也称为色度样本位置类型)的标识符。例如,在作为关于颜色格式的信息的色度阵列类型(chromaarraytype)指示420格式的情况下,如下面的表达式(7)那样地分配色度样本位置类型标识符。

[数学式5]

chroma_sample_loc_type_idx==0:type2

chroma_sample_loc_type_idx=1t:ype3

chroma_sample_loc_type_iidx==2:type0

chroma_sample_loc_type_idx==3:typel

…(7)

注意,色度样本位置类型标识符(chroma_sample_loc_type_idx)作为(通过被存储在)关于色度分量的像素位置的信息(chroma_sample_loc_info())被传送。

色度mpm标识符(chroma_mpm_idx)是指示色度帧内预测模式候选列表(intrapredmodecandlistc)中的哪个预测模式候选将被指定为色度帧内预测模式的标识符。

运动预测信息mvinfo包括例如诸如merge_idx、merge_flag、inter_pred_idc、ref_idx_lx、mvp_lx_flag、x={0,1}、mvd等的信息(例如,参见jctvc-w1005,7.3.8.6predictionunitsyntax(预测单元语法))。

当然,预测模式信息pinfo中包括的信息是任意的,并且可以包括除上述信息以外的信息。

<变换信息tinfo>

变换信息tinfo包括例如以下信息。当然,变换信息tinfo中所包括的信息是任意的,并且可以包括除上述信息以外的信息:

待处理的变换块的宽度tbwsize和高度tbhsize(或者可以是tbwsize和tbhsize的以2为底的对数值log2tbwsize和log2tbhsize);

变换跳过标志(ts_flag):指示是否跳过(逆)一次变换和(逆)二次变换的标志;

扫描标识符(scanidx);

量化参数(qp);以及

量化矩阵(scaling_matrix(例如,jctvc-w1005,7.3.4scalinglistdatasyntax(缩放列表数据语法)))。

<残差信息rinfo>

残差信息rinfo(例如,参见jctvc-w1005的7.3.8.11residualcodingsyntax(残差编码语法))包括例如以下语法:

cbf(coded_block_flag):残差数据存在/不存在标志;

last_sig_coeff_x_pos:最后一个非零系数x坐标;

last_sig_coeff_y_pos:最后一个非零系数y坐标;

coded_sub_block_flag:子块非零系数存在/不存在标志;

sig_coeff_flag:非零系数存在/不存在标志;

gr1_flag:指示非零系数的级别是否大于1的标志(也称为gr1标志);

gr2_flag:指示非零系数的级别是否大于2的标志(也称为gr2标志);

sign_flag:指示非零系数的正/负的符号(也称为符号码);

coeff_abs_level_remaining:非零系数的残差级别(也称为非零系数残差级别);

等等。

当然,包括在残差信息rinfo中的信息是任意的,并且可以包括除了上述信息之外的信息。

<滤波器信息finfo>

滤波器信息finfo包括例如关于以下滤波处理的控制信息:

关于去块滤波器(dbf)的控制信息;

关于像素自适应偏移(sao)的控制信息;

关于自适应环路滤波器(alf)的控制信息;以及

关于其他线性和非线性滤波器的控制信息。

更具体地,滤波器信息finfo例如包括应用每个滤波器的图片、用于指定图片中的区域的信息、每个cu的滤波器开/关控制信息、切片和图块边界的滤波器开/关控制信息等。当然,包括在滤波信息finfo中的信息是任意的,并且可以包括除了上述信息之外的信息。

返回到解码单元212的描述,解码单元212参考残差信息rinfo,并且导出每个变换块中的每个系数位置处的量化变换系数水平level。解码单元212将量化变换系数水平level提供给逆量化单元213。

此外,解码单元212将经解析的报头信息hinfo、预测模式信息pinfo、量化变换系数水平level、变换信息tinfo和滤波器信息finfo提供给每个块。具体描述如下。

将报头信息hinfo提供给逆量化单元213、逆正交变换单元214、预测单元219和环内滤波单元216。

将预测模式信息pinfo提供给逆量化单元213和预测单元219。

将变换信息tinfo提供给逆量化单元213和逆正交变换单元214。

将滤波器信息finfo提供给环内滤波单元216。

当然,上述示例是示例,并且本实施方式不限于该示例。例如,可以将每个编码参数提供给任意处理单元。此外,可以将其他信息提供给任意处理单元。

<逆量化单元>

逆量化单元213执行关于逆量化的处理。例如,逆量化单元213使用从解码单元212提供的变换信息tinfo和量化变换系数水平level作为输入,并且基于变换信息tinfo对量化变换系数水平level的值进行缩放(逆量化),以导出逆量化之后的变换系数coeff_iq。

注意,该逆量化作为量化单元114的量化的逆处理而被执行。此外,逆量化是与逆量化单元117执行的逆量化类似的处理。即,逆量化单元117执行与逆量化单元213类似的处理(逆量化)。

逆量化单元213将导出的变换系数coeff_iq提供给逆正交变换单元214。

<逆正交变换单元>

逆正交变换单元214执行关于逆正交变换的处理。例如,逆正交变换单元214使用从逆量化单元213提供的变换系数coeff_iq以及从解码单元212提供的变换信息tinfo作为输入,并且基于变换信息tinfo对变换系数coeff_iq进行逆正交变换处理,以导出预测残差d'。

注意,该逆正交变换作为正交变换单元113的正交变换的逆处理而被执行。此外,逆正交变换是与逆正交变换单元118执行的逆正交变换类似的处理。即,逆正交变换单元118执行与逆正交变换单元214类似的处理(逆正交变换)。

逆正交变换单元214将导出的预测残差d'提供给计算单元215。

<计算单元>

计算单元215执行关于添加关于图像的信息的处理。例如,计算单元215使用从逆正交变换单元214提供的预测残差d'以及从预测单元219提供的预测图像p作为输入。计算单元215将预测残差d'和与预测残差d'对应的预测图像p(预测信号)相加,以导出局部解码图像rlocal,如下面的表达式(8)所示。

[数学式6]

rlocal=d’+p…(8)

计算单元215将导出的局部解码图像rlocal提供给环内滤波单元216和帧存储器218。

<环内滤波单元>

环内滤波单元216执行关于环内滤波处理的处理。例如,环内滤波单元216使用从计算单元215提供的局部解码图像rlocal以及从解码单元212提供的滤波器信息finfo作为输入。注意,输入到环内滤波单元216的信息可以是除上述信息之外的信息。

环内滤波单元216基于滤波器信息finfo适当地对局部解码图像rlocal进行滤波处理。

例如,如非专利文献1中所描述的那样,环内滤波单元216按双边滤波器、去块滤波器(dbf)、自适应偏移滤波器(采样自适应偏移(sao))和自适应环路滤波器(自适应环路滤波器(alf))的顺序应用这四个环内滤波器。注意,应用哪个滤波器以及以何种顺序应用滤波器是任意的,并且可以适当地选择。

环内滤波单元216执行与编码侧(例如,通过图像编码装置100的环内滤波单元120)执行的滤波处理对应的滤波处理。当然,由环内滤波单元216执行的滤波处理是任意的,并且不限于上述示例。例如,环内滤波单元216可以应用维纳滤波器等。

环内滤波单元216将经滤波的局部解码图像rlocal提供给重新排列缓冲器217和帧存储器218。

<重新排列缓冲器>

重新排列缓冲器217使用从环内滤波单元216提供的局部解码图像rlocal,并且保持(存储)局部解码图像rlocal。重新排列缓冲器217使用局部解码图像rlocal针对每个图片单位重构解码图像r,并且将解码图像r保持(存储)(在缓冲器中)。重新排列缓冲器217将获得的解码图像r从解码顺序重新排列成再现顺序。重新排列缓冲器217将重新排列后的解码图像r组输出到图像解码装置200的外部作为运动图像数据。

<帧存储器>

帧存储器218执行关于与图像有关的数据的存储的处理。例如,帧存储器218使用从计算单元215提供的局部解码图像rlocal作为输入,针对每个图片单位重构解码图像r,并且将解码图像r存储在帧存储器218中的缓冲器中。

此外,帧存储器218使用从环内滤波单元216提供的经环内滤波的局部解码图像rlocal作为输入,针对每个图片单位重构解码图像r,并且将解码图像r存储在帧存储器218的缓冲器中。帧存储器218适当地将存储的解码图像r(或其部分)作为参考图像提供给预测单元219。

注意,帧存储器218可以存储与解码图像的生成有关的报头信息hinfo、预测模式信息pinfo、变换信息tinfo、滤波器信息finfo等。

<预测单元>

预测单元219执行关于预测图像的生成的处理。例如,预测单元219使用从解码单元212提供的预测模式信息pinfo作为输入,并且通过由预测模式信息pinfo指定的预测方法进行预测,以导出预测图像p。在导出时,预测单元219使用存储在帧存储器218中的滤波之前或之后的解码图像r(或其部分)作为参考图像,解码图像r由预测模式信息pinfo指定。预测单元219将导出的预测图像p提供给计算单元215。

在具有上述配置的图像解码装置200中,逆正交变换单元214作为导出单元和逆正交变换单元执行应用了上述本技术的处理。此外,解码单元212作为解码单元执行应用了上述本技术的处理。因此,图像解码装置200能够抑制逆正交变换所需的存储器容量的增大。

<逆正交变换单元的详情>

图16是示出图15中的逆正交变换单元214的主要配置示例的框图。如图16中所示,逆正交变换单元214包括开关251、逆二次变换单元252和逆一次变换单元253。

开关251使用变换系数coeff_iq和变换跳过标志ts_flag[compid]作为输入。在变换跳过标志ts_flag[compid]的值是no_ts(=0)的情况下,即,在未应用变换跳过的情况下,开关251将变换系数coeff_iq提供给逆二次变换单元252。此外,在变换跳过标志ts_flag[compid]的值是2d_ts(=1)的情况下,即,在应用二维变换跳过的情况下,开关251跳过逆二次变换单元252和逆一次变换单元253,并且将变换系数coeff_iq输出到逆正交变换单元214的外部(提供给计算单元215)作为预测残差d'。

逆二次变换单元252执行关于逆二次变换的处理,该逆二次变换是在编码侧(例如,由图像编码装置100的二次变换单元153)执行的二次变换的逆处理。例如,逆二次变换单元252使用二次变换标识符st_idx、指示扫描变换系数的方法的扫描标识符scanidx和从开关251提供的变换系数coeff_iq作为输入。

逆二次变换单元252基于二次变换标识符st_idx和扫描标识符scanidx对变换系数coeff_iq执行逆二次变换,以导出逆二次变换之后的变换系数coeff_is。

更具体地,在二次变换标识符st_idx指示应用逆二次变换(st_idx>0)的情况下,逆二次变换单元252针对变换系数coeff_iq执行与二次变换标识符st_idx对应的逆二次变换处理,以导出二次变换之后的变换系数coeff_is。逆二次变换单元252将逆二次变换之后的变换系数coeff_is提供给逆一次变换单元253。

注意,在二次变换标识符st_idx指示未应用逆二次变换(st_idx==0)的情况下,逆二次变换单元252跳过逆二次变换,并且将变换系数coeff_iq作为逆二次变换之后的变换系数coeff_is提供给逆一次变换单元253。

逆一次变换单元253执行与逆一次变换相关的处理,该逆一次变换是在编码侧(例如,由图像编码装置100的一次变换单元152)执行的一次变换的逆处理。例如,逆一次变换单元253使用分量标识符compid、分量标识符compid的自适应一次变换标志apt_flag[compid]、分量标识符compid的一次变换标识符pt_idx[compid]、预测模式信息pinfo、变换块的大小(宽度的对数值log2tbwsize和高度的对数值log2tbhsize)以及逆二次变换之后的变换系数coeff_is作为输入。

逆一次变换单元253通过参考预测模式信息pinfo、分量标识符compid、分量标识符compid的自适应一次变换标志apt_flag[compid]和分量标识符compid的一次变换标识符pt_idx[compid],来选择与分量标识符compid对应的逆一次水平变换的变换类型trtypeh(和指示该变换类型的逆一次水平变换类型标识符trtypeidxh)和逆一次垂直变换的变换类型trtypev(和指示该变换类型的逆一次垂直变换类型标识符trtypeidxv)。

此外,逆一次变换单元253针对逆二次变换之后的变换系数coeff_is,执行由逆一次垂直变换类型标识符trtypeidxv(或逆一次垂直变换类型trtypev)和变换块的高度log2tbhsize定义的逆一次垂直变换以及由逆一次水平变换类型标识符trtypeidxh(或逆一次水平变换类型trtypeh)和变换块的宽度log2tbwsize定义的逆一次水平变换,以导出逆一次变换之后的变换系数coeff_ip。逆一次垂直变换是垂直逆一维正交变换,并且逆一次水平变换是水平逆一维正交变换。

逆一次变换单元253将逆一次变换之后的变换系数coeff_ip输出到逆正交变换单元214的外部(提供给计算单元215)作为预测残差d'。

在具有上述配置的逆正交变换单元214中,逆一次变换单元253作为导出单元和逆正交变换单元执行应用了上述本技术的处理。即,导出单元使用第一变换矩阵导出第二变换矩阵,并且逆正交变换单元使用由导出单元导出的第二变换矩阵对逆二次变换结果执行逆一次变换。因此,可以抑制逆一次变换所需的存储器容量的增大。

注意,上述逆一次变换单元253执行逆一次垂直变换和逆一次水平变换作为逆一次变换。即,导出单元导出用于垂直逆一维正交变换的第二变换矩阵和用于水平逆一维正交变换的第二变换矩阵,并且逆正交变换单元使用由导出单元导出的用于垂直逆一维正交变换的第二变换矩阵来执行垂直逆一维正交变换,并且进一步使用由导出单元导出的用于水平逆一维正交变换的第二变换矩阵来执行水平逆一维正交变换,作为逆一次变换。因此,可以抑制执行垂直逆一维正交变换和水平逆一维正交变换的一次变换所需的存储器容量的增大。

<图像解码处理的流程>

接下来,将描述由上述图像解码装置200执行的每个处理的流程。首先,将参照图17中的流程图描述图像解码处理的流程的示例。

当开始图像解码处理时,在步骤s201中,累积缓冲器211获取并且保持(累积)从图像解码装置200的外部提供的编码数据(比特流)。

在步骤s202中,解码单元212对编码数据(比特流)进行解码,以获得量化变换系数水平level。此外,解码单元212通过该解码从编码数据(比特流)中解析(分析和获取)各种编码参数。

在步骤s203中,逆量化单元213对通过步骤s202的处理而获得的量化变换系数水平level执行作为在编码侧进行的量化的逆处理的逆量化,以获得变换系数coeff_iq。

在步骤s204中,逆正交变换单元214对通过步骤s203的处理而得到的变换系数coeff_iq执行作为在编码侧执行的正交变换处理的逆处理的逆正交变换处理,以获得预测残差d'。

在步骤s205中,预测单元219基于在步骤s202中解析的信息,通过在编码侧指定的预测方法执行预测处理,并且例如通过参考存储在帧存储器218中的参考图像来生成预测图像p。

在步骤s206中,计算单元215将通过步骤s204的处理得到的预测残差d'与通过步骤s205的处理得到的预测图像p相加,以导出局部解码图像rlocal。

在步骤s207中,环内滤波单元216对通过步骤s206中的处理获得的局部解码图像rlocal执行内环滤波处理。

在步骤s208中,重新排列缓冲器217使用通过步骤s207中的处理获得的经滤波的局部解码图像rlocal来导出解码图像r,并且将解码图像r组从解码顺序重新排列成再现顺序。将按照再现顺序重新排列的解码图像r组作为运动图像输出到图像解码装置200的外部。

此外,在步骤s209中,帧存储器218存储通过步骤s206中的处理获得的局部解码图像rlocal、以及通过步骤s207中的处理获得的滤波处理之后的局部解码图像rlocal中的至少一个。

当步骤s209中的处理结束时,图像解码处理结束。

在上述流程的图像解码处理中,应用了上述本技术的处理作为步骤s202的处理被执行。此外,应用了上述本技术的处理作为步骤s204的处理被执行。因此,通过执行该图像解码处理,可以抑制逆正交变换所需的存储器容量的增大。

<逆正交变换处理的流程>

接下来,将参照图18的流程图,描述在图17的步骤s204中执行的逆正交变换处理的流程的示例。在开始逆正交变换处理时,在步骤s231中,开关251确定变换跳过标志ts_flag是否为2d_ts(在二维变换跳过的模式下)(例如1(真))或者变换量化旁路标志transquant_bypass_flag是否为1(真)。在确定变换跳过标识符ts_idx是2d_ts或者变换量化旁路标志为1(真)的情况下,逆正交变换处理结束,并且处理返回到图17。在这种情况下,省略逆正交变换处理(逆一次变换和逆二次变换),并且采用变换系数coeff_iq作为预测残差d'。

此外,在步骤s231中,在确定变换跳过标识符ts_idx不是2d_ts(除二维变换跳过之外的模式)(例如,0(假))并且变换量化旁路标志为0(假)的情况下,处理进行到步骤s232。在这种情况下,执行逆二次变换处理和逆一次变换处理。

在步骤s232中,逆二次变换单元252基于二次变换标识符st_idx对变换系数coeff_iq执行逆二次变换处理以导出变换系数coeff_is,并且输出变换系数coeff_is。

在步骤s233中,逆一次变换单元253对变换系数coeff_is执行逆一次变换处理,以导出逆一次变换之后的变换系数coeff_ip(预测残差d')。

当步骤s233中的处理结束时,逆正交变换处理结束。

在上述逆正交变换处理中,应用上述本技术的处理作为步骤s233的处理被执行。因此,通过执行该逆正交变换处理,可以抑制逆一次变换处理所需的存储器容量的增大。

<2-2.示例1-1>

<概念>

接下来,将更详细地描述参照图10描述的每个导出示例。首先,将描述图10中所示的表中的除了项目名称的最上一行之外的从顶部起的第一行示例和第二行示例。

如上所述,从顶部起的第一行示例的导出聚焦于第一变换类型的最低阶行向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。在这种情况下,导出单元翻转第一变换矩阵以导出第二变换矩阵。即,如图19所示,导出单元使用dst7的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵以导出flipdst7的变换矩阵。可以用flipdst7的变换矩阵替换具有相似的0阶行向量的波形的dct8的(减小型)变换矩阵。

这种导出的具体示例在图20的上部示出。如图20的上部所示,该导出可以由基础变换矩阵tbase(dst7)与翻转矩阵j的矩阵乘积来表示。这里,通过左右反转n×n单位矩阵i来获得翻转矩阵j(也称为交叉单位矩阵(cross-identitymatrix))。

此外,从顶部起的第二行示例的导出聚焦于第一变换类型的最低阶列向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。在这种情况下,导出单元转置第一变换矩阵以导出第二变换矩阵。即,导出单元使用dst7的变换矩阵作为基础变换矩阵tbase,并且对变换矩阵进行转置以导出trdst7的变换矩阵,如图19所示。可以用trdst7的变换矩阵替换具有相似的0阶行向量的波形的dst1的(人字型)变换矩阵。

这种导出的具体示例在图20的下部示出。如图20的下部所示,这种导出可以通过基础变换矩阵tbase(dst7)的转置来表示。

即,在上述两个导出示例中,第二变换矩阵均可以通过一次操作(翻转或转置)来导出。此外,操作简单。也就是说,可以容易地导出第二变换矩阵。

此外,通过应用上述两个导出示例,变得不需要准备dct8的变换矩阵和dst1的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。

在这种情况下,如图21中的表所示,在非专利文献1中描述的技术的情况下所需的五种类型的变换矩阵(参见图6中的表a)可以减少为三种类型。因此,总lut大小可以是约40kb。即,与非专利文献1中描述的技术的情况相比,lut的大小可以减小(大约53kb(图6中的表a))。也就是说,可以抑制lut的大小的增大。

注意,如上所述,即使在这种情况下,通过使用导出的第二变换类型(trdst7或flipdst7)的变换矩阵执行正交变换/逆正交变换,也可以获得与使用dst1的变换矩阵或dct8的变换矩阵进行正交变换/逆正交变换的情况相似的编码效率。

<一次变换单元>

接下来,将描述用于执行这种导出的配置、处理等。图22是示出在这种情况下一次变换单元152的主要配置示例的框图。如图22中示,一次变换单元152包括一次变换选择单元311、一次水平变换单元312和一次垂直变换单元313。

一次变换选择单元311使用预测模式信息pinfo、分量标识符compid、自适应一次变换标志apt_flag[compid]和一次变换标识符pt_idx[compid]作为输入。一次变换选择单元311通过参考上述信息,导出一次水平变换的变换类型标识符trtypeidxh和一次垂直变换的变换类型标识符trtypeidxv。一次变换选择单元311将导出的一次水平变换的变换类型标识符trtypeidxh提供给一次水平变换单元312。此外,一次变换选择单元311将导出的一次垂直变换的变换类型标识符trtypeidxv提供给一次垂直变换单元313。

一次水平变换单元312使用预测残差d、一次水平变换的变换类型标识符trtypeidxh和关于变换块的大小的信息(未示出)作为输入。关于变换块的大小的信息可以是指示变换块在水平方向或垂直方向上的大小的自然数n(系数的数目),或者可以是指示变换块的宽度的log2tbwsize(宽度的对数值)(n=1<<log2tbwsize)。一次水平变换单元312针对预测残差d执行由变换类型标识符trtypeidxh和变换块的大小确定的一次水平变换phor,以导出一次水平变换之后的变换系数coeff_phor。一次水平变换单元312将一次水平变换之后的变换系数coeff_phor提供给一次垂直变换单元313。

一次垂直变换单元313使用一次水平变换之后的变换系数coeff_phor、一次垂直变换的变换类型标识符trtypeidxv和关于变换块的大小的信息(未示出)作为输入。关于变换块的大小的信息可以是指示变换块在水平方向或垂直方向上的大小的自然数n(系数的数目),或者可以是指示变换块的高度的log2tbhsize(高度的对数值)(n=1<<log2tbhsize)。一次垂直变换单元313针对一次水平变换之后的变换系数coeff_phor执行由变换类型标识符trtypeidxv和变换块的大小确定的一次垂直变换pver,以导出一次垂直变换之后的变换系数coeff_pver。一次垂直变换单元313将一次垂直变换之后的变换系数coeff_pver输出到一次变换单元152的外部(提供给二次变换单元153)作为一次变换之后的变换系数coeff_p。

在具有上述配置的一次变换单元152中,一次水平变换单元312和一次垂直变换单元313分别作为导出单元和正交变换单元执行应用了上述本技术的处理。

即,一次水平变换单元312作为导出单元导出用于水平一维正交变换的第二变换矩阵,并且进一步作为正交变换单元使用由导出单元导出的用于水平一维正交变换的第二变换矩阵来执行水平一维正交变换。因此,一次水平变换单元312可以抑制水平一维正交变换所需的存储器容量的增大。

此外,一次垂直变换单元313作为导出单元导出用于垂直一维正交变换的第二变换矩阵,并且进一步作为正交变换单元使用由导出单元导出的用于垂直一维正交变换的第二变换矩阵来执行垂直一维正交变换。因此,一次垂直变换单元313可以抑制垂直一维正交变换所需的存储器容量的增大。

<一次水平变换单元>

图23是示出图22中的一次水平变换单元312的主要配置示例的框图。如图23所示,一次水平变换单元312包括变换矩阵导出单元321、矩阵计算单元322、缩放单元323和剪切单元(clipunit)324。

变换矩阵导出单元321使用一次水平变换的变换类型标识符trtypeidxh和关于变换块的大小的信息作为输入,并且导出与变换块具有相同大小的用于一次水平变换的变换矩阵th(用于水平一维正交变换的变换矩阵th),该变换矩阵th与一次水平变换的变换类型标识符trtypeidxh对应。变换矩阵导出单元321将变换矩阵th提供给矩阵计算单元322。

矩阵计算单元322使用从变换矩阵导出单元321提供的变换矩阵th,对输入数据xin(即预测残差d的变换块)执行水平一维正交变换,以获得中间数据y1。该计算可以如下面的表达式(9)中那样表示为行列式。

[数学式7]

y1=xin×tht…(9)

矩阵计算单元322将中间数据y1提供给缩放单元323。

缩放单元323以预定移位量sh对中间数据y1的每个第i行第j列分量的系数y1[i,j]进行缩放,以获得中间数据y2。该缩放可以表示为下面的表达式(10)。在下文中,某个二维矩阵(二维阵列)x的第i行第j列分量((i,j)分量)被写为x[i,j]。

[数学式8]

y2[i,j]=y1[i,j]>>sh…(10)

缩放单元323将中间数据y2提供给剪切单元324。

剪切单元324剪切中间数据y2的每个第i行第j列分量的系数y2[i,j]的值,并且导出输出数据xout(即,一次水平变换之后的变换系数coeff_phor)。该处理可以表示为下面的表达式(11)。

[数学式9]

xout[i,j]=clip3(mincoefval,maxcoefval,y2[i,j])…(11)

剪切单元324将输出数据xout(一次水平变换之后的变换系数coeff_phor)输出到一次水平变换单元312的外部(提供给一次垂直变换单元313)。

在具有上述配置的一次水平变换单元312中,变换矩阵导出单元321作为导出单元执行应用了上述本技术的处理。此外,矩阵计算单元322作为正交变换单元执行应用了上述本技术的处理。因此,一次水平变换单元312可以抑制水平一维正交变换所需的存储器容量的增大。

<变换矩阵导出单元>

图24是示出图23中的变换矩阵导出单元321的主要配置示例的框图。如图24所示,变换矩阵导出单元321包括变换矩阵lut331、翻转单元332和转置单元333。注意,在图24中,省略了表示数据传送的箭头,但是在变换矩阵导出单元321中,可以在任意处理单元(处理块)之间传送任意数据。

变换矩阵lut331是用于保持(存储)与一次水平变换的变换类型标识符trtypeidxh和变换块的大小n对应的变换矩阵的查找表。当一次水平变换的变换类型标识符trtypeidxh和变换块的大小n被指定时,变换矩阵lut331选择并输出与其对应的变换矩阵。在该导出示例的情况下,变换矩阵lut331将变换矩阵提供给翻转单元332和转置单元333两者或其中之一作为基础变换矩阵tbase。

翻转单元332翻转输入的n行和n列的变换矩阵t,并且输出经翻转的变换矩阵tflip。在该导出示例的情况下,翻转单元332使用从变换矩阵lut331提供的n行和n列的基础变换矩阵tbase作为输入,在行方向(水平方向)上翻转基础变换矩阵tbase,并且将经翻转的变换矩阵tflip输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

转置单元333对输入的n行和n列的变换矩阵t进行转置,并且输出经转置的变换矩阵ttranspose。在该导出示例的情况下,转置单元333使用从变换矩阵lut331提供的n行和n列的基础变换矩阵tbase作为输入,对基础变换矩阵tbase进行转置,并且将经转置的变换矩阵ttranspose输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

如上所述,变换矩阵导出单元321包括翻转单元332和转置单元333。因此,变换矩阵导出单元321可以例如使用翻转单元332来实现从图10中所示的表的顶部起的第一行示例的导出示例。此外,变换矩阵导出单元321可以例如使用转置单元333来实现从图10中所示的表的顶部起的第二行示例的导出示例。

<一次垂直变换单元>

图25是示出图22中的一次垂直变换单元313的主要配置示例的框图。如图25中所示,一次垂直变换单元313包括变换矩阵导出单元351、矩阵计算单元352、缩放单元353和剪切单元354。

变换矩阵导出单元351使用一次垂直变换的变换类型标识符trtypeidxv和关于变换块的大小的信息作为输入,导出与变换块具有相同大小的用于一次垂直变换的变换矩阵tv(用于垂直一维正交变换的变换矩阵tv),该变换矩阵tv与一次垂直变换的变换类型标识符trtypeidxv对应。变换矩阵导出单元351将变换矩阵tv提供给矩阵计算单元352。

矩阵计算单元352使用从变换矩阵导出单元351提供的变换矩阵tv,对输入数据xin(即,一次水平变换之后的变换系数coeff_phor的变换块)执行垂直一维正交变换,以获得中间数据y1。该计算可以如下面的表达式(12)中那样表示为行列式。

[数学式10]

y1=tv×xin…(12)

矩阵计算单元352将中间数据y1提供给缩放单元353。

缩放单元353以预定移位量sv缩放中间数据y1的每个第i行第j列分量的系数y1[i,j],以获得中间数据y2。该缩放可以表示为下面的表达式(13)。

[数学式11]

y2[i,j]=y1[i,j]>>sv…(13)

缩放单元353将中间数据y2提供给剪切单元354。

剪切单元354剪切中间数据y2的每个第i行第j列分量的系数y2[i,j]的值,并且导出输出数据xout(即,一次垂直变换之后的变换系数coeff_pver)。该处理可以表示为下面的表达式(14)。

[数学式12]

xout[i,j]=clip3(mincoefval,maxcoefval,y2[i,j])…(14)

剪切单元324将输出数据xout(一次垂直变换之后的变换系数coeff_pver)输出到一次垂直变换单元313的外部(提供给二次变换单元153)作为一次变换之后的变换系数coeff_p。

在具有上述配置的一次垂直变换单元313中,变换矩阵导出单元351作为导出单元执行应用了上述本技术的处理。此外,矩阵计算单元352作为正交变换单元执行应用了上述本技术的处理。因此,一次垂直变换单元313可以抑制垂直一维正交变换所需的存储器容量的增大。

<变换矩阵导出单元>

图26是示出图25中的变换矩阵导出单元351的主要配置示例的框图。如图26所示,变换矩阵导出单元351包括变换矩阵lut361、翻转单元362和转置单元363。注意,在图26中,省略了表示数据传送的箭头,但在变换矩阵导出单元351中,可以在任意的处理单元(处理块)之间传送任意的数据。

变换矩阵lut361是用于保持(存储)与一次垂直变换的变换类型标识符trtypeidxv和变换块的大小n对应的变换矩阵的查找表。当一次垂直变换的变换类型标识符trtypeidxv和变换块的大小n被指定时,变换矩阵lut361选择并且输出与其对应的变换矩阵。在该导出示例的情况下,变换矩阵lut361将变换矩阵作为基础变换矩阵tbase提供给翻转单元362和转置单元363中的两者或其中之一。

翻转单元362翻转输入的n行和n列的变换矩阵t,并且输出经翻转的变换矩阵tflip。在该导出示例的情况下,翻转单元362使用从变换矩阵lut361提供的n行和n列的基础变换矩阵tbase作为输入,在行方向(水平方向)上翻转基础变换矩阵tbase,并且将经翻转的变换矩阵tflip输出到变换矩阵导出单元351的外部(提供给矩阵计算单元352)作为变换矩阵tv。

转置单元363对输入的n行和n列的变换矩阵t进行转置,并且输出经转置的变换矩阵ttranspose。在该导出示例的情况下,转置单元363将从变换矩阵lut361提供的n行和n列的基础变换矩阵tbase用作输入,对基础变换矩阵tbase进行转置,并且将经转置的变换矩阵ttranspose输出到变换矩阵导出单元351的外部(提供给矩阵计算单元352)作为变换矩阵tv。

如上所述,变换矩阵导出单元351包括翻转单元362和转置单元363。因此,变换矩阵导出单元351可以使用例如翻转单元362实现从图10中所示的表的顶部起的第一行示例的导出示例。此外,变换矩阵导出单元351可以例如使用转置单元363实现从图10中所示的表的顶部起的第二行示例的导出示例。

<一次变换处理的流程>

接下来,将描述由上述配置执行的处理的流程的示例。将参照图27中的流程图描述在这种情况下在图14的步骤s132中执行的一次变换处理的流程的示例。

当开始一次变换处理时,在步骤s301中,如上所述,一次变换单元152的一次变换选择单元311(图22)选择一次水平变换的变换类型标识符trtypeidxh(以及利用该标识符指定的变换类型trtypeh)和一次垂直变换的变换类型标识符trtypeidxv(利用该标识符指定的变换类型trtypev)。

在步骤s302中,一次水平变换单元312针对预测残差d执行与在步骤s301中获得的一次水平变换的变换类型标识符trtypeidxh对应的一次水平变换处理,以导出一次水平变换之后的变换系数coeff_phor。

在步骤s303中,一次垂直变换单元313针对一次水平变换结果(一次水平变换之后的变换系数coeff_phor)执行与在步骤s301中获得的一次垂直变换的变换类型标识符trtypeidxv对应的一次垂直变换处理,以导出一次垂直变换之后的变换系数coeff_pver(一次变换之后的变换系数coeff_p)。

当步骤s303中的处理结束时,一次变换处理结束,并且处理返回到图14。

在上述一次变换处理中,应用上述本技术的处理作为步骤s302或s303的处理被执行。因此,通过执行该一次变换处理,可以抑制一次水平变换处理和一次垂直变换处理所需的存储器容量的增大。

<一次水平变换处理的流程>

将参照图28中的流程图描述在图27中的步骤s302中执行的一次水平变换处理的流程。

当开始一次水平变换处理时,在步骤s321中,一次水平变换单元312的变换矩阵导出单元321(图23)导出与一次水平变换的变换类型标识符trtypeidxh(或变换类型trtypeh)对应的变换矩阵th。

在步骤s322中,矩阵计算单元322使用导出的变换矩阵th对输入数据xin(预测残差d)执行水平一维正交变换,以获得中间数据y1。在将该处理表示为行列式的情况下,可以将该处理表示为上述表达式(9)。此外,在该处理被表示为针对每个元素的运算的情况下,该处理可以被表示为下面的表达式(15)。

[数学式13]

即,如图29所示,输入数据xin的第i行向量xin[i,:]与变换矩阵th的第j行向量th[j,:]的变换矩阵tht[:,j]的内积被设定为中间数据y1的第i行第j列分量的系数y1[i,j](j=0,...,m-1,并且i=0,...,n-1)。这里,m表示输入数据xin在x方向上的大小,n表示输入数据xin在y方向上的大小。m和n可以表示为下面的表达式(16)。

[数学式14]

m=1<<log2tbwsize

n=1<<log2tbhsize

…(16)

返回图28,在步骤s323中,缩放单元323以移位量sh缩放通过步骤s322中的处理导出的中间数据y1的每个第i行第j列分量的系数y1[i,j],以导出中间数据y2。该缩放可以表示为上述表达式(10)。

在步骤s324中,剪切单元324剪切通过步骤s323中的处理导出的中间数据y2的每个第i行第j列分量的系数y2[i,j]的值,并且获得输出数据xout(即,一次水平变换之后的变换系数coeff_phor)。该处理可以表示为上述表达式(11)。

当步骤s324中的处理结束时,一次水平变换处理结束,并且处理返回到图27。

在上述一次水平变换处理中,应用了上述本技术的处理作为步骤s321或s322的处理被执行。因此,通过执行该一次水平变换处理,可以抑制水平一维正交变换所需的存储器容量的增大。

<变换矩阵导出处理的流程>

接下来,将参照图30中的流程图描述在图28中的步骤s321中执行的变换矩阵导出处理的流程的示例。

当变换矩阵导出处理开始时,在步骤s341中,变换矩阵导出单元321例如通过参考图31所示的对应表来获得与变换类型标识符trtypeidxh对应的基础变换类型basetrtype。注意,在该处理被表示为数学表达式时,例如,该处理可以被表示为表达式(17)。此外,从变换矩阵lut中读取所获得的基础变换类型的n行和n列的变换矩阵,并且将其设定为基础变换矩阵tbase,如下面的表达式(18)所示。

[数学式15]

basetrtype=lut_trtypeidxtobasetrtype[trtypeidxh]

…(17)

tbase=t[basetrtype][log2n-1]

…(18)

此外,变换矩阵导出单元321将与变换类型标识符trtypeidxh对应的值设定为翻转标志flipflag,如下面的表达式(19)中那样。此外,变换矩阵导出单元321将与变换类型标识符trtypeidxh对应的值设定为转置标志transposeflag,如下面的表达式(20)所示。

[数学式16]

flipflag=lut_trtypeidxtoflipflag[trtypeidxh]

…(19)

transposeflag=lut_trtypeidxtotransposeflag[trtypeidxh]

…(20)

在步骤s342中,变换矩阵导出单元321确定翻转标志flipflag和转置标志transposeflag是否满足由下面的表达式(21)表示的条件(条件a1)。

[数学式17]

条件a1:flipflag==f&&transposeflag==f

…(21)

在确定满足上述条件(条件a1)的情况下(在翻转标志flipflag和转置标志transposeflag两者均为假(0)的情况下),处理进行到步骤s343。

在步骤s343中,变换矩阵导出单元321将基础变换矩阵tbase设定为变换矩阵th,如下面的表达式(22)中那样地。

[数学式18]

th=tbase…(22)

当步骤s343中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。此外,在步骤s342中,在确定不满足上述条件(条件a1)(翻转标志flipflag或转置标志transposeflag为真(1))的情况下,处理进行到步骤s344。

在步骤s344中,变换矩阵导出单元321确定翻转标志flipflag和转置标志transposeflag是否满足由下面的表达式(23)表示的条件(条件a2)。

[数学式19]

条件a2:flipflag==f&&transposeflag=t

…(23)

在确定满足上述条件(条件a2)的情况下(在翻转标志flipflag为假(0)并且转置标志transposeflag为真(1)的情况下),处理进行到步骤s345。

在步骤s345中,变换矩阵导出单元321经由转置单元333对基础变换矩阵tbase进行转置,以获得变换矩阵th。该处理可以如下面的表达式(24)中那样表示为行列式。

[数学式20]

th=tr(tbase)=tbaset…(24)

此外,在将处理表示为针对每个元素的运算的情况下,变换矩阵导出单元321将基础变换矩阵tbase的第i行第j列分量((i,j)分量)设定为变换矩阵th的(j,i)分量,如下面的表达式(25)中那样地。

[数学式21]

th[j,i]=tbase[i,j]

对于,j=0,...,n-1

…(25)

这里,n行和n列的变换矩阵th的第i行第j列分量((i,j)分量)被写为th[i,j]。此外,第二行上的“对于i,j=0,...,n-1”指示i和j具有0到n-1的值。即,这意味着th[i,j]指示n行和n列的变换矩阵th的所有元素。

通过以这种方式将步骤s345中的处理表示为针对每个元素的运算,可以通过访问(access)简单的二维阵列来实现转置操作。当步骤s345中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

此外,在步骤s344中,在确定不满足上述条件(条件a2)(翻转标志flipflag为真(1)或者转置标志transposeflag为假(0))的情况下,处理进行到步骤s346。

在步骤s346中,变换矩阵导出单元321通过翻转单元332翻转基础变换矩阵tbase,以获得变换矩阵th。该处理可以如下面的表达式(26)中那样表示为行列式。

[数学式22]

th=tbase×j…(26)

这里,x是表示矩阵乘积的运算符。此外,通过左右反转n×n单位矩阵i来获得翻转矩阵j(交叉单位矩阵)。

此外,在将处理表示为针对每个元素的运算的情况下,变换矩阵导出单元321将基础变换矩阵tbase的(i,n-1-j)分量设定为变换矩阵th的第i行第j列分量((i,j)分量),如下面的表达式(27)中那样地。

[数学式23]

th[i,j]=tbase[i,n-1-j]

对于i,j=0,...,n-1

…(27)

这里,n行和n列的变换矩阵th的第i行第j列分量((i,j)分量)被写为th[i,j]。此外,第二行上的“对于i,j=0,...,n-1”指示i和j具有0到n-1的值。也就是说,这意味着th[i,j]指示n行和n列的变换矩阵th的所有元素。

通过以这种方式将步骤s346中的处理表示为针对每个元素的运算,可以通过访问简单的二维阵列来实现转置操作,而无需基础变换矩阵tbase和翻转矩阵j的矩阵计算。此外,翻转矩阵j变得不是必要的。当步骤s346中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

在上述变换矩阵导出处理中,应用了上述本技术的处理作为步骤s345或s346的处理被执行。因此,通过执行该变换矩阵导出处理,可以在水平一维正交变换中实现从图10中的表的顶部起的第一行示例和第二行示例的导出示例。因此,可以抑制所需的存储器容量的增大。

注意,可以在步骤s344中的处理和步骤s346中的处理之间插入以下描述的分支。即,在该步骤中,变换矩阵导出单元321确定翻转标志flipflag和转置标志transposeflag是否满足由下面的表达式(28)表示的条件(条件a3)。

[数学式24]

条件a3:flipflag==t&&transposeflag==f

…(28)

在变换矩阵导出单元321确定满足上述条件(条件a3)的情况下(在翻转标志flipflag为真(1)并且转置标志transposeflag为假(0)的情况下),处理进行到步骤s346。

此外,在确定不满足上述条件(条件a3)(翻转标志flipflag为假(0)或者转置标志transposeflag为真(1))的情况下,变换矩阵导出处理结束,并且处理返回到图28。

<一次垂直变换处理的流程>

接下来,将参照图32中的流程图描述在图27中的步骤s303中执行的一次垂直变换处理的流程。

当开始一次垂直变换处理时,在步骤s361中,一次垂直变换单元313的变换矩阵导出单元351(图25)执行变换矩阵导出处理,以导出与一次垂直变换的变换类型标识符trtypeidxv(或变换类型trtypev)对应的变换矩阵tv。

由于变换矩阵导出处理的流程与参照图30中的流程图描述的一次水平变换的情况相似,因此省略其描述。例如,例如通过用一次垂直变换的变换类型标识符trtypeidxv替换一次水平变换的变换类型标识符trtypeidxh,以及用一次垂直变换的变换矩阵tv替换一次水平变换的变换矩阵th,简单地将通过参照图30进行的描述中的关于水平方向的描述应用于垂直方向。

在步骤s362中,矩阵计算单元352使用导出的变换矩阵tv对输入数据xin(一次水平变换之后的变换系数coeff_phor)执行垂直一维正交变换,以获得中间数据y1。在该处理被表示为行列式时,该处理可以被表示为上述表达式(12)。此外,在该处理被表示为针对每个元素的运算时,该处理可以被表示为下面的表达式(29)。

[数学式25]

即,在这种情况下,如图33所示,变换矩阵tv的第i行向量tv[i,:]与输入数据xin的第j列向量xin[:,j]的内积作为中间数据y1的第i行第j列分量的系数y1[i,j](j=0,...,m-1,并且i=0,...,n-1)。

在步骤s363中,缩放单元353以移位量sv缩放通过步骤s322中的处理导出的中间数据y1的每个第i行第j列分量的系数y1[i,j],以导出中间数据y2。该缩放可以表示为上述表达式(13)。

在步骤s364中,剪切单元354剪切通过步骤s363中的处理导出的中间数据y2的每个第i行第j列分量的系数y2[i,j]的值,并且获得输出数据xout(即,一次垂直变换之后的变换系数coeff_pver)。该处理可以表示为上述表达式(14)。

当步骤s364中的处理结束时,一次水平变换处理结束,并且处理返回到图27。

在上述一次垂直变换处理中,应用了上述本技术的处理作为步骤s361或s362的处理被执行。因此,通过执行一次垂直变换处理,可以抑制垂直一维正交变换所需的存储器容量的增大。

<逆一次变换单元>

接下来,将描述在本实施方式的情况下的图像解码装置200的配置。图34是示出在这种情况下逆一次变换单元253(图16)的主要配置示例的框图。如图34所示,逆一次变换单元253包括逆一次变换选择单元411、逆一次垂直变换单元412和逆一次水平变换单元413。

逆一次变换选择单元411使用预测模式信息pinfo、分量标识符compid、自适应一次变换标志apt_flag[compid]和一次变换标识符pt_idx[compid]作为输入。逆一次变换选择单元411通过参考上述信息来导出逆一次垂直变换的变换类型标识符trtypeidxv和逆一次垂直变换的变换类型标识符trtypeidxh。逆一次变换选择单元411将导出的逆一次垂直变换的变换类型标识符trtypeidxv提供给逆一次垂直变换单元412。此外,逆一次变换选择单元411将导出的逆一次水平变换的变换类型标识符trtypeidxh提供给逆一次水平变换单元413。

逆一次垂直变换单元412使用逆二次变换之后的变换系数coeff_is、逆一次垂直变换的变换类型标识符trtypeidxv以及关于变换块的大小的信息作为输入。关于变换块的大小的信息可以是指示变换块在水平方向或垂直方向上的大小的自然数n(系数的数目),或者可以是指示变换块的高度的log2tbhsize(高度的对数值)(n=1<<log2tbhsize)。逆一次垂直变换单元412针对逆二次变换之后的变换系数coeff_is执行由变换类型标识符trtypeidxv和变换块的大小确定的逆一次垂直变换ipver,以导出逆一次垂直变换之后的变换系数coeff_ipver。逆一次垂直变换单元412将逆一次垂直变换之后的变换系数coeff_ipver提供给逆一次水平变换单元413。

逆一次水平变换单元413使用逆一次垂直变换之后的变换系数coeff_ipver、逆一次水平变换的变换类型标识符trtypeidxh以及关于变换块的大小的信息作为输入。关于变换块的大小的信息可以是指示变换块在水平方向或垂直方向上的大小的自然数n(系数的数目),或者可以是指示变换块的宽度的log2tbwsize(宽度的对数值)(n=1<<log2tbwsize)。逆一次水平变换单元413针对从逆一次垂直变换单元412提供的逆一次垂直变换之后的变换系数coeff_ipver执行由变换类型标识符trtypeidxh和变换块的大小确定的逆一次水平变换iphor,以导出逆一次水平变换之后的变换系数coeff_iphor(即,逆一次变换之后的变换系数coeff_ip)。逆一次水平变换单元413将逆一次水平变换之后的变换系数coeff_iphor输出到逆一次变换单元253的外部(提供给计算单元215)作为预测残差d'。

在具有上述配置的逆一次变换单元253中,逆一次垂直变换单元412和逆一次水平变换单元413分别作为导出单元和正交变换单元执行应用了上述本技术的处理。

即,逆一次垂直变换单元412作为导出单元导出用于垂直逆一维正交变换的第二变换矩阵,并且进一步作为逆正交变换单元使用由导出单元导出的用于垂直逆一维正交变换的第二变换矩阵来执行垂直逆一维正交变换。因此,逆一次垂直变换单元412可以抑制垂直逆一维正交变换所需的存储器容量的增大。

此外,逆一次水平变换单元413作为导出单元导出用于水平逆一维正交变换的第二变换矩阵,并且进一步作为正交变换单元使用由导出单元导出的用于水平逆一维正交变换的第二变换矩阵来执行水平逆一维正交变换。因此,逆一次水平变换单元413可以抑制水平逆一维正交变换所需的存储器容量的增大。

<逆一次垂直变换单元>

图35是示出图34中的逆一次垂直变换单元412的主要配置示例的框图。如图35所示,逆一次垂直变换单元412包括变换矩阵导出单元421、矩阵计算单元422、缩放单元423和剪切单元424。

变换矩阵导出单元421使用逆一次垂直变换的变换类型标识符trtypeidxv和关于变换块的大小的信息作为输入,导出与变换块具有相同大小的用于逆一次垂直变换的变换矩阵tv(用于垂直逆一维正交变换的变换矩阵tv),该变换矩阵tv与逆一次垂直变换的变换类型标识符trtypeidxv对应。变换矩阵导出单元421将变换矩阵tv提供给矩阵计算单元422。

矩阵计算单元422使用从变换矩阵导出单元421提供的变换矩阵tv,对输入数据xin(即,逆二次变换之后的变换系数coeff_is的变换块)执行垂直逆一维正交变换,以获得中间数据y1。该计算可以如下面的表达式(30)中那样表示为行列式。

[数学式26]

y1=tvt×xin…(30)

矩阵计算单元422将中间数据y1提供给缩放单元423。

缩放单元423以预定移位量siv缩放中间数据y1的每个第i行第j列分量的系数y1[i,j],以获得中间数据y2。该缩放可以表示为下面的表达式(31)。

[数学式27]

y2[i,j]=y1[i,j]>>siv…(31)

缩放单元423将中间数据y2提供给剪切单元424。

剪切单元424剪切中间数据y2的每个第i行第j列分量的系数y2[i,j]的值,并且导出输出数据xout(即,逆一次垂直变换之后的变换系数coeff_ipver)。该处理可以表示为上述表达式(11)。

剪切单元424将输出数据xout(逆一次垂直变换之后的变换系数coeff_ipver)输出到逆一次垂直变换单元412的外部(提供给逆一次水平变换单元413)。

在具有上述配置的逆一次垂直变换单元412中,变换矩阵导出单元421作为导出单元执行应用了上述本技术的处理。此外,矩阵计算单元422作为正交变换单元执行应用了上述本技术的处理。因此,逆一次垂直变换单元412可以抑制垂直逆一维正交变换所需的存储器容量的增大。

<变换矩阵导出单元>

图36是示出图35中的变换矩阵导出单元421的主要配置示例的框图。如图36所示,变换矩阵导出单元421包括变换矩阵lut431、翻转单元432和转置单元433。注意,在图36中,省略了表示数据传送的箭头,但是在变换矩阵导出单元421中,可以在任意处理单元(处理块)之间传送任意数据。

变换矩阵lut431是用于保持(存储)与逆一次垂直变换的变换类型标识符trtypeidxv和变换块的大小n对应的变换矩阵的查找表。在逆一次垂直变换的变换类型标识符trtypeidxv和变换块的大小n被指定时,变换矩阵lut431选择并且输出与其对应的变换矩阵。在该导出示例的情况下,变换矩阵lut431将变换矩阵作为基础变换矩阵tbase提供给翻转单元432和转置单元433两者或其中之一。

翻转单元432翻转输入的n行和n列的变换矩阵t,并且输出经翻转的变换矩阵tflip。在该导出示例的情况下,翻转单元432使用从变换矩阵lut431提供的n行和n列的基础变换矩阵tbase作为输入,在行方向(水平方向)上翻转基础变换矩阵tbase,并且将经翻转的变换矩阵tflip输出到变换矩阵导出单元321的外部(提供给矩阵计算单元422)作为变换矩阵tv。

转置单元433对输入的n行和n列的变换矩阵ttranspose进行转置,并且输出经转置的变换矩阵ttranspose。在该导出示例的情况下,转置单元433使用从变换矩阵lut431提供的n行和n列的基础变换矩阵tbase作为输入,对基础变换矩阵tbase进行转置,并且将经转置的变换矩阵ttranspose输出到变换矩阵导出单元421的外部(提供给矩阵计算单元422)作为变换矩阵tv。

如上所述,变换矩阵导出单元421包括翻转单元432和转置单元433。因此,变换矩阵导出单元421可以例如使用翻转单元432实现从图10中所示的表的顶部起的第一行示例的导出示例。此外,变换矩阵导出单元421可以例如使用转置单元433实现从图10中所示的表的顶部起的第二行示例的导出示例。

<逆一次水平变换单元>

图37是示出图34中的逆一次水平变换单元413的主要配置示例的框图。如图37所示,逆一次水平变换单元413包括变换矩阵导出单元451、矩阵计算单元452、缩放单元453和剪切单元454。

变换矩阵导出单元451使用逆一次水平变换的变换类型标识符trtypeidxh以及与变换块的大小有关的信息作为输入,并且导出与变换块具有相同大小的用于逆一次水平变换的变换矩阵th(用于水平逆一维正交变换的变换矩阵th),该变换矩阵th与逆一次水平变换的变换类型标识符trtypeidxh对应。变换矩阵导出单元451将变换矩阵th提供给矩阵计算单元452。

矩阵计算单元452使用从变换矩阵导出单元451提供的变换矩阵th,对输入数据xin(即,逆一次垂直变换之后的变换系数coeff_ipver的变换块)执行水平逆一维正交变换,以获得中间数据y1。该计算可以如下面的表达式(32)中那样表示为行列式。

[数学式28]

y1=xin×th…(32)

矩阵计算单元452将中间数据y1提供给缩放单元453。

缩放单元453以预定移位量sih缩放中间数据y1的每个第i行第j列分量的系数y1[i,j],以获得中间数据y2。该缩放可以表示为下面的表达式(33)。

[数学式29]

y2[i,j]=y1[i,j]>>sih…(33)

缩放单元453将中间数据y2提供给剪切单元454。

剪切单元454对中间数据y2的每个第i行第j列分量的系数y2[i,j]的值进行剪切,并且导出输出数据xout(即,逆一次水平变换之后的变换系数coeff_iphor)。该处理可以表示为上述表达式(11)。

剪切单元454将输出数据xout(逆一次水平变换之后的变换系数coeff_iphor(逆一次变换之后的变换系数coeff_ip))输出到逆一次水平变换单元413的外部(提供给计算单元215)作为预测残差d'。

在具有上述配置的逆一次水平变换单元413中,变换矩阵导出单元451作为导出单元执行应用了上述本技术的处理。此外,矩阵计算单元452作为逆正交变换单元执行应用了上述本技术的处理。因此,逆一次水平变换单元413可以抑制水平逆一维正交变换所需的存储器容量的增大。

<变换矩阵导出单元>

图38是示出图37中的变换矩阵导出单元451的主要配置示例的框图。如图38中所示,变换矩阵导出单元451包括变换矩阵lut461、翻转单元462和转置单元463。注意,在图38中,省略了表示数据传送的箭头,但在变换矩阵导出单元451中,可以在任意的处理单元(处理块)之间传送任意的数据。

变换矩阵lut461是用于保持(存储)与逆一次水平变换的变换类型标识符trtypeidxh和变换块的大小n对应的变换矩阵的查找表。在逆一次水平变换的变换类型标识符trtypeidxh和变换块的大小n被指定时,变换矩阵lut461选择并且输出与其对应的变换矩阵。在该导出示例的情况下,变换矩阵lut461将变换矩阵作为基础变换矩阵tbase提供给翻转单元462和转置单元463中的两者或其中之一。

翻转单元462翻转输入的n行和n列的变换矩阵t,并且输出经翻转的变换矩阵tflip。在该导出示例的情况下,翻转单元462使用从变换矩阵lut461提供的n行和n列的基础变换矩阵tbase作为输入,在行方向(水平方向)上翻转基础变换矩阵tbase,并且将经翻转的变换矩阵tflip输出到变换矩阵导出单元451的外部(提供给矩阵计算单元452)作为变换矩阵th。

转置单元463对输入的n行n列的变换矩阵t进行转置,并且输出经转置的变换矩阵ttranspose。在该导出示例的情况下,转置单元463使用从变换矩阵lut461提供的n行和n列的基础变换矩阵tbase作为输入,对基础变换矩阵tbase进行转置,并且将经转置的变换矩阵ttranspose输出到变换矩阵导出单元451的外部(提供给矩阵计算单元452)作为变换矩阵th。

如上所述,变换矩阵导出单元451包括翻转单元462和转置单元463。因此,变换矩阵导出单元451例如可以使用翻转单元462实现从图10中所示的表的顶部起的第一行示例的导出示例。此外,变换矩阵导出单元451可以例如使用转置单元463实现从图10中所示的表的顶部起的第二行示例的导出示例。

<逆一次变换处理的流程>

接下来,将描述由图像解码装置200的上述配置执行的处理的流程的示例。接下来,将参照图39中的流程图描述在这种情况下在图18的步骤s233中执行的逆一次变换处理的流程的示例。

当开始逆一次变换处理时,在步骤s401中,逆一次变换单元253的逆一次变换选择单元411(图34)执行逆一次变换选择处理,以选择逆一次垂直变换的变换类型标识符trtypeidxv(或变换类型trtypev)和逆一次水平变换的变换类型标识符trtypeidxh(或变换类型trtypeh)。

在步骤s402中,逆一次垂直变换单元412针对逆二次变换之后的变换系数coeff_is执行与在步骤s401中获得的逆一次垂直变换的变换类型标识符trtypeidxv对应的逆一次垂直变换处理,以导出逆一次垂直变换之后的变换系数coeff_ipver。

在步骤s403中,逆一次水平变换单元413对逆一次垂直变换之后的变换系数coeff_ipver执行与步骤s401中获得的逆一次水平变换的变换类型标识符trtypeidxh对应的逆一次水平变换处理,以导出逆一次水平变换之后的变换系数coeff_iphor(即,逆一次变换之后的变换系数coeff_ip(预测残差d'))。

当步骤s403中的处理结束时,逆一次变换处理结束,并且处理返回到图18。

在上述逆一次变换处理中,应用了上述本技术的处理作为步骤s402或s403的处理被执行。因此,通过执行该逆一次变换处理,可以抑制逆一次垂直变换处理或逆一次水平变换处理所需的存储器容量的增大。

<逆一次变换选择处理的流程>

接下来,将参照图40中的流程图描述在图39中的步骤s401中执行的逆一次变换选择处理的流程的示例。

当开始逆一次变换选择处理时,在步骤s421中,逆一次变换选择单元411确定分量标识符compid的自适应一次变换标志apt_flag[compid]是否为真(1)。在确定分量标识符compid的自适应一次变换标志apt_flag[compid]为真(1)的情况下,处理进行到步骤s422。

在步骤s422中,逆一次变换选择单元411基于预测模式信息pinfo,从变换集组中选择每个方向上的变换集trseth或trsetv。

在步骤s423中,逆一次变换选择单元411基于变换集trseth和一次变换标识符pt_idx[compid]来导出逆一次水平变换的变换类型标识符trtypeidxh。该处理可以被表示为例如下面的表达式(34)。

[数学式30]

trtypeidxh=trsettotrtypeidx[trseth][pt_idx]…(34)

在步骤s424中,逆一次变换选择单元411基于变换集trsetv和逆一次变换标识符pt_idx[compid]来导出逆一次垂直变换的变换类型标识符trtypeidxv。该处理例如可以表示为下面的表达式(35)。

[数学式31]

trtypeidxv=trsettotrtypeidx[trsetv][pt_idx]…(35)

当步骤s424中的处理结束时,逆一次变换选择处理结束,并且处理返回到图39。

此外,在步骤s421中,在确定分量标识符compid的自适应一次变换标志apt_flag[compid]为假(0)的情况下,处理进行到步骤s425。

在步骤s425中,逆一次变换选择单元411设定(选择)针对逆一次水平变换的变换类型标识符trtypeidxh的预定正交变换(例如,dct2)。该处理例如可以表示为下面的表达式(36)。

[数学式32]

trtypeidxh=预定值…(36)

在步骤s426中,逆一次变换选择单元411设定(选择)针对逆一次垂直变换的变换类型标识符trtypeidxv的预定正交变换(例如,dct2)。该处理例如可以表示为下面的表达式(37)。

[数学式33]

trtypeidxv=预定值…(37)

当步骤s426中的处理结束时,逆一次变换选择处理结束,并且处理返回到图39。

<逆一次垂直变换处理的流程>

接下来,将参照图41中的流程图描述在图39中的步骤s402中执行的逆一次垂直变换处理的流程。

当开始逆一次垂直变换处理时,在步骤s441中,逆一次垂直变换单元412的变换矩阵导出单元421(图35)执行变换矩阵导出处理,以导出与逆一次垂直变换的变换类型标识符trtypeidxv对应的变换矩阵tv。

通过与参照图30中的流程图描述的一次水平变换的情况相似的流程来执行这种情况下的变换矩阵导出处理。因此,省略其描述。例如,可以通过用逆一次垂直变换的变换类型标识符trtypeidxv替换一次水平变换的变换类型标识符trtypeidxh,并且用逆一次垂直变换的变换矩阵tv替换要导出的一次水平变换的变换矩阵th,将参照图30进行的描述用作这种情况的变换矩阵导出处理的描述。

在步骤s442中,矩阵计算单元422使用导出的变换矩阵tv对输入数据xin(即,逆二次变换之后的变换系数coeff_is)执行垂直逆一维正交变换,以获得中间数据y1。在该处理被表示为行列式时,该处理可以表示为上述表达式(30)。

在步骤s443中,缩放单元423以移位量siv缩放通过步骤s442中的处理导出的中间数据y1的每个第i行第j列分量的系数y1[i,j],以导出中间数据y2。该缩放可以表示为上述表达式(31)。

在步骤s444中,剪切单元424剪切通过步骤s443中的处理导出的中间数据y2的每个第i行第j列分量的系数y2[i,j]的值,并且获得输出数据xout(即,逆一次垂直变换之后的变换系数coeff_ipver)。该处理可以表示为上述表达式(11)。

当步骤s444中的处理结束时,逆一次垂直变换处理结束,并且处理返回到图39。

在上述逆一次垂直变换处理中,应用了上述本技术的处理作为步骤s441或s442的处理被执行。因此,通过执行该逆一次垂直变换处理,可以抑制垂直逆一维正交变换所需的存储器容量的增大。

<逆一次水平变换处理的流程>

接下来,将参照图42中的流程图描述在图39的步骤s403中执行的逆一次水平变换处理的流程。

当开始逆一次水平变换处理时,在步骤s461中,逆一次水平变换单元413的变换矩阵导出单元451(图37)执行变换矩阵导出处理,以导出与逆一次水平变换的变换类型标识符trtypeidxh对应的变换矩阵th。

通过与参照图30中的流程图描述的一次水平变换的情况相似的流程来执行这种情况下的变换矩阵导出处理。因此,省略其描述。例如,可以通过用逆一次水平变换替换一次水平变换等,将参照图30进行的描述应用为对这种情况的变换矩阵导出处理的描述。

在步骤s462中,矩阵计算单元452使用导出的变换矩阵th对输入数据xin(即,逆一次垂直变换之后的变换系数coeff_ipver)执行水平逆一维正交变换,以获得中间数据y1。在该处理被表示为行列式时,该处理可以表示为上述表达式(32)。

在步骤s463中,缩放单元453以移位量sih缩放通过步骤s462中的处理导出的中间数据y1的每个第i行第j列分量的系数y1[i,j],以导出中间数据y2。该缩放可以表示为上述表达式(33)。

在步骤s464中,剪切单元454剪切通过步骤s463中的处理导出的中间数据y2的每个第i行第j列分量的系数y2[i,j]的值,并且输出输出数据xout(即,逆一次水平变换之后的变换系数coeff_iphor)。该处理可以表示为上述表达式(14)。

当步骤s464中的处理结束时,逆一次水平变换处理结束,并且处理返回到图39。

在上述逆一次水平变换处理中,应用了上述本技术的处理作为步骤s461或s462的处理被执行。因此,通过执行该逆一次水平变换处理,可以抑制水平逆一维正交变换所需的存储器容量的增大。

<2-3.实施方式1-2>

<概念>

接下来,将描述图10中所示的表中除了项目名称的最上一行之外的从顶部起的第三行示例。

如上所述,从顶部起的第三行示例的导出聚焦于成对的dct与dst之间的特性。更具体地,在要配对的dct/dst(例如,dst7和dct8)之间,关注如下点:偶数编号的行向量是轴对称的,而奇数编号的行向量是点对称的。在这种情况下,导出单元翻转第一变换矩阵,并且反转经翻转的第一变换矩阵的奇数编号的行向量的符号,以导出第二变换矩阵。即,如图43所示,导出单元在行方向上翻转dst7的变换矩阵,并且进一步反转奇数阶行向量的符号以无损地导出dct8的变换矩阵。因此,当然,可以用导出的dct8替换具有相同的0阶行向量的波形的dct8的(减小型)变换矩阵。

图44中示出了这种导出的具体示例。如图44所示,这种导出可以由在奇数阶行中具有负元素的单位矩阵d、基础变换矩阵tbase(dst7)和翻转矩阵j的矩阵乘积来表示。

即,在该导出示例中,第二变换矩阵可以通过两次操作(翻转和符号反转)来导出。此外,每个操作均是容易的。也就是说,可以容易地导出第二变换矩阵。

此外,通过应用该导出示例,变得不需要准备dct8的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。

在这种情况下,如图45中的表所示,在非专利文献1中描述的技术的情况下所需的五种类型的变换矩阵(参见图6中的表a)可以减少为四种类型。因此,总lut大小可以为约47kb。即,与非专利文献1中描述的技术的情况相比,lut的大小可以减小(大约53kb(图6中的表a))。也就是说,可以抑制lut的大小的增加。

注意,如上所述,在这种情况下,可以获得变换类型dct8的变换矩阵作为第二变换类型。因此,通过使用第二变换类型的变换矩阵执行正交变换/逆正交变换,可以获得与使用dct8的变换矩阵进行正交变换/逆正交变换的情况相同的编码效率。

<变换矩阵导出单元>

接下来,将描述用于执行这种导出的配置、处理等。首先,将描述图像编码装置100的本实施方式的技术配置。因为在这种情况下一次变换单元152、一次水平变换单元312、一次垂直变换单元313等的配置与参照图22所描述的<2-2.示例1-1>的情况相似,因此省略其描述。

图46是示出在这种情况下的变换矩阵导出单元321(一次水平变换单元312中的变换矩阵导出单元321(图23))的主要配置示例的框图。如图46所示,在这种情况下,变换矩阵导出单元321包括变换矩阵lut331、翻转单元332和符号反转单元501。注意,在图46中,省略了表示数据传送的箭头,但是在变换矩阵导出单元321中,可以在任意处理单元(处理块)之间传送任意数据。

变换矩阵lut331和翻转单元332与图24中的情况相似。

符号反转单元501使用n行和n列的变换矩阵t作为输入,反转变换矩阵t的预定部分的符号,并且输出符号反转后的变换矩阵tinvsign。在该导出示例(示例1-2)的情况下,变换矩阵导出单元321经由翻转单元332水平翻转在变换矩阵lut331中选择的n行和n列的基础变换矩阵tbase,进一步通过符号反转单元501反转奇数阶行向量的符号,并且将变换矩阵tinvsign输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

如上所述,变换矩阵导出单元321可以使用翻转单元332和符号反转单元501实现从图10所示的表的顶部起的第三行示例的导出示例。

<变换矩阵导出单元>

图47是示出在这种情况下在一次垂直变换单元313中包括的变换矩阵导出单元351的主要配置示例的框图。如图47所示,在这种情况下,与变换矩阵导出单元321相似,变换矩阵导出单元351包括变换矩阵lut361、翻转单元362和符号反转单元502。注意,在图47中,省略了表示数据传送的箭头,但在变换矩阵导出单元351中,可以在任意的处理单元(处理块)之间传送任意的数据。

变换矩阵lut361和翻转单元362与图26中的情况相似。

与符号反转单元501相似,符号反转单元502使用n行和n列的变换矩阵t作为输入,反转变换矩阵t的预定部分的符号,并且执行符号反转,并且输出符号反转之后的变换矩阵tinvsign。在该导出示例的情况下,变换矩阵导出单元351通过翻转单元362对变换矩阵lut361中选择的n行和n列的基础变换矩阵tbase进行水平翻转,进一步通过符号反转单元502反转奇数阶行向量的符号,并且将变换矩阵tinvsign输出到变换矩阵导出单元351的外部(提供给矩阵计算单元352)作为变换矩阵tv。

如上所述,变换矩阵导出单元351可以使用翻转单元362和符号反转单元502实现从图10所示的表的顶部起的第三行示例的导出示例。

<变换矩阵导出处理的流程>

因为通过与<2-2.示例1-1>的情况相似的流程来执行这种情况下的一次变换处理、一次水平变换处理和一次垂直变换处理,因此省略对处理的描述。

接下来,将参照图48中的流程图描述在图28中的步骤s321中由一次水平变换单元312中的变换矩阵导出单元321执行的、这种情况下的变换矩阵导出处理的流程的示例。

当变换矩阵导出处理开始时,在步骤s501中,变换矩阵导出单元321例如通过参考图49所示的对应表来获得与变换类型标识符trtypeidxh对应的基础变换类型basetrtype。注意,在该处理被表示为数学表达式时,例如,该处理可以被表示为表达式(17)。此外,变换矩阵导出单元321从变换矩阵lut中读取所获得的基础变换类型的n行和n列的变换矩阵,并且将该变换矩阵设定为基础变换矩阵tbase,如上述表达式(18)所中那样地。

此外,变换矩阵导出单元321如上述表达式(19)中那样将与变换类型标识符trtypeidxh对应的值设定为翻转标志flipflag。此外,变换矩阵导出单元321如下面的表达式(38)中那样,将与变换类型标识符trtypeidxh对应的值设定为符号反转标志invsignflag。

[数学式34]

invsignflag=lut_trtypeldxtoinvsignflag[trtypeidxh]

…(38)

在步骤s502中,变换矩阵导出单元321确定翻转标志flipflag和转置标志transposeflag是否满足由下面的表达式(39)表示的条件(条件b1)。

[数学式35]

条件b1:flipflag==t&&invsignflag==t

…(39)

在确定不满足上述表达式(39)中所示的条件的情况下(即,在确定翻转标志flipflag为假(0)或者确定符号反转标志invsignflag为假(0)的情况下),处理进行到步骤s503。

在步骤s503中,变换矩阵导出单元321将基础变换矩阵tbase设定为变换矩阵th。当步骤s503中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

此外,在步骤s502中,在确定满足上述表达式(39)中所示的条件的情况下(即,在确定翻转标志flipflag为真(1)或者确定符号反转标志invsignflag为真(1)的情况下),处理进行到步骤s504。

在步骤s504中,变换矩阵导出单元321经由翻转单元332翻转基础变换矩阵tbase,并且将经翻转的基础变换矩阵tbase设定为变换矩阵th。即,变换矩阵导出单元321导出flip(tbase)的变换矩阵th。

在步骤s505中,变换矩阵导出单元321使用符号反转单元501反转变换矩阵th的奇数编号的行向量的符号,并且重置变换矩阵th。该处理可以如下面的表达式(40)中那样表示为行列式。

[数学式36]

th=d×th…(40)

这里,x是表示矩阵乘积的运算符,符号反转矩阵d是包括diag(1,-1,...,(-1)n-1)的对角矩阵。

此外,该处理还可以被表示为针对每个元素的运算,如下面的表达式(41)中那样。利用该表达式,可以在没有符号反转矩阵d的情况下实现该处理。在该情况下,变换矩阵导出单元321将变换矩阵th的第i行第j列分量((i,j)分量)的奇数编号的行(i%2==1)的分量的正负符号反转。

[数学式37]

th[i,j]=(-1)*th[i,j]

对于i,j=0,...,n-1且i%2==1

…(41)

这里,n行和n列的变换矩阵th的第i行第j列分量((i,j)分量)被写为th[i,j]。此外,第二行上的“对于i,j=0,...,n-1且i%2==1”指示j具有0到n-1的值,且i具有在0到n-1的范围内的奇数值。即,这意味着th[i,j]指示n行和n列的变换矩阵th的奇数阶行向量(的每个元素)。

当步骤s505中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

<变换矩阵导出处理的流程>

注意,由于在一次垂直变换处理的步骤s361(图32)中执行的变换矩阵导出处理的流程与参照图48中的流程图描述的在一次水平变换中执行的变换矩阵导出处理的情况相似,因此省略其描述。

<变换矩阵导出单元>

接下来,将描述在该情况下的图像解码装置200的配置。由于在这种情况下包括在图像解码装置200中的逆一次变换单元253、逆一次垂直变换单元412、逆一次水平变换单元413等的配置与<2-2.示例1-1>的情况相似,因此省略其描述。

图50是示出在这种情况下的变换矩阵导出单元421(逆一次垂直变换单元412中的变换矩阵导出单元421)的主要配置示例的框图。如图50所示,与变换矩阵导出单元321相似,在这种情况下的变换矩阵导出单元421包括变换矩阵lut431、翻转单元432和符号反转单元511。注意,在图50中,省略了表示数据传送的箭头,但是在变换矩阵导出单元421中,可以在任意处理单元(处理块)之间传送任意数据。

变换矩阵lut431和翻转单元432与图36中的情况相似。与符号反转单元501相似,符号反转单元511使用n行和n列的变换矩阵t作为输入,反转变换矩阵t的预定部分的符号,并且执行符号反转,并且输出符号反转之后的变换矩阵tinvsign。在该导出示例的情况下,变换矩阵导出单元421通过翻转单元432对在变换矩阵lut431中选择的n行n列的基础变换矩阵tbase进行水平翻转,进一步通过符号反转单元511将奇数阶行向量的符号反转,并且将变换矩阵tinvsign输出到变换矩阵导出单元421的外部(提供给矩阵计算单元422)作为变换矩阵tv。

如上所述,变换矩阵导出单元421可以使用翻转单元432和符号反转单元511来实现从图10所示的表的顶部起的第三行示例的导出示例。

<变换矩阵导出单元>

图51是示出在这种情况下包括在逆一次水平变换单元413中的变换矩阵导出单元451的主要配置示例的框图。如图51所示,在这种情况下,与变换矩阵导出单元421相似,变换矩阵导出单元451包括变换矩阵lut461、翻转单元462和符号反转单元512。注意,在图51中,省略了表示数据传送的箭头,但在变换矩阵导出单元451中,可以在任意的处理单元(处理块)之间传送任意的数据。

变换矩阵lut461和翻转单元462与图50中的情况相似。与符号反转单元501相似,符号反转单元512使用n行和n列的变换矩阵t作为输入,反转变换矩阵t的预定部分的符号,并且执行符号反转,并且输出符号反转之后的变换矩阵tinvsign。在该导出示例的情况下,变换矩阵导出单元451通过翻转单元462对变换矩阵lut461中选择的n行和n列的基础变换矩阵tbase进行水平翻转,进一步通过符号反转单元512将奇数阶行向量的符号反转,并且将变换矩阵tinvsign输出到变换矩阵导出单元451的外部(提供给矩阵计算单元452)作为变换矩阵tv。

如上所述,变换矩阵导出单元451可以使用翻转单元462和符号反转单元512来实现从图10所示的表的顶部起的第三行示例的导出示例。

<变换矩阵导出处理的流程>

注意,变换矩阵导出单元421和变换矩阵导出单元451通过与参照图48中的流程图描述的情况相似的流程执行变换矩阵导出处理,并且因此省略对该处理的描述。

<2-4.示例1-3>

<概念>

接下来,将描述图10中所示的表中的除了项目名称的最上一行之外的从顶部起的第四行示例和第五行示例。

如上所述,与从顶部起的第一行示例的情况相似,从顶部起的第四行示例的导出聚焦于第一变换类型的最低阶行向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。在这种情况下,导出单元翻转第一变换矩阵以导出第二变换矩阵。即,如图52所示,导出单元使用dct8的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵以导出flipdct8的变换矩阵。可以用flipdct8的变换矩阵替换具有相似的0阶行向量的波形的dst7的(增大型)变换矩阵。

此外,从顶部起的第五行示例的导出聚焦于第一变换类型的最高阶列向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。在这种情况下,导出单元翻转第一变换矩阵,并且对经翻转的第一变换矩阵进行转置,以导出第二变换矩阵。即,如图52所示,导出单元使用dct8的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵,并且进一步转置变换矩阵以导出trflipdct8的变换矩阵。可以用trflipdct8的变换矩阵替换具有相似的0阶行向量的波形的dst1的(人字型)变换矩阵。

即,在以上两个导出示例两者中,第二变换矩阵可以通过一次或两次操作(翻转、或者翻转和转置)来导出。此外,操作简单。也就是说,可以容易地导出第二变换矩阵。

此外,通过应用上述两个导出示例,变得不需要准备dst7的变换矩阵和dst1的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。

在这种情况下,如图53中的表所示,在非专利文献1中描述的技术的情况下所需的五种类型的变换矩阵(参见图6中的表a)可以减少为三种类型。因此,总lut大小可以为约40kb。即,与非专利文献1中描述的技术的情况相比,lut的大小可以减小(大约53kb(图6中的表a))。也就是说,可以抑制lut的大小的增大。

注意,如上所述,即使在这种情况下,通过使用导出的第二变换类型(flipdct8或trflipdct8)的变换矩阵执行正交变换/逆正交变换,也可以获得与使用dst7的变换矩阵或dst1的变换矩阵进行正交变换/逆正交变换的情况相似的编码效率。

<配置>

因为在这种情况下图像编码装置100和图像解码装置200的配置与<2-2.示例1-1>中描述的配置相似,因此省略其描述。

<变换矩阵导出处理的流程>

接下来,将描述处理流程的流程。因为通过与<2-2.示例1-1>等中描述的示例相似的流程来执行变换矩阵导出处理之外的处理,因此省略对该处理的描述。

将参照图54中的流程图描述在图28中的步骤s321中由一次水平变换单元312中包括的变换矩阵导出单元321执行的、这种情况下的变换矩阵导出处理的流程的示例。

当变换矩阵导出处理开始时,在步骤s521中,变换矩阵导出单元321例如通过参考图55所示的对应表来获得与变换类型标识符trtypeidxh对应的基础变换类型basetrtype。

此外,与图30中的流程图的步骤s341的情况相似,变换矩阵导出单元321设定与变换类型标识符trtypeidxh对应的翻转标志flipflag的值以及与变换类型标识符trtypeidxh对应的转置标志transposeflag的值。

在步骤s522中,变换矩阵导出单元321确定翻转标志flipflag是否满足由下面的表达式(42)表达的条件(条件c1)。

[数学式38]

条件c1:flipflag==t…(42)

在确定不满足上述条件(条件c1)的情况下(在翻转标志flipflag为假(0)的情况下),处理进行到步骤s523。

在步骤s523中,与图30中的步骤s343的情况相似,变换矩阵导出单元321将基础变换矩阵tbase设定为变换矩阵th。当步骤s523中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

此外,在步骤s522中,在确定满足上述条件(条件c1)的情况下(在翻转标志flipflag为真(1)的情况下),处理进行到步骤s524。

在步骤s524中,变换矩阵导出单元321水平翻转基础变换矩阵tbase,并且将经翻转的变换矩阵flip(tbase)设定为变换矩阵ttmp。该处理可以表示为下面的表达式(43)。

[数学式39]

ttmp=flip(tbase)=tbase×j…(43)

在步骤s525中,变换矩阵导出单元321确定转置标志transposeflag是否满足由下面的表达式(44)表示的条件(条件c2)。

[数学式40]

条件c2:transposeflag==t…(44)

在确定不满足上述条件(条件c2)的情况下(在转置标志transposeflag为假(0)的情况下),处理进行到步骤s526。

在步骤s526中,变换矩阵导出单元321将变换矩阵ttmp设定为变换矩阵th。该处理可以表示为下面的表达式(45)。

[数学式41]

th=ttmp…(45)

当步骤s526中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。此外,在步骤s525中,在确定满足上述条件(条件c2)的情况下(在转置标志transposeflag为真(1)的情况下),处理进行到步骤s527。

在步骤s527中,变换矩阵导出单元321将通过对变换矩阵ttmp进行转置而获得的tr(tmp)设定为变换矩阵th。该处理例如可以表示为下面的表达式(46)。

[数学式42]

th=tr(ttmp)=ttmpt…(46)

当步骤s527中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

通过执行如上所述的变换矩阵导出处理,可以在水平一维正交变换中实现从图10的表的顶部起的第四行和第五行示例的导出示例。因此,可以抑制所需的存储容量的增大。

注意,已经给出了以上使得依次执行翻转和转置的描述。然而,可以(通过一次操作)共同(collectively)执行翻转和转置。例如,共同执行图54中的步骤s522和s525中的确定,并且在这两个确定为真(1)的情况下,可以共同执行翻转和转置。

例如,当翻转操作和转置操作被表示为针对每个元素的运算时,基础变换矩阵tbase的(i,n-1-j)分量被设定为变换矩阵th的第j行第i列分量((j,i)分量)。即,可以将操作表示为下面的表达式(47)。

[数学式43]

th[j,i]=tbase[i,n-1-j]

对于i,j=0,...,n-1

…(47)

这里,n行和n列的变换矩阵th的第i行第j列分量((i,j)分量)被写为th[i,j]。此外,第二行上的“对于i,j=0,...,n-1”指示i和j具有0到n-1的值。也就是说,这意味着th[i,j]表示n行和n列的变换矩阵th的所有元素。

以这种方式,翻转和转置可以通过一次操作来实现,这是通过访问简单的二维阵列来实现的。此外,由于不需要翻转矩阵j,所以可以以翻转矩阵j的容量抑制存储容量的增大。

注意,在本示例的情况下,在图32的步骤s361中,还通过与图54中的流程图相似的流程来执行由一次垂直变换单元313中包括的变换矩阵导出单元351执行的变换矩阵导出处理。

此外,在本示例的情况下,在图41的步骤s441中,还通过与图54中的流程图相似的流程来执行由逆一次垂直变换单元412中包括的变换矩阵导出单元421执行的变换矩阵导出处理。

此外,在本示例的情况下,在图42的步骤s461中,还通过与图54中的流程图相似的流程来执行由逆一次水平变换单元413中所包括的变换矩阵导出单元451执行的变换矩阵导出处理。

因此,省略对上述处理的描述。

<2-5.示例1-4>

<概念>

接下来,将描述图10中所示的表中的除了项目名称的最上一行之外的从顶部起的第六行示例。

如上所述,与从顶部起的第三行示例的情况(示例1-2)相似,从顶部起的第六行示例的导出聚焦于成对的dct与dst之间的特性。更具体地,在要配对的dct/dst(例如,dct8与dst7)之间,关注如下点:偶数编号的行向量是轴对称的,而奇数编号的行向量是点对称的。在这种情况下,导出单元翻转第一变换矩阵,并且反转经翻转的第一变换矩阵的奇数编号的行向量的符号,以导出第二变换矩阵。即,如图56所示,导出单元使用dct8的变换矩阵作为基础变换矩阵tbase,并且在行方向上翻转变换矩阵,并且进一步反转奇数阶行向量的符号以无损地导出dst7的变换矩阵。因此,当然,可以用导出的dst7的变换矩阵来替换具有相同的0阶行向量的波形的dst7的(增大型)变换矩阵。

即,在该导出示例中,第二变换矩阵可以通过两次操作(翻转和符号反转)来导出。此外,操作简单。也就是说,可以容易地导出第二变换矩阵。

此外,通过应用该导出示例,变得不需要准备dst7的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。

在这种情况下,如图57中的表所示,在非专利文献1中描述的技术的情况下所需的五种类型的变换矩阵(参见图6中的表a)可以减少为四种类型。因此,总lut大小可以为约47kb。即,与非专利文献1中描述的技术的情况相比,lut的大小可以减小(大约53kb(图6中的表a))。也就是说,可以抑制lut的大小的增大。

此外,在该导出示例中,可以导出dst7的变换矩阵作为第二变换矩阵。因此,通过使用第二变换矩阵执行正交变换/逆正交变换,可以获得与使用dst7的变换矩阵进行正交变换/逆正交变换的情况相同的编码效率。

<配置和处理的流程>

因为在这种情况下图像编码装置100和图像解码装置200的配置与<2-3.示例1-2>中描述的配置相似,因此省略其描述。此外,由于由图像编码装置100和图像解码装置200执行的处理与<2-3.示例1-2>中描述的处理相似,因此省略其描述。

注意,在本示例的情况下,在变换矩阵导出处理中获得与变换类型标识符trtypeidxh对应的基础变换类型时,例如,通过参考图58所示的对应表来获得基础变换类型。除了上述之外,根据与参照图48中的流程图描述的情况相似的流程来简单地执行该处理。

<2-6.示例1-5>

<概念>

接下来,将描述图10中所示的表中的除了项目名称的最上一行之外的从顶部起的第七行示例和第八行示例。

如上所述,与从顶部起的第一行示例的情况相似,从顶部起的第七行示例的导出聚焦于于第一变换类型的最低阶行向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。注意,在这种情况下,导出单元对第一变换矩阵进行转置以导出第二变换矩阵。即,如图59所示,导出单元使用dct2的变换矩阵作为基础变换矩阵tbase,并且对变换矩阵进行转置以导出dct3的变换矩阵。可以用dct3的变换矩阵替换具有相似的0阶行向量的波形的dct8的(减小型)变换矩阵。

此外,与从顶部起的第五行示例的情况相似,从顶部起的第八行的示例的导出聚焦于第一变换类型的最高阶列向量的波形与要被替换的变换矩阵的变换类型的最低阶行向量的波形之间的相似性。在这种情况下,导出单元对第一变换矩阵进行转置,并且翻转经转置的第一变换矩阵以导出第二变换矩阵。即,如图59所示,导出单元使用dct2的变换矩阵作为基础变换矩阵tbase,并且对变换矩阵进行转置,并且进一步在行方向上翻转变换矩阵以导出flipdct3的变换矩阵。可以用flipdct3的变换矩阵替换具有相似的0阶行向量的波形的dst7的(增大型)变换矩阵。

即,在以上两个导出示例两者中,第二变换矩阵可以通过一次或两次操作(转置、或者转置和翻转)来导出。此外,操作简单。也就是说,可以容易地导出第二变换矩阵。

此外,通过应用上述两个导出示例,变得不需要准备dct8的变换矩阵和dst7的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,可以减少单一变换类型的数目。

在这种情况下,如图60中的表所示,在非专利文献1中描述的技术的情况下所需的五种类型的变换矩阵(参见图6中的表a)可以减少为三种类型。因此,总lut大小可以为约40kb。即,与非专利文献1中描述的技术的情况相比,lut的大小可以减小(大约53kb(图6中的表a))。也就是说,可以抑制lut的大小的增大。

注意,如上所述,即使在这种情况下,通过使用导出的第二变换类型(dct3或flipdct3)的变换矩阵来执行正交变换/逆正交变换,也可以获得与使用dct8的变换矩阵或dst7的变换矩阵进行正交变换/逆正交变换的情况相似的编码效率。

<配置>

因为在这种情况下图像编码装置100和图像解码装置200的配置与<2-2.示例1-1>中描述的配置相似,因此省略其描述。

<变换矩阵导出处理的流程>

接下来,将描述处理流程的流程。因为通过与<2-2.示例1-1>等中描述的示例相似的流程来执行除变换矩阵导出处理之外的处理,因此省略对处理的描述。

将参照图61中的流程图描述在图28中的步骤s321中由一次水平变换单元312中包括的变换矩阵导出单元321执行的、这种情况下的变换矩阵导出处理的流程的示例。

当变换矩阵导出处理开始时,在步骤s541中,变换矩阵导出单元321例如通过参考图62所示的对应表来获得与变换类型标识符trtypeidxh对应的基础变换类型basetrtype。

此外,与图30中的流程图的步骤s341的情况相似,变换矩阵导出单元321设定与变换类型标识符trtypeidxh对应的翻转标志flipflag的值以及与变换类型标识符trtypeidxh对应的转置标志transposeflag的值。

在步骤s542中,变换矩阵导出单元321确定转置标志transposeflag是否满足下面的表达式(48)所表示的条件(条件d1)。

[数学式44]

条件d1:transposeflag==t

…(48)

在确定不满足上述条件(条件d1)的情况下(转置标志transposeflag为假(0)的情况下),处理进行到步骤s543。

在步骤s543中,与图30中的步骤s343的情况相似,变换矩阵导出单元321将基础变换矩阵tbase设定为变换矩阵th。当步骤s543中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

此外,在步骤s542中,在确定满足上述条件(条件d1)的情况下(在转置标志transposeflag为真(1)的情况下),处理进行到步骤s544。

在步骤s544中,变换矩阵导出单元321在水平方向上转置基础变换矩阵tbase,并且将经转置的变换矩阵tr(tbase)设定为变换矩阵ttmp。该处理可以表示为下面的表达式(49)。

[数学式45]

ttmp=tr(tbase)=tbaset…(49)

在步骤s545中,变换矩阵导出单元321确定翻转标志flipflag是否满足由下面的表达式(50)表示的条件(条件d2)。

[数学式46]

条件d2;flipflag==t

…(50)

在确定不满足上述条件(条件d2)的情况下(在翻转标志flipflag为假(0)的情况下),处理进行到步骤s546。

在步骤s546中,变换矩阵导出单元321将变换矩阵ttmp设定为变换矩阵th,如在上述表达式(45)中那样。

当步骤s546中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。此外,在步骤s545中,在确定满足上述条件(条件d2)的情况下(在翻转标志flipflag为真(1)的情况下),处理进行到步骤s547。

在步骤s547中,变换矩阵导出单元321将通过翻转变换矩阵ttmp而获得的flip(tmp)设定为变换矩阵th。该处理例如可以表示为下面的表达式(51)。

[数学式47]

th=flip(ttmp)=ttmp×j…(51)

当步骤s547中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

通过执行如上所述的变换矩阵导出处理,可以在水平一维正交变换中实现从图10的表的顶部起的第七行和第八行示例的导出示例。因此,可以抑制所需的存储器容量的增大。

注意,已经给出了上述使得转置和翻转被依次执行的描述。然而,转置和翻转可以(通过一次操作)共同执行。例如,共同执行图61中的步骤s542和s545中的确定,并且在这两个确定均为真(1)的情况下,可以共同执行转置和翻转。

例如,当转置操作和翻转操作被表示为针对每个元素的运算时,基础变换矩阵tbase的(j,i)分量被设定为变换矩阵th的第i行第(n-1-j)列分量((i,(n-1-j)分量)。即,该处理可以被表示为下面的表达式(52)。

[数学式48]

th[i,n-1-j]=tbase[j,i]

对于i,j=0,...,n-1

…(52)

此处,n行和n列的变换矩阵th的第i行第j列分量((i,j)分量)被写为th[i,j]。此外,第二行上的“对于i,j=0,...,n-1”指示i和j具有0到n-1的值。也就是说,这意味着th[i,j]表示n行和n列的变换矩阵th的所有元素。

以这种方式,可以通过一次操作来实现转置和翻转,这是通过访问简单的二维阵列而实现的。此外,由于不需要翻转矩阵j,所以可以以翻转矩阵j的容量来抑制存储容量的增大。

注意,在本示例的情况下,在图32的步骤s361中,还通过与图61中的流程图相似的流程来执行由一次垂直变换单元313中包括的变换矩阵导出单元351执行的变换矩阵导出处理。例如,在图61的流程图中,通过用trtypeidxv替换变换类型标识符trtypeidxh并且用变换矩阵tv替换变换矩阵th来简单地进行说明。

此外,在本示例的情况下,在图41的步骤s441中,还通过与图61中的流程图相似的流程来执行由逆一次垂直变换单元412中包括的变换矩阵导出单元421执行的变换矩阵导出处理。例如,在图61的流程图中,通过用trtypeidxv替换变换类型标识符trtypeidxh并且用变换矩阵tv替换变换矩阵th来简单地进行说明。

此外,在本示例的情况下,在图42的步骤s461中,还通过与图61中的流程图相似的流程来执行由逆一次水平变换单元413中包括的变换矩阵导出单元451执行的变换矩阵导出处理。

因此,省略对上述处理的描述。

<3.第二实施方式>

<3-1.公共概念>

<预测残差置换操作>

在第一实施方式中,已经描述了对变换矩阵进行操作以生成另外的变换矩阵。然而,不仅可以对变换矩阵进行操作,而且可以对预测残差进行操作。即,可以对图像的预测残差进行置换操作,可以使用用作基础的变换矩阵对进行了置换操作的预测残差进行正交变换,并且可以对通过对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

例如,图像处理设备可以包括:操作单元,其被配置成对图像的预测残差进行置换操作;正交变换单元,其被配置成使用用作基础的变换矩阵对由操作单元进行了置换操作的预测残差进行正交变换;以及编码单元,其被配置成对通过由正交变换单元对预测残差进行正交变换而获得的系数数据进行编码,以生成比特流。

即使在这种情况下,也可以实现与第一实施方式的情况等同的二维正交变换。即,基本上可以通过使用特定变换矩阵的正交变换来实现使用另外的变换矩阵的正交变换。因此,与第一实施方式的情况相似,可以抑制为正交变换准备的变换矩阵的数目的增大,并且可以抑制正交变换所需的存储器容量的增大。此外,由于与第一实施方式的情况相比可以减少操作的数目,因此可以抑制正交变换的处理量的增大。

此外,可以对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据,可以对所获得的系数数据进行逆正交变换,并且可以对所获得的系数数据的逆正交变换结果进行置换。

例如,图像处理设备可以包括:解码单元,其被配置成对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;逆正交变换单元,其被配置成对由解码单元获得的系数数据进行逆正交变换;以及操作单元,其被配置成对由逆正交变换单元获得的系数数据的逆正交变换结果执行置换操作。

即使在这种情况下,也可以实现与第一实施方式的情况等同的逆二维正交变换。即,基本上可以通过使用特定变换矩阵的逆正交变换,来实现通过另外的变换矩阵的逆正交变换。因此,与第一实施方式的情况相似,可以抑制为逆正交变换准备的变换矩阵的数目的增大,并且可以抑制逆正交变换所需的存储器容量的增大。此外,由于与第一实施方式的情况相比可以减少操作的数目,因此可以抑制逆正交变换的处理量的增大。

将给出更具体的描述。当聚焦于两个不同的二维正交变换(包括预测残差)的空间对称性时,存在一些情况:其中在特定方向(水平方向或垂直方向)上、在一维正交变换之间存在轴对称性,诸如在dst7的变换矩阵和作为dst7的经翻转的变换矩阵的flipdst7的变换矩阵之间。另外,对于预测残差,存在一些情况:其中在特定方向(水平方向或垂直方向)上、在预测残差之间存在轴对称性,诸如在预测残差(x)和经翻转的预测残差(x·j)之间。

在这种情况下,例如,如图63所示,通过使用第一变换矩阵对经翻转的原始预测残差进行正交变换,可以替换使用作为经翻转的第一变换矩阵的第二变换矩阵对原始预测残差进行的正交变换。

在图63中的示例的情况下,在图63的左侧,如下面的表达式(53)中那样,对原始预测残差执行使用第一变换矩阵的垂直一维正交变换和使用经翻转的第一变换矩阵的水平一维正交变换。

[数学式49]

y=t2·x·(t1t·j)…(53)

同时,在图63的右侧,示出了预测残差的翻转(下面的表达式(54))以及使用第一变换矩阵的对经翻转的预测残差的垂直一维正交变换和水平一维正交变换(下面的表达式(55))。

[数学式50]

x’=(x·j)…(54)

y=t2·x’·t1t···(55)

这两个二维正交变换具有空间对称性。因此,一个可以被另一个替换。

换言之,在基础变换矩阵(变换类型)与使用基础变换矩阵导出的用于预测残差的正交变换的变换矩阵之间存在空间对称性的情况下,通过在空间对称性的方向上翻转预测残差,并且使用基础变换矩阵对经翻转的预测残差进行正交变换,可以替换使用另外的变换矩阵的正交变换(使用利用基础变换矩阵导出的变换矩阵的对翻转前的预测残差的正交变换)。

即,操作单元可以在一维正交变换之间的空间对称性方向上翻转预测残差,并且正交变换单元可以使用用作基础的变换矩阵对通过操作单元被翻转的预测残差进行正交变换。通过这样做,可以执行与使用另外的变换矩阵的正交变换等同的正交变换。即,如上所述,可以基本上实现使用另外的变换矩阵的正交变换。因此,可以抑制为正交变换准备的变换矩阵的数目的增大,并且可以抑制正交变换所需的存储器容量的增大。

这类似地适用于逆正交变换。即,可以通过使用基础变换矩阵,对通过对比特流进行解码而获得的系数数据进行逆正交变换,并且可以通过操作单元在一维正交变换之间的空间对称性方向上翻转逆正交变换结果。利用该配置,基本上可以实现使用另外的变换矩阵的逆正交变换。因此,可以抑制为逆正交变换准备的变换矩阵的数目的增大,并且可以抑制逆正交变换所需的存储器容量的增大。

例如,图64中的左侧示出如下二维正交变换:其中,对预测残差x执行使用作为dst7的经翻转的变换矩阵的flipdst7的水平一维正交变换和使用dst7的变换矩阵的垂直一维正交变换。此外,图64中的右侧示出如下二维正交变换:其中,针对通过水平翻转预测残差x而获得的预测残差x'(=x·j)执行使用dst7的变换矩阵的水平一维正交变换和垂直一维正交变换。这些是彼此水平对称的并且是等同的。因此,例如,前一种二维正交变换可以被后一种二维正交变换替换。注意,前一种二维正交变换由下面的表达式(56)表示,而后一种二维正交变换由下面的表达式(57)表示。

[数学式51]

y=t2·x·(t1·j)t…(56)

y=t2·(x·j)·t1t…(57)

即,例如,在基础变换矩阵(变换类型)与使用基础变换矩阵导出的用于预测残差正交变换的变换矩阵之间存在水平对称性的情况下,操作单元可以水平翻转预测残差,并且正交变换单元可以使用基础变换矩阵对通过操作单元被水平翻转的预测残差进行正交变换。通过这样做,基本上可以实现与使用基础变换矩阵的正交变换具有水平对称性的、使用另外的变换矩阵的正交变换。

这类似地适用于逆正交变换。即,在基础变换矩阵(变换类型)与使用基础变换矩阵导出的、要用于系数数据逆正交变换的变换矩阵之间存在水平对称性的情况下,逆正交变换单元可以使用基础变换矩阵对通过对比特流进行解码而获得的系数数据进行逆正交变换,并且操作单元可以水平翻转逆正交变换结果。通过这样做,基本上可以实现与使用基础变换矩阵的逆正交变换具有水平对称性的使用另外的变换矩阵的逆正交变换。

此外,例如,图65中的左侧示出如下二维正交变换:其中,对预测残差x执行使用dst7的变换矩阵的水平一维正交变换和使用作为dst7的经翻转的变换矩阵的flipdst7的垂直一维正交变换。此外,图65中的右侧示出如下二维正交变换:其中,针对通过垂直翻转预测残差x而获得的预测残差x'(=j·x)执行使用dst7的变换矩阵的水平一维正交变换和垂直一维正交变换。这些是彼此垂直对称的并且是等同的。因此,例如,前一种二维正交变换可以被后一种二维正交变换替换。注意,前一种二维正交变换由下面的表达式(58)表示,而后一种二维正交变换由下面的表达式(59)表示。

[数学式52]

y=(t2·j)·x·t1t…(58)

y=t2·(t·x)·t1t…(59)

即,例如,在基础变换矩阵(变换类型)与使用基础变换矩阵导出的、要用于预测残差正交变换的变换矩阵之间存在垂直对称性的情况下,操作单元可以垂直翻转预测残差,并且正交变换单元可以使用基础变换矩阵对通过操作单元被垂直翻转的预测残差进行正交变换。通过这样做,基本上可以实现与使用基础变换矩阵的正交变换具有垂直对称性的、使用另外的变换矩阵的正交变换。

这类似地适用于逆正交变换。即,在基础变换矩阵(变换类型)与使用基础变换矩阵导出的、要用于系数数据逆正交变换的变换矩阵之间存在垂直对称性的情况下,逆正交变换单元可以使用基础变换矩阵对通过对比特流进行解码而获得的系数数据进行逆正交变换,并且操作单元可以垂直地翻转逆正交变换结果。通过这样做,基本上可以实现与使用基础变换矩阵的逆正交变换具有垂直对称性的、使用另外的变换矩阵的逆正交变换。

此外,例如,图66中的左侧示出如下二维正交变换:其中,对预测残差x执行使用作为dst7的经翻转的变换矩阵的flipdst7的水平一维正交变换和垂直一维正交变换。此外,图66中的右侧示出如下二维正交变换:其中,对通过水平和垂直地翻转预测残差x而获得的预测残差x′(=j·x·j)执行使用dst7的变换矩阵的水平一维正交变换和垂直一维正交变换。这些是彼此水平和垂直对称的并且是等同的。因此,例如,前一种二维正交变换可以被后一种二维正交变换替换。注意,前一种二维正交变换由下面的表达式(60)表示,而后一种二维正交变换由下面的表达式(61)表示。

[数学式53]

y=(t2·j)·x·(t1·j)t…(60)

y=t2·(j·x·j)·t1t…(61)

即,例如,在基础变换矩阵(变换类型)与使用基础变换矩阵导出的、要用于预测残差正交变换的变换矩阵之间存在水平对称性和垂直对称性的情况下,操作单元可以水平和垂直翻转预测残差,并且正交变换单元可以使用基础变换矩阵对通过操作单元被水平和垂直翻转的预测残差进行正交变换。通过这样做,基本上可以实现与使用基础变换矩阵的正交变换具有水平对称性和垂直对称性的、使用另外的变换矩阵的正交变换。

这类似地适用于逆正交变换。即,在基础变换矩阵(变换类型)与使用基础变换矩阵导出的、要用于系数数据逆正交变换的变换矩阵之间存在水平对称性和垂直对称性的情况下,逆正交变换单元可以使用基础变换矩阵对通过对比特流进行解码而获得的系数数据进行逆正交变换,并且操作单元可以水平和垂直地翻转逆正交变换结果。通过这样做,基本上可以实现与使用基础变换矩阵的逆正交变换具有水平对称性和垂直对称性的、使用另外的变换矩阵的逆正交变换。

注意,在上述表达式(60)的情况下,变换矩阵t1和t2被翻转,从而需要两次操作。相比之下,在上述表达式(61)的情况下,可以用置换矩阵p与预测残差x的矩阵乘积置换预测残差(j·x·j)的翻转。也就是说,需要一次操作。因此,与上述表达式(60)的情况(在翻转变换矩阵的情况下)相比,可以减少操作的数目,并且可以抑制正交变换/逆正交变换的处理量的增大(可以更容易地执行正交变换/逆正交变换)。即,可以抑制正交变换处理/逆正交变换处理的负荷的增大。此外,可以以更高的速度执行正交变换/逆正交变换。

<变换矩阵的符号反转>

除了预测残差的置换操作之外,还可以应用变换矩阵的操作。例如,导出单元可以使用第一变换矩阵导出第二变换矩阵,操作单元可以在一维正交变换之间的空间对称性方向上翻转预测残差,并且正交变换单元可以使用由导出单元导出的第二变换矩阵对通过操作单元被翻转的预测残差进行正交变换。通过这样做,可以基本上实现使用另外的变换矩阵的正交变换。因此,可以抑制为正交变换准备的变换矩阵的数目的增大,并且可以抑制正交变换所需的存储器容量的增大。

这类似地适用于逆正交变换。例如,导出单元可以使用第一变换矩阵导出第二变换矩阵,逆正交变换单元可以使用由导出单元导出的第二变换矩阵对由解码单元获得的系数数据进行逆正交变换,并且操作单元可以对由逆正交变换单元获得的系数数据的逆正交变换结果进行置换。通过这样做,基本上可以实现使用另外的变换矩阵的逆正交变换。因此,可以抑制为逆正交变换准备的变换矩阵的数目的增大,并且可以抑制逆正交变换所需的存储器容量的增大。

注意,在正交变换或逆正交变换中的导出中,导出单元可以导出与第一变换矩阵具有相同的行数和相同的列数的第二变换矩阵。在改变行数和列数的情况下,存在波形类型被无意地改变的可能性。因此,通过将行数和列数设定为与第一变换矩阵的行数和列数相同,可以抑制波形类型的非预期改变的可能性,并且可以更容易地导出第二变换矩阵。

此外,在导出第二变换矩阵时,导出单元可以对第一变换矩阵的奇数编号的行向量的符号进行反转以导出第二变换矩阵。通过置换预测残差、使用如上所述的那样导出的第二变换矩阵来执行正交变换,可以实现(替换)使用另外的变换矩阵的、对预测残差的正交变换,对于该另外的变换矩阵,偶数编号的行向量相对于第一变换矩阵轴对称,并且奇数编号的行向量相对于第一变换矩阵点对称。此外,通过使用如上所述的那样导出的第二变换矩阵执行逆正交变换,并且如上所述地那样置换逆正交变换结果,可以实现(替换)使用另外的变换矩阵的逆正交变换,对于该另外的变换矩阵,偶数编号的行向量相对于第一变换矩阵轴对称,并且奇数编号的行向量相对于第一变换矩阵点对称。

<预测残差操作示例>

图67中示出用于替换使用另外的变换矩阵的正交变换/逆正交变换的预测残差操作示例的列表。

在图67所示的表中,除了项目名称的最上一行之外的从顶部起的第一行示例的操作聚焦于在两个不同的二维正交变换中、在特定方向(水平方向和垂直方向中的一个或两个)上在一维正交变换之间存在轴对称性的事实。

在这种情况下,操作单元在一维正交变换之间的空间对称性方向上翻转预测残差,并且正交变换单元使用用作基础的变换矩阵来对通过操作单元被翻转的预测残差进行正交变换。更具体地,操作单元翻转预测残差,以及正交变换单元使用dst7的变换矩阵作为基础变换矩阵tbase,并且使用dst7的变换矩阵对经翻转的预测残差进行正交变换。通过这样做,可以替换使用flipdst7的变换矩阵的、针对未翻转的预测残差的正交变换。注意,翻转预测残差的方向对应于空间对称性方向(水平方向和垂直方向中的一个或两个)。

这类似地适用于逆正交变换。逆正交变换单元使用基础变换矩阵对通过对比特流进行解码而获得的系数数据进行逆正交变换,并且操作单元在一维正交变换之间的空间对称性方向上翻转逆正交变换结果。更具体地,逆正交变换单元使用dst7的变换矩阵对系数数据进行逆正交变换,并且操作单元翻转逆正交变换结果。通过这样做,可以替换使用flipdst7的变换矩阵的对系数数据的逆正交变换。注意,翻转逆正交变换结果的方向对应于空间对称性方向(水平方向和垂直方向中的一个或两个)。

通过应用针对预测残差(包括逆正交变换结果)的这种操作,变得不需要准备flipdst7的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,与第一实施方式的情况相似,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增加。此外,通过执行涉及针对预测残差(包括逆正交变换结果)的这种操作的正交变换/逆正交变换,可以获得与使用flipdst7的变换矩阵的正交变换/逆正交变换的情况相似的编码效率。

此外,由于可以通过共同操作(collectiveoperation)来执行对预测残差(包括逆正交变换结果)的二维翻转操作,因此与使用flipdst7的变换矩阵的正交变换/逆正交变换的情况相比,可以减少翻转操作的数目。因此,可以抑制正交变换/逆正交变换的处理量的增大(可以更容易地执行正交变换/逆正交变换)。即,可以抑制正交变换处理/逆正交变换处理的负荷的增大。此外,可以以更高的速度执行正交变换/逆正交变换。

此外,第一行示例下方一行(从顶部起的第二行)的操作聚焦于两个不同的二维正交变换中的、在特定方向(水平方向和垂直方向中的一个或两个)上的一维正交变换之间的相似性。更具体地,关注偶数编号的行向量中的轴对称性和奇数编号的行向量中的点对称性。

在这种情况下,导出单元使用第一变换矩阵导出第二变换矩阵,操作单元置换图像的预测残差,并且正交变换单元使用由导出单元导出的第二变换矩阵对通过操作单元被置换的预测残差进行正交变换。更具体地,导出单元反转dst7的变换矩阵的奇数编号的行向量的符号,操作单元翻转预测残差,并且正交变换单元使用已经由导出单元导出的、通过反转dst7的变换矩阵的奇数编号的行向量的符号而获得的变换矩阵,来对经翻转的预测残差进行正交变换。通过这样做,可以替换使用dct8的变换矩阵的对未翻转的预测残差的正交变换。

注意,翻转预测残差的方向对应于空间对称性方向(水平方向和垂直方向中的一个或两个)。此外,由于对变换矩阵的操作仅是奇数编号的行向量的符号反转,因此由导出单元导出的变换矩阵的行数和列数与dst7的行数和列数相同。

这类似地适用于逆正交变换。导出单元使用第一变换矩阵导出第二变换矩阵,逆正交变换单元使用第二变换矩阵对通过对比特流进行解码而获得的系数数据进行逆正交变换,以及操作单元在一维正交变换之间的空间对称性方向上翻转逆正交变换结果。更具体地,导出单元反转dst7的变换矩阵的奇数编号的行向量的符号,逆正交变换单元使用具有经反转的奇数编号的行向量的符号的dst7的变换矩阵来对系数数据进行逆正交变换,并且操作单元翻转逆正交变换结果。通过这样做,可以替换使用dct8的变换矩阵的系数数据的逆正交变换。

注意,翻转逆正交变换结果的方向对应于空间对称性方向(水平方向和垂直方向中的一个或两个)。此外,由于对变换矩阵的操作仅是奇数编号的行向量的符号反转,因此由导出单元导出的变换矩阵的行数和列数与dst7的行数和列数相同。

通过应用针对预测残差(包括逆正交变换结果)的这种操作,变得不需要准备dct8的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,与第一实施方式的情况相似,可以减少单一变换类型的数目。也就是说,可以抑制lut大小的增大。此外,通过执行涉及针对预测残差(包括逆正交变换结果)的这种操作的正交变换/逆正交变换,可以获得与使用dct的变换矩阵的正交变换/逆正交变换的情况相同的编码效率。

此外,第二行示例下方一行(从顶部起的第三行)的操作聚焦于两个不同的二维正交变换中的、在特定方向(水平方向和垂直方向中的一个或两个)上的一维正交变换之间的轴对称性。该操作与从顶部起的第一行的操作相同。

注意,在这种情况下,dct8的变换矩阵被用作基础变换矩阵tbase。因此,通过这样做,可以替换使用flipdct8的变换矩阵的未翻转的预测残差的正交变换。这类似地适用于逆正交变换。即,通过这样做,可以替换使用flipdct8的变换矩阵的系数数据的逆正交变换。

此外,第三行示例下方一行(从顶部起的第四行)的操作聚焦于两个不同的二维正交变换中的、在特定方向(水平方向和垂直方向中的一个或两个)上的一维正交变换之间的相似性(偶数编号的行向量的轴对称性和奇数编号的行向量的点对称性)。该操作与从顶部起的第二行的操作相同。

注意,在这种情况下,dct8的变换矩阵被用作基础变换矩阵tbase。因此,通过这样做,可以替换使用dst7的变换矩阵的未翻转的预测残差的正交变换。这类似地适用于逆正交变换。即,通过这样做,可以替换使用dst7的变换矩阵的系数数据的逆正交变换。

注意,上述导出示例中的每一个可以独立地执行,或者可以以多个导出示例的组合来执行。此外,在上述示例中,已经使用dst7或dct8描述了基础变换类型(第一变换类型)的示例。然而,如图8中所示,可通过用具有相同类型的波形形状的变换类型替换该变换类型来实现该该导出。例如,dst7可以用具有相同类型的波形形状的另外的正交变换(例如,dst4、dst8或dst3)来替换。类似地,dct8可以用具有相同类型的波形形状的另外的正交变换(例如,dct3、dct7或dct4)来替换。

<配置和处理的流程>

执行这种预测残差置换操作的图像编码装置100的配置与第一实施方式的情况相似。然后,在图像编码装置100中,正交变换单元113作为操作单元和正交变换单元执行应用了上述本技术的处理。此外,编码单元115作为编码单元执行应用了上述本技术的处理。此外,逆正交变换单元118作为逆正交变换单元和操作单元执行应用了上述本技术的处理。因此,图像编码装置100可以抑制正交变换/逆正交变换所需的存储器容量的增大。

此外,正交变换单元113的配置与第一实施方式的情况相似。然后,在正交变换单元113中,一次变换单元152作为操作单元和正交变换单元执行应用了上述本技术的处理。即,操作单元置换图像的预测残差,并且正交变换单元使用用作基础的变换矩阵来对通过操作单元被置换的预测残差执行一次变换。因此,可以抑制一次变换所需的存储器容量的增大。

注意,如上所述,一次变换单元152执行一次水平变换和一次垂直变换作为一次变换。即,操作单元置换图像的预测残差,并且正交变换单元针对置换后的预测残差,使用用作基础的、用于水平一维正交变换的第二变换矩阵来执行水平一维正交变换,并且进一步使用用作基础的、用于垂直一维正交变换的第二变换矩阵来执行垂直一维正交变换,作为一次变换。因此,可以抑制其中执行水平一维正交变换和垂直一维正交变换的一次变换所需的存储器容量的增大。

注意,由图像编码装置100执行的图像编码处理的流程与第一实施方式的情况相似。即,在上述流程的图像编码处理中,应用了上述本技术的处理作为步骤s106的处理被执行。此外,应用了上述本技术的处理作为步骤s109的处理被执行。此外,应用了上述本技术的处理作为步骤s113的处理被执行。因此,通过执行该图像编码处理,可以抑制正交变换/逆正交变换所需的存储器容量的增大。

此外,在图像编码处理的步骤s106中执行的正交变换处理的流程与第一实施方式的情况相似。即,在上述流程的正交变换处理中,应用了上述本技术的处理作为步骤s132的处理被执行。因此,通过执行该正交变换处理,可以抑制一次变换所需的存储器容量的增大。

此外,在解码侧处理是相似的。即,执行对逆正交变换结果的这种置换操作的图像解码装置200的配置与第一实施方式的情况相似。然后,在图像解码装置200中,逆正交变换单元214作为逆正交变换单元和操作单元执行应用了上述本技术的处理。此外,解码单元212作为解码单元执行应用了上述本技术的处理。因此,图像解码装置200可以抑制逆正交变换所需的存储器容量的增大。

此外,逆正交变换单元214的配置与第一实施方式的情况相似。然后,在逆正交变换单元214中,逆一次变换单元253作为逆正交变换单元和操作单元执行应用了上述本技术的处理。即,逆正交变换单元使用用作基础的变换矩阵对逆二次变换结果执行逆一次变换,并且操作单元置换所获得的逆一次变换结果。因此,可以抑制逆一次变换所需的存储器容量的增大。

注意,上述逆一次变换单元253执行逆一次垂直变换和逆一次水平变换作为逆一次变换。即,逆正交变换单元针对逆二次变换结果,使用用作基础的、用于垂直逆一维正交变换的第二变换矩阵来执行垂直逆一维正交变换,并且进一步使用用作基础的、用于水平逆一维正交变换的第二变换矩阵执行水平逆一维正交变换,作为逆一次变换。因此,可以抑制其中执行垂直逆一维正交变换和水平逆一维正交变换的一次变换所需的存储器容量的增大。

注意,由图像解码装置200执行的图像解码处理的流程与第一实施方式的情况相似。即,在上述流程的图像解码处理中,应用了上述本技术的处理作为步骤s202的处理被执行。此外,应用了上述本技术的处理作为步骤s204的处理被执行。因此,通过执行图像解码处理,可以抑制逆正交变换所需的存储器容量的增大。

此外,在图像解码处理的步骤s204中执行的逆正交变换处理的流程与第一实施方式的情况相似。即,在上述流程的逆正交变换处理中,应用了上述本技术的处理作为步骤s233的处理被执行。因此,通过执行逆正交变换处理,可以抑制逆一次变换所需的存储器容量的增大。

<3-2.示例2-1>

<概念>

接下来,将更详细地描述参照图67描述的每个导出示例。首先,在图67所示的表中,除了项目名称的最上一行之外的从顶部起的第一行示例的操作聚焦于两个不同的二维正交变换中的、在特定方向(水平方向和垂直方向中的一个或两个)上的一维正交变换之间的轴对称性。

在这种情况下,操作单元翻转预测残差。正交变换单元使用基础变换矩阵(dst7的变换矩阵)对经翻转的预测残差进行正交变换。通过这样做,可以替换使用作为dst7的经翻转的变换矩阵的flipdst7的变换矩阵(参见<2-2.示例1-1>)的预测残差的正交变换。

这类似地适用于逆正交变换。在这种情况下,逆正交变换单元使用基础变换矩阵(dst7的变换矩阵)对系数数据进行逆正交变换,并且操作单元翻转逆正交变换结果。通过这样做,可以替换使用作为dst7的经翻转的变换矩阵的flipdst7的变换矩阵的系数数据(变换系数coeff_iq)的逆正交变换。

通过应用针对预测残差(包括逆正交变换结果)的这种操作,变得不需要准备flipdst7的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,与第一实施方式的情况相似,可以减少单一变换类型的数目。

在这种情况下,如图68中的表所示,在非专利文献1中描述的技术的情况下所需的五种类型的变换矩阵(参见图6中的表a)可以减少为四种类型。因此,总lut大小可以为约47kb。即,与非专利文献1中描述的技术的情况相比,lut的大小可以减小(大约53kb(图6中的表a))。也就是说,可以抑制lut的大小的增大。

此外,由于可以通过共同操作来执行针对预测残差(包括逆正交变换结果)的二维翻转操作,因此与使用flipdst7的变换矩阵的正交变换/逆正交变换的情况相比,可以减少翻转操作的数目。因此,可以抑制正交变换/逆正交变换的处理量的增大(可以更容易地执行正交变换/逆正交变换)。

此外,通过执行涉及针对预测残差(包括逆正交变换结果)的这种操作的正交变换/逆正交变换,可以获得与使用flipdst7的变换矩阵的正交变换/逆正交变换的情况相似的编码效率。

<一次变换单元>

接下来,将描述用于执行这种处理的配置、处理等。图69是示出在这种情况下的一次变换单元152的主要配置示例的框图。如图69中所示,在这种情况下,除了图22中所示的配置之外,一次变换单元152还包括预测残差置换操作单元551。

一次变换选择单元311将导出的一次水平变换的变换类型标识符trtypeidxh和导出的一次垂直变换的变换类型标识符trtypeidxv提供给预测残差置换操作单元551。

预测残差置换操作单元551使用从开关151提供的预测残差d、一次水平变换的变换类型标识符trtypeidxh、一次垂直变换的变换类型标识符trtypeidxv作为输入。预测残差置换操作单元551根据变换类型标识符trtypeidxh和变换类型标识符trtypeidxv,对预测残差d进行翻转。预测残差置换操作单元551将经翻转的预测残差dflip提供给一次水平变换单元312。

在具有上述配置的一次变换单元152中,预测残差置换操作单元551作为操作单元执行应用了上述本技术的处理。一次水平变换单元312和一次垂直变换单元313作为正交变换单元执行应用了上述本技术的处理。

即,一次水平变换单元312作为正交变换单元,使用用作基础的用于水平一维正交变换的变换矩阵,对经翻转的预测残差dflip执行水平一维正交变换。因此,一次水平变换单元312可以抑制水平一维正交变换所需的存储器容量的增大。

此外,一次垂直变换单元313作为正交变换单元,使用用作基础的用于垂直一维正交变换的变换矩阵,对一次水平变换之后的变换系数coeff_phor执行垂直一维正交变换。因此,一次垂直变换单元313可以抑制垂直一维正交变换所需的存储器容量的增大。

<一次变换处理的流程>

接下来,将描述由上述配置执行的处理的流程的示例。接下来,将参照图70中的流程图描述在这种情况下在图14的步骤s132中执行的一次变换处理的流程的示例。

当开始一次变换处理时,在步骤s561中,一次变换单元152的一次变换选择单元311选择一次水平变换的变换类型标识符trtypeidxh(或变换类型trtypeh)和一次垂直变换的变换类型标识符trtypeidxv(或变换类型trtypev)。

在步骤s562中,预测残差置换操作单元551执行预测残差置换操作处理,并且根据步骤s561中获得的变换类型标识符trtypeidxh和变换类型标识符trtypeidxv对预测残差d进行翻转,以导出经翻转的预测残差dflip。

在步骤s563中,一次水平变换单元312使用与在步骤s561获得的一次水平变换的变换类型标识符trtypeidxh对应的变换矩阵执行一次水平变换处理,以对在步骤s562获得的经翻转的预测残差dflip执行一次水平变换。

在步骤s564中,一次垂直变换单元313使用与在步骤s561中获得的一次垂直变换的变换类型标识符trtypeidxv对应的变换矩阵执行一次垂直变换处理,以对在步骤s563的处理中获得的一次水平变换之后的变换系数coeff_phor执行一次垂直变换。

当步骤s564中的处理结束时,一次变换处理结束,并且处理返回到图14。

在上述一次变换处理中,应用了上述本技术的处理作为步骤s562至s564的每个处理被执行。因此,通过执行一次变换处理,可以抑制一次水平变换处理和一次垂直变换处理所需的存储器容量的增大。

<预测残差置换操作处理的流程>

将参照图71中的流程图描述在图70中的步骤s562中执行的预测残差置换操作处理的流程。

当预测残差置换操作处理开始时,在步骤s581中,预测残差置换操作单元551导出与一次水平变换的变换类型标识符trtypeidxh(或者变换类型trtypeh)对应的翻转标志flipflagh、以及与一次垂直变换的变换类型标识符trtypeidxv(或者变换类型trtypev)对应的翻转标志flipflagv。此时,预测残差置换操作单元551例如通过参考图72所示的对应表(lut_trtypeidxtoflipflag),获得翻转标志flipflagh和翻转标志flipflagv。这些翻转标志的导出例如可以表示为下面的表达式(62)和表达式(63)。

[数学式54]

flipflagh=lut_trtypeidxtoflipflag[trtypeidxh]…(62)

flipflagv=lut_trtypeidxtoflipflag[trtypeidxv]…(63)

在步骤s582中,预测残差置换操作单元551确定在步骤s581中导出的翻转标志flipflagh和翻转标志flipflagv是否满足下面的表达式(64)中表示的条件。

[数学式55]

flipflagh==t&&flipflagv==f…(64)

在确定满足该条件的情况下,即,在确定flipflagh为真(1)并且确定flipflagv为假(0)的情况下,处理进行到步骤s583。

在步骤s583中,预测残差置换操作单元551水平翻转预测残差d,以获得经翻转的预测残差dflip。当该操作被表示为矩阵时,该操作可以被表示为下面的表达式(65)。

[数学式56]

dflip=fliph(d)=d×j…(65)

这里,×是表示矩阵乘积的运算符,fliph(x)是表示在水平方向上的对矩阵x的翻转操作的运算符,并且与flipv(·)对应的翻转矩阵j是通过左右反转n行n列的单位矩阵i而获得的矩阵。此外,在将该操作表示为针对每个元素的运算的情况下,预测残差置换操作单元551将预测残差d的(i,n-1-j)分量设定为经翻转的预测残差dflip的第i行第j列分量((i,j)分量),如下面的表达式(66)中那样地。

[数学式57]

dflip[i,j]=d[i,n-1-j]

对于i=0,...,m-1,j=0,...,n-1

…(66)

注意,预测残差d的大小是宽度n和高度m(m行和n列)。n和m满足下面的表达式(67)和(68)。

[数学式58]

n=1<<log2tbwsize…(67)

m=1<<log2tbhsize…(68)

当步骤s583中的处理结束时,处理进行到步骤s588。此外,在步骤s582中,在确定不满足条件的情况下,即在确定flipflagh为假(0)或者确定flipflagv为真(1)的情况下,处理进行到步骤s584。

在步骤s584中,预测残差置换操作单元551确定在步骤s581中导出的翻转标志flipflagh和翻转标志flipflagv是否满足下面的表达式(69)中表示的条件。

[数学式59]

flipflagh==f&&flipflagv==t…(69)

在确定满足该条件的情况下,即,在确定flipflagh为假(0)并且确定flipflagv为真(1)的情况下,处理进行到步骤s585。

在步骤s585,预测残差置换操作单元551垂直翻转预测残差d,以获得经翻转的预测残差dflip。当该操作被表示为矩阵时,该操作可以被表示为下面的表达式(70)。

[数学式60]

dflip=flipv(d)=j×d…(70)

这里,×是表示矩阵乘积的运算符,flipv(x)是表示在垂直方向上的对矩阵x的翻转操作的运算符,并且与flipv(·)对应的翻转矩阵j是通过左右反转m行和m列的单位矩阵i而获得的矩阵。另外,在将该操作表示为针对每个元素的运算的情况下,预测残差置换操作单元551将预测残差d的(m-1-i,j)分量设定为经翻转的预测残差dflip的第i行第j列分量((i,j)分量),如下面的表达式(71)中那样地。另外,预测残差d的大小为宽度n和高度m(m行和n列),并且n和m满足上述表达式(67)和(68)。

[数学式61]

dflip[i,j]=d[m-1-1,j]

对于i=0,...,n-1,j=0,...,m-1

…(71)

当步骤s585中的处理结束时,处理进行到步骤s588。此外,在步骤s584中,在确定不满足条件的情况下,即,在确定flipflagh为真(1)或者确定flipflagv为假(0)的情况下,处理进行到步骤s586。

在步骤s586中,预测残差置换操作单元551确定在步骤s581中导出的翻转标志flipflagh和翻转标志flipflagv是否满足下面的表达式(72)中所表示的条件。

[数学式62]

flipflagh==t&&flipflagv==t…(72)

在确定满足该条件的情况下,即,在确定flipflagh为真(1)并且确定flipflagv为真(1)的情况下,处理进行到步骤s587。

在步骤s587中,预测残差置换操作单元551水平和垂直翻转预测残差d,以获得经翻转的预测残差dflip。当该操作被表示为矩阵时,该操作可以被表示为下面的表达式(73)。

[数学式63]

dflip=fliph(flipv(d))=j2×d×j1…(73)

这里,×是表示矩阵乘积的运算符,翻转矩阵j1是通过对n行和n列的单位矩阵i进行反转而获得的矩阵,并且翻转矩阵j2是通过对m行和m列的单位矩阵i进行反转而获得的矩阵。注意,翻转矩阵j等同于甚至在转置的情况下的翻转矩阵j(jt=j)。此外,在将该操作表示为针对每个元素的运算的情况下,预测残差置换操作单元551将预测残差d的(m-i-1,n-j-1)分量设定为经翻转的预测残差dflip的第i行第j列分量((i,j)分量),如下面的表达式(74)中那样地。另外,预测残差d的大小为宽度n和高度m(m行和n列),并且n和m满足上述表达式(67)和(68)。

[数学式64]

dflip[i,j]=d[m-1-i,n-1-j]

对于i=0,...,m-1,=0,...,n1

…(44)

当步骤s587中的处理结束时,处理进行到步骤s588。

在步骤s588中,预测残差置换操作单元551将经翻转的预测残差dflip设定作为预测残差d,如下面的表达式(75)中那样地。即,对预测残差d(经翻转的预测残差dflip)执行一次水平变换处理(图70中的步骤s563)。

[数学式65]

d=dflip…(75)

当步骤s588中的处理结束时,预测残差置换操作处理结束,并且处理返回到图70。此外,在步骤s586中,在确定不满足条件的情况下,即,在确定flipflagh为假(0)或者确定flipflagv为假(0)的情况下,预测残差置换操作处理结束,并且处理返回到图70。

通过执行如上所述的预测残差置换操作处理,预测残差置换操作单元551可以在二维正交变换(包括预测残差)的空间对称性方向(即,与一次水平变换的变换类型标识符trtypeidxh(或变换类型trtypeh)和一次垂直变换的变换类型标识符trtypeidxv(或变换类型trtypev)对应的方向)上对预测残差进行翻转。

<逆一次变换单元>

接下来,将描述在本实施方式的情况下的图像解码装置200的配置。图73是示出在这种情况下逆一次变换单元253(图16)的主要配置示例的框图。如图73中所示,在这种情况下,除图34中所示的配置之外,逆一次变换单元253还包括预测残差置换操作单元552。

逆一次变换选择单元411将导出的逆一次垂直变换的变换类型标识符trtypeidxv和导出的逆一次垂直变换的变换类型标识符trtypeidxh提供给预测残差置换操作单元551。此外,逆一次水平变换单元413将导出的逆一次水平变换之后的变换系数coeff_iphor提供给预测残差置换操作单元552。

预测残差置换操作单元552使用从逆一次水平变换单元413提供的逆一次水平变换后的变换系数coeff_iphor、一次水平变换的变换类型标识符trtypeidxh(或者变换类型trtypeh)、以及一次垂直变换的变换类型标识符trtypeidxv(或者变换类型trtypev)作为输入。预测残差置换操作单元552根据变换类型标识符trtypeidxh(或变换类型trtypeh)和变换类型标识符trtypeidxv(或变换类型trtypev)对逆一次水平变换后的变换系数coeff_iphor进行翻转。预测残差置换操作单元552将经翻转的变换系数coeff_iphor(逆一次变换后的变换系数coeff_ip)输出到逆一次变换单元253的外部(提供给计算单元215)作为预测残差d'。

在具有上述配置的逆一次变换单元253中,预测残差置换操作单元552作为操作单元执行应用了上述本技术的处理。逆一次垂直变换单元412和逆一次水平变换单元413分别作为逆正交变换单元执行应用了上述本技术的处理。

即,逆一次垂直变换单元412作为逆正交变换单元,使用用作基础的用于垂直逆一维正交变换的变换矩阵,对逆二次变换之后的变换系数coeff_is执行垂直逆一维正交变换。通过如上所述的那样随后由预测残差置换操作单元552翻转变换系数,可以替换使用另外的变换矩阵的垂直逆一维正交变换。因此,逆一次垂直变换单元412可以抑制垂直逆一维正交变换所需的存储器容量的增大。

此外,逆一次水平变换单元413作为逆正交变换单元,使用用作基础的用于水平逆一维正交变换的变换矩阵,对逆一次垂直变换之后的变换系数coeff_ipver执行水平逆一维正交变换。通过如上所述的那样随后由预测残差置换操作单元552翻转变换系数,可以替换使用另外的变换矩阵的水平逆一维正交变换。因此,逆一次水平变换单元413可以抑制水平逆一维正交变换所需的存储器容量的增大。

<逆一次变换处理的流程>

接下来,将描述由上述配置执行的处理的流程的示例。接下来,将参照图74中的流程图描述在这种情况下在图18的步骤s233中执行的逆一次变换处理的流程的示例。

当开始逆一次变换处理时,在步骤s601中,逆一次变换单元253的逆一次变换选择单元411执行逆一次变换选择处理,以选择逆一次垂直变换的变换类型标识符trtypeidxv(或变换类型trtypev)和逆一次水平变换的变换类型标识符trtypeidxh(或变换类型trtypeh)。

在步骤s602中,逆一次垂直变换单元412使用与在步骤s601中获得的逆一次垂直变换的变换类型标识符trtypeidxv对应的变换矩阵执行逆一次垂直变换处理,以对逆二次变换之后的变换系数coeff_is执行垂直逆一维正交变换。

在步骤s603中,逆一次水平变换单元413执行逆一次水平变换处理,以使用与在步骤s601中获得的逆一次水平变换的变换类型标识符trtypeidxh对应的变换矩阵对在步骤s602中导出的逆一次垂直变换之后的变换系数coeff_ipver执行水平逆一维正交变换。

在步骤s604中,预测残差置换操作单元552使用在步骤s601中获得的逆一次垂直变换的变换类型标识符trtypeidxv和逆一次水平变换的变换类型标识符trtypeidxh进行预测残差置换操作处理,并且翻转在步骤s603中导出的逆一次水平变换后的变换系数coeff_iphor,以获得逆一次变换后的变换系数coeff_ip(预测残差d')。

预测残差置换操作处理通过与参照图71的流程图所描述的示例相似的流程来执行。因此,关于图71的描述可以例如通过用变换系数coeff_iphor适当地替换预测残差d而应用于步骤s604中的处理,因此省略其描述。

当步骤s604中的处理结束时,逆一次变换处理结束,并且处理返回到图18。

在上述逆一次变换处理中,应用了上述本技术的处理作为步骤s602或s604的每个处理被执行。因此,通过执行逆一次变换处理,可以抑制逆一次垂直变换处理或逆一次水平变换处理所需的存储器容量的增大。

<3-3.示例2-2>

<概念>

接下来,将描述图67中所示的表中的除了项目名称的最上一行之外从顶部起的第二行示例。该操作聚焦于两个不同的二维正交变换中的、在特定方向(水平方向和垂直方向中的一个或两个)上的一维正交变换之间的相似性。更具体地,关注偶数编号的行向量中的轴对称性和奇数编号的行向量中的点对称性。

在这种情况下,导出单元使用第一变换矩阵导出第二变换矩阵,操作单元置换预测残差,并且正交变换单元使用第二变换矩阵对经置换的预测残差进行正交变换。例如,dst7的变换矩阵被用作基础变换矩阵,导出单元反转dst7的变换矩阵的奇数编号的行向量的符号,操作单元翻转预测残差,并且正交变换单元使用具有反转的奇数编号的行向量的符号的dst7的变换矩阵对经翻转的预测残差进行正交变换。通过这样做,可以替换使用通过翻转dst7的变换矩阵并且反转经翻转的变换矩阵的奇数编号的行向量的符号而获得的变换矩阵(即,dct8(参见<2-3.示例1-2>))的预测残差的正交变换。

这类似地适用于逆正交变换。在这种情况下,导出单元使用第一变换矩阵导出第二变换矩阵,逆正交变换单元使用第二变换矩阵对系数数据进行逆正交变换,并且操作单元置换逆正交变换结果。例如,dst7的变换矩阵被用作基础变换矩阵,导出单元反转dst7的变换矩阵的奇数编号的行向量的符号,逆正交变换单元使用具有反转的奇数编号的行向量的符号的dst7的变换矩阵来对系数数据进行逆正交变换,并且操作单元翻转逆正交变换结果。通过这样做,可以替换使用通过翻转dst7的变换矩阵并且反转经翻转的变换矩阵的奇数编号的行向量的符号而获得的变换矩阵(即,dct8(参见<2-3.示例1-2>))的系数数据(变换系数coeff_iq)的逆正交变换。

通过应用针对预测残差(包括逆正交变换结果)的这种操作,变得不需要准备dct8的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,与第一实施方式的情况相似,可以减少单一变换类型的数目。

在这种情况下,如图75的表所示,在非专利文献1中描述的技术的情况下所需的五种类型的变换矩阵(参见图6中的表a)可以减少为四种类型。因此,总lut大小可以为约47kb。即,与非专利文献1中描述的技术的情况相比,lut的大小可以减小(大约53kb(图6中的表a))。也就是说,可以抑制lut的大小的增大。

<变换矩阵导出单元>

在这种情况下,一次变换单元152具有与<3-2.示例2-1>的情况相似的配置。此外,一次水平变换单元312具有与<3-2.示例2-1>的情况相似的配置。此外,一次垂直变换单元313具有与<3-2.示例2-1>的情况相似的配置。注意,一次水平变换单元312的变换矩阵导出单元321的内部配置和一次垂直变换单元313的变换矩阵导出单元351的内部配置与<3-2.示例2-1>的情况不同。

图76是示出在这种情况下包括在一次水平变换单元312中的变换矩阵导出单元321的主要配置示例的框图。如图76所示,在这种情况下的变换矩阵导出单元321包括变换矩阵lut331和符号反转单元561。注意,在图76中,省略了表示数据传送的箭头,但是在变换矩阵导出单元321中,可以在任意处理单元(处理块)之间传送任意数据。

符号反转单元561是与符号反转单元501(图46)相似的处理单元,并且使用n行和n列的变换矩阵t作为输入,反转变换矩阵t的预定部分的符号,并且执行符号反转,并且输出符号反转后的变换矩阵tinvsign。在该导出示例(示例2-2)中,变换矩阵导出单元321经由符号反转单元561对在变换矩阵lut331中选择的n行和n列的基础变换矩阵tbase的奇数阶的行向量的符号进行反转,以导出变换矩阵tinvsign。变换矩阵导出单元321将变换矩阵tinvsign输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

如上所述,变换矩阵导出单元321可以使用符号反转单元561实现作为从图67所示的表的顶部起的第二行示例的一次水平变换中的“基础变换矩阵tbase的操作”。

<变换矩阵导出单元>

图77是示出在这种情况下在一次垂直变换单元313中包括的变换矩阵导出单元351的主要配置示例的框图。如图77所示,与变换矩阵导出单元321的情况相似,在这种情况下的变换矩阵导出单元351包括变换矩阵lut361和符号反转单元562。注意,在图77中,省略了表示数据传送的箭头,但在变换矩阵导出单元351中,可以在任意的处理单元(处理块)之间传送任意的数据。

符号反转单元562是与符号反转单元502(图47)相似的处理单元,并且使用n行和n列的变换矩阵t作为输入,反转变换矩阵t的预定部分的符号,并且执行符号反转,并且输出符号反转后的变换矩阵tinvsign。在该导出示例(示例2-2)中,变换矩阵导出单元351通过符号反转单元562对在变换矩阵lut361中选择的n行和n列的基础变换矩阵tbase的奇数阶的行向量的符号进行反转,以导出变换矩阵tinvsign。符号反转单元562将变换矩阵tinvsign输出到变换矩阵导出单元351的外部(提供给矩阵计算单元352)作为变换矩阵tv。

如上所述,变换矩阵导出单元351可以使用符号反转单元562实现作为从图67所示的表的顶部起的第二行示例的一次垂直变换中的|“基础变换矩阵tbase的操作”。

<变换矩阵导出处理的流程>

因为通过与<3-2.示例2-1>的情况相似的流程来执行(通过与图70中的流程图相似的流程执行)这种情况下的一次变换处理,所以基本上省略其描述。

注意,在这种情况下,在图70的步骤s562中执行的预测残差置换操作处理(图71)的步骤s581中,预测残差置换操作单元551通过参考图79中所示的对应表(lut_trtypeidxtoflipflag)而不是图72中所示的对应表来获得翻转标志flipflagh和翻转标志flipflagv。

此外,在这种情况下,通过与<2-2.示例1-1>的情况相似的流程(通过与图28中的流程图相似的流程执行)来执行在图70的步骤s563中执行的一次水平变换处理,但是通过与图30中的情况不同的流程来执行在图28中的步骤s321中执行的变换矩阵导出处理。

将参照图78中的流程图描述在这种情况下在图28的步骤s321中由一次水平变换单元312中的变换矩阵导出单元321执行的变换矩阵导出处理的流程的示例。

当变换矩阵导出处理开始时,在步骤s621中,变换矩阵导出单元321例如通过参考图79所示的对应表(lut_trtypeidxtoflipflag)来导出与变换类型标识符trtypeidxh和符号反转标志invsignflag对应的基础变换类型的基础变换矩阵tbase。

在步骤s622中,变换矩阵导出单元321确定在步骤s621中导出的符号反转标志invsignflag是否为真(1)。在确定符号反转标志invsignflag为假(0)的情况下,处理进行到步骤s623。

在步骤s623中,变换矩阵导出单元321从变换矩阵lut331中读取在步骤s621中导出的基础变换矩阵tbase(dst7),并且将基础变换矩阵tbase设定为变换矩阵th。这可以表示为下面的表达式(76)。

[数学式66]

th=tbase…(76)

当步骤s623中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。此外,在步骤s622中,在确定符号反转标志invsignflag为真(1)的情况下,处理进行到步骤s624。

在步骤s624中,变换矩阵导出单元321从变换矩阵lut331中读取在步骤s621中导出的基础变换矩阵tbase(dst7),经由符号反转单元561反转基础变换矩阵tbase(dst7)的奇数编号的行向量的符号,并且将具有经反转的符号的基础变换矩阵tbase设定为变换矩阵th。这可以表示为下面的表达式(77)。

[数学式67]

th=d×tbase…(77)

这里,×是表示矩阵乘积的运算符,并且符号反转矩阵d是包括diag(1,-1,...,(-1)n-1)的对角矩阵。

当步骤s624中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

<变换矩阵导出处理的流程>

由于在一次垂直变换处理的步骤s361(图32)中执行的变换矩阵导出处理的流程与参照图78中的流程图描述的在一次水平变换中执行的变换矩阵导出处理的情况相似,因此省略其描述。在图78的描述中,简单地用变换类型标识符trtypeidxv替换变换类型标识符trtypeidxh,并且简单地用变换矩阵tv替换变换矩阵th。

<变换矩阵导出单元>

接下来,将描述在该情况下的图像解码装置200的配置。由于包括在这种情况下的图像解码装置200中的逆一次变换单元253、逆一次垂直变换单元412、逆一次水平变换单元413等的配置与<2-2.示例1-1>的情况相似,因此省略其描述。

图80是示出在这种情况下的变换矩阵导出单元421(包括在逆一次垂直变换单元412中的变换矩阵导出单元421)的主要配置示例的框图。如图80所示,与变换矩阵导出单元321相似,在这种情况下的变换矩阵导出单元421包括变换矩阵lut431和符号反转单元571。注意,在图80中,省略了表示数据传送的箭头,但是在变换矩阵导出单元421中,可以在任意处理单元(处理块)之间传送任意数据。

变换矩阵lut431与图36的情况下的变换矩阵lut相似。符号反转单元571是与符号反转单元501相似的处理单元,并且使用n行和n列的变换矩阵t作为输入,反转变换矩阵t的预定部分的符号,并且输出符号反转后的变换矩阵tinvsign。在该导出示例(示例2-2)中,变换矩阵导出单元421经由符号反转单元571对在变换矩阵lut431中选择的n行和n列的基础变换矩阵tbase的奇数阶的行向量的符号进行反转,以导出变换矩阵tinvsign。符号反转单元571将变换矩阵tinvsign输出到变换矩阵导出单元421的外部(提供给矩阵计算单元422)作为变换矩阵tv。

如上所述,变换矩阵导出单元421可以使用符号反转单元571实现作为从图67所示的表的顶部起的第二行示例的逆一次垂直变换中的“基础变换矩阵tbase的操作”。

<变换矩阵导出单元>

图81是示出包括在这种情况下的逆一次水平变换单元413中的变换矩阵导出单元451的主要配置示例的框图。如图81所示,与变换矩阵导出单元421相似,在这种情况下的变换矩阵导出单元451包括变换矩阵lut461和符号反转单元572。注意,在图81中,省略了表示数据传送的箭头,但在变换矩阵导出单元451中,可以在任意的处理单元(处理块)之间传送任意的数据。

变换矩阵lut461与图80的情况下的变换矩阵lut相似。符号反转单元572是与符号反转单元571相似的处理单元,并且使用n行和n列的变换矩阵t作为输入,反转变换矩阵t的预定部分的符号,并且执行符号反转,并且输出符号反转后的变换矩阵tinvsign。在该导出示例(示例2-2)中,变换矩阵导出单元451经由符号反转单元572对变换矩阵lut461中选择的n行和n列的基础变换矩阵tbase的奇数阶的行向量的符号进行反转,以导出变换矩阵tinvsign。符号反转单元572将变换矩阵tinvsign输出到变换矩阵导出单元451的外部(提供给矩阵计算单元452)作为变换矩阵th。

如上所述,变换矩阵导出单元451可以使用符号反转单元512实现作为从图67所示的表的顶部起的第二行示例的逆一次垂直变换中的“基础变换矩阵tbase的操作”。

<变换矩阵导出处理的流程>

注意,变换矩阵导出单元421和变换矩阵导出单元451通过与参照图78中的流程图描述的情况相似的流程执行变换矩阵导出处理,因此省略对该处理的描述。

<3-4.示例2-3>

<概念>

接下来,将描述图67中所示的表中的除了项目名称的最上一行之外从顶部起的第三行示例。与从顶部起的第一行示例相似,该示例聚焦于两个不同的二维正交变换中的、在特定方向(水平方向和垂直方向中的一个或两个)上的一维正交变换之间的轴对称。

在这种情况下,操作单元翻转预测残差。正交变换单元使用基础变换矩阵(dct8的变换矩阵)对经翻转的预测残差进行正交变换。通过这样做,可以替换使用作为经翻转的dct8的变换矩阵的flipdct8的变换矩阵(参见<2-4.示例1-3>)的预测残差的正交变换。

这类似地适用于逆正交变换。在这种情况下,逆正交变换单元使用基础变换矩阵(dct8的变换矩阵)对系数数据进行逆正交变换,并且操作单元翻转逆正交变换结果。通过这样做,可以替换使用作为经翻转的dct8的变换矩阵的flipdct8的变换矩阵的系数数据(变换系数coeff_iq)的逆正交变换。

通过应用针对预测残差(包括逆正交变换结果)的这种操作,变得不需要准备flipdct8的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,与第一实施方式的情况相似,可以减少单一变换类型的数目。

注意,在这种情况下,在预测残差置换操作处理(图71)中,简单地参考图82所示的对应表(lut_trtypeidxtoflipflag)而不是图72所示的对应表。

此外,即使在逆正交变换的情况下,处理也是相似的,并且仅需要利用与正交变换的情况相似的配置来执行与正交变换的情况相似的处理。

<3-5.示例2-4>

<概念>

接下来,将描述图67所示的表中的除了项目名称的最上一行之外从顶部起的第四行示例。与从顶部起的第二行示例相似,该示例聚焦于两个不同的二维正交变换中的、在特定方向(水平方向和垂直方向中的一个或两个)上的一维正交变换之间的相似性(偶数编号的行向量的轴对称性和奇数编号的行向量的点对称性)。该操作与从顶部起的第二行的操作相同。

在这种情况下,导出单元从第一变换矩阵导出第二变换矩阵,并且操作单元翻转预测残差d。正交变换单元使用通过反转基础变换矩阵(dct8的变换矩阵)的符号而获得的dst7的变换矩阵,对经翻转的预测残差进行正交变换。通过这样做,可以替换使用通过翻转dct8的变换矩阵并且反转符号而获得的dst7的变换矩阵(参见<2-5.示例1-4>)的预测残差的正交变换。

这类似地适用于逆正交变换。在这种情况下,导出单元反转dct8的变换矩阵的奇数编号的行向量的符号,逆正交变换单元使用具有反转的奇数编号的行向量的符号的dct8的变换矩阵(即,dst7)对系数数据进行逆正交变换,并且操作单元翻转逆正交变换结果。通过这样做,可以替换使用通过翻转dct8的变换矩阵并且反转符号而获得的dst7的变换矩阵的系数数据(变换系数coeff_iq)的逆正交变换。

通过应用对预测残差(包括逆正交变换结果)的这种操作,变得不需要准备dst7的变换矩阵作为要用于正交变换/逆正交变换的变换矩阵的候选。也就是说,与第一实施方式的情况相似,可以减少单一变换类型的数目。

注意,在这种情况下,在预测残差置换操作处理(图71)中,简单地参考图83所示的对应表(lut_trtypeidxtoflipflag)而不是图79所示的对应表。

此外,即使在逆正交变换的情况下,处理也是相似的,并且仅需要利用与正交变换的情况相似的配置来执行与正交变换的情况相似的处理。

<4.第三实施方式>

<4-1.公共概念>

<使用子矩阵的变换矩阵的导出>

在第一实施方式中,已经描述了使用变换矩阵来导出另外的变换矩阵。然而,实施方式不限于此,并且准备作为变换矩阵的一部分的子矩阵,并且可以使用该子矩阵来导出变换矩阵。

即,可以使用构成变换矩阵的一部分的子矩阵来导出变换矩阵,可以使用导出的变换矩阵对图像的预测残差进行正交变换,并且可以对通过对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

例如,图像处理设备可以包括:导出单元,其被配置成使用构成变换矩阵的一部分的子矩阵来导出变换矩阵;正交变换单元,其被配置成使用由导出单元导出的变换矩阵对图像的预测残差进行正交变换;以及编码单元,其被配置成对通过由正交变换单元对预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

利用该配置,仅需要保持子矩阵(不需要保持所有变换矩阵)。因此,可以抑制正交变换所需的存储器容量的增大。

此外,可以对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据,可以使用构成变换矩阵的一部分的子矩阵来导出变换矩阵,并且可以使用导出的变换矩阵对获得的系数数据进行逆正交变换。

例如,图像处理设备可以包括:解码单元,其被配置成对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;导出单元,其被配置成使用构成变换矩阵的一部分的子矩阵来导出变换矩阵;以及逆正交变换单元,其被配置成使用由导出单元导出的变换矩阵对由解码单元获得的系数数据进行逆正交变换。

利用该配置,仅需要保持子矩阵(不需要保持所有变换矩阵)。因此,可以抑制逆正交变换所需的存储器容量的增大。

<子矩阵与整个变换矩阵之间的关系的示例>

将给出更具体的描述。例如,如图84所示,在dct2的变换矩阵601的情况下,左部分中的偶数编号的行向量的波形与右部分中的偶数编号的行向量的波形彼此轴对称。此外,变换矩阵601的左部分中的奇数编号的行向量的波形彼此点对称。

因此,通过围绕通过dct2的变换矩阵601的中心的列方向、在水平方向(行方向)上翻转构成变换矩阵601的左部分的子矩阵,并且反转奇数编号的行向量的符号,可以导出构成dct2的变换矩阵601的右部分的子矩阵。也就是说,dct2的变换矩阵601可以从构成左部分的子矩阵导出。

此外,例如,在dst7的变换矩阵602的情况下,左上三角部分的偶数编号的行向量的波形与右下三角部分的偶数编号的列向量的波形彼此轴对称。此外,变换矩阵602的左上三角部分的奇数编号的行向量的波形与右下三角部分的奇数编号的列向量的波形彼此点对称。

因此,通过围绕连接dst7的变换矩阵602的右上端和左下端的对角线、在从左上到右下的倾斜方向上翻转构成变换矩阵602的右下三角部分的子矩阵,并且反转奇数编号的列向量的符号,可以导出构成dst7的变换矩阵602的左上三角部分的子矩阵。即,dst7的变换矩阵602可以从构成左上三角部分的子矩阵导出。

即,变换矩阵lut只需要存储整个变换矩阵的子矩阵,而不是存储整个变换矩阵,该子矩阵能够导出整个变换矩阵。例如,导出单元可以使用存储在查找表(变换矩阵lut)中的子矩阵来导出(整个)变换矩阵。通过该配置,与存储dct2和dst7的整个变换矩阵的情况相比,能够抑制ut大小的增大。即,可以抑制正交变换/逆正交变换所需的存储器容量的增大。

此外,如上所述,可以执行翻转作为用于从子矩阵导出整个变换矩阵的操作。此外,翻转方向是任意的。例如,导出单元可以通过围绕通过变换矩阵的中心的预定方向的轴翻转子矩阵并且导出变换矩阵的剩余子矩阵来导出变换矩阵。利用该配置,可以通过简单的操作从子矩阵导出整个变换矩阵。

注意,翻转方向是任意的。例如,导出单元可以在平行于行的方向(该方向也被称为行方向或水平方向)上翻转子矩阵。此外,例如,导出单元可以在平行于列的方向(该方向也被称为列方向或垂直方向)上翻转子矩阵。此外,例如,导出单元可以在围绕变换矩阵的中心的旋转方向上翻转子矩阵。此外,例如,导出单元可以在围绕变换矩阵的对角线的倾斜方向上翻转子矩阵。

利用该配置,例如,可以通过简单的操作从子矩阵导出相对于该子矩阵在各个方向上具有对称性的另外的子矩阵。

此外,如上所述,可以执行符号反转作为用于从子矩阵导出整个变换矩阵的操作。例如,导出单元还可以反转经翻转的子矩阵的元素的符号以导出变换矩阵。通过该配置,可以通过简单的操作从子矩阵导出各种整体变换矩阵。

<导出示例>

图85示出从子矩阵导出整个变换矩阵的示例的列表。注意,要用于导出的子矩阵也被称为基础子矩阵。

在图85所示的表中,除了项目名称的最上一行的从顶部起的第一行示例的导出聚焦于相对于垂直轴的轴对称性。

在这种情况下,子矩阵是变换矩阵的左半子矩阵或右半子矩阵,并且导出单元通过在变换矩阵的行方向上翻转子矩阵,并且进一步反转经翻转的子矩阵的奇数编号的行向量的符号以导出变换矩阵的右半子矩阵或左半子矩阵(即,变换矩阵的剩余子矩阵),来导出整个变换矩阵。

例如,如图86所示,导出单元围绕通过变换矩阵601的中心的、与列平行的方向(列方向)上的轴601x翻转(即,在水平方向上进行翻转)具有变换类型dct2的变换矩阵601的左半子矩阵601a。此外,导出单元反转奇数编号的行向量的符号。通过这样做,导出变换矩阵601的右半子矩阵601b。也就是说,导出了整个变换矩阵601。在将这种导出表示为针对每个元素的运算表达式时,其中要导出的变换矩阵是n行和n列的变换矩阵t并且用于导出的子矩阵是c,可以将导出表示为下面的表达式(78)。

[数学式68]

sign=(y%2==0)?1:-1

t[y,n-1-x]=sign*c[y,x]

对于x=0,...,n/2-1,y=0,...,n-1

…(78)

由于通过应用这种导出可以从子矩阵导出整个变换矩阵,因此变得不需要准备dct2的整个变换矩阵601作为要用于正交变换/逆正交变换的变换矩阵的候选(只需要准备子矩阵601a)。即,该候选的信息量可以减少到一半。也就是说,可以抑制lut大小的增大。此外,通过使用导出的变换矩阵执行正交变换/逆正交变换,可以获得与使用dct2的变换矩阵601进行正交变换/逆正交变换的情况相同的编码效率。

注意,变换类型不限于上述示例,只要应用这种导出的变换矩阵包括具有上述对称性的元素即可。例如,变换类型可以是dst2。

此外,在以上描述中,已经描述了从左半子矩阵导出右半子矩阵(整个变换矩阵)。然而,实施方式不限于该示例,并且例如,可以从右半子矩阵导出左半子矩阵(整个变换矩阵)。

此外,在第一行示例下方一行(从顶部起的第二行)的示例的导出聚焦于相对于水平轴的轴对称性。

在这种情况下,子矩阵是变换矩阵的上半子矩阵或下半子矩阵,并且导出单元通过在变换矩阵的列方向上翻转子矩阵,进一步反转经翻转的子矩阵的奇数编号的列向量的符号,并且导出变换矩阵的下半子矩阵或上半子矩阵(即,变换矩阵的剩余子矩阵),来导出整个变换矩阵。

例如,如图87所示,导出单元围绕通过变换矩阵611的中心的、平行于行的方向(行方向)上的轴611x翻转(即,在垂直方向上进行翻转)具有dst1变换类型的变换矩阵611的上半子矩阵611a。此外,导出单元反转奇数编号的列向量的符号。通过这样做,导出了变换矩阵611的下半子矩阵611b。也就是说,导出了整个变换矩阵611。在将这种导出表示为针对每个元素的运算表达式时,其中要导出的变换矩阵是n行和n列的变换矩阵t并且要用于导出的子矩阵是c,可以将导出表示为下面的表达式(79)。

[数学式69]

sign=(x%2==0?1:-1)

t[n-1-y,x]=sign*c[y,x]

对于x=0,...,n-1y=0,...,n/2-1

…(79)

由于通过应用这种导出可以从子矩阵导出整个变换矩阵,因此变得不需要准备dst1的整个变换矩阵611作为要用于正交变换/逆正交变换的变换矩阵的候选(只需要准备子矩阵611a)。即,该候选的信息量可以减少到一半。也就是说,可以抑制lut大小的增大。此外,通过使用导出的变换矩阵执行正交变换/逆正交变换,可以获得与使用dst1的变换矩阵611进行正交变换/逆正交变换的情况相同的编码效率。

注意,变换类型不限于上述示例,只要应用这种导出的变换矩阵包括具有上述对称性的元素即可。例如,变换类型可以为dct3、dct1或dst3。

此外,在以上描述中,已经从上半子矩阵导出下半子矩阵(整个变换矩阵)。然而,实施方式不限于该示例,并且例如,可以从下半子矩阵导出上半子矩阵(整个变换矩阵)。

此外,第二行示例下方一行的示例(从顶部起的第三行示例)的导出聚焦于点对称性。

在这种情况下,子矩阵是变换矩阵的上半子矩阵或下半子矩阵,并且导出单元通过在围绕变换矩阵的中心的旋转方向上翻转子矩阵,并且进一步反转经翻转的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,以导出变换矩阵的下半子矩阵或上半子矩阵(即,变换矩阵的剩余子矩阵),来导出整个变换矩阵。

例如,如图88所示,导出单元在围绕变换矩阵612的中心612x的旋转方向上翻转具有dst4变换类型的变换矩阵612的上半子矩阵612a。此外,导出单元反转具有偶数行号和偶数列号的元素和具有奇数行号和奇数列号的元素的符号。通过这样做,导出了变换矩阵612的下半子矩阵612b。也就是说,导出了整个变换矩阵612。在将这种导出表示为针对每个元素的运算表达式时,其中要导出的变换矩阵是n行和n列的变换矩阵t并且要用于导出的子矩阵是c,可以将导出表示为下面的表达式(80)。

[数学式70]

sign=(x%2==1||y%2==1)?1:-1

t[n-1-y,n-1-x]=sign*c[y,x]

对于x=0,...,n-1,y=0,...,n/2-1

…(80)

由于通过应用这种导出可以从子矩阵导出整个变换矩阵,因此变得不需要准备dst4的整个变换矩阵612作为要用于正交变换/逆正交变换的变换矩阵的候选(只需要准备子矩阵612a)。即,该候选的信息量可以减少到一半。也就是说,可以抑制lut大小的增大。此外,通过使用导出的变换矩阵执行正交变换/逆正交变换,可以获得与使用dst4的变换矩阵612进行正交变换/逆正交变换的情况相同的编码效率。

注意,变换类型不限于上述示例,只要应用这种导出的变换矩阵包括具有上述对称性的元素即可。例如,变换类型可以为dct4。

此外,在以上描述中,已经从上半子矩阵导出了下半子矩阵(整个变换矩阵)。然而,实施方式不限于该示例,并且例如,可以从下半子矩阵导出上半子矩阵(整个变换矩阵)。

此外,在第三行示例下方一行的示例(从顶部起的第四行示例)的导出聚焦于相对于对角轴的对称性。

在这种情况下,子矩阵是变换矩阵的右上三角部分的子矩阵或左下三角部分的子矩阵,并且导出单元通过对子矩阵进行转置以导出变换矩阵的左下三角部分的子矩阵或右上三角部分的子矩阵来导出变换矩阵。

例如,如图89所示,导出单元围绕连接变换矩阵613的左上端和右下端的对角线翻转具有变换类型dct5的变换矩阵613的右上三角部分的子矩阵613a。通过这样做,导出了变换矩阵613的左下三角部分的子矩阵613b。也就是说,导出了整个变换矩阵613。在将这种导出表示为针对每个元素的运算表达式时,其中要导出的变换矩阵是n行和n列的变换矩阵t并且要用于导出的子矩阵是c,可以将导出表示为下面的表达式(81)。

[数学式71]

t[x,y]=c[y,x]

对于y=1,...,n-1x=y,...,n-1

…(81)

由于通过应用这种导出可以从子矩阵导出整个变换矩阵,因此变得不需要准备dct5的整个变换矩阵613作为要用于正交变换/逆正交变换的变换矩阵的候选(只需要准备子矩阵613a)。即,该候选的信息量可以减少到一半。也就是说,可以抑制lut大小的增大。此外,通过使用导出的变换矩阵执行正交变换/逆正交变换,可以获得与使用dct5的变换矩阵613进行正交变换/逆正交变换的情况相同的编码效率。

注意,如图89所示,转置等同于围绕连接变换矩阵的左上端和右下端的对角线的翻转。也就是说,转置被包括在翻转中(翻转操作之一)。

此外,变换类型不限于上述示例,只要应用这种导出的变换矩阵包括具有上述对称性的元素即可。例如,变换类型可以为dst5、dct4或dct8。

此外,在以上描述中,已经描述了从右上三角部分的子矩阵导出左下三角部分的子矩阵(整个变换矩阵)。然而,实施方式不限于此,并且例如,可以从左下三角部分的子矩阵导出右上三角部分的子矩阵(整个变换矩阵)。

此外,在第四行示例下方一行的示例(从顶部起的第五行示例)的导出聚焦于相对于交叉位置处的对角轴的对称性。

在这种情况下,子矩阵是变换矩阵的左上三角部分的子矩阵或右下三角部分的子矩阵,并且导出单元被配置成通过如下方式来导出变换矩阵:在以连接变换矩阵的右上端和左下端的对角线为轴的倾斜方向上翻转子矩阵,进一步反转经翻转的子矩阵的具有偶数行号和偶数列号的元素和具有奇数行号和奇数列号的元素的符号,并且导出变换矩阵的右下三角部分的子矩阵或左上三角部分的子矩阵。

例如,如图90所示,导出单元围绕连接变换矩阵602的右上端和左下端的对角线翻转具有dst7变换类型的变换矩阵602的左上三角部分的子矩阵602a。此外,导出单元反转具有偶数行号和偶数列号的元素和具有奇数行号和奇数列号的元素的符号。通过这样做,导出了变换矩阵602的右下三角部分的子矩阵602b。也就是说,导出了整个变换矩阵602。在将这种导出表示为针对每个元素的运算表达式时,其中,要导出的变换矩阵是n行和n列的变换矩阵t并且要用于导出的子矩阵是c,可以将导出表示为下面的表达式(82)。

[数学式72]

t[x,y]=sign*c[y,x]

对于y=1,...,n-1,x=0,...,n-1-y

…(82)

由于通过应用这种导出可以从子矩阵导出整个变换矩阵,因此变得不需要准备dst7的整个变换矩阵602作为要用于正交变换/逆正交变换的变换矩阵的候选(只需要准备子矩阵602a)。即,该候选的信息量可以减少到一半。也就是说,可以抑制lut大小的增大。此外,通过使用导出的变换矩阵执行正交变换/逆正交变换,可以获得与使用dst7的变换矩阵602进行正交变换/逆正交变换的情况相同的编码效率。

注意,在这种情况下的在以连接变换矩阵的右上端和左下端的对角线作为轴的倾斜方向上的翻转也被包括在“转置”中(转置操作之一),因为行和列是互换的。

注意,变换类型不限于上述示例,只要应用这种导出的变换矩阵包括具有上述对称性的元素即可。例如,变换类型可以是dst6。

此外,在以上描述中,已经描述了从左上三角部分的子矩阵导出右下三角部分的子矩阵(整个变换矩阵)。然而,实施方式不限于此,并且例如,可以从右下三角部分的子矩阵导出左上三角部分的子矩阵(整个变换矩阵)。

此外,第五行示例下方一行的示例(第六至第八行示例)的导出聚焦于相对于垂直轴的轴对称性、相对于水平轴的轴对称性以及点对称性。

在这种情况下,子矩阵是变换矩阵的左上四分之一子矩阵,并且导出单元在变换矩阵的行方向上翻转子矩阵、并且进一步反转经翻转的子矩阵的奇数编号的行向量的符号、以导出变换矩阵的右上四分之一子矩阵,在变换矩阵的列方向上翻转子矩阵、并且进一步反转经翻转的子矩阵的奇数编号的列向量的符号、以导出变换矩阵的左下四分之一子矩阵,并且在围绕变换矩阵的中心的旋转方向上翻转子矩阵、并且进一步反转经翻转的子矩阵的具有偶数行号和偶数列号的元素和具有奇数行号和奇数列号的元素的符号、以导出变换矩阵的右下四分之一子矩阵。

例如,如图91所示,导出单元围绕通过变换矩阵614的中心的、平行于列的方向(列方向)上的轴614x-1翻转(即,在水平方向上进行翻转)具有dst1的变换类型的变换矩阵614的左上四分之一子矩阵614a。此外,导出单元反转奇数编号的行向量的符号。通过这样做,导出了变换矩阵614的右上四分之一子矩阵614b。

此外,导出单元围绕通过变换矩阵614的中心的、平行于行的方向(行方向)上的轴614x-2翻转(即,在垂直方向上进行翻转)具有dst1的变换类型的变换矩阵614的左上四分之一子矩阵614a。此外,导出单元反转奇数编号的列向量的符号。通过这样做,导出了变换矩阵614的左下四分之一子矩阵614c。

此外,导出单元在围绕变换矩阵614的中心614x-3的旋转方向上翻转具有变换类型dst1的变换矩阵614的左上四分之一子矩阵614a。此外,导出单元反转具有偶数行号和偶数列号的元素和具有奇数行号和奇数列号的元素的符号。通过这样做,导出了变换矩阵614的右下四分之一子矩阵614d。

也就是说,导出了整个变换矩阵614。在将这种导出表示为针对每个元素的运算表达式时,其中要导出的变换矩阵是n行和n列的变换矩阵t并且要用于导出的子矩阵是c,导出可以表示为下面的表达式(83)至(85)。

[数学式73]

[右上部分矩阵]

sign=(y%2==0)?1:-1

t[y,n-1-x]=sign*c[y,x]

对于x=0,...,n/2-1,y=0,...,n/2-1

…(83)

[左下部分矩阵]

sign=(x%2=0)?1:-1

t[n-1-y,x]=sign*c[y,x]

对于x=0,...,n/2-1,y=0,...,n/2-1

…(84)

[右下部分矩阵]

sign=(x%2==1||y%2==1)?1:-1

t[n-1-y,n-1-x]=sign*c[y,x]

对于x=0,...,n/2-1,y=0,...,n/2-1

…(85)

由于通过应用这种导出可以从子矩阵导出整个变换矩阵,因此变得不需要准备dst1的整个变换矩阵614作为要用于正交变换/逆正交变换的变换矩阵的候选(只需要准备子矩阵614a)。即,该候选的信息量可以减少到四分之一。也就是说,可以抑制lut大小的增大。此外,通过使用导出的变换矩阵执行正交变换/逆正交变换,可以获得与使用dst1的变换矩阵614进行正交变换/逆正交变换的情况相同的编码效率。

注意,变换类型不限于上述示例,只要应用这种导出的变换矩阵包括具有上述对称性的元素即可。例如,变换类型可以为dct1。

此外,在上述描述中,已经描述了从左上四分之一子矩阵导出剩余子矩阵。然而,实施方式不限于此,并且例如,可以从右上四分之一子矩阵、从左下四分之一子矩阵或从右下四分之一子矩阵导出剩余子矩阵。

<变换矩阵导出单元>

从这样的子矩阵导出变换矩阵的图像编码装置100的配置与第一实施方式的情况相似。然后,在图像编码装置100中,正交变换单元113作为导出单元和正交变换单元执行应用了上述本技术的处理。此外,编码单元115作为编码单元执行应用了上述本技术的处理。此外,逆正交变换单元118作为逆正交变换单元和导出单元执行应用了上述本技术的处理。因此,图像编码装置100可以抑制正交变换/逆正交变换所需的存储器容量的增大。

此外,正交变换单元113的配置与第一实施方式的情况相似。然后,在正交变换单元113中,一次变换单元152作为导出单元和正交变换单元执行应用了上述本技术的处理。即,导出单元使用构成变换矩阵的一部分的子矩阵来导出整个变换矩阵,并且正交变换单元使用由导出单元导出的变换矩阵来对预测残差进行一次变换。因此,可以抑制一次变换所需的存储器容量的增大。

注意,如上所述,一次变换单元152执行一次水平变换和一次垂直变换作为一次变换。即,导出单元导出用于水平一维正交变换的变换矩阵和用于垂直一维正交变换的变换矩阵,并且正交变换单元使用由导出单元导出的用于水平一维正交变换的变换矩阵来执行水平一维正交变换,并且进一步使用由导出单元导出的用于垂直一维正交变换的变换矩阵来执行垂直一维正交变换,作为一次变换。因此,可以抑制其中执行水平一维正交变换和垂直一维正交变换的一次变换所需的存储器容量的增大。

注意,在这种情况下,一次变换单元152具有与<2-2.示例1-1>的情况相似的配置。此外,一次水平变换单元312具有与<2-2.示例1-1>的情况相似的配置。此外,一次垂直变换单元313具有与<2-2.示例1-1>的情况相似的配置。注意,一次水平变换单元312的变换矩阵导出单元321的内部配置和一次垂直变换单元313的变换矩阵导出单元351的内部配置与<2-2.示例1-1>的情况不同。

图92是示出包括在这种情况下的一次水平变换单元312中的变换矩阵导出单元321的主要配置示例的框图。如图92所示,在这种情况下的变换矩阵导出单元321包括变换矩阵lut331、水平翻转单元632、垂直翻转单元633、转置单元634和符号反转单元635。注意,在图92中,省略了表示数据传送的箭头,但是在变换矩阵导出单元321中,可以在任意处理单元(处理块)之间传送任意数据。

水平翻转单元632围绕通过变换矩阵中心的、列方向上的直线,在水平方向(行方向)上翻转输入的子矩阵,并且输出经翻转的子矩阵。垂直翻转单元633围绕通过变换矩阵的中心的、行方向上的直线,在垂直方向(列方向)上翻转输入的子矩阵,并且输出经翻转的子矩阵。转置单元634转置(倾斜翻转)输入的子矩阵并且输出经转置的子矩阵。符号反转单元635反转输入的子矩阵的一部分的符号,并且输出符号反转后的子矩阵。

例如,在图85所示的表中的除了项目名称的最上一行之外从顶部起的第一行导出示例的情况下,变换矩阵导出单元321从变换矩阵lut331中读取变换矩阵的左半(或右半)子矩阵,并且通过水平翻转单元632在行方向(水平方向)上翻转子矩阵,并且进一步通过符号反转单元635反转经翻转的子矩阵的奇数编号的行向量的符号,以导出变换矩阵的剩余子矩阵。通过该处理,可以获得变换矩阵的所有子矩阵。也就是说,导出了整个变换矩阵。变换矩阵导出单元321将导出的(整个)变换矩阵输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

此外,例如,在从图85所示的表的顶部起的第二行导出示例的情况下,变换矩阵导出单元321从变换矩阵lut331中读取变换矩阵的上半(或下半)子矩阵,并且通过垂直翻转单元633在列方向(垂直方向)上翻转子矩阵,并且进一步通过符号反转单元635反转经翻转的子矩阵的奇数编号的列向量的符号,以导出变换矩阵的剩余子矩阵。通过该处理,可以获得变换矩阵的所有子矩阵。也就是说,导出了整个变换矩阵。变换矩阵导出单元321将导出的(整个)变换矩阵输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

此外,例如,在从图85所示的表的顶部起的第三导出示例的情况下,变换矩阵导出单元321从变换矩阵lut331中读取变换矩阵的上半(或下半)子矩阵,通过水平翻转单元632在行方向(水平方向)上翻转子矩阵,进一步通过垂直翻转单元633在列方向(垂直方向)上翻转经水平翻转的子矩阵,并且通过符号反转单元635反转所导出的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,以导出变换矩阵的剩余子矩阵。通过该处理,可以获得变换矩阵的所有子矩阵。也就是说,导出了整个变换矩阵。变换矩阵导出单元321将导出的(整个)变换矩阵输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

此外,例如,在从图85所示的表的顶部起的第四导出示例的情况下,变换矩阵导出单元321从变换矩阵lut331中读取变换矩阵的右上三角部分(或左下三角部分)的子矩阵,并且通过转置单元634围绕连接变换矩阵的左上端和右下端的直线转置该子矩阵,以导出变换矩阵的剩余子矩阵。通过该处理,可以获得变换矩阵的所有子矩阵。也就是说,导出了整个变换矩阵。变换矩阵导出单元321将导出的(整个)变换矩阵输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

此外,例如,在从图85所示的表的顶部起的第五行导出示例的情况下,变换矩阵导出单元321从变换矩阵lut331中读取变换矩阵的左上三角部分(或右下三角部分)的子矩阵,通过转置单元634围绕连接变换矩阵的右上端和左下端的直线转置子矩阵,并且通过符号反转单元635反转所导出的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,以导出变换矩阵的剩余子矩阵。通过该处理,可以获得变换矩阵的所有子矩阵。也就是说,导出了整个变换矩阵。变换矩阵导出单元321将导出的(整个)变换矩阵输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

此外,例如,在图85中所示的从顶部起的第六行导出示例的情况下,变换矩阵导出单元321从变换矩阵lut331中读取变换矩阵的左上四分之一子矩阵。变换矩阵导出单元321通过水平翻转单元632在行方向(水平方向)上翻转子矩阵,并且进一步通过符号反转单元635反转经翻转的子矩阵的奇数编号的行向量的符号,以导出变换矩阵的右上四分之一子矩阵。

此外,变换矩阵导出单元321通过垂直翻转单元633在列方向(垂直方向)上翻转左上四分之一子矩阵,并且进一步通过符号反转单元635反转经翻转的子矩阵的奇数编号的列向量的符号,以导出变换矩阵的左下四分之一子矩阵。

此外,变换矩阵导出单元321通过水平翻转单元632在行方向(水平方向)上翻转左上四分之一子矩阵,进一步通过垂直翻转单元633在列方向(垂直方向)上翻转经水平翻转的子矩阵,并且通过符号反转单元635反转所导出的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,以导出变换矩阵的右下四分之一子矩阵。

即,通过该处理,可以获得变换矩阵的所有子矩阵。也就是说,导出了整个变换矩阵。变换矩阵导出单元321将导出的(整个)变换矩阵输出到变换矩阵导出单元321的外部(提供给矩阵计算单元322)作为变换矩阵th。

利用上述配置,变换矩阵导出单元321可以实现图85中所示的表的每个导出示例。

<变换矩阵导出单元>

图93是示出在这种情况下的一次垂直变换单元313中包括的变换矩阵导出单元351的主要配置示例的框图。如图93所示,与变换矩阵导出单元321的情况相似,在这种情况下的变换矩阵导出单元351包括变换矩阵lut361、水平翻转单元642、垂直翻转单元643、转置单元644和符号反转单元645。注意,在图93中,省略了表示数据传送的箭头,但是在变换矩阵导出单元351中,可以在任意处理单元(处理块)之间传送任意数据。

水平翻转单元642是与水平翻转单元632相似的处理单元。垂直翻转单元643是与垂直翻转单元633相似的处理单元。转置单元644是与转置单元634相似的处理单元。符号反转单元645是与符号反转单元635相似的处理单元。

变换矩阵导出单元351从变换矩阵lut361中读取变换矩阵的预定子矩阵,并且通过图85的表中所示的导出示例的任何方法、适当地经由水平翻转单元632至符号反转单元635从该子矩阵导出剩余子矩阵。也就是说,导出整个变换矩阵。变换矩阵导出单元351将导出的(整个)变换矩阵输出到变换矩阵导出单元351的外部(提供给矩阵计算单元352)作为变换矩阵tv。

利用上述配置,变换矩阵导出单元351可以实现图85中所示的表的每个导出示例。

<变换矩阵导出处理的流程>

因为通过与<2-2.示例1-1>的情况相似的流程来执行(通过与图27中的流程图相似的流程执行)这种情况下的一次变换处理,因此基本上省略其描述。

此外,在这种情况下,通过与<2-2.示例1-1>的情况相似的流程来执行(通过与图28中的流程图相似的流程执行)图27的步骤s302中执行的一次水平变换处理,但是通过与图30中的情况不同的流程来执行在图28中的步骤s321中执行的变换矩阵导出处理。

将参照图94中的流程图描述在这种情况下在图28的步骤s321中由一次水平变换单元312中的变换矩阵导出单元321执行的变换矩阵导出处理的流程的示例。

当变换矩阵导出处理开始时,在步骤s701中,变换矩阵导出单元321例如通过参考图95所示的对应表,从变换矩阵lut331中读取与变换类型标识符trtypeidxh对应的子矩阵c。

在步骤s702中,变换矩阵导出单元321基于预定导出方法(图85的表中所示的导出方法中的任何方法),适当地使用水平翻转单元632至符号反转单元635,从子矩阵c导出与变换类型标识符trtypeidxh对应的变换类型的变换矩阵th。

当步骤s702中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

<变换矩阵导出处理的流程>

注意,在这种情况下,通过与<2-2.示例1-1>的情况相似的流程来执行(通过与图32中的流程图相似的流程执行)图27的步骤s303中执行的一次垂直变换处理。注意,通过与图94中的流程图的情况相似的流程来执行图32中的步骤s361中执行的变换矩阵导出处理。因此,省略其描述。在图94的描述中,简单地用变换类型标识符trtypeidxv替换变换类型标识符trtypeidxh,并且简单地用变换矩阵tv替换变换矩阵th。

<变换矩阵导出单元>

接下来,将描述在该情况下的图像解码装置200的配置。由于包括在这种情况的图像解码装置200中的逆一次变换单元253、逆一次垂直变换单元412、逆一次水平变换单元413等的配置与<2-2.示例1-1>的情况相似,因此省略其描述。

即,逆正交变换单元可以对由解码单元获得的系数数据执行逆二次变换,并且进一步使用由导出单元导出的变换矩阵,对逆二次变换结果执行逆一次变换。

此外,导出单元可以导出用于水平逆一维正交变换的变换矩阵和用于垂直逆一维正交变换的变换矩阵,并且逆正交变换单元可以使用由导出单元导出的用于水平逆一维正交变换的变换矩阵来执行水平逆一维正交变换,并且进一步使用由导出单元导出的用于垂直逆一维正交变换的变换矩阵来执行垂直逆一维正交变换,作为逆一次变换。

图96是示出包括在这种情况下的逆一次垂直变换单元412中的变换矩阵导出单元421的主要配置示例的框图。如图96所示,与变换矩阵导出单元321相似,在这种情况下的变换矩阵导出单元421包括变换矩阵lut431、水平翻转单元652、垂直翻转单元653、转置单元654和符号反转单元655。注意,在图96中,省略了表示数据传送的箭头,但是在变换矩阵导出单元421中,可以在任意处理单元(处理块)之间传送任意数据。

水平翻转单元652是与水平翻转单元632相似的处理单元。垂直翻转单元653是与垂直翻转单元633相似的处理单元。转置单元654是与转置单元634相似的处理单元。符号反转单元655是与符号反转单元635相似的处理单元。

在逆正交变换(逆一次垂直变换)中,变换矩阵导出单元421从变换矩阵lut431中读取变换矩阵的预定子矩阵,并且通过图85的表中所示的导出示例的任何方法适当地经由水平翻转单元652至符号反转单元655从该子矩阵导出剩余的子矩阵。也就是说,导出整个变换矩阵。变换矩阵导出单元421将导出的(整个)变换矩阵输出到变换矩阵导出单元421的外部(提供给矩阵计算单元422)作为变换矩阵tv。

利用上述配置,变换矩阵导出单元421可以实现图85中所示的表的每个导出示例。

<变换矩阵导出单元>

图97是示出包括在这种情况下的逆一次水平变换单元413中的变换矩阵导出单元451的主要配置示例的框图。如图97中所示,与变换矩阵导出单元421相似,这种情况下的变换矩阵导出单元451包括变换矩阵lut461、水平翻转单元662、垂直翻转单元663、转置单元664和符号反转单元665。注意,在图97中,省略了表示数据传送的箭头,但是在变换矩阵导出单元451中,可以在任意处理单元(处理块)之间传送任意数据。

水平翻转单元662是与水平翻转单元632相似的处理单元。垂直翻转单元663是与垂直翻转单元633相似的处理单元。转置单元664是与转置单元634相似的处理单元。符号反转单元665是与符号反转单元635相似的处理单元。

在逆正交变换(逆一次水平变换)中,变换矩阵导出单元451从变换矩阵lut431中读取变换矩阵的预定子矩阵,并且通过图85的表中所示的导出示例的任何方法、适当地经由水平翻转单元662至符号反转单元665从子矩阵导出剩余子矩阵。也就是说,导出了整个变换矩阵。变换矩阵导出单元451将导出的(整个)变换矩阵输出到变换矩阵导出单元451的外部(提供给矩阵计算单元452)作为变换矩阵tv。

通过上述配置,变换矩阵导出单元451可以实现图85中所示的表的每个导出示例。

<变换矩阵导出处理的流程>

通过与<2-2.示例1-1>的情况相似的流程来执行(通过与图39中的流程图相似的流程执行)这种情况下的逆一次变换处理。此外,通过与<2-2.示例1-1>的情况相似的流程来执行(通过与图40中的流程图相似的流程执行)图39中的步骤s401中执行的逆一次变换选择处理。此外,通过与<2-2.示例1-1>的情况相似的流程来执行(通过与图41中的流程图相似的流程执行)图39的步骤s402中执行的逆一次垂直变换处理。因此,基本上省略了对上述处理的描述。

注意,通过与图94中的流程图的情况相似的流程来执行在逆一次垂直变换处理中执行的变换矩阵导出处理(图41中的步骤s441)。因此,省略其描述。

<变换矩阵导出处理的流程>

注意,在这种情况下,通过与<2-2.示例1-1>的情况相似的流程来执行(通过与图42中的流程图相似的流程执行)图39的步骤s403中执行的逆一次水平变换处理。因此,省略其描述。

注意,通过与图94中的流程图的情况相似的流程来执行在逆一次水平变换处理中执行的变换矩阵导出处理(图42中的步骤s461)。因此,省略其描述。

<5.第四实施方式>

<5-1.公共概念>

<实施方式的组合>

已经描述了第一实施方式至第三实施方式。这些实施方式可以被组合并应用。例如,在示例1-1中描述的方法与在第三实施方式中描述的方法可以组合应用于在非专利文献1中描述的方法。

也就是说,导出单元可以使用子矩阵导出第一变换矩阵,并且进一步使用所导出的第一变换矩阵导出第二变换矩阵,并且正交变换单元可以使用由导出单元导出的第二变换矩阵对预测残差进行正交变换。

此时,导出单元可以使用第一变换矩阵导出变换类型与第一变换矩阵的变换类型不同的第二变换矩阵。此外,导出单元可以翻转或转置第一变换矩阵以导出第二变换矩阵。

在这种情况下,如图98的表所示,在非专利文献1中描述的技术的情况下所需的五种类型的变换矩阵(参见图6中的表a)可以减少为三种类型,并且此外,仅需要为这三种类型的变换矩阵准备子矩阵。因此,总lut大小可以为约20kb。即,与非专利文献1中描述的技术的情况相比,lut的大小可以减小(大约53kb(图6中的表a))。也就是说,可以抑制lut的大小的增大。

<变换矩阵导出单元>

在这种情况下,图像编码装置100和图像解码装置200的配置也基本上与第一实施方式的相应配置相同。然而,仅变换矩阵导出单元的配置与第一实施方式的相应配置不同。

例如,图99示出在这种情况下的变换矩阵导出单元321的主要配置示例。如图99所示,在这种情况下的变换矩阵导出单元321仅需要具有示例1-1的配置(图24)和第三实施方式的配置(图92)两者。也就是说,在这种情况下的变换矩阵导出单元321包括变换矩阵lut331、翻转单元332、转置单元333、水平翻转单元632、垂直翻转单元633、转置单元634和符号反转单元635。

<变换矩阵导出处理的流程>

将参照图100中的流程图描述通过该变换矩阵导出处理在一次水平变换处理中执行的变换矩阵导出处理的流程的示例。

当变换矩阵导出处理开始时,在步骤s721中,变换矩阵导出单元321通过参考图101所示的对应表,从变换矩阵lut331中读取与变换类型标识符trtypeidxh对应的基础子矩阵c。

在步骤s722中,变换矩阵导出单元321基于对应表导出与变换类型标识符trtypeidxh对应的翻转标志flipflag和转置标志transposeflag(设定值)。

在步骤s723中,变换矩阵导出单元321基于预定导出方法,适当地使用水平翻转单元632至符号反转单元635,根据子矩阵c生成与变换类型标识符trtypeidxh对应的基础变换矩阵tbase。

然后,变换矩阵导出单元321适当地使用翻转单元332和转置单元333来执行从步骤s724至s728的每个处理,与图30中从步骤s342至s346的每个处理相似地那样。也就是说,第一变换矩阵被适当地变换为第二变换矩阵。

当步骤s728中的处理结束时,变换矩阵导出处理结束,并且处理返回到图28。

注意,包括在一次垂直变换单元313中的变换矩阵导出单元351、包括在逆一次垂直变换单元412中的变换矩阵导出单元421以及包括在逆一次水平变换单元413中的变换矩阵导出单元451全部具有与参照图99所描述的情况相似的配置。因此,省略对处理的描述。

此外,通过与参照图100中的流程图描述的情况相似的流程,执行在一次垂直变换处理中执行的变换矩阵导出处理、在逆一次垂直变换处理中执行的变换矩阵导出处理、以及在逆一次水平变换处理中执行的变换矩阵导出处理。因此,省略对处理的描述。

通过这样做,可以获得示例1-1和第三实施方式两者的效果。

注意,实施方式(示例)的组合是任意的,并且不限于该示例。例如,第三实施方式中描述的方法可以与第一实施方式的每个示例组合。此外,第三实施方式中描述的方法可以与第二实施方式中描述的方法组合。

<6.附记>

<计算机>

上述一系列处理可以通过硬件或软件执行。在通过软件执行这一系列处理的情况下,在计算机中安装配置软件的程序。这里,计算机包括并入专用硬件中的计算机、能够通过安装各种程序来执行各种功能的计算机、例如通用个人计算机,等等。

图102是示出通过程序执行上述一系列处理的计算机的硬件的配置示例的框图。

在图102所示的计算机800中,中央处理单元(cpu)801、只读存储器(rom)802和随机存取存储器(ram)803通过总线804相互连接。

输入/输出接口810也连接到总线804。输入单元811、输出单元812、存储单元813、通信单元814和驱动器815连接到输入/输出接口810。

输入单元811包括例如键盘、鼠标、麦克风、触摸面板、输入端子等。输出单元812包括例如显示器、扬声器、输出端子等。存储单元813包括例如硬盘、ram盘、非易失性存储器等。通信单元814例如包括网络接口。驱动器815驱动诸如磁盘、光盘、磁光盘或半导体存储器的可移除介质821。

在如上所述的那样配置的计算机中,cpu801例如经由输入/输出接口810和总线804将存储在存储单元813中的程序加载到ram803中,并且执行该程序,从而执行上述一系列处理。此外,ram803适当地存储由cpu801执行各种类型的处理所需的数据等。

例如,由计算机(cpu801)执行的程序可以被记录在作为封装介质等的可移除介质821上并且被应用。在这种情况下,可以通过将可移除介质821附接到驱动器815,经由输入/输出接口810将程序安装到存储单元813。

此外,该程序可以经由例如局域网、因特网或数字广播的有线或无线传输介质来提供。在这种情况下,程序可以由通信单元814接收并被安装在存储单元813中。

除了上述方法之外,程序可以被预先安装在rom802或存储单元813中。

<信息和处理的单位>

其中设定了上述各种类型的信息的数据单位和要由各种类型的处理来处理的数据单位是任意的,并且不限于上述示例。例如,可以针对每个变换单位(tu)、变换块(tb)、预测单位(pu)、预测块(pb)、编码单位(cu)、最大编码单位(lcu)、子块、块、图块、切片、图片、序列或分量来设定这些信息和处理,或者可以使用这些数据单位中的数据。当然,可以针对每个信息和处理设定数据单位,并且不需要统一所有信息和处理的数据单位。注意,这些信息的存储位置是任意的,并且可以存储在上述数据单位的头部、参数等中。此外,信息可以被存储在多个位置。

<控制信息>

可以将关于在以上实施方式中描述的本技术的控制信息从编码侧传送到解码侧。例如,可以传送用于控制是否允许(或禁止)应用上述本技术的控制信息(例如,enabled_flag)。此外,例如,可以传送指示应用了上述本技术的对象(或者未应用本技术的对象)的控制信息。例如,可以传送用于指定应用本技术(或者允许或禁止应用)的块大小(上限、下限或两者)、帧、分量、层等的控制信息。

<本技术的适用对象>

本技术可以应用于任何图像编码/解码方法。即,例如变换(逆变换)、量化(逆量化)、编码(解码)和预测的关于图像编码/解码的各种类型的处理的规格是任意的,并且不限于上述示例,只要与上述本技术不发生矛盾即可。此外,只要与上述本技术不发生矛盾,则可以省略部分处理。

此外,本技术可以应用于执行包括多个视点(视图)的图像的多视点图像的编码/解码的多视点图像编码/解码系统。在这种情况下,本技术被简单地应用于每个视点(视图)的编码/解码。

此外,本技术可以应用于分层图像编码(可伸缩编码)/解码系统,该系统对多层(分层)的分层图像进行编码/解码,使得具有针对预定参数的可伸缩性功能。在这种情况下,本技术简单地应用于每一层(layer)的编码/解码。

根据上述实施方式的图像编码装置100和图像解码装置200可以应用于例如卫星广播、有线广播(例如有线电视)、因特网上的分发、以及通过蜂窝通信向终端的分发中的发送器和接收器(例如电视接收器和移动电话),或者各种电子装置,例如在诸如光盘、磁盘和闪存的介质上记录图像并且从这些存储介质再现图像的装置(例如硬盘记录器和摄像装置)。

此外,例如,本技术可以实现为要安装在配置任意装置或系统的装置上的任何配置,诸如作为系统大规模集成(lsi)等的处理器(例如,视频处理器)、使用多个处理器等的模块(例如,视频模块)、使用多个模块等的单元(例如,视频单元)、或者其中向单元添加了其他功能的设备(例如,视频设备)(即,装置的一部分的配置)。

此外,本技术还可以应用于包括多个装置的网络系统。例如,本技术可以应用于向诸如计算机、视听(av)装置、便携式信息处理终端或物联网(iot)装置的任意终端提供关于图像(运动图像)的服务的云服务。

注意,例如,应用本技术的系统、设备、处理单元等可以用在任意领域中,例如交通、医疗护理、犯罪预防、农业、畜牧业、采矿、美容、工厂、家用电器、天气和自然监视。此外,在任意领域中的使用也是任意的。

例如,本技术可以应用于被提供以用于提供用于欣赏等的内容的系统和装置。此外,例如,本技术还可以应用于用于交通的系统和装置,诸如交通状况监视和自动驾驶控制。此外,例如,本技术还可以应用于为了安全而提供的系统和装置。此外,例如,本技术可以应用于为机器等的自动控制而提供的系统和装置。此外,例如,本技术还可以应用于为农业或畜牧业提供的系统和装置。此外,本技术还可以应用于监视诸如火山、森林以及海洋的自然状态、野生动物等的系统和装置。此外,例如,本技术还可以应用于为运动提供的系统和装置。

<其他>

注意,本说明书中的“标志”是用于标识多个状态的信息,并且不仅包括用于标识真(1)和假(0)这两个状态的信息,而且包括能够标识三个或更多个状态的信息。因此,“标志”可以采用的值可以是例如二进制值1/0或者可以是三进制值或更多。即,构成“标志”的位数是任意的,并且可以是1位或多位。此外,设想标识信息(包括标志)不仅呈在比特流中包括标识信息的形式,而且呈在比特流中包括标识信息相对于特定基准信息的差异信息的形式。因此,在本说明书中,“标志”和“标识信息”不仅包括信息本身,还包括相对于基准信息的差异信息。

此外,可以以任何形式传送或记录关于编码数据(比特流)的各种类型的信息(元数据等),只要各种类型的信息与编码数据相关联即可。这里,术语“关联”意味着例如当处理一个数据时可以使用(链接)另一数据。即,彼此相关联的数据可以被收集为一个数据或者可以是单独的数据。例如,与编码数据(图像)相关联的信息可以在与编码数据(图像)的传输路径不同的传输路径上传送。此外,例如,与编码数据(图像)相关联的信息可以被记录在与编码数据(图像)不同的记录介质(或同一记录介质的另外的记录区域)上。注意,该“关联”可以是数据的一部分而不是整个数据。例如,图像和与图像对应的信息可以以任意单位(诸如多个帧、一个帧或帧中的一部分)彼此关联。

注意,在本说明书中,诸如“组合”、“复用”、“添加”、“集成”、“包括”、“存储”和“插入”的术语表示将多个事物放入一个事物中,诸如将编码数据和元数据放入一个数据中,并且表示上述“关联”的一种方法。

此外,本技术的实施方式不限于上述实施方式,并且在不脱离本技术的主旨的情况下可以进行各种修改。

此外,例如,本技术可以被实现为构成装置或系统的任何配置,例如,诸如作为系统大规模集成(lsi)等的处理器、使用多个处理器等的模块、使用多个模块等的单元、或者其中其他功能被添加到单元的设备(即,装置的一部分的配置)。

注意,在本说明书中,术语“系统”表示多个配置元件(装置、模块(部件)等)的组,并且所有配置元件是否在同一外壳中是无关紧要的。因此,容纳在单独的壳体中并且经由网络连接的多个装置以及在一个壳体中容纳多个模块的一个装置两者均是系统。

此外,例如,可以将描述为一个装置(或处理单元)的配置划分且配置为多个装置(或处理单元)。反之,可以将描述为多个装置(或处理单元)的配置共同配置成一个装置(或处理单元)。此外,可以将除上述配置以外的配置添加到每个装置(或每个处理单元)的配置。此外,只要作为整体的系统的配置和操作基本相同,则特定装置(或处理单元)的配置的一部分可以被包括在另外的装置(或另外的处理单元)的配置中。

此外,例如,在本技术中,可以采用其中由多个装置经由网络来共享和协作处理一个功能的云计算的配置。

此外,例如,上述程序可以由任意装置执行。在这种情况下,装置仅需要具有必要的功能(功能块等)并且获得必要的信息。

此外,例如,上述流程图中描述的步骤可以由一个装置执行,或者可以由多个装置以共享的方式执行。此外,在一个步骤中包括多个处理的情况下,一个步骤中包括的多个处理可以由一个装置执行,或者可以由多个装置共享并且执行。换言之,包括在一个步骤中的多个处理可以作为多个步骤的处理来执行。相反,描述为多个步骤的处理可以作为一个步骤来共同执行。

注意,在由计算机执行的程序中,描述程序的步骤的处理可以根据本说明书中描述的顺序按时间顺序执行,或者可以并行地或者在例如进行调用时的必要定时处单独执行。即,只要不发生矛盾,就可以以与上述顺序不同的顺序执行每个步骤的处理。此外,描述程序的步骤的处理可以与另外的程序的处理并行执行,或者可以与另外的程序的处理组合执行。

注意,只要不存在不一致性,则本说明书中描述的多个本技术可以彼此独立地实现为单个单元。当然,可以一起实现任意数目的本技术。例如,在任何实施方式中描述的本技术的部分或全部可以与在另外的实施方式中描述的本技术的部分或全部组合地实现。此外,上述任意本技术的一部分或全部可以与上面未描述的另外的技术组合实现。

注意,本技术还可以具有以下配置。

(1)一种图像处理设备,包括:

导出单元,其被配置成使用第一变换矩阵导出第二变换矩阵;

正交变换单元,其被配置成使用由所述导出单元导出的第二变换矩阵对图像的预测残差进行正交变换;以及

编码单元,其被配置成对通过由所述正交变换单元对所述预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

(2)根据(1)所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出与所述第一变换矩阵的变换类型不同的变换类型的所述第二变换矩阵。

(3)根据(1)或(2)所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出与所述第一变换矩阵具有相同的行数和相同的列数的第二变换矩阵。

(4)根据(1)至(3)中任一项所述的图像处理设备,其中,

所述导出单元通过对所述第一变换矩阵的元素的操作来导出所述第二变换矩阵。

(5)根据(4)所述的图像处理设备,其中,

所述操作包括元素的重新排列。

(6)根据(4)或(5)所述的图像处理设备,其中,

所述导出单元通过多次执行所述操作来导出所述第二变换矩阵。

(7)根据(1)至(6)中任一项所述的图像处理设备,其中,

所述导出单元使用存储在查找表中的所述第一变换矩阵来导出所述第二变换矩阵。

(8)根据(1)至(7)中任一项所述的图像处理设备,其中,

所述正交变换单元使用由所述导出单元导出的第二变换矩阵对预测残差执行一次变换,并且进一步对所述一次变换的结果执行二次变换。

(9)根据(8)所述的图像处理设备,其中,

所述导出单元导出用于水平一维正交变换的第二变换矩阵和用于垂直一维正交变换的第二变换矩阵,并且

作为所述一次变换,所述正交变换单元

使用由所述导出单元导出的用于水平一维正交变换的所述第二变换矩阵执行所述水平一维正交变换,并且进一步

使用由所述导出单元导出的用于垂直一维正交变换的所述第二变换矩阵执行所述垂直一维正交变换。

(10)根据(1)至(9)中任一项所述的图像处理设备,其中,

所述导出单元翻转所述第一变换矩阵,导出所述第二变换矩阵。

(11)根据(1)至(10)中任一项所述的图像处理设备,其中,

所述导出单元对所述第一变换矩阵进行转置,导出所述第二变换矩阵。

(12)根据(1)至(11)中任一项所述的图像处理设备,其中,

所述导出单元翻转所述第一变换矩阵,反转经翻转的第一变换矩阵的奇数编号的行向量的符号,导出所述第二变换矩阵。

(13)根据(1)至(12)中任一项所述的图像处理设备,其中,

所述导出单元翻转所述第一变换矩阵,对经翻转的第一变换矩阵进行转置,导出所述第二变换矩阵。

(14)根据(1)至(13)中任一项所述的图像处理设备,其中,

所述导出单元对所述第一变换矩阵进行转置,翻转经转置的第一变换矩阵,导出所述第二变换矩阵。

(15)根据(1)至(14)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有期望类型的波形的第二变换矩阵。

(16)根据(1)至(15)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有平坦型波形的第二变换矩阵。

(17)根据(1)至(16)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有增大型波形的第二变换矩阵。

(18)根据(1)至(17)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有减小型波形的第二变换矩阵。

(19)根据(1)至(18)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有人字型波形的第二变换矩阵。

(20)一种图像处理方法,包括:

使用第一变换矩阵导出第二变换矩阵;

使用所导出的所述第二变换矩阵对图像的预测残差进行正交变换;以及

对通过对所述预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

(21)一种图像处理设备,包括:

解码单元,其被配置成对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;

导出单元,其被配置成使用第一变换矩阵导出第二变换矩阵;以及

逆正交变换单元,其被配置成使用由所述导出单元导出的所述第二变换矩阵对由所述解码单元获得的系数数据进行逆正交变换。

(22)根据(21)所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出与所述第一变换矩阵的变换类型的不同的变换类型的第二变换矩阵。

(23)根据(21)或(22)所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出与所述第一变换矩阵具有相同的行数和相同的列数的第二变换矩阵。

(24)根据(21)至(23)中任一项所述的图像处理设备,其中,

所述导出单元通过对所述第一变换矩阵的元素的操作来导出所述第二变换矩阵。

(25)根据(24)所述的图像处理设备,其中,

所述操作包括元素的重新排列。

(26)根据(24)或(25)所述的图像处理设备,其中,

所述导出单元通过多次执行所述操作来导出所述第二变换矩阵。

(27)根据(21)至(26)中任一项所述的图像处理设备,其中,

所述导出单元使用存储在查找表中的所述第一变换矩阵导出所述第二变换矩阵。

(28)根据(21)至(27)中任一项所述的图像处理设备,其中,

所述逆正交变换单元对所述系数数据执行逆二次变换,并且进一步使用由所述导出单元导出的所述第二变换矩阵对所述逆二次变换的结果执行逆一次变换。

(29)根据(28)所述的图像处理设备,其中,

所述导出单元导出用于水平逆一维正交变换的第二变换矩阵和用于垂直逆一维正交变换的第二变换矩阵,并且

作为所述逆一次变换,所述逆正交变换单元

使用由所述导出单元导出的用于水平逆一维正交变换的所述第二变换矩阵执行所述水平逆一维正交变换,并且进一步

使用由所述导出单元导出的用于垂直逆一维正交变换的所述第二变换矩阵执行所述垂直逆一维正交变换。

(30)根据(21)至(29)中任一项所述的图像处理设备,其中,

所述导出单元翻转所述第一变换矩阵,导出所述第二变换矩阵。

(31)根据(21)至(30)中任一项所述的图像处理设备,其中,

所述导出单元对所述第一变换矩阵进行转置,导出所述第二变换矩阵。

(32)根据(21)至(31)中任一项所述的图像处理设备,其中,

所述导出单元翻转所述第一变换矩阵,反转经翻转的第一变换矩阵的奇数编号的行向量的符号,导出所述第二变换矩阵。

(33)根据(21)至(32)中任一项所述的图像处理设备,其中,

所述导出单元翻转所述第一变换矩阵,对经翻转的第一变换矩阵进行转置,导出所述第二变换矩阵。

(34)根据(21)至(33)中任一项所述的图像处理设备,其中,

所述导出单元对所述第一变换矩阵进行转置,翻转经转置的第一变换矩阵,导出所述第二变换矩阵。

(35)根据(21)至(34)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有期望类型的波形的第二变换矩阵。

(36)根据(21)至(35)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有平坦型波形的第二变换矩阵。

(37)根据(21)至(36)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有增大型波形的第二变换矩阵。

(38)根据(21)至(37)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有减小型波形的第二变换矩阵。

(39)根据(21)至(38)中任一项所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出其中最低阶行向量具有人字型波形的第二变换矩阵。

(40)一种图像处理方法,包括:

对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;

使用第一变换矩阵导出第二变换矩阵;以及

使用所导出的第二变换矩阵对所获得的系数数据进行逆正交变换。

(41)一种图像处理设备,包括:

操作单元,其被配置成对图像的预测残差执行置换操作;

正交变换单元,其被配置成使用用作基础的变换矩阵,对通过所述操作单元进行了置换操作的所述预测残差进行正交变换;以及

编码单元,其被配置成对通过由所述正交变换单元对所述预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

(42)根据(41)所述的图像处理设备,其中,

所述操作单元在一维正交变换之间的空间对称性方向上翻转所述预测残差,以及

所述正交变换单元使用所述变换矩阵对通过所述操作单元被翻转的预测残差进行正交变换。

(43)根据(41)或(42)所述的图像处理设备,其中,

所述操作单元水平翻转所述预测残差,并且

所述正交变换单元使用所述变换矩阵对通过所述操作单元被水平翻转的预测残差进行正交变换。

(44)根据(41)至(43)中任一项所述的图像处理设备,其中,

所述操作单元垂直翻转所述预测残差,并且

所述正交变换单元使用所述变换矩阵对通过所述操作单元被垂直翻转的预测残差进行正交变换。

(45)根据(41)至(44)中任一项所述的图像处理设备,其中,

所述操作单元水平和垂直翻转所述预测残差,并且

所述正交变换单元使用所述变换矩阵对通过所述操作单元被水平和垂直翻转的预测残差进行正交变换。

(46)根据(41)至(45)中任一项所述的图像处理设备,还包括:

导出单元,其被配置成使用第一变换矩阵导出第二变换矩阵,其中,

所述正交变换单元被配置成使用由所述导出单元导出的所述第二变换矩阵对通过所述操作单元被翻转的预测残差进行正交变换。

(47)根据(46)所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出与所述第一变换矩阵具有相同的行数和相同的列数的所述第二变换矩阵。

(48)根据(46)或(47)所述的图像处理设备,其中,

所述导出单元对所述第一变换矩阵的奇数编号的行向量的符号进行反转,导出所述第二变换矩阵。

(49)根据(41)至(48)中任一项所述的图像处理设备,其中,

所述正交变换单元使用用作基础的变换矩阵对通过所述操作单元进行了置换操作的预测残差执行一次变换,并且进一步对所述一次变换的结果执行二次变换。

(50)一种图像处理方法,包括:

对图像的预测残差执行置换操作;

使用用作基础的变换矩阵对进行了置换操作的预测残差进行正交变换;以及

对通过对所述预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

(51)一种图像处理设备,包括:

解码单元,其被配置成对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;

逆正交变换单元,其被配置成对由所述解码单元获得的系数数据进行逆正交变换;以及

操作单元,其被配置成对由所述逆正交变换单元获得的所述系数数据的逆正交变换结果执行置换操作。

(52)根据(51)所述的图像处理设备,其中,

所述操作单元在一维正交变换之间的空间对称性方向上翻转所述逆正交变换结果。

(53)根据(51)或(52)所述的图像处理设备,其中,

所述操作单元水平翻转所述逆正交变换结果。

(54)根据(51)至(53)中任一项所述的图像处理设备,其中,

所述操作单元垂直翻转所述逆正交变换结果。

(55)根据(51)至(54)中任一项所述的图像处理设备,其中,

所述操作单元水平和垂直翻转所述逆正交变换的结果。

(56)根据(51)至(55)中任一项所述的图像处理设备,还包括:

导出单元,其被配置成使用第一变换矩阵导出第二变换矩阵,其中,

所述逆正交变换单元被配置成使用由所述导出单元导出的所述第二变换矩阵对由所述解码单元获得的系数数据进行逆正交变换,并且

所述操作单元被配置成对由所述逆正交变换单元获得的所述系数数据的逆正交变换结果执行置换操作。

(57)根据(56)所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出与所述第一变换矩阵具有相同的行数和相同的列数的所述第二变换矩阵。

(58)根据(56)或(57)所述的图像处理设备,其中,

所述导出单元对所述第一变换矩阵的奇数编号的行向量的符号进行反转,导出所述第二变换矩阵。

(59)根据(51)至(58)中任一项所述的图像处理设备,其中,

所述逆正交变换单元对由所述解码单元获得的系数数据执行逆二次变换,并且进一步使用用作基础的变换矩阵对逆二次变换结果执行逆一次变换,以及

操作单元对由所述逆正交变换单元获得的逆一次变换结果执行置换操作。

(60)一种图像处理方法,包括:

对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;

对所获得的系数数据进行逆正交变换;以及

对所获得的系数数据的逆正交变换结果执行置换操作。

(61)一种图像处理设备,包括:

导出单元,其被配置成使用构成变换矩阵的一部分的子矩阵导出所述变换矩阵;

正交变换单元,其被配置成使用由所述导出单元导出的变换矩阵对图像的预测残差进行正交变换;以及

编码单元,其被配置成对通过由所述正交变换单元对所述预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

(62)根据(61)所述的图像处理设备,其中,

所述导出单元使用存储在查找表中的所述子矩阵来导出所述变换矩阵。

(63)根据(61)或(62)所述的图像处理设备,其中,

所述正交变换单元使用由所述导出单元导出的变换矩阵对所述预测残差执行一次变换,并且进一步对所述一次变换的结果执行二次变换。

(64)根据(63)所述的图像处理设备,其中,

所述导出单元导出用于水平一维正交变换的变换矩阵和用于垂直一维正交变换的变换矩阵,并且

作为所述一次变换,所述正交变换单元

使用由所述导出单元导出的用于水平一维正交变换的变换矩阵执行所述水平一维正交变换,并且进一步

使用由所述导出单元导出的用于垂直一维正交变换的变换矩阵执行所述垂直一维正交变换。

(65)根据(61)至(64)中任一项所述的图像处理设备,其中,

所述导出单元通过围绕通过所述变换矩阵的中心的预定方向的轴翻转所述子矩阵并且导出所述变换矩阵的剩余子矩阵来导出所述变换矩阵。

(66)根据(65)所述的图像处理设备,其中,

所述导出单元在平行于行的方向上翻转所述子矩阵。

(67)根据(65)或(66)所述的图像处理设备,其中,

所述导出单元在平行于列的方向上翻转所述子矩阵。

(68)根据(65)至(67)中任一项所述的图像处理设备,其中,

所述导出单元在围绕所述变换矩阵的中心的旋转方向上翻转所述子矩阵。

(69)根据(65)至(68)中任一项所述的图像处理设备,其中,

所述导出单元在围绕所述变换矩阵的对角线的倾斜方向上翻转所述子矩阵。

(70)根据(65)至(69)中任一项所述的图像处理设备,其中,

所述导出单元进一步反转经翻转的子矩阵的元素的符号,并且导出所述变换矩阵。

(71)根据(61)至(70)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的左半子矩阵或右半子矩阵,并且

所述导出单元被配置成通过在所述变换矩阵的行方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的奇数编号的行向量的符号,并且导出所述变换矩阵的右半子矩阵或左半子矩阵,来导出所述变换矩阵。

(72)根据(61)至(71)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的上半子矩阵或下半子矩阵,并且

所述导出单元被配置成通过在所述变换矩阵的列方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的奇数编号的列向量的符号,并且导出所述变换矩阵的下半子矩阵或上半子矩阵,来导出所述变换矩阵。

(73)根据(61)至(72)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的上半子矩阵或下半子矩阵,并且

所述导出单元被配置成通过在围绕所述变换矩阵的中心的旋转方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,并且导出所述变换矩阵的下半子矩阵或上半子矩阵,来导出所述变换矩阵。

(74)根据(61)至(73)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的右上三角部分的子矩阵或左下三角部分的子矩阵,并且

所述导出单元被配置成通过对所述子矩阵进行转置,以导出所述变换矩阵的左下三角部分的子矩阵或右上三角部分的子矩阵,来导出所述变换矩阵。

(75)根据(61)至(74)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的左上三角部分的子矩阵或右下三角部分的子矩阵,并且

所述导出单元被配置成通过在以连接所述变换矩阵的右上端和左下端的对角线为轴的倾斜方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,并且导出所述变换矩阵的右下三角部分的子矩阵或左上三角部分的子矩阵,来导出所述变换矩阵。

(76)根据(61)至(75)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的左上四分之一子矩阵,并且

所述导出单元被配置成通过下述方式来导出所述变换矩阵:

在所述变换矩阵的行方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的奇数编号的行向量的符号,导出所述变换矩阵的右上四分之一子矩阵,

在所述变换矩阵的列方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的奇数编号的列向量的符号,导出所述变换矩阵的左下四分之一子矩阵,以及

在围绕所述变换矩阵的中心的旋转方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,导出所述变换矩阵的右下四分之一子矩阵。

(77)根据(61)至(76)中任一项所述的图像处理设备,其中,

所述导出单元使用所述子矩阵导出第一变换矩阵,并且进一步使用所导出的第一变换矩阵导出第二变换矩阵,并且

所述正交变换单元使用由所述导出单元导出的所述第二变换矩阵对所述预测残差进行正交变换。

(78)根据(77)所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出与所述第一变换矩阵的变换类型不同的变换类型的第二变换矩阵。

(79)根据(77)或(78)所述的图像处理设备,其中,

所述导出单元对所述第一变换矩阵进行翻转或转置,导出所述第二变换矩阵。

(80)一种图像处理方法,包括:

使用构成变换矩阵的一部分的子矩阵导出所述变换矩阵;

使用所导出的变换矩阵对图像的预测残差进行正交变换;以及

对通过对所述预测残差进行正交变换而获得的系数数据进行编码以生成比特流。

(81)一种图像处理设备,包括:

解码单元,其被配置成对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;

导出单元,其被配置成使用构成所述变换矩阵的一部分的子矩阵来导出所述变换矩阵;以及

逆正交变换单元,其被配置成使用由所述导出单元导出的变换矩阵对由所述解码单元获得的系数数据进行逆正交变换。

(82)根据(81)所述的图像处理设备,其中,

所述导出单元使用存储在查找表中的所述子矩阵来导出所述变换矩阵。

(83)根据(81)或(82)所述的图像处理设备,其中,

所述逆正交变换单元对由所述解码单元获得的系数数据执行逆二次变换,并且进一步使用由所述导出单元导出的变换矩阵对逆二次变换结果执行逆一次变换。

(84)根据(83)所述的图像处理设备,其中,

所述导出单元导出用于水平逆一维正交变换的变换矩阵和用于垂直逆一维正交变换的变换矩阵,并且

作为所述逆一次变换,所述逆正交变换单元

使用由所述导出单元导出的用于水平逆一维正交变换的变换矩阵进行水平逆一维正交变换,并且进一步

使用由所述导出单元导出的用于垂直逆一维正交变换的变换矩阵进行垂直逆一维正交变换。

(85)根据(81)至(84)中任一项所述的图像处理设备,其中,

所述导出单元通过围绕通过所述变换矩阵的中心的预定方向的轴翻转所述子矩阵并且导出所述变换矩阵的剩余子矩阵来导出所述变换矩阵。

(86)根据(85)所述的图像处理设备,其中,

所述导出单元在平行于行的方向上翻转所述子矩阵。

(87)根据(85)或(86)所述的图像处理设备,其中,

所述导出单元在平行于列的方向上翻转所述子矩阵。

(88)根据(85)至(87)中任一项所述的图像处理设备,其中,

所述导出单元在围绕所述变换矩阵的中心的旋转方向上翻转所述子矩阵。

(89)根据(85)至(88)中任一项所述的图像处理设备,其中,

所述导出单元在围绕所述变换矩阵的对角线的倾斜方向上翻转所述子矩阵。

(90)根据(85)至(89)中任一项所述的图像处理设备,其中,

所述导出单元进一步反转经翻转的子矩阵的元素的符号,导出所述变换矩阵。

(91)根据(81)至(90)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的左半子矩阵或右半子矩阵,并且

所述导出单元被配置成通过在所述变换矩阵的行方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的奇数编号的行向量的符号,并且导出所述变换矩阵的右半子矩阵或左半子矩阵,来导出所述变换矩阵。

(92)根据(81)至(91)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的上半子矩阵或下半子矩阵,并且

所述导出单元被配置成通过在所述变换矩阵的列方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的奇数编号的列向量的符号,并且导出所述变换矩阵的下半子矩阵或上半子矩阵,来导出所述变换矩阵。

(93)根据(81)至(92)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的上半子矩阵或下半子矩阵,并且

所述导出单元被配置成通过在围绕所述变换矩阵的中心的旋转方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,并且导出所述变换矩阵的下半子矩阵或上半子矩阵,来导出所述变换矩阵。

(94)根据(81)至(93)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的右上三角部分的子矩阵或左下三角部分的子矩阵,并且

所述导出单元被配置成通过对所述子矩阵进行转置,以导出所述变换矩阵的左下三角部分的子矩阵或右上三角部分的子矩阵,来导出所述变换矩阵。

(95)根据(81)至(94)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的左上三角部分的子矩阵或右下三角部分的子矩阵,并且

所述导出单元被配置成通过在以连接所述变换矩阵的右上端和左下端的对角线为轴的倾斜方向上翻转所述子矩阵,进一步反转奇数编号的行向量的符号,并且导出所述变换矩阵的右下三角部分的子矩阵或左上三角部分的子矩阵,来导出所述变换矩阵。

(96)根据(81)至(95)中任一项所述的图像处理设备,其中,

所述子矩阵是所述变换矩阵的左上四分之一子矩阵,并且

所述导出单元被配置成通过下述方式来导出所述变换矩阵:

在所述变换矩阵的行方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的奇数编号的行向量的符号,导出所述变换矩阵的右上四分之一子矩阵,

在所述变换矩阵的列方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的奇数编号的列向量的符号,导出所述变换矩阵的左下四分之一子矩阵,以及

在围绕所述变换矩阵的中心的旋转方向上翻转所述子矩阵,进一步反转经翻转的子矩阵的具有偶数行号和偶数列号的元素以及具有奇数行号和奇数列号的元素的符号,导出所述变换矩阵的右下四分之一子矩阵。

(97)根据(81)至(96)中任一项所述的图像处理设备,其中,

所述导出单元使用所述子矩阵导出第一变换矩阵,并且进一步使用所导出的第一变换矩阵导出第二变换矩阵,并且

所述逆正交变换单元使用由所述导出单元导出的第二变换矩阵对所述系数数据进行逆正交变换。

(98)根据(97)所述的图像处理设备,其中,

所述导出单元使用所述第一变换矩阵导出与所述第一变换矩阵的变换类型不同的变换类型的第二变换矩阵。

(99)根据(97)或(98)所述的图像处理设备,其中,

所述导出单元对所述第一变换矩阵进行翻转或转置,导出所述第二变换矩阵。

(100)一种图像处理方法,包括:

对比特流进行解码以获得作为图像的经正交变换的预测残差的系数数据;

使用构成变换矩阵的一部分的子矩阵导出所述变换矩阵;以及

使用所导出的变换矩阵对所获得的系数数据进行逆正交变换。

附图标记列表

100图像编码装置,101控制单元,113正交变换单元,115编码单元,118逆正交变换单元,152一次变换单元,200图像解码装置,212解码单元,214逆正交变换单元,253逆一次变换单元,311一次变换选择单元,312一次水平变换单元,313一次垂直变换单元,321变换矩阵导出单元,331变换矩阵lut,332翻转单元,333转置单元,351变换矩阵导出单元,361变换矩阵lut,362翻转单元,363转置单元,411逆一次变换选择单元,412逆一次垂直变换单元,413逆一次水平变换单元,421变换矩阵导出单元,431变换矩阵lut,432翻转单元,433转置单元,451变换矩阵导出单元,461变换矩阵lut,462翻转单元,463转置单元,501、502、511和512符号反转单元,551和552预测残差置换操作单元,561、562、571和572符号反转单元,632水平翻转单元,633垂直翻转单元,634转置单元,635符号反转单元,642水平翻转单元,643垂直翻转单元,644转置单元,645符号反转单元,652水平翻转单元,653垂直翻转单元,654转置单元,655符号反转单元,662水平翻转单元,663垂直翻转单元,664转置单元,665符号反转单元。

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