CN116671103A - 帧内预测方法、编码器、解码器以及存储介质 - Google Patents

帧内预测方法、编码器、解码器以及存储介质 Download PDF

Info

Publication number
CN116671103A
CN116671103A CN202180087698.3A CN202180087698A CN116671103A CN 116671103 A CN116671103 A CN 116671103A CN 202180087698 A CN202180087698 A CN 202180087698A CN 116671103 A CN116671103 A CN 116671103A
Authority
CN
China
Prior art keywords
mode
intra
prediction
determining
prediction mode
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.)
Pending
Application number
CN202180087698.3A
Other languages
English (en)
Inventor
王凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202311245565.1A priority Critical patent/CN117221535A/zh
Publication of CN116671103A publication Critical patent/CN116671103A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请实施例提供了一种帧内预测方法、编码器、解码器以及存储介质,解码器解码码流,确定当前块的帧内预测模式参数;当帧内预测模式参数指示当前块使用IWCP模式确定当前块的帧内预测值时,确定当前块的第一模式索引和第二模式索引;至少基于当前块的相邻块集合构建当前块的MPM列表;根据第一模式索引、第二模式索引以及MPM列表确定当前块的第一帧内预测模式和第二帧内预测模式;其中,第一帧内预测模式和第二帧内预测模式为两个不同的帧内角度预测模式;确定当前块的权重矩阵,并基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,确定当前块的预测值。

Description

