CN113473129B - 一种编码、解码方法及装置 - Google Patents
一种编码、解码方法及装置 Download PDFInfo
- Publication number
- CN113473129B CN113473129B CN202010239734.0A CN202010239734A CN113473129B CN 113473129 B CN113473129 B CN 113473129B CN 202010239734 A CN202010239734 A CN 202010239734A CN 113473129 B CN113473129 B CN 113473129B
- Authority
- CN
- China
- Prior art keywords
- current block
- target
- transformation
- coefficient matrix
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 104
- 230000009466 transformation Effects 0.000 claims abstract description 672
- 239000011159 matrix material Substances 0.000 claims abstract description 498
- 238000001914 filtration Methods 0.000 claims abstract description 62
- 238000005516 engineering process Methods 0.000 claims abstract description 50
- 238000005192 partition Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 description 27
- 238000013139 quantization Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 230000000694 effects Effects 0.000 description 9
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 7
- 239000013074 reference sample Substances 0.000 description 7
- 238000007906 compression Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000009795 derivation Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 229910052757 nitrogen Inorganic materials 0.000 description 3
- 229910052698 phosphorus Inorganic materials 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
- H04N19/45—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder performing compensation of the inverse transform mismatch, e.g. Inverse Discrete Cosine Transform [IDCT] mismatch
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供一种编码、解码方法及装置,该编码方法包括:获取当前块对应的残差系数矩阵;对所述残差系数矩阵进行初始变换,得到初始变换系数矩阵;若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据所述当前块对应的率失真代价值,确定是否对所述当前块进行二次变换;其中,所述第一预设条件包括:所述当前块的预测模式为帧内预测模式;所述第二预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。通过本申请提高编码性能。
Description
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编码、解码方法及装置。
背景技术
为了达到节约空间的目的,视频图像是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。预测编码可以包括帧内编码和帧间编码。帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,达到去除视频时域冗余的目的。帧内编码是考虑到相邻块之间存在很强的空域相关性,利用周围已经重建的像素作为参考像素,对当前未编码块进行预测,只需要对残差值进行后续的编码处理,而不是对原始值进行编码,有效去除空域上的冗余,大大提高了压缩效率。
在视频的编码过程中,变换是指将以空间域中像素形式描述的图像转换至变换域的图像,并以变换系数的形式来表示。由于绝大多数图像都含有较多平坦区域和缓慢变化的区域,因此,适当的变换过程,可以使图像能量在空间域的分散分布,转换为在变换域的相对集中分布,从而能够去除信号之间的频域相关性,配合量化过程,可以有效压缩码流。
针对变换过程,在相关技术中提出了二次变换技术。二次变换技术是指:首先进行初始变换,得到初始变换后的变换系数。然后,对初始变换后的变换系数进行二次变换,得到新的变换系数。然后,对新的变换系数进行量化和熵编码等过程。但是,在实际应用中,进行初始变换后,如果初始变换后的变换系数的能量已经足够集中,那么,再对初始变换后的变换系数进行二次变换时,可能会出现过拟合现象,从而导致编码性能比较差等问题。
发明内容
本申请提供一种编码方法,应用于编码端,所述方法包括:
获取当前块对应的残差系数矩阵;
对所述残差系数矩阵进行初始变换,得到初始变换系数矩阵;
若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据所述当前块对应的率失真代价值,确定是否对所述当前块进行二次变换;
其中,所述第一预设条件包括:所述当前块的预测模式为帧内预测模式;所述第二预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
本申请提供一种解码方法,应用于解码端,所述方法包括:
获取当前块的编码比特流;
若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据所述编码比特流中的指示信息或者目标变换系数矩阵确定是否对所述当前块进行二次逆变换;
其中,所述第三预设条件包括:所述当前块的预测模式为帧内预测模式;所述第四预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
本申请提供一种编码装置,应用于编码端,所述装置包括:
获取模块,用于获取当前块对应的残差系数矩阵;
变换模块,用于对所述残差系数矩阵进行初始变换,得到初始变换系数矩阵;
确定模块,用于若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据所述当前块对应的率失真代价值,确定是否对所述当前块进行二次变换;
其中,所述第一预设条件包括:所述当前块的预测模式为帧内预测模式;所述第二预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
本申请提供一种解码装置,应用于解码端,所述装置包括:
获取模块,用于获取当前块的编码比特流;
确定模块,用于若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据所述编码比特流中的指示信息或者目标变换系数矩阵确定是否对所述当前块进行二次逆变换;其中,所述第三预设条件包括:所述当前块的预测模式为帧内预测模式;所述第四预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
获取模块,用于获取当前块的编码比特流;
确定模块,用于若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据所述编码比特流中的指示信息或者目标变换系数矩阵确定是否对所述当前块进行二次逆变换;其中,所述第三预设条件包括:所述当前块的预测模式为帧内预测模式;所述第四预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
获取当前块的编码比特流;
若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据所述编码比特流中的指示信息或者目标变换系数矩阵确定是否对所述当前块进行二次逆变换;
其中,所述第三预设条件包括:所述当前块的预测模式为帧内预测模式;所述第四预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
由以上技术方案可见,本申请实施例中,可以判断是否允许对当前块进行二次变换,从而剔除不需要进行二次变换的块,起到去冗余的作用,从而提高编码性能。
附图说明
图1A-图1C是本申请一种实施方式中的DT划分模式的示意图;
图1D是本申请一种实施方式中的帧内预测模式的示意图;
图1E是本申请一种实施方式中的视频编码框架的示意图;
图2A是本申请一种实施方式中的编码方法的流程图;
图2B是本申请一种实施方式中的解码方法的流程图;
图3A是本申请一种实施方式中的编码方法的流程图;
图3B是本申请一种实施方式中的解码方法的流程图;
图4A是本申请一种实施方式中的编码方法的流程图;
图4B是本申请一种实施方式中的解码方法的流程图;
图5A是本申请一种实施方式中的编码装置的结构图;
图5B是本申请一种实施方式中的解码装置的结构图;
图6A是本申请一种实施方式中的编码端设备的硬件结构图;
图6B是本申请一种实施方式中的解码端设备的硬件结构图。
具体实施方式
在本申请实施例中所使用的术语仅仅是出于描述特定实施例的目的,而非用于限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
为了使本领域技术人员更好地理解本申请的技术方案,下面对技术术语进行简单说明。
预测像素(Prediction Signal):是指从已经编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换,量化以及系数编码等过程。
帧内预测(Intra Prediction):是指通过周边已解码区域的重建像素值来预测当前块的预测值的预测模式。常见的方式包括按照角度方向进行像素拷贝,以及按照一定的渐变原则进行预测值导出的方式。示例性的,帧内预测去除的是视频/图像的空域相关性。
变换核(transform kernel):在视频编码中,变换是实现数据压缩必不可少的阶段,变换能够使信号的能量更加集中,而基于离散余弦变换(DCT,Discrete CosineTransform)/离散正弦变换(DST,Discrete Sine Transform)的变换技术,一直是视频编码主流变换技术。DCT和DST根据基函数的不同又具体分为多种变换核,参见表1所示,示出了三种变换核。
表1
正变换(forward transform)和逆变换(inverse transform):在视频编码过程中,包含了正变换和逆变换过程,正变换又称为前向变换,逆变换又称为反向变换。示例性的,正变换是将一个二维残差系数(也可以称为残差信号)转换成能量更加集中的二维变换系数(也可以称为频谱信号),该变换系数再经过量化等过程,就可以有效去除高频成分,保留中低频成分,起到了压缩的作用。例如,可以通过公式(1)的矩阵形式表示正变换过程。
F=B·f·AT 公式(1)
示例性的,M表示残差块(即残差系数组成的块)的宽度,N表示残差块的高度,f表示N*M维的原始残差信号,F表示N*M维的频域信号(即转换后频域信号),A和B表示M*M和N*N维的变换矩阵,A和B均满足正交性,如表1所示的变换核。
逆变换可以是正变换的逆过程,即通过变换矩阵A和变换矩阵B,可以将频域信号F转换成时域残差信号f。例如,可以通过公式(2)的矩阵形式表示逆变换过程。
f=BT·F·A 公式(2)
水平变换(Horizental transform)和垂直变换(Vertical transform):在编码变换阶段,输入的是二维残差信号,设X=A·fT,则F=B·XT,例如,通过公式(3)的矩阵形式进行表示。
F=B·f·AT=B·(A·fT)T 公式(3)
综上可以看出,二维信号的正变换可以通过两次一维的正变换方式实现,第一次正变换后得到一个M*N的信号X,去除二维残差信号的水平方向像素之间的相关性,因此,第一次正变换称为水平变换,称A为水平变换矩阵。第二次正变换后得到信号F,去除二维残差信号的垂直方向像素之间的相关性,因此,第二次正变换称为垂直变换,称B为垂直变换矩阵。
变换对(Transform pair):也称为变换核对,为了支持矩阵块,M不一定等于N,A和B的维度不一定相等,还可以支持A和B不是同一种变换核生产的变换矩阵,因此,在变换中存在A和B对应的变换核组成的变换对{H,V},H称为水平变换核,V称为垂直变换核。
率失真原则(RDO,Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比)。比特流越小,则压缩率越大;PSNR越大,则重建图像质量越好。在模式选择时,判别公式实质上也就是对二者的综合评价。
模式对应的代价值:J(mode)=D+λ*R。示例性的,D表示Distortion,通常使用SSE指标来衡量,SSE是指重建块与源图像的差值均方和;λ是拉格朗日乘子;R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用RDO原则去对编码模式做比较决策,通常可以保证编码性能最佳。
隐式变换核选择(IST,Implicit Selection of Transform):对于帧内预测残差块,通常使用DCT2变换方法,然而,对于大部分帧内预测残差块,特别是小块,DST7表现出更好的能量集中性,因此基于编码单元(Code Unit,简称CU)-等级(level)的多变换核选择,会进一步带来编码性能的提升。基于此,提出了基于隐式表达的变换核选择方式,即隐藏变换核的标志位(可以称为IST标志位),从而隐式指示对当前块进行变换使用的变换核对。
示例性的,编码端需要通过RDO来选择变换核对是采用(DCT2,DCT2)还是采用(DST7,DST7),为了隐藏IST标志位,认为当选择变换核对为(DCT2,DCT2)时,当前块的非零变换系数的个数为偶数,若实际非零个数为奇数,则编码端通过将最后一位非零变换系数置零的方法,使得当前块的非零变换系数的个数一定为偶数。同理,当选择变换核对为(DST7,DST7)时,当前块的非零变换系数的个数为奇数,若实际非零个数为偶数,则编码端通过将最后一位非零变换系数置零的方法,使得当前块的非零变换系数的个数一定为奇数。
出于硬件实现的角度出发,DST7变换核的硬件实现所需要的乘法次数较多,硬件实现代价比较大。因此,为了降低硬件实现的复杂度,对于变换系数超过一定范围的变换块,可以不使用DST7变换核,具体方法如下:sr_x表示当前变换系数矩阵中最右面的非零变换系数的横坐标,sr_y表示当前变换系数矩阵中最下面的非零变换系数的纵坐标,由sr_x和sr_y可确定当前变换系数矩阵中所有非零变换系数对应的区域,超出该范围的区域变换系数都为0。
由于sr_x和sr_y需要传输到解码端,解码端可以直接得到sr_x和sr_y,当sr_x大于等于16或sr_y大于等于16时,解码端可以直接判定IST使用的变换核为(DCT2,DCT2),不需要再统计非零变换系数的个数的奇偶性;否则,需要确定当前块非零变换系数的个数的奇偶性,若该奇偶性为奇数,则IST使用的变换核为(DST7,DST7),若为该奇偶性为偶数,则IST使用的变换核为(DCT2,DCT2),上述过程可以通过如下公式进行表示:
IstTuFlag=(sr_x>=16||sr_y>=16)?0:(num_nz%2?1:0)
基于上述分析可以得出,最终,IST变换核的选择方法可以参见表2所示:
表2
示例性的,IST可以作用于满足以下条件的当前块:当前块为帧内预测模式;当前子块的划分模式为非DT模式;当前块的宽度小于64;当前块的高度小于64。
衍生树(Derive Tree,简称DT)划分模式:DT划分模式是一种新的划分模式,产生新的划分形状,能够进一步获得性能增益。示例性的,DT划分模式可以包括水平衍生模式和竖直衍生模式,其示意图可以如图1A所示。DT划分模式还可以生长在四叉树或者二叉树的叶子节点上,参见图1B所示,对于I帧或非I帧,DT划分模式可以通过对CU合并划分边界,得到衍生模式的不同PU划分(2N*hN、2N*nU、2N*nD、hN*2N、nL*2N或nR×2N)。
示例性的,对于帧内预测模式来说,使用衍生模式进行预测的当前块,可以使用4个非方块进行变换量化,并不需要引入新的变换核,其示意图可以如图1C所示。
示例性的,使用水平衍生模式的当前块需要满足下面2个条件:高度大于等于16,且小于等于64;宽度与高度的比例小于4。示例性的,使用竖直衍生模式的当前块需要满足下面2个条件:宽度大于等于16,且小于等于64;高度与宽度的比例小于4。
帧内预测模式:为了支持更精细的角度预测,可以将角度预测模式扩展为62个,在加上3个特殊帧内模式,则一共65种模式。参见图1D所示,为帧内预测模式的示意图,原有的角度预测模式的模式号1-33不变,新增的角度预测模式,模式号从34往后增加至65。
视频编码框架:参见图1E示,可以使用视频编码框架实现本申请实施例中的编码端处理流程,视频解码框架的示意图与图1E类似,在此不再重复赘述,可以使用视频解码框架实现本申请实施例中的解码端处理流程。在视频编码框架和视频解码框架中,可以包括但不限于:帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端的处理流程,在解码端,通过这些模块之间的配合,可以实现解码端的处理流程。
示例性的,在视频编码过程中,变换是指将以空间域中像素形式描述的图像转换至变换域的图像,并以变换系数的形式来表示。由于绝大多数图像都含有较多平坦区域和缓慢变化的区域,因此,适当的变换过程,可以使图像能量在空间域的分散分布,转换为在变换域的相对集中分布,从而能够去除信号之间的频域相关性,配合量化过程,可以有效压缩码流。
示例性的,熵编码是指按照信息熵的原理进行无损编码的方式,处于视频压缩的最后一个处理模块,用于将一系列用来表示视频序列的元素符号,转变为一个用来传输或存储的二进制码流,输入的符号可能包括量化后的变换系数,运动矢量信息,预测模式信息,变换量化相关语法等,熵编码模块的输出数据即原始视频压缩后的最终码流。熵编码可以有效地去除这些视频元素符号的统计冗余,是保证视频编码压缩效率的重要工具之一。
二次变换:在相关技术中,针对4*4块和非4*4块使用不同的二次变换矩阵。从编码端来说,就是经过(DCT2,DCT2)变换后得到变换系数,然后对左上角的4*4的变换系数,再与二次变换矩阵相乘得到新的变换系数,然后再进行量化和熵编码。从解码端来说,对于从码流熵解码得到的变换系数经过反量化后,对于左上角的4*4区域先进行二次逆变换,得到新的变换系数,然后对整个变换块使用(DCT2,DCT2)进行逆变换,得到残差系数。
可选择的二次变换(AST,alternative secondary transform):对于帧内预测块来说,经过初始变换后得到的变换系数,可以选择做二次变换也可以选择不做二次变换,二次变换的目的是对低频区域进行第二次变换,是能量进一步集中。然而若当前块能量已经足够集中,则不需要进行二次变换,因此基于实际编码块,可以通过RDO来决定是否进行二次变换,可以基于显式或隐式的方式来表达当前块是否进行二次变换。若使用显式的AST,则通过码流显式编码二次变换指示信息,若使用隐式AST,则通过调整变换系数使满足预设奇偶性特征。
在相关技术中,默认亮度帧内预测残差块需要进行二次变换,但进行初始变换后,若初始变换后的变换系数的能量已经足够集中,再对初始变换后的变换系数进行二次变换,可能会出现过拟合现象,导致编码性能比较差等问题,即,二次变换的编码效果并不理想。
针对上述发现,本申请实施例中,编码端可以根据第一预设条件和第二预设条件判断是否允许对当前块进行二次变换,若当前块满足第一预设条件,且当前块也满足第二预设条件,则允许对当前块进行二次变换,基于此,可以根据当前块对应的率失真代价值确定是否对当前块进行二次变换。若当前块不满足第一预设条件,则禁止对当前块进行二次变换,从而剔除不需要进行二次变换的块,起到去冗余的作用,提高编码性能。若当前块满足第一预设条件,且当前块不满足第二预设条件,则直接确定对当前块进行二次变换。
在一种可能的实施方式中,针对编码端来说,可以通过RDO来确定是否对当前块进行二次变换,并显式编码指示信息(如secTuflag)来表示是否对当前块进行二次变换,例如,当secTuflag的取值为第一取值时,可以表示对当前块进行二次变换,当secTuflag的取值为第二取值时,可以表示对当前块不进行二次变换。针对解码端来说,在获取到编码比特流后,可以从编码比特流中解析出当前块的secTuflag,若secTuflag的取值为第一取值,则确定对当前块进行二次逆变换,若secTuflag的取值为第二取值,则确定对当前块不进行二次逆变换。
在另一种可能的实施方式中,针对编码端来说,可以通过RDO来确定是否对当前块进行二次变换,并通过目标变换系数矩阵的目标特征(如奇偶性等)来隐式表示是否对当前块进行二次变换,而不是通过指示信息来显式表示是否对当前块进行二次变换,比如说,通过目标变换系数矩阵的奇数变换系数的个数的奇偶性,来隐式表达secTuflag,决定当前块是否使用二次变换。针对解码端来说,在获取到编码比特流后,从编码比特流中解析出目标变换系数矩阵,并根据目标变换系数矩阵的目标特征确定当前块的预设标志位的目标取值,即推导出当前块的预设标志位的目标取值。若预设标志位的目标取值为第一取值,则确定对当前块进行二次逆变换。若预设标志位的目标取值为第二取值,则确定对当前块不进行二次逆变换。
示例性的,基于上述两种情况,针对编码端来说,若确定需要对当前块进行二次变换,还可以基于尺寸限制条件,决定对左上角4*4的区域进行二次变换,还是8*8区域进行二次变换。针对解码端来说,若确定需要对当前块进行二次逆变换,还可以基于尺寸限制条件,决定对左上角4*4的区域进行二次逆变换,还是8*8区域进行二次逆变换。
以下结合几个具体实施例,对本申请实施例的编码方法、解码方法进行详细说明。
实施例1:参见图2A所示,为编码方法的流程示意图,可以应用于编码端,该方法包括:
步骤211,获取当前块对应的残差系数矩阵。
步骤212,对该残差系数矩阵进行初始变换,得到初始变换系数矩阵。
步骤213,若当前块支持二次变换,当前块支持AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据当前块对应的率失真代价值,确定是否对当前块进行二次变换。
示例性的,第一预设条件包括当前块的预测模式为帧内预测模式。第二预设条件包括:当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
在一种可能的实施方式中,第一预设条件可以包括如下条件的至少一个:当前块为亮度块;当前块的初始变换系数矩阵中含有非零变换系数。
在一种可能的实施方式中,第一预设条件还可以包括:当前块采用的帧内预测模式的模式号位于第一模式号区间,且当前块外部左边的参考样本可用;或者,当前块采用的帧内预测模式的模式号位于第二模式号区间,且当前块外部上边的参考样本可用。
示例性的,第一模式号区间可以包括但不限于:模式号0~模式号2,模式号13~模式号32,模式号44~模式号65。第二模式号区间可以包括但不限于:模式号0~模式号23,模式号34~模式号57。当然,上述只是第一模式号区间和第二模式号区间的示例,对此不做限制。
在一种可能的实施方式中,第一预设条件还可以包括:当前块采用变换核对(DCT2,DCT2)进行初始变换;或者,当前块未采用变换核对(DST7,DST7)进行初始变换。
示例性的,在IST技术中,参见表2所示,若istTuflag等于第一取值(如0),表示当前块使用变换核对(DCT2,DCT2)进行初始变换,若istTuflag等于第二取值(如1),表示当前块使用变换核对(DST7,DST7)进行初始变换。基于此,第一预设条件还可以包括:istTuflag=0,即通过istTuflag=0表示前块采用变换核对(DCT2,DCT2)进行初始变换。
在一种可能的实施方式中,第二预设条件还可以包括如下条件的一个:
所述当前块的宽度和高度满足第一尺寸条件;或者,
所述当前块支持DT划分模式;或者,
所述当前块不支持DT划分模式;或者,
所述当前块的宽度和高度满足第一尺寸条件,且所述当前块支持DT划分模式;或者,
所述当前块的宽度和高度满足第一尺寸条件,且所述当前块不支持DT划分模式。
示例性的,若当前块的宽度小于或等于第一数值,且当前块的高度小于或等于第二数值,则当前块的宽度和高度满足第一尺寸条件。例如,第一数值可以为32,第二数值可以为32,或者,第一数值可以为64,第二数值可以为64。当然,上述只是示例,对此不做限制。
示例性的,编码端根据当前块对应的率失真代价值,确定是否对当前块进行二次变换之后,若对当前块进行二次变换,则对初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换,得到目标变换系数矩阵;若对当前块不进行二次变换,则将初始变换系数矩阵确定为目标变换系数矩阵。根据目标变换系数矩阵进行编码,得到当前块的编码比特流。
在一种可能的实施方式中,编码端可以显式的编码指示信息,通过该指示信息来表示是否对当前块进行二次变换。基于此,编码端可以直接在编码比特流中编码该目标变换系数矩阵,在此基础上,若对当前块进行二次变换,则可以在编码比特流中添加第一指示信息,第一指示信息用于指示对当前块进行二次变换。若对当前块不进行二次变换,则可以在编码比特流中添加第二指示信息,第二指示信息用于指示对当前块不进行二次变换。
在另一种可能的实施方式中,可以通过目标变换系数矩阵的目标特征(如奇偶性)来隐式表示是否对当前块进行二次变换,而不是通过指示信息来显式表示是否对当前块进行二次变换。基于此,根据目标变换系数矩阵进行编码,得到当前块的编码比特流,包括:根据目标变换系数矩阵中的变换系数,确定目标变换系数矩阵的目标特征;根据该目标特征和当前块的预设标志位的目标取值,确定是否对目标变换系数矩阵进行调整;预设标志位的目标取值为第一取值时,用于指示对当前块进行二次变换,预设标志位的目标取值为第二取值时,用于指示对当前块不进行二次变换。若不对目标变换系数矩阵进行调整,则对目标变换系数矩阵进行编码,得到当前块的编码比特流;若对目标变换系数矩阵进行调整,则对目标变换系数矩阵中的变换系数进行调整,以使调整后的目标变换系数矩阵的目标特征与预设标志位的目标取值相匹配,对调整后的目标变换系数矩阵进行编码,得到当前块的编码比特流。
由以上技术方案可见,本申请实施例中,编码端可以根据第一预设条件和第二预设条件判断是否允许对当前块进行二次变换,若当前块满足第一预设条件,且当前块也满足第二预设条件,则允许对当前块进行二次变换,基于此,可以根据当前块对应的率失真代价值确定是否对当前块进行二次变换。若当前块不满足第一预设条件,则禁止对当前块进行二次变换,从而剔除不需要进行二次变换的块,起到去冗余的作用,提高编码性能。
实施例2:参见图2B所示,为解码方法的流程示意图,可以应用于解码端,该方法包括:
步骤221,获取当前块的编码比特流。
步骤222,若当前块支持二次变换,当前块支持AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据该编码比特流中的指示信息或者目标变换系数矩阵确定是否对当前块进行二次逆变换。
第三预设条件可以包括当前块的预测模式为帧内预测模式;第四预设条件可以包括:当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
在一种可能的实施方式中,第三预设条件可以包括如下条件的至少一个:当前块为亮度块;当前块的初始变换系数矩阵中含有非零变换系数。
在一种可能的实施方式中,第三预设条件还可以包括:当前块采用的帧内预测模式的模式号位于第一模式号区间,且当前块外部左边的参考样本可用;或者,当前块采用的帧内预测模式的模式号位于第二模式号区间,且当前块外部上边的参考样本可用。
示例性的,第一模式号区间可以包括但不限于:模式号0~模式号2,模式号13~模式号32,模式号44~模式号65。第二模式号区间可以包括但不限于:模式号0~模式号23,模式号34~模式号57。当然,上述只是第一模式号区间和第二模式号区间的示例,对此不做限制。
在一种可能的实施方式中,第三预设条件还可以包括:当前块采用变换核对(DCT2,DCT2)进行初始逆变换;或者,当前块未采用变换核对(DST7,DST7)进行初始逆变换。
示例性的,在IST技术中,若istTuflag等于第一取值(如0),表示当前块使用变换核对(DCT2,DCT2)进行初始逆变换,若istTuflag等于第二取值(如1),表示当前块使用变换核对(DST7,DST7)进行初始逆变换。基于此,第三预设条件还可以包括:istTuflag=0,即通过istTuflag=0表示前块采用变换核对(DCT2,DCT2)进行初始逆变换。
在一种可能的实施方式中,第四预设条件还可以包括如下条件的一个:
所述当前块的宽度和高度满足第一尺寸条件;或者,
所述当前块支持DT划分模式;或者,
所述当前块不支持DT划分模式;或者,
所述当前块的宽度和高度满足第一尺寸条件,且所述当前块支持DT划分模式;或者,
所述当前块的宽度和高度满足第一尺寸条件,且所述当前块不支持DT划分模式。
示例性的,若当前块的宽度小于或等于第一数值,且当前块的高度小于或等于第二数值,则当前块的宽度和高度满足第一尺寸条件。例如,第一数值可以为32,第二数值可以为32,或者,第一数值可以为64,第二数值可以为64。当然,上述只是示例,对此不做限制。
在一种可能的实施方式中,编码端可以显式的编码指示信息来表示是否对当前块进行二次变换。基于此,解码端根据该编码比特流中的指示信息确定是否对当前块进行二次逆变换,可以包括:从该编码比特流中解析出指示信息。若该指示信息为第一指示信息,则确定对当前块进行二次逆变换;第一指示信息用于指示对当前块进行二次变换;或者,若该指示信息为第二指示信息,则确定对当前块不进行二次逆变换;第二指示信息用于指示对当前块不进行二次变换。
在另一种可能的实施方式中,编码端可以通过目标变换系数矩阵的目标特征(如奇偶性)来隐式表示是否对当前块进行二次变换,而不是通过指示信息来显式表示。基于此,解码端根据该编码比特流中的目标变换系数矩阵确定是否对当前块进行二次逆变换,可以包括:从该编码比特流中解析出目标变换系数矩阵;根据目标变换系数矩阵中的变换系数,确定目标变换系数矩阵的目标特征。根据目标特征确定当前块的预设标志位的目标取值;预设标志位的目标取值为第一取值时,用于指示对当前块进行二次逆变换,预设标志位的目标取值为第二取值时,用于指示对当前块不进行二次逆变换。根据预设标志位的目标取值确定是否对当前块进行二次逆变换。
示例性的,解码端根据编码比特流确定是否对当前块进行二次逆变换后,可以从编码比特流中解析出目标变换系数矩阵;若对当前块进行二次逆变换,则对目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换,得到初始变换系数矩阵;若对当前块不进行二次逆变换,则将目标变换系数矩阵确定为初始变换系数矩阵。对初始变换系数矩阵进行初始逆变换,得到当前块对应的残差系数矩阵,根据残差系数矩阵确定当前块的重建值。
由以上技术方案可见,本申请实施例中,解码端可以根据第三预设条件和第四预设条件判断是否允许对当前块进行二次逆变换,比如说,若当前块满足第三预设条件,且当前块也满足第四预设条件,则允许对当前块进行二次逆变换,并根据当前块的编码比特流确定是否对当前块进行二次逆变换。若当前块不满足第三预设条件,则禁止对当前块进行二次逆变换,即解码端直接确定出当前块不进行二次逆变换,从而剔除不需要进行二次变换的块,起到去冗余的作用,从而提高编码性能。
实施例3:参见图3A所示,为编码方法的流程示意图,可以应用于编码端,该方法包括:
步骤311,获取当前块对应的残差系数矩阵。
示例性的,可以确定当前块对应的参考块,针对当前块的每个像素点,从参考块中确定与该像素点对应的参考点,该像素点的像素值与该参考点的像素值之间的差值,就是该像素点对应的残差系数,当前块的所有像素点对应的残差系数就组成当前块对应的残差系数矩阵。
步骤312,对该残差系数矩阵进行初始变换,得到初始变换系数矩阵。
示例性的,可以采用变换核对(DCT2,DCT2)对残差系数矩阵进行初始变换,得到初始变换系数矩阵,也可以采用变换核对(DST7,DST7)对残差系数矩阵进行初始变换,得到初始变换系数矩阵。示例性的,在采用变换核对(DCT2,DCT2)对残差系数矩阵进行初始变换时,初始变换过程可以参见公式(3)所示,矩阵A是DCT2(参见表1所示),矩阵B也是DCT2。在采用变换核对(DST7,DST7)对残差系数矩阵进行初始变换时,初始变换过程可以参见公式(3)所示,矩阵A是DST7(参见表1所示),矩阵B也是DST7。
关于采用变换核对(DCT2,DCT2)对残差系数矩阵进行初始变换,还是采用变换核对(DST7,DST7)对残差系数矩阵进行初始变换,可以采用如下方式:sr_x表示残差系数矩阵中最右面的非零变换系数的横坐标,sr_y表示残差系数矩阵中最下面的非零变换系数的纵坐标,sr_x和sr_y可以确定残差系数矩阵中所有非零变换系数对应的区域,超出该范围的区域都为0。若sr_x大于等于16或sr_y大于等于16时,编码端采用变换核对(DCT2,DCT2)对残差系数矩阵进行初始变换。否则,编码端通过RDO来选择采用变换核对(DCT2,DCT2)还是变换核对(DST7,DST7)。例如,若变换核对(DCT2,DCT2)的率失真代价值小于变换核对(DST7,DST7)的率失真代价值,则采用变换核对(DCT2,DCT2)对残差系数矩阵进行初始变换;若变换核对(DCT2,DCT2)的率失真代价值大于变换核对(DST7,DST7)的率失真代价值,则采用变换核对(DST7,DST7)对残差系数矩阵进行初始变换。
当然,上述只是对该残差系数矩阵进行初始变换,得到初始变换系数矩阵的示例,对此不做限制,只要能够对残差系数矩阵进行初始变换,得到初始变换系数矩阵即可。
步骤313,若当前块支持二次变换,当前块支持AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据当前块对应的率失真代价值,确定是否对当前块进行二次变换。
示例性的,若二次变换启用标志(如SecondaryTransformEnableFlag)的值为预设数值(如1),则确定当前块支持二次变换。二次变换启用标志的值为预设数值时,表示序列级或帧级允许启用二次变换,即允许当前块启用二次变换,因此,编码端确定当前块支持二次变换。
示例性的,若可选择的二次变换启用标志(如AstEnableFlag)的值为预设取值(如1),则确定当前块支持AST技术。可选择的二次变换启用标志为预设数值时,表示序列级或帧级允许启用AST技术,即允许当前块启用AST技术,因此,编码端确定当前块支持AST技术。
示例性的,若当前块不支持二次变换,则编码端确定对当前块不进行二次变换。若当前块支持二次变换,但是,当前块未支持AST技术,则编码端确定对当前块不进行二次变换。
若当前块支持二次变换,且当前块支持AST技术,则编码端判断当前块是否满足第一预设条件。若当前块不满足第一预设条件,则编码端确定对当前块不进行二次变换。
若当前块支持二次变换,且当前块支持AST技术,且当前块满足第一预设条件,则编码端确定当前块是否满足第二预设条件。若当前块不满足第二预设条件,则编码端直接确定对当前块进行二次变换,而不再采用RDO等方式决策是否进行二次变换。
若当前块支持二次变换,且当前块支持AST技术,且当前块满足第一预设条件,则编码端确定当前块是否满足第二预设条件。若当前块满足第二预设条件,则编码端根据当前块对应的率失真代价值,确定是否对当前块进行二次变换。例如,确定对当前块只进行初始变换时的第一率失真代价值,确定对当前块先进行初始变换再进行二次变换时的第二率失真代价值。若第二率失真代价值小于第一率失真代价值,则确定对当前块进行二次变换。若第二率失真代价值大于第一率失真代价值,则确定对当前块不进行二次变换。
在确定对当前块只进行初始变换时的第一率失真代价值时,编码端对残差系数矩阵进行初始变换,得到初始变换系数矩阵,基于初始变换系数矩阵确定当前块对应的第一率失真代价值,对此确定方式不做限制,可以采用RDO确定当前块对应的第一率失真代价值。
在确定对当前块先进行初始变换再进行二次变换时的第二率失真代价值时,编码端对残差系数矩阵进行初始变换,得到初始变换系数矩阵,并对初始变换系数矩阵进行二次变换,得到目标变换系数矩阵,基于目标变换系数矩阵确定当前块对应的第二率失真代价值,对此确定方式不做限制,可以采用RDO确定当前块对应的第二率失真代价值。
在上述实施例中,需要判断当前块是否满足第一预设条件,针对第一预设条件,在一种可能的实施方式中,第一预设条件可以包括但不限于以下条件中的至少一个:
条件1:当前块的预测模式为帧内预测模式。
条件2:当前块为亮度块。
条件3:当前块的初始变换系数矩阵中含有非零变换系数。
当前块的初始变换系数矩阵中含有非零变换系数是指:在对残差系数矩阵进行初始变换,得到初始变换系数矩阵后,若初始变换系数矩阵中的所有变换系数均为零,则说明初始变换系数矩阵中不含有非零变换系数,在此情况下,当前块的cbf标志位置为第一数值(如数值0),不需要编码当前块的变换系数。若初始变换系数矩阵中的所有变换系数不均为零(即任意一个或多个变换系数不为零),则说明初始变换系数矩阵中含有非零变换系数,在此情况下,当前块的cbf标志位置为第二数值(如数值1),需要编码当前块的变换系数。
条件4:当前块采用的帧内预测模式的模式号位于第一模式号区间,且当前块外部左边的参考样本可用;或者,当前块采用的帧内预测模式的模式号位于第二模式号区间,且当前块外部上边的参考样本可用。示例性的,第一模式号区间可以包括模式号0~模式号2,模式号13~模式号32,模式号44~模式号65。第二模式号区间可以包括模式号0~模式号23,模式号34~模式号57。当然,上述只是第一模式号区间和第二模式号区间的示例,对此不做限制。
条件5:当前块采用变换核对(DCT2,DCT2)进行初始变换;或者,当前块未采用变换核对(DST7,DST7)进行初始变换。或者,istTuflag等于第一取值(如0)。
参见步骤312,编码端采用变换核对(DCT2,DCT2)对残差系数矩阵进行初始变换,或采用变换核对(DST7,DST7)对残差系数矩阵进行初始变换。
若采用变换核对(DCT2,DCT2)对残差系数矩阵进行初始变换,则条件5满足,若采用变换核对(DST7,DST7)对残差系数矩阵进行初始变换,则条件5不满足。
示例性的,第一预设条件可以只包括条件1和条件2。或者,第一预设条件可以只包括条件1,条件2和条件5。或者,第一预设条件可以包括条件1,条件2和条件5,在此基础上,第一预设条件还可以包括条件4和/或条件5,当然,上述只是示例,对此不做限制。
第一预设条件包括条件4时,第一预设条件只包括条件4的一种情况即可,例如,第一预设条件可以包括当前块采用的帧内预测模式的模式号位于第一模式号区间,且当前块外部左边的参考样本可用。或者,第一预设条件可以包括当前块采用的帧内预测模式的模式号位于第二模式号区间,且当前块外部上边的参考样本可用。
第一预设条件包括条件5时,第一预设条件只包括条件5的一种情况即可,例如,第一预设条件可以包括当前块采用变换核对(DCT2,DCT2)进行初始变换。或者,第一预设条件可以包括当前块未采用变换核对(DST7,DST7)进行初始变换。
以下结合几个具体应用场景,对第一预设条件的不同情况进行说明。
应用场景1:第一预设条件可以包括:当前块的预测模式为帧内预测模式。
应用场景2:第一预设条件可以包括:当前块的预测模式为帧内预测模式。当前块为亮度块。
应用场景3:第一预设条件可以包括:当前块的预测模式为帧内预测模式。当前块为亮度块。当前块采用变换核对(DCT2,DCT2)进行初始变换。
应用场景4:第一预设条件可以包括:当前块的预测模式为帧内预测模式。当前块为亮度块。当前块未采用变换核对(DST7,DST7)进行初始变换。
应用场景5:在应用场景1-4中任一应用场景的基础上,第一预设条件还可以包括:当前块采用的帧内预测模式的模式号位于第一模式号区间,且当前块外部左边的参考样本可用。
应用场景6:在应用场景1-4中任一应用场景的基础上,第一预设条件还可以包括:当前块采用的帧内预测模式的模式号位于第二模式号区间,且当前块外部上边的参考样本可用。
应用场景7:在应用场景1-6中任一应用场景的基础上,第一预设条件还可以包括:当前块的初始变换系数矩阵中含有非零变换系数。
当然,上述应用场景1-应用场景7也只是第一预设条件的几个示例,对此第一预设条件不做限制。以应用场景3为例,当前块满足第一预设条件是指:若当前块的预测模式为帧内预测模式,当前块为亮度块,当前块采用变换核对(DCT2,DCT2)进行初始变换,则说明当前块满足第一预设条件。若当前块的预测模式不为帧内预测模式,则说明当前块不满足第一预设条件,或者,若当前块不为亮度块,则说明当前块不满足第一预设条件,或者,若当前块未采用变换核对(DCT2,DCT2)进行初始变换,则说明当前块不满足第一预设条件。
在上述实施例中,需要判断当前块是否满足第二预设条件,针对第二预设条件,在一种可能的实施方式中,第二预设条件可以包括但不限于以下条件中的至少一个:
条件a:当前块使用帧内预测滤波模式,或者,当前块不使用帧内预测滤波模式。
条件b:当前块支持DT划分模式;或者,当前块不支持DT划分模式。
条件c:当前块的宽度和高度满足第一尺寸条件。例如,若当前块的宽度小于或等于第一数值,且当前块的高度小于或等于第二数值,则当前块的宽度和高度满足第一尺寸条件。
例如,第一数值可以为32或者64,第二数值可以为32或者64,当然,32和64只是示例,对此不做限制,如第一数值还可以为128,第二数值还可以为128等。比如说,第一数值为32,第二数值为32,或者,第一数值可以为64,第二数值可以为64。
示例性的,第二预设条件可以只包括条件a。或者,第二预设条件可以只包括条件a和条件b。或者,第二预设条件可以只包括条件a和条件c。或者,第二预设条件可以只包括条件b。或者,第二预设条件可以只包括条件b和条件c。或者,第二预设条件可以包括条件a,条件b和条件c。当然,上述只是示例,对此不做限制。
第二预设条件包括条件a时,只包括条件a的一种情况即可,例如,第二预设条件包括当前块使用帧内预测滤波模式。或者,第二预设条件包括当前块不使用帧内预测滤波模式。
第二预设条件包括条件b时,只包括条件b的一种情况即可,例如,第二预设条件包括当前块支持DT划分模式。或者,第二预设条件包括当前块不支持DT划分模式。
以下结合几个具体应用场景,对第二预设条件的不同情况进行说明。
应用场景8:第二预设条件可以包括:当前块使用帧内预测滤波模式。
应用场景9:第二预设条件可以包括:当前块不使用帧内预测滤波模式。
应用场景10:第二预设条件可以包括:当前块支持DT划分模式。
应用场景11:第二预设条件可以包括:当前块不支持DT划分模式。
应用场景12:第二预设条件可以包括:当前块使用帧内预测滤波模式。当前块支持DT划分模式。
应用场景13:第二预设条件可以包括:当前块使用帧内预测滤波模式。当前块不支持DT划分模式。
应用场景14:第二预设条件可以包括:当前块不使用帧内预测滤波模式。当前块支持DT划分模式。
应用场景15:第二预设条件可以包括:当前块不使用帧内预测滤波模式。当前块不支持DT划分模式。
应用场景16:在应用场景8-15中任一应用场景的基础上,第二预设条件还可以包括:当前块的宽度和高度满足第一尺寸条件。
当然,上述应用场景8-应用场景16也只是第二预设条件的几个示例,对此第二预设条件不做限制。以应用场景12为例,当前块满足第二预设条件是指:若当前块使用帧内预测滤波模式,且当前块支持DT划分模式,则说明当前块满足第二预设条件。若当前块不使用帧内预测滤波模式,则说明当前块不满足第二预设条件,或者,若当前块不支持DT划分模式,则说明当前块不满足第二预设条件。
步骤314,若对当前块进行二次变换,则对初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换,得到目标变换系数矩阵;若对当前块不进行二次变换,则将初始变换系数矩阵确定为目标变换系数矩阵。至此,可以得到当前块的目标变换系数矩阵。
在一种可能的实施方式中,对初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换,可以包括但不限于:若当前块的宽度和高度满足第二尺寸条件,则基于第一指定尺寸的二次变换矩阵,对初始变换系数矩阵中位于左上角的第一指定区域的变换系数进行二次变换。若当前块的宽度和高度不满足第二尺寸条件,则基于第二指定尺寸的二次变换矩阵,对初始变换系数矩阵中位于左上角的第二指定区域的变换系数进行二次变换。
示例性的,第一指定区域的尺寸为第一指定尺寸,第二指定区域的尺寸为第二指定尺寸,第一指定尺寸大于第二指定尺寸。例如,第一指定尺寸为8*8;第二指定尺寸为4*4。当然,上述只是第一指定尺寸和第二指定尺寸的示例,对此第一指定尺寸和第二指定尺寸不做限制。
当前块的宽度和高度满足第二尺寸条件,可以包括但不限于:当前块的宽度大于等于第三数值,当前块的高度大于等于第四数值;或者,当前块的宽度大于等于第五数值,当前块的高度大于第六数值;或者,当前块的宽度大于第七数值,当前块的高度大于等于第八数值。
示例性的,上述第三数值,第四数值,第五数值,第六数值,第七数值,第八数值均可以根据经验进行配置,对这些数值均不做限制。例如,第三数值可以为8,也可以为16,第四数值可以为8,也可以为16,第五数值可以为8,也可以为16,第六数值可以为8,也可以为16,第七数值可以为8,也可以为16,第八数值可以为8,也可以为16。
综上所述,若当前块的宽度和高度满足第二尺寸条件(如当前块的宽度大于等于8,当前块的高度大于等于8),则基于尺寸为8*8的二次变换矩阵,对初始变换系数矩阵中位于左上角的第一指定区域(即尺寸为8*8的区域)的变换系数进行二次变换。若当前块的宽度和高度不满足第二尺寸条件,则基于尺寸为4*4的二次变换矩阵,对初始变换系数矩阵中位于左上角的第二指定区域(即尺寸为4*4的区域)的变换系数进行二次变换。
步骤315,根据目标变换系数矩阵进行编码,得到当前块的编码比特流。
步骤316,若对当前块进行二次变换,则在当前块的编码比特流中添加第一指示信息,第一指示信息用于指示对当前块进行二次变换。若对当前块不进行二次变换,则在当前块的编码比特流中添加第二指示信息,第二指示信息用于指示对当前块不进行二次变换。
示例性的,编码端可以显式的编码指示信息,通过该指示信息来表示是否对当前块进行二次变换。基于此,编码端在得到目标变换系数矩阵后,可以直接在当前块的编码比特流中编码该目标变换系数矩阵,并在当前块的编码比特流中添加第一指示信息或第二指示信息。
示例性的,目标变换系数矩阵经过熵编码过程变成编码比特流传到解码端,在根据目标变换系数矩阵进行编码的过程中,若当前块使用(DST7,DST7)变换核进行初始变换,则经过变换量化后的目标变换系数矩阵需要满足:sr_x和sr_y小于16,并且目标变换系数矩阵中所有非零变换系数的个数为奇数,用于表示当前块使用(DST7,DST7)变换核进行初始变换。或者,若当前块使用(DCT2,DCT2)变换核进行初始变换,则经过变换量化后的目标变换系数矩阵需要满足:sr_x或sr_y大于等于16,或者,目标变换系数矩阵中所有非零变换系数的个数为偶数,用于表示当前块使用(DCT2,DCT2)变换核进行初始变换。
示例性的,若当前块支持二次变换,当前块支持AST技术,当前块满足第一预设条件,当前块满足第二预设条件,根据当前块对应的率失真代价值确定是否对当前块进行二次变换后,在当前块的编码比特流中添加指示信息,例如,若对当前块进行二次变换,在编码比特流中添加第一指示信息,若对当前块不进行二次变换,在编码比特流中添加第二指示信息。
若当前块不支持二次变换,则确定对当前块不进行二次变换,但是不需要在当前块的编码比特流中添加指示信息。或者,若当前块支持二次变换,当前块不支持AST技术,则确定对当前块不进行二次变换,但是不需要在当前块的编码比特流中添加指示信息。或者,若当前块支持二次变换,当前块支持AST技术,当前块不满足第一预设条件,则确定对当前块不进行二次变换,但是不需要在当前块的编码比特流中添加指示信息。或者,若当前块支持二次变换,当前块支持AST技术,当前块满足第一预设条件,当前块不满足第二预设条件,则确定对当前块进行二次变换,但是不需要在当前块的编码比特流中添加指示信息。
在上述情况中,不需要在当前块的编码比特流中添加指示信息,是指不需要添加用于指示当前块不进行二次变换或者当前块进行二次变换的指示信息。
由以上技术方案可见,本申请实施例中,编码端可以根据第一预设条件和第二预设条件判断是否允许对当前块进行二次变换,若当前块满足第一预设条件,且当前块也满足第二预设条件,则允许对当前块进行二次变换,基于此,可以根据当前块对应的率失真代价值确定是否对当前块进行二次变换。若当前块不满足第一预设条件,则禁止对当前块进行二次变换,从而剔除不需要进行二次变换的块,起到去冗余的作用,提高编码性能。
实施例4:参见图3B所示,为解码方法的流程示意图,可以应用于解码端,该方法包括:
步骤321,获取当前块的编码比特流。
步骤322,若当前块支持二次变换,当前块支持AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则从该编码比特流中解析出指示信息,根据该指示信息确定是否对当前块进行二次逆变换。
示例性的,若二次变换启用标志(如SecondaryTransformEnableFlag)的值为预设数值(如1),则确定当前块支持二次变换。二次变换启用标志的值为预设数值时,表示序列级或帧级允许启用二次变换,即允许当前块启用二次变换,因此,解码端确定当前块支持二次变换。
示例性的,若可选择的二次变换启用标志(如AstEnableFlag)的值为预设取值(如1),则确定当前块支持AST技术。可选择的二次变换启用标志为预设数值时,表示序列级或帧级允许启用AST技术,即允许当前块启用AST技术,因此,解码端确定当前块支持AST技术。
示例性的,若当前块不支持二次变换,则解码端确定对当前块不进行二次逆变换。若当前块支持二次变换,但当前块未支持AST技术,则解码端确定对当前块不进行二次逆变换。
若当前块支持二次变换,且当前块支持AST技术,则解码端判断当前块是否满足第三预设条件。若当前块不满足第三预设条件,则解码端确定对当前块不进行二次逆变换。
若当前块支持二次变换,且当前块支持AST技术,且当前块满足第三预设条件,则解码端确定当前块是否满足第四预设条件。若当前块不满足第四预设条件,则确定对当前块进行二次逆变换,而不需要根据编码比特流中的指示信息,确定是否对当前块进行二次逆变换。
若当前块支持二次变换,且当前块支持AST技术,且当前块满足第三预设条件,则解码端确定当前块是否满足第四预设条件。若当前块满足第四预设条件,则解码端从该编码比特流中解析出指示信息,根据该指示信息确定是否对当前块进行二次逆变换。例如,编码端可以显式编码指示信息来表示是否对当前块进行二次变换。基于此,解码端从编码比特流中解析出指示信息。若该指示信息为第一指示信息,则确定对当前块进行二次逆变换;第一指示信息用于指示对当前块进行二次变换;或者,若该指示信息为第二指示信息,则确定对当前块不进行二次逆变换;第二指示信息用于指示对当前块不进行二次变换。
在上述实施例中,解码端需要判断当前块是否满足第三预设条件,针对第三预设条件,在一种可能的实施方式中,第三预设条件可以包括但不限于以下条件中的至少一个:
条件1:当前块的预测模式为帧内预测模式。
条件2:当前块为亮度块。
条件3:当前块的初始变换系数矩阵中含有非零变换系数。
示例性的,若初始变换系数矩阵中不含有非零变换系数,则当前块的cbf标志位为第一数值(如数值0),若初始变换系数矩阵中含有非零变换系数(即任意一个或多个变换系数不为零),则当前块的cbf标志位为第二数值(如数值1)。基于此,解码端可以从编码比特流中解析出cbf标志位,若cbf标志位为第一数值,则确定初始变换系数矩阵中不含有非零变换系数,即初始变换系数矩阵中的所有变换系数均为零。若cbf标志位为第二数值,则确定初始变换系数矩阵中含有非零变换系数,即初始变换系数矩阵中的所有变换系数不均为零。
条件4:当前块采用的帧内预测模式的模式号位于第一模式号区间,且当前块外部左边的参考样本可用;或者,当前块采用的帧内预测模式的模式号位于第二模式号区间,且当前块外部上边的参考样本可用。示例性的,第一模式号区间可以包括模式号0~模式号2,模式号13~模式号32,模式号44~模式号65。第二模式号区间可以包括模式号0~模式号23,模式号34~模式号57。当然,上述只是第一模式号区间和第二模式号区间的示例,对此不做限制。
条件5:当前块采用变换核对(DCT2,DCT2)进行初始逆变换;或,当前块未采用变换核对(DST7,DST7)进行初始逆变换。或者,istTuflag等于第一取值(如0)。
例如,若采用变换核对(DCT2,DCT2)进行初始逆变换,条件5满足,若采用变换核对(DST7,DST7)进行初始逆变换,条件5不满足。
示例性的,解码端确定当前块采用变换核对(DCT2,DCT2)进行初始逆变换,还是采用变换核对(DST7,DST7)进行初始逆变换,可以采用如下方式:解码端从编码比特流中解析得到sr_x和sr_y,当sr_x大于等于16或sr_y大于等于16时,解码端可以直接判定当前块采用变换核对(DCT2,DCT2)进行初始逆变换。当sr_x小于16且sr_y小于16时,则解码端可以确定目标变换系数矩阵中所有非零变换系数的个数的奇偶性。若该奇偶性为奇数,则解码端可以确定当前块采用变换核对(DST7,DST7)进行初始逆变换,若该奇偶性为偶数,则解码端可以确定当前块采用变换核对(DCT2,DCT2)进行初始逆变换。
当然,上述方式只是示例,对此不做限制,只要能够确定出当前块采用变换核对(DCT2,DCT2)进行初始逆变换,还是采用变换核对(DST7,DST7)进行初始逆变换即可。
示例性的,第三预设条件可以只包括条件1和条件2。或者,第三预设条件可以只包括条件1,条件2和条件5。或者,第三预设条件可以包括条件1,条件2和条件5,在此基础上,第三预设条件还可以包括条件4和/或条件5,当然,上述只是示例,对此不做限制。
示例性的,第三预设条件与第一预设条件类似,在此不再重复赘述。
在上述实施例中,需要判断当前块是否满足第四预设条件,针对第四预设条件,在一种可能的实施方式中,第四预设条件可以包括但不限于以下条件中的至少一个:
条件a:当前块使用帧内预测滤波模式,或者,当前块不使用帧内预测滤波模式。
条件b:当前块支持DT划分模式;或者,当前块不支持DT划分模式。
条件c:当前块的宽度和高度满足第一尺寸条件。例如,若当前块的宽度小于或等于第一数值,且当前块的高度小于或等于第二数值,则当前块的宽度和高度满足第一尺寸条件。
例如,第一数值可以为32或者64,第二数值可以为32或者64,当然,32和64只是示例,对此不做限制,如第一数值还可以为128,第二数值还可以为128等。比如说,第一数值为32,第二数值为32,或者,第一数值可以为64,第二数值可以为64。
示例性的,第四预设条件可以只包括条件a。或者,第四预设条件可以只包括条件a和条件b。或者,第四预设条件可以只包括条件a和条件c。或者,第四预设条件可以只包括条件b。或者,第四预设条件可以只包括条件b和条件c。或者,第四预设条件可以包括条件a,条件b和条件c。当然,上述只是示例,对此不做限制。
示例性的,第四预设条件与第二预设条件类似,在此不再重复赘述。
步骤323,从编码比特流中解析出当前块的目标变换系数矩阵。
步骤324,若对当前块进行二次逆变换,则对目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换,得到初始变换系数矩阵。若对当前块不进行二次逆变换,则将目标变换系数矩阵确定为初始变换系数矩阵。至此,得到当前块的初始变换系数矩阵。
示例性的,对目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换,可以包括但不限于:若当前块的宽度和高度满足第二尺寸条件,则可以基于第一指定尺寸的二次逆变换矩阵(二次逆变换矩阵与编码端进行二次变换时采用的二次变换矩阵,可以为同一个),对目标变换系数矩阵中位于左上角的第一指定区域的变换系数进行二次逆变换。若当前块的宽度和高度不满足第二尺寸条件,则可以基于第二指定尺寸的二次逆变换矩阵,对目标变换系数矩阵中位于左上角的第二指定区域的变换系数进行二次逆变换。
示例性的,第一指定区域的尺寸为第一指定尺寸,第二指定区域的尺寸为第二指定尺寸,第一指定尺寸大于第二指定尺寸。例如,第一指定尺寸为8*8;第二指定尺寸为4*4。当然,上述只是第一指定尺寸和第二指定尺寸的示例,对此第一指定尺寸和第二指定尺寸不做限制。
当前块的宽度和高度满足第二尺寸条件,可以包括但不限于:当前块的宽度大于等于第三数值,当前块的高度大于等于第四数值;或者,当前块的宽度大于等于第五数值,当前块的高度大于第六数值;或者,当前块的宽度大于第七数值,当前块的高度大于等于第八数值。
示例性的,上述第三数值,第四数值,第五数值,第六数值,第七数值,第八数值均可以根据经验进行配置,对这些数值均不做限制。例如,第三数值可以为8,也可以为16,第四数值可以为8,也可以为16,第五数值可以为8,也可以为16,第六数值可以为8,也可以为16,第七数值可以为8,也可以为16,第八数值可以为8,也可以为16。
综上所述,若当前块的宽度和高度满足第二尺寸条件(如当前块的宽度大于等于8,当前块的高度大于等于8),则基于尺寸为8*8的二次逆变换矩阵,对目标变换系数矩阵中位于左上角的第一指定区域(即尺寸为8*8的区域)的变换系数进行二次逆变换。若当前块的宽度和高度不满足第二尺寸条件,则基于尺寸为4*4的二次逆变换矩阵,对目标变换系数矩阵中位于左上角的第二指定区域(即尺寸为4*4的区域)的变换系数进行二次逆变换。
步骤325,对初始变换系数矩阵进行初始逆变换,得到当前块对应的残差系数矩阵。
示例性的,参见上述实施例中的条件8,解码端可以确定出当前块采用变换核对(DCT2,DCT2)进行初始逆变换,还是采用变换核对(DST7,DST7)进行初始逆变换,对此确定方式不再赘述。若采用变换核对(DCT2,DCT2)进行初始逆变换,则解码端可以采用变换核对(DCT2,DCT2)对初始变换系数矩阵进行初始逆变换,得到当前块对应的残差系数矩阵。或者,若采用变换核对(DST7,DST7)进行初始逆变换,则解码端可以采用变换核对(DST7,DST7)对初始变换系数矩阵进行初始逆变换,得到当前块对应的残差系数矩阵。
步骤326,根据该残差系数矩阵确定当前块的重建值。
例如,可以确定当前块对应的参考块,针对当前块的每个像素点,从参考块中确定与该像素点对应的参考点,并从残差系数矩阵中确定该像素点对应的残差系数值。根据该参考点的像素值与该残差系数值,就可以得到该像素点的重建值。当前块的所有像素点对应的重建值,就可以组成当前块的重建值。当然,上述方式只是示例,对此不做限制。
综上所述,解码端可以根据目标变换系数矩阵中所有非零变换系数的个数的奇偶性,及sr_x和sr_y得到istTuflag。若istTuflag等于0,表示当前块使用变换核对(DCT2,DCT2)进行初始逆变换,若istTuflag等于1,表示当前块使用变换核对(DST7,DST7)进行初始逆变换。当istTuflag等于0,且需要对当前块进行二次逆变换,则解码端对目标变换系数矩阵进行二次逆变换,得到初始变换系数矩阵,然后再对初始变换系数矩阵进行初始逆变换,得到残差系数矩阵。当istTuflag等于0,且不需要对当前块进行二次逆变换,则解码端将目标变换系数矩阵确定为初始变换系数矩阵,对初始变换系数矩阵进行初始逆变换,得到残差系数矩阵。当istTuflag等于1时,解码端将目标变换系数矩阵确定为初始变换系数矩阵,对初始变换系数矩阵进行初始逆变换,得到残差系数矩阵。
然后,可以残差系数矩阵确定当前块的重建值,对此重建过程不再赘述。
由以上技术方案可见,本申请实施例中,解码端可以根据第三预设条件和第四预设条件判断是否允许对当前块进行二次逆变换,比如说,若当前块满足第三预设条件,且当前块也满足第四预设条件,则允许对当前块进行二次逆变换,并根据当前块的编码比特流确定是否对当前块进行二次逆变换。若当前块不满足第三预设条件,则禁止对当前块进行二次逆变换,即解码端直接确定出当前块不进行二次逆变换,从而剔除不需要进行二次变换的块,起到去冗余的作用,从而提高编码性能。
实施例5:参见图4A所示,为编码方法的流程示意图,可以应用于编码端,该方法包括:
步骤411,获取当前块对应的残差系数矩阵。
步骤412,对该残差系数矩阵进行初始变换,得到初始变换系数矩阵。
步骤413,若当前块支持二次变换,当前块支持AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据当前块对应的率失真代价值,确定是否对当前块进行二次变换。
步骤414,若对当前块进行二次变换,则对初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换,得到目标变换系数矩阵;若对当前块不进行二次变换,则将初始变换系数矩阵确定为目标变换系数矩阵。至此,可以得到当前块的目标变换系数矩阵。
示例性的,步骤411-步骤414可以参见步骤311-步骤314,在此不再赘述。
步骤415,根据目标变换系数矩阵中的变换系数,确定目标变换系数矩阵的目标特征。
示例性的,目标特征可以为目标奇偶性,目标奇偶性可以包括但不限于:目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性;例如,若目标变换系数矩阵中存在30个奇数变换系数,则所有奇数变换系数的个数的奇偶性为偶数,即目标奇偶性为偶数。或者,目标变换系数矩阵中的所有偶数变换系数的个数的奇偶性;例如,若目标变换系数矩阵中存在25个偶数变换系数,则所有偶数变换系数的个数的奇偶性为奇数,即目标奇偶性为奇数。或者,目标变换系数矩阵中的所有变换系数的绝对值之和的奇偶性;例如,对目标变换系数矩阵中的所有变换系数的绝对值求和,若求和结果为奇数,则目标奇偶性为奇数,若求和结果为偶数,则目标奇偶性为偶数。当然,上述目标奇偶性只是几个示例,对此不做限制,如目标奇偶性还可以为绝对值为1的系数的个数的奇偶性,最后一个非零变换系数的奇偶性等。
目标特征还可以为目标正负性,目标正负性可以包括但不限于:目标变换系数矩阵中的最后一个非零变换系数的正负性;或者,目标变换系数矩阵中的第一个非零变换系数的正负性;或者,目标变换系数矩阵中的第N个非零变换系数的正负性,N的取值可以根据实际需要任意配置,对此不做限制。当然,上述目标正负性只是几个示例,对此目标正负性不做限制,如目标正负性可以为目标变换系数矩阵中的所有变换系数的绝对值之和的正负性等。
当然,目标奇偶性和目标正负性只是目标特征的两个示例,对此目标特征不做限制。为了方便描述,后续以目标奇偶性为例进行说明,其它目标特征的处理方式类似。
步骤416,根据目标特征和当前块的预设标志位的目标取值,确定是否对目标变换系数矩阵进行调整。示例性的,预设标志位的目标取值为第一取值时,用于指示对当前块进行二次变换,预设标志位的目标取值为第二取值时,用于指示对当前块不进行二次变换。
示例性的,编码端根据当前块对应的率失真代价值,确定是否对当前块进行二次变换之后,若对当前块进行二次变换,则可以将预设标志位的目标取值设置为第一取值,以指示对当前块进行二次变换。若对当前块不进行二次变换,则可以将预设标志位的目标取值设置为第二取值,以指示对当前块不进行二次变换。例如,第一取值可以为1,第二取值可以为0;或者,第一取值可以为0,第二取值可以为1;当然,上述只是示例,对此不做限制。
在一种可能的实施方式中,编码端和解码端可以约定目标奇偶性与二次变换的关系,例如,目标奇偶性为奇数时,表示对当前块进行二次变换,目标奇偶性为偶数时,表示对当前块不进行二次变换,即约定“奇数”与进行二次变换,“偶数”与不进行二次变换的关系。
在上述情况下,若目标奇偶性为奇数,且当前块的预设标志位的目标取值为第一取值,则确定对目标变换系数矩阵不进行调整,示例性的,若目标奇偶性为奇数,则表示对当前块进行二次变换,预设标志位的目标取值为第一取值,也表示对当前块进行二次变换,因此,对目标变换系数矩阵不进行调整。或者,若目标奇偶性为奇数,且当前块的预设标志位的目标取值为第二取值,则确定对目标变换系数矩阵进行调整,示例性的,若目标奇偶性为奇数,则表示对当前块进行二次变换,预设标志位的目标取值为第二取值,表示对当前块不进行二次变换,因此,对目标变换系数矩阵进行调整。或者,若目标奇偶性为偶数,且当前块的预设标志位的目标取值为第一取值,则确定对目标变换系数矩阵进行调整,示例性的,若目标奇偶性为偶数,则表示对当前块不进行二次变换,预设标志位的目标取值为第一取值,表示对当前块进行二次变换,因此,对目标变换系数矩阵进行调整。或者,若目标奇偶性为偶数,且当前块的预设标志位的目标取值为第二取值,则确定对目标变换系数矩阵不进行调整,示例性的,若目标奇偶性为偶数,则表示对当前块不进行二次变换,预设标志位的目标取值为第二取值,表示对当前块不进行二次变换,因此,对目标变换系数矩阵不进行调整。
在另一种可能的实施方式中,编码端和解码端可以约定目标奇偶性与二次变换的关系,例如,目标奇偶性为偶数时,表示对当前块进行二次变换,目标奇偶性为奇数时,表示对当前块不进行二次变换,即约定“偶数”与进行二次变换,“奇数”与不进行二次变换的关系。
在上述情况下,若目标奇偶性为偶数,且当前块的预设标志位的目标取值为第一取值,则确定对目标变换系数矩阵不进行调整,示例性的,若目标奇偶性为偶数,则表示对当前块进行二次变换,预设标志位的目标取值为第一取值,也表示对当前块进行二次变换,因此,对目标变换系数矩阵不进行调整。或者,若目标奇偶性为偶数,且当前块的预设标志位的目标取值为第二取值,则确定对目标变换系数矩阵进行调整,示例性的,若目标奇偶性为偶数,则表示对当前块进行二次变换,预设标志位的目标取值为第二取值,表示对当前块不进行二次变换,因此,对目标变换系数矩阵进行调整。或者,若目标奇偶性为奇数,且当前块的预设标志位的目标取值为第一取值,则确定对目标变换系数矩阵进行调整,示例性的,若目标奇偶性为奇数,则表示对当前块不进行二次变换,预设标志位的目标取值为第一取值,表示对当前块进行二次变换,因此,对目标变换系数矩阵进行调整。或者,若目标奇偶性为奇数,且当前块的预设标志位的目标取值为第二取值,则确定对目标变换系数矩阵不进行调整,示例性的,若目标奇偶性为奇数,则表示对当前块不进行二次变换,预设标志位的目标取值为第二取值,表示对当前块不进行二次变换,因此,对目标变换系数矩阵不进行调整。
示例性的,若不对目标变换系数矩阵进行调整,则执行步骤417。
示例性的,若对目标变换系数矩阵进行调整,则执行步骤418。
步骤417,对目标变换系数矩阵进行编码,得到当前块的编码比特流。
步骤418,对目标变换系数矩阵中的变换系数进行调整,以使调整后的目标变换系数矩阵的目标特征与预设标志位的目标取值相匹配。在对目标变换系数矩阵中的变换系数进行调整后,对调整后的目标变换系数矩阵进行编码,得到当前块的编码比特流。
例如,若编码端和解码端约定“奇数”与进行二次变换,“偶数”与不进行二次变换的关系,且目标奇偶性为奇数,当前块的预设标志位的目标取值为第二取值,基于此,可以对目标变换系数矩阵中的某个奇数变换系数进行调整,使得该奇数变换系数变更为偶数,如对该奇数变换系数进行加1处理,或减1处理,变更后的变换系数为偶数,不是0。或者,对目标变换系数矩阵中的某个偶数变换系数进行调整,使得该偶数变换系数变更为奇数,如对该偶数变换系数进行加1处理,或减1处理,变更后的变换系数为奇数,不是0。
经过上述处理,调整后的目标变换系数矩阵的目标奇偶性为偶数,“偶数”表示对当前块不进行二次变换,预设标志位的目标取值为第二取值,表示对当前块不进行二次变换,即调整后的目标变换系数矩阵的目标奇偶性与预设标志位的目标取值相匹配。
又例如,若目标奇偶性为偶数,当前块的预设标志位的目标取值为第一取值,基于此,可以对目标变换系数矩阵中的某个奇数变换系数进行调整,使得该奇数变换系数变更为偶数,如对该奇数变换系数进行加1处理,或减1处理。或者,对目标变换系数矩阵中的某个偶数变换系数进行调整,使得该偶数变换系数变更为奇数,如对该偶数变换系数进行加1处理,或减1处理。经过上述处理,调整后的目标变换系数矩阵的目标奇偶性为奇数,“奇数”表示对当前块进行二次变换,预设标志位的目标取值为第一取值,表示对当前块进行二次变换,即调整后的目标变换系数矩阵的目标奇偶性与预设标志位的目标取值相匹配。
又例如,若编码端和解码端约定“偶数”与进行二次变换,“奇数”与不进行二次变换的关系,则这种情况的调整过程与上述调整方式类似,在此不再重复赘述。
综上所述,编码端可以通过目标变换系数矩阵的目标特征(如奇偶性)来隐式表示是否对当前块进行二次变换,而不是通过指示信息来显式表示是否对当前块进行二次变换。
示例性的,在编码过程中,若当前块使用(DST7,DST7)变换核进行初始变换,则经过变换量化后的目标变换系数矩阵需要满足:sr_x和sr_y小于16,并且目标变换系数矩阵中所有非零变换系数的个数为奇数,用于表示当前块使用(DST7,DST7)变换核进行初始变换。或者,若当前块使用(DCT2,DCT2)变换核进行初始变换,则经过变换量化后的目标变换系数矩阵需要满足:sr_x或sr_y大于等于16,或者,目标变换系数矩阵中所有非零变换系数的个数为偶数,用于表示当前块使用(DCT2,DCT2)变换核进行初始变换。
示例性的,若当前块支持二次变换,当前块支持AST技术,当前块满足第一预设条件,当前块满足第二预设条件,根据当前块对应的率失真代价值确定是否对当前块进行二次变换后,执行步骤415-步骤418,通过隐式方式表示当前块进行二次变换或者不进行二次变换。
若当前块不支持二次变换,则确定对当前块不进行二次变换,但是不需要执行步骤415-步骤418,即不需要通过隐式方式表示当前块不进行二次变换。或者,若当前块支持二次变换,当前块不支持AST技术,则确定对当前块不进行二次变换,但是不需要执行步骤415-步骤418,即不需要通过隐式方式表示当前块不进行二次变换。或者,若当前块支持二次变换,当前块支持AST技术,当前块不满足第一预设条件,则确定对当前块不进行二次变换,但是不需要执行步骤415-步骤418,即不需要通过隐式方式表示当前块不进行二次变换。或者,若当前块支持二次变换,当前块支持AST技术,当前块满足第一预设条件,当前块不满足第二预设条件,则确定对当前块进行二次变换,但是不需要执行步骤415-步骤418,即不需要通过隐式方式表示当前块进行二次变换。
由以上技术方案可见,本申请实施例中,编码端可以根据第一预设条件和第二预设条件判断是否允许对当前块进行二次变换,若当前块满足第一预设条件,且当前块也满足第二预设条件,则允许对当前块进行二次变换,基于此,可以根据当前块对应的率失真代价值确定是否对当前块进行二次变换。若当前块不满足第一预设条件,则禁止对当前块进行二次变换,从而剔除不需要进行二次变换的块,起到去冗余的作用,提高编码性能。
实施例6:参见图4B所示,为解码方法的流程示意图,可以应用于解码端,该方法包括:
步骤421,获取当前块的编码比特流,从编码比特流中解析当前块的目标变换系数矩阵。
步骤422,若当前块支持二次变换,当前块支持AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据目标变换系数矩阵中的变换系数,确定目标变换系数矩阵的目标特征。
示例性的,目标特征可以包括但不限于目标奇偶性或者目标正负性。当然,目标奇偶性和目标正负性只是目标特征的两个示例,对此目标特征不做限制。其中,目标奇偶性可以包括但不限于:目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性;或者,目标变换系数矩阵中的所有偶数变换系数的个数的奇偶性;或者,目标变换系数矩阵中的所有变换系数的绝对值之和的奇偶性。当然,上述只是几个示例,对此不做限制,如目标奇偶性还可以为绝对值为1的系数的个数的奇偶性,最后一个非零变换系数的奇偶性等。目标正负性可以包括但不限于:目标变换系数矩阵中的最后一个非零变换系数的正负性;或者,目标变换系数矩阵中的第一个非零变换系数的正负性;或者,目标变换系数矩阵中的第N个非零变换系数的正负性,N的取值任意配置。当然,上述目标正负性只是几个示例,对此不做限制,如目标正负性可以为目标变换系数矩阵中的所有变换系数的绝对值之和的正负性等。
为了方便描述,后续以目标奇偶性为例进行说明,其它目标特征的处理方式类似。
在得到目标变换系数矩阵后,可以根据目标变换系数矩阵中的变换系数,确定目标变换系数矩阵的目标奇偶性。例如,假设目标奇偶性为目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性,若目标变换系数矩阵中存在30个奇数变换系数,则目标奇偶性为偶数。
步骤423,根据该目标特征确定当前块的预设标志位的目标取值。
示例性的,该预设标志位的目标取值为第一取值时,用于指示对当前块进行二次逆变换,该预设标志位的目标取值为第二取值时,用于指示对当前块不进行二次逆变换。
在一种可能的实施方式中,解码端和编码端可以约定目标奇偶性与二次逆变换的关系,例如,目标奇偶性为奇数时,表示对当前块进行二次逆变换,目标奇偶性为偶数时,表示对当前块不进行二次逆变换,即约定“奇数”与进行二次逆变换,“偶数”与不进行二次逆变换的关系。若目标变换系数矩阵的目标奇偶性为奇数,则确定当前块的预设标志位的目标取值为第一取值。示例性的,若目标奇偶性为奇数,则表示对当前块进行二次逆变换,预设标志位的目标取值为第一取值,也表示对当前块进行二次逆变换,即目标奇偶性与目标取值匹配。若目标变换系数矩阵的目标奇偶性为偶数,则确定当前块的预设标志位的目标取值为第二取值。示例性的,若目标奇偶性为偶数,则表示对当前块不进行二次逆变换,预设标志位的目标取值为第二取值,也表示对当前块不进行二次逆变换,即目标奇偶性与目标取值匹配。
在另一种可能的实施方式中,解码端和编码端可以约定目标奇偶性与二次逆变换的关系,例如,目标奇偶性为偶数时,表示对当前块进行二次逆变换,目标奇偶性为奇数时,表示对当前块不进行二次逆变换,即约定“偶数”与进行二次逆变换,“奇数”与不进行二次逆变换的关系。若目标变换系数矩阵的目标奇偶性为偶数,则确定当前块的预设标志位的目标取值为第一取值。示例性的,若目标奇偶性为偶数,则表示对当前块进行二次逆变换,预设标志位的目标取值为第一取值,也表示对当前块进行二次逆变换,即目标奇偶性与目标取值匹配。若目标变换系数矩阵的目标奇偶性为奇数,则确定当前块的预设标志位的目标取值为第二取值。示例性的,若目标奇偶性为奇数,则表示对当前块不进行二次逆变换,预设标志位的目标取值为第二取值,也表示对当前块不进行二次逆变换,即目标奇偶性与目标取值匹配。
步骤424,根据预设标志位的目标取值确定是否对当前块进行二次逆变换。
示例性的,若预设标志位的目标取值为第一取值,则可以确定对当前块进行二次逆变换;若预设标志位的目标取值为第二取值,则可以确定对当前块不进行二次逆变换。
步骤425,若对当前块进行二次逆变换,则对目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换,得到初始变换系数矩阵。若对当前块不进行二次逆变换,则将目标变换系数矩阵确定为初始变换系数矩阵。至此,得到当前块的初始变换系数矩阵。
步骤426,对初始变换系数矩阵进行初始逆变换,得到当前块对应的残差系数矩阵。
步骤427,根据该残差系数矩阵确定当前块的重建值。
示例性的,步骤421-步骤422,步骤425-步骤427,可以参见实施例4,在此不再赘述。
综上所述,解码端可以根据目标变换系数矩阵中所有非零变换系数的个数的奇偶性,及sr_x和sr_y得到istTuflag。若istTuflag等于0,表示当前块使用变换核对(DCT2,DCT2)进行初始逆变换,若istTuflag等于1,表示当前块使用变换核对(DST7,DST7)进行初始逆变换。当istTuflag等于0,且当前块满足第三预设条件和第四预设条件,则解码端根据目标变换系数矩阵的目标奇偶性确定是否对目标变换系数矩阵进行二次逆变换。当istTuflag等于0,且当前块不满足第三预设条件,则解码端确定对目标变换系数矩阵不进行二次逆变换。当istTuflag等于0,且当前块满足第三预设条件,但是不满足第四预设条件,则解码端确定对目标变换系数矩阵进行二次逆变换。当istTuflag等于1时,解码端确定当前块不满足第三预设条件,对目标变换系数矩阵不进行二次逆变换。
若需要对目标变换系数矩阵进行二次逆变换,则解码端对目标变换系数矩阵进行二次逆变换,得到初始变换系数矩阵,然后再对初始变换系数矩阵进行初始逆变换,得到残差系数矩阵。若对目标变换系数矩阵不进行二次逆变换,则解码端将目标变换系数矩阵确定为初始变换系数矩阵,对初始变换系数矩阵进行初始逆变换,得到残差系数矩阵。
然后,可以残差系数矩阵确定当前块的重建值,对此重建过程不再赘述。
由以上技术方案可见,本申请实施例中,解码端可以根据第三预设条件和第四预设条件判断是否允许对当前块进行二次逆变换,比如说,若当前块满足第三预设条件,且当前块也满足第四预设条件,则允许对当前块进行二次逆变换,并根据当前块的编码比特流确定是否对当前块进行二次逆变换。若当前块不满足第三预设条件,则禁止对当前块进行二次逆变换,即解码端直接确定出当前块不进行二次逆变换,从而剔除不需要进行二次变换的块,起到去冗余的作用,从而提高编码性能。
实施例7:在实施例1-实施例4中,针对编码端来说,可以通过RDO来确定是否对当前块进行二次变换,并显式编码指示信息(如secTuflag)来表示是否对当前块进行二次变换,例如,secTuflag的取值为第一取值时,表示对当前块进行二次变换,secTuflag的取值为第二取值时,表示对当前块不进行二次变换。针对解码端来说,在获取到编码比特流后,可以从编码比特流中解析出当前块的指示信息(如secTuflag),若secTuflag的取值为第一取值,则确定对当前块进行二次逆变换,若secTuflag的取值为第二取值,则确定对当前块不进行二次逆变换。以下结合几个具体应用场景,对编码指示信息的实现方式进行说明。
应用场景1:针对编码端来说,若当前块支持二次变换,当前块支持AST技术,当前块满足第一预设条件,则判断当前块是否满足第二预设条件,若当前块满足第二预设条件,则可以根据当前块对应的率失真代价值,确定是否对当前块进行二次变换。若当前块不满足第二预设条件,则可以确定对当前块进行二次变换。然后,在根据当前块对应的率失真代价值,确定是否对当前块进行二次变换时,若对当前块进行二次变换,则可以在当前块的编码比特流中添加secTuflag(即指示信息),且secTuflag的取值为第一取值,第一取值用于表示对当前块进行二次变换。若对当前块不进行二次变换,则在当前块的编码比特流中添加secTuflag,且secTuflag的取值为第二取值,第二取值用于表示对当前块不进行二次变换。
示例性的,若当前块使用变换核对(DCT2,DCT2)进行初始变换,则经过变换量化后的目标变换系数矩阵需要满足:sr_x大于等于16或sr_y大于等于16,或者,目标变换系数矩阵中所有非零变换系数的个数为偶数,用于表示当前块使用(DCT2,DCT2)变换核进行初始变换。或者,若当前块使用(DST7,DST7)变换核进行初始变换,则经过变换量化后的目标变换系数矩阵需要满足:sr_x和sr_y小于16,并且目标变换系数矩阵中所有非零变换系数的个数为奇数,用于表示当前块使用(DST7,DST7)变换核进行初始变换。
针对解码端来说,根据目标变换系数矩阵中所有非零变换系数的个数的奇偶性,及sr_x和sr_y得到istTuflag。若istTuflag等于0,表示当前块使用变换核对(DCT2,DCT2)进行初始逆变换,若istTuflag等于1,表示当前块使用变换核对(DST7,DST7)进行初始逆变换。
若当前块支持二次变换,当前块支持AST技术,当前块满足第三预设条件,则判断当前块是否满足第四预设条件,若当前块不满足第四预设条件,则解码端确定对当前块进行二次逆变换,此时不需要解码指示信息(secTuflag)。若当前块满足第四预设条件,则解码端可以从编码比特流中解析出secTuflag(即指示信息),基于secTuflag确定是否对当前块进行二次逆变换,例如,若secTuflag的取值为第一取值,则确定对当前块进行二次逆变换。若secTuflag的取值为第二取值,则确定对当前块不进行二次逆变换。
若对当前块进行二次逆变换,则对目标变换系数矩阵进行二次逆变换,得到初始变换系数矩阵。若对当前块不进行二次逆变换,则将目标变换系数矩阵确定为初始变换系数矩阵。然后,根据初始变换系数矩阵可以得到残差块,而残差块与预测块相加可以得到重建块。
在上述实施例中,第一预设条件或第三预设条件可以包括但不限于:当前块的预测模式为帧内预测模式;当前块为亮度块;当前块的初始变换系数矩阵中含有非零变换系数(如当前块的cbf标志位为第二数值1)。第二预设条件或第四预设条件可以包括但不限于:当前块不使用帧内预测滤波模式(ipf_flag=0);当前块不支持DT划分模式(或当前块支持DT划分模式)。可选地,第二预设条件或第四预设条件还可以包括:前块的宽度和高度满足第一尺寸条件。例如,当前块的宽度W和高度H满足:W<=n1且H<=n2,示例性的,n1和n2可以为:n1=n2=32,或者,n1=n2=64。
应用场景2:针对编码端来说,若当前块支持二次变换,当前块支持AST技术,当前块满足第一预设条件,则需要判断当前块是否满足第二预设条件,若当前块满足第二预设条件,则可以根据当前块对应的率失真代价值,确定是否对当前块进行二次变换。然后,若对当前块进行二次变换,则可以在当前块的编码比特流中添加secTuflag(即指示信息),且secTuflag的取值为第一取值,第一取值用于表示对当前块进行二次变换。若对当前块不进行二次变换,则在当前块的编码比特流中添加secTuflag,且secTuflag的取值为第二取值,第二取值用于表示对当前块不进行二次变换。
针对解码端来说,若当前块支持二次变换,当前块支持AST技术,当前块满足第三预设条件,则判断当前块是否满足第四预设条件,若当前块满足第四预设条件,则从编码比特流中解析出secTuflag(即指示信息),基于secTuflag确定是否对当前块进行二次逆变换,例如,若secTuflag的取值为第一取值,则确定对当前块进行二次逆变换。若secTuflag的取值为第二取值,则确定对当前块不进行二次逆变换。
在上述实施例中,第一预设条件或第三预设条件可以包括但不限于:当前块的预测模式为帧内预测模式;当前块为亮度块;当前块的初始变换系数矩阵中含有非零变换系数(如当前块的cbf标志位为第二数值1)。第二预设条件或第四预设条件可以包括但不限于:当前块使用帧内预测滤波模式(ipf_flag=1);当前块不支持DT划分模式(或当前块支持DT划分模式)。可选地,第二预设条件或第四预设条件还可以包括:前块的宽度和高度满足第一尺寸条件。例如,当前块的宽度W和高度H满足:W<=n1且H<=n2,示例性的,n1和n2可以为:n1=n2=32,或者,n1=n2=64。
应用场景3:在应用场景1或应用场景2的基础上,针对编码端来说,若确定需要对当前块进行二次变换,则基于当前块的尺寸限制条件对当前块进行二次变换。例如,若当前块的宽度和高度满足第二尺寸条件,则对初始变换系数矩阵中位于左上角的第一指定区域(如8*8区域)的变换系数进行二次变换。若当前块的宽度和高度不满足第二尺寸条件,则对初始变换系数矩阵中位于左上角的第二指定区域(如4*4区域)的变换系数进行二次变换。
示例性的,编码端在对位于左上角的第一指定区域(如8*8区域)的变换系数进行二次变换时,使用的二次变换矩阵是8*8的二次变换矩阵。在对位于左上角的第二指定区域(如4*4区域)的变换系数进行二次变换时,使用的二次变换矩阵是4*4的二次变换矩阵。
针对解码端来说,若确定需要对当前块进行二次逆变换,则可以基于当前块的尺寸限制条件对当前块进行二次逆变换。例如,若当前块的宽度和高度满足第二尺寸条件,则可以对目标变换系数矩阵中位于左上角的第一指定区域(如8*8区域)的变换系数进行二次逆变换。若当前块的宽度和高度不满足第二尺寸条件,则可以对目标变换系数矩阵中位于左上角的第二指定区域(如4*4区域)的变换系数进行二次逆变换。示例性的,解码端在对位于左上角的第一指定区域(如8*8区域)的变换系数进行二次逆变换时,使用的二次逆变换矩阵是8*8的二次逆变换矩阵。在对位于左上角的第二指定区域(如4*4区域)的变换系数进行二次逆变换时,使用的二次逆变换矩阵是4*4的二次逆变换矩阵。
示例性的,上述8*8的二次变换矩阵与8*8的二次逆变换矩阵可以相同,即二者为同一个矩阵。上述4*4的二次变换矩阵与4*4的二次逆变换矩阵可以相同。
示例性的,当前块的宽度W和高度H满足第二尺寸条件,可以为以下条件的至少一种:
条件1:W>=n3,且H>=n4,例如,W>=8,H>=8。
条件2:W>=n5,且H>n6,例如,W>=8,且H>8。
条件3:W>n7,且H>=n8,例如,W>8,且H>=8。
实施例8:在实施例1,实施例2,实施例5,实施例6中,针对编码端来说,可以通过RDO来确定是否对当前块进行二次变换,并通过目标变换系数矩阵的目标特征(如目标奇偶性等)来隐式表示是否对当前块进行二次变换,而不是通过指示信息来显式表示是否对当前块进行二次变换。针对解码端来说,获取到编码比特流后,从编码比特流中解析出目标变换系数矩阵,并根据目标变换系数矩阵的目标特征确定当前块的预设标志位的目标取值(如secTuflag),即推导出当前块的预设标志位的目标取值。若预设标志位的目标取值为第一取值,则确定对当前块进行二次逆变换。若预设标志位的目标取值为第二取值,则确定对当前块不进行二次逆变换。以下结合几个具体应用场景,对隐式表示的实现方式进行说明。
应用场景4:针对编码端来说,若当前块支持二次变换,当前块支持AST技术,当前块满足第一预设条件,则需要判断当前块是否满足第二预设条件,若当前块满足第二预设条件,则根据当前块对应的率失真代价值,确定是否对当前块进行二次变换。若当前块不满足第二预设条件,则确定对当前块进行二次变换。然后,在根据当前块对应的率失真代价值,确定是否对当前块进行二次变换时,若对当前块进行二次变换,则将目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性(或所有偶数变换系数的个数的奇偶性)调整为偶数。若对当前块不进行二次变换,则将目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性调整为奇数。
针对解码端来说,若当前块支持二次变换,当前块支持AST技术,当前块满足第三预设条件,则判断当前块是否满足第四预设条件,若当前块不满足第四预设条件,则解码端可以确定对当前块进行二次逆变换。若当前块满足第四预设条件,则解码端确定目标变换系数矩阵中的所有奇数变换系数的个数(num_odd)的奇偶性,并根据该num_odd来导出secTuflag,基于secTuflag确定是否对当前块进行二次逆变换。例如,若该num_odd为偶数,则导出secTuflag的取值为第一取值(如0),此时,解码端确定对当前块进行二次逆变换。若该num_odd为奇数,则导出secTuflag的取值为第二取值(如1),此时,解码端确定对当前块不进行二次逆变换。
在上述实施例中,第一预设条件或第三预设条件可以包括:当前块的预测模式为帧内预测模式;当前块为亮度块;当前块的初始变换系数矩阵中含有非零变换系数。第二预设条件或第四预设条件可以包括:当前块不使用帧内预测滤波模式(ipf_flag=0);当前块不支持DT划分模式(或当前块支持DT划分模式)。可选地,第二预设条件或第四预设条件还可以包括:前块的宽度和高度满足第一尺寸条件。
应用场景5:针对编码端来说,若当前块支持二次变换,当前块支持AST技术,当前块满足第一预设条件,则需要判断当前块是否满足第二预设条件,若当前块满足第二预设条件,则根据当前块对应的率失真代价值,确定是否对当前块进行二次变换。若对当前块进行二次变换,则将目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性(或所有偶数变换系数的个数的奇偶性)调整为偶数。若对当前块不进行二次变换,则将目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性调整为奇数。
针对解码端来说,若当前块支持二次变换,当前块支持AST技术,当前块满足第四预设条件,则判断当前块是否满足第四预设条件,若当前块满足第四预设条件,则解码端确定目标变换系数矩阵中的所有奇数变换系数的个数(num_odd)的奇偶性,并根据该num_odd来导出secTuflag,基于secTuflag确定是否对当前块进行二次逆变换。例如,若该num_odd为偶数,则导出secTuflag的取值为第一取值(如0),此时,解码端确定对当前块进行二次逆变换。若该num_odd为奇数,则导出secTuflag的取值为第二取值(如1),此时,解码端确定对当前块不进行二次逆变换。
在上述实施例中,第一预设条件或第三预设条件可以包括:当前块的预测模式为帧内预测模式;当前块为亮度块;当前块的初始变换系数矩阵中含有非零变换系数。第二预设条件或第四预设条件可以包括:当前块使用帧内预测滤波模式(ipf_flag=1);当前块不支持DT划分模式(或当前块支持DT划分模式)。可选地,第二预设条件或第四预设条件还可以包括:前块的宽度和高度满足第一尺寸条件。
应用场景6:针对编码端来说,若对当前块进行二次变换,则将目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性调整为奇数。若对当前块不进行二次变换,则将目标变换系数矩阵中的所有奇数变换系数的个数的奇偶性调整为偶数。针对解码端来说,确定目标变换系数矩阵中的所有奇数变换系数的个数(num_odd)的奇偶性,并根据该num_odd来导出secTuflag,基于secTuflag确定是否对当前块进行二次逆变换。例如,若num_odd为奇数,则导出secTuflag的取值为第一取值(如0),确定对当前块进行二次逆变换。若num_odd为偶数,则导出secTuflag的取值为第二取值(如1),确定对当前块不进行二次逆变换。
编码端确定是否对当前块进行二次变换,可以参见应用场景4或应用场景5,解码端确定是否对当前块进行二次变换,可以参见应用场景4或应用场景5,在此不再赘述。
应用场景7:在应用场景4-应用场景6的基础上,针对编码端来说,若确定需要对当前块进行二次变换,则基于当前块的尺寸限制条件对当前块进行二次变换。例如,若当前块的宽度和高度满足第二尺寸条件,则对初始变换系数矩阵中位于左上角的第一指定区域(如8*8区域)的变换系数进行二次变换。若当前块的宽度和高度不满足第二尺寸条件,则对初始变换系数矩阵中位于左上角的第二指定区域(如4*4区域)的变换系数进行二次变换。
示例性的,针对解码端来说,若确定需要对当前块进行二次逆变换,则可以基于当前块的尺寸限制条件对当前块进行二次逆变换。例如,若当前块的宽度和高度满足第二尺寸条件,则可以对目标变换系数矩阵中位于左上角的第一指定区域(如8*8区域)的变换系数进行二次逆变换。若当前块的宽度和高度不满足第二尺寸条件,则可以对目标变换系数矩阵中位于左上角的第二指定区域(如4*4区域)的变换系数进行二次逆变换。
实施例9:在上述实施例1-实施例8中,涉及帧内预测滤波(Intra PredictionFilter,IPF),以下对帧内预测滤波技术进行说明。帧内预测滤波可以使用1比特表示是否允许对当前块使用帧内预测滤波,可以在RDO阶段确定是否需要对当前块使用帧内预测滤波。另外,帧内预测滤波技术需要根据当前块的帧内预测模式选择参考像素,可以分为以下三种情况。
情况1:对于DC模式,Plane模式和Bilinear模式,使用左侧的一列重建像素和上侧的一行重建像素作为参考像素,使用3抽头滤波器,如可以采用如下公式进行帧内预测滤波:
P′(x,y)=f(x)·P(-1,y)+f(y)·P(x,-1)+(1-f(x)-f(y))·P(x,y)
在上述公式中,0≤x,y<N,P′(x,y)为滤波后的帧内预测值,P(x,y)为常规帧内预测模式得到的帧内预测值,f(x)和f(y)为滤波系数,N为当前块的尺寸。
情况2:对于HPM中的竖直预测模式(如模式3~模式18),使用左侧的一列重建像素作为参考像素,使用2抽头滤波器,例如,可以采用如下公式进行帧内预测滤波:
P′(x,y)=f(x)·P(-1,y)+(1-f(x))·P(x,y)
在上述公式中,x<N,P′(x,y)可以为滤波后的帧内预测值,P(x,y)可以为常规帧内预测模式得到的帧内预测值,f(x)和f(y)可以为滤波系数,N为当前块的尺寸。
情况3:对于HPM中的水平预测模式(如模式19~模式32),使用上侧的一行重建像素作为参考像素,使用2抽头滤波器,例如,可以采用如下公式进行帧内预测滤波:
P′(x,y)=f(y)·P(x,-1)+(1-f(y))·P(x,y)
在上述公式中,y<N,P′(x,y)可以为滤波后的帧内预测值,P(x,y)可以为常规帧内预测模式得到的帧内预测值,f(x)和f(y)可以为滤波系数,N为当前块的尺寸。
示例性的,针对情况1、情况2和情况3,为了避免浮点运算,还可以将滤波系数定点化,如针对情况1的帧内预测滤波公式,可以替换为如下公式,在如下公式中,F(x)和F(y)是定点化之后的系数,即将f(x)和f(y)转换为F(x)和F(y),情况2和情况3类似,在此不再赘述。
p′(x)=(F(x)·p(-1,y)+F(y)·p(x,-1)+(64-F(x)-F(y))·p(x)+32)>>6
示例性的,F(x)和F(y)可以为滤波系数(即经过放大之后的滤波器系数),参见表3所示,示出了滤波系数的一个示例,该滤波系数与块尺寸和距离参考像素的距离均有关系。在表3中,预测块尺寸表示当前块的宽度或者高度,距离参考像素的距离表示预测距离,表3中将最大预测距离设为10,在实际应用中,最大预测距离还可以更大,对此不做限制。
表3
例如,针对当前块的第一行第3列的像素位置A,假设参考像素为左侧的一列重建像素,则像素位置A与参考像素的距离为3,假设当前块的尺寸为4*4,则滤波系数可以为2,假设当前块的尺寸为8*8,则滤波系数可以为14,假设当前块的尺寸为16*16,则滤波系数可以为19,假设当前块的尺寸为32*32,则滤波系数可以为21,以此类推。针对其它像素位置,滤波系数的确定方式与像素位置A的滤波系数的确定方式类似,在此不再赘述。
实施例10:在上述实施例1-实施例8中,涉及编码端对位于左上角的4*4区域的变换系数进行二次变换,或者,解码端对位于左上角的4*4区域的变换系数进行二次逆变换。从编码端来说,是经过(DCT2,DCT2)变换后得到变换系数,然后对左上角的4*4的变换系数,再与二次变换矩阵相乘得到新变换系数,然后再进行量化和熵编码。从解码端来说,对于从码流熵解码得到的变换系数经过反量化后,对于左上角的4*4区域先进行二次逆变换,得到新变换系数,然后对整个变换块使用(DCT2,DCT2)进行逆变换,得到残差系数。
在一种可能的实施方式中,二次变换具体解码端反变换过程如下:
情况一、如果当前块的宽度或者高度的值大于4,且二次变换启用标志的值等于1(二次变换启用标志的值等于1,表示序列级或者帧级允许启用二次变换),则对系数矩阵执行以下操作:首先,由变换系数矩阵得到左上角4*4的系数矩阵C:cij=coeffij,i=0~3,j=0~3,在上述公式中,cij是矩阵C的元素,coeffij是变换系数矩阵的元素。
示例性的,如果帧内预测模式的值为0~2,或13~32,或44~65,且当前块外部左边的参考样本“可用”,则:cij=Clip3(-32768,32767,(pij+26)>>7),i=0~3,j=0~3。pij是4*4的矩阵P的元素,矩阵P的计算方式如下:P=C×S4,S4是4*4逆变换矩阵,Clip3(-32768,32767,(pij+26)>>7)表示,若cij的值位于-32768与32767之间,则cij的值为(pij+26)>>7,若cij的值小于-32768,则cij的值为-32768,若cij的值大于32767,则cij的值为32767。
示例性的,如果帧内预测模式的值为0~23,或34~57,且当前块外部上边的参考样本“可用”,则:cij=Clip3(-32768,32767,(qij+26)>>7),i=0~3,j=0~3。qij是4×4矩阵Q的元素,矩阵Q的计算方式如下:Q=S4 T×C,S4 T是S4的转置矩阵,S4是4*4逆变换矩阵。
然后,根据矩阵C修改变换系数矩阵的元素的值:coeffij=cij,i=0~3,j=0~3。
然后,对矩阵coeff进行初始逆变换。
情况二、如果当前块的宽度和高度的值均等于4,且二次变换启用标志的值等于1(二次变换启用标志的值等于1,表示序列级或者帧级允许启用二次变换),则对系数矩阵执行以下操作:首先,对变换系数矩阵进行如下垂直反变换,得到矩阵K:kij=Clip3(-32768,32767,(vij+24)>>5),i=0~M1-1,j=0~M2-1,vij是矩阵V的元素,kij是矩阵K的元素。矩阵V的计算如下:V=D4 T×CoeffMatrix,D4 T是反变换矩阵D4的转置矩阵,CoeffMatrix为变换系数。
然后,对矩阵K进行如下水平反变换,得到矩阵H:hij=Clip3(-MaxValue-1,MaxValue,(wij+2shift1-1)>>shift1),i=0~M1-1,j=0~M2-1,wi,j是矩阵W的元素,hij是矩阵H的元素。MaxValue的值为(1<<BitDepth)-1,shift1等于22-BitDepth,矩阵W为:W=K×D4,D4是反变换矩阵。
示例性的,对于4*4的块,进行完二次变换的逆变换后不需要再进行初始逆变换。
实施例11:在上述实施例1-实施例8中,涉及编码端对位于左上角的8*8区域的变换系数进行二次变换,或者,解码端对位于左上角的8*8区域的变换系数进行二次逆变换。从编码端来说,是经过(DCT2,DCT2)变换后得到变换系数,然后对左上角的8*8的变换系数,再与二次变换矩阵相乘得到新变换系数,然后再进行量化和熵编码。从解码端来说,对于从码流熵解码得到的变换系数经过反量化后,对于左上角的8*8区域先进行二次逆变换,得到新变换系数,然后对整个变换块使用(DCT2,DCT2)进行逆变换,得到残差系数。
在一种可能的实施方式中,二次变换具体解码端反变换过程如下:
情况一、如果当前块的宽度或者高度的值大于8,且二次变换启用标志的值等于1(二次变换启用标志的值等于1,表示序列级或者帧级允许启用二次变换),则对系数矩阵执行以下操作:首先,由变换系数矩阵得到左上角8*8的系数矩阵C:cij=coeffij,i=0~7,j=0~7,在上述公式中,cij是矩阵C的元素,coeffij是变换系数矩阵的元素。
示例性的,如果帧内预测模式的值为0~2,或13~32,或44~65,且当前块外部左边的参考样本“可用”,则:cij=Clip3(-32768,32767,(pij+26)>>7),i=0~7,j=0~7。pij是8*8的矩阵P的元素,矩阵P的计算方式如下:P=C×S8,S8是8*8逆变换矩阵,Clip3(-32768,32767,(pij+26)>>7)表示,若cij的值位于-32768与32767之间,则cij的值为(pij+26)>>7,若cij的值小于-32768,则cij的值为-32768,若cij的值大于32767,则cij的值为32767。
示例性的,如果帧内预测模式的值为0~23,或34~57,且当前块外部上边的参考样本“可用”,则:cij=Clip3(-32768,32767,(qij+26)>>7),i=0~7,j=0~7。qij是8×8矩阵Q的元素,矩阵Q的计算方式如下:Q=S8 T×C,S8 T是S8的转置矩阵,S8是8*8逆变换矩阵。
然后,根据矩阵C修改变换系数矩阵的元素的值:coeffij=cij,i=0~7,j=0~7。
然后,对矩阵coeff进行初始逆变换。
情况二、如果当前块的宽度和高度的值均等于8,且二次变换启用标志的值等于1(二次变换启用标志的值等于1,表示序列级或者帧级允许启用二次变换),则对系数矩阵执行以下操作:首先,对变换系数矩阵进行如下垂直反变换,得到矩阵K:kij=Clip3(-32768,32767,(vij+24)>>5),i=0~M1-1,j=0~M2-1,vij是矩阵V的元素,kij是矩阵K的元素。矩阵V的计算如下:V=D8 T×CoeffMatrix,D8 T是反变换矩阵D8的转置矩阵,CoeffMatrix为变换系数。
然后,对矩阵K进行如下水平反变换,得到矩阵H:hij=Clip3(-MaxValue-1,MaxValue,(wij+2shift1-1)>>shift1),i=0~M1-1,j=0~M2-1,wi,j是矩阵W的元素,hij是矩阵H的元素。MaxValue的值为(1<<BitDepth)-1,shift1等于22-BitDepth,矩阵W为:W=K×D8,D8是反变换矩阵。
当然,上述实施例1-实施例11可以单独实现,也可以组合实现。例如,实施例1和实施例2可以组合实现,实施例3和实施例4可以组合实现,实施例5和实施例6可以组合实现,实施例1和实施例3可以组合实现,实施例1和实施例5可以组合实现,实施例2和实施例4可以组合实现,实施例2和实施例6可以组合实现,实施例3和实施例7可以组合实现,实施例4和实施例7可以组合实现,实施例5和实施例8可以组合实现,实施例6和实施例8可以组合实现,。当然,上述只是几个示例,对此实施例之间的组合方式不做限制。
基于与上述方法同样的申请构思,本申请实施例还提出一种编码装置,应用于编码端,如图5A所示,为所述装置的结构图,所述装置包括:
获取模块511,用于获取当前块对应的残差系数矩阵;
变换模块512,用于对所述残差系数矩阵进行初始变换,得到初始变换系数矩阵;
确定模块513,用于若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据所述当前块对应的率失真代价值,确定是否对所述当前块进行二次变换;
其中,所述第一预设条件包括:所述当前块的预测模式为帧内预测模式;所述第二预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
示例性的,所述确定模块513还用于:若对所述当前块进行二次变换,则对所述初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换,得到目标变换系数矩阵;若对所述当前块不进行二次变换,则将所述初始变换系数矩阵确定为目标变换系数矩阵;
根据所述目标变换系数矩阵进行编码,得到所述当前块的编码比特流。
所述确定模块513对所述初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换时具体用于:若所述当前块的宽度和高度满足第二尺寸条件,则基于第一指定尺寸的二次变换矩阵,对所述初始变换系数矩阵中位于左上角的第一指定区域的变换系数进行二次变换;若所述当前块的宽度和高度不满足第二尺寸条件,则基于第二指定尺寸的二次变换矩阵,对所述初始变换系数矩阵中位于左上角的第二指定区域的变换系数进行二次变换;
其中,所述第一指定区域的尺寸为第一指定尺寸,所述第二指定区域的尺寸为第二指定尺寸,所述第一指定尺寸大于所述第二指定尺寸。
所述确定模块513还用于:若对所述当前块进行二次变换,则在所述编码比特流中添加第一指示信息;其中,所述第一指示信息用于指示对所述当前块进行二次变换;或者,
若对所述当前块不进行二次变换,则在所述编码比特流中添加第二指示信息;其中,所述第二指示信息用于指示对所述当前块不进行二次变换。
所述确定模块513根据所述目标变换系数矩阵进行编码,得到所述当前块的编码比特流时具体用于:根据所述目标变换系数矩阵中的变换系数,确定所述目标变换系数矩阵的目标特征;根据所述目标特征和所述当前块的预设标志位的目标取值,确定是否对所述目标变换系数矩阵进行调整;所述预设标志位的目标取值为第一取值时,用于指示对当前块进行二次变换,所述预设标志位的目标取值为第二取值时,用于指示对当前块不进行二次变换;
若不对所述目标变换系数矩阵进行调整,则对所述目标变换系数矩阵进行编码,得到所述当前块的编码比特流;若对所述目标变换系数矩阵进行调整,则对所述目标变换系数矩阵中的变换系数进行调整,以使调整后的目标变换系数矩阵的目标特征与所述预设标志位的目标取值相匹配,并对调整后的目标变换系数矩阵进行编码,得到所述当前块的编码比特流。
基于与上述方法同样的申请构思,本申请实施例还提出一种解码装置,应用于解码端,如图5B所示,为所述装置的结构图,所述装置包括:
获取模块521,用于获取当前块的编码比特流;
确定模块522,用于若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据所述编码比特流中的指示信息或者目标变换系数矩阵确定是否对所述当前块进行二次逆变换;其中,所述第三预设条件包括:所述当前块的预测模式为帧内预测模式;所述第四预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
所述确定模块522根据所述编码比特流中的指示信息确定是否对所述当前块进行二次逆变换时具体用于:从所述编码比特流中解析出指示信息;若所述指示信息为第一指示信息,则确定对所述当前块进行二次逆变换;其中,所述第一指示信息用于指示对所述当前块进行二次变换;或者,若所述指示信息为第二指示信息,则确定对所述当前块不进行二次逆变换;其中,所述第二指示信息用于指示对所述当前块不进行二次变换。
所述确定模块522根据所述编码比特流中的目标变换系数矩阵确定是否对所述当前块进行二次逆变换时具体用于:从所述编码比特流中解析出目标变换系数矩阵;
根据所述目标变换系数矩阵中的变换系数,确定所述目标变换系数矩阵的目标特征;
根据所述目标特征确定所述当前块的预设标志位的目标取值;其中,所述预设标志位的目标取值为第一取值时,用于指示对所述当前块进行二次逆变换,所述预设标志位的目标取值为第二取值时,用于指示对所述当前块不进行二次逆变换;
根据所述预设标志位的目标取值确定是否对所述当前块进行二次逆变换。
所述确定模块522还用于:从所述编码比特流中解析出目标变换系数矩阵;若对所述当前块进行二次逆变换,则对所述目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换,得到初始变换系数矩阵;若对所述当前块不进行二次逆变换,则将所述目标变换系数矩阵确定为初始变换系数矩阵;对所述初始变换系数矩阵进行初始逆变换,得到所述当前块对应的残差系数矩阵;根据所述残差系数矩阵确定所述当前块的重建值。
所述确定模块522对所述目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换时具体用于:若所述当前块的宽度和高度满足第二尺寸条件,则基于第一指定尺寸的二次逆变换矩阵,对所述目标变换系数矩阵中位于左上角的第一指定区域的变换系数进行二次逆变换;若所述当前块的宽度和高度不满足第二尺寸条件,则基于第二指定尺寸的二次逆变换矩阵,对所述目标变换系数矩阵中位于左上角的第二指定区域的变换系数进行二次逆变换;其中,所述第一指定区域的尺寸为第一指定尺寸,所述第二指定区域的尺寸为第二指定尺寸,所述第一指定尺寸大于所述第二指定尺寸。
本申请实施例提供的编码端设备(示例性的,编码端设备可以是视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图6A所示。包括:处理器611和机器可读存储介质612,所述机器可读存储介质612存储有能够被所述处理器611执行的机器可执行指令;所述处理器611用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:获取当前块对应的残差系数矩阵;
对所述残差系数矩阵进行初始变换,得到初始变换系数矩阵;
若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据所述当前块对应的率失真代价值,确定是否对所述当前块进行二次变换;
其中,所述第一预设条件包括:所述当前块的预测模式为帧内预测模式;所述第二预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
本申请实施例提供的解码端设备(示例性的,解码端设备可以是视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图6B所示。包括:处理器621和机器可读存储介质622,所述机器可读存储介质622存储有能够被所述处理器621执行的机器可执行指令;所述处理器621用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:获取当前块的编码比特流;
若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据所述编码比特流中的指示信息或者目标变换系数矩阵确定是否对所述当前块进行二次逆变换;
其中,所述第三预设条件包括:所述当前块的预测模式为帧内预测模式;所述第四预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式。
基于与上述方法同样的申请构思,本申请实施例中还提供一种摄像机设备,该摄像机设备可以包括上述任一实施例中的编码装置和/或解码装置。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的编解码方法。其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的***、装置、模块或单元,可以由计算机芯片或实体实现,或由具有某种功能的产品来实现。一种典型的实现为计算机,计算机的形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (16)
1.一种编码方法,其特征在于,应用于编码端,所述方法包括:
获取当前块对应的残差系数矩阵;
对所述残差系数矩阵进行初始变换,得到初始变换系数矩阵;
若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据所述当前块对应的率失真代价值,确定是否对所述当前块进行二次变换;若对所述当前块进行二次变换,则对所述初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换,得到目标变换系数矩阵;若对所述当前块不进行二次变换,则将所述初始变换系数矩阵确定为目标变换系数矩阵;根据所述目标变换系数矩阵进行编码,得到所述当前块的编码比特流;
其中,所述第一预设条件包括:所述当前块的预测模式为帧内预测模式;所述第二预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式;
其中,若当前块不满足第一预设条件,则禁止对所述当前块进行二次变换。
2.根据权利要求1所述的方法,其特征在于,所述第二预设条件包括:
所述当前块的宽度和高度满足第一尺寸条件,且所述当前块不支持DT划分模式。
3.根据权利要求1所述的方法,其特征在于,
对所述初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换,包括:
若所述当前块的宽度和高度满足第二尺寸条件,则基于第一指定尺寸的二次变换矩阵,对所述初始变换系数矩阵中位于左上角的第一指定区域的变换系数进行二次变换;
若所述当前块的宽度和高度不满足第二尺寸条件,则基于第二指定尺寸的二次变换矩阵,对所述初始变换系数矩阵中位于左上角的第二指定区域的变换系数进行二次变换;
其中,所述第一指定区域的尺寸为第一指定尺寸,所述第二指定区域的尺寸为第二指定尺寸,所述第一指定尺寸大于所述第二指定尺寸。
4.根据权利要求1所述的方法,其特征在于,所述根据所述目标变换系数矩阵进行编码,得到所述当前块的编码比特流之后,所述方法还包括:
若对所述当前块进行二次变换,则在所述编码比特流中添加第一指示信息;其中,所述第一指示信息用于指示对所述当前块进行二次变换;或者,
若对所述当前块不进行二次变换,则在所述编码比特流中添加第二指示信息;其中,所述第二指示信息用于指示对所述当前块不进行二次变换。
5.根据权利要求1所述的方法,其特征在于,
所述根据所述目标变换系数矩阵进行编码,得到所述当前块的编码比特流,包括:
根据所述目标变换系数矩阵中的变换系数,确定所述目标变换系数矩阵的目标特征;
根据所述目标特征和所述当前块的预设标志位的目标取值,确定是否对所述目标变换系数矩阵进行调整;所述预设标志位的目标取值为第一取值时,用于指示对当前块进行二次变换,所述预设标志位的目标取值为第二取值时,用于指示对当前块不进行二次变换;
若不对所述目标变换系数矩阵进行调整,则对所述目标变换系数矩阵进行编码,得到所述当前块的编码比特流;若对所述目标变换系数矩阵进行调整,则对所述目标变换系数矩阵中的变换系数进行调整,以使调整后的目标变换系数矩阵的目标特征与所述预设标志位的目标取值相匹配,并对调整后的目标变换系数矩阵进行编码,得到所述当前块的编码比特流。
6.根据权利要求5所述的方法,其特征在于,
所述目标特征包括目标奇偶性,所述根据所述目标特征和所述当前块的预设标志位的目标取值,确定是否对所述目标变换系数矩阵进行调整,包括:
若所述目标奇偶性为奇数,且所述当前块的预设标志位的目标取值为第一取值,则确定对所述目标变换系数矩阵不进行调整;或者,
若所述目标奇偶性为奇数,且所述当前块的预设标志位的目标取值为第二取值,则确定对所述目标变换系数矩阵进行调整;或者,
若所述目标奇偶性为偶数,且所述当前块的预设标志位的目标取值为第一取值,则确定对所述目标变换系数矩阵进行调整;或者,
若所述目标奇偶性为偶数,且所述当前块的预设标志位的目标取值为第二取值,则确定对所述目标变换系数矩阵不进行调整;
其中,所述目标奇偶性为奇数时,用于指示对当前块进行二次变换;
所述目标奇偶性为偶数时,用于指示对当前块不进行二次变换。
7.根据权利要求5所述的方法,其特征在于,
所述目标特征包括目标奇偶性,所述根据所述目标特征和所述当前块的预设标志位的目标取值,确定是否对所述目标变换系数矩阵进行调整,包括:
若所述目标奇偶性为偶数,且所述当前块的预设标志位的目标取值为第一取值,则确定对所述目标变换系数矩阵不进行调整;或者,
若所述目标奇偶性为偶数,且所述当前块的预设标志位的目标取值为第二取值,则确定对所述目标变换系数矩阵进行调整;或者,
若所述目标奇偶性为奇数,且所述当前块的预设标志位的目标取值为第一取值,则确定对所述目标变换系数矩阵进行调整;或者,
若所述目标奇偶性为奇数,且所述当前块的预设标志位的目标取值为第二取值,则确定对所述目标变换系数矩阵不进行调整;
其中,所述目标奇偶性为偶数时,用于指示对当前块进行二次变换;
所述目标奇偶性为奇数时,用于指示对当前块不进行二次变换。
8.一种解码方法,其特征在于,应用于解码端,所述方法包括:
获取当前块的编码比特流;
若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据所述编码比特流中的指示信息或者目标变换系数矩阵确定是否对所述当前块进行二次逆变换;
从所述编码比特流中解析出目标变换系数矩阵;
若对所述当前块进行二次逆变换,则对所述目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换,得到初始变换系数矩阵;若对所述当前块不进行二次逆变换,则将所述目标变换系数矩阵确定为初始变换系数矩阵;
对所述初始变换系数矩阵进行初始逆变换,得到所述当前块对应的残差系数矩阵;
根据所述残差系数矩阵确定所述当前块的重建值;
其中,所述第三预设条件包括:所述当前块的预测模式为帧内预测模式;所述第四预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式;
其中,若当前块不满足第三预设条件,则禁止对所述当前块进行二次逆变换。
9.根据权利要求8所述的方法,其特征在于,所述第四预设条件包括:
所述当前块的宽度和高度满足第一尺寸条件,且所述当前块不支持DT划分模式。
10.根据权利要求8所述的方法,其特征在于,
所述根据所述编码比特流中的指示信息确定是否对所述当前块进行二次逆变换,包括:
从所述编码比特流中解析出指示信息;
若所述指示信息为第一指示信息,则确定对所述当前块进行二次逆变换;其中,所述第一指示信息用于指示对所述当前块进行二次变换;或者,
若所述指示信息为第二指示信息,则确定对所述当前块不进行二次逆变换;其中,所述第二指示信息用于指示对所述当前块不进行二次变换。
11.根据权利要求8所述的方法,其特征在于,所述根据所述编码比特流中的目标变换系数矩阵确定是否对所述当前块进行二次逆变换,包括:
从所述编码比特流中解析出目标变换系数矩阵;
根据所述目标变换系数矩阵中的变换系数,确定所述目标变换系数矩阵的目标特征;
根据所述目标特征确定所述当前块的预设标志位的目标取值;其中,所述预设标志位的目标取值为第一取值时,用于指示对所述当前块进行二次逆变换,所述预设标志位的目标取值为第二取值时,用于指示对所述当前块不进行二次逆变换;
根据所述预设标志位的目标取值确定是否对所述当前块进行二次逆变换。
12.根据权利要求11所述的方法,其特征在于,所述目标特征包括目标奇偶性,所述根据所述目标特征确定所述当前块的预设标志位的目标取值,包括:
若所述目标奇偶性为奇数,则确定所述预设标志位的目标取值为第一取值;
若所述目标奇偶性为偶数,则确定所述预设标志位的目标取值为第二取值;
所述根据所述预设标志位的目标取值确定是否对所述当前块进行二次逆变换,包括:
若所述预设标志位的目标取值为第一取值,则确定对所述当前块进行二次逆变换;
若所述预设标志位的目标取值为第二取值,则确定对所述当前块不进行二次逆变换。
13.根据权利要求11所述的方法,其特征在于,所述目标特征包括目标奇偶性,所述根据所述目标特征确定所述当前块的预设标志位的目标取值,包括:
若所述目标奇偶性为偶数,则确定所述预设标志位的目标取值为第一取值;
若所述目标奇偶性为奇数,则确定所述预设标志位的目标取值为第二取值;
所述根据所述预设标志位的目标取值确定是否对所述当前块进行二次逆变换,包括:
若所述预设标志位的目标取值为第一取值,则确定对所述当前块进行二次逆变换;
若所述预设标志位的目标取值为第二取值,则确定对所述当前块不进行二次逆变换。
14.根据权利要求8所述的方法,其特征在于,
对所述目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换,包括:
若所述当前块的宽度和高度满足第二尺寸条件,则基于第一指定尺寸的二次逆变换矩阵,对所述目标变换系数矩阵中位于左上角的第一指定区域的变换系数进行二次逆变换;
若所述当前块的宽度和高度不满足第二尺寸条件,则基于第二指定尺寸的二次逆变换矩阵,对所述目标变换系数矩阵中位于左上角的第二指定区域的变换系数进行二次逆变换;
其中,所述第一指定区域的尺寸为第一指定尺寸,所述第二指定区域的尺寸为第二指定尺寸,所述第一指定尺寸大于所述第二指定尺寸。
15.一种编码装置,其特征在于,应用于编码端,所述装置包括:
获取模块,用于获取当前块对应的残差系数矩阵;
变换模块,用于对所述残差系数矩阵进行初始变换,得到初始变换系数矩阵;
确定模块,用于若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第一预设条件,则确定当前块是否满足第二预设条件;若当前块满足第二预设条件,则根据所述当前块对应的率失真代价值,确定是否对所述当前块进行二次变换;若对所述当前块进行二次变换,则对所述初始变换系数矩阵中位于左上角的指定区域的变换系数进行二次变换,得到目标变换系数矩阵;若对所述当前块不进行二次变换,则将所述初始变换系数矩阵确定为目标变换系数矩阵;根据所述目标变换系数矩阵进行编码,得到所述当前块的编码比特流;
其中,所述第一预设条件包括:所述当前块的预测模式为帧内预测模式;所述第二预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式;
其中,若当前块不满足第一预设条件,则禁止对所述当前块进行二次变换。
16.一种解码装置,其特征在于,应用于解码端,所述装置包括:
获取模块,用于获取当前块的编码比特流;
确定模块,用于若当前块支持二次变换,当前块支持可选择的二次变换AST技术,且当前块满足第三预设条件,则确定当前块是否满足第四预设条件;若当前块满足第四预设条件,则根据所述编码比特流中的指示信息或者目标变换系数矩阵确定是否对所述当前块进行二次逆变换;从所述编码比特流中解析出目标变换系数矩阵;若对所述当前块进行二次逆变换,则对所述目标变换系数矩阵中位于左上角的指定区域的变换系数进行二次逆变换,得到初始变换系数矩阵;若对所述当前块不进行二次逆变换,则将所述目标变换系数矩阵确定为初始变换系数矩阵;对所述初始变换系数矩阵进行初始逆变换,得到所述当前块对应的残差系数矩阵;根据所述残差系数矩阵确定所述当前块的重建值;
其中,所述第三预设条件包括:所述当前块的预测模式为帧内预测模式;所述第四预设条件包括:所述当前块使用帧内预测滤波模式,或者,不使用帧内预测滤波模式;
其中,若当前块不满足第三预设条件,则禁止对所述当前块进行二次逆变换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010239734.0A CN113473129B (zh) | 2020-03-30 | 2020-03-30 | 一种编码、解码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010239734.0A CN113473129B (zh) | 2020-03-30 | 2020-03-30 | 一种编码、解码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113473129A CN113473129A (zh) | 2021-10-01 |
CN113473129B true CN113473129B (zh) | 2022-12-23 |
Family
ID=77865068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010239734.0A Active CN113473129B (zh) | 2020-03-30 | 2020-03-30 | 一种编码、解码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113473129B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108712650A (zh) * | 2012-06-29 | 2018-10-26 | 韩国电子通信研究院 | 视频解码方法、视频编码方法和计算机可读介质 |
CN109076226A (zh) * | 2016-05-13 | 2018-12-21 | 索尼公司 | 图像处理装置和方法 |
CN109644276A (zh) * | 2016-08-01 | 2019-04-16 | 韩国电子通信研究院 | 图像编码/解码方法 |
CN110326294A (zh) * | 2017-01-03 | 2019-10-11 | Lg电子株式会社 | 使用二次变换编码/解码视频信号的方法和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378185B2 (en) * | 2010-09-30 | 2016-06-28 | Texas Instruments Incorporated | Transform and quantization architecture for video coding and decoding |
-
2020
- 2020-03-30 CN CN202010239734.0A patent/CN113473129B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108712650A (zh) * | 2012-06-29 | 2018-10-26 | 韩国电子通信研究院 | 视频解码方法、视频编码方法和计算机可读介质 |
CN109076226A (zh) * | 2016-05-13 | 2018-12-21 | 索尼公司 | 图像处理装置和方法 |
CN109644276A (zh) * | 2016-08-01 | 2019-04-16 | 韩国电子通信研究院 | 图像编码/解码方法 |
CN110326294A (zh) * | 2017-01-03 | 2019-10-11 | Lg电子株式会社 | 使用二次变换编码/解码视频信号的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113473129A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9264722B2 (en) | Methods and devices for encoding and decoding transform domain filters | |
KR101818997B1 (ko) | 다단계 예측을 이용한 영상 부/복호화 방법 및 이러한 방법을 사용하는 부/복호화 장치 | |
US10469876B2 (en) | Non-local adaptive loop filter combining multiple denoising technologies and grouping image patches in parallel | |
EP2744210A1 (en) | Adaptive transformation of residual blocks depending on the intra prediction mode | |
AU2019298855B2 (en) | Apparatus and method for filtering in video coding | |
KR20080018469A (ko) | 영상 변환 방법 및 장치, 역변환 방법 및 장치 | |
CN106878734A (zh) | 视频编码/解码方法及视频编码器/解码器 | |
CN112422991B (zh) | 编码方法、解码方法及装置 | |
CN113709480B (zh) | 一种编码、解码方法、装置及其设备 | |
CN114640845B (zh) | 编解码方法、装置及其设备 | |
CN113473129B (zh) | 一种编码、解码方法及装置 | |
JP7467687B2 (ja) | 符号化・復号方法及び装置 | |
CN112911312B (zh) | 一种编码、解码方法、装置及其设备 | |
JPWO2021139572A5 (zh) | ||
CN114598871A (zh) | 一种编码、解码方法、装置及其设备 | |
Jánosi | Two-Stage Overfitting of Neural Network-Based Video Coding In-Loop Filter | |
CN116998151A (zh) | 一种编码方法、解码方法、编码器、解码器以及存储介质 | |
CN115086654A (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |