影像解码装置中使用的逆量化装置和方法
文献发布时间:2023-06-19 13:48:08
技术领域
本发明涉及在视频解码装置中使用的逆量化装置和方法。更具体地,本发明涉及这样一种逆量化装置和方法,其用于获取量化的系数,计算量化参数,生成逆量化矩阵,并且利用量化参数和逆量化矩阵从量化的系数中生成变换系数。
背景技术
本部分中的陈述仅提供与本发明有关的背景技术信息,并不构成现有技术。
由于视频数据量大于语音数据量或静止影像数据量,因此在不进行压缩处理的情况下存储或传输视频数据需要大量的硬件资源,包括存储器。
相应地,在存储或传输视频数据时,通常利用编码器来压缩视频数据,以便于存储或传输视频数据。然后,解码器接收压缩后的视频数据,并且解压并再现视频数据。用于这种视频的压缩技术包括H.264/AVC和高效率视频编码(High Efficiency Video Coding,HEVC),所述高效率视频编码(HEVC)比H.264/AVC的编码效率提高了大约40%。
然而,影像大小、分辨率和帧速率逐渐增加,并且相应地,要编码的数据量也在增多。因此,需要一种与现有压缩技术相比具有更好的编码效率和更高的影像质量的新压缩技术。
发明内容
技术问题
本发明的主要目的是提供一种逆量化装置和方法,其用于获取量化的系数,以量化组或量化参数预测组为单位来计算量化参数,生成用于自适应量化的逆量化矩阵,并且利用量化参数和逆量化矩阵从量化的系数中生成变换系数。
技术方案
根据本发明的一个方面,提供了一种逆量化方法,其包括:从比特流中解码关于当前块的信息、关于量化的系数的信息、关于量化参数的信息、用于逆量化矩阵的德尔塔索引以及逆量化矩阵的德尔塔系数;基于关于量化参数的信息来计算量化参数;根据关于当前块的信息计算推断标识符(identifier,ID),并且选择由推断ID指示的逆量化矩阵,其中,预先生成用于逆量化矩阵的列表,并且利用基于德尔塔索引计算的预测的逆量化矩阵和从德尔塔系数生成的德尔塔逆量化数据来生成包括在列表中的逆量化矩阵;以及利用量化参数和选择的逆量化矩阵从量化的系数中生成变换系数。
根据本发明的另一方面,提供了一种逆量化装置,其包括:熵解码器、量化参数计算器、逆量化矩阵生成器和变换系数生成器,所述熵解码器配置为从比特流中解码关于当前块的信息、关于量化的系数的信息、关于量化参数的信息、用于逆量化矩阵的德尔塔索引以及逆量化矩阵的德尔塔系数;所述量化参数计算器配置为基于关于量化参数的信息来计算量化参数;所述逆量化矩阵生成器配置为根据关于当前块的信息来计算推断标识符(ID),并且选择由推断ID指示的逆量化矩阵;所述变换系数生成器配置为利用量化参数和选择的逆量化矩阵从量化的系数中生成变换系数,其中,预先生成用于逆量化矩阵的列表,并且利用基于德尔塔索引计算的预测的逆量化矩阵以及从德尔塔系数生成的德尔塔逆量化数据来生成包括在列表中的逆量化矩阵。
有益效果
由上显然的是,根据本实施方案,提供了一种逆量化装置和方法,其用于获取量化的系数,以量化组或量化参数预测组为单位来计算量化参数,生成用于自适应量化的逆量化矩阵,并且利用量化参数和逆量化矩阵从量化的系数中生成变换系数。由此,可以提高视频编码和解码装置的压缩性能。
附图说明
图1是能够实现本发明的技术的视频编码装置的示例性框图。
图2示例性地示出利用QTBTTT结构的块分区结构。
图3a和图3b示例性地示出包括宽角度帧内预测模式的多个帧内预测模式。
图4是能够实现本发明的技术的视频解码装置的示例性框图。
图5是根据本发明实施方案的逆量化装置的框图。
图6是示出根据本发明实施方案的QG大小的概念图。
图7示出了根据本发明实施方案的基于每个QG计算QP的方法。
图8是根据本发明实施方案的当QG的大小大于QPG时基于每个QPG计算QP的示例性图。
图9是根据本发明实施方案的当QPG的大小大于QG时以QG为单位计算QP的示例性图。
图10是根据本发明实施方案的逆量化矩阵的形式的示例性图。
图11是根据本发明实施方案的逆量化方法的流程图。
具体实施方式
在下文中,将参考所附附图对本发明的实施方案进行详细描述。应当注意,在将附图标记添加到各个附图中的组成元件时,尽管元件在不同的附图中示出,但是相同的附图标记表示相同的元件。此外,在实施方案的以下描述中,将省略并入本文中的已知功能和配置的详细描述,以避免模糊实施方案的主题。
图1是能够实现本发明的技术的视频编码装置的示例性框图。在下文中,将参考图1来描述视频编码装置以及该装置的元件。
视频编码装置包括:图像分割器110、预测器120、减法器130、变换器140、量化器145、重排单元150、熵编码器155、逆量化器160、逆变换器165、加法器170、滤波单元180和存储器190。
视频编码装置的每个元件可以以硬件或软件、或者硬件和软件的组合来实现。各个元件的功能可以实现为软件,并且微处理器可以实现为执行对应于各个元件的软件功能。
一个视频包括多个图像。每个图像分割为多个区域,并且对每个区域执行编码。例如,一个图像分割为一个或更多个瓦片(tile)或/和切片(slice)。这里,一个或更多个瓦片可以被定义为瓦片组。每个瓦片或切片分割为一个或更多个编码树单元(coding treeunit,CTU)。每个CTU通过树结构分割为一个或更多个编码单元(coding unit,CU)。应用于每个CU的信息被编码为CU的语法,并且共同应用于包括在一个CTU中的CU的信息被编码为CTU的语法。另外,共同应用于一个切片中的所有块的信息被编码为切片头的语法,而应用于构成一个图像的所有块的信息被编码在图像参数集(Picture Parameter Set,PPS)或图像头中。此外,由多个图像共同参考的信息被编码在序列参数集(Sequence ParameterSet,SPS)中。另外,由一个或更多个SPS共同参考的信息被编码在视频参数集(VideoParameter Set,VPS)中。共同应用于一个瓦片或瓦片组的信息可以被编码为瓦片头或瓦片组头的语法。
图像分割器110确定编码树单元(CTU)的大小。关于CTU的大小(CTU尺寸)的信息被编码为SPS或PPS的语法,并且被传输至视频解码装置。
图像分割器110将构成视频的每个图像分割为具有预定大小的多个CTU,然后利用树结构递归地分割CTU。在树结构中,叶节点用作编码单元(CU),所述编码单元(CU)是编码的基本单元。
树结构可以是四叉树(QuadTree,QT)、二叉树(BinaryTree,BT)、三叉树(TernaryTree,TT)、或由两个或更多个QT结构、BT结构和TT结构组合形成的结构,所述四叉树(QT)即节点(或父节点)被分割为相同大小的四个从节点(或子节点),所述二叉树(BT)即节点被分割为两个从节点,所述三叉树(TT)即节点以1:2:1的比率被分割为三个从节点。例如,可以使用四叉树加二叉树(QuadTree plus BinaryTree,QTBT)结构,或者可以使用四叉树加二叉树三叉树(QuadTree plus BinaryTree TernaryTree,QTBTTT)结构。这里,BTTT可以统称为多类型树(multiple-type tree,MTT)。
图2示例性地示出QTBTTT分割树结构。如图2所示,CTU可以首先分割为QT结构。可以重复QT分割,直到分割块的大小达到QT中允许的叶节点的最小块大小MinQTSize。由熵编码器155对指示QT结构的每个节点是否被分割为下层的四个节点的第一标志(QT_split_flag)编码,并将其用信号通知视频解码装置。当QT的叶节点不大于BT中允许的根节点的最大块大小(MaxBTSize)时,可以进一步将其分割为一个或更多个BT结构或TT结构。BT结构和/或TT结构可以具有多个分割方向。例如,可以存在两个方向,即,水平地分割节点的块的方向和竖直地分割块的方向。如图2所示,当MTT分割开始时,通过熵编码器155来对指示节点是否被分割的第二标志(mtt_split_flag)、指示分割情况下的分割方向(竖直或水平)的标志、和/或指示分割类型(二叉或三叉)的标志编码,并将其用信号通知视频解码装置。
替选地,在对指示每个节点是否被分割为下层的4个节点的第一标志(QT_split_flag)编码之前,可以对指示节点是否被分割的CU分割标志(split_cu_flag)编码。当CU分割标志(split_cu_flag)的值指示出没有执行分割时,节点的块成为分割树结构中的叶节点,并用作编码单元(CU),这是编码的基本单元。当CU分割标志(split_cu_flag)的值指示出执行分割时,视频编码装置开始以上述方式从第一标志起对标志编码。
当使用QTBT作为树结构的另一个示例时,可以存在两种分割类型,即将块水平地分割为相同大小的两个块的类型(即,对称水平分割)和将块竖直地分割为相同大小的两个块的类型(即,对称竖直分割)。由熵编码器155对指示BT结构的每个节点是否被分割为下层的块的分割标志(split_flag)和指示分割类型的分割类型信息进行编码,并将其传输至视频解码装置。可以存在将节点的块分割为两个非对称块的附加类型。非对称分割类型可以包括以1:3的大小比率将块分割为两个矩形块的类型,或者对角线地分割节点的块的类型。
CU可以根据CTU的QTBT或QTBTTT分割而具有各种大小。在下文中,与要编码或解码的CU(即,QTBTTT的叶节点)相对应的块被称为“当前块”。在采用QTBTTT分割时,当前块的形状可以是正方形或矩形。
预测器120对当前块进行预测以生成预测块。预测器120包括帧内预测器122和帧间预测器124。
通常,图像中的每个当前块可以被预测地编码。通常,利用帧内预测技术(其利用来自包括当前块的图像的数据)或帧间预测技术(其利用在包括当前块的图像之前被编码的图像的数据)来执行当前块的预测。帧间预测包括单向预测和双向预测两者。
帧内预测单元122利用在包括当前块的当前图像中位于当前块周围的像素(参考像素)来预测当前块中的像素。根据预测方向,存在多个帧内预测模式。例如,如图3a所示,多个帧内预测模式可以包括2种非方向模式和65种方向模式,所述2种非方向模式包括平面(planar)模式和DC模式。针对每种预测模式不同地定义要使用的相邻像素和等式。下表列出了帧内预测模式编号及其名称。
为了对矩形形状的当前块进行有效的方向预测,可以额外使用由图3b中的虚线箭头指示的方向模式(帧内预测模式67至80和-1至-14)。这些模式可以称为“宽角度帧内预测模式”。在图3b中,箭头指示用于预测的相应参考样本,而非指示预测方向。预测方向与由箭头指示的方向相反。宽角度帧内预测模式是在当前块具有矩形形状时,在与特定方向模式相反的方向上执行预测而无需额外的比特传输的模式。在这种情况下,在宽角度帧内预测模式中,可以基于矩形当前块的宽度与高度的比率来确定可用于当前块的一些宽角度帧内预测模式。例如,在当前块具有高度小于其宽度的矩形形状时,可以使用角度小于45度的宽角度帧内预测模式(帧内预测模式67至80)。在当前块具有宽度大于其高度的矩形形状时,可以使用角度大于-135度的宽角度帧内预测模式(帧内预测模式-1至-14)。
帧内预测器122可以确定对当前块编码时要使用的帧内预测模式。在一些示例中,帧内预测器122可以利用若干帧内预测模式来对当前块编码,并且从测试的模式中选择要使用的适当的帧内预测模式。例如,帧内预测器122可以利用若干测试的帧内预测模式的率失真(rate-distortion)分析来计算率失真值,并且可以在测试的模式中选择具有最佳率失真特性的帧内预测模式。
帧内预测器122从多个帧内预测模式中选择一个帧内预测模式,并且利用根据选择的帧内预测模式确定的相邻像素(参考像素)和等式来预测当前块。由熵编码器155对关于选择的帧内预测模式的信息编码,并将其传输至视频解码装置。
帧间预测器124通过运动补偿来生成当前块的预测块。帧间预测器124在比当前图像更早已被编码和解码的参考图像中搜索与当前块最相似的块,并且利用搜索到的块来生成当前块的预测块。然后,帧间预测器生成与当前图像中的当前块和参考图像中的预测块之间的位移(displacement)相对应的运动矢量(motion vector)。通常,对亮度分量执行运动估计,并且基于亮度分量计算的运动矢量用于亮度分量和色度分量两者。由熵编码器155对包括关于参考图像的信息和关于用于预测当前块的运动矢量的信息的运动信息进行编码,并将其传输至视频解码装置。
减法器130将当前块减去由帧内预测器122或帧间预测器124生成的预测块来生成残差块。
变换器140将空域中具有像素值的残差块中的残差信号变换为频域中的变换系数。变换器140可以利用残差块的整个大小作为变换单元来变换残差块中的残差信号。替选地,可以将残差块分割为多个子块,并且利用子块作为变换单元来执行变换。替选地,可以通过将块划分为两个子块,即变换区域和非变换区域,并且仅利用变换区域子块作为变换单元来变换残差信号。这里,变换区域子块可以是基于水平轴线(或竖直轴线)的具有大小比率为1:1的两个矩形块的一个。在这种情况下,由熵编码单元155对指示仅变换了子块的标志(cu_sbt_flag)、方向(竖直/水平)信息(cu_sbt_horizontal_flag)和/或位置信息(cu_sbt_pos_flag)进行编码,并且将其用信号通知视频解码装置。另外,变换区域子块的大小基于水平轴线(或竖直轴线)可以具有1:3的大小比率。在这种情况下,由熵编码器155对区分相应分割的标志(cu_sbt_quad_flag)额外地编码,并且将其用信号通知视频解码装置。
变换器140可以在水平方向和竖直方向上单独地变换残差块。对于变换,可以使用各种类型的变换函数或变换矩阵。例如,用于水平变换和竖直变换的成对变换函数可以被定义为多变换集(multiple transform set,MTS)。变换器140可以选择MTS中具有最佳变换效率的一对变换函数,并且分别在水平方向和竖直方向上变换残差块。由熵编码器155对关于在MTS中选择的变换函数对的信息(mts_idx)进行编码,并将其用信号通知视频解码装置。应用MTS的变换块的大小可以限制在32×32以内。
量化器145对从变换器140输出的变换系数进行量化,并且将量化的变换系数输出到熵编码器155。
重排单元150可以对量化的残差值的系数值进行重组。
重排单元150可以通过系数扫描(coefficient scanning)来将2维系数阵列改变为1维系数序列。例如,重排单元150可以利用锯齿形扫描(zig-zag scan)或对角线扫描(diagonal scan)从DC系数向高频区域中的系数对系数进行扫描,以输出1维系数序列。根据变换单元的大小和帧内预测模式,可以使用竖直扫描或水平扫描代替锯齿形扫描,所述竖直扫描即在列方向上扫描系数的二维阵列,所述水平扫描即在行方向上扫描二维块形状的系数。也就是说,可以根据变换单元的大小和帧内预测模式在锯齿形扫描、对角线扫描、竖直扫描和水平扫描中确定要使用的扫描模式。
熵编码器155利用诸如基于上下文的自适应二进制算术编码(Context-basedAdaptive Binary Arithmetic Code,CABAC)和指数哥伦布(exponential Golomb)的各种编码技术来对从重排单元150输出的一维量化的变换系数进行编码,以生成比特流。
熵编码器155对与块分割相关的信息(例如,CTU大小、CU分割标志、QT分割标志、MTT分割类型和MTT分割方向)编码,使得视频解码装置可以以与视频编码装置相同的方式来分割块。另外,熵编码器155对关于指示当前块是由帧内预测编码还是由帧间预测编码的预测类型的信息进行编码,并且根据预测类型来对帧内预测信息(即,关于帧内预测模式的信息)或帧间预测信息(即,关于参考图像索引和运动矢量的信息)进行编码。
逆量化器160对从量化器145输出的量化的变换系数进行逆量化,以生成变换系数。逆变换器165将从逆量化器160输出的变换系数从频域变换到空域,并且重构残差块。
加法器170将重构的残差块和由预测器120生成的预测块相加,以重构当前块。重构的当前块中的像素在执行后续块的帧内预测时用作参考像素。
滤波单元180对重构的像素进行滤波,以减少由于基于块的预测和变换/量化而产生的块伪影(blocking artifacts)、振铃伪影(ringing artifacts)和模糊伪影(blurringartifacts)。滤波单元180可以包括去块滤波器182和样本自适应偏移(sample adaptiveoffset,SAO)滤波器184。
去块滤波器180对重构的块之间的边界进行滤波,以去除由逐块编码/解码而引起的块伪影,并且SAO滤波器184对去块滤波的视频执行额外的滤波。SAO滤波器184是用于对由有损编码引起的重构的像素与原始的像素之间的差进行补偿的滤波器。
通过去块滤波器182和SAO滤波器184滤波后的重构的块存储在存储器190中。一旦一个图像中的所有块被重构,重构的图像就可以用作对后续要被编码的图像中的块进行帧间预测的参考图像。
图4是能够实现本发明的技术的视频解码装置的示例性功能框图。在下文中,将参考图4来描述视频解码装置和该装置的元件。
视频解码装置可以包括:熵解码器410、重排单元415、逆量化器420、逆变换器430、预测器440、加法器450、滤波单元460和存储器470。
类似于图1的视频编码装置,视频解码装置的每个元件可以用硬件、软件、或硬件和软件的组合来实现。此外,每个元件的功能可以实现为软件,并且微处理器可以实现为执行对应于每个元件的软件功能。
熵解码器410通过对由视频编码装置生成的比特流解码并提取与块分割相关的信息来确定要解码的当前块,并且提取用于重构当前块所需的预测信息和关于残差信号的信息等。
熵解码器410从序列参数集(SPS)或图像参数集(PPS)中提取关于CTU大小的信息,确定CTU的大小,并且将图像分割为确定大小的CTU。然后,解码器将CTU确定为树结构的最高层,也就是说,根节点,并且提取关于CTU的分割信息,以利用树结构来分割CTU。
例如,当利用QTBTTT结构来分割CTU时,提取与QT的分割相关的第一标志(QT_split_flag),以将每个节点分割为子层的四个节点。对于与QT的叶节点相对应的节点,提取与MTT的分割有关的第二标志(MTT_split_flag)以及关于分割方向(竖直/水平)和/或分割类型(二叉/三叉)的信息,从而以MTT结构来分割相应的叶节点。由此,以BT或TT结构来递归地分割QT的叶节点下方的每个节点。
作为另一示例,当利用QTBTTT结构来分割CTU时,可以提取指示是否分割CU的CU分割标志(split_cu_flag)。当分割相应块时,可以提取第一标志(QT_split_flag)。在分割操作中,在零个或多个递归QT分割之后,每个节点都可能发生零个或多个递归MTT分割。例如,CTU可以直接经历MTT分割而不经历QT分割,或者仅经历多次QT分割。
作为另一个示例,当利用QTBT结构来分割CTU时,提取与QT分割相关的第一标志(QT_split_flag),并且将每个节点分割为下层的四个节点。然后,提取指示是否以BT进一步分割与QT的叶节点相对应的节点的分割标志(split_flag)以及分割方向信息。
一旦通过树结构分割来确定要解码的当前块,熵解码器410就提取关于指示当前块是被帧内预测还是被帧间预测的预测类型的信息。当预测类型信息指示帧内预测时,熵解码器410提取当前块的帧内预测信息(帧内预测模式)的语法元素。当预测类型信息指示帧间预测时,熵解码器410提取用于帧间预测信息的语法元素,也就是说,指示运动矢量和由运动矢量参考的参考图像的信息。
熵解码器410还提取关于量化的当前块的变换系数的信息作为关于残差信号的信息。
重排单元415可以以由视频编码装置执行的系数扫描的相反顺序,将由熵解码器410进行熵解码的一维量化的变换系数的序列改变为2维系数阵列(即,块)。
逆量化器420对量化的变换系数进行逆量化。逆变换器430将逆量化的变换系数从频域逆变换到空域,以重构残差信号,从而生成当前块的残差块。
另外,当逆变换器430仅对变换块的部分区域(子块)进行逆变换时,逆变换器430提取指示出仅变换块的子块已进行变换的标志(cu_sbt_flag)、关于子块的方向性(竖直/水平)信息(cu_sbt_horizontal_flag)和/或关于子块的位置信息(cu_sbt_pos_flag),并且将子块的变换系数从频域逆变换到空域。然后,重构残差信号,并且用“0”值填充没有逆变换的区域作为残差块,从而生成当前块的最终残差块。
另外,当应用MTS时,逆变换器430利用从视频编码装置用信号通知的MTS信息(mts_idx)来确定要分别在水平方向和竖直方向上应用的变换函数或变换矩阵,并且使用确定的变换函数在水平方向和竖直方向上对变换块中的变换系数进行逆变换。
预测器440可以包括帧内预测器442和帧间预测器444。在当前块的预测类型是帧内预测时,激活帧内预测器442,而在当前块的预测类型是帧间预测时,激活帧间预测器444。
帧内预测器442基于从熵解码器410提取的帧内预测模式的语法元素,在多个帧内预测模式中确定当前块的帧内预测模式,并且根据帧内预测模式,利用当前块周围的参考像素来预测当前块。
帧间预测器444利用由熵解码器410提取的帧间预测模式的语法元素来确定当前块的运动矢量和由运动矢量参考的参考图像,并且基于运动矢量和参考图像来预测当前块。
加法器450通过将从逆变换器430输出的残差块与从帧间预测器444或帧内预测器442输出的预测块相加来重构当前块。在对后续要被解码的块进行帧内预测时,重构的当前块中的像素用作参考像素。
滤波单元460可以包括去块滤波器462和SAO滤波器464。去块滤波器462对重构的块之间的边界进行去块滤波,以去除由逐块解码引起的块伪影。SAO滤波器464在对相应偏移进行去块滤波之后对重构的块执行额外的滤波,以便补偿由有损编码引起的重构的像素与原始的像素之间的差。通过去块滤波器462和SAO滤波器464滤波的重构的块存储在存储器470中。当一个图像中的所有块被重构时,重构的图像用作对后续要被编码的图像中的块进行帧间预测的参考图像。
本实施方案公开了一种新的量化技术,该技术可以通过上面描述的解码装置来实现。更具体地,本文提供的是这样一种逆量化装置和方法,其用于获取量化的系数,计算量化参数,生成逆量化矩阵,并且利用量化参数和逆量化矩阵从量化的系数中生成变换系数。
图5是根据本发明实施方案的逆量化装置的框图。
在根据本发明的实施方案中,逆量化装置500获取量化的系数和德尔塔量化参数(在下文中,为德尔塔QP),利用德尔塔QP和预测的QP基于每个量化组(quantizationgroup,QG)或每个量化参数预测组(quantization parameter prediction group,QPG)来计算量化参数(quantization parameter,QP),生成用于自适应量化的逆量化矩阵,并且利用QP和逆量化矩阵从量化的系数中生成变换系数。为了生成用于生成当前块的残差信号的变换系数,逆量化装置500包括解码装置中包含的熵解码器410和逆量化器420。
包括在编码装置中的逆量化器160与包括在解码装置中的逆量化器420类似地操作,因此下面将主要描述包括在解码装置中的逆量化器420。
熵解码器410从比特流中解码关于当前块的信息、量化的系数、QG的大小、QPG的大小、德尔塔QP、用于逆量化矩阵的德尔塔索引以及逆量化矩阵的德尔塔系数。这里,量化的系数由包括在编码装置中的量化器145生成。
如上所述,当前块表示与要编码或解码的CU相对应的块。解码装置基于关于预测的信息来生成预测块,并且通过添加与生成的预测块相对应的残差信号来重构当前块。可以基于预测模式、参考图像信息、运动矢量信息和运动矢量精度信息,利用帧间预测、帧内预测或块内信号复制的至少一个来生成预测的信号。解码装置可以通过对比特流执行熵解码来生成逆变换块,并且通过对逆变换块执行逆量化和逆变换的至少一个来生成残差信号。因此,关于当前块的信息可以包括生成预测块、逆变换块和残差信号以及重构当前块所需的信息。例如,关于当前块的信息可以包括预测模式、当前块的大小以及关于当前块是亮度还是色度的信息。
在逆量化器420中,可以基于每个QG应用QP(实际上是,德尔塔QP)。这里,QG表示可以传输德尔塔QP的最小大小的CU。不基于每个变换单元(transform unit,TU)或CU从编码装置传输德尔塔QP。对于大小小于QG的CU,包括较小CU的QG传输一次德尔塔QP,并且QG中的所有CU共享德尔塔QP。另一方面,对于大小大于或等于QG大小的CU,可以基于每个QG传输德尔塔QP,或者可以为每个CU传输一个德尔塔QP。
图6是示出根据本发明实施方案的QG大小的概念图。
在该实施方案中,熵解码器410从比特流中解码cu_qp_delta_enabled_flag,并且检查是否利用针对每个块的各种QP执行编码。当cu_qp_delta_enabled_flag为1时,熵解码器410可以从比特流中另外解码diff_cu_qp_delta_depth,以确定QG的大小。这里,diff_cu_qp_delta_depth是应用了德尔塔QP(由指示大小的cu_qp_delta_abs和指示符号的cu_qp_delta_sign_flag组成)的最小编码单元的深度与最大编码树的深度之间的差。相应地,对于具有当前块的深度大于diff_cu_qp_delta_depth的块,使用顺序对应于先前深度的块的德尔塔QP,而不需要对德尔塔QP进行预测和编码/解码。
图6示出diff_cu_qp_delta_depth为2的情况下的QG示例。由于深度为3的CU位于深度为2的QG内部,因此它们使用相同的德尔塔QP。
考虑到存在各种类型的块,逆量化器420可以基于每个QPG来预测QP。也就是说,在本实施方案中,传输或确定德尔塔QP的单位可以不同于预测QP的单位。在该实施方案中,当diff_cu_qp_delta_depth不为0时,熵解码器410从比特流中解码cu_qp_sep_pred_flag,以检查QPG和QG的大小是否彼此相等。当cu_qp_sep_pred_flag为1时,也就是说,当QG和QPG的大小彼此不相等时,熵解码器410可以通过从比特流中解码diff_cu_qp_pred_depth来确定QPG的大小。QG可以包括一个或更多个QPG,或者QPG可以包括一个或更多个QG,并且QP和QPG的每个不能跨越彼此的边界存在。
在根据本发明的另一实施方案中,编码装置和解码装置可以基于四叉树(QT)的分割深度、二叉树(BT)的分割深度和三叉树(TT)的分割深度来确定相同大小的QPG。替选地,编码装置和解码装置可以基于CU块或TU块的水平像素的数量和竖直像素的数量来确定相同大小的QPG。
在根据本发明的另一实施方案中,编码装置和解码装置可以利用预设单位的QPG的大小。替选地,解码装置可以基于瓦片组(tile group,TG)的类型、时间层的索引和图像顺序计数、色度空间子采样、帧速率、图像分辨率等来确定QPG的大小。
在该实施方案中,利用预测的量化矩阵和德尔塔逆量化数据来生成逆量化矩阵。此外,可以利用预测的逆量化DC和德尔塔逆量化DC来生成逆量化矩阵的直流(directcurrent,DC)项。
用于逆量化矩阵的德尔塔索引可以用于计算预测的量化矩阵和预测的逆量化DC。
逆量化矩阵的德尔塔系数可以用于计算德尔塔逆量化数据的列表和德尔塔逆量化DC的列表。德尔塔逆量化数据的列表可以包括对于N个索引的每个的德尔塔逆量化数据(其中,N是自然数),并且德尔塔逆量化DC的列表可以包括对于M个索引的每个的德尔塔逆量化DC(其中,M是小于或等于N的自然数)。
熵解码器410可以仅解码与对于一个索引的一些德尔塔逆量化数据相对应的K个德尔塔系数(其中,K是自然数)。
在根据本发明的另一实施方案中,解码装置可以利用如下中的至少一个来自适应地获取关于逆量化矩阵的大小、形式和系数的信息:逆变换块的水平长度和竖直长度、逆变换块的大小、逆变换核、逆变换的数量、解码的信号的类型、预测块的预测模式、预测块和包含预测块的图像的时间层值以及关于位深度的信息。
根据实施方案的逆量化器420基于每个QG或每个QPG利用德尔塔QP和预测的QP来计算QP,利用逆量化矩阵的德尔塔索引和逆量化矩阵的德尔塔系数来生成逆量化矩阵,并且利用QP和逆量化矩阵从量化的系数中生成变换系数。这里,变换系数被传输至逆变换器430,以生成当前块的残差信号。逆量化器420包括QP计算器502、逆量化矩阵生成器504和变换系数生成器506的全部或部分。
根据实施方案的QP计算器502基于每个QG或每个QPG,利用德尔塔QP和预测的QP来计算QP。
图7示出根据本发明实施方案的基于每个QG计算QP的方法。
当QP和QPG具有相同的大小时,QP计算器502可以计算QG单元(例如,CU)的QP,如等式1所示。
[等式1]
这里,相对于QG的左上方位置D,包含A的块位于D上方,包含L的块位于D的左方。此外,QP
图8是根据本发明实施方案的当QG的大小大于QPG时基于每个QPG计算QP的示例性图。
当QG的大小大于QPG的大小,并且QPG和CU具有相同的大小时,QP计算器502可以计算用于QPG单元的QP,如等式2所示。
[等式2]
这里,相对于QG的左上方位置D,位置Ai(i=0,…,3)位于QPG(CU0,CU1,CU2或CU3)上方,位置Li(i=0,…,3)位于QPG的左方。QP
图9是根据本发明实施方案的当QPG的大小大于QG时以QG为单位计算QP的示例性图。
当QPG的大小大于QG的大小,并且QG和CU具有相同的大小时,QP计算器502可以计算QG单元的QP,如等式3所示。
[等式3]
这里,相对于QG(CU0)的左上方处的位置D0,位置A位于QG上方,而位置L位于QG的左方。QP
在根据本发明的另一实施方案中,QP计算器502可基于QP计算单元的水平像素的数量和竖直像素的数量来选择QP计算单元(例如,QG或QPG)的上方和左方的相邻块的QP,以预测QP计算单元的QP。
在根据本发明的另一实施方案中,在当前块是色度块并且具有单树结构时,QP计算器502可以通过选择与当前块相同位置相对应的亮度块的QP来预测色度块的QP。另一方面,在当前块是色度块并且具有双树结构时,QP计算器502可以通过选择与QPG的中心位置相对应的亮度块的QP来预测色度块的QP。替选地,可以基于对应于QPG的所有亮度块的QP来预测色度块的QP。
在根据本发明的另一实施方案中,在当前TG是P(预测性的)或B(双向的)TG时,基于当前QPG的子块的预测模式的统计信息来确定帧内QP预测模式或帧间QP预测模式。在确定出帧内QP预测模式的情况下,QP计算器502可以利用上述所有方法的一个来预测QP。另一方面,在确定出帧间QP预测模式的情况下,QP计算器502可以通过计算运动矢量和参考图像列表索引,并且选择与对应于参考图像列表索引的图像的运动矢量的位置相对应的块的QP值来预测QP。这里,在双向帧间预测模式的情况下,可以基于在每个方向上预测的QP来预测QP。
在根据本发明的另一实施方案中,在接收到指定存储在先前块的TU中使用的QP的表的一个或更多个索引之后,QP计算器502可以利用由索引指定的QP来预测QP。
根据本实施方案的逆量化矩阵生成器504根据关于当前块的信息来计算推断标识符(ID),并且选择由推断ID指示的逆量化矩阵。
逆量化矩阵生成器504利用关于当前块的信息(例如,预测模式、大小、亮度和色度信息等)来生成推断ID。逆量化矩阵生成器504在逆量化矩阵列表中选择由推断ID指示的逆量化矩阵。
为了选择逆量化矩阵,逆量化矩阵生成器504生成用于N个索引的逆量化矩阵列表。该列表可以包括用于N个索引的每个的逆量化矩阵。这里,N个索引可以基于由解码装置支持的关于当前块的信息(例如,预测模式、大小、亮度和色度信息等)来预设。此外,可以利用用于N个索引的德尔塔逆量化数据列表来计算N个索引的逆量化矩阵。
对于N个索引的每个,逆量化矩阵生成器504利用索引和德尔塔索引来计算参考索引,并且基于由参考索引指示的参考逆量化矩阵来计算预测的逆量化矩阵。当德尔塔索引为零时,可以将预测的逆量化矩阵设置为常数。对于N个索引的每个,逆量化矩阵生成器504可以根据德尔塔系数生成德尔塔逆量化数据,并且利用预测的逆量化矩阵和德尔塔逆量化数据来生成逆量化矩阵。例如,预测的逆量化矩阵和德尔塔逆量化数据可以彼此相加以生成逆量化矩阵。
作为参考逆量化矩阵,可以重新使用由参考索引指示的逆量化矩阵。
在仅利用参考逆量化矩阵的预测模式的情况下,逆量化矩阵生成器504可以仅利用通过将德尔塔逆量化数据设置为零预测的逆量化矩阵来生成逆量化矩阵。
在该实施方案中,逆量化矩阵可以具有各种大小、形式和系数。解码装置可以利用根据编码/解码装置之间的协议利用固定值的方法、从编码装置向解码装置以列表的形式传输逆量化相关信息的方法、或者传输用于更新一部分固定值的逆量化信息的方法的至少一个来获得关于逆量化矩阵的信息。
基于如上所述生成的逆量化矩阵的列表,解码装置可以利用根据关于当前块的信息推断的索引来选择逆量化矩阵。
在该实施方案中,可以利用从编码装置向解码装置直接传输索引的方法、基于关于当前块的预测块的信息和关于残差信号的信息来生成推断索引的方法、以及根据预解码的相邻块的逆量化矩阵的索引来生成推断的索引的方法,或者将从编码装置传输的德尔塔索引和推断索引相加的方法的至少一个来推断逆量化矩阵的索引。
图10是根据本发明实施方案的逆量化矩阵的形式的示例性图。
在该实施方案中,逆量化矩阵可以是n维正方形矩阵(其中,n是自然数)。这里,逆量化矩阵的维度n可以由逆变换块的维度、预测块的维度、残差信号的维度或当前块的重构信号的维度的一个或更多个来自适应地确定。
在根据本发明的另一实施方案中,从编码装置向解码装置传输的逆量化矩阵的维度可以与实际应用于逆量化的矩阵的维度不同。n维矩阵可以由从编码装置传输的k维矩阵(其中,k是自然数)的组合形成并应用于逆量化,并且可以在矩阵组合操作中考虑权重和偏移。例如,利用如图10的(a)所示的两个一维矩阵,编码装置可以形成二维矩阵,然后将其应用于逆量化。这里,可以根据逆变换块的水平长度和竖直长度、逆变换块的大小、逆变换核、逆变换的数量、解码的信号的类型、预测块的预测模式、预测块的时间层值以及包含在预测块中的图像或位深度的至少一个来自适应地确定一维矩阵的大小。
在根据本发明的另一实施方案中,如图10的(b)所示,逆量化矩阵的形式可以是非矩形形状或矩形形状。可以根据逆变换块的水平长度和竖直长度、逆变换块的大小、逆变换核、逆变换的数量、解码信号的类型、预测块的预测模式、预测块的时间层值和包含在预测块中的图像或位深度的至少一个来自适应地确定或获得这些形状。也就是说,基于该信息,可以利用从编码装置向解码装置直接传输逆量化矩阵的形式的方法、传输列表和用于归纳矩阵形式的索引信息的方法,或者通过编码装置与解码装置之间协定的规则来归纳形式,而不传输额外信息的方法的至少一个来确定或获得逆量化矩阵的形式。
在该实施方案中,逆量化矩阵的系数的值可以大于或等于零。逆量化矩阵的系数可以被限制为非零值。
如上所述,可以利用德尔塔系数来生成逆量化矩阵的系数。
在该实施方案中,可以利用从编码装置向解码装置直接传输系数的值的方法、传输德尔塔系数的方法,或者传输当前逆量化矩阵与具有用于当前逆量化矩阵列表的索引的先前索引的逆量化矩阵之间的德尔塔的方法的至少一个来传输逆量化矩阵的系数。本发明的一个方面涉及传输德尔塔系数的方法和传输当前逆量化矩阵与具有先前索引的逆量化矩阵之间的德尔塔的方法。也就是说,在比特流中传输的系数是扫描顺序的先前系数与当前系数之间的德尔塔系数。通过将传输的德尔塔系数和先前的系数相加来生成中间逆量化矩阵。该中间逆量化矩阵代表本发明中的德尔塔逆量化数据。中间逆量化矩阵是指当前逆量化矩阵与具有先前索引的逆量化矩阵之间的德尔塔。因此,可以通过将中间逆量化矩阵和具有先前索引的逆量化矩阵相加来计算当前逆量化矩阵。当系数的值具有大于或等于1时,可以基于系数值-1利用上述方法来传输所有系数。
如上所述,可以只传输与逆量化矩阵的一些系数相对应的K个德尔塔系数(其中,K是自然数)。在逆量化矩阵中,利用传输的K个德尔塔系数来生成传输德尔塔系数的区域。可以将逆量化矩阵的未传输德尔塔系数的剩余区域设置为0或预定义的固定值。替选地,当扫描对应于逆量化矩阵的2D矩阵时,可以利用K个德尔塔系数来生成逆量化矩阵的相应系数,但是可以用在紧接之前已经扫描的位置处利用系数生成的值来填充未传输德尔塔系数的逆量化矩阵的剩余区域。
例如,当逆量化矩阵的大小为8×8时,可以不通过比特流来传输用于生成逆量化矩阵的右下方4×4部分所必需的德尔塔系数。用预定义的固定值填充的德尔塔逆量化数据可以用于为右下方4×4区域来生成逆量化矩阵。替选地,可以使用德尔塔逆量化数据,所述德尔塔逆量化数据是利用在逆量化矩阵的扫描顺序中紧接之前解码的德尔塔系数而生成的。在生成除右下方4×4部分之外的逆量化矩阵的剩余部分时,可以使用具有基于K个德尔塔系数生成的部分的德尔塔逆量化数据。
可以直接传输K个系数的值,或者可以传输来自先前系数的德尔塔系数。
当以当前系数值与先前系数值之间的德尔塔或当前逆量化矩阵与由先前索引指示的逆量化矩阵之间的德尔塔的形式传输系数时,该系数可以具有负值。在该实施方案中,可以将系数值以符号及其绝对值的形式进行划分和传输。
逆量化矩阵生成器504可以选择逆量化DC作为由推断ID指示的逆量化矩阵的DC项。这里,DC项表示逆量化矩阵的左上方分量。为了选择逆量化DC,逆量化矩阵生成器504生成用于M个索引的逆量化DC的列表。该列表包含用于M个索引的每个的逆量化DC。此外,可以利用用于M个索引的德尔塔逆量化DC的列表来计算M个索引的逆量化DC。
对于M个索引的每个,可以使用德尔塔索引来计算预测的逆量化DC。当德尔塔索引为零时,可以将预测的逆量化DC设置为常数。对于M个索引的每个,逆量化矩阵生成器504可以根据德尔塔系数生成德尔塔逆量化DC,并且利用预测的逆量化DC和德尔塔逆量化DC来计算逆量化DC。
用于色度分量的逆量化矩阵的传输和获得可以以与上述逆量化矩阵的传输和获得处理相同的方式执行。此外,无需单独传输,可以根据亮度分量和色度分量的采样率,利用第一矩阵,通过对亮度分量的逆量化矩阵应用诸如下采样、子采样或滤波的处理来获得用于色度分量的逆量化矩阵。此外,在第一矩阵中考虑权重和偏移的第二矩阵可以用作色度分量的逆量化矩阵。可以基于每个变换量化块来传输权重和偏移。可以共享和使用从变换量化块的较高端传输的权重和偏移。这里,可以使用从较高端传输权重和偏移的列表并从每个色度分量获得列表的索引的方法和接收索引的方法的至少一个。此外,可以直接传输构成列表的权重和偏移,或者可以传输当前值与先前值之间的德尔塔。
根据本实施方案的变换系数生成器506利用量化参数和选择的逆量化矩阵从量化的系数中生成变换系数。这里,量化参数等同地应用于整个量化的系数,并且逆量化矩阵可以不同地应用于每个分量的量化的系数。
变换系数生成器506通过将量化参数乘以量化的系数来生成重构的量化的系数。变换系数生成器506利用选择的逆量化矩阵来计算缩放矩阵。此外,缩放矩阵的DC项可以替代选择的逆量化DC。
在该实施方案中,逆量化矩阵和缩放矩阵的大小可以不同。在这种情况下,变换系数生成器506可以通过对逆量化矩阵进行上采样来生成缩放矩阵。
当没有对量化的系数应用缩放或应用变换跳过模式时,变换系数生成器506将缩放矩阵的分量设置为相同的常数,从而消除逆量化矩阵在生成变换系数时的影响。
变换系数生成器506通过将缩放矩阵乘以重构的量化的系数来生成要传递到逆变换器430的变换系数。
图11是根据本发明实施方案的逆量化方法的流程图。
根据本发明实施方案的逆量化装置500从比特流中解码关于当前块的信息、量化的系数、QG的大小、QPG的大小、德尔塔量化参数(在下文中,称为德尔塔QP)、用于逆量化矩阵的德尔塔索引以及逆量化矩阵的德尔塔系数(S1100)。
关于当前块的信息可以包括生成预测块、残差信号以及重构当前块所必需的信息。关于当前块的信息可以包括例如预测模式、当前块的大小以及关于当前块是亮度还是色度的信息。
在逆量化装置500中,可以基于每个QG应用QP(实际上是,德尔塔QP)。相应地,德尔塔QP可以不基于每个TU从编码装置来传输,而可以基于较大的QG来传输。
当QG和QPG的大小彼此不相等时,逆量化装置500可以从比特流中解码QPG的大小。QG可以包括一个或更多个QPG,或者QPG可以包括一个或更多个QG,并且QP和QPG的每个不能跨越彼此的边界存在。
在该实施方案中,利用预测的量化矩阵和德尔塔逆量化数据来生成逆量化矩阵。此外,可以利用预测的逆量化DC和德尔塔逆量化DC来生成逆量化矩阵的直流(DC)项。
用于逆量化矩阵的德尔塔索引可以用于计算预测的量化矩阵和预测的逆量化DC。
逆量化矩阵的德尔塔系数可以用于计算德尔塔逆量化数据的列表和德尔塔逆量化DC列表。德尔塔逆量化数据的列表包括用于N个索引的每个的德尔塔逆量化数据(其中,N是自然数),并且德尔塔逆量化DC的列表包括用于M个索引的每个的德尔塔逆量化DC(其中,M是小于N的自然数)。
逆量化装置500基于QG的大小、QPG的大小和德尔塔QP来计算QP(S1102)。
当QP和QPG具有相同的大小时,逆量化装置500可以通过将与QG的左上方位置的上方和左方位置相对应的QP平均来预测QG的QP,然后通过将QG的左上方位置的德尔塔QP与QG的预测的QP相加来计算QG的QP。
当QG的大小大于QPG的大小时,也就是说,当QG包括多个QPG时,逆量化装置500可以通过将与每个QPG的左上方位置的上方和左方位置相对应的QP平均来预测每个QPG的QP,然后通过将QG的左上方位置的德尔塔QP与每个QPG的预测的QP相加来计算每个QPG的QP。
另一方面,当QG的大小小于QPG的大小时,也就是说,当QPG包括多个QG时,逆量化装置500可以通过将与QPG的左上方位置的上方和左方位置相对应的QP平均来预测QPG的QP,然后通过将每个QG的左上方位置的德尔塔QP与QPG的预测的QP相加来计算每个QG的QP。
逆量化装置500根据关于当前块的信息来计算推断标识符(ID),并且选择由推断ID指示的逆量化矩阵(S1104)。
逆量化装置500利用关于当前块的信息(例如,预测模式、大小、亮度和色度信息等)来生成推断ID。逆量化装置500在逆量化矩阵列表中选择由推断ID指示的逆量化矩阵。
为了选择逆量化矩阵,逆量化装置500生成用于N个索引的逆量化矩阵列表。该列表可以包括用于N个索引的每个的逆量化矩阵。这里,N个索引可以基于由解码装置支持的关于当前块的信息(例如,预测模式、大小、亮度和色度信息等)来预设。此外,可以利用用于N个索引的德尔塔逆量化数据的列表来计算N个索引的逆量化矩阵。
对于N个索引的每个,逆量化装置500利用索引和德尔塔索引来计算参考索引,并且基于由参考索引指示的参考逆量化矩阵来计算预测的逆量化矩阵。当德尔塔索引为零时,可以将预测的逆量化矩阵设置为常数。对于N个索引的每个,逆量化装置500可以根据德尔塔系数生成德尔塔逆量化数据,并且利用预测的逆量化矩阵和德尔塔逆量化数据来生成逆量化矩阵。例如,预测的逆量化矩阵和德尔塔逆量化数据可以彼此相加以生成逆量化矩阵。
作为参考逆量化矩阵,可以重新使用由参考索引指示的逆量化矩阵。
基于如上所述生成的逆量化矩阵的列表,解码装置可以利用根据关于当前块的信息推断的索引来选择逆量化矩阵。
在该实施方案中,可以利用从编码装置向解码装置直接传输索引的方法、基于关于当前块的预测块的信息和关于残差信号的信息来生成推断索引的方法、以及根据预解码的相邻块的逆量化矩阵的索引来生成推断索引的方法,或者将从编码装置传输的德尔塔索引和推断索引相加的方法的至少一个来推断逆量化矩阵的索引。
如上所述,可以利用德尔塔系数来生成逆量化矩阵的系数。
在该实施方案中,可以利用从编码装置向解码装置直接传输系数的值的方法、传输德尔塔系数的方法,或者传输当前逆量化矩阵与具有用于当前逆量化矩阵列表的索引的先前索引的逆量化矩阵之间的德尔塔的方法的至少一个来传输逆量化矩阵的系数。
逆量化装置500可以选择逆量化DC作为由推断ID指示的逆量化矩阵的DC项。这里,DC项表示逆量化矩阵的左上方分量。为了选择逆量化DC,逆量化装置500生成用于M个索引的逆量化DC的列表。该列表包含用于M个索引的每个的逆量化DC。此外,可以利用用于M个索引的德尔塔逆量化DC的列表来计算M个索引的逆量化DC。
对于M个索引的每个,可以利用德尔塔索引来计算预测的逆量化DC。当德尔塔索引为零时,可以将预测的逆量化DC设置为常数。对于M个索引的每个,逆量化装置500可以根据德尔塔系数生成德尔塔逆量化DC,并且利用预测的逆量化DC和德尔塔逆量化DC来计算逆量化DC。
逆量化装置500利用量化参数和选择的逆量化矩阵从量化的系数中生成变换系数(S1106)。逆量化装置500通过将量化参数乘以量化的系数来生成重构的量化的系数。
逆量化装置500利用选择的逆量化矩阵来计算缩放矩阵。此外,缩放矩阵的DC项可以替代选择的逆量化DC。逆量化装置500通过将缩放矩阵乘以重构的量化的系数来生成变换系数。
如上所述,根据本实施方案,提供了一种逆量化装置和方法,其用于获取量化的系数,以量化组或量化参数预测组为单位来计算量化参数,生成用于自适应量化的逆量化矩阵,并且利用量化参数和逆量化矩阵从量化的系数中生成变换系数。由此,可以提高视频编码和解码装置的压缩性能。
尽管根据本实施方案的每个流程图示出了顺序地执行各个操作,但实施方案不一定限于此。换句话说,可以以不同的顺序来执行流程图中示出的操作,或者可以并行地执行一个或更多个操作。相应地,流程图不限于时间序列顺序。
本发明中描述的各种功能或方法可以用存储在非易失性记录介质中的指令来实现,所述指令可以由一个或更多个处理器读取和执行。非易失性记录介质包括,例如,所有类型的记录器件,其中数据以计算机系统可读的形式存储。例如,非易失性记录介质包括存储介质,例如可擦除可编程只读存储器(EPROM)、闪存驱动器,光盘驱动器、磁性硬盘驱动器和固态驱动器(SSD)。
尽管已经出于说明的目的描述了本发明的示例性实施方案,但是本领域的技术人员应当理解,在不脱离本发明思想和范围的情况下,各种修改和改变是可能的。为了简洁和清楚起见,已经描述了示例性实施方案。相应地,普通技术人员应当理解,实施方案的范围不受以上明确描述的实施方案限制,而是包括在权利要求书及其等同形式内。
附图标记
145:量化器 160、420:逆量化器
410:熵解码器 430:逆变换器
500:逆量化装置
502:QP计算器 504:逆量化矩阵生成器
506:变换系数生成器。
相关申请的交叉引用
本申请根据35U.S.C§119(a)要求2019年5月15日提交的韩国专利申请No.10-2019-0056976、2019年8月6日提交的韩国专利申请No.10-2019-0095450以及2020年5月15日提交的韩国专利申请No.10-2020-0058328的优先权,其全部内容通过引用结合于本文中。此外,由于与以上相同的原因,本专利申请要求在除美国以外的国家的优先权,并且其全部内容通过引用结合于本文中。
- 影像解码装置中使用的逆量化装置和方法
- 影像编码装置、影像编码方法、影像编码程序、影像解码装置、影像解码方法和影像解码程序