帧内预测方法、编码器、解码器以及存储介质 技术领域
本申请实施例涉及图像处理技术领域,尤其涉及一种帧内预测方法、编码器、解码器以及存储介质。
背景技术
为了捕捉自然视频中呈现的更精细的边缘方向,多功能视频编码(Versatile Video Coding,VVC)中将视频压缩标准(High Efficiency Video Coding,HEVC)中定义的33种帧内亮度预测角度模式扩展到了65种,另外还有两种非角度模式,即编号为0的渐变平坦Planar模式和编号为1的直流(Direct Current,DC)模式。
为了提高帧内预测的准确性,目前提出一种使用两种不同的帧内预测模式进行帧内预测的方法,然而,在硬件实现时,一些不同的帧内预测模式的电路无法难以复用,因此需要两套帧内预测电路,而增加新的预测电路会造成硬件实现代价的增大,复杂度增大,降低了编解码性能。
发明内容
本申请实施例提供一种帧内预测方法、编码器、解码器以及存储介质,能够在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种帧内预测方法,应用于解码器,所述方法包括:
解码码流,确定当前块的帧内预测模式参数;
当所述帧内预测模式参数指示所述当前块使用帧内加权组合预测IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一模式索引和第二模式索引;
至少基于所述当前块的相邻块集合构建所述当前块的最可能模式MPM列表;
根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
确定当前块的权重矩阵,并基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
第二方面,本申请实施例提供了一种帧内预测方法,应用于编码器,所述方法包括:
当当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引;
将所述第一模式索引和所述第二模式索引写入码流。
第三方面,本申请实施例提供了一种编码器,所述编码器包括:第一确定部分,第一构建部分,编码部分,
所述第一确定部分,配置为当当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
所述第一构建部分,配置为至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
所述第一确定部分,还配置为根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引;
所述编码部分,配置为将所述第一模式索引和所述第二模式索引写入码流。
第四方面,本申请实施例提供了一种解码器,所述解码器包括:解码部分,第二确定部分,第二构建部分,
所述解码部分,配置为解码码流;
所述第二确定部分,配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一模式索引和第二模式索引;
第二构建部分,配置为至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
所述第二确定部分,还配置为根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;确定当前块的权重矩阵,并基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
第五方面,本申请实施例提供了一种编码器,所述编码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如上所述的帧内预测方法。
第六方面,本申请实施例提供了一种解码器,所述解码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如上所述的帧内预测方法。
第七方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如第一方面所述的帧内预测方法,或者,被第二处理器执行时实现如第二方面所述的帧内预测方法。
本申请实施例提供了一种帧内预测方法、编码器、解码器以及存储介质,解码器解码码流,确定当前块的帧内预测模式参数;当帧内预测模式参数指示当前块使用IWCP模式确定当前块的帧内预测值时,确定当前块的第一模式索引和第二模式索引;至少基于当前块的相邻块集合构建当前块的MPM列表;根据第一模式索引、第二模式索引以及MPM列表确定当前块的第一帧内预测模式和第二帧内预测模式;其中,第一帧内预测模式和第二帧内预测模式为两个不同的帧内角度预测模式;确定当前块的权重矩阵,并基于第一帧内预测模式、第二帧内预测模式以及权重 矩阵,确定当前块的预测值。编码器当当前块使用IWCP模式确定当前块的帧内预测值时,确定当前块的第一帧内预测模式和第二帧内预测模式;其中,第一帧内预测模式和第二帧内预测模式为两个不同的帧内角度预测模式;至少基于当前块的相邻块集合构建当前块的MPM列表;根据第一帧内预测模式、第二帧内预测模式以及MPM列表确定当前块的第一模式索引和第二模式索引;将第一模式索引和第二模式索引写入码流。也就是说,在本申请的实施例中,编解码器可以通过两种不同的帧内角度预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。
附图说明
图1为权重分配示意图一;
图2为权重分配示意图二;;
图3为帧内预测的示意图;
图4一种视频编码系统的组成框图;
图5一种视频解码系统的组成框图;
图6为帧内预测方法的实现流程示意图一;
图7为IWCP模式的示意图;
图8为相邻块的示意图;
图9为帧内预测方法的实现流程示意图二;
图10为本申请实施例提出的编码器的组成结构示意图一;
图11为本申请实施例提出的编码器的组成结构示意图二;
图12为本申请实施例提出的解码器的组成结构示意图一;
图13为本申请实施例提出的解码器的组成结构示意图二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。
目前,通用的视频编解码标准基于都采用基于块的混合编码框架。视频图像中的每一帧被分割成相同大小(比如128×128,64×64等)的正方形的最大编码单元(Largest Coding Unit,LCU),每个最大编码单元还可以根据规则划分成矩形的编码单元(Coding Unit,CU);而且编码单元可能还会划分成更小的预测单元(Prediction Unit,PU)。具体地,混合编码框架可以包括有预测、变换(Transform)、量化(Quantization)、熵编码(EntropyCoding)、环路滤波(In Loop Filter)等模块;其中,预测模块可以包括帧内预测(intraPrediction)和帧间预测(interPrediction),帧间预测可以包括运动估计(motion estimation)和运动补偿(motion compensation)。由于视频图像的一个帧内相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测方式能够消除相邻像素之间的空间冗余;但是由于视频图像中的相邻帧之间也存在着很强的相似性,在视频编解码技术中使用帧间预测方式消除相邻帧之间的时间冗余,从而能够提高编解码效率。
视频编解码器的基本流程如下:在编码端,将一帧图像划分成块,对当前块使用帧内预测或帧间预测产生当前块的预测块,当前块的原始块减去预测块得到残差块,对残差块进行变换、量化得到量化系数矩阵,对量化系数矩阵进行熵编码输出到码流中。在解码端,对当前块使用帧内预测或帧间预测产生当前块的预测块,另一方面解码码流得到量化系数矩阵,对量化系数矩阵进行反量化、反变换得到残差块,将预测块和残差块相加得到重建块。重建块组成重建图像,基于图像或基于块对重建图像进行环路滤波得到解码图像。编码端同样需要和解码端类似的操作获得解码图像。解码图像可以为后续的帧作为帧间预测的参考帧。编码端确定的块划分信息,预测、变换、量化、熵编码、环路滤波等模式信息或者参数信息如果有必要需要在输出到码流中。解码端通过解析及根据已有信息进行分析确定与编码端相同的块划分信息,预测、变换、量化、熵编码、环路滤波等模式信息或者参数信息,从而保证编码端获得的解码图像和解码端获得的解码图像相同。编码端获得的解码图像通常也叫做重建图像。在预测时可以将当前块划分成预测单元,在变换时可以将当前块划分成变换单元,预测单元和变换单元的划分可以不同。上述是基于块的混合编码框架下的视频编解码器的基本流程,随着技术的发展,该框架或流程的一些模块或步骤可能会被优化,本申请实施例适用于该基于块的混合编码框架下的视频编解码器的基本流程,但不限于该框架及流程。
当前块(current block)可以是当前编码单元(CU)或当前预测单元(PU)等。
帧间预测使用已解码或重建的图像或者叫参考帧的信息对当前块进行预测。帧间预测使用运动信息从参考帧中找到参考块,根据参考块生成预测块。运动信息包括参考帧所在的参考帧列表,参考帧索引,以及运动矢量。运动矢量可以是整像素的或者是分像素的,如果运动矢量是分像素的,那么需要在参考帧中使用插值滤波做出所需的分像素的块,这里把根据运动矢量找到的参考帧中的整像素或者分像素的块叫参考块。有的技术会直接把参考块作为预测块,有的技术会在参考块的基础上再处理生成预测块。在参考块的基础上再处理生成预测块也可以理解为把参考块作为预测块然后再在预测块的基础上处理生成新的预测块。
目前正在制定中的多功能视频编码(Versatile Video Coding,VVC)视频编解码标准中,有一个叫做几何划分预测模式(GeometricpartitioningMode,GPM)的帧间预测模式。目前正在制定中的视频编解码标准(Audio Video coding Standard,AVS)视频编解码标准中,有一个叫做角度加权预测模式(Angular Weightedprediction,AWP)的帧间预测模式。这两种模式虽然名称不同、具体的实现形式不同、但原理上有共通之处。
需要说明的是,传统的单向预测只是查找一个与当前块大小相同的参考块,而传统的双向预测使用两个与当前块大小相同的参考块,且预测块内每个点的像素值为两个参考块对应位置的平均值,即每一个参考块的所有点都占 50%的比例。双向加权预测使得两个参考块的比例可以不同,如第一个参考块中所有点都占75%的比例,第二个参考块中所有点都占25%的比例。但同一个参考块中的所有点的比例都相同。其他一些优化方式比如采用解码端运动矢量修正(Decoder sideMotion Vector Refinement,DMVR)技术、双向光流(Bi-directional Optical Flow,BIO)等会使参考像素或预测像素产生一些变化,而且GPM或AWP也使用两个与当前块大小相同的参考块,但某些像素位置100%使用第一个参考块对应位置的像素值,某些像素位置100%使用第二个参考块对应位置的像素值,而在交界区域,按一定比例使用这两个参考块对应位置的像素值。权重分配可以由GPM或AWP的预测模式决定。
示例性地,图1为权重分配示意图一,如图1所示,其示出了本申请实施例提供的一种GPM在64×64的当前块上的多种划分模式的权重分配示意图,其中,GPM存在有64种划分模式。图2为权重分配示意图二,如图2所示,其示出了本申请实施例提供的一种AWP在64×64的当前块上的多种划分模式的权重分配示意图,其中,AWP存在有56种划分模式。无论是图1还是图2,每一种划分模式下,黑色区域表示第一个参考块对应位置的权重值为0%,白色区域表示第一个参考块对应位置的权重值为100%,灰色区域则按颜色深浅的不同表示第一个参考块对应位置的权重值为大于0%且小于100%的某一个权重值,第二个参考块对应位置的权重值则为100%减去第一个参考块对应位置的权重值。
GPM和AWP的权重导出方法不同。GPM根据每种模式确定角度及偏移量,而后计算出每个模式的权重矩阵。AWP首先做出一维的权重的线,然后使用类似于帧内角度预测的方法将一维的权重的线铺满整个矩阵。
应理解,早期的编解码技术中只存在矩形的划分方式,无论是CU、PU还是变换单元(Transform Unit,TU)的划分。而GPM或AWP均在没有划分的情况下实现了预测的非矩形的划分效果。GPM和AWP使用了两个参考块的权重的蒙版(mask),即上述的权重图。这个蒙版确定了两个参考块在产生预测块时的权重,而过渡区域(blending area)用两个参考块的对应位置加权得到,从而使过渡更平滑。GPM和AWP没有按划分线把当前块划分成两个CU或PU,于是在预测之后的残差的变换、量化、反变换、反量化等也都是将当前块作为一个整体来处理。
当前块所使用的运动信息可以保存下来。当前帧的后续编解码的块可以根据相邻的位置关系使用前面已编解码的块(如相邻块)的运动信息。这利用了空域上的相关性,所以这种已编解码的运动信息叫做空域上的运动信息。当前帧的每个块所使用的运动信息可以保存下来。后续编解码的帧可以根据参考关系使用前面已编解码的帧的运动信息。这利用了时域上的相关性,所以这种已编解码的帧的运动信息叫做时域上的运动信息。当前帧的每个块所使用的运动信息的存储方法通常将一个固定大小的矩阵,如4×4的矩阵,作为一个最小单元,每个最小单元单独存储一组运动信息。这样每编解码一个块,它的位置对应的那些最小单元就可以把这个块的运动信息存储下来。这样使用空域上的运动信息或时域上的运动信息时可以直接根据位置找到该位置对应的运动信息。如一个16x16的块使用了传统的单向预测,那么这个块对应的所有的4×4个最小单元都存储这个单向预测的运动信息。如果一个块使用了GPM或AWP,那么这个块对应的所有的最小单元会根据GPM或AWP的模式,第一个运动信息,和第二个运动信息以及每个最小单元的位置确定每个最小单元存储的运动信息。一种方法是如果一个最小单元对应的4×4的像素全部来自于第一个运动信息,那么这个最小单元存储第一个运动信息,如果一个最小单元对应的4×4的像素全部来自于第二个运动信息,那么这个最小单元存储第二个运动信息。如果一个最小单元对应的4×4的像素既来自于第一个运动信息又来自于第二个运动信息,那么AWP会选择其中一个运动信息进行存储;GPM的做法是如果两个运动信息指向不同的参考帧列表,那么把它们组合成双向运动信息存储,否则只存储第二个运动信息。
需要说明的是,GPM或AWP属于一种帧间预测技术,GPM或AWP需要在码流中传输一个GPM或AWP是否使用的标志(flag),该flag可以指示当前块是否使用GPM或AWP。如果使用GPM或AWP,编码器在码流中需要传输具体使用的模式,即GPM的64种划分模式之一,或AWP的56种划分模式之一;以及两个单向运动信息的索引值。也就是说,对于当前块而言,解码器通过解码码流可以得到GPM或AWP是否使用的信息,如果确定使用GPM或AWP,解码器可以解析出GPM或AWP的预测模式参数以及两个运动信息索引值,比如当前块可以划分为两个分区,那么可以解析出第一分区对应的第一索引值和第二分区对应的第二索引值。
具体来讲,对于GPM模式来说,如果使用GPM,那么码流中将会传输GPM下的预测模式参数,比如GPM具体的划分模式;通常情况下,GPM包括有64种划分模式。对于AWP模式来说,如果使用AWP,那么码流中将会传输AWP下的预测模式参数,比如AWP具体的划分模式;通常情况下,AWP包括有56种划分模式。
在帧间预测模式下,比如GPM和AWP均需要使用两个单向运动信息查找两个参考块。目前的实现方式是在编码器侧利用当前块之前已编码/已解码部分的相关信息构建一个单向运动信息候选列表,从单向运动信息候选列表中选择单向运动信息,将这两个单向运动信息在单向运动信息候选列表中的索引值(index)写入码流。在解码器侧采用同样的方式,即利用当前块之前已解码部分的相关信息构建一个单向运动信息候选列表,这个单向运动信息候选列表与编码器侧构建的候选列表一定是相同的。如此,从码流中解析出两个单向运动信息的索引值,然后从单向运动信息候选列表中查找出这两个单向运动信息即为当前块需要使用的两个单向运动信息。
也就是说,本申请所描述的单向运动信息可以包括:运动矢量信息,即(x,y)的值,以及对应的参考帧信息,即参考帧列表及在参考帧列表中的参考帧索引值。一种表示方式是记录两个参考帧列表的参考帧索引值,其中一个参考帧列表对应的参考帧索引值有效,如0,1,2等;另一个参考帧列表对应的参考帧索引值为无效,即-1。参考帧索引值有效的参考帧列表即为当前块的运动信息所使用的参考帧列表,根据参考帧索引值可以从该参考帧列表中查找到对应的参考帧。每个参考帧列表都有一个对应的运动矢量,有效的参考帧列表对应的运动矢量是有效的,无效的参考帧列表对应的运动矢量是无效的。解码器可以通过单向运动信息中的参考帧信息找到所需的参考帧,根据当前块的位置以及运动矢量即(x,y)的值可以在参考帧中找到参考块,进而确定出当前块的帧间预测值。
帧内预测方法是使用当前块周边已编解码的重建像素作为参考像素来对当前块进行预测。图3为帧内预测的示意图,如图3所示,当前块的大小为4×4,当前块左边一行和上面一列的像素为当前块的参考像素,帧内预测使用这些参考像素对当前块进行预测。这些参考像素可能已经全部可得,即全部已经编解码。也可能有部分不可得,比如 当前块是整帧的最左侧,那么当前块的左边的参考像素不可得。或者编解码当前块时,当前块左下方的部分还没有编解码,那么左下方的参考像素也不可得。对于参考像素不可得的情况,可以使用可得的参考像素或某些值或某些方法进行填充,或者不进行填充。
进一步地,在进行帧内预测时,多参考行帧内预测方法(Multiple reference line,MRL)可以使用更多的参考像素从而提高编解码效率,例如,使用4个参考行/列为当前块的参考像素。
帧内预测有多种预测模式,H.264中对4×4的块进行帧内预测主要可以包括9种模式。其中,模式0可以将当前块上面的像素按垂直方向复制到当前块作为预测值,模式1可以将左边的参考像素按水平方向复制到当前块作为预测值,模式2直流DC将相邻的多个点的平均值作为所有点的预测值,模式3~8可以分别按某一个角度将参考像素复制到当前块的对应位置,因为当前块某些位置不能正好对应到参考像素,可能需要使用参考像素的加权平均值,或者说是插值的参考像素的分像素。
除此之外,还有Planar模式等,而随着技术的发展以及块的扩大,角度预测模式也越来越多,如HEVC使用的帧内预测模式有Planar模式、DC模式和33种角度模式共35种预测模式。VVC使用的帧内模式有Planar模式、DC模式和65种角度模式共67种预测模式。AVS3使用DC模式、Planar模式、Bilinear模式和63种角度模式共66种预测模式。
另外还有一些技术对预测进行改进,如改进参考像素的分像素插值,对预测像素进行滤波等。如AVS3中的多组合帧内预测滤波(multipleintraprediction filter,MIPF)对不同的块大小,使用不同的滤波器产生预测值。对同一个块内的不同位置的像素,与参考像素较近的像素使用一种滤波器产生预测值,与参考像素较远的像素使用另一种滤波器产生预测值。对预测像素进行滤波的技术如AVS3中的帧内预测滤波(intra prediction filter,IPF),对预测值可以使用参考像素进行滤波。
在帧内预测中可以使用最可能模式列表(MostprobableModes List,MPM)的帧内模式编码技术来提高编解码效率。利用周边已编解码的块的帧内预测模式,以及根据周边已编解码块的帧内预测模式导出的帧内预测模式,如相邻的模式,以及一些常用或使用概率比较高的帧内预测模式,如DC,Planar,Bilinear模式等,构成一个MPM列表。参考周边已编解码的块的帧内预测模式利用了空间上的相关性。因为纹理在空间上会有一定的连续性。MPM可以作为帧内预测模式的预测。也就是认为当前块使用MPM的概率会比不使用MPM的概率高。因而在二值化时,会给MPM使用更少的码字,从而节省开销,以提高编解码效率。
虽然现在的帧内预测有DC模式、Planar模式、Bilinear模式等模式,但它们都只能处理简单的纹理的预测;即使角度模式越来越多,但它们的预测只能循着一个角度的直线来进行。可见,目前的帧内预测模式仅仅能处理简单的纹理的预测。对于复杂的纹理,在预测时则需要划分成更小的块,或者对更多的残差进行编码,或者造成较大的失真。
针对上述问题,目前提出一种帧内预测方法,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性。然而,由于非角度预测模式如DC模式、Planar模式、PLANE模式、Bilinear模式等模式与角度预测模式的计算逻辑不同,非角度预测模式各自有各自的逻辑,在硬件实现时,非角度预测模式与角度预测模式的电路无法难以复用,在使用2个帧内预测模式进行预测时,如果2个帧内预测模式在硬件上串行进行预测,再依据权重矩阵进行组合,2个帧内预测模式的预测都可以使用现有的帧内预测电路,但是需要对先进行预测的预测值进行存储,而且这样帧内加权组合预测的时间就要明显高于原有的只使用一种帧内预测模式进行预测的时间。如果2个帧内预测模式在硬件上串行进行预测,产生帧内加权组合预测的预测值的速度要明显优于串行的实现。而这样做的代价是需要两套帧内预测电路。也就是需要增加一套帧内预测电路,这里所说的帧内预测电路进行上述帧内非角度预测模式和帧内角度预测模式的预测。也就是说要新增一套帧内预测电路。
由此可见,目前使用两种不同的帧内预测模式进行帧内预测的方法,虽然可以在一定程度上提高预测效果,但是,由于需要新增预测电路,进而会造成硬件实现代价的增大,因此,尽可能简化新增的帧内预测电路可以减少帧内加权组合预测带来的复杂度。为了解决上述问题,在本申请的实施例中,编解码器可以通过两种不同的帧内角度预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。
参见图4,其示出了本申请实施例提供的一种视频编码系统的组成框图示例;如图4所示,该视频编码系统10包括变换与量化单元101、帧内估计单元102、帧内预测单元103、运动补偿单元104、运动估计单元105、反变换与反量化单元106、滤波器控制分析单元107、滤波单元108、编码单元109和解码图像缓存单元110等,其中,滤波单元108可以实现去方块滤波及样本自适应缩进(Sample Adaptive 0ffset,SAO)滤波,编码单元109可以实现头信息编码及基于上下文的自适应二进制算术编码(Context-based Adaptive Binary Arithmatic Coding,CABAC)。针对输入的原始视频信号,通过编码树块(Coding Tree Unit,CTU)的划分可以得到一个视频编码块,然后对经过帧内或帧间预测后得到的残差像素信息通过变换与量化单元101对该视频编码块进行变换,包括将残差信息从像素域变换到变换域,并对所得的变换系数进行量化,用以进一步减少比特率;帧内估计单元102和帧内预测单元103是用于对该视频编码块进行帧内预测;明确地说,帧内估计单元102和帧内预测单元103用于确定待用以编码该视频编码块的帧内预测模式;运动补偿单元104和运动估计单元105用于执行所接收的视频编码块相对于一或多个参考帧中的一或多个块的帧间预测编码以提供时间预测信息;由运动估计单元105执行的运动估计为产生运动向量的过程,所述运动向量可以估计该视频编码块的运动,然后由运动补偿单元104基于由运动估计单元105所确定的运动向量执行运动补偿;在确定帧内预测模式之后,帧内预测单元103还用于将所选择的帧内预测数据提供到编码单元109,而且运动估计单元105将所计算确定的运动向量数据也发送到编码单元109;此外,反变换与反量化单元106是用于 该视频编码块的重构建,在像素域中重构建残差块,该重构建残差块通过滤波器控制分析单元107和滤波单元108去除方块效应伪影,然后将该重构残差块添加到解码图像缓存单元110的帧中的一个预测性块,用以产生经重构建的视频编码块;编码单元109是用于编码各种编码参数及量化后的变换系数,在基于CABAC的编码算法中,上下文内容可基于相邻编码块,可用于编码指示所确定的帧内预测模式的信息,输出该视频信号的码流;而解码图像缓存单元110是用于存放重构建的视频编码块,用于预测参考。随着视频图像编码的进行,会不断生成新的重构建的视频编码块,这些重构建的视频编码块都会被存放在解码图像缓存单元110中。
参见图5,其示出了本申请实施例提供的一种视频解码系统的组成框图示例;如图5所示,该视频解码系统20包括解码单元201、反变换与反量化单元202、帧内预测单元203、运动补偿单元204、滤波单元205和解码图像缓存单元206等,其中,解码单元201可以实现头信息解码以及CABAC解码,滤波单元205可以实现去方块滤波以及SAO滤波。输入的视频信号经过图4的编码处理之后,输出该视频信号的码流;该码流输入视频解码系统20中,首先经过解码单元201,用于得到解码后的变换系数;针对该变换系数通过反变换与反量化单元202进行处理,以便在像素域中产生残差块;帧内预测单元203可用于基于所确定的帧内预测模式和来自当前帧或图片的先前经解码块的数据而产生当前视频解码块的预测数据;运动补偿单元204是通过剖析运动向量和其他关联语法元素来确定用于视频解码块的预测信息,并使用该预测信息以产生正被解码的视频解码块的预测性块;通过对来自反变换与反量化单元202的残差块与由帧内预测单元203或运动补偿单元204产生的对应预测性块进行求和,而形成解码的视频块;该解码的视频信号通过滤波单元205以便去除方块效应伪影,可以改善视频质量;然后将经解码的视频块存储于解码图像缓存单元206中,解码图像缓存单元206存储用于后续帧内预测或运动补偿的参考图像,同时也用于视频信号的输出,即得到了所恢复的原始视频信号。
本申请实施例中的帧内预测方法,主要应用在如图4所示的帧内预测单元103部分和如图5所示的帧内预测单元203部分。也就是说,本申请实施例中的帧内预测方法,既可以应用于视频编码系统,也可以应用于视频解码系统,甚至还可以同时应用于视频编码系统和视频解码系统,但是本申请实施例不作具体限定。还需要说明的是,当该帧内预测方法应用于帧内预测单元103部分时,“当前块”具体是指帧内预测中的当前编码块;当该帧内预测方法应用于帧内预测单元203部分时,“当前块”具体是指帧内预测中的当前解码块。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请的一实施例提出了一种帧内预测方法,应用于解码器,图6为帧内预测方法的实现流程示意图一,如图6所示,解码器进行帧内预测的方法可以包括以下步骤:
步骤101、解码码流,确定当前块的帧内预测模式参数。
在本申请的实施例中,解码器可以通过解码码流,确定当前块的帧内预测模式参数。
需要说明的是,在本申请的实施中,帧内预测模式参数可以指示当前块是否可以使用帧内加权组合预测(intra weighted combined prediction,IWCP)模式,即指示当前块是否可以使用两种不同的帧内角度预测模式确定当前块的预测值。
可以理解的是,在本申请的实施例中,可以将帧内预测模式参数理解为一个表明是否使用了IWCP模式标志位。具体地,解码器解码码流,可以确定作为帧内预测模式参数的一个变量,从而可以通过该变量的取值来实现帧内预测模式参数的确定。
需要说明的是,在本申请的实施例中,IWCP模式为一种帧内预测方法,具体地,IWCP模式为对当前块确定两个不同的帧内角度预测模式,然后分别根据这两个不同的帧内角度预测模式确定出两个预测块,接着可以确定一个权重矩阵,将这两个预测块依据权重矩阵进行组合,最终便可以得到新的预测块,即获得当前块的预测块。
图7为IWCP模式的示意图,如图7所示,在对当前块进行帧内预测时,可以使用帧内角度预测模式1(第一帧内预测模式)确定当前块的第一预测块,同时使用帧内角度预测模式2(第二帧内预测模式)确定当前块的第二预测块,然后可以利用权重矩阵对第一预测块和第二预测块进行组合处理,最终获得一个新的预测块。
需要说明的是,在本申请的实施例中,视频图像可以划分为多个图像块,当前块即为每个当前待编码的图像块,可以称为编码块(Coding Block,CB)。这里,每个编码块可以包括第一图像分量、第二图像分量和第三图像分量。具体地,在本申请中,假定进行第一帧内预测,而且第一图像分量为亮度分量,即待预测图像分量为亮度分量,那么可以将待预测的编码块称为亮度块;或者,假定进行第二帧内预测,而且第二图像分量为色度分量,即待预测图像分量为色度分量,那么可以将待预测的编码块称为色度块。
进一步地,在本申请的实施例中,在应用IWCP模式时,可以对当前块的尺寸进行限制。
可以理解的是,由于本申请实施例提出的帧内预测方法需要分别使用两个不同的帧内角度预测模式生成两个预测块,再根据权重矩阵进行加权得到新的预测块,为了降低的复杂度,同时考虑压缩性能和复杂度的权衡,在本申请的实施例中,可以限制对一些大小的预测块不使用该IWCP模式。因此,在本申请中,解码器可以先确定当前块的尺寸参数,然后根据尺寸参数确定当前块是否使用IWCP模式。
需要说明的是,在本申请的实施例中,当前块的尺寸参数可以包括当前块的高度和宽度,因此,解码器可以利用当前块的高度和宽度对使用IWCP模式进行限制,即限制能够使用IWCP模式的预测块的尺寸。
示例性的,在本申请中,若宽度和高度均大于等于第一下限值,同时,宽度和高度均小于或等于第一上限值,那么便可以确定当前块使用IWCP模式。可见,一种可能的限制是仅仅在预测块的宽度和高度小于(或小于等于)第一上限值,且预测块的宽度和高度大于(或大于等于)第一下限值的情况下使用IWCP模式。其中,第一下限值可以是8,第一上限值的值可以是16或32等。
示例性的,在本申请中,可以有一个帧级的标志来确定当前待解码帧是否使用IWCP模式。如可以配置帧内帧(如I帧)使用IWCP模式,帧间帧(如B帧、P帧)不使用IWCP模式。或者可以配置帧内帧不使用IWCP模式,帧间帧使用IWCP模式。或者可以配置某些帧间帧使用IWCP模式,某些帧间帧不使用IWCP模式。帧间帧也可以 使用帧内预测,因而帧间帧也有可能使用IWCP模式。
示例性的,在本申请中,可以有一个帧级以下、CU级以上(如tile、slice、patch、LCU等)的标志来确定这一区域是否使用IWCP模式。
步骤102、当帧内预测模式参数指示当前块使用IWCP模式确定当前块的帧内预测值时,确定当前块的的第一模式索引和第二模式索引。
在本申请的实施例中,解码器在确定当前块的帧内预测模式参数之后,如果帧内预测模式参数指示当前块使用IWCP模式确定当前块的帧内预测值,那么解码器可以进一步确定当前块的第一模式索引和第二模式索引。
可以理解的是,在本申请的实施例中,第一模式索引用于对当前块使用的第一帧内预测模式进行指示,第二模式索引可以用于对当前块的第二帧内预测模式进行指示。
具体地,第一模式索引的值和第二模式索引的值是与第一帧内预测模式和第二帧内预测模式可能存在的帧内角度预测模式的数量相关的,例如,第一帧内预测模式和第二帧内预测模式可能分别为模式号为4-31的28种帧内角度预测模式中的一种,那么第一模式索引的值和第二模式索引的值均属于范围0~27。
示例性的,在本申请的实施例中,可以使用参数iwcp_pred_mode0_index表示第一模式索引,同时使用参数iwcp_pred_mode1_index表示第二模式索引。
步骤103、至少基于当前块的相邻块集合构建当前块的MPM列表。
在本申请的实施例中,解码器还可以至少基于当前块的相邻块集合构建当前块的MPM列表。其中,MPM列表中的预测模式均为帧内角度预测模式。
进一步地,在本申请的实施例中,解码器在构建当前块的MPM列表时,可以先确定当前块的权重矩阵导出模式,然后利用当前块的相邻块集合结合权重矩阵导出模式进一步确定当前块的MPM列表。
需要说明的是,在本申请中,权重矩阵导出模式用于对当前块使用的权重矩阵进行确定。具体地,权重矩阵导出模式可以是导出权重矩阵的模式。对于一个给定长度和宽度的预测块,每一种权重矩阵导出模式可以导出一个权重矩阵;对于同样大小的预测块,不同权重矩阵导出模式导出的权重矩阵不同。
示例性的,在本申请中,AVS3的AWP有56种权重矩阵导出模式,VVC的GPM有64种权重矩阵导出模式。
可选地,在本申请中,解码器在构建当前块的MPM列表时,可以先确定出当前块的权重矩阵导出模式,然后直接基于当前块的相邻块集合和权重矩阵导出模式,构建MPM列表。
可选地,在本申请中,解码器在构建当前块的MPM列表时,也可以先确定出当前块的权重矩阵导出模式,然后基于当前块的相邻块集合、预设角度预测模式集合以及权重矩阵导出模式,构建MPM列表。其中,预设角度预测模式集合可以为所有帧内角度预测模式的一个子集。以AVS3为例,预设角度预测模式集合可以仅包括模式号为5-30的26个帧内角度预测模式,也可以为仅包括模式号为6-31的26个帧内角度预测模式。
可以理解的是,在本申请中,如果不对第一帧内预测模式和第二帧内预测模式的范围进行限制,那么预设角度预测模式集合可以是所有帧内角度预测模式的组合;如果需要对第一帧内预测模式和第二帧内预测模式的范围进行限制,那么预设角度预测模式集合可以仅为部分帧内角度预测模式的组合,此时预设角度预测模式集合便可以用于对限制第一帧内预测模式和第二帧内预测模式的范围,从而有效地降低开销,提高压缩性能。
可选地,在本申请中,解码器在基于当前块的相邻块集合、预设角度预测模式集合以及权重矩阵导出模式,构建MPM列表时,可以利用相邻块集合中的候选块的预测模式确定第一候选模式;同时利用权重矩阵导出模式确定第二候选模式;然后可以进一步根据第一候选模式、第二候选模式以及预设角度预测模式集合,构建当前块的MPM列表。
具体地,在本申请中,解码器在利用相邻块集合中的候选块的预测模式确定第一候选模式时,对于所述相邻块集合中的一个候选块,若所述候选块为普通帧内预测块,且所述候选块的预测模式为帧内预测模式,则将所述候选块的预测模式确定为第一候选模式。
可以理解的是,在本申请中,普通帧内预测块表示使用DC模式、Planar模式、Bilinear模式、角度预测模式等预测模式的预测块,而不是使用帧内块复制(intra block copy,IBC)、串复制帧内预测intra string copy prediction等预测模式的预测块。
需要说明的是,在本申请的实施例中,解码器可以根据当前块的全部相邻块中的至少两个相邻块构建相邻块集合。具体地,解码器可以先确定出当前块的全部相邻块,然后再从全部相邻块中选择两个以上的相邻块添加至当前块的相邻块集合中。
也就是说,在本申请中,当前块的相邻块集合中包括有当前块的部分或者全部相邻块。
图8为相邻块的示意图,如图8所示,当前块为E,其中(x0,y0)是块E左上角样本在图像中的坐标,(x1,y0)是块E右上角样本在图像中的坐标,(x0,y1)是块E左下角样本在图像中的坐标。当前块E的相邻块A是样本(x0-1,y0)所在的块,当前块E的相邻块B是样本(x0,y0-1)所在的块,当前块E的相邻块C是样本(x1+1,y0-1)所在的块,当前块E的相邻块D是样本(x0-1,y0-1)所在的块,块E的相邻块F是样本(x0-1,y1)所在的块,块E的相邻块G是样本(x1,y0-1)所在的块。当前块E和它的相邻块A、B、C以及D的空间位置关系如图8所示。
可以理解的是,在本申请中,解码器还可以使用当前块更右边以及更下边的相邻块。
示例性的,在本申请的实施例中,当前块的相邻块集合中可以包括有当前块的全部相邻块,即相邻块集合中可以包括有相邻块A、B、C、D、F、G,进而可以使用相邻块A、B、C、D、F、G的预测模式作为参考;当前块的相邻块集合中也可以包括有当前块的部分相邻块,,即相邻块集合中可以包括有相邻块A、B,进而可以使用相邻块A、B的预测模式作为参考。
可选地,在本申请中,当前块的相邻块集合还可以为当前块的相邻块所组成的其他的集合形式,本申请不进行具体限定。
具体地,在本申请中,解码器在利用权重矩阵导出模式确定第二候选模式时,可以先根据权重矩阵导出模式确定分界线角度索引值;然后可以利用分界线角度索引值确定第二候选模式。
需要说明的是,在本申请的实施例中,可以确定第二候选模式为L个不同的帧内角度预测模式,从而可以保证长度为L的MPM列表的构建。
进一步地,在本申请的实施例中,在权重矩阵包括有两种权重的情况下,权重变化的位置构成一条直线,或者,在权重矩阵有多种权重的情况下,过渡区域中权重相同的位置构成一条直线,可以将这条直线叫做分界线。可以设水平向右的角度为0,角度逆时针增加。那么分界线可能有水平0度,竖直90度,倾斜的如45度,135度,以及其他各种不同的角度等。如果一个预测块选择使用某一个权重矩阵,那么对应的纹理很可能在分界线两边显现出不同的特性,比如分界线两边是两种不同角度的纹理,或者,分界线的一边是一种角度的纹理,而另一边是一种比较平坦的纹理。由于分界线本身也是有角度的,因此可以假设一个点经过帧内角度预测得到的,它可能与当前块的某些纹理是接近的,因而这条直线与当前块的两个帧内预测模式是存在相关性的。
具体地,在本申请中,假设分界线是由一个点经过帧内角度预测得到的,那么可以找到至少一个帧内角度预测模式,这个帧内角度预测模式可以近似地做出分界线。例如,水平方向的分界线就匹配水平帧内预测模式,如在AVS3中的模式24;竖直方向的分界线就匹配竖直帧内预测模式,如在AVS3中的模式12;45度的分界线可以匹配左下到右上45度的帧内预测模式,如AVS3中的模式30;也可以匹配右上到左下225度的帧内预测模式,如AVS3中的模式6。如果一个权重矩阵中只有一个权重值,它可以匹配DC模式、Planar模式、Bilinear模式等没有明显角度的模式。由此可见,权重矩阵导出模式就可以匹配到某些帧内预测模式,因此可以利用权重矩阵导出模式辅助帧内预测模式的解码。
需要说明的是,在本申请中,权重矩阵导出模式也可以为权重矩阵的索引,如AWP的56种模式就可以认为是56种权重矩阵导出模式。
示例性的,在本申请中,可以构建一个映射关系表来进一步表示权重矩阵导出模式与帧内角度预测模式之间的映射关系。具体地,AWP和GPM的多个模式的分界线都是同一个角度,比如AVS3的AWP每隔8个模式分界线角度是相同的。56种AWP模式共有8种分界线的角度。分界线角度的索引可以由权重矩阵导出模式的模式号模8(%8)得到。例如,表1为映射关系表,以AVS3的角度模式为例,分界线角度的索引0和1分别可以对应到两个帧内角度预测模式,一个从右上角到左下角,一个从左上角到右下角。具体实现时,可以为其他分界线角度的索引也找到另一个近似对应的帧内角度预测模式,或者所有的分界线角度的索引都只对应一种帧内角度预测模式。
表1
对一种权重矩阵来说,除了与其分界线对应的帧内角度预测模式使用的可能性高之外,和它相关的某些帧内角度预测模式使用的可能性也较高。比如说与这个分界线相近的角度,或这个分界线垂直的角度等对应的帧内角度预测模式。解码器可以利用权重矩阵与帧内角度预测模式的相关性来构建帧内加权组合预测模式的MPM列表。例如,在构建帧内加权组合预测模式的MPM列表时,如果MPM列表的列表长度为4,那么可以将如下表2中的分界线角度索引对应的候选模式加入MPM列表。
表2
分界线角度的索引 0 1 2 3 4 5 6 7
候选模式0 30 27 24 21 18 15 12 9
候选模式1 6 24 12 24 17 14 24 12
候选模式2 24 6 23 18 19 16 11 8
候选模式3 12 9 25 12 24 12 13 10
可以理解的是,基于上述表2,每个分界线角度的索引对应的候选模式个数与MPM列表的长度相等可以保证即使参考的相邻块的帧内预测模式全都不可用的情况下也能填满MPM列表。如MPM列表长度是4,就可以设每个分界线角度的索引对应的候选模式个数为4。
进一步地,在本申请中,解码器在根据第一候选模式、第二候选模式以及预设角度预测模式集合,构建MPM列表时,还可以基于预设角度预测模式集合对第一候选模式进行筛选处理,获得筛选后候选模式;根据筛选后候选模式和第二候选模式,构建MPM列表。
可选地,在本申请中,解码器在基于预设角度预测模式集合对第一候选模式进行筛选处理,获得筛选后候选模式时,若第一候选模式属于预设角度预测模式集合,则将第一候选模式确定为筛选后候选模式;若第一候选模式不属于预设角度预测模式集合,则在预设角度预测模式集合中确定第一候选模式的替换模式,并将替换模式确定为筛选后候选模式。
可选地,在本申请中,解码器在基于预设角度预测模式集合对第一候选模式进行筛选处理,获得筛选后候选模式时,若第一候选模式属于预设角度预测模式集合,则将第一候选模式确定为筛选后候选模式;若第一候选模式不属于预设角度预测模式集合,则删除第一候选模式,即不将第一候选模式确定为筛选后候选模式。
可以理解的是,在本申请中,由于第一帧内预测模式和第二帧内预测模式所属于的预设角度预测模式集合是所有帧内角度预测模式的一个子集,而不包括帧内非角度预测模式,因此,对于帧内加权组合预测模式,当前块的MPM的选择,即MPM列表的构建方法也需要做相应的调整。具体地,解码器在构建MPM列表时需要参考当前块周边的相邻块的帧内预测模式。周边的相邻块如左相邻块,上相邻块,左上相邻块,右上相邻块,左下相邻块等。由于空间上的相关性,周边的相邻块使用了某种预测模式,当前块就有较高的概率使用相同或相近的预测模式。
可选地,由于帧内加权组合预测模式的第一帧内预测模式和第二帧内预测模式都只能为帧内角度预测模式,因此,当某一个参考的相邻块使用的帧内预测模式不属于预设角度预测模式集合,那么解码器在构建当前块的MPM列表时就不使用这个参考块所使用的帧内非角度预测模式,即不将该帧内非角度预测模式加入到当前块的MPM列表。
可选地,由于第一帧内预测模式和第二帧内预测模式所属于的预设角度预测模式集合是所有帧内角度预测模式的一个子集,因此,当某一个参考的相邻块使用的帧内预测模式不属于预设角度预测模式集合,那么解码器在构建当前块的MPM列表时可以将该预设角度预测模式集合外的帧内角度预测模式转化为角度相近的、预设角度预测模式集合内的帧内角度预测模式,然后再加入MPM列表。以AVS3为例,如果预设角度预测模式集合限制第一帧内预测模式和第二帧内预测模式仅可使用模式号为5-30的26个帧内角度预测模式,而当前块的相邻块使用了43号帧内角度预测模式,那么解码器可以将与43号帧内角度预测相近的12号帧内角度预测加入到当前块在帧内加权组合预测模式下的MPM列表中。
进一步地,在本申请的实施例中,解码器在根据筛选后候选模式和第二候选模式,构建MPM列表时,若筛选后候选模式满足预设添加条件,则将筛选后候选模式添加至MPM列表;若MPM列表不满足预设列表长度L,且第二候选模式满足预设添加条件,则将第二候选模式添加至MPM列表;其中,L为大于等于1的整数。
示例性的,在本申请中,L的取值可以为2,即MPM列表的预设列表长度为2,或者说,MPM列表中包括有2个最可能模式。
示例性的,在本申请中,L的取值可以为4,即MPM列表的预设列表长度为4,或者说,MPM列表中包括由4个最可能模式。
可以理解的是,在本申请的实施例中,解码器可以按照模式号由小到大的顺序对MPM列表中的L个模式进行排序。
需要说明的是,在本申请的实施例中,如果筛选后候选模式与MPM列表中的预测模式均不相同,那么解码器可以确定筛选后候选模式满足预设添加条件;相应地,如果第二候选模式与所述MPM列表中的预测模式均不相同,那么解码器可以确定所述第二候选模式满足所述预设添加条件。
可以理解的是,在本申请的实施例中,解码器在将相邻块对应的筛选后候选模式添加至MPM列表时,可以确定候选块对应的顺序参数;按照顺序参数,依次将候选块对应的帧内筛选后候选模式添加至MPM列表。其中,解码器可以按照候选块与当前块之间的空间距离来确定对应的顺序参数,例如,候选块与当前块之间的空间距离越近,两者的相关性越强,越先进行添加处理,即顺序参数就越小;候选块与当前块之间的空间距离越远,两者的相关性越弱,越后进行添加处理,即顺序参数就越大。
进一步地,在本申请的实施例中,解码器在将筛选后候选模式和/或第二候选模式添加至MPM列表之后,还可以按照模式号由小到大的顺序对所述MPM列表中的L个预测模式进行排序处理。
需要说明的是,在本申请的实施例中,解码器在构建当前块的MPM列表时,还可以直接将默认的帧内角度预测模式确定为第二候选模式,而不是使用权重矩阵导出模式确定第二候选模式。
具体地,在本申请中,解码器在构建当前块的MPM列表时,可以先利用所述相邻块集合中的候选块的预测模式确定第一候选模式;利用预设候选模式集合确定第二候选模式;根据所述第一候选模式、所述第二候选模式以及所述预设角度预测模式集合,构建所述MPM列表。
可以理解的是,在本申请的实施例中,预设候选模式集合可以为解码器预先确定的、包括有至少L个帧内角度预测模式的集合。
进一步地,在本申请的实施例中,解码器在利用预设候选模式集合确定第二候选模式的过程中,可以参考MPM列表的列表长度L。
也就是说,在本申请的实施例中,为了保证长度为L的MPM列表一定能填满,解码器确定出L第二候选模式。其中,解码器可以根据权重矩阵导出模式选择第二候选模式,如根据权重矩阵的划分线的角度选择第二候选模式。解码器还可以直接将预设候选模式集合中的L个帧内角度预测模式确定第二候选模式,如MPM列表长度为2,可以使用水平模式和竖直模式作为第二候选模式。
示例性的,在本申请中,假设当前块在帧内加权组合预测模式下的MPM列表为IwcpMpm[2],即MPM列表的列表长度为2,权重矩阵导出模式的索引为IwcpIndex,权重矩阵导出模式复用AWP的56种导出模式,当前块的相邻块集合包括相邻块A和相邻块B,第一帧内预测模式和第二帧内预测模式所属的预设角度预测模式集合为模式号为5-30的26个帧内角度预测模式。那么解码器在构建当前块的MPM列表时,可以依次执行以下步骤:
步骤S1、设数组cand_mode[4],cand_mode的所有值初始化为无效值。对cand_mode执行如下操作:
(a)如果相邻块A“存在”且为普通帧内预测块,cand_mode[0]等于A的帧内预测模式,
(b)如果相邻块B“存在”且为普通帧内预测块,cand_mode[1]等于B的帧内预测模式,
(c)cand_mode[2]等于IwcpIndex%8对应的候选模式0,
(d)cand_mode[3]等于IwcpIndex%8对应的候选模式1,
其中,相邻块X(X为A、B、C、D、F或G)“存在”指该块应在图像内并且该块应与块E属于同一片;否则相邻块“不存在”。如果块“不存在”或者尚未解码,则此块“不可用”;否则此块“可用”。如果图像样本所在的块“不存在”或者此样本尚未解码,则此样本“不可用”;否则此样本“可用”。
可以理解的是,在本申请中,上述(a)至(b)的执行步骤即为第一候选模式的确定流程;上述(c)至(d)的执行步骤即为第二候选模式的确定流程,其中,解码器可以参照上述表2进行第二候选模式的确定。
步骤S2、对i从0到1,如果cand_mode[i]不在预设角度预测模式集合的范围之内,则将cand_mode[i]设为无效值。
也就是说,如果预设角度预测模式集合不包括第一候选模式,那么解码器可以直接删除第一候选模式,即不使 用第一候选模式。相应地,如果第一候选模式属于预设角度预测模式集合,那么解码器便可以直接使用第一候选模式,即第一候选模式即为筛选后候选模式。
可以理解的是,在本申请中,上述步骤S2即为第一候选模式的筛选流程,最终确定出对第一候选模式对应的筛选后候选模式。
步骤S3、记mpm_num为0,对i从0到3,执行如下操作:
(a)如果cand_mode[i]不是无效值,则执行如下操作:
将cand_mode[i]与IwcpMpm[j]比较,其中j为从0到mpm_num-1,如果cand_mode[i]与IwcpMpm[j]都不相等,执行如下操作:
1、令IwcpMpm[mpm_num]等于cand_mode[i],
2、令mpm_num等于mpm_num+1,
3、如果mpm_num等于2,则结束步骤3。
也就是说,在MPM列表中的预测模式还不足2个的前提下,如果筛选后候选模式与MPM列表中的任意一个预测模式不相同,那么解码器便可以将筛选后候选模式添加至MPM列表;如果在全部符合预设添加条件的筛选后候选模式添加至MPM列表之后,MPM列表中的预测模式还不足2,那么解码器可以继续将满足预设添加条件的第二候选模式添加至MPM列表,直到MPM列表的列表长度达到2。
步骤S4、对IwcpMpm[2]的2个数按由小到大排序。
最后,解码器可以对MPM列表中的2个帧内角度预测模式按照模式号的由小到大的顺序进行排序。
可以理解的是,本申请不对上述步骤102和步骤103的执行顺序进行限制,即不限制第一模式索引和第二模式索引的确定流程和MPM列表的构建流程之间的先后顺序。
步骤104、根据第一模式索引、第二模式索引以及MPM列表确定当前块的第一帧内预测模式和第二帧内预测模式;其中,第一帧内预测模式和第二帧内预测模式为两个不同的帧内角度预测模式。
在本申请的实施例中,解码器在确定出当前块的第一模式索引和第二模式索引,同时完成当前块的MPM列表的构建之后,可以进一步根据第一模式索引、第二模式索引以及MPM列表确定出当前块的第一帧内预测模式和第二帧内预测模式。
可以理解的是,在本申请的实施例中,第一帧内预测模式和第二帧内预测模式可以为两个不同的帧内角度预测模式。具体地,在本申请的实施例中,第一帧内预测模式和第二帧内预测模式可以分别为预设角度预测模式集合中的两个不同的帧内角度预测模式。
也就是说,在本申请中,第一帧内预测模式和第二帧内预测模式都只能为帧内角度预测模式,即第一帧内预测模式和第二帧内预测模式均不为除帧内角度预测模式以外的其他基本帧内预测模式,如帧内非角度预测模式,包括DC模式、Planar模式、PLANE模式、Bilinear模式、PCM模式等。其中,基本帧内预测模式包括但不限于角度预测模式和非角度预测模式。如VVC所使用的67种帧内预测模式,AVS3所使用的66种帧内预测模式。
可以理解的是,在本申请中,对第一帧内预测模式和第二帧内预测模式进行帧内角度预测模式的限制,一方面可以降低帧内加权组合预测模式的硬件实现复杂度,因为硬件以并行的方式实现帧内加权组合预测模式时只需要新增一组支持帧内角度加权预测的电路;另一方面是因为帧内加权组合预测模式本身适用的块内容相对复杂,而帧内非角度预测模式通常应对纹理变化比较均匀的场景,而且可使用的模式少了还可以减少开销,因而帧内加权组合预测模式使用或不使用帧内非角度预测模式对压缩性能几乎没有影响。
进一步地,在本申请中,虽然可使用的帧内角度预测模式越多,可以准确性更高的预测值,但是相应地在码流中传输所选模式的标志的开销也越大,因此,为了获得更好的压缩性能,可以选择一个合理的可用的帧内预测模式集合来实现预测效果和开销之间的更好的权衡。具体地,解码器可以使用预设角度预测模式集合对第一帧内预测模式和第二帧内预测模式可用的帧内角度预测模式进行限制,其中,预设角度预测模式集合是所有帧内角度预测模式的一个子集。以AVS3为例,AVS3有62种角度模式,即模式号为3-32、34-65的帧内角度预测模式。
可以理解的是,在本申请中,在MPM列表长度为2的情况下,限制第一帧内预测模式和第二帧内预测模式的预设角度预测模式集合可以包括以下多个集合中的任意一个集合:模式号为5-30的26个帧内角度预测模式构成的集合;模式号为6-31的26个帧内角度预测模式构成的集合;模式号为3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30的18个帧内角度预测模式构成的集合;模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式构成的集合。
示例性的,在本申请中,在MPM列表长度为2的情况下,预设角度预测模式集合可以包括26个帧内角度预测模式,例如模式号为5-30的26个帧内角度预测模式。
示例性的,在本申请中,在MPM列表长度为2的情况下,预设角度预测模式集合可以包括26个帧内角度预测模式,例如模式号为6-31的26个帧内角度预测模式。
示例性的,在本申请中,在MPM列表长度为2的情况下,预设角度预测模式集合可以包括18个帧内角度预测模式,例如这18个帧内角度预测模式的模式号集合为{3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30},其中包含了最常用的一些角度。
示例性的,在本申请中,在MPM列表长度为2的情况下,预设角度预测模式集合可以包括10个帧内角度预测模式,例如这10个帧内角度预测模式的模式号集合为{3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30},其中包含了最常用的一些角度,而且角度是均匀分布的。
可以理解的是,在本申请中,在MPM列表长度为4的情况下,限制第一帧内预测模式和第二帧内预测模式的预设角度预测模式集合可以包括以下多个集合中的任意一个集合:模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式构成的集合;模式号为4,6,8,10,11,12,13,14,16,17,18,19,20,22, 23,24,25,26,28,30的20个帧内角度预测模式构成的集合
示例性的,在本申请中,在MPM列表长度为4的情况下,预设角度预测模式集合可以包括12个帧内角度预测模式,例如这12个帧内角度预测模式的模式号集合为{6,8,10,12,14,16,18,20,22,24,26,28},其中,这个集合的每个模式的模式号之间差2,包含了最常用的一些角度,而且角度是均匀分布的。
示例性的,在本申请中,在MPM列表长度为4的情况下,预设角度预测模式集合可以包括20个帧内角度预测模式,例如这20个帧内角度预测模式的模式号集合为{4,6,8,10,11,12,13,14,16,17,18,19,20,22,23,24,25,26,28,30},其中包含了最常用的一些角度。
可选地,在本申请中,预设角度预测模式集合中的每一个模式号的分布可以是均匀的,即相邻模式的差相同,这样有利于编解码时模式的推导。
可选地,在本申请中,以VVC为例,第一帧内预测模式和第二帧内预测模式可仅使用模式号为偶数的帧内角度预测模式,或者,第一帧内预测模式和第二帧内预测模式可仅使用模式号为奇数的帧内角度预测模式。
需要说明的是,在本申请中,第一帧内预测模式使用的角度预测模式集合和第二帧内预测模式使用的角度预测模式集合不相同。可选地,解码器可以使用相同的预设角度预测模式集合对第一帧内预测模式和第二帧内预测模式进行限制,即如果第一个帧内预测模式仅可使用模式号为5-30的26个帧内角度预测模式,第二个帧内预测模式也可仅使用模式号为5-30的26个帧内角度预测模式,进而第一帧内预测模式和第二帧内预测模式可以使用相同的MPM列表,并使用相同或相近的编解码方法。也就是说,如果解码器使用不同的预设角度预测模式集合对第一帧内预测模式和第二帧内预测模式进行限制,那么需要对第一帧内预测模式和第二帧内预测模式需要使用不同的MPM列表或使用差别明显的编解码方法。
进一步地,在本申请的实施例中,解码器可以确定索引值与二元符号串的第一映射关系表;其中,第一映射关系表中分别包括至少两个长度的二元符号串。例如,第一映射关系表中分别包括第一长度、第二长度以及第三长度的二元符号串。
示例性的,在本申请中,第一长度为3比特,第二长度为5比特,第三长度为6比特。
需要说明的是,在本申请中,索引值与二元符号串的第一映射关系表可以用于对第一模式索引和第二模式索引的值进行确定。
可选地,在本申请中,在MPM列表长度为2的情况下,如果使用模式号为5-30的26个帧内角度预测模式,即预设角度预测模式集合中共包括有26个模式,那么可以使用2+8+16的形式编码,即2个最短的码字的模式,8个较短码字的模式,16个较长码字的模式。其中,2个最短的码字的模式使用3bit的码字,即使用第一长度,8个较短码字的模式使用5bit的码字,即使用第二长度,16个较长码字的模式使用6bit的码字,即使用第三长度。
可选地,在本申请中,在MPM列表长度为2的情况下,如果使用模式号为6-31的26个帧内角度预测模式,即预设角度预测模式集合中共包括有26个模式,那么可以使用2+8+16的形式编码,即2个最短的码字的模式,8个较短码字的模式,16个较长码字的模式。其中,2个最短的码字的模式使用3bit的码字,即使用第一长度,8个较短码字的模式使用5bit的码字,即使用第二长度,16个较长码字的模式使用6bit的码字,即使用第三长度。
也就是说,在本申请的实施例中,如果当前块的MPM列表的列表长度为2,那么MPM列表中的2个最可能模式可以对应使用第一长度的二元符号串,即2个最短码字的模式可以给MPM列表中的2个MPM使用;相应地,预设角度预测模式集合中、MPM列表以外的其他预测模式可以分别使用第二长度的二元符号串和第三长度的二元符号串。
可选地,在本申请中,对于预设角度预测模式集合中的、MPM列表中2个MPM以外的其他24个帧内角度预测模式,解码器可以对较短码字的模式和较长码字的模式进行均匀分布。具体地,解码器可以将8个较短码字(第二长度的二元符号串)的模式均匀分布在这剩余的24个帧内角度预测模式中。例如,每隔2个较长码字(第三长度的二元符号串)的模式使用1个较短码字(第二长度的二元符号串)的模式。进而在具体执行过程中,可以通过对剩余的24个帧内角度预测模式中的从0-23的序号模3(%3)来实现,例如序号模3余2的模式使用5bit码字,即使用第二长度的二元符号串,序号模3余0或1使用6bit码字,即使用第三长度的二元符号串。
进一步地,在本申请的实施例中,第一映射关系表中也可以分别包括第一长度和第二长度的二元符号串。其中,在本申请中,第一长度为2比特,第二长度为4比特或5比特。
可选地,在本申请中,在MPM列表长度为2的情况下,如果使用模式号为3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30的18个帧内角度预测模式,即预设角度预测模式集合中共包括有18个模式,那么可以使用2+16的形式编码,即2个最短的码字的模式,16个较短码字的模式。其中,2个最短的码字的模式使用2bit的码字,即使用第一长度,16个较短码字的模式使用5bit的码字,即使用第二长度。
可选地,在本申请中,在MPM列表长度为2的情况下,如果使用模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,即预设角度预测模式集合中共包括有10个模式,那么可以使用2+8的形式编码,即2个最短的码字的模式,8个较短码字的模式。其中,2个最短的码字的模式使用2bit的码字,即使用第一长度,8个较短码字的模式使用4bit的码字,即使用第二长度。
也就是说,在本申请的实施例中,如果当前块的MPM列表的列表长度为2,那么MPM列表中的2个最可能模式可以对应使用第一长度的二元符号串,即2个最短码字的模式可以给MPM列表中的2个MPM使用;相应地,预设角度预测模式集合中、MPM列表以外的其他预测模式可以分别使用第二长度的二元符号串的二元符号串。
示例性的,在本申请中,如果使用模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,即预设角度预测模式集合中共包括有10个模式,那么索引值与二元符号串的第一映射关系表可以如表3所示,其中,第一长度为2比特,第二长度为4比特。
表3
其中,可以以第一个比特位表示是否是MPM,比如“1”表示是MPM,“0”表示不是MPM。如果第一帧内预测模式是MPM,假设MPM列表中包括有2个MPM,那么可以使用1个比特位表示使用MPM列表中的哪一个MPM,即“0,1”分别表示MPM列表中的第一个MPM,第二个MPM。
进一步地,在本申请中,对比特标志为0的二元符号串使用上下文模型进行解码,对比特标志不为0的二元符号串不使用上下文模型进行解码。其中,比特标志的取值可以表示已经解码了多少个bit,比特标志可以用binIdx表示。
需要说明的是,在本申请中,对于解码侧,在根据表3进行反二值化时,可以对binIdx为0的二元符号串使用上下文模型进行解码,而binIdx不为0的二元符号串使用等概率模型或者旁路模式bypass进行解码。
进一步地,在本申请的实施例中,解码器可以确定索引值与二元符号串的第二映射关系表;其中,第二映射关系表中分别包括至少两个长度的二元符号串。例如,第二映射关系表中分别包括第一长度和第二长度的二元符号串。
示例性的,在本申请中,第一长度为3比特,第二长度为4比特或5比特。
需要说明的是,在本申请中,索引值与二元符号串的第二映射关系表可以用于对第一模式索引和第二模式索引的值进行确定。
可选地,在本申请中,在MPM列表长度为4的情况下,如果使用模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,即预设角度预测模式集合中共包括有12个模式,那么可以使用4+8的形式编码,即4个最短的码字的模式,8个较短码字的模式。其中,4个最短的码字的模式使用3bit的码字,即使用第一长度,8个较短码字的模式使用4bit的码字,即使用第二长度。
可选地,在本申请中,在MPM列表长度为4的情况下,如果使用模式号为4,6,8,10,11,12,13,14,16,17,18,19,20,22,23,24,25,26,28,30的20个帧内角度预测模式,即预设角度预测模式集合中共包括有20个模式,那么可以使用4+16的形式编码,即4个最短的码字的模式,16个较短码字的模式。其中,4个最短的码字的模式使用3bit的码字,即使用第一长度,16个较短码字的模式使用5bit的码字,即使用第二长度。
也就是说,在本申请的实施例中,如果当前块的MPM列表的列表长度为4,那么MPM列表中的4个最可能模式可以对应使用第一长度的二元符号串,即4个最短码字的模式可以给MPM列表中的4个MPM使用;相应地,预设角度预测模式集合中、MPM列表以外的其他预测模式可以分别使用第二长度的二元符号串的二元符号串。
示例性的,在本申请中,如果使用模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,即预设角度预测模式集合中共包括有12个模式,那么索引值与二元符号串的第二映射关系表可以如表4所示,其中,第一长度为3比特,第二长度为5比特。
表4
其中,可以以第一个比特位表示是否是MPM,比如“1”表示是MPM,“0”表示不是MPM。如果第一帧内预测模式是MPM,假设MPM列表中包括有4个MPM,那么可以使用2个比特位表示使用MPM列表中的哪一个MPM,即“00,01,10,11”分别表示MPM列表中的第一个MPM,第二个MPM,第三个MPM,第四个MPM。
进一步地,在本申请中,对比特标志为0的二元符号串使用上下文模型进行解码,对比特标志不为0的二元符号串不使用上下文模型进行解码。其中,比特标志的取值可以表示已经解码了多少个bit,比特标志可以用binIdx表 示。
需要说明的是,在本申请中,对于解码侧,在根据表4进行反二值化时,可以对binIdx为0的二元符号串使用上下文模型进行解码,而binIdx不为0的二元符号串使用等概率模型或者旁路模式bypass进行解码。
进一步地,在本申请中,如果预设角度预测模式集合包括模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,L=2,解码器在根据第一模式索引、第二模式索引以及MPM列表确定当前块的第一帧内预测模式和第二帧内预测模式时,可以先根据索引值与二元符号串的第一映射关系表确定第一模式索引的值i;其中,i为大于等于0的整数。若i大于等于0且小于L,则将MPM列表中的第(i+1)个角度预测模式确定为第一帧内预测模式;若i大于等于L,则利用预设角度预测模式集合和MPM列表确定第一帧内预测模式。
具体地,在本申请中,解码器在利用预设角度预测模式集合和MPM列表确定第一帧内预测模式时,可以根据i计算第一变量tmp1;若tmp1大于等于MPM列表中的第一个模式的模式号,则对tmp1和3进行求和运算;若(tmp1+3)大于等于MPM列表中的第二个模式的模式号,则对(tmp1+3)和3进行求和运算;将(tmp1+6)确定为第一帧内预测模式的模式号,并在预设角度预测模式集合中确定第一帧内预测模式。。
相应地,在本申请中,解码器在利用预设角度预测模式集合和MPM列表确定第一帧内预测模式时,若tmp1小于MPM列表中的第一个模式的模式号,则将tmp1确定为第一帧内预测模式的模式号,并在预设角度预测模式集合中确定第一帧内预测模式;或者,若(tmp1+3)小于MPM列表中的第二个模式的模式号,则将(tmp1+3)确定为第一帧内预测模式的模式号,并在预设角度预测模式集合中确定第一帧内预测模式。
示例性的,在本申请中,如果MPM列表中的2个MPM的模式号分别为9、15,基于如上述表3所示的索引值与二元符号串的第一映射关系表确定的第一模式索引的值i为5,那么在包括有模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式的预设角度预测模式集合中,5大于2,那么可以利用tmp1=(iwcp_pred_mode0_index-1)×3计算第一变量tmp1为12,然后将12与9相比,由于12大于9,那么可以对tmp1进行加3运算,即tmp1+3=15,由于(tmp1+3)等于MPM列表中的第二个模式的模式号15,那么可以对(tmp1+3)加3运算,最终将(tmp1+6)的值18确定为第一帧内预测模式的模式号,并在预设角度预测模式集合中将模式号为18的帧内角度预测模式确定第一帧内预测模式。
进一步地,在本申请中,解码器在根据第一模式索引、第二模式索引以及MPM列表确定当前块的第一帧内预测模式和第二帧内预测模式时,可以先根据第一映射关系表确定第二模式索引的值j;其中,j为大于等于0的整数。若j大于等于0且小于L,则将MPM列表中的第(i+1)个角度预测模式确定为第一帧内预测模式;若j大于等于L,则利用预设角度预测模式集合和MPM列表确定第一帧内预测模式。
具体地,在本申请中,解码器在利用预设角度预测模式集合和MPM列表确定第二帧内预测模式时,可以根据j计算第二变量tmp2;若tmp2大于等于MPM列表中的第一个模式的模式号,则对tmp2和3进行求和运算;若(tmp2+3)大于等于MPM列表中的第二个模式的模式号,则对(tmp2+3)和3进行求和运算;将(tmp2+6)确定为第二帧内预测模式的模式号,并在预设角度预测模式集合中确定第二帧内预测模式。
相应地,在本申请中,解码器在利用预设角度预测模式集合和MPM列表确定第二帧内预测模式时,若tmp2小于MPM列表中的第一个模式的模式号,则将tmp2确定为第二帧内预测模式的模式号,并在预设角度预测模式集合中确定第二帧内预测模式;或者,若(tmp2+3)小于MPM列表中的第二个模式的模式号,则将(tmp2+3)确定为第二帧内预测模式的模式号,并在预设角度预测模式集合中确定第二帧内预测模式。
示例性的,在本申请中,如果当前块使用IWCP模式,当前块的MPM列表的长度为2,即L=2,预设角度预测模式集合包括模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,解码器解码码流可以确定第一模式索引iwcp_pred_mode0_index和第二模式索引iwcp_pred_mode1_index,进而可以根据第一模式索引iwcp_pred_mode0_index和第二模式索引iwcp_pred_mode1_index导出第一帧内预测模式为IwcpPredMode0,第二帧内预测模式为IwcpPredMode1。
解码器在利用第一模式索引iwcp_pred_mode0_index确定第一帧内预测模式IwcpPredMode0时,具体可以执行如下操作:
1、按照表3对二元符号串进行反二值化,确定iwcp_pred_mode0_index的值为i。
具体地,在根据解码确定的二元符号串形式的iwcp_pred_mode0_index之后,可以按照表3对二元符号串进行反二值化确定,即根据iwcp_pred_mode0_index从表3的右栏中找到匹配的二元符号串,然后从同一行的左栏中确定iwcp_pred_mode0_index的值i。
2、如果i大于等于0且小于2,那么IwcpPredMode0等于IwcpMpm[i]。
3、如果i大于等于2,那么记第一变量tmp1,并执行如下操作:
(a)tmp1等于(iwcp_pred_mode0_index-1)×3
(b)如果tmp1大于等于IwcpMpm[0],tmp1等于tmp1+3
(c)如果tmp1大于等于IwcpMpm[1],tmp1等于tmp1+3
(d)IwcpPredMode0等于tmp1。
也就是说,在本申请中,如果第一帧内预测模式IwcpPredMode0不属于MPM列表,而是预设角度预测模式集合中的、MPM列表中的MPM以外的其他8个帧内角度预测模式,那么解码器可以根据第一模式索引iwcp_pred_mode0_index的值i计算获得第一变量tmp1,其中,tmp1=(iwcp_pred_mode0_index-1)×3,然后,解码器可以将第一变量tmp1依次与MPM列表中的每一个角度预测模式的模式号进行比较,根据比较结果选择是否进行加3运算,最终计算出第一帧内预测模式的模式号,并按照该模式号在预设角度预测模式集合中确定第一帧内预测模式。
解码器在利用第二模式索引iwcp_pred_mode1_index确定第二帧内预测模式IwcpPredMode1时,具体可以执行如 下操作:
1、按照表3对二元符号串进行反二值化,确定iwcp_pred_mode1_index的值为j。
具体地,在根据解码确定的二元符号串形式的iwcp_pred_mode1_index之后,可以按照表3对二元符号串进行反二值化确定,即根据iwcp_pred_mode1_index从表3的右栏中找到匹配的二元符号串,然后从同一行的左栏中确定iwcp_pred_mode1_index的值j。
2、如果j大于等于0且小于2,那么IwcpPredMode1等于IwcpMpm[i]。
3、如果j大于等于2,记第二变量tmp2,并执行如下操作:
(a)tmp2等于(iwcp_pred_mode1_index-1)×3
(b)如果tmp2大于等于IwcpMpm[0],tmp2等于tmp2+3
(c)如果tmp2大于等于IwcpMpm[1],tmp2等于tmp2+3
(d)IwcpPredMode1等于tmp2。
进一步地,在本申请的实施例中,由于帧内加权组合预测模式需要使用第一帧内预测模式和第二帧内预测模式对当前块的预测值进行确定,其中,第一帧内预测模式和第二帧内预测模式可以共享一个预设角度预测模式集合,还可以共享同一个MPM列表,但是,帧内加权组合预测模式中第一帧内预测模式和第二帧内预测模式并不相同,因此,在进行第二帧内预测模式的编解码时,可以参考第一帧内预测模式,具体地,在确定第二帧内预测模式时,可以将第一帧内预测模式排除掉。
也就是说,在本申请中,在确定第二帧内预测模式时,既可以采用与确定第一帧内预测模式相同的方法,也可以在第一帧内预测模式是MPM模式的情况下,第二帧内预测模式可选的MPM模式少一个,其他方式相同。
可选地,如果MPM列表长度为2,在编解码时,使用2个最短的二元符号串表示MPM模式,一种可能的方法是最短的二元符号串长度为2。如果第一帧内预测模式是MPM模式,那么第二帧内预测模式可选的MPM只有一个,这时对第二帧内预测模式可以只用长度为1的二元符号串表示MPM模式。
进一步地,在本申请中,如果预设角度预测模式集合包括模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,L=4,解码器在根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式时,可以先根据索引值与二元符号串的第二映射关系表确定第一模式索引的值i;其中,i为大于等于0的整数。若i大于等于0且小于L,则将所述MPM列表中的第(i+1)个角度预测模式确定为所述第一帧内预测模式;若i大于等于L,则利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式。
具体地,在本申请中,解码器在利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式时,可以根据i计算第一变量tmp1;若tmp1大于等于所述MPM列表中的第一个模式的模式号,则对tmp1和2进行求和运算;若(tmp1+2)大于等于所述MPM列表中的第二个模式的模式号,则对(tmp1+2)和2进行求和运算;若(tmp1+4)大于等于所述MPM列表中的第三个模式的模式号,则对(tmp1+4)和2进行求和运算;若(tmp1+6)大于等于所述MPM列表中的第四个模式的模式号,则对(tmp1+6)和6进行求和运算;将(tmp1+8)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式。
相应地,在本申请中,解码器在利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式时,若tmp1小于所述MPM列表中的第一个模式的模式号,则将tmp1确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式;或者,若(tmp1+2)小于所述MPM列表中的第二个模式的模式号,则将(tmp1+2)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式;或者,若(tmp1+4)小于所述MPM列表中的第三个模式的模式号,则将(tmp1+4)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式;或者,若(tmp1+6)小于所述MPM列表中的第四个模式的模式号,则将(tmp1+6)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式。
示例性的,在本申请中,如果MPM列表中的4个MPM的模式号分别为10,12,14,16,基于如上述表4所示的索引值与二元符号串的第一映射关系表确定的第一模式索引的值i为6,那么在包括有模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式的预设角度预测模式集合中,6大于4,那么可以利用tmp1=(iwcp_pred_mode0_index+2)×2计算第一变量tmp1为16,然后将16大于10,那么可以对tmp1进行加2运算,即tmp1+2=18,由于(tmp1+2)大于MPM列表中的第二个模式的模式号12,那么可以对(tmp1+2)加2运算,即tmp1+4=20,由于(tmp1+2)大于MPM列表中的第三个模式的模式号14,那么可以对(tmp1+2)加2运算,即tmp1+6=22,由于(tmp1+6)大于MPM列表中的第四个模式的模式号16,那么可以对(tmp1+6)加2运算,最终将(tmp1+8)的值24确定为第一帧内预测模式的模式号,并在预设角度预测模式集合中将模式号为24的帧内角度预测模式确定所述第一帧内预测模式。
进一步地,在本申请中,解码器在根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式时,可以先根据所述第二映射关系表确定所述第二模式索引的值j;其中,j为大于等于0的整数。若j大于等于0且小于L,则将所述MPM列表中的第(i+1)个角度预测模式确定为所述第一帧内预测模式;若j大于等于L,则利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式。
具体地,在本申请中,解码器在利用所述预设角度预测模式集合和所述MPM列表确定所述第二帧内预测模式时,可以根据j计算第二变量tmp2;若tmp2大于等于所述MPM列表中的第一个模式的模式号,则对tmp2和2进行求和运算;若(tmp2+2)大于等于所述MPM列表中的第二个模式的模式号,则对(tmp2+2)和2进行求和运算;若(tmp2+4)大于等于所述MPM列表中的第三个模式的模式号,则对(tmp2+4)和2进行求和运算;若(tmp2+6)大于等于所述MPM列表中的第四个模式的模式号,则对(tmp2+6)和2进行求和运算;将(tmp2+8)确定为所述 第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式。
相应地,在本申请中,解码器在利用所述预设角度预测模式集合和所述MPM列表确定所述第二帧内预测模式时,若tmp2小于所述MPM列表中的第一个模式的模式号,则将tmp2确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式;或者,若(tmp2+2)小于所述MPM列表中的第二个模式的模式号,则将(tmp2+2)确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式;或者,若(tmp2+4)小于所述MPM列表中的第三个模式的模式号,则将(tmp2+4)确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式;或者,若(tmp2+6)小于所述MPM列表中的第四个模式的模式号,则将(tmp2+6)确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式。
示例性的,在本申请中,如果当前块使用IWCP模式,当前块的MPM列表的长度为4,即L=4,预设角度预测模式集合包括模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,解码器解码码流可以确定第一模式索引iwcp_pred_mode0_index和第二模式索引iwcp_pred_mode1_index,进而可以根据第一模式索引iwcp_pred_mode0_index和第二模式索引iwcp_pred_mode1_index导出第一帧内预测模式为IwcpPredMode0,第二帧内预测模式为IwcpPredMode1。
解码器在利用第一模式索引iwcp_pred_mode0_index确定第一帧内预测模式IwcpPredMode0时,具体可以执行如下操作:
1、按照表4对二元符号串进行反二值化,确定iwcp_pred_mode0_index的值为i。
具体地,在根据解码确定的二元符号串形式的iwcp_pred_mode0_index之后,可以按照表4对二元符号串进行反二值化确定,即根据iwcp_pred_mode0_index从表4的右栏中找到匹配的二元符号串,然后从同一行的左栏中确定iwcp_pred_mode0_index的值i。
2、如果i大于等于0且小于4,那么IwcpPredMode0等于IwcpMpm[i]。
3、如果i大于等于4,那么记第一变量tmp1,并执行如下操作:
(a)tmp1等于(iwcp_pred_mode0_index+2)×2
(b)如果tmp1大于等于IwcpMpm[0],tmp1等于tmp1+2
(c)如果tmp1大于等于IwcpMpm[1],tmp1等于tmp1+2
(d)如果tmp1大于等于IwcpMpm[2],tmp1等于tmp1+2
(e)如果tmp1大于等于IwcpMpm[3],tmp1等于tmp1+2
(f)IwcpPredMode0等于tmp1。
也就是说,在本申请中,如果第一帧内预测模式IwcpPredMode0不属于MPM列表,而是预设角度预测模式集合中的、MPM列表中的MPM以外的其他8个帧内角度预测模式,那么解码器可以根据第一模式索引iwcp_pred_mode0_index的值i计算获得第一变量tmp1,其中,tmp1=(iwcp_pred_mode0_index+2)×2,然后,解码器可以将第一变量tmp1依次与MPM列表中的每一个角度预测模式的模式号进行比较,根据比较结果选择是否进行加2运算,最终计算出第一帧内预测模式的模式号,并按照该模式号在预设角度预测模式集合中确定第一帧内预测模式。
解码器在利用第二模式索引iwcp_pred_mode1_index确定第二帧内预测模式IwcpPredMode1时,具体可以执行如下操作:
1、按照表4对二元符号串进行反二值化,确定iwcp_pred_mode1_index的值为j。
具体地,在根据解码确定的二元符号串形式的iwcp_pred_mode1_index之后,可以按照表4对二元符号串进行反二值化确定,即根据iwcp_pred_mode1_index从表4的右栏中找到匹配的二元符号串,然后从同一行的左栏中确定iwcp_pred_mode1_index的值j。
2、如果j大于等于0且小于4,那么IwcpPredMode1等于IwcpMpm[i]。
3、如果j大于等于4,记第二变量tmp2,并执行如下操作:
(a)tmp2等于(iwcp_pred_mode1_index+2)×2
(b)如果tmp2大于等于IwcpMpm[0],tmp2等于tmp2+2
(c)如果tmp2大于等于IwcpMpm[1],tmp2等于tmp2+2
(d)如果tmp2大于等于IwcpMpm[2],tmp2等于tmp2+2
(e)如果tmp2大于等于IwcpMpm[3],tmp2等于tmp2+2
(f)IwcpPredMode1等于tmp2。
进一步地,在本申请的实施例中,由于帧内加权组合预测模式需要使用第一帧内预测模式和第二帧内预测模式对当前块的预测值进行确定,其中,第一帧内预测模式和第二帧内预测模式可以共享一个预设角度预测模式集合,还可以共享同一个MPM列表,但是,帧内加权组合预测模式中第一帧内预测模式和第二帧内预测模式并不相同,因此,在进行第二帧内预测模式的编解码时,可以参考第一帧内预测模式,具体地,在确定第二帧内预测模式时,可以将第一帧内预测模式排除掉。
也就是说,在本申请中,在确定第二帧内预测模式时,既可以采用与确定第一帧内预测模式相同的方法,也可以在第一帧内预测模式是MPM模式的情况下,第二帧内预测模式可选的MPM模式少一个,其他方式相同。
可以理解的是,在本申请中,对于12个帧内角度预测模式,由于在上述2+8的编解码方式中,MPM列表中的4个MPM出现的概率很高(第一帧内预测模式是MPM列表中的4个MPM其中之一的概率约有50%,第二帧内预测模式是MPM列表中的4个MPM其中之一的概率约有50%),如果第一帧内预测模式和第二帧内预测模式都是MPM列表中的MPM,那么在确定第二帧内预测模式时,只能从MPM列表中的、第一帧内预测模式外的其他3个MPM 中选择一个即可。这样从原来4选1,需要4个3bit的码字就可以变成3选1,需要1个2bit的码字和2个3bit的码字。相应地,如果第一帧内预测模式和第二帧内预测模式都不是MPM列表中的MPM,那么第二帧内预测模式也可以从8个帧内角度预测模式中去掉1个,但这样的影响就比较小了。
由此可见,对于第一帧内预测模式和第二帧内预测模式都是MPM列表中的MPM的情况,可以选择在进行第二帧内预测模式的确定时,先针对第一帧内预测模式执行删除处理,从而可以减少开销。
需要说明的是,在本申请中,如果对预设角度预测模式集合中所有的模式的表示都按照如表3、表4所示的一组二元符号串来进行表示,那么可以将“码字”理解为二元符号串。码字的长度可以理解为二元符号串的长度。另一种表示方法是用标志位(flag)加二元符号串。比如用一个二元的MPM_flag表示当前模式是否MPM模式,即如果MPM_flag为1表示当前模式是MPM模式,如果MPM_flag为0表示当前模式不是MPM模式,如果当前模式是MPM模式,MPM总共有4种可能,再用2bit的二元符号串来表示当前模式是哪一个MPM。那么码字可以理解为标志位加二元符号串,码字的长度可以理解为标志位加二元符号串的长度。
步骤105、确定当前块的权重矩阵,并基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,确定当前块的预测值。
在本申请的实施例中,解码器需要确定当前块的权重矩阵,从而在确定出当前块使用的第一帧内预测模式和第二帧内预测模式之后,还基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,进一步确定当前块的预测值。
具体地,在本申请中,解码器可以根据当前块的权重矩阵导出模式确定当前块的权重矩阵。
进一步地,在本申请中,解码器在基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值时,可以先根据所述第一帧内预测模式确定所述当前块的第一预测值;根据所述第二帧内预测模式确定所述当前块的第二预测值;然后利用所述权重矩阵对所述第一预测值和所述第二预测值进行加权运算,获得所述当前块的预测值。
可以理解的是,在本申请中,第一帧内预测模式和第二帧内预测模式可以都是帧内角度预测模式,即本申请实施例使用两个不同的帧内角度预测模式。然后利用第一帧内预测模式和第二帧内预测模式组合,分别生成第一预测块和第二预测块,进而基于第一预测块和第二预测块,结合权重矩阵,确定当前块的预测块。
进一步地,在本申请的实施例中,所有可能的权重矩阵中并非每一个权重矩阵的所有的点的权重都相同。换句话说,至少有一个可能的权重矩阵中包含至少两个不同的权重值。
需要说明的是,在本申请的实施例中,解码器可以采用类似于GPM或AWP的方法来实现权重矩阵的确定。具体地,如果同一个编解码标准或编解码器中使用了GPM或AWP,那么可以使用该方法来确定权重矩阵,这样可以做到复用部分相同的逻辑。如AVS3帧间预测使用了AWP,那么在AVS3中可以使用AWP的方法来确定权重矩阵。当然也可以使用和同一个编解码标准或编解码器中的GPM或AWP不同方法,比如使用不同的模式数,或者不同的过渡区域算法,或者使用不同的参数等。因为帧间预测利用了时域上的相关性,它使用的是参考帧中已重建的图像作为参考块。而帧内预测利用了空域上的相关性,它使用的是当前块周边已重建的像素作为参考像素。空域上距离越近相关性越强,距离越远相关性越差。所以如果某种权重矩阵使得一个预测块使用的得到的像素位置都距离参考像素较远,那么这部分可能做不出比现有技术更合适的预测值,那么可以不使用这样的权重矩阵,而在帧间预测中可以使用。
本申请实施例提供一种帧内预测方法,编解码器可以通过两种不同的帧内角度预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。
基于上述实施例,在本申请的再一实施例中,下述预测样本矩阵即为上文所述的预测块,即“块”可以理解为“样本矩阵”,文本中提到的阵列即为矩阵的意思。可以以IWCP作用于亮度分量的预测为例,但是本发明并不只限于亮度分量,也可以用于色度分量以及其他任何格式的任何分量。以在AVS3中应用本申请提出的帧内预测方法为例,解码器使用帧内加权组合预测模式确定当前块的预测值的具体过程可以描述如下:
需要说明的是,在一个具体的解码实施例中,由于AVS3中使用了AWP技术,帧内加权组合预测(IWCP)模式的权重矩阵复用AWP的权重矩阵,即IWCP的权重矩阵导出方式和AWP的权重矩阵导出方式相同。
示例性的,可以使用一个序列级的标志(flag)来确定当前待解码序列是否使用IWCP模式。比如:
序列头定义见表5:
表5
其中,帧内加权组合预测模式的允许标志iwcp_enable_flag为二值变量,具体地,iwcp_enable_flag值为‘1’表示可使用帧内加权组合预测模式;值为‘0’表示不应使用帧内加权组合预测模式。IwcpEnableFlag的值等于iwcp_enable_flag。如果位流中不存在iwcp_enable_flag,则IwcpEnableFlag的值为0。
示例性的,可以使用一个帧级的标志来确定当前待解码帧是否使用IWCP模式。如可以配置帧内帧(如I帧)使用IWCP模式,帧间帧(如B帧、P帧)不使用IWCP模式。或者可以配置帧内帧不使用IWCP模式,帧间帧使用 IWCP模式。或者可以配置某些帧间帧使用IWCP模式,某些帧间帧不适用IWCP模式。
示例性的,可以使用一个帧级以下、CU级以上(如tile、slice、patch、LCU等)的标志来确定这一区域是否使用IWCP模式。
示例性的,解码器解码当前CU,如果当前CU符合IWCP的使用条件,解码当前CU的IWCP使用标志。否则不需要解码当前CU的IWCP使用标志。IWCP的使用条件可以为当前CU为帧内编码的CU(下面的IntraCuFlag为1)且当前序列可使用IWCP(下面的IwcpEnableFlag为1)且当前块的尺寸符合限制,(下面的width>=IwcpMinSize&&height>=IwcpMinSize&&width<=IwcpMaxSize&&height<=IwcpMaxSize)其中一个可能的情况是IwcpMinSize等于8,IwcpMaxSize等于32。一个可能的情况是IwcpMinSize等于8,IwcpMaxSize等于16。其中width是当前CU的宽度,height是当前CU的高度。
示例性的,对于YUV4:2:0格式的编码,亮度的8×8的块对应相同位置的色度的4×4的块,一种可能的方法是允许亮度的8×8的块使用IWCP模式但禁止色度的4×4的块使用IWCP模式。因为4×4的块进行IWCP模式的预测效果提升并不明显,另一方面增加了硬件的实现代价。
示例性的,如果当前CU使用IWCP,那么当前CU不会使用如衍生模式(Derived Tree,DT)、帧内预测滤波(Intra Prediction Filter,IPF)、改进型帧内预测(Improved Intra Prediction,IIP)等一些其他模式。,即当前CU使用IWCP的话就不需要处理这些模式的相关的信息。这是因为IWCP与这些模式叠加之后的预测效果并不能得到明显地提升。反而,如果当前CU使用IWCP,默认不使用衍生模式DT、帧内预测滤波IPF、改进型帧内预测IIP,便不需要在码流中传输它们是否使用的标志,如dt_split_flag,intra_pf_flag,iip_flag,可以节省码字,有利于压缩效率。
例如下表6所示:
表6
其中,帧内加权组合预测标志iwcp_flag为二值变量,iwcp_flag值为‘1’表示应使用帧内加权组合预测模式模式;值为‘0’表示不应使用帧内加权组合预测模式。IwcpFlag的值等于iwcp_flag的值。如果位流中不存在iwcp_flag,IwcpFlag的值为0。
其中,衍生模式划分标志dt_split_flag为二值变量。dt_split_flag值为‘1’表示应进行衍生模式划分;值为‘0’表示不应进行衍生模式划分。DtSplitFlag的值等于dt_split_flag的值,取值范围是0~4。如果位流中不存在dt_split_flag,DtSplitFlag的值为0。衍生模式划分表示可以在当前CU的基础上划分矩形的预测单元。
其中,帧内预测滤波标志intra_pf_flag为二值变量。intra_pf_flag值为‘1’表示当前编码单元应使用帧内预测滤波;值为‘0’表示当前编码单元不应使用帧内预测滤波。IntraPfFlag的值等于intra_pf_flag的值。如果位流中不存在intra_pf_flag,IntraPfFlag的值为0。帧内预测滤波可以在产生初始预测值以后利用参考像素对初始预测值进行滤波产生新的预测值。
其中,改进型帧内预测标志iip_flag为二值变量。iip_flag值为‘1’表示当前编码单元应使用改进型帧内预测;值为‘0’表示当前编码单元不应使用改进型帧内预测。IipFlag的值等于iip_flag的值。如果位流中不存在iip_flag,IipFlag的值为0。改进型帧内预测可以使用与不使用改进型预测时不同的滤波器产生预测值。一个例子是对某种角度预测,改进型帧内预测使用8抽头滤波器产生预测值。不使用改进型帧内预测时使用4抽头滤波器产生预测值。
示例性的,如果当前CU使用IWCP,那么需要解码码流并确定权重矩阵导出模式iwcp_idx和2个帧内预测模式的第一模式索引iwcp_pred_mode0_index和第二模式索引iwcp_pred_mode1_index,如下表7所示。其中,权重矩阵导出模式复用AWP的权重矩阵导出模式。
表7
其中,帧内加权组合预测模式索引iwcp_idx,用于确定帧内加权组合预测模式的权重矩阵,IwcpIndex的值等于iwcp_idx的值。如果位流中不存在iwcp_idx,IwcpIndex的值等于0。
帧内加权组合预测模式中的第一模式索引iwcp_pred_mode0_index,用于确定帧内加权组合预测模式的亮度块的第一帧内预测模式IwcpPredMode0。
帧内加权组合预测模式中的第二模式索引iwcp_pred_mode1_index,用于确定帧内加权组合预测模式的亮度块的第二帧内预测模式IwcpPredMode1
进一步地,在确定第一帧内预测模式和第二帧内预测模式以后,基于上述实施例中步骤105提出的方法,可以在根据IwcpPredMode0确定第一帧内亮度预测样本矩阵predMatrixY0,根据IwcpPredMode1确定第二帧内亮度预测样本矩阵predMatrixY1,并根据IwcpIndex确定亮度权重矩阵IwcpWeightMatrixY之后,利用亮度权重矩阵IwcpWeightMatrixY对第一帧内亮度预测样本矩阵predMatrixY0和第二帧内亮度预测样本矩阵predMatrixY1进行加权运算,最终确定亮度预测样本矩阵predMatrixIwcpY。
具体地,在根据两个帧内亮度预测样本矩阵predMatrixY0、predMatrixY1以及权重矩阵IwcpWeightMatrixY确定IWCP的亮度预测样本矩阵predMatrixIwcpY时。具体方法如下:
帧内加权组合预测模式的预测样本矩阵predMatrixIwcpY中的元素predMatrixIwcpY[x][y]的值是((predMatrixY0[x][y]*IwcpWeightMatrixY[x][y]+predMatrixY1[x][y]*(8-IwcpWeightMatrixY[x][y])+4)>>3)。其中(x,y)是当前块的内的坐标位置。
进一步地,在确定了IWCP的预测块,即帧内加权组合预测模式的预测样本矩阵predMatrixIwcpY后,后续的处理还可以包括量化系数的解码,反变换、反量化确定残差块,以及残差块和预测块组合成重建块,以及后续的环路滤波等。
本申请实施例提供一种帧内预测方法,编解码器可以通过两种不同的帧内角度预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。
本申请的一实施例提出了一种帧内预测方法,应用于编码器,图9为帧内预测方法的实现流程示意图二,如图11所示,编码器进行帧内预测的方法可以包括以下步骤:
步骤201、当当前块使用IWCP模式确定当前块的帧内预测值时,确定当前块的第一帧内预测模式和第二帧内预测模式;其中,第一帧内预测模式和第二帧内预测模式为两个不同的帧内角度预测模式。
在本申请的实施例中,如果确定当前块使用IWCP模式确定当前块的帧内预测值,那么编码器可以先确定当前块的第一帧内预测模式和第二帧内预测模式;其中,第一帧内预测模式和第二帧内预测模式为两个不同的帧内角度预测模式。
需要说明的是,在本申请的实施例中,IWCP模式为一种帧内预测方法,具体地,IWCP模式为对当前块确定两个不同的帧内角度预测模式,然后分别根据这两个不同的帧内角度预测模式确定出两个预测块,接着可以确定一个权重矩阵,将这两个预测块依据权重矩阵进行组合,最终便可以得到新的预测块,即获得当前块的预测块。
进一步地,在本申请的实施例中,在应用IWCP模式时,可以对当前块的尺寸进行限制。
可以理解的是,由于本申请实施例提出的帧内预测方法需要分别使用两个不同的帧内角度预测模式生成两个预测块,再根据权重矩阵进行加权得到新的预测块,为了降低的复杂度,同时考虑压缩性能和复杂度的权衡,在本申请的实施例中,可以限制对一些大小的预测块不使用该IWCP模式。因此,在本申请中,编码器可以先确定当前块的尺寸参数,然后根据尺寸参数确定当前块是否使用IWCP模式。
需要说明的是,在本申请的实施例中,当前块的尺寸参数可以包括当前块的高度和宽度,因此,编码器可以利用当前块的高度和宽度对使用IWCP模式进行限制,即限制能够使用IWCP模式的预测块的尺寸。
示例性的,在本申请中,若宽度和高度均大于等于第一下限值,同时,宽度和高度均小于或等于第一上限值,那么便可以确定当前块使用IWCP模式。可见,一种可能的限制是仅仅在预测块的宽度和高度小于(或小于等于)第一上限值,且预测块的宽度和高度大于(或大于等于)第一下限值的情况下使用IWCP模式。其中,第一下限值可以是8,第一上限值的值可以是16或32等。
示例性的,对于YUV4:2:0格式的编码,亮度的8×8的块对应相同位置的色度的4×4的块,一种可能的方法是允许亮度的8×8的块使用IWCP模式但禁止色度的4×4的块使用IWCP模式。因为4×4的块进行IWCP模式的预测效果提升并不明显,另一方面增加了硬件的实现代价。
示例性的,在本申请中,可以有一个帧级的标志来确定当前待解码帧是否使用IWCP模式。如可以配置帧内帧(如I帧)使用IWCP模式,帧间帧(如B帧、P帧)不使用IWCP模式。或者可以配置帧内帧不使用IWCP模式, 帧间帧使用IWCP模式。或者可以配置某些帧间帧使用IWCP模式,某些帧间帧不使用IWCP模式。帧间帧也可以使用帧内预测,因而帧间帧也有可能使用IWCP模式。
示例性的,在本申请中,可以有一个帧级以下、CU级以上(如tile、slice、patch、LCU等)的标志来确定这一区域是否使用IWCP模式。
可以理解的是,在本申请的实施例中,编码器可以确定出最小率失真化的帧内预测模式与权重矩阵导出模式的组合,其中,该组合包括有第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式。
进一步地,在本申请的实施例中,第一帧内预测模式和第二帧内预测模式可以为两个不同的帧内角度预测模式。具体地,在本申请的实施例中,第一帧内预测模式和第二帧内预测模式可以分别为预设角度预测模式集合中的两个不同的帧内角度预测模式。
也就是说,在本申请中,第一帧内预测模式和第二帧内预测模式都只能为帧内角度预测模式,即第一帧内预测模式和第二帧内预测模式均不为除帧内角度预测模式以外的其他基本帧内预测模式,如帧内非角度预测模式,包括DC模式、Planar模式、PLANE模式、Bilinear模式、PCM模式等。其中,基本帧内预测模式包括但不限于角度预测模式和非角度预测模式。如VVC所使用的67种帧内预测模式,AVS3所使用的66种帧内预测模式。
可以理解的是,在本申请中,对第一帧内预测模式和第二帧内预测模式进行帧内角度预测模式的限制,一方面可以降低帧内加权组合预测模式的硬件实现复杂度,因为硬件以并行的方式实现帧内加权组合预测模式时只需要新增一组支持帧内角度加权预测的电路;另一方面是因为帧内加权组合预测模式本身适用的块内容相对复杂,而帧内非角度预测模式通常应对纹理变化比较均匀的场景,而且可使用的模式少了还可以减少开销,因而帧内加权组合预测模式使用或不使用帧内非角度预测模式对压缩性能几乎没有影响。
进一步地,在本申请中,虽然可使用的帧内角度预测模式越多,可以准确性更高的预测值,但是相应地在码流中传输所选模式的标志的开销也越大,因此,为了获得更好的压缩性能,可以选择一个合理的可用的帧内预测模式集合来实现预测效果和开销之间的更好的权衡。具体地,编码器可以使用预设角度预测模式集合对第一帧内预测模式和第二帧内预测模式可用的帧内角度预测模式进行限制,其中,预设角度预测模式集合是所有帧内角度预测模式的一个子集。以AVS3为例,AVS3有62种角度模式,即模式号为3-32、34-65的帧内角度预测模式。
可以理解的是,在本申请中,在MPM列表长度为2的情况下,限制第一帧内预测模式和第二帧内预测模式的预设角度预测模式集合可以包括以下多个集合中的任意一个集合:模式号为5-30的26个帧内角度预测模式构成的集合;模式号为6-31的26个帧内角度预测模式构成的集合;模式号为3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30的18个帧内角度预测模式构成的集合;模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式构成的集合。
示例性的,在本申请中,在MPM列表长度为2的情况下,预设角度预测模式集合可以包括26个帧内角度预测模式,例如模式号为5-30的26个帧内角度预测模式。
示例性的,在本申请中,在MPM列表长度为2的情况下,预设角度预测模式集合可以包括26个帧内角度预测模式,例如模式号为6-31的26个帧内角度预测模式。
示例性的,在本申请中,在MPM列表长度为2的情况下,预设角度预测模式集合可以包括18个帧内角度预测模式,例如这18个帧内角度预测模式的模式号集合为{3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30},其中包含了最常用的一些角度。
示例性的,在本申请中,在MPM列表长度为2的情况下,预设角度预测模式集合可以包括10个帧内角度预测模式,例如这10个帧内角度预测模式的模式号集合为{3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30},其中包含了最常用的一些角度,而且角度是均匀分布的。
可以理解的是,在本申请中,在MPM列表长度为4的情况下,限制第一帧内预测模式和第二帧内预测模式的预设角度预测模式集合可以包括以下多个集合中的任意一个集合:模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式构成的集合;模式号为4,6,8,10,11,12,13,14,16,17,18,19,20,22,23,24,25,26,28,30的20个帧内角度预测模式构成的集合
示例性的,在本申请中,在MPM列表长度为4的情况下,预设角度预测模式集合可以包括12个帧内角度预测模式,例如这12个帧内角度预测模式的模式号集合为{6,8,10,12,14,16,18,20,22,24,26,28},其中,这个集合的每个模式的模式号之间差2,包含了最常用的一些角度,而且角度是均匀分布的。
示例性的,在本申请中,在MPM列表长度为4的情况下,预设角度预测模式集合可以包括20个帧内角度预测模式,例如这20个帧内角度预测模式的模式号集合为{4,6,8,10,11,12,13,14,16,17,18,19,20,22,23,24,25,26,28,30},其中包含了最常用的一些角度。
可选地,在本申请中,预设角度预测模式集合中的每一个模式号的分布可以是均匀的,即相邻模式的差相同,这样有利于编解码时模式的推导。
可选地,在本申请中,以VVC为例,第一帧内预测模式和第二帧内预测模式可仅使用模式号为偶数的帧内角度预测模式,或者,第一帧内预测模式和第二帧内预测模式可仅使用模式号为奇数的帧内角度预测模式。
需要说明的是,在本申请中,第一帧内预测模式使用的角度预测模式集合和第二帧内预测模式使用的角度预测模式集合不相同。可选地,解码器可以使用相同的预设角度预测模式集合对第一帧内预测模式和第二帧内预测模式进行限制,即如果第一个帧内预测模式仅可使用模式号为5-30的26个帧内角度预测模式,第二个帧内预测模式也可仅使用模式号为5-30的26个帧内角度预测模式,进而第一帧内预测模式和第二帧内预测模式可以使用相同的MPM列表,并使用相同或相近的编解码方法。也就是说,如果解码器使用不同的预设角度预测模式集合对第一帧内预测模式和第二帧内预测模式进行限制,那么需要对第一帧内预测模式和第二帧内预测模式需要使用不同的MPM列表或使用差别明显的编解码方法。
步骤202、至少基于当前块的相邻块集合构建当前块的MPM列表。
在本申请的实施例中,编码器还可以至少基于当前块的相邻块集合构建当前块的MPM列表。其中,MPM列表中的预测模式均为帧内角度预测模式。
进一步地,在本申请的实施例中,编码器在构建当前块的MPM列表时,可以先确定当前块的权重矩阵导出模式,然后利用当前块的相邻块集合结合权重矩阵导出模式进一步确定当前块的MPM列表。
需要说明的是,在本申请中,权重矩阵导出模式用于对当前块使用的权重矩阵进行确定。具体地,权重矩阵导出模式可以是导出权重矩阵的模式。对于一个给定长度和宽度的预测块,每一种权重矩阵导出模式可以导出一个权重矩阵;对于同样大小的预测块,不同权重矩阵导出模式导出的权重矩阵不同。
示例性的,在本申请中,AVS3的AWP有56种权重矩阵导出模式,VVC的GPM有64种权重矩阵导出模式。
可选地,在本申请中,解码器在构建当前块的MPM列表时,可以先确定当前块的权重矩阵导出模式,然后直接基于当前块的相邻块集合和权重矩阵导出模式,构建MPM列表。
可选地,在本申请中,编码器在至少基于当前块的相邻块集合构建当前块的MPM列表时,也可以先确定当前块的权重矩阵导出模式,然后基于当前块的相邻块的预测模式、预设角度预测模式集合以及所述权重矩阵导出模式,构建所述MPM列表。其中,预设角度预测模式集合可以为所有帧内角度预测模式的一个子集。以AVS3为例,预设角度预测模式集合可以仅包括模式号为5-30的26个帧内角度预测模式,也可以为仅包括模式号为6-31的26个帧内角度预测模式。
可以理解的是,在本申请中,如果不对第一帧内预测模式和第二帧内预测模式的范围进行限制,那么预设角度预测模式集合可以是所有帧内角度预测模式的组合;如果需要对第一帧内预测模式和第二帧内预测模式的范围进行限制,那么预设角度预测模式集合可以仅为部分帧内角度预测模式的组合,此时预设角度预测模式集合便可以用于对限制第一帧内预测模式和第二帧内预测模式的范围,从而有效地降低开销,提高压缩性能。
可选地,在本申请中,编码器在基于当前块的相邻块集合、预设角度预测模式集合以及权重矩阵导出模式,构建所述MPM列表时,可以先利用所述相邻块集合中的候选块的预测模式确定第一候选模式;同时利用所述权重矩阵导出模式确定第二候选模式;然后可以进一步根据所述第一候选模式、所述第二候选模式以及所述预设角度预测模式集合,构建当前块的MPM列表。
具体地,在本申请中,编码器在利用所述相邻块集合中的候选块的预测模式确定第一候选模式时,对于所述相邻块集合中的一个候选块,若所述候选块为普通帧内预测块,且所述候选块的预测模式为帧内预测模式,则将所述候选块的预测模式确定为第一候选模式。
可以理解的是,在本申请中,普通帧内预测块表示使用DC模式、Planar模式、Bilinear模式、角度预测模式等预测模式的预测块,而不是使用IBC模式、串复制帧内预测intra string copy prediction等预测模式的预测块。
需要说明的是,在本申请的实施例中,编码器可以根据当前块的全部相邻块中的至少两个相邻块构建相邻块集合。具体地,编码器可以先确定出当前块的全部相邻块,然后再从全部相邻块中选择两个以上的相邻块添加至当前块的相邻块集合中。
也就是说,在本申请中,当前块的相邻块集合中包括有当前块的部分或者全部相邻块。
具体地,在本申请中,编码器在利用所述权重矩阵导出模式确定第二候选模式时,可以先根据所述权重矩阵导出模式确定分界线角度索引值;然后可以利用所述分界线角度索引值确定所述第二候选模式。
需要说明的是,在本申请的实施例中,可以确定第二候选模式为L个不同的帧内角度预测模式,从而可以保证长度为L的MPM列表的构建。
进一步地,在本申请的实施例中,在权重矩阵包括有两种权重的情况下,权重变化的位置构成一条直线,或者,在权重矩阵有多种权重的情况下,过渡区域中权重相同的位置构成一条直线,可以将这条直线叫做分界线。可以设水平向右的角度为0,角度逆时针增加。那么分界线可能有水平0度,竖直90度,倾斜的如45度,135度,以及其他各种不同的角度等。如果一个预测块选择使用某一个权重矩阵,那么对应的纹理很可能在分界线两边显现出不同的特性,比如分界线两边是两种不同角度的纹理,或者,分界线的一边是一种角度的纹理,而另一边是一种比较平坦的纹理。由于分界线本身也是有角度的,因此可以假设一个点经过帧内角度预测得到的,它可能与当前块的某些纹理是接近的,因而这条直线与当前块的两个帧内预测模式是存在相关性的。
具体地,在本申请中,假设分界线是由一个点经过帧内角度预测得到的,那么可以找到至少一个帧内角度预测模式,这个帧内角度预测模式可以近似地做出分界线。例如,水平方向的分界线就匹配水平帧内预测模式,如在AVS3中的模式24;竖直方向的分界线就匹配竖直帧内预测模式,如在AVS3中的模式12;45度的分界线可以匹配左下到右上45度的帧内预测模式,如AVS3中的模式30;也可以匹配右上到左下225度的帧内预测模式,如AVS3中的模式6。如果一个权重矩阵中只有一个权重值,它可以匹配DC模式、Planar模式、Bilinear模式等没有明显角度的模式。由此可见,权重矩阵导出模式就可以匹配到某些帧内预测模式,因此可以利用权重矩阵导出模式辅助帧内预测模式的解码。
需要说明的是,在本申请中,权重矩阵导出模式也可以为权重矩阵的索引,如AWP的56种模式就可以认为是56种权重矩阵导出模式。
示例性的,在本申请中,可以构建一个映射关系表来进一步表示权重矩阵导出模式与帧内角度预测模式之间的映射关系。具体地,AWP和GPM的多个模式的分界线都是同一个角度,比如AVS3的AWP每隔8个模式分界线角度是相同的。56种AWP模式共有8种分界线的角度。分界线角度的索引可以由权重矩阵导出模式的模式号模8(%8)得到。例如,上述表1为映射关系表,以AVS3的角度模式为例,分界线角度的索引0和1分别可以对应到两个帧内角度预测模式,一个从右上角到左下角,一个从左上角到右下角。具体实现时,可以为其他分界线角度的索引也找到另一个近似对应的帧内角度预测模式,或者所有的分界线角度的索引都只对应一种帧内角度预测模式。
对一种权重矩阵来说,除了与其分界线对应的帧内角度预测模式使用的可能性高之外,和它相关的某些帧内角度预测模式使用的可能性也较高。比如说与这个分界线相近的角度,或这个分界线垂直的角度等对应的帧内角度预测模式。编码器可以利用权重矩阵与帧内角度预测模式的相关性来构建帧内加权组合预测模式的MPM列表。例如,在构建帧内加权组合预测模式的MPM列表时,如果MPM列表的列表长度为4,那么可以将如上述表2中的分界线角度索引对应的候选模式加入MPM列表。
可以理解的是,基于上述表2,每个分界线角度的索引对应的候选模式个数与MPM列表的长度相等可以保证即使参考的相邻块的帧内预测模式全都不可用的情况下也能填满MPM列表。如MPM列表长度是4,就可以设每个分界线角度的索引对应的候选模式个数为4。
进一步地,在本申请中,编码器在根据所述第一候选模式、第二候选模式以及所述预设角度预测模式集合,构建所述MPM列表时,还可以基于所述预设角度预测模式集合对所述第一候选模式进行筛选处理,获得筛选后候选模式;根据所述筛选后候选模式和所述第二候选模式,构建MPM列表。
可选地,在本申请中,编码器在基于所述预设角度预测模式集合对所述第一候选模式进行筛选处理,获得筛选后候选模式时,若所述第一候选模式属于所述预设角度预测模式集合,则将所述第一候选模式确定为所述筛选后候选模式;若所述第一候选模式不属于所述预设角度预测模式集合,则在所述预设角度预测模式集合中确定所述第一候选模式的替换模式,并将所述替换模式确定为所述筛选后候选模式。
可选地,在本申请中,编码器在基于预设角度预测模式集合对第一候选模式进行筛选处理,获得筛选后候选模式时,若第一候选模式属于预设角度预测模式集合,则将第一候选模式确定为筛选后候选模式;若第一候选模式不属于预设角度预测模式集合,则删除第一候选模式,即不将第一候选模式确定为筛选后候选模式。
可以理解的是,在本申请中,由于第一帧内预测模式和第二帧内预测模式所属于的预设角度预测模式集合是所有帧内角度预测模式的一个子集,而不包括帧内非角度预测模式,因此,对于帧内加权组合预测模式,当前块的MPM的选择,即MPM列表的构建方法也需要做相应的调整。具体地,编码器在构建MPM列表时需要参考当前块周边的相邻块的帧内预测模式。周边的相邻块如左相邻块,上相邻块,左上相邻块,右上相邻块,左下相邻块等。由于空间上的相关性,周边的相邻块使用了某种预测模式,当前块就有较高的概率使用相同或相近的预测模式。
可选地,由于帧内加权组合预测模式的第一帧内预测模式和第二帧内预测模式都只能为帧内角度预测模式,因此,当某一个参考的相邻块使用的帧内预测模式不属于预设角度预测模式集合,那么编码器在构建当前块的MPM列表时就不使用这个参考块所使用的帧内非角度预测模式,即不将该帧内非角度预测模式加入到当前块的MPM列表。
可选地,由于第一帧内预测模式和第二帧内预测模式所属于的预设角度预测模式集合是所有帧内角度预测模式的一个子集,因此,当某一个参考的相邻块使用的帧内预测模式不属于预设角度预测模式集合,那么编码器在构建当前块的MPM列表时可以将该预设角度预测模式集合外的帧内角度预测模式转化为角度相近的、预设角度预测模式集合内的帧内角度预测模式,然后再加入MPM列表。以AVS3为例,如果预设角度预测模式集合限制第一帧内预测模式和第二帧内预测模式仅可使用模式号为5-30的26个帧内角度预测模式,而当前块的相邻块使用了43号帧内角度预测模式,那么编码器可以将与43号帧内角度预测相近的12号帧内角度预测加入到当前块在帧内加权组合预测模式下的MPM列表中。
进一步地,在本申请的实施例中,编码器在根据所述筛选后候选模式和所述第二候选模式,构建所述MPM列表时,若所述筛选后候选模式满足预设添加条件,则将所述筛选后候选模式添加至所述MPM列表;若所述MPM列表不满足预设列表长度L,且所述第二候选模式满足所述预设添加条件,则将所述第二候选模式添加至所述MPM列表;其中,L为大于等于1的整数。
示例性的,在本申请中,L的取值可以为2,即MPM列表的预设列表长度为2,或者说,MPM列表中包括有2个最可能模式。
示例性的,在本申请中,L的取值可以为4,即MPM列表的预设列表长度为4,或者说,MPM列表中包括由4个最可能模式。
可以理解的是,在本申请的实施例中,编码器可以按照模式号由小到大的顺序对所述MPM列表中的L个模式进行排序。
需要说明的是,在本申请的实施例中,如果筛选后候选模式与所述MPM列表中的预测模式均不相同,那么编码器可以确定所述筛选后候选模式满足所述预设添加条件;相应地,如果第二候选模式与所述MPM列表中的预测模式均不相同,那么编码器可以确定所述第二候选模式满足所述预设添加条件。
可以理解的是,在本申请的实施例中,编码器在将相邻块对应的筛选后候选模式添加至MPM列表时,确定候选块对应的顺序参数;按照顺序参数,依次将候选块对应的帧内筛选后候选模式添加至MPM列表。其中,编码器可以按照候选块与当前块之间的空间距离来确定对应的顺序参数,例如,候选块与当前块之间的空间距离越近,两者的相关性越强,越先进行添加处理,即顺序参数就越小;候选块与当前块之间的空间距离越远,两者的相关性越弱,越后进行添加处理,即顺序参数就越大。
进一步地,在本申请的实施例中,编码器在将筛选后候选模式和/或第二候选模式添加至MPM列表之后,还可以按照模式号由小到大的顺序对所述MPM列表中的L个预测模式进行排序处理。
需要说明的是,在本申请的实施例中,编码器在构建当前块的MPM列表时,还可以直接将默认的帧内角度预测模式确定为第二候选模式,而不是使用权重矩阵导出模式确定第二候选模式。
具体地,在本申请中,编码器在构建当前块的MPM列表时,可以先利用所述相邻块集合中的候选块的预测模式确定第一候选模式;利用预设候选模式集合确定第二候选模式;根据所述第一候选模式、所述第二候选模式以及所述预设角度预测模式集合,构建所述MPM列表。
可以理解的是,在本申请的实施例中,预设候选模式集合可以为编码器预先确定的、包括有至少L个帧内角度 预测模式的集合。
进一步地,在本申请的实施例中,编码器在利用预设候选模式集合确定第二候选模式的过程中,可以参考MPM列表的列表长度L。
也就是说,在本申请的实施例中,为了保证长度为L的MPM列表一定能填满,编码器确定出L第二候选模式。其中,编码器可以根据权重矩阵导出模式选择第二候选模式,如根据权重矩阵的划分线的角度选择第二候选模式。编码器还可以直接将预设候选模式集合中的L个帧内角度预测模式确定第二候选模式,如MPM列表长度为2,可以使用水平模式和竖直模式作为第二候选模式。
示例性的,在本申请中,假设当前块在帧内加权组合预测模式下的MPM列表为IwcpMpm[2],即MPM列表的列表长度为2,权重矩阵导出模式的索引为IwcpIndex,权重矩阵导出模式复用AWP的56种导出模式,当前块的相邻块集合包括相邻块A和相邻块B,第一帧内预测模式和第二帧内预测模式所属的预设角度预测模式集合为模式号为5-30的26个帧内角度预测模式。那么编码器在构建当前块的MPM列表时,可以依次执行以下步骤:
步骤S1、设数组cand_mode[4],cand_mode的所有值初始化为无效值。对cand_mode执行如下操作:
(a)如果相邻块A“存在”且为普通帧内预测块,cand_mode[0]等于A的帧内预测模式,
(b)如果相邻块B“存在”且为普通帧内预测块,cand_mode[1]等于B的帧内预测模式,
(c)cand_mode[2]等于IwcpIndex%8对应的候选模式0,
(d)cand_mode[3]等于IwcpIndex%8对应的候选模式1,
其中,相邻块X(X为A、B、C、D、F或G)“存在”指该块应在图像内并且该块应与块E属于同一片;否则相邻块“不存在”。如果块“不存在”或者尚未解码,则此块“不可用”;否则此块“可用”。如果图像样本所在的块“不存在”或者此样本尚未解码,则此样本“不可用”;否则此样本“可用”。
可以理解的是,在本申请中,上述(a)至(b)的执行步骤即为第一候选模式的确定流程;上述(c)至(d)的执行步骤即为第二候选模式的确定流程,其中,编码器可以参照上述表2进行第二候选模式的确定。
步骤S2、对i从0到1,如果cand_mode[i]不在预设角度预测模式集合的范围之内,则将cand_mode[i]设为无效值。
也就是说,如果预设角度预测模式集合不包括第一候选模式,那么编码器可以直接删除第一候选模式,即不使用第一候选模式。相应地,如果第一候选模式属于预设角度预测模式集合,那么编码器便可以直接使用第一候选模式,即第一候选模式即为筛选后候选模式。
可以理解的是,在本申请中,上述步骤S2即为第一候选模式的筛选流程,最终确定出对第一候选模式对应的筛选后候选模式。
步骤S3、记mpm_num为0,对i从0到3,执行如下操作:
(a)如果cand_mode[i]不是无效值,则执行如下操作:
将cand_mode[i]与IwcpMpm[j]比较,其中j为从0到mpm_num-1,如果cand_mode[i]与IwcpMpm[j]都不相等,执行如下操作:
1、令IwcpMpm[mpm_num]等于cand_mode[i],
2、令mpm_num等于mpm_num+1,
3、如果mpm_num等于2,则结束步骤3。
也就是说,在MPM列表中的预测模式还不足2个的前提下,如果筛选后候选模式与MPM列表中的任意一个预测模式不相同,那么编码器便可以将筛选后候选模式添加至MPM列表;如果在全部符合预设添加条件的筛选后候选模式添加至MPM列表之后,MPM列表中的预测模式还不足2,那么编码器可以继续将满足预设添加条件的第二候选模式添加至MPM列表,直到MPM列表的列表长度达到2。
步骤S4、对IwcpMpm[2]的2个数按由小到大排序。
最后,编码器可以对MPM列表中的2个帧内角度预测模式按照模式号的由小到大的顺序进行排序。
可以理解的是,本申请不对上述步骤202和步骤203的执行顺序进行限制,即不限制第一帧内预测模式和第二帧内预测模式的确定流程和MPM列表的构建流程之间的先后顺序。
步骤203、根据第一帧内预测模式、第二帧内预测模式以及MPM列表确定当前块的第一模式索引和第二模式索引。
在本申请的实施例中,编码器在确定出当前块的第一帧内预测模式和第二帧内预测模式,同时完成当前块的MPM列表的构建之后,可以进一步根据第一帧内预测模式、第二帧内预测模式以及MPM列表确定出当前块的第一模式索引和第二模式索引。
可以理解的是,在本申请的实施例中,第一模式索引可以用于对当前块使用的第一帧内预测模式进行指示,第二模式索引可以用于对当前块的第二帧内预测模式进行指示。
具体地,第一模式索引的值和第二模式索引的值是与第一帧内预测模式和第二帧内预测模式可能存在的帧内角度预测模式的数量相关的,例如,第一帧内预测模式和第二帧内预测模式可能分别为模式号为5-30的26个帧内角度预测模式中的一种,那么第一模式索引的值和第二模式索引的值均属于范围0~25。
示例性的,在本申请的实施例中,可以使用参数iwcp_pred_mode0_index表示第一模式索引,同时使用参数iwcp_pred_mode1_index表示第二模式索引。
进一步地,在本申请的实施例中,编码器可以确定索引值与二元符号串的第一映射关系表;其中,第一映射关系表中分别包括至少两个长度的二元符号串。例如,第一映射关系表中分别包括第一长度、第二长度以及第三长度的二元符号串。
示例性的,在本申请中,第一长度为3比特,第二长度为5比特,第三长度为6比特。
需要说明的是,在本申请中,索引值与二元符号串的第一映射关系表可以用于对第一模式索引和第二模式索引的值进行确定。
可选地,在本申请中,在MPM列表长度为2的情况下,如果使用模式号为5-30的26个帧内角度预测模式,即预设角度预测模式集合中共包括有26个模式,那么可以使用2+8+16的形式编码,即2个最短的码字的模式,8个较短码字的模式,16个较长码字的模式。其中,2个最短的码字的模式使用3bit的码字,即使用第一长度,8个较短码字的模式使用5bit的码字,即使用第二长度,16个较长码字的模式使用6bit的码字,即使用第三长度。
可选地,在本申请中,在MPM列表长度为2的情况下,如果使用模式号为6-31的26个帧内角度预测模式,即预设角度预测模式集合中共包括有26个模式,那么可以使用2+8+16的形式编码,即2个最短的码字的模式,8个较短码字的模式,16个较长码字的模式。其中,2个最短的码字的模式使用3bit的码字,即使用第一长度,8个较短码字的模式使用5bit的码字,即使用第二长度,16个较长码字的模式使用6bit的码字,即使用第三长度。
也就是说,在本申请的实施例中,如果当前块的MPM列表的列表长度为2,那么MPM列表中的2个最可能模式可以对应使用第一长度的二元符号串,即2个最短码字的模式可以给MPM列表中的2个MPM使用;相应地,预设角度预测模式集合中、MPM列表以外的其他预测模式可以分别使用第二长度的二元符号串和第三长度的二元符号串。
可选地,在本申请中,对于预设角度预测模式集合中的、MPM列表中2个MPM以外的其他24个帧内角度预测模式,解码器可以对较短码字的模式和较长码字的模式进行均匀分布。具体地,解码器可以将8个较短码字(第二长度的二元符号串)的模式均匀分布在这剩余的24个帧内角度预测模式中。例如,每隔2个较长码字(第三长度的二元符号串)的模式使用1个较短码字(第二长度的二元符号串)的模式。进而在具体执行过程中,可以通过对剩余的24个帧内角度预测模式中的从0-23的序号模3(%3)来实现,例如序号模3余2的模式使用5bit码字,即使用第二长度的二元符号串,序号模3余0或1使用6bit码字,即使用第三长度的二元符号串。
进一步地,在本申请的实施例中,第一映射关系表中也可以分别包括第一长度和第二长度的二元符号串。其中,在本申请中,第一长度为2比特,第二长度为4比特或5比特。
可选地,在本申请中,在MPM列表长度为2的情况下,如果使用模式号为3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30的18个帧内角度预测模式,即预设角度预测模式集合中共包括有18个模式,那么可以使用2+16的形式编码,即2个最短的码字的模式,16个较短码字的模式。其中,2个最短的码字的模式使用2bit的码字,即使用第一长度,16个较短码字的模式使用5bit的码字,即使用第二长度。
可选地,在本申请中,在MPM列表长度为2的情况下,如果使用模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,即预设角度预测模式集合中共包括有10个模式,那么可以使用2+8的形式编码,即2个最短的码字的模式,8个较短码字的模式。其中,2个最短的码字的模式使用2bit的码字,即使用第一长度,8个较短码字的模式使用4bit的码字,即使用第二长度。
也就是说,在本申请的实施例中,如果当前块的MPM列表的列表长度为2,那么MPM列表中的2个最可能模式可以对应使用第一长度的二元符号串,即2个最短码字的模式可以给MPM列表中的2个MPM使用;相应地,预设角度预测模式集合中、MPM列表以外的其他预测模式可以分别使用第二长度的二元符号串的二元符号串。
示例性的,在本申请中,如果使用模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,即预设角度预测模式集合中共包括有10个模式,那么索引值与二元符号串的第一映射关系表可以如上述表3所示,其中,第一长度为2比特,第二长度为4比特。
需要说明的是,在本申请中,对于编码侧,在根据表3进行二值化时,可以对binIdx为0的二元符号串使用上下文模型进行编码,而binIdx不为0的二元符号串使用等概率模型或者旁路模式bypass进行编码。
进一步地,在本申请中,对比特标志为0的二元符号串使用上下文模型进行解码,对比特标志不为0的二元符号串不使用上下文模型进行解码。其中,比特标志的取值可以表示已经解码了多少个bit,比特标志可以用binIdx表示。
需要说明的是,在本申请中,对于编码侧,在根据表3进行二值化时,可以对binIdx为0的二元符号串使用上下文模型进行解码,而binIdx不为0的二元符号串使用等概率模型或者旁路模式bypass进行解码。
进一步地,在本申请的实施例中,编码器可以确定索引值与二元符号串的第二映射关系表;其中,第二映射关系表中分别包括至少两个长度的二元符号串。例如,第二映射关系表中分别包括第一长度和第二长度的二元符号串。
示例性的,在本申请中,第一长度为3比特,第二长度为4比特或5比特。
需要说明的是,在本申请中,索引值与二元符号串的第二映射关系表可以用于对第一模式索引和第二模式索引的值进行确定。
可选地,在本申请中,在MPM列表长度为4的情况下,如果使用模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,即预设角度预测模式集合中共包括有12个模式,那么可以使用4+8的形式编码,即4个最短的码字的模式,8个较短码字的模式。其中,4个最短的码字的模式使用3bit的码字,即使用第一长度,8个较短码字的模式使用4bit的码字,即使用第二长度。
可选地,在本申请中,在MPM列表长度为4的情况下,如果使用模式号为4,6,8,10,11,12,13,14,16,17,18,19,20,22,23,24,25,26,28,30的20个帧内角度预测模式,即预设角度预测模式集合中共包括有20个模式,那么可以使用4+16的形式编码,即4个最短的码字的模式,16个较短码字的模式。其中,4个最短的码字的模式使用3bit的码字,即使用第一长度,16个较短码字的模式使用5bit的码字,即使用第二长度。
也就是说,在本申请的实施例中,如果当前块的MPM列表的列表长度为4,那么MPM列表中的4个最可能模式可以对应使用第一长度的二元符号串,即4个最短码字的模式可以给MPM列表中的4个MPM使用;相应地,预设角度预测模式集合中、MPM列表以外的其他预测模式可以分别使用第二长度的二元符号串的二元符号串。
示例性的,在本申请中,如果使用模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,即预设角度预测模式集合中共包括有12个模式,那么索引值与二元符号串的第二映射关系表可以如上述表4所示,其中,第一长度为3比特,第二长度为5比特。
进一步地,在本申请中,对比特标志为0的二元符号串使用上下文模型进行解码,对比特标志不为0的二元符号串不使用上下文模型进行解码。其中,比特标志的取值可以表示已经解码了多少个bit,比特标志可以用binIdx表示。
需要说明的是,在本申请中,对于编码侧,在根据表4进行二值化时,可以对binIdx为0的二元符号串使用上下文模型进行解码,而binIdx不为0的二元符号串使用等概率模型或者旁路模式bypass进行解码。
进一步地,在本申请中,如果预设角度预测模式集合包括模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,L=2,编码器在根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引时,若所述第一帧内预测模式的模式号与所述MPM列表中的第m个模式的模式号相同,则按照(m-1)对所述第一模式索引的值i进行赋值;若所述第一帧内预测模式的模式号与所述MPM列表中的任一个模式的模式号均不同,则利用所述MPM列表确定所述第一模式索引的值i;根据所述第一映射关系表和i确定所述第一模式索引。其中,m为大于0且小于等于L的整数。
也就是说,在本申请中,如果第一帧内预测模式的模式号与MPM列表中的一个模式的模式号相同,那么就可以直接将第一模式索引的值i设定为该最可能模式的顺序m-1。例如,如果第一帧内预测模式与MPM列表中的第二个模式相同,那么就设置i=1。
具体地,在本申请中,编码器在利用所述MPM列表确定所述第一模式索引的值i时,若所述第一帧内预测模式的模式号小于所述MPM列表中的第一个模式的模式号,则按照所述所述第一帧内预测模式的模式号对第一变量tmp1进行赋值;若所述第一帧内预测模式的模式号小于所述MPM列表中的第二个模式的模式号,且大于所述MPM列表中的第一个模式的模式号,则按照所述所述第一帧内预测模式的模式号与3的差值对tmp1进行赋值;若所述第一帧内预测模式的模式号大于所述MPM列表中的第二个模式的模式号,则按照所述所述第一帧内预测模式的模式号与6的差值对tmp1进行赋值;根据所述tmp1计算所述第一模式索引的值i。
示例性的,在本申请中,如果MPM列表中的2个MPM的模式号分别为9和15,第一帧内预测模式的模式号为3,编码器可以将第一帧内预测模式的模式号分别与2个MPM的模式号进行相比,具体地,3小于第一个MPM的模式号9,那么可以令第一变量tmp1=3,然后可以根据tmp1计算出第一模式索引的值i,具体地,可以令i=tmp1/3+1=2,即第一模式索引的值为2。
可以理解的是,在本申请中,编码器在确定出第一帧内预测模式对应的第一模式索引的值i以后,便可以根据所述第一映射关系表和i确定出第一模式索引,具体地,编码器可以按照如上述表3所示的第一映射关系表对i进行二值化处理,确定所述第一模式索引。
进一步地,在本申请中,编码器在根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引时,若所述第二帧内预测模式的模式号与所述MPM列表中的第m个模式的模式号相同,则按照(m-1)对所述第一模式索引的值j进行赋值;若所述第二帧内预测模式的模式号与所述MPM列表中的任一个模式的模式号均不同,则利用所述MPM列表确定所述第一模式索引的值j;根据所述第一映射关系表和j确定所述第二模式索引。其中,m为大于0且小于等于L的整数。
也就是说,在本申请中,如果第二帧内预测模式的模式号与MPM列表中的一个模式的模式号相同,那么就可以直接将第一模式索引的值j设定为该最可能模式的顺序m-1。例如,如果第二帧内预测模式与MPM列表中的第一个模式相同,那么就设置j=0。
具体地,在本申请中,编码器在利用所述MPM列表确定所述第一模式索引的值j时,若所述第二帧内预测模式的模式号小于所述MPM列表中的第一个模式的模式号,则按照所述所述第二帧内预测模式的模式号对第二变量tmp2进行赋值;若所述第二帧内预测模式的模式号小于所述MPM列表中的第二个模式的模式号,且大于所述MPM列表中的第一个模式的模式号,则按照所述所述第二帧内预测模式的模式号与3的差值对tmp2进行赋值;若所述第二帧内预测模式的模式号大于所述MPM列表中的第二个模式的模式号,则按照所述所述第二帧内预测模式的模式号与6的差值对tmp2进行赋值;根据所述tmp2计算所述第二模式索引的值j。
示例性的,在本申请中,如果MPM列表中的2个MPM的模式号分别为9和15,第二帧内预测模式的模式号为12,编码器可以将第二帧内预测模式的模式号分别与2个MPM的模式号进行相比,具体地,12小于第二个MPM的模式号15,且大于第一个MPM的模式号9,那么可以令第二变量tmp2=12-3=9,然后可以根据tmp2计算出第二模式索引的值j,具体地,可以令j=tmp1/3+1=4,即第二模式索引的值为4。
可以理解的是,在本申请中,编码器在确定出第二帧内预测模式对应的第二模式索引的值j以后,便可以根据所述第一映射关系表和j确定出第二模式索引,具体地,编码器可以按照如上述表3所示的第一映射关系表对j进行二值化处理,确定所述第二模式索引。
示例性的,在本申请中,如果当前块使用IWCP模式,当前块的MPM列表的长度为2,即L=2,其中,MPM列表中的2个模式是按照模式号由小到大的顺序排列的,预设角度预测模式集合包括模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,编码器可以先确定第一帧内预测模式为IwcpPredMode0,第二帧内预测模式为IwcpPredMode1,进而可以根据第一帧内预测模式IwcpPredMode0,第二帧内预测模式IwcpPredMode1进一步确定第一模式索引iwcp_pred_mode0_index和第二模式索引iwcp_pred_mode1_index,其中,iwcp_pred_mode0_index和iwcp_pred_mode1_index的值的范围是0-9。
编码器在确定了当前块的帧内加权组合预测模式使用的第一帧内预测模式IwcpPredMode0之后,进行第一模式索引iwcp_pred_mode0_index的确定时,具体可以执行如下操作:
1、如果IwcpPredMode0等于IwcpMpm[m-1],其中,m大于0且小于等于2,那么iwcp_pred_mode0_index的值i等于m-1。
也就是说,如果第一帧内预测模式与MPM列表中的第m个MPM相同,那么可以直接使用m-1对i进行赋值,即i=m-1。
2、否则,记第一变量tmp1,执行如下操作:
(a)如果IwcpPredMode0小于IwcpMpm[0],tmp1等于IwcpPredMode0
(b)如果IwcpPredMode0大于IwcpMpm[0],且IwcpPredMode0小于IwcpMpm[1],tmp1等于IwcpPredMode0-3
(c)如果IwcpPredMode0大于IwcpMpm[1],tmp1等于IwcpPredMode0-6
(d)iwcp_pred_mode0_index等于(tmp1/3+1)。
3、按照表3对iwcp_pred_mode0_index的值i进行二值化处理,确定二元符号串形式的iwcp_pred_mode0_index。
具体地,在按照表3对iwcp_pred_mode0_index的值i二值化时,可以从表3左栏中确定与i相同的索引值,然后从同一行的右栏中确定二元符号串iwcp_pred_mode0_index。
相应地,编码器在确定了当前块的帧内加权组合预测模式使用的第二帧内预测模式IwcpPredMode1之后,进行第二模式索引iwcp_pred_mode1_index的确定时,具体可以执行如下操作:
1、如果IwcpPredMode1等于IwcpMpm[m-1],其中,m大于0且小于等于4,那么iwcp_pred_mode1_index的值j等于m-1。
也就是说,如果第二帧内预测模式与MPM列表中的第m个MPM相同,那么可以直接使用m-1对j进行赋值,即j=m-1。
2、否则,记第一变量tmp2,执行如下操作:
(a)如果IwcpPredMode1小于IwcpMpm[0],tmp2等于IwcpPredMode1
(b)如果IwcpPredMode1大于IwcpMpm[0],且IwcpPredMode1小于IwcpMpm[1],tmp2等于IwcpPredMode1-3
(c)如果IwcpPredMode1大于IwcpMpm[1],tmp2等于IwcpPredMode1-6
(d)iwcp_pred_mode1_index等于(tmp2/3+1)。
3、按照表3对iwcp_pred_mode1_index的值j进行二值化处理,确定二元符号串形式的iwcp_pred_mode1_index。
具体地,在按照表3对iwcp_pred_mode1_index的值j二值化时,可以从表3左栏中确定与j相同的索引值,然后从同一行的右栏中确定二元符号串iwcp_pred_mode1_index。
进一步地,在本申请的实施例中,由于帧内加权组合预测模式需要使用第一帧内预测模式和第二帧内预测模式对当前块的预测值进行确定,其中,第一帧内预测模式和第二帧内预测模式可以共享一个预设角度预测模式集合,还可以共享同一个MPM列表,但是,帧内加权组合预测模式中第一帧内预测模式和第二帧内预测模式并不相同,因此,在进行第二帧内预测模式的编解码时,可以参考第一帧内预测模式,具体地,在确定第二帧内预测模式时,可以将第一帧内预测模式排除掉。
也就是说,在本申请中,在确定第二帧内预测模式时,既可以采用与确定第一帧内预测模式相同的方法,也可以在第一帧内预测模式是MPM模式的情况下,第二帧内预测模式可选的MPM模式少一个,其他方式相同。
可选地,如果MPM列表长度为2,在编解码时,使用2个最短的二元符号串表示MPM模式,一种可能的方法是最短的二元符号串长度为2。如果第一帧内预测模式是MPM模式,那么第二帧内预测模式可选的MPM只有一个,这时对第二帧内预测模式可以只用长度为1的二元符号串表示MPM模式。
进一步地,在本申请中,如果预设角度预测模式集合包括模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,L=4,编码器在根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引时,若所述第一帧内预测模式的模式号与所述MPM列表中的第m个模式的模式号相同,则按照(m-1)对所述第一模式索引的值i进行赋值;若所述第一帧内预测模式的模式号与所述MPM列表中的任一个模式的模式号均不同,则利用所述MPM列表确定所述第一模式索引的值i;根据所述第二映射关系表和i确定所述第一模式索引。其中,m为大于0且小于等于L的整数。
也就是说,在本申请中,如果第一帧内预测模式的模式号与MPM列表中的一个模式的模式号相同,那么就可以直接将第一模式索引的值i设定为该最可能模式的顺序m-1。例如,如果第一帧内预测模式与MPM列表中的第三个模式相同,那么就设置i=2。
具体地,在本申请中,编码器在利用所述MPM列表确定所述第一模式索引的值i时,若所述第一帧内预测模式的模式号小于所述MPM列表中的第一个模式的模式号,则按照所述所述第一帧内预测模式的模式号对第一变量tmp1进行赋值;若所述第一帧内预测模式的模式号小于所述MPM列表中的第二个模式的模式号,且大于所述MPM列表中的第一个模式的模式号,则按照所述所述第一帧内预测模式的模式号与2的差值对tmp1进行赋值;若所述第一帧内预测模式的模式号小于所述MPM列表中的第三个模式的模式号,且大于所述MPM列表中的第二个模式的模式号,则按照所述所述第一帧内预测模式的模式号与4的差值对tmp1进行赋值;若所述第一帧内预测模式的模式号小于所述MPM列表中的第四个模式的模式号,且大于所述MPM列表中的第三个模式的模式号,则按照所述所述第一帧内预测模式的模式号与6的差值对tmp1进行赋值;若所述第一帧内预测模式的模式号大于所述MPM列表中的第四个模式的模式号,则按照所述所述第一帧内预测模式的模式号与8的差值对tmp1进行赋值;根据所述tmp1计算所述第一模式索引的值i。
示例性的,在本申请中,如果MPM列表中的4个MPM的模式号分别为6,12,16,18,第一帧内预测模式的模式号为20,编码器可以将第一帧内预测模式的模式号分别与4个MPM的模式号进行相比,具体地,20大于第四个MPM的模式号18,那么可以令第一变量tmp1=20-8=12,然后可以根据tmp1计算出第一模式索引的值i,具体地,可以令i=tmp1/2+1=7,即第一模式索引的值为7。
可以理解的是,在本申请中,编码器在确定出第一帧内预测模式对应的第一模式索引的值i以后,便可以根据所述第二映射关系表和i确定出第一模式索引,具体地,编码器可以按照如上述表4所示的第二映射关系表对i进行二值化处理,确定所述第一模式索引。
进一步地,在本申请中,编码器在根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引时,若所述第二帧内预测模式的模式号与所述MPM列表中的第m个模式的模式号相同,则按照(m-1)对所述第一模式索引的值j进行赋值;若所述第二帧内预测模式的模式号与所述MPM列表中的任一个模式的模式号均不同,则利用所述MPM列表确定所述第一模式索引的值j;根据所述第二映射关系表和j确定所述第二模式索引。其中,m为大于0且小于等于L的整数。
也就是说,在本申请中,如果第二帧内预测模式的模式号与MPM列表中的一个模式的模式号相同,那么就可以直接将第一模式索引的值j设定为该最可能模式的顺序m-1。例如,如果第二帧内预测模式与MPM列表中的第四个模式相同,那么就设置j=3。
具体地,在本申请中,编码器在利用所述MPM列表确定所述第一模式索引的值j时,若所述第二帧内预测模式的模式号小于所述MPM列表中的第一个模式的模式号,则按照所述所述第二帧内预测模式的模式号对第二变量tmp2进行赋值;若所述第二帧内预测模式的模式号小于所述MPM列表中的第二个模式的模式号,且大于所述MPM列表中的第一个模式的模式号,则按照所述所述第二帧内预测模式的模式号与3的差值对tmp2进行赋值;若所述第二帧内预测模式的模式号大于所述MPM列表中的第二个模式的模式号,则按照所述所述第二帧内预测模式的模式号与6的差值对tmp2进行赋值;根据所述tmp2计算所述第二模式索引的值j。
示例性的,在本申请中,如果MPM列表中的4个MPM的模式号分别为6,12,16,18,第二帧内预测模式的模式号为14,编码器可以将第二帧内预测模式的模式号分别与4个MPM的模式号进行相比,具体地,14小于第三个MPM的模式号16,且大于第二个MPM的模式号12,那么可以令第二变量tmp2=14-4=10,然后可以根据tmp2计算出第二模式索引的值j,具体地,可以令j=tmp2/2+1=6,即第二模式索引的值为6。
可以理解的是,在本申请中,编码器在确定出第二帧内预测模式对应的第二模式索引的值j以后,便可以根据所述第二映射关系表和j确定出第二模式索引,具体地,编码器可以按照如上述表4所示的第二映射关系表对j进行二值化处理,确定所述第二模式索引。
示例性的,在本申请中,如果当前块使用IWCP模式,当前块的MPM列表的长度为4,即L=4,其中,MPM列表中的4个模式是按照模式号由小到大的顺序排列的,预设角度预测模式集合包括模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,编码器可以先确定第一帧内预测模式为IwcpPredMode0,第二帧内预测模式为IwcpPredMode1,进而可以根据第一帧内预测模式IwcpPredMode0,第二帧内预测模式IwcpPredMode1进一步确定第一模式索引iwcp_pred_mode0_index和第二模式索引iwcp_pred_mode1_index,其中,iwcp_pred_mode0_index和iwcp_pred_mode1_index的值的范围是0-11。
编码器在确定了当前块的帧内加权组合预测模式使用的第一帧内预测模式IwcpPredMode0之后,进行第一模式索引iwcp_pred_mode0_index的确定时,具体可以执行如下操作:
1、如果IwcpPredMode0等于IwcpMpm[m-1],其中,m大于0且小于等于4,那么iwcp_pred_mode0_index的值i等于m-1。
也就是说,如果第一帧内预测模式与MPM列表中的第m个MPM相同,那么可以直接使用m-1对i进行赋值,即i=m-1。
2、否则,记第一变量tmp1,执行如下操作:
(a)如果IwcpPredMode0小于IwcpMpm[0],tmp1等于IwcpPredMode0
(b)如果IwcpPredMode0大于IwcpMpm[0],且IwcpPredMode0小于IwcpMpm[1],tmp1等于IwcpPredMode0-2
(c)如果IwcpPredMode0大于IwcpMpm[1],且IwcpPredMode0小于IwcpMpm[2],tmp1等于IwcpPredMode0-4
(d)如果IwcpPredMode0大于IwcpMpm[2],且IwcpPredMode0小于IwcpMpm[3],tmp1等于IwcpPredMode0-6
(e)如果IwcpPredMode0大于IwcpMpm[3],tmp1等于IwcpPredMode0-8
(f)iwcp_pred_mode0_index等于(tmp1/2+1)。
3、按照表4对iwcp_pred_mode0_index的值i进行二值化处理,确定二元符号串形式的iwcp_pred_mode0_index。
具体地,在按照表4对iwcp_pred_mode0_index的值i二值化时,可以从表4左栏中确定与i相同的索引值,然后从同一行的右栏中确定二元符号串iwcp_pred_mode0_index。
相应地,编码器在确定了当前块的帧内加权组合预测模式使用的第二帧内预测模式IwcpPredMode1之后,进行第二模式索引iwcp_pred_mode1_index的确定时,具体可以执行如下操作:
1、如果IwcpPredMode1等于IwcpMpm[m-1],其中,m大于0且小于等于4,那么iwcp_pred_mode1_index的值j等于m-1。
也就是说,如果第二帧内预测模式与MPM列表中的第m个MPM相同,那么可以直接使用m-1对j进行赋值,即j=m-1。
2、否则,记第一变量tmp2,执行如下操作:
(a)如果IwcpPredMode1小于IwcpMpm[0],tmp2等于IwcpPredMode1
(b)如果IwcpPredMode1大于IwcpMpm[0],且IwcpPredMode1小于IwcpMpm[1],tmp2等于IwcpPredMode1-2
(c)如果IwcpPredMode1大于IwcpMpm[1],且IwcpPredMode1小于IwcpMpm[2],tmp2等于IwcpPredMode1-4
(d)如果IwcpPredMode1大于IwcpMpm[2],且IwcpPredMode1小于IwcpMpm[3],tmp2等于IwcpPredMode1-6
(c)如果IwcpPredMode1大于IwcpMpm[3],tmp2等于IwcpPredMode1-8
(d)iwcp_pred_mode1_index等于(tmp2/2+1)。
3、按照表4对iwcp_pred_mode1_index的值j进行二值化处理,确定二元符号串形式的iwcp_pred_mode1_index。
具体地,在按照表4对iwcp_pred_mode1_index的值j二值化时,可以从表3左栏中确定与j相同的索引值,然后从同一行的右栏中确定二元符号串iwcp_pred_mode1_index。
进一步地,在本申请的实施例中,由于帧内加权组合预测模式需要使用第一帧内预测模式和第二帧内预测模式对当前块的预测值进行确定,其中,第一帧内预测模式和第二帧内预测模式可以共享一个预设角度预测模式集合,还可以共享同一个MPM列表,但是,帧内加权组合预测模式中第一帧内预测模式和第二帧内预测模式并不相同,因此,在进行第二帧内预测模式的编解码时,可以参考第一帧内预测模式,具体地,在确定第二帧内预测模式时,可以将第一帧内预测模式排除掉。
也就是说,在本申请中,在确定第二帧内预测模式时,既可以采用与确定第一帧内预测模式相同的方法,也可以在第一帧内预测模式是MPM模式的情况下,第二帧内预测模式可选的MPM模式少一个,其他方式相同。
可以理解的是,在本申请中,对于12个帧内角度预测模式,由于在上述2+8的编解码方式中,MPM列表中的4个MPM出现的概率很高(第一帧内预测模式是MPM列表中的4个MPM其中之一的概率约有50%,第二帧内预测模式是MPM列表中的4个MPM其中之一的概率约有50%),如果第一帧内预测模式和第二帧内预测模式都是MPM列表中的MPM,那么在确定第二帧内预测模式时,只能从MPM列表中的、第一帧内预测模式外的其他3个MPM中选择一个即可。这样从原来4选1,需要4个3bit的码字就可以变成3选1,需要1个2bit的码字和2个3bit的码字。相应地,如果第一帧内预测模式和第二帧内预测模式都不是MPM列表中的MPM,那么第二帧内预测模式也可以从8个帧内角度预测模式中去掉1个,但这样的影响就比较小了。
由此可见,如果需要基于第一帧内预测模式进行第二帧内预测模式的确定,那么iwcp_pred_mode1_index也是依赖于iwcp_pred_mode0_index的,具体地,如果第一帧内预测模式和第二帧内预测模式都是MPM列表中的MPM,那么第二帧内预测模式可用的MPM只有3种,进而可以用1到2个比特位表示是哪一个MPM,如“00,01,10”分别表示剩余的第一个MPM,第二个MPM,第三个MPM。可见,由于排除了一种可能,可以改变编解码方法或者二值化或反二值化的方法以节省开销。
需要说明的是,在本申请中,如果对预设角度预测模式集合中所有的模式的表示都按照如表3、表4所示的一组二元符号串来进行表示,那么可以将“码字”理解为二元符号串。码字的长度可以理解为二元符号串的长度。另一种表示方法是用标志位(flag)加二元符号串。比如用一个二元的MPM_flag表示当前模式是否MPM模式,即如果MPM_flag为1表示当前模式是MPM模式,如果MPM_flag为0表示当前模式不是MPM模式,如果当前模式是MPM模式,MPM总共有4种可能,再用2bit的二元符号串来表示当前模式是哪一个MPM。那么码字可以理解为标志位加二元符号串,码字的长度可以理解为标志位加二元符号串的长度。
步骤204、将第一模式索引和第二模式索引写入码流。
在本申请的实施例中,编码器在确定出用于指示第一帧内预测模式的第一模式索引和用于指示第二帧内预测模式的第二模式索引,便可以将第一模式索引和第二模式索引写入码流中,传输至解码侧,以使解码器根据解码码流确定的第一模式索引和第二模式索引进行当前块的预测值的确定。
进一步地,在本申请的实施例中,编码器需要确定当前块的权重矩阵,从而在确定出当前块使用的第一帧内预测模式和第二帧内预测模式之后,还基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,进一步确定当前块的预测值。
可以理解的是,在本申请的实施例中,编码器在基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,确定当前块的预测值时,可以先根据第一帧内预测模式确定当前块的第一预测值;同时可以根据第二帧内预测模式确定当前块的第二预测值;然后可以利用权重矩阵对第一预测值和第二预测值进行加权运算,最终便可以获得当前块的预测值。
进一步地,在本申请的实施例中,编码器在确定当前块的预测值之后,还可以对当前块的真实值和预测值进行差值运算,获得两者之间的差值结果,从而可以确定出当前块的预测差值,即残差。
也就是说,在本申请中,编码器可以计算当前块的真实值与帧内预测值之间的差值,从而获得残差,且该残差经过变换、量化、熵编码写入码流,传输至解码侧。
具体地,在本申请中,编码器可以根据当前块的权重矩阵导出模式确定所述当前块的权重矩阵。
可以理解的是,在本申请中,第一帧内预测模式和第二帧内预测模式可以都是帧内角度预测模式,即本申请实施例使用两个不同的帧内角度预测模式。然后利用第一帧内预测模式和第二帧内预测模式组合,分别生成第一预测块和第二预测块,进而基于第一预测块和第二预测块,结合权重矩阵,确定当前块的预测块。
进一步地,在本申请的实施例中,所有可能的权重矩阵中并非每一个权重矩阵的所有的点的权重都相同。换句话说,至少有一个可能的权重矩阵中包含至少两个不同的权重值。
需要说明的是,在本申请的实施例中,编码器可以采用类似于GPM或AWP的方法来实现权重矩阵的确定。具体地,如果同一个编解码标准或编编码器中使用了GPM或AWP,那么可以使用该方法来确定权重矩阵,这样可以做到复用部分相同的逻辑。如AVS3帧间预测使用了AWP,那么在AVS3中可以使用AWP的方法来确定权重矩阵。当然也可以使用和同一个编解码标准或编编码器中的GPM或AWP不同方法,比如使用不同的模式数,或者不同的过渡区域算法,或者使用不同的参数等。因为帧间预测利用了时域上的相关性,它使用的是参考帧中已重建的图像作为参考块。而帧内预测利用了空域上的相关性,它使用的是当前块周边已重建的像素作为参考像素。空域上距离越近相关性越强,距离越远相关性越差。所以如果某种权重矩阵使得一个预测块使用的得到的像素位置都距离参考像素较远,那么这部分可能做不出比现有技术更合适的预测值,那么可以不使用这样的权重矩阵,而在帧间预测中可以使用。
本申请实施例提供一种帧内预测方法,编解码器可以通过两种不同的帧内角度预测模式确定当前块的两个不同 的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。
基于上述实施例,在本申请的再一实施例中,编码器在确定当前块使用IWCP模式之后,还可以进一步确定当前块的帧内预测模式参数;其中,所述帧内预测模式参数用于判断所述当前块是否使用所述IWCP模式;然后可以将所述镇内预测模式参数写入所述码流。
需要说明的是,在本申请的实施中,帧内预测模式参数可以指示当前块是否可以使用IWCP模式,即指示当前块是否可以使用两种不同的帧内角度预测模式确定当前块的预测值。
可以理解的是,在本申请的实施例中,可以将帧内预测模式参数理解为一个表明是否使用了IWCP模式标志位。具体地,编码器解析码流,可以确定作为帧内预测模式参数的一个变量,从而可以通过该变量的取值来实现帧内预测模式参数的确定。
示例性的,在本申请中,如果当前块使用IWCP模式,那么编码器可以将帧内预测模式参数的取值设置为指示当前块使用IWCP模式,具体地,编码器可以将变量的取值设置为1。
示例性的,在本申请中,如果当前块不使用IWCP模式,那么编码器可以将帧内预测模式参数的取值设置为指示当前块不使用IWCP模式,具体地,编码器可以将变量取值设置为0。
进一步地,在本申请的实施例中,编码器在完成对帧内预测模式参数的设置之后,便可以将帧内预测模式参数写入码流中,传输至解码器,从而可以使解码器在解码码流之后获得帧内预测模式参数。
也就是说,在本申请的实施例中,在编码器侧,会针对当前块进行预测编码,在这过程中就可以确定出当前块的帧内预测模式参数,并将相应的帧内预测模式参数写入码流,由编码器传输到解码器。
可以理解的是,在本申请的实施例中,编码器在对当前块进行帧内预测之前,也可以先确定预测模式参数,然后可以通过预测模式参数来确定当前块的当前块的编码模式是具体哪一种编码模式。
在本申请的实施例中,进一步地,编码器在确定当前块的当前块的预测模式参数时,可以先利用多种不同的预测模式分别对当前块进行预测编码,然后计算多种预测模式下每一种预测模式对应的率失真代价结果;最后便可以从计算得到的多个率失真代价结果中选取最小率失真代价结果,并将最小率失真代价结果对应的预测模式确定为当前块的预测模式参数。
也就是说,在编码器侧,针对当前块可以采用多种预测模式分别对待预测图像分量进行编码。
进一步地,在本申请的实施例中,编码器在利用多种预测模式分别对当前块进行编码之后,可以得到每一种预测模式对应的率失真代价结果;然后从所得到的多个率失真代价结果中选取最小率失真代价结果,并将该最小率失真代价结果对应的预测模式确定为当前块的当前块的预测模式参数;如此,最终可以使用所确定的预测模式对当前块进行编码,而且在这种预测模式下,可以使得预测残差小,能够提高编解码效率。
在本申请的实施例中,进一步地,在编码端,当编码器对某一个预测块进行帧内预测的尝试时,也会尝试按照IWCP模式编码的代价。在尝试按照IWCP模式编码的代价时,会尝试全部或部分可能的情况的代价,然后选择代价最小的一个作为IWCP模式编码的代价。
需要说明的是,在本申请的实施例中,上述全部可能的情况,包括当前块的第一帧内预测模式为所有可能的预测模式,当前块的第二帧内预测模式为所有可能的测模式,权重矩阵导出模式为所有可能的模式这三个变化的组合。
可以理解的是,在本申请中,第一帧内预测模式与第二帧内预测模式时完全不同的两种帧内角度预测模式,编码器可以限制IWCP模式能够使用的帧内角度预测模式,以及限制IWCP模式能够使用的权重矩阵导出模式的个数,那么可能的情况也会相应减少,编码端的复杂度也相应降低。
示例性的,在本申请中,假设IWCP模式所有可用的帧内角度预测模式有66种,那么,第一帧内预测模式有66种可能,由于第二帧内预测模式与第一帧内预测模式不同,因此有65种可能,假设权重矩阵导出模式有56种(以AWP为例),那么本申请可能使用任意两种不同的帧内角度预测模式以及任意一种权重矩阵导出模式,共有66×65×56种可能。如果对可以使用的帧内角度预测模式进行限制,即限制预设角度预测模式集合中的模式范围,例如,限制预设角度预测模式集合仅仅包括模式号为5-30的26个帧内角度预测模式,那么,第一帧内预测模式有26种可能,由于第二帧内预测模式与第一帧内预测模式不相同,因此第二帧内预测模式有25种可能,假设权重矩阵导出模式有56种(以AWP为例),那么本申请可能使用任意两种不同的帧内角度预测模式以及任意一种权重矩阵导出模式,共有26×25×56种可能。
进一步地,在本申请的实施例中,编码器可以对所有的IWCP模式可能的情况进行率失真优化(Rate-Distortion Optimization,RDO),确定代价最小的一个组合,其中,每一个组合均为包括有第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式的组合。
可选地,为了减小RDO的耗时,可以先对上述所有的IWCP模式可能的情况进行初选,如使用SAD,和SATD等作为近似的代价进行初选,确定设定数量的候选第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式的组合,再进行RDO细选,确定代价最小的一个第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式的组合。从而可以在初选时使用一些快速算法减少尝试的次数,比如说一个帧内角度预测模式造成代价很大时,与它相邻的几个帧内预测模式都不再尝试等。
可以理解的是,在本申请中,在上述的初选和细选中,代价中可以包括编码第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式在码流中的开销的代价。也可以在初选的时候使用第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式在码流中的开销的估计的代价。如根据第一帧内预测模式或第二帧内预测模式是不是MPM估计其比特数,或者根据帧内预测模式的排序估计第一或第二帧内预测模式的比特数。在RDO中可以通过较为准确的试编码来获得其代价。该过程中需要用到本申请的构建MPM列表或者对帧内预测模式进行排序的方法。
可以理解的是,在本申请中,上述初选和细选时都会根据第一帧内预测模式确定第一预测块,根据第二帧内预 测模式确定第二预测块,根据权重矩阵导出模式导出权重矩阵,根据第一预测块、第二预测块和权重矩阵确定本申请的预测块。SAD和SATD初选时使用当前块和预测块来确定SAD和SATD。
进一步地,在本申请的实施例中,编码器也可以先对当前块的纹理进行分析,比如使用梯度进行分析。利用分析的数据帮助初选。比如当前块的纹理中哪一个方向的纹理较强,上述初选时就多选择近似方向的帧内预测模式进行尝试。比如当前块的纹理中哪一个方向的纹理较弱,上述初选时就少选择或不选择近似方向的帧内预测模式进行尝试。
需要说明的是,在本申请中,按照IWCP模式编码的代价中包括第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式在码流中占用的码字的代价,预测残差进行变换量化熵编码等在码流中要传输的各种标志以及量化系数的代价,以及重建块的失真的代价等。
在确定按照IWCP模式编码的代价之后,如果按照IWCP模式编码的代价小于其他预测模式的代价,其中,其他预测模式可以包括其他帧内预测模式或帧间预测模式等,编码器会选择IWCP模式作为当前块的预测模式,否则会选择其他某种预测模式。
进一步地,在本申请的实施例中,编码器会尝试不同块划分的编码代价等。如果最终某一个预测块选择了了IWCP模式,那么可以将IWCP模式需要的标志位以及第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式的信息按照语法(syntax)写入码流,同时将这个预测块按IWCP模式的方法进行预测以及后续的编码工作。
本申请实施例提供一种帧内预测方法,编解码器可以通过两种不同的帧内角度预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。
基于上述实施例,在本申请的再一实施例中,图10为本申请实施例提出的编码器的组成结构示意图一,如图10所示,本申请实施例提出的编码器300可以包括第一确定部分301,第一构建部分302,编码部分303,
所述第一确定部分301,配置为当当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
所述第一构建部分302,配置为至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
所述第一确定部分301,还配置为根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引;
所述编码部分303,配置为将所述第一模式索引和所述第二模式索引写入码流。
图11为本申请实施例提出的编码器的组成结构示意图二,如图11所示,本申请实施例提出的编码器300还可以包括第一处理器304、存储有第一处理器304可执行指令的第一存储器305、第一通信接口306,和用于连接第一处理器304、第一存储器305以及第一通信接口306的第一总线307。
进一步地,在本申请的实施例中,上述第一处理器304,用于当当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引;将所述第一模式索引和所述第二模式索引写入码流。
图12为本申请实施例提出的解码器的组成结构示意图一,如图12所示,本申请实施例提出的解码器400可以包括解码部分401,第二确定部分402,第二构建部分403,
所述解码部分401,配置为解码码流;
所述第二确定部分402,配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一模式索引和第二模式索引;
第二构建部分403,配置为至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
所述第二确定部分402,还配置为根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;确定当前块的权重矩阵,并基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
图13为本申请实施例提出的解码器的组成结构示意图二,如图13所示,本申请实施例提出的解码器400还可以包括第二处理器404、存储有第二处理器404可执行指令的第二存储器405、第二通信接口406,和用于连接第二处理器404、第二存储器405以及第二通信接口406的第二总线407。
进一步地,在本申请的实施例中,上述第二处理器404,用于解码码流,确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一模式索引和第二模式索引;至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;确定当前块的权重矩阵,并基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案 的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供了一种编码器和解码器,编解码器可以通过两种不同的帧内角度预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。
本申请实施例提供计算机可读存储介质和计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述实施例所述的方法。
具体来讲,本实施例中的一种帧内预测方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种帧内预测方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
解码码流,确定当前块的帧内预测模式参数;
当所述帧内预测模式参数指示所述当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一模式索引和第二模式索引;
至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
确定当前块的权重矩阵,并基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
还包括如下步骤:
当当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引;
将所述第一模式索引和所述第二模式索引写入码流。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
工业实用性
本申请实施例提供了一种帧内预测方法、编码器、解码器以及存储介质,解码器解码码流,确定当前块的帧内预测模式参数;当帧内预测模式参数指示当前块使用IWCP模式确定当前块的帧内预测值时,确定当前块的第一模式索引和第二模式索引;至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;根据第一模式索引、第二模式索引以及MPM列表确定当前块的第一帧内预测模式和第二帧内预测模式;其中,第一帧内预测模式和第二帧内预测模式为两个不同的帧内角度预测模式;确定当前块的权重矩阵,并基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,确定当前块的预测值。编码器当当前块使用IWCP模式确定当前块的帧内预测值时,确定当前块的第一帧内预测模式和第二帧内预测模式;其中,第一帧内预测模式和第二帧内预测模式为两个不同的帧内角度预测模式;至少基于当前块的相邻块集合构建当前块的MPM列表;根据第一帧内预测模式、第二帧内预测模式以及MPM列表确定当前块的第一模式索引和第二模式索引;将第一模式索引和第二模式索引写入码流。也就是说,在本申请的实施例中,编解码器可以通过两种不同的帧内角度预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,在提高帧内预测的准确性的基础上,能够降低硬件实现代价,降低复杂度,实现简单高效的编解码方法,从而提升压缩性能。

Claims (92)

  1. 一种帧内预测方法,应用于解码器,所述方法包括:
    解码码流,确定当前块的帧内预测模式参数;
    当所述帧内预测模式参数指示所述当前块使用帧内加权组合预测IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一模式索引和第二模式索引;
    至少基于所述当前块的相邻块集合构建所述当前块的最可能模式MPM列表;
    根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
    确定当前块的权重矩阵,并基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
  2. 根据权利要求1所述的方法,其中,所述至少基于所述当前块的相邻块集合构建所述当前块的MPM列表,包括:
    确定所述当前块的权重矩阵导出模式;
    基于所述相邻块集合和所述权重矩阵导出模式,构建所述MPM列表。
  3. 根据权利要求1所述的方法,其中,所述至少基于所述当前块的相邻块集合构建所述当前块的MPM列表,包括:
    确定所述当前块的权重矩阵导出模式;
    基于所述当前块的相邻块集合、预设角度预测模式集合以及所述权重矩阵导出模式,构建所述MPM列表。
  4. 根据权利要求3所述的方法,其中,所述基于所述当前块的相邻块集合、预设角度预测模式集合以及所述权重矩阵导出模式,构建所述MPM列表,包括:
    利用所述相邻块集合中的候选块的预测模式确定第一候选模式;
    利用所述权重矩阵导出模式确定第二候选模式;
    根据所述第一候选模式、所述第二候选模式以及所述预设角度预测模式集合,构建所述MPM列表。
  5. 根据权利要求1所述的方法,其中,所述至少基于所述当前块的相邻块集合构建所述当前块的MPM列表,包括:
    利用所述相邻块集合中的候选块的预测模式确定第一候选模式;
    利用预设候选模式集合确定第二候选模式;
    根据所述第一候选模式、所述第二候选模式以及预设角度预测模式集合,构建所述MPM列表。
  6. 根据权利要求4或5所述的方法,其中,所述利用所述相邻块集合中的候选块的预测模式确定第一候选模式,包括:
    若所述候选块为普通帧内预测块,且所述候选块的预测模式为帧内预测模式,则将所述候选块的预测模式确定为第一候选模式。
  7. 根据权利要求4所述的方法,其中,所述利用所述权重矩阵导出模式确定第二候选模式,包括:
    根据所述权重矩阵导出模式确定分界线角度索引值;
    利用所述分界线角度索引值确定所述第二候选模式。
  8. 根据权利要求4或5所述的方法,其中,所述根据所述第一候选模式、所述第二候选模式以及所述预设角度预测模式集合,构建所述MPM列表,包括:
    基于所述预设角度预测模式集合对所述第一候选模式进行筛选处理,获得筛选后候选模式;
    根据所述筛选后候选模式和所述第二候选模式,构建所述MPM列表。
  9. 根据权利要求8所述的方法,其中,所述基于所述预设角度预测模式集合对所述第一候选模式进行筛选处理,获得筛选后候选模式,包括:
    若所述第一候选模式属于所述预设角度预测模式集合,则将所述第一候选模式确定为所述筛选后候选模式;
    若所述第一候选模式不属于所述预设角度预测模式集合,则不将所述第一候选模式确定为所述筛选后候选模式。
  10. 根据权利要求9所述的方法,其中,所述方法还包括:
    若所述第一候选模式不属于所述预设角度预测模式集合,则在所述预设角度预测模式集合中确定所述第一候选模式的替换模式,并将所述替换模式确定为所述筛选后候选模式。
  11. 根据权利要求8所述的方法,其中,所述根据所述筛选后候选模式和所述第二候选模式,构建所述MPM列表,包括:
    若所述筛选后候选模式满足预设添加条件,则将所述筛选后候选模式添加至所述MPM列表;
    若所述MPM列表不满足预设列表长度L,且所述第二候选模式满足所述预设添加条件,则将所述第二候选模式添加至所述MPM列表;其中,L为大于等于1的整数。
  12. 根据权利要求11所述的方法,其中,所述方法还包括:
    若所述筛选后候选模式与所述MPM列表中的预测模式均不相同,则确定所述筛选后候选模式满足所述预设添加条件;
    若所述第二候选模式与所述MPM列表中的预测模式均不相同,则确定所述第二候选模式满足所述预设添加条件。
  13. 根据权利要求11所述的方法,其中,所述方法还包括:
    按照模式号由小到大的顺序对所述MPM列表中的预测模式进行排序处理。
  14. 根据权利要求13所述的方法,其中,所述L等于2。
  15. 根据权利要求14所述的方法,其中,所述预设角度预测模式集合包括以下多个集合中的任意一个集合:
    模式号为5-30的26个帧内角度预测模式构成的集合;
    模式号为6-31的26个帧内角度预测模式构成的集合;
    模式号为3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30的18个帧内角度预测模式构成的集合;
    模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式构成的集合。
  16. 根据权利要求13所述的方法,其中,所述L等于4。
  17. 根据权利要求16所述的方法,其中,所述预设角度预测模式集合包括以下多个集合中的任意一个集合:
    模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式构成的集合;
    模式号为4,6,8,10,11,12,13,14,16,17,18,19,20,22,23,24,25,26,28,30的20个帧内角度预测模式构成的集合。
  18. 根据权利要求14或16所述的方法,其中,所述第二候选模式为L个不同的帧内角度预测模式。
  19. 根据权利要求14所述的方法,其中,所述方法还包括:
    确定索引值与二元符号串的第一映射关系表;其中,所述第一映射关系表中分别包括至少两个长度的二元符号串。
  20. 根据权利要求19所述的方法,其中,所述方法还包括:
    所述MPM列表中的预测模式使用所述至少两个长度中的最小长度的二元符号串;
    所述预设角度预测模式集合中、所述MPM列表以外的其他预测模式使用所述最小长度以外的其他长度的二元符号串。
  21. 根据权利要求16所述的方法,其中,所述方法还包括:
    确定索引值与二元符号串的第二映射关系表;其中,所述第二映射关系表中分别包括至少两个长度的二元符号串。
  22. 根据权利要求21所述的方法,其中,所述方法还包括:
    所述MPM列表中的预测模式使用所述至少两个长度中的最小长度的二元符号串;
    所述预设角度预测模式集合中、所述MPM列表以外的其他预测模式使用所述第二长度的二元符号串。
  23. 根据权利要求19所述的方法,其中,若所述预设角度预测模式集合包括模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,所述根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    根据所述第一映射关系表确定所述第一模式索引的值i;
    若i大于等于0且小于L,则将所述MPM列表中的第(i+1)个角度预测模式确定为所述第一帧内预测模式;
    若i大于等于L,则利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式。
  24. 根据权利要求23所述的方法,其中,所述利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式,包括:
    根据i计算第一变量tmp1;
    若tmp1大于等于所述MPM列表中的第一个模式的模式号,则对tmp1和3进行求和运算;
    若(tmp1+3)大于等于所述MPM列表中的第二个模式的模式号,则对(tmp1+3)和3进行求和运算;
    将(tmp1+6)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式。
  25. 根据权利要求24所述的方法,其中,所述方法还包括:
    若tmp1小于所述MPM列表中的第一个模式的模式号,则将tmp1确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式;或者,
    若(tmp1+3)小于所述MPM列表中的第二个模式的模式号,则将(tmp1+3)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式。
  26. 根据权利要求23所述的方法,其中,所述根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    根据所述第一映射关系表确定所述第二模式索引的值j;
    若j大于等于0且小于L,则将所述MPM列表中的第(i+1)个角度预测模式确定为所述第一帧内预测模式;
    若j大于等于L,则利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式。
  27. 根据权利要求26所述的方法,其中,所述利用所述预设角度预测模式集合和所述MPM列表确定所述第二帧内预测模式,包括:
    根据j计算第二变量tmp2;
    若tmp2大于等于所述MPM列表中的第一个模式的模式号,则对tmp2和3进行求和运算;
    若(tmp2+3)大于等于所述MPM列表中的第二个模式的模式号,则对(tmp2+3)和3进行求和运算;
    将(tmp2+6)确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式。
  28. 根据权利要求27所述的方法,其中,所述方法还包括:
    若tmp2小于所述MPM列表中的第一个模式的模式号,则将tmp2确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式;或者,
    若(tmp2+3)小于所述MPM列表中的第二个模式的模式号,则将(tmp2+3)确定为所述第二帧内预测模式的 模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式。
  29. 根据权利要求21所述的方法,其中,若所述预设角度预测模式集合包括模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,所述根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    根据所述第二映射关系表确定所述第一模式索引的值i;
    若i大于等于0且小于L,则将所述MPM列表中的第(i+1)个角度预测模式确定为所述第一帧内预测模式;
    若i大于等于L,则利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式。
  30. 根据权利要求29所述的方法,其中,所述利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式,包括:
    根据i计算第一变量tmp1;
    若tmp1大于等于所述MPM列表中的第一个模式的模式号,则对tmp1和2进行求和运算;
    若(tmp1+2)大于等于所述MPM列表中的第二个模式的模式号,则对(tmp1+2)和2进行求和运算;
    若(tmp1+4)大于等于所述MPM列表中的第三个模式的模式号,则对(tmp1+4)和2进行求和运算;
    若(tmp1+6)大于等于所述MPM列表中的第四个模式的模式号,则对(tmp1+6)和6进行求和运算;
    将(tmp1+8)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式。
  31. 根据权利要求30所述的方法,其中,所述方法还包括:
    若tmp1小于所述MPM列表中的第一个模式的模式号,则将tmp1确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式;或者,
    若(tmp1+2)小于所述MPM列表中的第二个模式的模式号,则将(tmp1+2)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式;或者,
    若(tmp1+4)小于所述MPM列表中的第三个模式的模式号,则将(tmp1+4)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式;或者,
    若(tmp1+6)小于所述MPM列表中的第四个模式的模式号,则将(tmp1+6)确定为所述第一帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第一帧内预测模式。
  32. 根据权利要求29所述的方法,其中,所述根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    根据所述第二映射关系表确定所述第二模式索引的值j;
    若j大于等于0且小于L,则将所述MPM列表中的第(i+1)个角度预测模式确定为所述第一帧内预测模式;
    若j大于等于L,则利用所述预设角度预测模式集合和所述MPM列表确定所述第一帧内预测模式。
  33. 根据权利要求32所述的方法,其中,所述利用所述预设角度预测模式集合和所述MPM列表确定所述第二帧内预测模式,包括:
    根据j计算第二变量tmp2;
    若tmp2大于等于所述MPM列表中的第一个模式的模式号,则对tmp2和2进行求和运算;
    若(tmp2+2)大于等于所述MPM列表中的第二个模式的模式号,则对(tmp2+2)和2进行求和运算;
    若(tmp2+4)大于等于所述MPM列表中的第三个模式的模式号,则对(tmp2+4)和2进行求和运算;
    若(tmp2+6)大于等于所述MPM列表中的第四个模式的模式号,则对(tmp2+6)和2进行求和运算;
    将(tmp2+8)确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式。
  34. 根据权利要求33所述的方法,其中,所述方法还包括:
    若tmp2小于所述MPM列表中的第一个模式的模式号,则将tmp2确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式;或者,
    若(tmp2+2)小于所述MPM列表中的第二个模式的模式号,则将(tmp2+2)确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式;或者,
    若(tmp2+4)小于所述MPM列表中的第三个模式的模式号,则将(tmp2+4)确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式;或者,
    若(tmp2+6)小于所述MPM列表中的第四个模式的模式号,则将(tmp2+6)确定为所述第二帧内预测模式的模式号,并在所述预设角度预测模式集合中确定所述第二帧内预测模式。
  35. 根据权利要2或3所述的方法,其中,所述确定当前块的权重矩阵,包括:
    根据所述权重矩阵导出模式确定所述当前块的权重矩阵。
  36. 根据权利要求35所述的方法,其中,所述基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值,包括:
    根据所述第一帧内预测模式确定所述当前块的第一预测值;根据所述第二帧内预测模式确定所述当前块的第二预测值;
    利用所述权重矩阵对所述第一预测值和所述第二预测值进行加权运算,获得所述当前块的预测值。
  37. 根据权利要求3所述的方法,其中,所述第一帧内预测模式和所述第二帧内预测模式分别为所述预设角度预测模式集合中的两个不同的帧内角度预测模式。
  38. 根据权利要求1所述的方法,其中,所述方法还包括:
    所述MPM列表中的预测模式均为帧内角度预测模式。
  39. 根据权利要求1所述的方法,其中,所述方法还包括:
    确定所述当前块的尺寸参数;
    根据所述尺寸参数确定所述当前块是否使用所述IWCP模式。
  40. 根据权利要求39所述的方法,其中,所述尺寸参数包括宽度和高度;所述方法还包括:
    若所述宽度和所述高度均大于等于第一下限值,且所述宽度和所述高度均小于等于第一上限值,则确定所述当前块使用所述IWCP模式。
  41. 根据权利要求1所述的方法,其中,所述方法还包括:
    对比特标志为0的二元符号串使用上下文模型进行解码,对比特标志不为0的二元符号串不使用上下文模型进行解码。
  42. 根据权利要求1所述的方法,其中,所述方法还包括:
    若所述帧内预测模式参数指示所述当前块使用IWCP模式,则不解码衍生模式DT、帧内预测滤波IPF、改进型帧内预测IIP的标志信息。
  43. 根据权利要求1所述的方法,其中,所述方法还包括:
    对于YUV4:2:0格式,若所述当前块为亮度的8×8的块,则确定所述当前块使用所述IWCP模式;若所述当前块为色度的4×4的块,则确定所述当前块不使用所述IWCP模式。
  44. 根据权利要求1所述的方法,其中,所述方法还包括:
    根据所述当前块的全部相邻块中的至少两个相邻块构建所述相邻块集合。
  45. 一种帧内预测方法,应用于编码器,所述方法包括:
    当当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
    至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
    根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引;
    将所述第一模式索引和所述第二模式索引写入码流。
  46. 根据权利要求45所述的方法,其中,所述至少基于所述当前块的相邻块集合构建所述当前块的MPM列表,包括:
    确定所述当前块的权重矩阵导出模式;
    基于所述相邻块集合和所述权重矩阵导出模式,构建所述MPM列表。
  47. 根据权利要求45所述的方法,其中,所述至少基于所述当前块的相邻块集合构建所述当前块的MPM列表,包括:
    确定所述当前块的权重矩阵导出模式;
    基于所述当前块的相邻块集合、预设角度预测模式集合以及所述权重矩阵导出模式,构建所述MPM列表。
  48. 根据权利要求47所述的方法,其中,所述基于所述当前块的相邻块集合、预设角度预测模式集合以及所述权重矩阵导出模式,构建所述MPM列表,包括:
    利用所述相邻块集合中的候选块的预测模式确定第一候选模式;
    利用所述权重矩阵导出模式确定第二候选模式;
    根据所述第一候选模式、所述第二候选模式以及所述预设角度预测模式集合,构建所述MPM列表。
  49. 根据权利要求45所述的方法,其中,所述至少基于所述当前块的相邻块集合构建所述当前块的MPM列表,包括:
    利用所述相邻块集合中的候选块的预测模式确定第一候选模式;
    利用预设候选模式集合确定第二候选模式;
    根据所述第一候选模式、所述第二候选模式以及预设角度预测模式集合,构建所述MPM列表。
  50. 根据权利要求48或49所述的方法,其中,所述利用所述相邻块集合中的候选块的预测模式确定第一候选模式,包括:
    对于所述相邻块集合中的一个相邻块,若所述候选块为普通帧内预测块,且所述候选块的预测模式为帧内预测模式,则将所述候选块的预测模式确定为第一候选模式。
  51. 根据权利要求48所述的方法,其中,所述利用所述权重矩阵导出模式确定第二候选模式,包括:
    根据所述权重矩阵导出模式确定分界线角度索引值;
    利用所述分界线角度索引值确定所述第二候选模式。
  52. 根据权利要求48或49所述的方法,其中,所述根据所述第一候选模式、所述第二候选模式以及所述预设角度预测模式集合,构建所述MPM列表,包括:
    基于所述预设角度预测模式集合对所述第一候选模式进行筛选处理,获得筛选后候选模式;
    根据所述筛选后候选模式和所述第二候选模式,构建所述MPM列表。
  53. 根据权利要求52所述的方法,其中,所述基于所述预设角度预测模式集合对所述第一候选模式进行筛选处理,获得筛选后候选模式,包括:
    若所述第一候选模式属于所述预设角度预测模式集合,则将所述第一候选模式确定为所述筛选后候选模式;
    若所述第一候选模式不属于所述预设角度预测模式集合,则不将所述第一候选模式确定为所述筛选后候选模式。
  54. 根据权利要求53所述的方法,其中,所述方法还包括:
    若所述第一候选模式不属于所述预设角度预测模式集合,则在所述预设角度预测模式集合中确定所述第一候选 模式的替换模式,并将所述替换模式确定为所述筛选后候选模式。
  55. 根据权利要求52所述的方法,其中,所述根据所述筛选后候选模式和所述第二候选模式,构建所述MPM列表,包括:
    若所述筛选后候选模式满足预设添加条件,则将所述筛选后候选模式添加至所述MPM列表;
    若所述MPM列表不满足预设列表长度L,且所述第二候选模式满足所述预设添加条件,则将所述第二候选模式添加至所述MPM列表;其中,L为大于等于1的整数。
  56. 根据权利要求55所述的方法,其中,所述方法还包括:
    若所述筛选后候选模式与所述MPM列表中的预测模式均不相同,则确定所述筛选后候选模式满足所述预设添加条件;
    若所述第二候选模式与所述MPM列表中的预测模式均不相同,则确定所述第二候选模式满足所述预设添加条件。
  57. 根据权利要求55所述的方法,其中,所述方法还包括:
    按照模式号由小到大的顺序对所述MPM列表中的预测模式进行排序处理。
  58. 根据权利要求57所述的方法,其中,所述L等于2。
  59. 根据权利要求58所述的方法,其中,所述预设角度预测模式集合包括以下多个集合中的任意一个集合:
    模式号为5-30的26个帧内角度预测模式构成的集合;
    模式号为6-31的26个帧内角度预测模式构成的集合;
    模式号为3,6,9,10,11,12,13,14,15,18,21,22,23,24,25,26,27,30的18个帧内角度预测模式构成的集合;
    模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式构成的集合。
  60. 根据权利要求57所述的方法,其中,所述L等于4。
  61. 根据权利要求60所述的方法,其中,所述预设角度预测模式集合包括以下多个集合中的任意一个集合:
    模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式构成的集合;
    模式号为4,6,8,10,11,12,13,14,16,17,18,19,20,22,23,24,25,26,28,30的20个帧内角度预测模式构成的集合。
  62. 根据权利要求58或60所述的方法,其中,所述第二候选模式为L个不同的帧内角度预测模式。
  63. 根据权利要求58所述的方法,其中,所述方法还包括:
    确定索引值与二元符号串的第一映射关系表;其中,所述第一映射关系表中分别包括至少两个长度的二元符号串。
  64. 根据权利要求63所述的方法,其中,所述方法还包括:
    所述MPM列表中的预测模式使用所述至少两个长度中的最小长度的二元符号串;
    所述预设角度预测模式集合中、所述MPM列表以外的其他预测模式使用所述最小长度以外的其他长度的二元符号串。
  65. 根据权利要求60所述的方法,其中,所述方法还包括:
    确定索引值与二元符号串的第二映射关系表;其中,所述第二映射关系表中分别包括至少两个长度的二元符号串。
  66. 根据权利要求65所述的方法,其中,所述方法还包括:
    所述MPM列表中的预测模式使用所述至少两个长度中的最小长度的二元符号串;
    所述预设角度预测模式集合中、所述MPM列表以外的其他预测模式使用所述第二长度的二元符号串。
  67. 根据权利要求63所述的方法,其中,若所述预设角度预测模式集合包括模式号为3,6,9,12,15,18,21,24,27,30的10个帧内角度预测模式,所述根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引,包括:
    若所述第一帧内预测模式的模式号与所述MPM列表中的第m个模式的模式号相同,则按照(m-1)对所述第一模式索引的值i进行赋值;其中,m为大于0且小于等于L的整数;
    若所述第一帧内预测模式的模式号与所述MPM列表中的任一个模式的模式号均不同,则利用所述MPM列表确定所述第一模式索引的值i;
    根据所述第一映射关系表和i确定所述第一模式索引。
  68. 根据权利要求67所述的方法,其中,所述利用所述MPM列表确定所述第一模式索引的值i,包括:
    若所述第一帧内预测模式的模式号小于所述MPM列表中的第一个模式的模式号,则按照所述所述第一帧内预测模式的模式号对第一变量tmp1进行赋值;
    若所述第一帧内预测模式的模式号小于所述MPM列表中的第二个模式的模式号,且大于所述MPM列表中的第一个模式的模式号,则按照所述所述第一帧内预测模式的模式号与3的差值对tmp1进行赋值;
    若所述第一帧内预测模式的模式号大于所述MPM列表中的第二个模式的模式号,则按照所述所述第一帧内预测模式的模式号与6的差值对tmp1进行赋值;
    根据所述tmp1计算所述第一模式索引的值i。
  69. 根据权利要求67所述的方法,其中,所述根据所述第一映射关系表和i确定所述第一模式索引,包括:
    按照所述第一映射关系表对i进行二值化处理,确定所述第一模式索引。
  70. 根据权利要求67所述的方法,其中,所述根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引,包括:
    若所述第二帧内预测模式的模式号与所述MPM列表中的第m个模式的模式号相同,则按照(m-1)对所述第二模式索引的值j进行赋值;其中,m为大于0且小于等于L的整数;
    若所述第二帧内预测模式的模式号与所述MPM列表中的任一个模式的模式号均不同,则利用所述MPM列表确定所述第二模式索引的值j;
    根据所述第一映射关系表和j确定所述第二模式索引。
  71. 根据权利要求70所述的方法,其中,所述利用所述MPM列表确定所述第二模式索引的值j,包括:
    若所述第二帧内预测模式的模式号小于所述MPM列表中的第一个模式的模式号,则按照所述所述第二帧内预测模式的模式号对第二变量tmp2进行赋值;
    若所述第二帧内预测模式的模式号小于所述MPM列表中的第二个模式的模式号,且大于所述MPM列表中的第一个模式的模式号,则按照所述所述第二帧内预测模式的模式号与3的差值对tmp2进行赋值;
    若所述第二帧内预测模式的模式号大于所述MPM列表中的第二个模式的模式号,则按照所述所述第二帧内预测模式的模式号与6的差值对tmp2进行赋值;
    根据所述tmp2计算所述第二模式索引的值j。
  72. 根据权利要求70所述的方法,其中,所述根据所述第一映射关系表和j确定所述第二模式索引,包括:
    按照所述第一映射关系表对j进行二值化处理,确定所述第二模式索引。
  73. 根据权利要求65所述的方法,其中,若所述预设角度预测模式集合包括模式号为6,8,10,12,14,16,18,20,22,24,26,28的12个帧内角度预测模式,所述根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引,包括:
    若所述第一帧内预测模式的模式号与所述MPM列表中的第m个模式的模式号相同,则按照(m-1)对所述第一模式索引的值i进行赋值;其中,m为大于0且小于等于L的整数;
    若所述第一帧内预测模式的模式号与所述MPM列表中的任一个模式的模式号均不同,则利用所述MPM列表确定所述第一模式索引的值i;
    根据所述第二映射关系表和i确定所述第一模式索引。
  74. 根据权利要求73所述的方法,其中,所述利用所述MPM列表确定所述第一模式索引的值i,包括:
    若所述第一帧内预测模式的模式号小于所述MPM列表中的第一个模式的模式号,则按照所述所述第一帧内预测模式的模式号对第一变量tmp1进行赋值;
    若所述第一帧内预测模式的模式号小于所述MPM列表中的第二个模式的模式号,且大于所述MPM列表中的第一个模式的模式号,则按照所述所述第一帧内预测模式的模式号与2的差值对tmp1进行赋值;
    若所述第一帧内预测模式的模式号小于所述MPM列表中的第三个模式的模式号,且大于所述MPM列表中的第二个模式的模式号,则按照所述所述第一帧内预测模式的模式号与4的差值对tmp1进行赋值;
    若所述第一帧内预测模式的模式号小于所述MPM列表中的第四个模式的模式号,且大于所述MPM列表中的第三个模式的模式号,则按照所述所述第一帧内预测模式的模式号与6的差值对tmp1进行赋值;
    若所述第一帧内预测模式的模式号大于所述MPM列表中的第四个模式的模式号,则按照所述所述第一帧内预测模式的模式号与8的差值对tmp1进行赋值;
    根据所述tmp1计算所述第一模式索引的值i。
  75. 根据权利要求73所述的方法,其中,所述根据所述第二映射关系表和i确定所述第一模式索引,包括:
    按照所述第二映射关系表对i进行二值化处理,确定所述第一模式索引。
  76. 根据权利要求73所述的方法,其中,所述根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引,包括:
    若所述第二帧内预测模式的模式号与所述MPM列表中的第m个模式的模式号相同,则按照(m-1)对所述第二模式索引的值j进行赋值;其中,m为大于0且小于等于L的整数;
    若所述第二帧内预测模式的模式号与所述MPM列表中的任一个模式的模式号均不同,则利用所述MPM列表确定所述第二模式索引的值j;
    根据所述第二映射关系表和j确定所述第二模式索引。
  77. 根据权利要求73所述的方法,其中,所述利用所述MPM列表确定所述第二模式索引的值j,包括:
    若所述第二帧内预测模式的模式号小于所述MPM列表中的第一个模式的模式号,则按照所述所述第二帧内预测模式的模式号对第二变量tmp2进行赋值;
    若所述第二帧内预测模式的模式号小于所述MPM列表中的第二个模式的模式号,且大于所述MPM列表中的第一个模式的模式号,则按照所述所述第二帧内预测模式的模式号与2的差值对tmp2进行赋值;
    若所述第二帧内预测模式的模式号小于所述MPM列表中的第三个模式的模式号,且大于所述MPM列表中的第二个模式的模式号,则按照所述所述第二帧内预测模式的模式号与4的差值对tmp2进行赋值;
    若所述第二帧内预测模式的模式号小于所述MPM列表中的第四个模式的模式号,且大于所述MPM列表中的第三个模式的模式号,则按照所述所述第二帧内预测模式的模式号与6的差值对tmp2进行赋值;
    若所述第二帧内预测模式的模式号大于所述MPM列表中的第四个模式的模式号,则按照所述所述第二帧内预测模式的模式号与8的差值对tmp2进行赋值;
    根据所述tmp2计算所述第二模式索引的值j。
  78. 根据权利要求76所述的方法,其中,所述根据所述第二映射关系表和j确定所述第二模式索引,包括:
    按照所述第二映射关系表对j进行二值化处理,确定所述第二模式索引。
  79. 根据权利要46或47所述的方法,其中,所述确定当前块的权重矩阵,包括:
    根据所述权重矩阵导出模式确定所述当前块的权重矩阵。
  80. 根据权利要求79所述的方法,其中,所述方法还包括:
    根据所述第一帧内预测模式确定所述当前块的第一预测值;根据所述第二帧内预测模式确定所述当前块的第二预测值;
    利用所述权重矩阵对所述第一预测值和所述第二预测值进行加权运算,获得所述当前块的预测值。
  81. 根据权利要求47所述的方法,其中,所述第一帧内预测模式和所述第二帧内预测模式分别为所述预设角度预测模式集合中的两个不同的帧内角度预测模式。
  82. 根据权利要求45所述的方法,其中,所述方法还包括:
    所述MPM列表中的预测模式均为帧内角度预测模式。
  83. 根据权利要求45所述的方法,其中,所述方法还包括:
    确定所述当前块的尺寸参数;
    根据所述尺寸参数确定所述当前块是否使用所述IWCP模式。
  84. 根据权利要求83所述的方法,其中,所述尺寸参数包括宽度和高度;所述方法还包括:
    若所述宽度和所述高度均大于等于第一下限值,且所述宽度和所述高度均小于等于第一上限值,则确定所述当前块使用所述IWCP模式。
  85. 根据权利要求45所述的方法,其中,所述方法还包括:
    确定所述当前块的帧内预测模式参数;其中,所述帧内预测模式参数用于判断所述当前块是否使用所述IWCP模式;
    将所述镇内预测模式参数写入所述码流。
  86. 根据权利要求45所述的方法,其中,所述方法还包括:
    对比特标志为0的二元符号串使用上下文模型进行编码,对比特标志不为0的二元符号串不使用上下文模型进行编码。
  87. 根据权利要求45所述的方法,其中,所述方法还包括:
    对于YUV4:2:0格式,若所述当前块为亮度的8×8的块,则确定所述当前块使用所述IWCP模式;若所述当前块为色度的4×4的块,则确定所述当前块不使用所述IWCP模式。
  88. 一种编码器,所述编码器包括:第一确定部分,第一构建部分,编码部分,
    所述第一确定部分,配置为当当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;
    所述第一构建部分,配置为至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
    所述第一确定部分,还配置为根据所述第一帧内预测模式、所述第二帧内预测模式以及所述MPM列表确定所述当前块的第一模式索引和第二模式索引;
    所述编码部分,配置为将所述第一模式索引和所述第二模式索引写入码流。
  89. 一种编码器,所述解码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如权利要求1-44任一项所述的方法。
  90. 一种解码器,所述解码器包括:解码部分,第二确定部分,第二构建部分,
    所述解码部分,配置为解码码流;
    所述第二确定部分,配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用IWCP模式确定所述当前块的帧内预测值时,确定所述当前块的第一模式索引和第二模式索引;
    第二构建部分,配置为至少基于所述当前块的相邻块集合构建所述当前块的MPM列表;
    所述第二确定部分,还配置为根据所述第一模式索引、所述第二模式索引以及所述MPM列表确定所述当前块的第一帧内预测模式和第二帧内预测模式;其中,所述第一帧内预测模式和所述第二帧内预测模式为两个不同的帧内角度预测模式;确定当前块的权重矩阵,并基于所述第一帧内预测模式、所述第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
  91. 一种解码器,所述编码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如权利要求45-87任一项所述的方法。
  92. 一种计算机存储介质,其中,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求1-44任一项所述的方法,或者,被第二处理器执行时实现如权利要求45-87任一项所述的方法。
CN202180087698.3A 2021-03-11 2021-03-11 帧内预测方法、编码器、解码器以及存储介质 Pending CN116671103A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311245565.1A CN117221535A (zh) 2021-03-11 2021-03-11 帧内预测方法、编码器、解码器以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/080324 WO2022188114A1 (zh) 2021-03-11 2021-03-11 帧内预测方法、编码器、解码器以及存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311245565.1A Division CN117221535A (zh) 2021-03-11 2021-03-11 帧内预测方法、编码器、解码器以及存储介质

Publications (1)

Publication Number Publication Date
CN116671103A true CN116671103A (zh) 2023-08-29

Family

ID=83227254

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202180087698.3A Pending CN116671103A (zh) 2021-03-11 2021-03-11 帧内预测方法、编码器、解码器以及存储介质
CN202311245565.1A Pending CN117221535A (zh) 2021-03-11 2021-03-11 帧内预测方法、编码器、解码器以及存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311245565.1A Pending CN117221535A (zh) 2021-03-11 2021-03-11 帧内预测方法、编码器、解码器以及存储介质

Country Status (3)

Country Link
CN (2) CN116671103A (zh)
MX (1) MX2023010538A (zh)
WO (1) WO2022188114A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108174206A (zh) * 2011-12-05 2018-06-15 Lg 电子株式会社 帧内预测的方法和设备
US20160373770A1 (en) * 2015-06-18 2016-12-22 Qualcomm Incorporated Intra prediction and intra mode coding
CN111108749A (zh) * 2018-09-25 2020-05-05 北京大学 编码方法、解码方法、编码设备和解码设备
US11057622B2 (en) * 2018-12-13 2021-07-06 Qualcomm Incorporated Position dependent intra prediction combination with non-square block diagonals

Also Published As

Publication number Publication date
CN117221535A (zh) 2023-12-12
WO2022188114A1 (zh) 2022-09-15
MX2023010538A (es) 2023-09-19

Similar Documents

Publication Publication Date Title
US10924734B2 (en) Method and apparatus of deriving quantization parameter
US10205947B2 (en) Apparatus of encoding an image
TWI552572B (zh) 視頻資料的解碼方法
KR20220016232A (ko) 코딩 및 디코딩 방법, 장치 및 저장 매체
US20130003855A1 (en) Processing method and device for video signals
TW201728169A (zh) 合併模式中視訊資料的編碼方法
US20230300326A1 (en) Prediction methods
KR20140124448A (ko) 인트라 예측을 이용한 비디오 부호화/복호화 방법 및 장치
CN113497936A (zh) 编码方法、解码方法、编码器、解码器以及存储介质
WO2022116113A1 (zh) 一种帧内预测方法、装置及解码器和编码器
US11343502B2 (en) Method and apparatus for encoding an image
CN116671103A (zh) 帧内预测方法、编码器、解码器以及存储介质
CN116830584A (zh) 帧内预测方法、编码器、解码器以及存储介质
WO2022140905A1 (zh) 预测方法、编码器、解码器以及存储介质
WO2023200907A1 (en) Methods and devices for geometric partitioning mode with adaptive blending
CN118118666A (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