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

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

Info

Publication number
CN116569546A
CN116569546A CN202080107557.9A CN202080107557A CN116569546A CN 116569546 A CN116569546 A CN 116569546A CN 202080107557 A CN202080107557 A CN 202080107557A CN 116569546 A CN116569546 A CN 116569546A
Authority
CN
China
Prior art keywords
mode
intra
prediction mode
determining
current block
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
CN202080107557.9A
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 CN202311105465.9A priority Critical patent/CN116980594A/zh
Publication of CN116569546A publication Critical patent/CN116569546A/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/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请实施例公开了一种帧内预测方法、编码器、解码器以及存储介质,当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。

Description

帧内预测方法、编码器、解码器以及存储介质
相关申请的交叉引用
本申请基于申请号为PCT/CN2020/133708、申请日为2020年12月3日的国际专利申请提出,并要求该国际专利申请的优先权,该国际专利申请的全部内容在此引入本申请作为参考。
技术领域
本申请实施例涉及图像处理技术领域,尤其涉及一种帧内预测方法、编码器、解码器以及存储介质。
背景技术
为了捕捉自然视频中呈现的更精细的边缘方向,多功能视频编码(Versatile Video Coding,VVC)中将视频压缩标准(High Efficiency Video Coding,HEVC)中定义的33种帧内亮度预测角度模式扩展到了65种,另外还有两种非角度模式,即编号为0的渐变平坦Planar模式和编号为1的直流(Direct Current,DC)模式。
虽然常见的帧内预测有DC、Planar、双线性过滤Bilinear等模式,但它们都只能处理简单的纹理的预测;即使角度模式越来越多,但它们的预测只能循着一个角度的直线来进行。可见,目前的帧内预测模式仅仅能处理简单的纹理的预测。对于复杂的纹理,在预测时则需要划分成更小的块,复杂度较高,相应地,编解码过程中所需要的存储空间和整体时间也大大增加,从而降低了编解码效率。
发明内容
本申请实施例提供一种帧内预测方法、编码器、解码器以及存储介质,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种帧内预测方法,应用于编码器,所述方法包括:
当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;
根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;
基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
第二方面,本申请实施例提供了一种帧内预测方法,应用于编码器,所述方法包括:
当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;
根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;
基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
第三方面,本申请实施例提供了一种帧内预测方法,应用于解码器,所述方法包括:
解析码流,确定当前块的帧内预测模式参数;
当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;
根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;
基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
第四方面,本申请实施例提供了一种帧内预测方法,应用于解码器,所述方法包括:
解析码流,确定当前块的帧内预测模式参数;
当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;
根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;
基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
第五方面,本申请实施例提供了一种编码器,所述编码器包括:第一确定部分,
所述第一确定部分,配置为当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值;
所述第一确定部分,还配置为当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
第六方面,本申请实施例提供了一种编码器,所述编码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如上所述的帧内预测方法。
第七方面,本申请实施例提供了一种解码器,所述解码器包括:解码部分,第二确定部分,
所述解码部分,配置为解析码流;
所述第二确定部分,配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值;
所述第二确定部分,还配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
第八方面,本申请实施例提供了一种解码器,所述解码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如上所述的帧内预测方法。
第九方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器和第二处理器执行时,实现如上所述的帧内预测方法。
本申请实施例提供了一种帧内预测方法、编码器、解码器以及存储介质,一方面,当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。另一方面,当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。也就是说,在本申请的实施例中,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性,同时,编解码器还可以通过权重矩阵与预测模式之间的相关性进行MPM列表的构建,能够大大降低复杂度,也就是说,本申请提出的帧内预测方法,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。
附图说明
图1为权重分配示意图一;
图2为权重分配示意图二;
图3为帧内预测的示意图一;
图4为帧内预测的示意图二;
图5A-5I为帧内预测的示意图三;
图6为帧内预测模式的示意图一;
图7为帧内预测模式的示意图二;
图8为帧内预测模式的示意图三;
图9为视频编码系统的组成框图;
图10为视频解码系统的组成框图;
图11为帧内预测方法的实现流程示意图一;
图12为SAWP模式的示意图;
图13为帧内预测的示意图三;
图14为相邻块的示意图;
图15为聚类示意图;
图16为帧内预测模式选择的示意图;
图17为帧内预测方法的实现流程示意图二;
图18为帧内预测方法的实现流程示意图三;
图19为帧内预测方法的实现流程示意图四;
图20为本申请实施例提出的编码器的组成结构示意图一;
图21为本申请实施例提出的编码器的组成结构示意图二;
图22为本申请实施例提出的解码器的组成结构示意图一;
图23为本申请实施例提出的解码器的组成结构示意图二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。
目前,通用的视频编解码标准基于都采用基于块的混合编码框架。视频图像中的每一帧被分割成相同大小(比如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的预测模式决定,或者也可以认为GPM或AWP使用两个与当前块大小不相同的参考块,即各取所需的一部分作为参考块。即将权重不为0的部分作为参考块,而将权重为0的部分剔除出来。
示例性地,图1为权重分配示意图一,如图1所示,其示出了本申请实施例提供的一种GPM在64×64的当前块上的多种划分模式的权重分配示意图,其中,GPM存在有64种划分模式。图2为权重分配示意图二,如图2所示,其示出了本申请实施例提供的一种AWP在64×64的当前块上的多种划分模式的权重分配示意图,其中,AWP存在有56种划分模式。无论是图2还是图3,每一种划分模式下,区域2表示第一个参考块对应位置的权重值为0%,区域1表示第一个参考块对应位置的权重值为100%,灰色区域则按颜色深浅的不同表示第一个参考块对应位置的权重值为大于0%且小于100%的某一个权重值,第二个参考块对应位置的权重值则为100%减去第一个参考块对应位置的权重值。
GPM和AWP的权重导出方法不同。GPM根据每种模式确定角度及偏移量,而后计算出每个模式的权重矩阵。AWP首先做出一维的权重的线,然后使用类似于帧内角度预测的方法将一维的权重的线铺满整个矩阵。
应理解,早期的编解码技术中只存在矩形的划分方式,无论是CU、PU还是变换单元(Transform Unit,TU)的划分。而GPM或AWP均在没有划分的情况下实现了预测的非矩形的划分效果。GPM和AWP使用了两个参考块的权重的蒙版(mask),即上述的权重图。这个蒙版确定了两个参考块在产生预测块时的权重,或者可以简单地理解为预测块的一部分位置来自于第一个参考块一部分位置来自于第二个参考块,而过渡区域(blending area)用两个参考块的对应位置加权得到,从而使过渡更平滑。GPM和AWP没有按划分线把当前块划分成两个CU或PU,于是在预测之后的残差的变换、量化、反变换、反量化等也都是将当前块作为一个整体来处理。
当前块所使用的运动信息可以保存下来。当前帧的后续编解码的块可以根据相邻的位置关系使用前面已编解码的块,如相邻块,的运动信息。这利用了空域上的相关性,所以这种已编解码的运动信息叫做空域上的运动信息。当前帧的每个块所使用的运动信息可以保存下来。后续编解码的帧可以根据参考关系使用前面已编解码的帧的运动信息。这利用了时域上的相关性,所以这种已编解码的帧的运动信息叫做时域上的运动信息。当前帧的每个块所使用的运动信息的存储方法通常将一个固定大小的矩阵,如4x4的矩阵,作为一个最小单元,每个最小单元单独存储一组运动信息。这样每编解码一个块,它的位置对应的那些最小单元就可以把这个块的运动信息存储下来。这样使用空域上的运动信息或时域上的运动信息时可以直接根据位置找到该位置对应的运动信息。如一个16x16的块使用了传统的单向预测,那么这个块对应的所有的4x4个最小单元都存储这个单向预测的运动信息。如果一个块使用了GPM或AWP,那么这个块对应的所有的最小单元会根据GPM或AWP的模式,第一个运动信息,和第二个运动信息以及每个最小单元的位置确定每个最小单元存储的运动信息。一种方法是如果一个最小单元对应的4x4的像素全部来自于第一个运动信息,那么这个最小单元存储第一个运动信息,如果一个最小单元对应的4x4的像素全部来自于第二个运动信息,那么这个最小单元存储第二个运动信息。如果一个最小单元对应的4x4的像素既来自于第一个运动信息又来自于第二个运动信息,那么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所示,当前块的大小为4x4,当前块左边一行和上面一列的像素为当前块的参考像素,帧内预测使用这些参考像素对当前块进行预测。这些参考像素可能已经全部可得,即全部已经编解码。也可能有部分不可得,比如当前块是整帧的最左侧,那么当前块的左边的参考像素不可得。或者编解码当前块时,当前块左下方的部分还没有编解码,那么左下方的参考像素也不可得。对于参考像素不可得的情况,可以使用可得的参考像素或某些值或某些方法进行填充,或者不进行填充。
图4为帧内预测的示意图二,如图4所示,多参考行帧内预测方法(Multiple reference line,MRL)可以使用更多的参考像素从而提高编解码效率,例如,使用4个参考行/列为当前块的参考像素。
进一步地,帧内预测有多种预测模式,图5A-5I为帧内预测的示意图三,如图5A-5I所示,H.264中对4x4的块进行帧内预测主要可以包括9种模式。其中,如图5A所示的模式0将当前块上面的像素按垂直方向复制到当前块作为预测值,如图5B所示的模式1将左边的参考像素按水平方向复制到当前块作为预测值,如图5C所示的模式2直流DC将A~D和I~L这8个点的平均值作为所有点的预测值,如图5D-5I所示的模式3~8分别按某一个角度将参考像素复制到当前块的对应位置,因为当前块某些位置不能正好对应到参考像素,可能需要使用参考像素的加权平均值,或者说是插值的参考像素的分像素。
除此之外,还有Planar模式等,而随着技术的发展以及块的扩大,角度预测模式也越来越多。图6为帧内预测模式的示意图一,如图6所示,如HEVC使用的帧内预测模式有Planar、DC和33种角度模式共35种预测模式。图7为帧内预测模式的示意图二,如图7所示,VVC使用的帧内模式有Planar、DC和65种角度模式共67种预测模式。图8为帧内预测模式的示意图三,如图8所示,AVS3使用DC、Planar、Bilinear和63种角度模式共66种预测模式。
另外还有一些技术对预测进行改进,如改进参考像素的分像素插值,对预测像素进行滤波等。如AVS3中的多组合帧内预测滤波(multipleintraprediction filter,MIPF)对不同的块大小,使用不同的滤波器产生预测值。对同一个块内的不同位置的像素,与参考像素较近的像素使用一种滤波器产生预测值,与参考像素较远的像素使用另一种滤波器产生预测值。对预测像素进行滤波的技术如AVS3中的帧内预测滤波(intraprediction filter,IPF),对预测值可以使用参考像素进行滤波。
在帧内预测中可以使用最可能模式列表(MostprobableModes List,MPM)的帧内模式编码技术来提高编解码效率。利用周边已编解码的块的帧内预测模式,以及根据周边已编解码块的帧内预测模式导出的帧内预测模式,如相邻的模式,以及一些常用或使用概率比较高的帧内预测模式,如DC,Planar,Bilinear模式等,构成一个模式列表。参考周边已编解码的块的帧内预测模式利用了空间上的相关性。因为纹理在空间上会有一定的连续性。MPM可以作为帧内预测模式的预测。也就是认为当前块使用MPM的概率会比不使用MPM的概率高。因而在二值化时,会给MPM使用更少的码字,从而节省开销,以提高编解码效率。
在AVS3的文本中使用了变量predIntraPredMode(预测模式的预测值)来表示MPM,如predIntraPredMode0,predIntraPredMode1。本申请中认为predIntraPredMode预测模式的预测值可以作为MPM的另一种称谓,或者说本申请对于MPM的发明内容也适用于predIntraPredMode。
AVS3中predIntraPredMode0,predIntraPredMode1的构造方法如下:
按以下步骤计算当前预测块预测模式的预测值predIntraPredMode:
如果左边预测块A“存在”且为普通帧内预测块,则将A的IntraLumaPredMode赋值给intraPredModeA;否则intraPredModeA等于0。
如果上边预测块B“存在”且为普通帧内预测块,则将B的IntraLumaPredMode赋值给intraPredModeB;否则 intraPredModeB等于0。
如果intraPredModeA不等于intraPredModeB,则predIntraPredMode0等于Min(intraPredModeA,intraPredModeB),predIntraPredMode1等于Max(intraPredModeA,intraPredModeB);否则:
如果intraPredModeA等于0,则predIntraPredMode0等于0,predIntraPredMode1等于2;
如果intraPredModeA不等于0,则predIntraPredMode0等于0,predIntraPredMode1等于intraPredModeA;
其中,0代表DC模式,2代表Bilinear模式。
虽然现在的帧内预测有DC、Planar、Bilinear等模式,但它们都只能处理简单的纹理的预测;即使角度模式越来越多,但它们的预测只能循着一个角度的直线来进行。可见,目前的帧内预测模式仅仅能处理简单的纹理的预测。对于复杂的纹理,在预测时则需要划分成更小的块,或者对更多的残差进行编码,或者造成较大的失真。
针对以上问题,在本申请的实施例中,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性,同时,编解码器还可以通过权重矩阵与预测模式之间的相关性进行MPM列表的构建,能够大大降低复杂度,也就是说,本申请提出的帧内预测方法,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。
参见图9,其示出了本申请实施例提供的一种视频编码系统的组成框图示例;如图9所示,该视频编码系统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中。
参见图10,其示出了本申请实施例提供的一种视频解码系统的组成框图示例;如图10所示,该视频解码系统20包括解码单元201、反变换与反量化单元202、帧内预测单元203、运动补偿单元204、滤波单元205和解码图像缓存单元206等,其中,解码单元201可以实现头信息解码以及CABAC解码,滤波单元205可以实现去方块滤波以及SAO滤波。输入的视频信号经过图9的编码处理之后,输出该视频信号的码流;该码流输入视频解码系统20中,首先经过解码单元201,用于得到解码后的变换系数;针对该变换系数通过反变换与反量化单元202进行处理,以便在像素域中产生残差块;帧内预测单元203可用于基于所确定的帧内预测模式和来自当前帧或图片的先前经解码块的数据而产生当前视频解码块的预测数据;运动补偿单元204是通过剖析运动向量和其他关联语法元素来确定用于视频解码块的预测信息,并使用该预测信息以产生正被解码的视频解码块的预测性块;通过对来自反变换与反量化单元202的残差块与由帧内预测单元203或运动补偿单元204产生的对应预测性块进行求和,而形成解码的视频块;该解码的视频信号通过滤波单元205以便去除方块效应伪影,可以改善视频质量;然后将经解码的视频块存储于解码图像缓存单元206中,解码图像缓存单元206存储用于后续帧内预测或运动补偿的参考图像,同时也用于视频信号的输出,即得到了所恢复的原始视频信号。
本申请实施例中的帧内预测方法,主要应用在如图9所示的帧内预测单元103部分和如图10所示的帧内预测单元203部分。也就是说,本申请实施例中的帧内预测方法,既可以应用于视频编码系统,也可以应用于视频解码系统,甚至还可以同时应用于视频编码系统和视频解码系统,但是本申请实施例不作具体限定。还需要说明的是,当该帧内预测方法应用于帧内预测单元103部分时,“当前块”具体是指帧内预测中的当前编码块;当该帧内预测方法应用于帧内预测单元203部分时,“当前块”具体是指帧内预测中的当前解码块。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请的一实施例提出了一种帧内预测方法,应用于编码器,图11为帧内预测方法的实现流程示意图一,如图11所示,编码器进行帧内预测的方法可以包括以下步骤:
步骤101、当当前块使用SAWP模式确定当前块的帧内预测值时,确定当前块的权重矩阵导出模式。
在本申请的实施例中,编码器可以先确定当前块的帧内预测模式参数。
需要说明的是,在本申请的实施中,帧内预测模式参数可以指示当前块是否可以使用空域角度加权预测(Spatial Angular Weighted Prediction,SAWP)编码模式,即指示当前块是否可以使用两种不同的预测模式进行预测处理。
可以理解的是,在本申请的实施例中,可以将帧内预测模式参数理解为一个表明是否使用了SAWP模式标志位。具体地,编码器可以使用一个变量作为帧内预测模式参数,从而可以通过对该变量的取值的设置来实现帧内预测模 式参数的设置。
示例性的,在本申请中,如果当前块使用SAWP模式,那么编码器可以将帧内预测模式参数的取值设置为指示当前块使用SAWP模式,具体地,编码器可以将变量的取值设置为1。
示例性的,在本申请中,如果当前块不使用SAWP模式,那么编码器可以将帧内预测模式参数的取值设置为指示当前块不使用SAWP模式,具体地,编码器可以将变量取值设置为0。
进一步地,在本申请的实施例中,编码器在完成对帧内预测模式参数的设置之后,便可以将帧内预测模式参数写入码流中,传输至解码器,从而可以使解码器在解析码流之后获得帧内预测模式参数。
也就是说,在本申请的实施例中,在编码器侧,会针对当前块进行预测编码,在这过程中就可以确定出当前块的帧内预测模式参数,并将相应的帧内预测模式参数写入码流,由编码器传输到解码器。
需要说明的是,在本申请的实施例中,SAWP模式为一种帧内预测方法,具体地,SAWP模式为对当前块确定两个不同的帧内预测模式,然后分别根据这两个不同的帧内预测模式确定出两个预测块,接着可以再确定一个权重矩阵,将则会两个预测块依据权重矩阵进行组合,最终便可以得到新的预测块,即获得当前块的预测块。
图12为SAWP模式的示意图,如图12所示,在对当前块进行帧内预测时,可以使用第一帧内预测模式确定当前块的第一预测块,同时使用第二帧内预测模式确定当前块的第二预测块,然后可以利用权重矩阵对第一预测块和第二预测块进行组合处理,最终获得一个新的预测块。
需要说明的是,在本申请的实施例中,视频图像可以划分为多个图像块,当前块即为每个当前待编码的图像块,可以称为编码块(Coding Block,CB)。这里,每个编码块可以包括第一图像分量、第二图像分量和第三图像分量。具体地,在本申请中,假定进行第一帧内预测,而且第一图像分量为亮度分量,即待预测图像分量为亮度分量,那么可以将待预测的编码块称为亮度块;或者,假定进行第二帧内预测,而且第二图像分量为色度分量,即待预测图像分量为色度分量,那么可以将待预测的编码块称为色度块。
进一步地,在本申请的实施例中,在应用SAWP模式时,可以对当前块的尺寸进行限制。
可以理解的是,由于本申请实施例提出的帧内预测方法需要分别使用两个不同的帧内预测模式生成两个预测块,再根据权重矩阵进行加权得到新的预测块,为了降低的复杂度,同时考虑压缩性能和复杂度的权衡,在本申请的实施例中,可以限制对一些大小的预测块不使用该SAWP模式。因此,在本申请中,编码器可以先确定当前块的尺寸参数,然后根据尺寸参数确定当前块是否使用SAWP模式。
需要说明的是,在本申请的实施例中,当前块的尺寸参数可以包括当前块的高度和宽度,因此,编码器可以利用当前块的高度和宽度对使用SAWP模式进行限制,即限制能够使用SAWP模式的预测块的尺寸。
示例性的,在本申请中,若宽度大于第一阈值且高度大于第二阈值,则确定当前块使用SAWP模式。可见,一种可能的限制是仅仅在预测块的宽度大于(或大于等于)第一阈值TH1,且预测块的高度大于(或大于等于)第二阈值的情况下使用SAWP模式。其中,第一阈值TH1和第二阈值的值可以是8,16,32等,第一阈值可以等于第二阈值。
示例性的,在本申请中,若宽度小于第三阈值且高度大于第四阈值,则确定当前块使用SAWP模式。可见,一种可能的限制是仅仅在预测块的宽度小于(或小于等于)第三阈值,且预测块的高度大于(或大于等于)第四阈值的情况下使用SAWP模式。其中,第三阈值和第四阈值的值可以是8,16,32等,第三阈值可以等于第四阈值。
在另一个示例中,在本申请中,若宽度小于第三阈值且高度小于第四阈值,则确定当前块使用SWAP模式。可见,一种可能的限制是仅仅在预测块的宽度小于(或小于等于)第三阈值,且预测块的高度下雨(或小于等于)第四阈值的情况下使用SWAP模式。其中,第三阈值和第四阈值的值可以是8,16,32等,第三阈值可以等于第四阈值。
对于上述示例,以在预测块的宽度大于等于8,且预测块的高度大于等于8,且预测块的宽度小于等于32,且预测块的高度小于等于32的情况为例进行说明,给出相应的实现过程:
其中SawpMinSize等于8,SawpMaxSize等于32.
另外,以在预测块的宽度大于等于8,且预测块的高度大于等于8,且预测块的宽度小于等于16,且预测块的高度小于等于16的情况为例进行说明,给出相应的实现过程:
其中SawpMinSize等于8,SawpMaxSize等于16。
进一步地,在本申请的实施例中,还可以通过像素参数的限制来实现限制能够使用SAWP模式的预测块的尺寸。
示例性的,在本申请中,编码器可以先确定当前块的像素参数,然后再根据像素参数和第五阈值进一步判断当前块是否可以使用SAWP模式。可见,一种可能的限制是仅仅在预测块的像素数大于(或大于等于)第五阈值的情 况下使用SAWP模式。其中,第五阈值的值可以是8,16,32等。
也就是说,在本申请中,只有在当前块的尺寸参数满足大小要求的条件下,当前块才可以使用SAWP模式。
需要说明的是,在本申请的实施例中,编码器在对当前块进行帧内预测时,除了本申请提出的SAWP模式,还可以使用的帧内预测模式包括直流(Direct Current,DC)模式、平面(PLANAR)模式以及角度模式任意一种帧内编码模式等。
可以理解的是,在本申请的实施例中,编码器在对当前块进行帧内预测之前,可以先确定预测模式参数,然后可以通过预测模式参数来确定当前块的当前块的编码模式是具体哪一种编码模式。
在本申请的实施例中,进一步地,编码器在确定当前块的当前块的预测模式参数时,可以先利用多种不同的预测模式分别对当前块进行预测编码,然后计算多种预测模式下每一种预测模式对应的率失真代价结果;最后便可以从计算得到的多个率失真代价结果中选取最小率失真代价结果,并将最小率失真代价结果对应的预测模式确定为当前块的预测模式参数。
也就是说,在编码器侧,针对当前块可以采用多种预测模式分别对待预测图像分量进行编码。
进一步地,在本申请的实施例中,编码器在利用多种预测模式分别对当前块进行编码之后,可以得到每一种预测模式对应的率失真代价结果;然后从所得到的多个率失真代价结果中选取最小率失真代价结果,并将该最小率失真代价结果对应的预测模式确定为当前块的当前块的预测模式参数;如此,最终可以使用所确定的预测模式对当前块进行编码,而且在这种预测模式下,可以使得预测残差小,能够提高编解码效率。
在本申请的实施例中,进一步地,在编码端,当编码器对某一个预测块进行帧内预测的尝试时,也会尝试按照SAWP模式编码的代价。在尝试按照SAWP模式编码的代价时,会尝试全部或部分可能的情况的代价,然后选择代价最小的一个作为SAWP模式编码的代价。
需要说明的是,在本申请的实施例中,上述全部可能的情况,包括当前块的第一帧内预测模式为所有可能的预测模式,当前块的第二帧内预测模式为所有可能的测模式,权重矩阵导出模式为所有可能的模式这三个变化的组合。假设所有可用的帧内预测模式有66种,第一帧内预测模式有66种可能,由于第二帧内预测模式与第一帧内预测模式不相同,因此第二帧内预测模式有65种,假设权重矩阵导出模式有56种(以AWP为例),那么本申请可能使用任意两种不同的帧内预测模式以及任意一种权重矩阵导出模式,共有66×65×56种可能。如果设定不使用PCM这种帧内预测模式。那么就有65×64×56种可能。可见,在本申请中,还可以限制可以选择的帧内预测模式,以及限制可以使用的权重矩阵导出模式的个数,那么组合的情况也会相应减少。
例如,针对第一帧内预测模式可以选择的帧内预测模式进行限制,和/或,对第二帧内预测模式可以选择的帧内预测模式进行限制。其中,对于帧内预测模式的选择进行限制即为减少可以选择的帧内预测模式,和/或对可以使用的权重矩阵导出模式进行限制,从而减少本申请可能使用任意两种不同的帧内预测模式以及任意一种权重矩阵到处模式的可能性,从而减少相应的标志位的比特数。
进一步地,在本申请的实施例中,编码器可以对所有的SAWP模式可能的情况进行率失真优化(Rate-Distortion Optimization,RDO),确定代价最小的一个组合,其中,每一个组合均为包括有第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式的组合。
可选地,为了减小RDO的耗时,可以先对上述所有的SAWP模式可能的情况进行初选,如使用SAD,和SATD等作为近似的代价进行初选,确定设定数量的候选第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式的组合,再进行RDO细选,确定代价最小的一个第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式的组合。从而可以在初选时使用一些快速算法减少尝试的次数,比如说一个帧内角度预测模式造成代价很大时,与它相邻的几个帧内预测模式都不再尝试等。
可以理解的是,在本申请中,在上述的初选和细选中,代价中可以包括编码第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式在码流中的开销的代价。也可以在初选的时候使用第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式在码流中的开销的估计的代价。如根据第一或第二帧内预测模式是不是MPM估计其比特数,或者根据帧内预测模式的排序估计第一或第二帧内预测模式的比特数。在RDO中可以通过较为准确的试编码来获得其代价。该过程中需要用到本申请的构建模式列表或者对帧内预测模式进行排序的方法。
可以理解的是,在本申请中,上述初选和细选时都会根据第一帧内预测模式确定第一预测块,根据第二帧内预测模式确定第二预测块,根据权重矩阵导出模式导出权重矩阵,根据第一预测块、第二预测块和权重矩阵确定本申请的预测块。SAD和SATD初选时使用当前块和预测块来确定SAD和SATD。
进一步地,在本申请的实施例中,编码器也可以先对当前块的纹理进行分析,比如使用梯度进行分析。利用分析的数据帮助初选。比如当前块的纹理中哪一个方向的纹理较强,上述初选时就多选择近似方向的帧内预测模式进行尝试。比如当前块的纹理中哪一个方向的纹理较弱,上述初选时就少选择或不选择近似方向的帧内预测模式进行尝试。
需要说明的是,在本申请中,按照SAWP模式编码的代价中包括第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式在码流中占用的码字的代价,预测残差进行变换量化熵编码等在码流中要传输的各种标志以及量化系数的代价,以及重建块的失真的代价等。
在确定按照SAWP模式编码的代价之后,如果按照SAWP模式编码的代价小于其他预测模式的代价,其中,其他预测模式可以包括其他帧内预测模式或帧间预测模式等,编码器会选择SAWP模式作为当前块的预测模式,否则会选择其他某种预测模式。
进一步地,在本申请的实施例中,编码器会尝试不同块划分的编码代价等。如果最终某一个预测块选择了了SAWP模式,那么可以将SAWP模式需要的标志位以及第一帧内预测模式、第二帧内预测模式、权重矩阵导出模式的信息按照语法(syntax)写入码流,同时将这个预测块按SAWP模式的方法进行预测以及后续的编码工作。
在本申请的实施例中,编码器在确定当前块的帧内预测模式参数之后,如果帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值,那么编码器可以进一步确定当前块的权重矩阵导出模式。
需要说明的是,在本申请中,权重矩阵导出模式用于对当前块使用的权重矩阵进行确定。具体地,权重矩阵导出模式可以是导出权重矩阵的模式。对于一个给定长度和宽度的预测块,每一种权重矩阵导出模式可以导出一个权重矩阵;对于同样大小的预测块,不同权重矩阵导出模式导出的权重矩阵不同。
示例性的,在本申请中,AVS3的AWP有56种权重矩阵导出模式,VVC的GPM有64种权重矩阵导出模式。
步骤102、根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式;根据权重矩阵导出模式确定当前块的权重矩阵。
在本申请的实施例中,如果帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值,那么编码器确定当前块的权重矩阵导出模式之后,可以先根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式,同时可以根据权重矩阵导出模式确定当前块的权重矩阵。
需要说明的是,在本申请的实施例中,当前块所使用的第一帧内预测模式和第二帧内预测模式均可以为目前常见的任意一种帧内预测模式,包括但不限于DC、Planar、Bilinear以及角度预测模式等帧内预测模式。
可选地,在本申请中,更广泛的理解是其中帧内预测模式还包括对预测进行改进的技术,如改进参考像素的分像素插值,对预测像素进行滤波等,如MIPF,IPF等。
相应地,在本申请中,可以将DC、Planar、Bilinear以及角度预测模式等帧内预测模式称为基本帧内预测模式,预测进行改进的技术如MIPF,IPF等称为改进帧内预测模式。基本帧内预测模式是可以不依赖于其他帧内预测模式独立生成预测块的帧内预测模式,即确定了参考像素和基本帧内预测模式,就可以确定预测块。而改进帧内预测模式不能独立生成预测块,它们需要依赖于基本帧内预测模式才能确定预测块。比如某一种角度预测模式可以根据参考像素确定生成预测块,而MIPF可以在这个角度预测模式的基础上对不同位置的像素使用不同的滤波器生成或确定预测块。
示例性的,在本申请中,第一帧内预测模式和第二帧内预测模式可以都是基本帧内预测模式,即本申请实施例使用两个不同的基本帧内预测模式。这时候对于改进帧内预测模式,它们可能分别与第一帧内预测模式和第二帧内预测模式组合,产生第一预测块和第二预测块。以及可能在本申请实施例产生“新的预测块”之后,对该“新的预测块”进行改进得到更新的预测块。
示例性的,在本申请中,第一帧内预测模式和第二帧内预测模式也可以是基本帧内预测模式和改进帧内预测模式的组合,即本申请实施例使用了两个不同的帧内预测模式组合。如第一帧内预测模式和第二帧内预测模式都使用了同一种角度预测模式,但是第一帧内预测模式没有使用某种改进帧内预测模式,如IPF;而第二这内预测模式使用了这种改进帧内预测模式,如IPF。或者第一帧内预测模式和第二帧内预测模式都使用了同一种角度预测模式,但是第一帧内预测模式使用了某种改进帧内预测模式的某一种选择;而第二这内预测模式使用了这种改进帧内预测模式的另一种选择。在得到“新的预测块”之后,仍然可以有改进帧内预测模式对“新的预测块”进行改进得到更新的预测块。
由此可见,本申请实施例所提出的帧内预测方法,基于第一帧内预测模式和第二帧内预测模式,可以对当前块确定两个不完全相同的预测块,确定一个权重矩阵,将两个预测块依据权重矩阵进行组合得到新的预测块。
进一步地,在本申请的实施例中,所有可能的权重矩阵中并非每一个权重矩阵的所有的点的权重都相同。换句话说,至少有一个可能的权重矩阵中包含至少两个不同的权重值。
可选地,在本申请中,所有可能的权重矩阵中都包含至少两个不同的权重值。
可选地,在本申请中,部分权重矩阵中包含至少两个不同的权重值,例如,在本申请中,如果最小权重值是0,最大权重值是8,有一个权重矩阵中有的点是0,有的点是8。相应地,部分权重矩阵中只包含同一个权重值,例如,在本申请中,有一个权重矩阵中所有的点都是4。
可选地,在本申请中,一个权重矩阵中只有两种权重,其中一个权重表示对应点的预测值完全来自于第一预测块对应点的值,另一个权重表示对应点的预测值完全来自于第二预测块对应点的值。例如,在本申请中,一个权重矩阵中只有两种权重,分别是0和1。
可选地,在本申请中,一个权重矩阵中可能有多种权重,其中最大值和最小值(比如0)分别表示对应点的预测值完全来自于第一预测块对应点的值或第二预测块对应点的值。不是最大值或最小值的权重值表示对应点的预测值来自于第一预测块和第二预测块对应点的值的加权平均。这个最大值或最小值的权重值组成的区域可以叫做过渡区域(blending area)。
需要说明的是,在本申请中,在权重矩阵只有两种权重的情况下,权重变化的位置构成一条直线,或权重矩阵有多种权重的情况下,过渡区域中权重相同的位置构成一条直线(线段)。其中,该直线可以全是水平竖直的,也可以不全是水平竖直的。
可选地,在本申请中,在权重矩阵只有两种权重的情况下,权重变化的位置构成一条曲线(曲线段),或权重矩阵有多种权重的情况下,过渡区域中权重相同的位置构成一条曲线(曲线段)。
进一步地,在本申请的实施例中,编码器可以采用类似于GPM或AWP的方法来实现权重矩阵的确定。具体地,如果同一个编解码标准或编解码器中使用了GPM或AWP,那么可以使用该方法来确定权重矩阵,这样可以做到复用部分相同的逻辑。如AVS3帧间预测使用了AWP,那么在AVS3中可以使用AWP的方法来确定权重矩阵。当然也可以使用和同一个编解码标准或编解码器中的GPM或AWP不同方法,比如使用不同的模式数,或者不同的过渡区域算法,或者使用不同的参数等。因为帧间预测利用了时域上的相关性,它使用的是参考帧中已重建的图像作为参考块。而帧内预测利用了空域上的相关性,它使用的是当前块周边已重建的像素作为参考像素。空域上距离越近相关性越强,距离越远相关性越差。所以如果某种权重矩阵使得一个预测块使用的得到的像素位置都距离参考像素 较远,那么这部分可能做不出比现有技术更合适的预测值,那么可以不使用这样的权重矩阵,而在帧间预测中可以使用。
需要说明的是,在本申请的实施例中,由于本申请实施例需要使用两个帧内预测模式,而常见的其他帧内预测方法一般仅仅需要使用一个帧内预测模式。因此,本申请实施例使用的帧内预测模式的编码方法可以与常见的其他帧内预测方法的帧内预测模式的编码方法不同,相应地,本申请实施例使用的MPM构建方法也可以与常见的其他帧内预测方法的MPM构建方法不同。
在本申请的实施例中,进一步地,由于本申请实施例提出的帧内预测方法需要在码流中传输权重矩阵导出模式的信息和两个帧内预测模式的信息,权重矩阵导出模式以AVS3的AWP为例有56种模式,二值化需要5到6个比特。帧内预测模式以AVS3为例有66种模式,使用两个MPM。如果帧内预测模式是MPM,则二值化需要两个比特,否则二值化需要7个比特。也就是说在AVS3中,上述信息最多需要6+7+7为20个比特的开销。
为例降低上述信息的二值化开销、提升编码性能,在本申请的实施例中,编码器可以利用当前块的帧内预测模式与权重矩阵之间的相关性进行上述信息的确定。具体地,当前块所使用的帧内预测模式与权重矩阵会有一定的相关性,利用这种相关性,编码器在对帧内预测模式进行编码可以利用权重矩阵的信息,进一步地,编码器在对帧内预测模式进行编码可以利用权重矩阵导出模式的信息。
进一步地,在本申请的实施例中,在权重矩阵包括有两种权重的情况下,权重变化的位置构成一条直线,或者,在权重矩阵有多种权重的情况下,过渡区域中权重相同的位置构成一条直线,可以将这条直线叫做分界线。分界线本身也是有角度的,可以设水平向右的角度为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模式共有7种分界线的角度。分界线角度的索引可以由权重矩阵导出模式的模式号模8(%8)得到。例如,表1为映射关系表,以AVS3的角度模式为例,分界线角度的索引0和1分别可以对应到两个帧内角度预测模式,一个从右上角到左下角,一个从左上角到右下角。具体实现时,可以为其他分界线角度的索引也找到另一个近似对应的帧内角度预测模式,或者所有的分界线角度的索引都只对应一种帧内角度预测模式。
表1
进一步地,在本申请中观,一般使用当前块的左边和上边的参考像素进行帧内预测,而空间上像素的距离越近,相关性越强,空间上距离越远,相关性越弱。因此,如果当前块只有一部分像素由一种帧内预测模式预测所得,那么这部分像素所处的位置会影响这部分使用的帧内预测模式的概率。即上述分界线的位置和角度会影响分界线两边的两个帧内预测模式的选择。图13为帧内预测的示意图三,如图13所示,当前块的区域1部分表示预测值来自第一帧内预测模式,当前块的区域2部分表示预测值全来自第二帧内预测模式,区域1和区域2中间的过渡区域则由两个帧内预测模式的预测值加权而来。对区域1,由于右上部分的参考像素与它位置最近,从右上到左下的一个扇形角度区域内的帧内预测模式(如粗箭头)可以较好地利用这种空间相关性,使用的概率较高。而由于与左上角的参考像素距离较远,从左上到右下的一个扇形角度区域内的帧内预测模式(如细箭头)就不能较好地利用这种空间相关性,使用地概率较低。
在本申请的实施例中,进一步地,编码器在根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式时,可以先利用权重矩阵导出模式确定模式列表(MPM);然后可以基于模式列表,进一步确定第一帧内预测模式和第二帧内预测模式。
具体地,在本申请的实施例中,在利用与权重矩阵的相关性进行第一帧内预测模式和第二帧内预测模式的确定时,可以利用权重矩阵导出模式构建模式列表,或者,在构建MPM时可以利用权重矩阵导出模式的信息。其中,权重矩阵导出模式可以对应至少一个帧内预测模式,因此编码器可以把当前块确定的权重矩阵导出模式对应的帧内预测模式加入到模式列表中,或者把权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式加入到模式列表中。
进一步地,在本申请的实施例中,编码器在利用权重矩阵导出模式确定模式列表时,可以先确定当前块的相邻块对应的帧内预测模式,然后将相邻块对应的帧内预测模式确定为待添加模式;在确定待添加模式满足预设添加条 件之后,编码器可以将待添加模式添加至模式列表中,即将当前块的相邻块对应的帧内预测模式添加至模式列表中;接着,如果此时模式列表不满足预设列表长度,那么编码器可以继续确定权重矩阵导出模式对应的相关帧内预测模式,然后将权重矩阵导出模式对应的相关帧内预测模式确定为待添加模式;且在确定待添加模式满足预设添加条件,则将该待添加模式添加至模式列表中,即将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表。
需要说明的是,在本申请的实施例中,编码器在将相邻块对应的帧内预测模式添加至模式列表时,可以先确定相邻块对应的顺序参数;然后再按照顺序参数,依次将相邻块对应的帧内预测模式添加至模式列表。其中,编码器可以按照相邻块与当前块之间的空间距离来确定对应的顺序参数,例如,相邻块与当前块之间的空间距离越近,两者的相关性越强,越先进行添加处理,即顺序参数就越小;相邻块与当前块之间的空间距离越远,两者的相关性越弱,越后进行添加处理,即顺序参数就越大。
进一步地,在本申请的实施例中,编码器在确定权重矩阵导出模式对应的相关帧内预测模式,可以先确定权重矩阵导出模式对应的帧内预测模式,然后可以基于权重矩阵导出模式对应的帧内预测模式,按照第一索引间隔,确定相关帧内预测模式。
示例性的,在本申请的实施例中,编码器在确定与权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式时,可以根据第一索引间隔选择与该权重矩阵导出模式对应的帧内预测模式的索引序号相差某个或某几个数的模式。如相差1个索引序号,或者,相差2个索引序号等。例如,假设权重矩阵导出模式对应的帧内预测模式的索引是10,第一索引间隔为2,那么可以将索引为8和12的两个帧内预测模式确定为与权重矩阵导出模式对应的帧内预测模式相关的两个相关帧内预测模式。
需要说明的是,在本申请的实施例中,编码器在将当前块的相邻块对应的帧内预测模式添加至模式列表之后,或者,编码器在将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表之后,如果模式列表不满足预设列表长度,即模式列表未填满,那么编码器可以继续将预设预测模式确定为待添加模式;然后在确定待添加模式满足预设添加条件之后,将待添加模式添加至模式列表,即将预设预测模式添加至模式列表中。
可以理解的是,在本申请中,预设预测模式可以包括DC模式、Bilinear模式、Planar模式等多种不同模式中的一种或多种。
进一步地,在本申请的实施例中,编码器在分别将当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式、预设预测模式添加至模式列表之后,如果模式列表仍然不满足预设列表长度,即模式列表仍然未被填满,那么编码器可以选择使用模式列表中的预测模式进行关联帧内预测模式的确定,然后将关联帧内预测模式确定为待添加模式,并在确定待添加模式满足预设添加条件之后,将待添加模式添加至模式列表,即将模式列表对应的关联帧内预测模式添加至模式列表中。
也就是说,在本申请中,在将当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式以及预设预测模式依次添加至模式列表之后,如果模式列表仍然未被填满,那么编码器可以选择基于模式列表中的已有的预测模式,进行对应的关联帧内预测模式的确定,然后再将这些关联帧内预测模式添加至模式列表中。
示例性的,在本申请中,编码器可以基于模式列表中的任一个预测模式,按照第二索引间隔,依次确定出与该任一个预测模式相关的关联帧内预测模式。其中,编码器可以根据第二索引间隔选择与该任一个预测模式的索引序号相差某个或某几个数的模式。如相差1个索引序号,或者,相差2个索引序号等。
需要说明的是,在本申请的实施例中,无论是将当前块的相邻块对应的帧内预测模式作为待添加模式,还是将权重矩阵导出模式对应的相关帧内预测模式作为待添加模式,或者是将预设预测模式作为待添加模式,再者是将关联帧内预测模式作为待添加模式,编码器都需要进行待添加模式是否满足预设添加条件的判定,具体地,如果待添加模式存在,且待添加模式与模式列表中的预测模式均不相同,那么便可以确定待添加模式满足预设添加条件,从而可以将该待添加模式添加至模式列表中。
相应地,如果待添加模式不存在,或者待添加模式与模式列表中的一个预测模式相同(重合),那么便可以确定待添加模式不满足预设添加条件,因此不能将该待添加模式添加至模式列表中,而是直接丢弃该待添加模式。
可以理解的是,在本申请中,由于当前块需要使用两个帧内预测模式进行帧内预测处理,因此可以在构建MPM时参考更多位置的帧内预测模式,或者参考更多相邻块的帧内预测模式。相应地,在本申请中,当前块所使用的模式列表的长度可以与其他帧内预测模式的模式列表长度不同,因为MPM二值化时的码字比其他模式要短,增加两个帧内预测模式分别是MPM的概率,有利于编解码效率提升。
示例性的,在本申请的实施例中,假设当前块使用的模式列表的长度为4,那么编码器在利用权重矩阵导出模式确定模式列表时,具体可以执行以下步骤:
步骤201、将相邻块的帧内预测模式添加至模式列表中。
在本申请的实施例中,编码器可以先确定当前块的相邻块对应的帧内预测模式,然后将相邻块对应的帧内预测模式依次添加至模式列表中。
图14为相邻块的示意图,如图14所示,当前块为E,编码器可以依次将相邻块F,G,C,A,B,D所使用的帧内预测模式填入模式列表,直至模式列表填满。如果F,G,C,A,B,D中某个位置不可用或没有使用帧内预测模式则跳过该位置。
可以理解的是,在本申请中,如果复杂度允许,可以使用更右边以及更下边的块的帧内预测模式。
步骤202、模式列表是否填满?若未填满则执行步骤203,否则执行步骤208。
步骤203、将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表中。
在本申请的实施例中,在将相邻块的帧内预测模式添加至模式列表中之后,如果模式列表没有填满,即模式列表的长度小于4,那么编码器可以继续将权重矩阵导出模式对应的帧内预测模式填入模式列表中,直至模式列表填满。
需要说明的是,在本申请中,编码器可以选择仅仅将权重矩阵导出模式对应的帧内预测模式添加至模式列表中,也可以选择将权重矩阵导出模式对应的帧内预测模式,以及对应的相关帧内预测模式添加至模式列表中。
步骤204、模式列表是否填满?若未填满则执行步骤204,否则执行步骤208。
步骤205、将预设预测模式添加至模式列表中。
在本申请的实施例中,在将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表之后,如果模式列表没有填满,即模式列表的长度小于4,那么编码器可以继续将预设预测模式添加至模式列表中,直至模式列表填满。
其中,预设预测模式可以包括DC模式、Bilinear模式、Planar模式等多种不同模式中的一种或多种。
步骤206、模式列表是否填满?若未填满则执行步骤207,否则执行步骤208。
步骤207、将模式列表对应的关联帧内预测模式添加至模式列表中。
在本申请的实施例中,在将预设预测模式添加至模式列表之后,如果模式列表没有填满,即模式列表的长度小于4,那么编码可以确定出模式列表对应的关联帧内预测模式,然后再将该关联帧内预测模式依次添加至模式列表中。
具体地,如果模式列表没有填满,那么可以从MPM中的第一个帧内预测模式开始,将与该帧内预测模式的索引序号相差1,-1,2,-2,3,-3的帧内预测模式填入至MPM,直至模式列表填满。如果相差1,-1,2,-2,3,-3的帧内预测模式中的某一个帧内预测模式非法,小于0或大于最大值,则丢弃该非法的帧内预测模式。
步骤208、导出模式列表。
需要说明的是,在本申请的实施例中,在进行模式列表的构建过程中,每一个待填入的帧内预测模式(待添加模式)都需要保证与模式列表中已有的帧内预测模式都不相同才可以填入模式列表,否则丢弃。
也就是说,在本申请中,为了保证当前块的第一帧内预测模式和第二帧内预测模式不相同,编码器在构建模式列表的过程中,必须保证每一次添加至模式列表中的帧内预测模式与模式列表中已有的帧内预测模式不重复。
进一步地,在本申请的实施例中,编码器在利用权重矩阵导出模式确定模式列表时,可以先确定权重矩阵导出模式对应的列表构建策略;然后可以按照列表构建策略,进一步确定模式列表。
也就是说,在本申请中,针对不同的权重矩阵,即针对不同的权重矩阵导出模式,编码器可以使用不同的构建策略来进行模式列表的构建。例如,基于构建策略,如果权重矩阵的分界线是0度或90度,即在水平或竖直的情况下,编码器可以选择在构建模式列表时考虑权重矩阵对应的帧内预测模式,而其他情况不考虑权重矩阵对应的帧内预测模式。
示例性的,在本申请中,假设权重矩阵的分界线是0度,如AWP的2,10等模式(从0开始计数),在构建模式列表时,可以将水平帧内预测模式24加入模式列表的候选中;假设权重矩阵的分界线是90度,如AWP的6,14等模式(从0开始计数),在构建模式列表时,可以将垂直帧内预测模式12加入模式列表的候选中。
可以理解的是,在本申请中,还可以在权重矩阵的分界线为接近0度的一个范围内,将水平帧内预测模式,或水平帧内预测模式及相近的帧内预测模式,加入模式列表的候选中;在权重矩阵的分界线为接近90度的一个范围内,将垂直帧内预测模式,或水平帧内预测模式及相近的帧内预测模式,加入模式列表候选中。
可以理解的是,在本申请中,当前块进行帧内预测时使用的两个帧内预测模式不相同,即第一帧内预测模式与第二帧内预测模式并不相同,那么第二帧内预测模式在解码时就可以排除第一帧内预测模式的可能。也就是说第二帧内预测模式的解码可以使用第一帧内预测模式的信息。
在本申请的实施例中,进一步地,编码器在进行模式列表的构建过程中,还可以设置候补帧内预测模式。其中,候补帧内预测模式与模式列表中的帧内预测模式均不相同。
具体地,在本申请中,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,第二帧内预测模式的确定可以是依赖于第一帧内预测模式的。其中,编码器在基于模式列表,确定第一帧内预测模式和第二帧内预测模式时,可以先将模式列表中的一个预测模式确定为第一帧内预测模式;然后再根据第一帧内预测模式和模式列表,确定第二帧内预测模式。
进一步地,在本申请的实施例中,编码器在将模式列表中的一个预测模式确定为第一帧内预测模式之后,可以从模式列表中删除一个预测模式,然后再将候补帧内预测模式添加至模式列表,从而可以获得更新后的模式列表;然后可以从所述更新后的模式列表中选择一个预测模式确定为所述第二帧内预测模式,其中,选择方式可以为任意的。
也就是说,在本申请的实施例中,如果第一帧内预测模式选择了一个MPM,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,那么第二帧内预测模式可选的MPM便少了一个,为了不改变第一帧内预测模式和第二帧内预测模式可选的模式列表的长度,编码器可以在确定第一帧内预测模式之后,再增添一个MPM,就将预先设置的候补帧内预测模式添加至模式列表中,从而可以在确定第二帧内预测模式时仍可以使用和第一帧内预测模式相同数量的MPM。
示例性的,在本申请中,假设第一帧内预测模式和第二帧内预测模式可选的MPM为N个,在构建模式列表时,可以先构建N个MPM和1个候补的MPM,对第一帧内预测模式,可选的MPM是上述N个MPM。如果第一帧内预测模式选中了其中一个MPM,那么对第二帧内预测模式,将第一个帧内预测模式选中的MPM剔除,然后将候补的MPM加入模式列表,这样第二个帧内预测模式仍可选N个MPM。
在本申请的实施例中,进一步地,编码器在进行模式列表的构建过程中,还可以设置模式列表的长度参数为(N+1);其中,N为正整数。
具体地,在本申请中,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,第二帧内预测模式的确定可以是依赖于第一帧内预测模式的。其中,编码器在基于模式列表,确定第一帧内预测模式和第二帧内预测模式时,如果使用模式列表确定第一帧内预测模式,那么可以将模式列表的前N个预测模式中的一个预测模式确 定为第一帧内预测模式;然后再根据第一帧内预测模式和模式列表,确定第二帧内预测模式。
进一步地,在本申请的实施例中,如果使用模式列表确定第一帧内预测模式,那么编码器在将模式列表的前N个预测模式中的一个预测模式确定为第一帧内预测模式之后,再利用模式列表的、第一帧内预测模式以外的其他N个预测模式确定第二帧内预测模式。
需要说明的是,在本申请的实施例中,编码器在基于模式列表,确定第一帧内预测模式和第二帧内预测模式时,如果不使用模式列表确定第一帧内预测模式,那么编码器可以直接将模式列表的前N个预测模式中的一个预测模式确定为第二帧内预测模式。
也就是说,在本申请的实施例中,假设帧内预测模式可选的MPM为N个,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,可以在构建模式列表时,构建(N+1)个MPM,对第一帧内预测模式,它可选的MPM是模式列表中的前N个MPM。如果第一帧内预测模式没有选择MPM,那么第二帧内预测模式可选的MPM是模式列表中的前N个MPM。如果第一帧内预测模式选择了MPM,那么第二帧内预测模式可选的MPM是模式列表中的、第一帧内预测模式以外的N个MPM。
示例性的,在本申请中,假设N为4,那么编码器可以构建包括5个MPM的模式列表。MPM[x]表示第(x+1)个MPM,即MPM[0]表示第一个MPM,这是由于数组的计数是从0开始。第一帧内预测模式为mode0,第二帧内预测模式为mode1。假设第一帧内预测模式和第二帧内预测模式都是MPM,第一帧内预测模式在可选MPM中的索引号为idx0,第二帧内预测模式在可选MPM中的索引号为idx1,那么
mode0=MPM[idx0]
mode1=MPM[idx1<idx0?idx1:idx1+1]
也就是说,如果idx1<idx0,那么mode1=MPM[idx1];
否则,mode1=MPM[idx1+1]
可见,idx0和idx1的取值范围都是0~3,且mode1的取值不仅和idx1相关,也和idx0相关。
可选地,在本申请的实施例中,如果仅仅保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,而不对第一帧内预测模式和第二帧内预测模式可选择的MPM的数量进行限制,那么编码器也可以不进行后补帧内预测模式的设置,或者,不进行增加模式列表长度的处理,此时,编码器则需要改变第二帧内预测模式的编码方法。也就是说,如果第一帧内预测模式选择了模式列表中的一个MPM之后,第二帧内预测模式可选的MPM则少了一个,这时由于第二帧内预测模式可选的MPM少了,因此需要改变第二帧内预测模式的编码方法。
示例性的,在本申请中,以MPM个数N等于4为例,以第一个比特位表示是否是MPM,比如“1”表示是MPM,“0”表示不是MPM。如果第一帧内预测模式是MPM,因为有4个MPM,以2个比特位表示是哪一个MPM,即“00,01,10,11”分别表示第一个,第二个,第三个,第四个。而如果第一帧内预测模式和第二帧内预测模式都是MPM,那么第二帧内预测模式可用的MPM只有3种,那么可以用1到2个比特位表示是哪一个MPM,如“00,01,10”分别表示剩余的第一个,第二个,第三个。可见,由于排除了一种可能,可以改变编码方法或者叫二值化的方法以节省开销。
示例性的,在本申请中,假设N为4,那么构建包括4个MPM的模式列表。MPM[x]表示第(x+1)个MPM,即MPM[0]表示第一个MPM,这是由于数组的计数是从0开始。第一帧内预测模式为mode0,第二帧内预测模式为mode1。假设第一帧内预测模式和第二帧内预测模式都是MPM,第一帧内预测模式在可选MPM中的索引号为idx0,第二帧内预测模式在可选MPM中的索引号为idx1,那么
mode0=MPM[idx0]
mode1=MPM[idx1<idx0?idx1:idx1+1]
也就是说,如果idx1<idx0,那么mode1=MPM[idx1];
否则,mode1=MPM[idx1+1];
可见,idx0的取值范围是0~3,idx1的取值范围是0~2,且mode1的取值不仅和idx1相关,也和idx0相关。idx0可以使用2比特二值化,而idx1使用1到2比特二值化。
在本申请的实施例中,进一步地,编码器在根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式时,还可以对当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式、预设预测模式依次进行排序处理,从而可以获得预测模式的候选列表;其中,预设预测模式包括DC模式、Bilinear模式、Planar模式等多种预测模式中的一种或多种;接着,编码器便可以根据预测模式的候选列表确定第一帧内预测模式和第二帧内预测模式。
具体地,在本申请的实施例中,在利用与权重矩阵的相关性进行第一帧内预测模式和第二帧内预测模式的确定时,还可以给权重矩阵导出模式对应的帧内预测模式或权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式在二值化时赋予比普通帧内预测模式短的码字,或者说是比帧内预测模式中可能的最长的码字短的码字,也就是说它们的码字不是最长的。因为可以认为权重矩阵导出模式对应的帧内预测模式或权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式被选中的概率比其他模式更高。
也就是说,在本申请的实施例中,第一帧内预测模式和第二帧内预测模式也可以不使用MPM,编码器可以针对第一帧内预测模式和第二帧内预测模式可能使用的全部帧内预测模式进行排序处理,生成预测模式的候选列表,进而在二值化时使用变长编码,预测模式的候选列表中排序靠前的帧内预测模式分配较短的码字,预测模式的候选列表中排序靠后的帧内预测模式分配较长的码字。其中,排序处理时可以参考当前块的相邻块的帧内预测模式,还可以参考当前块的权重矩阵导出模式。
示例性的,在本申请的实施例中,编码器根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式的方法可以包括以下步骤:
步骤301、将相邻块的帧内预测模式添加至候选列表中。
在本申请的实施例中,编码器可以先确定当前块的相邻块对应的帧内预测模式,然后对相邻块对应的帧内预测模式进行排序,并在排序后依次添加至候选列表中。
当前块为E,编码器可以按照F,G,C,A,B,D的顺序,依次将相邻块F,G,C,A,B,D所使用的帧内预测模式填入候选列表。如果F,G,C,A,B,D中某个位置不可用或没有使用帧内预测模式则跳过该位置。
可以理解的是,在本申请中,如果复杂度允许,可以使用更右边以及更下边的块的帧内预测模式。
步骤302、将权重矩阵导出模式对应的相关帧内预测模式添加至候选列表中。
在本申请的实施例中,在将相邻块的帧内预测模式添加至候选列表中之后,编码器可以继续将权重矩阵导出模式对应的帧内预测模式填入候选列表中。
需要说明的是,在本申请中,编码器可以选择仅仅将权重矩阵导出模式对应的帧内预测模式添加至候选列表中,也可以选择将权重矩阵导出模式对应的帧内预测模式,以及对应的相关帧内预测模式添加至候选列表中。
步骤303、将预设预测模式添加至候选列表中。
在本申请的实施例中,在将权重矩阵导出模式对应的相关帧内预测模式添加至候选列表之后,编码器可以继续将预设预测模式添加至候选列表中。
其中,预设预测模式可以包括DC模式、Bilinear模式、Planar模式等多种不同模式中的一种或多种。
步骤304、将候选列表对应的关联帧内预测模式添加至候选列表中。
在本申请的实施例中,在将预设预测模式添加至候选列表之后,编码可以确定出候选列表对应的关联帧内预测模式,然后再将该关联帧内预测模式依次添加至候选列表中。
具体地,编码器可以从候选列表中的第一个帧内预测模式开始,将与该帧内预测模式的索引序号相差1,-1,2,-2,3,-3的帧内预测模式填入至候选列表中。如果相差1,-1,2,-2,3,-3的帧内预测模式中的某一个帧内预测模式非法,小于0或大于最大值,则丢弃该非法的帧内预测模式。
步骤305、将候选列表以外的帧内预测模式添加至候选列表中。
在本申请的实施例中,编码器还可以从预测模式的索引0开始,将未加入排序的帧内预测模式加入候选列表,直至结束。
由此可见,由于权重矩阵的分界线的角度位置等的不同,帧内预测模式的概率不同,而且第一帧内预测模式和第二帧内预测模式的概率不同。例如在上图的例子中,第一帧内预测模式(与白色块对应)右上到左下的角度模式的概率会高于左上到右下角度模式,而第二帧内预测模式(与黑色块对应)右上到左下的角度模式的概率并不会高于左上到右下角度模式。所以可以对每个权重矩阵导出模式对第一帧内预测模式和第二帧内预测模式分别根据各自的概率特征进行排序。
进一步地,在本申请的实施例中,编码器在根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式时,还可以建立权重矩阵导出模式对应的第一帧内预测模式的参考集合,同时建立权重矩阵导出模式对应的第二帧内预测模式的参考集合;然后可以基于第一帧内预测模式的参考集合确定第一帧内预测模式;同时,基于第二帧内预测模式的参考集合确定第二帧内预测模式。
也就是说,在本申请的实施例中,针对当前块的权重矩阵导出模式,编码器可以对与该权重矩阵导出模式对应的、第一帧内预测模式的全部可能的帧内预测模式进行排序处理,生成第一帧内预测模式的参考集合,同时,还可以对与该权重矩阵导出模式对应的、第二帧内预测模式的全部可能的帧内预测模式进行排序处理,生成第二帧内预测模式的参考集合,从而可以从第一帧内预测模式的参考集合中确定第一帧内预测模式,还可以从第二帧内预测模式的参考集合中确定第一帧内预测模式。
示例性的,在本申请中,编码器可以预先设置一个映射表来确定每一个权重矩阵导出模式与第一帧内预测模式和第二帧内预测模式之间的映射关系,如表2所示,对于一个权重矩阵导出模式,通过表2可以确定其对应的第一帧内预测模式的所有可能的帧内预测模式的排序,以及其对应的第二帧内预测模式的所有可能的帧内预测模式的排序。
表2
进一步地,在本申请的实施例中,为了降低复杂度,编码器可以通过聚类的方法缩小如上述表2的查找表,例如,可以将权重矩阵导出模式进行分类处理,确定出权重矩阵导出模式对应的类型,对于一种类型的权重矩阵导出模式,对应有相同的、第一帧内预测模式的所有可能的帧内预测模式的排序,也对应有相同的、第二帧内预测模式的所有可能的帧内预测模式的排序。
进一步地,在本申请的实施例中,为了降低复杂度,编码器可以通过聚类的方法缩小如上述表2的查找表,例如,还可以将帧内预测模式进行分类处理,确定出帧内预测模式对应的类型,如DC、Planar、Bilinear等非角度模式为一种类型,角度模式可以按一些弧度的范围进行分类处理,比如每45度,即1/4圆,为一种类型,或者每22.5度,即1/8圆,为一种类型。具体地,也可以将角度模式划分为几个不均等的区间。
图15为聚类示意图,如图15所示,可以将所有角度模式分成9个区域。每个区域内部的排序可以按模式号大小顺序排序,或者按从区域的中心到两边排序。
可以理解的是,在本申请中,AVS3中的角度模式的角度不是连续的,而是前面的3~32号模式覆盖了大的弧度范围但是比较稀疏,后面的34~65号模式比较细密,分类的时候也可以利用这一特性把33号之前的模式和之后的模式分到不同的类里。
在本申请的实施例中,进一步地,由于本申请提出的帧内预测方法,需要使用两个不同的帧内预测模式,和一个权重矩阵确定当前块的预测值,因此,为了降低开销,在本申请中,编码器可以通过对当前块的两个帧内预测模式进行限制来降低比特数,同时,编码器也可以通过对当前块的权重矩阵导出模式进行限制来降低比特数。
示例性的,在本申请中,由于AVS3的前33个预测模式已经几乎覆盖了整个角度范围,因此在AVS3中只使用前33种预测模式便可以保证较好的性能,且在编码时只需要调整为不使用EIPM即可。进一步地,编码器还可以对当前块可能使用的帧内预测模式的个数进行进一步的压缩和限制,最终实现只使用5个比特进行编码,从而进一步减少开销,进而达到更好的性能。
可选地,在本申请中,编码器可以通过减少当前块可能使用的帧内预测模式个数来降低编码两个帧内预测模式的开销。例如,在AVS3中,如果使用66种帧内预测模式,最多需要7个比特来编码一个帧内预测模式,而如果只使用33种帧内预测模式,且不使用PCM模式,则最多只需要6个比特来编码一个帧内预测模式。
进一步的,在本申请中,考虑到帧内预测模式一般包括非角度预测模式和角度预测模式,非角度预测模式如DC、Planar、Bilinear等。在实现的过程中,每种非角度模式使用一套逻辑、全部角度模式使用一套逻辑或者角度模式使用几套逻辑,不同的逻辑之间可能有部分电路可以复用,也有部分电路不可以复用。因此,在对当前块可能使用的帧内预测模式的个数进行的限定,可以限定仅可以选择角度预测模式或仅可以选择非角度预测模式。
下面以对第二帧内预测模式的可能使用的帧内预测模式的限定为例进行说明。需要说明的是,相应的限定也可以应用于第一帧内预测模式的限定。
方式一:第二帧内预测模式仅可以使用非角度预测模式中的指定的一种帧内预测模式。
例如,第二帧内预测模式只可以使用DC模式,或者,第二帧内预测模式只可以使用Bilinear模式,等等。由于第二帧内预测模式只有一种可能的选择,那么编码和解码使用本发明的块时可以默认导出第二帧内预测模式对当前块进行预测,不需要进行第二帧内预测模式的确定过程,而编码时不需要将第二帧内预测模式写入码流,解码时不需要从码流中解析第二帧内预测模式是什么。
方式二:第二帧内预测模式只可以使用非角度模式,或非角度模式中的某几个。
例如,第二帧内预测模式只可以使用DC和Bilinear模式,由于第二帧内预测模式只有2种可能的选择,那么可以用1个比特intra_luma_pred_mode1来表示第二帧内预测模式是DC还是Bilinear模式。在编码时,对第二帧内预测模式只需要尝试DC和Bilinear两种可能,在确定第二帧内预测模式是哪一个帧内预测模式后,即可确定intra_luma_pred_mode1。在解码相应的块的过程中,对第二帧内预测模式只需要解析1比特的intra_luma_pred_mode1确定时DC或Bilinear。
在其他实施例中,第二帧内预测模式只可以使用非角度模式,即为第二帧内预测模式只有3种可能的选择,那么可以用2个比特intra_luma_pred_mode1来表示第二帧内预测模式为哪种帧内预测模式。
方式三:第二帧内预测模式只可以使用全部角度预测模式或部分角度预测模式。
因为第二帧内预测模式可以选择的帧内预测模式减少,在码流中表征第二帧内预测模式的intra_luma_pred_mode1的比特数也会有所减少。以在AVS3中第二帧内预测模式只可以使用全部角度模式为例。AVS3中有3种非角度模式,即DC,Plane,Bilinear。那么也就是说在AVS3中,第二帧内预测模式只可以使用0,1,2以外的其他模式。
在一个具体的实施例中,第二帧内预测模式可以使用除非角度预测模式之外所有其他帧内预测模式(即为可以使用所有角度预测模式)。
在一个具体的实施例中,第二帧内预测模式可以使用所有角度预测模式中的部分。其中,部分角度预测模式可以是前33种角度预测模式,或者,部分角度预测模式可以是按照预测的间隔从33种角度预测模式或65种角度预测模式中选择的部分角度预测模式,例如,该预设的间隔可以为1、2或者其他正整数。
如表3所述,给出了亮度预测块的帧内预测模式的一个示例,其中,模式号IntraLumaPredMode对应了相应的帧内预测模式。0代表DC模式,1代表Plane模式,2代表双线性Bilinear模式,12代表垂直模式,24代表水平模式,33代表PCM模式,其他的为除水平垂直之外的角度模式,具体模式号代表的角度可以参考图7。
表3 亮度预测块帧内预测模式
IntraLumaPredMode 帧内预测模式
0 Intra_Luma_DC
1 Intra_Luma_Plane
2 Intra_Luma_Bilinear
3~11 Intra_Luma_Angular
12 Intra_Luma_Vertical
13~23 Intra_Luma_Angular
24 Intra_Luma_Horizontal
25~32 Intra_Luma_Angular
33 Intra_Luma_PCM
34~65 Intra_Luma_Angular
以第二帧内预测模式只可以使用0,1,2以外的其他模式为例进行说明,给出第二帧内预测模式可选的MPM模式列表的构建过程。
以使用每个帧内预测模式可使用4个MPM为例。那么可以构建一个长度为8,其中非角度预测模式的个数应小于等于3,因为AVS3中只有3个非角度预测模式。其中前4个MPM供第一帧内预测模式选择。第二帧内预测模式可选的是MPM列表中非第一帧内预测模式且非角度模式的前4个MPM。
以图16为例进行说明,假设构建的MPM模式列表如图所示,第一帧内预测模式可以从前4个MPM中选择一个,假设第一帧内预测模式使用12,也就是MPM列表中的第一个MPM。对第二帧内预测模式,它可选的MPM从前往后查,第一个MPM(12)已经被第一帧内预测模式使用,因而不可用。第二个MPM(24)没有被使用而且是可用的角度模式因而可用,第三(0)、四(2)、五(1)对应的MPM虽然没有被使用但是是非角度模式,因而不可用。第六(6)、七(8)、八(10)个MPM被使用而且是可用的角度模式因而可用,则24,6,8,10分别对应第二帧内预测模式MPM索引为0,1,2,3的模式。
以图14所示的块为例,给出构建MPM列表的示例。
设置MPM模式列表的第一部分列表长度为8。
当前块为E,依次取F,G,C,A,B,D使用的帧内预测模式填入MPM模式列表。直至MPM模式填满。如果F,G,C,A,B,D中某个位置不可用或没有使用帧内预测模式则跳过该位置。其中,在本申请中,除了可以使用图14所示的块对应的帧内预测模式之外,也可以使用其他块对应的帧内预测模式,例如,使用当前块的右侧、或下侧的块对应的帧内预测模式。
进一步的,如果MPM模式列表没有填满,则将权重矩阵导出模式对应的帧内预测模式填入MPM模式列表,直至MPM模式列表填满。
如果MPM模式列表没有填满,则将DC模式、Bilinear模式依次填入MPM模式列表,直至MPM模式列表填满。
如果MPM模式列表没有填满,从MPM模式列表中的第一个帧内预测模式开始,将与该帧内预测模式相差1,-1,2,-2,3,-3的帧内预测模式填入MPM模式列表,直至MPM模式列表填满。如果相差1,-1,2,-2,3,-3的帧内预测模式中的某一个帧内预测模式非法,小于0或大于最大值,或者为PCM,则丢弃。
如果MPM模式列表第一个帧内预测模式的模式号大于第二个帧内预测模式的模式号,将这两个MPM进行交换。
填入MPM模式列表的操作中,每一个待填入的帧内预测模式如果与MPM模式列表中已有的帧内预测模式都不相同才可以填入MPM模式列表,否则丢弃。
在上述所有的对于第二帧内预测模式可以选择的帧内预测模式进行限制的过程中,如果导出或确定的第二帧内预测模式为非法的模式,则需要按照预设的对应关系进行修改,将第二帧内预测模式修改为合法的模式。具体的,在限定了第二帧内预测模式为角度预测模式的情况下,如果得到的第二帧内预测模式为0,1,2模式,则需要根据预设的对应关系对应到一种或几种可用的角度模式,以避免出现非法的模式(即限定不可用的非角度预测模式)。例如,第二帧内预测模式解码得到0模式,则按照预设的对应关系将第二帧内预测模式设置为12模式即垂直模式,如果第二帧内预测模式解码得到1模式,则按照预设的对应关系将第二帧内预测模式设置为18模式,即向右下45度的模式;如果第二帧内预测模式解码得到2模式,则按照预设的对应关系将第二帧内预测模式设置为24模式即水平模式。
需要说明的是,在本申请的实施例中,编码器在对帧内预测模式的个数进行限制时,既可以直接对全部预测块的帧内预测模式的个数执行限制处理,还可以参考当前块的尺寸参数,对不同大小的当前块使用不同的限制方式。
示例性的,在本申请中,对于尺寸参数较大的预测块,如64×64或32×32大小的预测块,编码器可以使用全部帧内预测模式进行当前块的两个帧内预测模式的确定,而对于尺寸参数较小的预测块,如8x8大小的预测块,编码器可以使用部分帧内预测模式进行当前块的两个帧内预测模式的确定,即对当前块可能使用的帧内预测模式的数量进行限制,这是因为对于尺寸参数较小的预测块来说,细微的角度差异所造成的影响的并不明显。
可以理解的是,在本申请中,可以先设置一个尺寸阈值,如第二尺寸阈值,若当前块的尺寸参数小于第二尺寸阈值,那么可以认为细微的角度差异不会造成较大的影响,因此可以限制当前块能够选择的帧内预测模式的个数。具体地,可以通过对在当前块的两个帧内预测模式的索引序号进行限制,来实现对帧内预测模式的个数的限制。
示例性的,在本申请中,如果当前块的尺寸参数小于第二尺寸阈值,那么编码器可以根据第二模式索引范围确定第一帧内预测模式和第二帧内预测模式;其中,第二模式索引范围用于对帧内预测模式的索引序号进行限制。具体地,第二模式索引范围可以包括第二下限阈值和第二上限阈值,编码器可以先确定第一帧内预测模式的第一的索引序号,同时可以确定第二帧内预测模式的第二的索引序号;然后设置第一的索引序号和第二索引序号均大于第二下限阈值;设置第一的索引序号和第二索引序号均小于第二上限阈值。
也就是说,在本申请中,可以通过第二模式索引范围限制当前块的第一帧内预测模式的索引序号和第二帧内预测模式的索引序号,从而完成对帧内预测模式数量的限制。
例如,在AVS3中,第二模式索引范围可以为0-32,即可以通过第二模式索引范围将第一帧内预测模式的索引序号和第二帧内预测模式的索引序号限制在0-32之内,因此当前块可以使用前33种预测模式来进行第一帧内预测模式和第二帧内预测模式的确定。
可以理解的是,在本申请中,第一尺寸阈值与第二尺寸阈值可以相同也可以不同;第一模式索引范围与第二模式索引范围可以相同也可以不同。
进一步的,如果对第一帧内预测模式和第二帧内预测模式可以选择的帧内预测模式均不作限定的情况下,确定的2个帧内预测模式的预测能力是对应的,不需要对对应的权重矩阵进行处理。但是,在对于可以选择的帧内预测模式做了限定之后,2个帧内预测模式的预测能力出现了变化,相应的权重矩阵也需要进行调整。
具体的,在图2所示的AWP权重矩阵中,编号为0的右下角白色区域完全来自于第一帧内预测模式,左上角黑色部分完全来自于第二帧内预测模式,而灰色部分为两种帧内预测模式加权得到的。如果想要左上角使用DC模式预测,右下角使用水平模式预测,那么可以将第一帧内预测模式设为水平模式,第二帧内预测模式设为DC模式。相反,如果想要左上角使用水平模式预测,右下角使用DC模式预测,那么可以将第一帧内预测模式设为DC模式,第二帧内预测模式设为水平模式。但是如果其中某一个帧内预测模式做了限制,如第二帧内预测模式只可以使用角度模式,那么按现在的做法,对AWP权重矩阵0,就不能实现左上角使用DC模式预测,因为第二帧内预测模式不能使用DC模式。如果其中某一个帧内预测模式做了限制,如第二帧内预测模式只可以使用DC模式,那么按现在的做法,上述AWP权重矩阵中黑色的部分只能由DC模式预测得到。也就是说,因为对第二帧内预测模式的限制会明显影响到预测的效果。
因此,在本申请中,在某些情况下,需要对权重矩阵进行调整,即为将第一帧内预测模式对应的权重矩阵与第二帧内预测模式对应的权重矩阵进行对调。
方式一:增加一个权重矩阵对调标志位,这个标志位指示是否将两个预测块的权重矩阵进行对换。
方式二:根据权重矩阵来确定两个预测块的权重是否进行对换。
具体的,在不对第一帧内预测模式可以选择的帧内预测模式进行限定的情况下,第一帧内预测模式可以选择的帧内预测模式较多,预测能力强,第二帧内预测模式因为对可以选择的帧内预测模式进行了限定,其可用的选择少,预测能力弱,那么可以根据权重矩阵来自动地分配权重。分配的结果使得最终的预测块中,由第一帧内预测模式影响的点较多,由第二帧内预测模式影响的点较少。
方式三:根据第一帧内预测模式和/或第二帧内预测模式的模式号来确定两个预测块的权重是否进行对调。
因为相邻的角度预测模式在逻辑上使用的预测角度会有一定的差别,但是由于插值滤波以及块大小的影响,特别是在比较小的块中,相邻的角度预测模式做出的预测块差别不是特别大。因此,把两个预测块的权重是否进行对调的逻辑设置在帧内预测模式的模式号中,比如说某一个帧内预测模式(第一帧内预测模式或第二帧内预测模式)使用偶数号的角度预测模式表示两个预测块的权重不进行对调,该帧内预测模式使用奇数号的角度预测模式表示两个预测块的权重进行对调。
在另一个实施例中,若对第二帧内预测模式只能使用某个或某几个非角度模式的情况,这里以第二帧内预测模式只能使用DC模式为例,可以使用第一帧内预测模式的模式号的奇偶性来判断两个预测块的权重是否进行对调。如果第一帧内预测模式的模式号为偶数,则两个预测块的权重不进行对调,否则(第一帧内预测模式的模式号为奇数)两个预测块的权重进行对调。
可选地,在本申请中,编码器可以通过减少当前块可能使用的权重矩阵导出模式个数来降低编码权重矩阵导出模式的开销。例如,在AVS3中,如果使用56种权重矩阵导出模式,最多需要6个比特来编码一个权重矩阵导出模式,而如果只使用32种权重矩阵导出模式,则最多只需要5个比特来编码一个权重矩阵导出模式。进一步地,编码器还可以对当前块可能使用的权重矩阵导出模式的个数进行进一步的压缩和限制(以用更少的标志位来标识选择哪一个权重矩阵或标识权重矩阵到处模式),如只使用16种权重矩阵导出模式,最终实现只使用4个比特进行编码,从而进一步减少开销,进而达到更好的性能。需要说明的是,在本申请的实施例中,编码器在对权重矩阵导出模式的个数进行限制时,既可以直接对全部预测块的权重矩阵导出模式的个数执行限制处理,还可以参考当前块的尺寸参数,对不同大小的当前块使用不同的限制方式。
示例性的,在本申请中,对于尺寸参数较大的预测块,如64×64或32×32大小的预测块,编码器可以使用全部权重矩阵导出模式进行当前块的权重矩阵导出模式的确定,而对于尺寸参数较小的预测块,如8×8大小的预测块,编码器可以使用部分权重矩阵导出模式进行当前块的权重矩阵导出模式的确定,即对当前块可能使用的权重矩阵导出模式的数量进行限制,这是因为对于尺寸参数较小的预测块来说,细微的角度差异所造成的影响的并不明显。
可以理解的是,在本申请中,可以先设置一个尺寸阈值,如第一尺寸阈值,若当前块的尺寸参数小于第一尺寸阈值,那么可以认为细微的角度差异不会造成较大的影响,因此可以限制当前块能够选择的权重矩阵导出模式的个数。具体地,可以通过对在当前块的权重矩阵导出模式的索引序号进行限制,来实现对权重矩阵导出模式的个数的限制。
示例性的,在本申请中,如果当前块的尺寸参数小于第一尺寸阈值,那么编码器可以根据第一模式索引范围确定权重矩阵导出模式;其中,第一模式索引范围用于对权重矩阵导出模式的索引序号进行限制。具体地,第一模式索引范围可以包括第一下限阈值和第一上限阈值,编码器可以将权重矩阵到处模式的索引序号分别与第一下限阈值和第一上限阈值进行比较,如果权重矩阵导出模式的索引序号小于第一下限阈值,那么可以将权重矩阵导出模式的索引序号设置为第一下限阈值;如果权重矩阵导出模式的索引序号大于第一上限阈值,那么可以将权重矩阵导出模式的索引序号设置为第一上限阈值。
也就是说,在本申请中,可以通过第一模式索引范围限制当前块的权重矩阵导出模式的索引序号,从而完成对权重矩阵导出模式数量的限制。
例如,在AVS3中,第一模式索引范围可以为0-32,即可以通过第一模式索引范围将权重矩阵导出模式的索引序号限制在0-32之内,因此当前块可以使用前33种权重矩阵导出模式来进行当前块的权重矩阵导出模式的确定。
示例1:
AWP可使用的权重矩阵包括了编号0-55对应的权重矩阵,具体如图2所示。在本申请中,在SAWP中只是用32种权重矩阵,即SAWP可使用的权重矩阵对应AWP的权重矩阵的0~7,16~23,32~39,48~55个权重矩阵(如图2中对应的编号对应的权重矩阵)。即SAWP的权重矩阵0~7对应AWP的权重矩阵0~7,SAWP的权重矩阵8~15对应AWP的权重矩阵16~23,SAWP的权重矩阵16~23对应AWP的权重矩阵32~39,SAWP的权重矩阵24~31对应AWP的权重矩阵48~55,假设这32种权重矩阵是等概率的,需要5个比特的标志位sawp_idx。
在一个具体分实施例中,sawp_idx的值与二元符号串的关系如表4所示。
表4
示例2:在本示例中,SAWP中只是用24种权重矩阵,SAWP可使用的权重矩阵对应如图2所示的AWP的权重矩阵的8~15,24~31,40~47个权重矩阵。即SAWP的权重矩阵0~7对应AWP的权重矩阵8~15,SAWP的权重矩阵8~15对应AWP的权重矩阵24~31,SAWP的权重矩阵16~23对应AWP的权重矩阵40~47,需要4~5个比特的标志位sawp_idx。
sawp_idx的值与二元符号串的关系如表5所示。
表5
进一步的,由于上述SAWP的24种权重矩阵中的10号和14号,分别对应AWP的56种权重矩阵中的26和30号,与二叉树划分BT的水平和垂直方式的划分相似,实际选中的概率较低,可以将较长的二元符号串分配给它们,而将较短的二元符号串分配给选中的概率较高的权重矩阵。
在一个示例中,将SAWP的24种模式中的2和10号的二元符号串对调,将6和14号的二元符号串对调,即下表6所示。
表6
步骤103、基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,确定当前块的预测值。
在本申请的实施例中,编码器在根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式,同时根据权重矩阵导出模式确定当前块的权重矩阵之后,便可以基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,进一步地确定当前块的预测值。
可以理解的是,在本申请的实施例中,编码器在基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,确定当前块的预测值时,可以先根据第一帧内预测模式确定当前块的第一预测值;同时可以根据第二帧内预测模式确定当前块的第二预测值;然后可以利用权重矩阵对第一预测值和第二预测值进行加权平均计算,最终便可以获得当前块的预测值。
进一步地,在本申请的实施例中,编码器在确定当前块的预测值之后,还可以对当前块的真实值和预测值进行差值运算,获得两者之间的差值结果,从而可以确定出当前块的预测差值,即残差。
也就是说,在本申请中,编码器可以计算当前块的真实值与帧内预测值之间的差值,从而获得残差,且该残差 经过变换、量化、熵编码写入码流,传输至解码侧。
在本申请的实施例中,进一步地,如果帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值,那么编码器进行编码处理的方法还可以包括以下步骤:
步骤401、根据模式列表确定当前块的第一初始模式和第二初始模式。
在本申请的实施例中,编码器在确定当前块的帧内预测模式参数之后,如果帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值,那么编码器可以进一步确定当前块使用的模式列表(MPM列表)。然后可以根据模式列表确定当前块的第一初始模式和第二初始模式。
需要说明的是,在本申请中,模式列表用于对当前块使用的帧内预测模式进行确定。具体地,编码器可以利用使用概率较大的几个帧内预测模式构建成模式列表,从而可以基于模式列表确定当前块的两个帧内预测模式。
可以理解的时,在本申请的实施例中,编码器在进行模式列表的确定时,可以采用常见的构建最可能模式列表MPM的方式,如使用相邻块的预测模式构建MPM等,也可以使用本申请提出的帧内预测方法所涉及的模式列表的构建方法,即利用当前块的权重矩阵导出模式构建模式列表。
也就是说,在本申请中,模式列表的构建方法可以选择使用上述实施例中的步骤102所提出的模式列表构建方法,也可以是其他的MPM构建方法,本申请不做具体限定。
进一步地,在本申请的实施例中,编码器在确定当前块使用的模式列表之后,可以先根据模式列表确定当前块的第一初始模式和第二初始模式。
示例性的,在本申请中,编码器构建包括有N个MPM的模式列表,如果N为2 n,那么可以使用n个比特(mpm_idx)来表示选择模式列表中的哪一个MPM,即确定第一初始模式和第二初始模式,然后再用一个比特来表示是否需要偏移(offset_needed)。例如,构建4个MPM的模式列表,那么在模式列表中选择帧内预测模式时,需要使用2个比特(mpm_idx)来表示选择模式列表中的哪一个MPM作为初始模式,如表7所示的mpm_idx的取值与二元符号串的对应关系可以用于进行预测模式的确定。
表7
mpm_idx 二元符号串
0 00
1 01
2 10
3 11
步骤402、确定偏移模式参数,当偏移模式参数指示进行偏移处理时,确定当前块的偏移参数。
在本申请的实施例中,编码器还可以确定偏移模式参数,其中,偏移模式参数用于确定是否需要进行偏移。具体地,当偏移模式参数指示进行偏移处理时,编码器可以进一步确定当前块的偏移参数。
需要说明的是,在本申请的实施例中,编码器可以使用一个比特来表示是否需要偏移(offset_needed),也就是说,编码器可以通过对偏移模式参数的设置,进一步确定当前块的预测模式(第一初始模式或第二初始模式)是否需要偏移。
进一步地,在本申请的实施例中,如果偏移模式参数指示进行偏移处理,那么编码器可以进一步确定当前块的偏移参数。其中,偏移参数可以包括偏移方式和偏移量,即通过偏移参数的确定,编码器可以确定如果对当前块的第一初始模式或第二初始模式进行偏移处理。
需要说明的是,在本申请的实施例中,编码器也可以使用编码比特对偏移参数中的偏移方式和偏移量进行指示。例如,编码器可以使用一个比特(sign)表示偏移方式是“+”还是“-”;还可以使用一些比特(offset)来表示偏移量。
可选地,在本申请中,编码器也可以预先对偏移方式和偏移量进行设置,例如,编码器可以默认只能偏移某一个量,如1或2或4等。
步骤403、根据第一初始模式和偏移参数,确定当前块的第一帧内预测模式;根据第二初始模式和偏移参数,确定当前块的第二帧内预测模式。
在本申请的实施例中,编码器在确定当前块的偏移参数之后,便可以根据第一初始模式和偏移参数,确定当前块的第一帧内预测模式;同时可以根据第二初始模式和偏移参数,确定当前块的第二帧内预测模式。
进一步地,在本申请的实施例中,编码器在根据模式列表和偏移参数,确定当前块的第一帧内预测模式和第二帧内预测模式时,可以按照偏移方式和偏移量对第一初始模式进行偏移处理,从而确定第一帧内预测模式;同时还可以按照偏移方式和偏移量对第二初始模式进行偏移处理,从而确定第二帧内预测模式。
也就是说,在本申请的实施例中,编码器可以先使用几个比特来确定使用模式列表中的哪一个预测模式,即先从模式列表中确定出初始模式,然后再按照偏移参数对初始模式进行偏移处理,最终便可以确定出当前块使用的帧内预测模式。
可以理解的是,在本申请的实施例中,编码器可以对第一初始模式和第二初始模式使用相同的偏移参数,即基于第一初始模式和第二初始模式,按照相同的偏移方式和偏移量来进行偏移处理。相应地,编码器也可以对第一初始模式和第二初始模式使用不同的偏移参数,即基于第一初始模式使用一种偏移方式进行偏移处理,同时基于第二初始模式使用另一种偏移方式进行偏移处理,其中,这两种偏移方式所对应的偏移方式和偏移量可以不完全相同。
也就是说,在本申请中,第一初始模式进行偏移处理时所对应的偏移方式和偏移量,与第二初始模式进行偏移处理时所对应的偏移方式和偏移量,可以相同,也可以不同。
可选地,在本申请中,第一初始模式对应的偏移模式参数和第二初始模式对应的偏移模式参数也可以不同,即编码器通过对第一初始模式和第二初始模式分别设置偏移模式参数,实现以下几种不同的处理方式:对第一初始模式和第二初始模式均进行偏移处理;或者,对第一初始模式和第二初始模式均不进行偏移处理;或者,对第一初始模式进行偏移处理,同时对第二初始模式不进行偏移处理;或者,对第一初始模式不进行偏移处理,同时对第二初 始模式进行偏移处理。
进一步地,在本申请的实施例中,如果偏移模式参数指示不进行偏移处理,那么编码器可以直接根据模式列表确定第一帧内预测模式和第二帧内预测模式,即编码器可以直接使用几个比特来确定使用模式列表中的哪一个预测模式。
步骤404、基于第一帧内预测模式和第二帧内预测模式,确定当前块的预测值。
在本申请的实施例中,编码器在根据模式列表和偏移参数确定当前块的第一帧内预测模式和第二帧内预测模式之后,便可以基于第一帧内预测模式和第二帧内预测模式,进一步确定当前块的预测值。
需要说明的是,在本申请的实施例中,编码器在进行当前块的预测值时,可以先根据第一帧内预测模式确定当前块的第一预测值;同时可以根据第二帧内预测模式确定当前块的第二预测值;然后可以利用当前块的权重矩阵对第一预测值和第二预测值进行加权平均计算,最终便可以获得当前块的预测值。
进一步地,在本申请的实施例中,编码器在确定当前块的预测值之后,还可以对当前块的真实值和预测值进行差值运算,获得两者之间的差值结果,从而可以确定出当前块的预测差值,即残差。
也就是说,在本申请中,编码器可以计算当前块的真实值与帧内预测值之间的差值,从而获得残差,且该残差经过变换、量化、熵编码写入码流,传输至解码侧。
在本申请的实施例中,进一步地,通过上述步骤401至步骤404所示的帧内预测方法,编码器可以先从模式列表中选择一个预测模式,然后在该预测模式的基础上确定是否需要偏移,如果需要偏移,则进一步确定偏移方式和偏移量,其中,偏移量可以理解为偏移的模式索引序号。
需要说明的是,在本申请的实施例中,对模式列表进行偏移处理后确定当前块的预测模式的方法,既可以应用于本申请实施例的SAWP模式中,也可以应用于其他帧内预测模式中,还可以应用于任意的帧间预测模式中,对此本申请不进行具体限定。同时,还可以使用1个比特(offset_needed)来表示是否需要偏移,例如,设置偏移模式参数offset_needed的取值为0,可以认为不进行偏移处理;设置偏移模式参数offset_needed的取值为1,可以认为进行偏移处理。
示例性的,在本申请中,规定构建4个MPM,那么可以使用2个比特确定选择哪一个预测模式,使用1个比特确定是否进行偏移处理。,那么如果选中的帧内预测模式是MPM之一,需要2个比特(mpm_idx)表示是哪一个MPM,1个比特(offset_needed)表示不需要偏移,共3个比特。
进一步地,在本申请的实施例中,如果偏移模式参数指示进行偏移处理,那么可以进一步确定偏移参数,其中,偏移参数可以包括一个比特(sign)的偏移方式,还可以包括一些比特(offset)的偏移量。
也就是说,在本申请中,如果需要偏移,那么可以用一个比特(sign)来表示偏移方式是“+”还是“-”。进一步地,偏移量的设置的方法可以默认只能偏移某一个量,如1或2或4等,或者,也可以使用一些开销来表示偏移量。比如,假设可选的偏移量有两种,如2和4,那么可以使用一个比特表示偏移量是2还是4。假设可选的偏移量是多种,那么可以用一些比特(offset)来表示,如表8所示的offset的取值与二元符号串的对应关系可以用于进行偏移量的确定。
表8
offset 二元符号串
1 0
2 10
4 110
8 1110
基于上述实施例,本申请的再一实施例提出了一种帧内预测方法,应用于编码器,图17为帧内预测方法的实现流程示意图二,如图17所示,编码器进行帧内预测的方法可以包括以下步骤:
步骤501、当当前块使用SAWP模式确定当前块的帧内预测值时,确定当前块的模式列表。
在本申请的实施例中,编码器在确定当前块使用SAWP模式确定当前块的帧内预测值之后,可以先确定当前块的模式列表。
需要说明的是,在本申请的实施例中,SAWP模式为一种帧内预测方法,具体地,SAWP模式为对当前块确定两个不同的帧内预测模式,然后分别根据这两个不同的帧内预测模式确定出两个预测块,接着可以再确定一个权重矩阵,将则会两个预测块依据权重矩阵进行组合,最终便可以得到新的预测块,即获得当前块的预测块。
可选地,在本申请中,解码器可以先确定当前块的尺寸参数;然后可以根据尺寸参数确定当前块是否使用SAWP模式。具体地,若宽度大于第一阈值且高度大于第二阈值,则确定当前块使用SAWP模式;或者,若宽度小于第三阈值且高度大于第四阈值,则确定当前块使用SAWP模式。
可选地,在本申请中,解码器可以先确定当前块的像素参数;然后可以根据像素参数和第五阈值判断当前块是否使用SAWP模式。
可选地,在本申请中,解码器可以先确定当前块的帧内预测模式参数;然后根据帧内预测模式参数判断当前块是否使用SAWP模式。
需要说明的是,在本申请中,权重矩阵导出模式用于对当前块使用的权重矩阵进行确定。具体地,权重矩阵导出模式可以是导出权重矩阵的模式。对于一个给定长度和宽度的预测块,每一种权重矩阵导出模式可以导出一个权重矩阵;对于同样大小的预测块,不同权重矩阵导出模式导出的权重矩阵不同。
示例性的,在本申请中,AVS3的AWP有56种权重矩阵导出模式,VVC的GPM有64种权重矩阵导出模式。
进一步地,在本申请的实施例中,编码器在利用权重矩阵导出模式确定模式列表时,可以先确定当前块的相邻块对应的帧内预测模式,然后将相邻块对应的帧内预测模式确定为待添加模式;在确定待添加模式满足预设添加条件之后,编码器可以将待添加模式添加至模式列表中,即将当前块的相邻块对应的帧内预测模式添加至模式列表中; 接着,如果此时模式列表不满足预设列表长度,那么编码器可以继续确定当前块的权重矩阵导出模式,并确定权重矩阵导出模式对应的相关帧内预测模式,然后将权重矩阵导出模式对应的相关帧内预测模式确定为待添加模式;且在确定待添加模式满足预设添加条件,则将该待添加模式添加至模式列表中,即将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表。
需要说明的是,在本申请的实施例中,编码器在将当前块的相邻块对应的帧内预测模式添加至模式列表之后,或者,编码器在将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表之后,如果模式列表不满足预设列表长度,即模式列表未填满,那么编码器可以继续将预设预测模式确定为待添加模式;然后在确定待添加模式满足预设添加条件之后,将待添加模式添加至模式列表,即将预设预测模式添加至模式列表中。
可以理解的是,在本申请中,预设预测模式可以包括DC模式、Bilinear模式、Planar模式等多种不同模式中的一种或多种。
进一步地,在本申请的实施例中,编码器在分别将当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式、预设预测模式添加至模式列表之后,如果模式列表仍然不满足预设列表长度,即模式列表仍然未被填满,那么编码器可以选择使用模式列表中的预测模式进行关联帧内预测模式的确定,然后将关联帧内预测模式确定为待添加模式,并在确定待添加模式满足预设添加条件之后,将待添加模式添加至模式列表,即将模式列表对应的关联帧内预测模式添加至模式列表中。
也就是说,在本申请中,在将当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式以及预设预测模式依次添加至模式列表之后,如果模式列表仍然未被填满,那么编码器可以选择基于模式列表中的已有的预测模式,进行对应的关联帧内预测模式的确定,然后再将这些关联帧内预测模式添加至模式列表中。
需要说明的是,在本申请的实施例中,无论是将当前块的相邻块对应的帧内预测模式作为待添加模式,还是将权重矩阵导出模式对应的相关帧内预测模式作为待添加模式,或者是将预设预测模式作为待添加模式,再者是将关联帧内预测模式作为待添加模式,编码器都需要进行待添加模式是否满足预设添加条件的判定,具体地,如果待添加模式存在,且待添加模式与模式列表中的预测模式均不相同,那么便可以确定待添加模式满足预设添加条件,从而可以将该待添加模式添加至模式列表中。
相应地,如果待添加模式不存在,或者待添加模式与模式列表中的一个预测模式相同(重合),那么便可以确定待添加模式不满足预设添加条件,因此不能将该待添加模式添加至模式列表中,而是直接丢弃该待添加模式。
可以理解的是,在本申请中,由于当前块需要使用两个帧内预测模式进行帧内预测处理,因此可以在构建MPM时参考更多位置的帧内预测模式,或者参考更多相邻块的帧内预测模式。相应地,在本申请中,当前块所使用的模式列表的长度可以与其他帧内预测模式的模式列表长度不同,因为MPM二值化时的码字比其他模式要短,增加两个帧内预测模式分别是MPM的概率,有利于编解码效率提升。
进一步地,在本申请的实施例中,编码器在利用权重矩阵导出模式确定模式列表时,可以先确定权重矩阵导出模式对应的列表构建策略;然后可以按照列表构建策略,进一步确定模式列表。
也就是说,在本申请中,针对不同的权重矩阵,即针对不同的权重矩阵导出模式,编码器可以使用不同的构建策略来进行模式列表的构建。例如,基于构建策略,如果权重矩阵的分界线是0度或90度,即在水平或竖直的情况下,编码器可以选择在构建模式列表时考虑权重矩阵对应的帧内预测模式,而其他情况不考虑权重矩阵对应的帧内预测模式。
步骤502、根据模式列表,确定当前块的第一帧内预测模式和第二帧内预测模式。
在本申请的实施例中,编码器在构建当前块的模式列表之后,便可以根据模式列表,确定当前块的第一帧内预测模式和第二帧内预测模式。
可以理解的是,在本申请中,当前块进行帧内预测时使用的两个帧内预测模式不相同,即第一帧内预测模式与第二帧内预测模式并不相同,那么第二帧内预测模式在解码时就可以排除第一帧内预测模式的可能。也就是说第二帧内预测模式的解码可以使用第一帧内预测模式的信息。
在本申请的实施例中,进一步地,编码器在进行模式列表的构建过程中,还可以设置候补帧内预测模式。其中,候补帧内预测模式与模式列表中的帧内预测模式均不相同。
具体地,在本申请中,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,第二帧内预测模式的确定可以是依赖于第一帧内预测模式的。其中,编码器在基于模式列表,确定第一帧内预测模式和第二帧内预测模式时,可以先将模式列表中的一个预测模式确定为第一帧内预测模式;然后再根据第一帧内预测模式和模式列表,确定第二帧内预测模式。
进一步地,在本申请的实施例中,编码器在将模式列表中的一个预测模式确定为第一帧内预测模式之后,可以从模式列表中删除一个预测模式,然后再将候补帧内预测模式添加至模式列表,从而可以获得更新后的模式列表;然后可以从所述更新后的模式列表中选择一个预测模式确定为所述第二帧内预测模式,其中,选择方式可以为任意的。
示例性的,在本申请中,假设第一帧内预测模式和第二帧内预测模式可选的MPM为N个,在构建模式列表时,可以先构建N个MPM和1个候补的MPM,对第一帧内预测模式,可选的MPM是上述N个MPM。如果第一帧内预测模式选中了其中一个MPM,那么对第二帧内预测模式,将第一个帧内预测模式选中的MPM剔除,然后将候补的MPM加入模式列表,这样第二个帧内预测模式仍可选N个MPM。
在本申请的实施例中,进一步地,编码器在进行模式列表的构建过程中,还可以设置模式列表的长度参数为(N+1);其中,N为正整数。
具体地,在本申请中,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,第二帧内预测模式的确定可以是依赖于第一帧内预测模式的。其中,编码器在基于模式列表,确定第一帧内预测模式和第二帧内预 测模式时,如果使用模式列表确定第一帧内预测模式,那么可以将模式列表的前N个预测模式中的一个预测模式确定为第一帧内预测模式;然后再根据第一帧内预测模式和模式列表,确定第二帧内预测模式。
进一步地,在本申请的实施例中,如果使用模式列表确定第一帧内预测模式,那么编码器在将模式列表的前N个预测模式中的一个预测模式确定为第一帧内预测模式之后,再利用模式列表的、第一帧内预测模式以外的其他N个预测模式确定第二帧内预测模式。
需要说明的是,在本申请的实施例中,编码器在基于模式列表,确定第一帧内预测模式和第二帧内预测模式时,如果不使用模式列表确定第一帧内预测模式,那么编码器可以直接将模式列表的前N个预测模式中的一个预测模式确定为第二帧内预测模式。
可选地,在本申请的实施例中,如果仅仅保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,而不对第一帧内预测模式和第二帧内预测模式可选择的MPM的数量进行限制,那么编码器也可以不进行后补帧内预测模式的设置,或者,不进行增加模式列表长度的处理,此时,编码器则需要改变第二帧内预测模式的编码方法。也就是说,如果第一帧内预测模式选择了模式列表中的一个MPM之后,第二帧内预测模式可选的MPM则少了一个,这时由于第二帧内预测模式可选的MPM少了,因此需要改变第二帧内预测模式的编码方法。
示例性的,在本申请中,以MPM个数N等于4为例,以第一个比特位表示是否是MPM,比如“1”表示是MPM,“0”表示不是MPM。如果第一帧内预测模式是MPM,因为有4个MPM,以2个比特位表示是哪一个MPM,即“00,01,10,11”分别表示第一个,第二个,第三个,第四个。而如果第一帧内预测模式和第二帧内预测模式都是MPM,那么第二帧内预测模式可用的MPM只有3种,那么可以用1到2个比特位表示是哪一个MPM,如“00,01,10”分别表示剩余的第一个,第二个,第三个。可见,由于排除了一种可能,可以改变编码方法或者叫二值化的方法以节省开销。
步骤503、基于第一帧内预测模式和第二帧内预测模式,确定当前块的预测值。
在本申请的实施例中,编码器在根据模式列表,确定当前块的第一帧内预测模式和第二帧内预测模式之后,便可以基于第一帧内预测模式和第二帧内预测模式,进一步地确定当前块的预测值。
可以理解的是,在本申请的实施例中,编码器在基于第一帧内预测模式和第二帧内预测模式确定当前块的预测值时,可以先根据第一帧内预测模式确定当前块的第一预测值;同时可以根据第二帧内预测模式确定当前块的第二预测值;然后可以对第一预测值和第二预测值进行加权平均计算,最终便可以获得当前块的预测值。例如,编码器可以利用权重矩阵对第一预测值和第二预测值进行加权平均计算,以获得当前块的预测值。
进一步地,在本申请的实施例中,编码器在确定当前块的预测值之后,还可以对当前块的真实值和预测值进行差值运算,获得两者之间的差值结果,从而可以确定出当前块的预测差值,即残差。
也就是说,在本申请中,编码器可以计算当前块的真实值与帧内预测值之间的差值,从而获得残差,且该残差经过变换、量化、熵编码写入码流,传输至解码侧。
本申请实施例提供一种帧内预测方法,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性,同时,编解码器还可以通过权重矩阵与预测模式之间的相关性进行MPM列表的构建,能够大大降低复杂度,也就是说,本申请提出的帧内预测方法,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。
在本申请的实施例中,进一步地,编码器也可以在确定当前块的模式列表之后,先根据模式列表确定当前块的第一初始模式和第二初始模式;然后确定偏移模式参数,当偏移模式参数指示进行偏移处理时,确定当前块的偏移参数;接着可以根据第一初始模式和偏移参数,确定当前块的第一帧内预测模式;根据第二初始模式和偏移参数,确定当前块的第二帧内预测模式;最后基于第一帧内预测模式和第二帧内预测模式,便可以确定当前块的预测值。
可以理解的时,在本申请的实施例中,编码器在进行模式列表的确定时,可以采用常见的构建最可能模式列表MPM的方式,如使用相邻块的预测模式构建MPM等,也可以使用本申请提出的帧内预测方法所涉及的模式列表的构建方法,即利用当前块的权重矩阵导出模式构建模式列表。
也就是说,在本申请中,模式列表的构建方法可以选择使用上述实施例中所提出的模式列表构建方法,也可以是其他的MPM构建方法,本申请不做具体限定。
进一步地,在本申请的实施例中,编码器在确定当前块使用的模式列表之后,可以先根据模式列表确定当前块的第一初始模式和第二初始模式。
示例性的,在本申请中,编码器构建包括有N个MPM的模式列表,如果N为2 n,那么可以使用n个比特(mpm_idx)来表示选择模式列表中的哪一个MPM,即确定第一初始模式和第二初始模式,然后再用一个比特来表示是否需要偏移(offset_needed)。例如,构建4个MPM的模式列表,那么在模式列表中选择帧内预测模式时,需要使用2个比特(mpm_idx)来表示选择模式列表中的哪一个MPM作为初始模式,如表3所示的mpm_idx的取值与二元符号串的对应关系可以用于进行预测模式的确定。
需要说明的是,在本申请的实施例中,编码器可以使用一个比特来表示是否需要偏移(offset_needed),也就是说,编码器可以通过对偏移模式参数的设置,进一步确定当前块的预测模式(第一初始模式或第二初始模式)是否需要偏移。
进一步地,在本申请的实施例中,如果偏移模式参数指示进行偏移处理,那么编码器可以进一步确定当前块的偏移参数。其中,偏移参数可以包括偏移方式和偏移量,即通过偏移参数的确定,编码器可以确定如果对当前块的第一初始模式或第二初始模式进行偏移处理。
需要说明的是,在本申请的实施例中,编码器也可以使用编码比特对偏移参数中的偏移方式和偏移量进行指示。例如,编码器可以使用一个比特(sign)表示偏移方式是“+”还是“-”;还可以使用一些比特(offset)来表示偏移量。
可选地,在本申请中,编码器也可以预先对偏移方式和偏移量进行设置,例如,编码器可以默认只能偏移某一 个量,如1或2或4等。
进一步地,在本申请的实施例中,编码器在根据模式列表和偏移参数,确定当前块的第一帧内预测模式和第二帧内预测模式时,可以按照偏移方式和偏移量对第一初始模式进行偏移处理,从而确定第一帧内预测模式;同时还可以按照偏移方式和偏移量对第二初始模式进行偏移处理,从而确定第二帧内预测模式。
也就是说,在本申请的实施例中,编码器可以先使用几个比特来确定使用模式列表中的哪一个预测模式,即先从模式列表中确定出初始模式,然后再按照偏移参数对初始模式进行偏移处理,最终便可以确定出当前块使用的帧内预测模式。
可以理解的是,在本申请的实施例中,编码器可以对第一初始模式和第二初始模式使用相同的偏移参数,即基于第一初始模式和第二初始模式,按照相同的偏移方式和偏移量来进行偏移处理。相应地,编码器也可以对第一初始模式和第二初始模式使用不同的偏移参数,即基于第一初始模式使用一种偏移方式进行偏移处理,同时基于第二初始模式使用另一种偏移方式进行偏移处理,其中,这两种偏移方式所对应的偏移方式和偏移量可以不完全相同。
也就是说,在本申请中,第一初始模式进行偏移处理时所对应的偏移方式和偏移量,与第二初始模式进行偏移处理时所对应的偏移方式和偏移量,可以相同,也可以不同。
可选地,在本申请中,第一初始模式对应的偏移模式参数和第二初始模式对应的偏移模式参数也可以不同,即编码器通过对第一初始模式和第二初始模式分别设置偏移模式参数,实现以下几种不同的处理方式:对第一初始模式和第二初始模式均进行偏移处理;或者,对第一初始模式和第二初始模式均不进行偏移处理;或者,对第一初始模式进行偏移处理,同时对第二初始模式不进行偏移处理;或者,对第一初始模式不进行偏移处理,同时对第二初始模式进行偏移处理。
进一步地,在本申请的实施例中,如果偏移模式参数指示不进行偏移处理,那么编码器可以直接根据模式列表确定第一帧内预测模式和第二帧内预测模式,即编码器可以直接使用几个比特来确定使用模式列表中的哪一个预测模式。
需要说明的是,在本申请的实施例中,编码器在进行当前块的预测值时,可以先根据第一帧内预测模式确定当前块的第一预测值;同时可以根据第二帧内预测模式确定当前块的第二预测值;然后可以对第一预测值和第二预测值进行加权平均计算,最终便可以获得当前块的预测值。
综上,本申请实施例提出的帧内预测方法,针对常见技术存在的帧内预测模式只能预测简单纹理的缺点,可以通过两种帧内预测模式确定2个预测块,并通过多样的权重矩阵进行组合,可以得到更复杂的预测块,从而能够提升帧内预测的质量,进而可以提升压缩性能。可见,本申请提出的帧内预测方法,能够对帧内预测模式编码的改进,利用新的场景下的帧内预测模式的概率特征改进帧内预测模式的编码方法,有效提高压缩性能。
需要说明的是,本申请使用的帧内预测模式的编码方法可以与常见技术的帧内预测方法的帧内预测模式的编码方法不同。相应地,本申请使用的MPM构建方法也可以与常见技术的帧内预测方法的MPM构建方法不同。
可以理解的是,在本申请中,由于当前块所选的帧内预测模式与权重矩阵会有一定的相关性,利用这种相关性,帧内预测模式的编码可以利用权重矩阵的信息,即帧内预测模式的编码可以利用权重矩阵导出模式的信息。具体地,可以利用权重矩阵导出模式构建MPM,或者,在构建MPM时可以利用权重矩阵导出模式的信息。
可选地,在本申请中,设置权重矩阵导出模式对应的帧内预测模式或权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式在二值化时赋予比普通帧内预测模式短的码字。
需要说明的是,在本申请中,由于本申请需要使用2个帧内预测模式,因此可以在构建MPM时参考更多位置的帧内预测模式,或者参考更多相邻块的帧内预测模式。本发明使用的模式列表(即MPM列表)长度可以与其他帧内预测模式的模式列表(即MPM列表)长度不同。
本申请实施例提供一种帧内预测方法,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性,同时,编解码器还可以通过权重矩阵与预测模式之间的相关性进行MPM列表的构建,能够大大降低复杂度,也就是说,本申请提出的帧内预测方法,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。
本申请的一实施例提出了一种帧内预测方法,应用于解码器,图18为帧内预测方法的实现流程示意图三,如图18所示,解码器进行帧内预测的方法可以包括以下步骤:
步骤601、解析码流,确定当前块的帧内预测模式参数。
在本申请的实施例中,解码器解析码流,确定当前块的帧内预测模式参数。
需要说明的是,在本申请的实施中,帧内预测模式参数可以指示当前块是否可以使用SAWP模式,即指示当前块是否可以使用两种不同的预测模式进行预测处理。
可以理解的是,在本申请的实施例中,可以将帧内预测模式参数理解为一个表明是否使用了SAWP模式标志位。具体地,解码器解析码流,可以确定作为帧内预测模式参数的一个变量,从而可以通过该变量的取值来实现帧内预测模式参数的确定。
需要说明的是,在本申请的实施例中,SAWP模式为一种帧内预测方法,具体地,SAWP模式为对当前块确定两个不同的帧内预测模式,然后分别根据这两个不同的帧内预测模式确定出两个预测块,接着可以再确定一个权重矩阵,将则会两个预测块依据权重矩阵进行组合,最终便可以得到新的预测块,即获得当前块的预测块。
进一步地,在本申请的实施例中,在应用SAWP模式时,可以对当前块的尺寸进行限制。
可以理解的是,由于本申请实施例提出的帧内预测方法需要分别使用两个不同的帧内预测模式生成两个预测块,再根据权重矩阵进行加权得到新的预测块,为了降低的复杂度,同时考虑压缩性能和复杂度的权衡,在本申请的实施例中,可以限制对一些大小的预测块不使用该SAWP模式。因此,在本申请中,解码器可以先确定当前块的尺寸参数,然后根据尺寸参数确定当前块是否使用SAWP模式。
需要说明的是,在本申请的实施例中,当前块的尺寸参数可以包括当前块的高度和宽度,因此,解码器可以利用当前块的高度和宽度对使用SAWP模式进行限制,即限制能够使用SAWP模式的预测块的尺寸。
示例性的,在本申请中,若宽度大于第一阈值且高度大于第二阈值,则确定当前块使用SAWP模式。可见,一种可能的限制是仅仅在预测块的宽度大于(或大于等于)第一阈值,且预测块的高度大于(或大于等于)第二阈值的情况下使用SAWP模式。其中,第一阈值和第二阈值的值可以是8,16,32等,第一阈值可以等于第二阈值。
示例性的,在本申请中,若宽度小于第三阈值且高度大于第四阈值,则确定当前块使用SAWP模式。可见,一种可能的限制是仅仅在预测块的宽度小于(或小于等于)第三阈值,且预测块的高度大于(或大于等于)第四阈值的情况下使用SAWP模式。其中,第三阈值和第四阈值的值可以是8,16,32等,第三阈值可以等于第四阈值。
进一步地,在本申请的实施例中,还可以通过像素参数的限制来实现限制能够使用SAWP模式的预测块的尺寸。
示例性的,在本申请中,解码器可以先确定当前块的像素参数,然后再根据像素参数和第五阈值进一步判断当前块是否可以使用SAWP模式。可见,一种可能的限制是仅仅在预测块的像素数大于(或大于等于)第五阈值的情况下使用SAWP模式。其中,第五阈值的值可以是8,16,32等。
也就是说,在本申请中,只有在当前块的尺寸参数满足大小要求的条件下,当前块才可以使用SAWP模式。
示例性的,在本申请中,可以有一个帧级的标志来确定当前待解码帧是否使用本发明。如可以配置帧内帧(如I帧)使用本发明,帧间帧(如B帧、P帧)不使用本发明。或者可以配置帧内帧不使用本发明,帧间帧使用本发明。或者可以配置某些帧间帧使用本发明,某些帧间帧不使用本发明。帧间帧也可以使用帧内预测,因而帧间帧也有可能使用本发明。
可以有一个帧级以下、CU级以上(如tile、slice、patch、LCU等)的标志来确定这一区域是否使用本发明。
步骤602、当帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值时,确定当前块的权重矩阵导出模式。
在本申请的实施例中,解码器在确定当前块的帧内预测模式参数之后,如果帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值,那么解码器可以进一步确定当前块的权重矩阵导出模式。
需要说明的是,在本申请中,权重矩阵导出模式用于对当前块使用的权重矩阵进行确定。具体地,权重矩阵导出模式可以是导出权重矩阵的模式。对于一个给定长度和宽度的预测块,每一种权重矩阵导出模式可以导出一个权重矩阵;对于同样大小的预测块,不同权重矩阵导出模式导出的权重矩阵不同。
示例性的,在本申请中,AVS3的AWP有56种权重矩阵导出模式,VVC的GPM有64种权重矩阵导出模式。
步骤603、根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式;根据权重矩阵导出模式确定当前块的权重矩阵。
在本申请的实施例中,如果帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值,那么解码器确定当前块的权重矩阵导出模式之后,可以先根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式,同时可以根据权重矩阵导出模式确定当前块的权重矩阵。
需要说明的是,在本申请的实施例中,当前块所使用的第一帧内预测模式和第二帧内预测模式均可以为目前常见的任意一种帧内预测模式,包括但不限于DC、Planar、Bilinear以及角度预测模式等帧内预测模式。
可选地,在本申请中,更广泛的理解是其中帧内预测模式还包括对预测进行改进的技术,如改进参考像素的分像素插值,对预测像素进行滤波等,如MIPF,IPF等。
相应地,在本申请中,可以将DC、Planar、Bilinear以及角度预测模式等帧内预测模式称为基本帧内预测模式,预测进行改进的技术如MIPF,IPF等称为改进帧内预测模式。基本帧内预测模式是可以不依赖于其他帧内预测模式独立生成预测块的帧内预测模式,即确定了参考像素和基本帧内预测模式,就可以确定预测块。而改进帧内预测模式不能独立生成预测块,它们需要依赖于基本帧内预测模式才能确定预测块。比如某一种角度预测模式可以根据参考像素确定生成预测块,而MIPF可以在这个角度预测模式的基础上对不同位置的像素使用不同的滤波器生成或确定预测块。
示例性的,在本申请中,第一帧内预测模式和第二帧内预测模式可以都是基本帧内预测模式,即本申请实施例使用两个不同的基本帧内预测模式。这时候对于改进帧内预测模式,它们可能分别与第一帧内预测模式和第二帧内预测模式组合,产生第一预测块和第二预测块。以及可能在本申请实施例产生“新的预测块”之后,对该“新的预测块”进行改进得到更新的预测块。
示例性的,在本申请中,第一帧内预测模式和第二帧内预测模式也可以是基本帧内预测模式和改进帧内预测模式的组合,即本申请实施例使用了两个不同的帧内预测模式组合。如第一帧内预测模式和第二帧内预测模式都使用了同一种角度预测模式,但是第一帧内预测模式没有使用某种改进帧内预测模式,如IPF;而第二这内预测模式使用了这种改进帧内预测模式,如IPF。或者第一帧内预测模式和第二帧内预测模式都使用了同一种角度预测模式,但是第一帧内预测模式使用了某种改进帧内预测模式的某一种选择;而第二这内预测模式使用了这种改进帧内预测模式的另一种选择。在得到“新的预测块”之后,仍然可以有改进帧内预测模式对“新的预测块”进行改进得到更新的预测块。
由此可见,本申请实施例所提出的帧内预测方法,基于第一帧内预测模式和第二帧内预测模式,可以对当前块确定两个不完全相同的预测块,确定一个权重矩阵,将两个预测块依据权重矩阵进行组合得到新的预测块。
进一步地,在本申请的实施例中,所有可能的权重矩阵中并非每一个权重矩阵的所有的点的权重都相同。换句话说,至少有一个可能的权重矩阵中包含至少两个不同的权重值。
可选地,在本申请中,所有可能的权重矩阵中都包含至少两个不同的权重值。
可选地,在本申请中,部分权重矩阵中包含至少两个不同的权重值,例如,在本申请中,如果最小权重值是0,最大权重值是8,有一个权重矩阵中有的点是0,有的点是8。相应地,部分权重矩阵中只包含同一个权重值,例如, 在本申请中,有一个权重矩阵中所有的点都是4。
可选地,在本申请中,一个权重矩阵中只有两种权重,其中一个权重表示对应点的预测值完全来自于第一预测块对应点的值,另一个权重表示对应点的预测值完全来自于第二预测块对应点的值。例如,在本申请中,一个权重矩阵中只有两种权重,分别是0和1。
可选地,在本申请中,一个权重矩阵中可能有多种权重,其中最大值和最小值(比如0)分别表示对应点的预测值完全来自于第一预测块对应点的值或第二预测块对应点的值。不是最大值或最小值的权重值表示对应点的预测值来自于第一预测块和第二预测块对应点的值的加权平均。这个最大值或最小值的权重值组成的区域可以叫做过渡区域(blending area)。
需要说明的是,在本申请中,在权重矩阵只有两种权重的情况下,权重变化的位置构成一条直线,或权重矩阵有多种权重的情况下,过渡区域中权重相同的位置构成一条直线(线段)。其中,该直线可以全是水平竖直的,也可以不全是水平竖直的。
可选地,在本申请中,在权重矩阵只有两种权重的情况下,权重变化的位置构成一条曲线(曲线段),或权重矩阵有多种权重的情况下,过渡区域中权重相同的位置构成一条曲线(曲线段)。
进一步地,在本申请的实施例中,解码器可以采用类似于GPM或AWP的方法来实现权重矩阵的确定。具体地,如果同一个编解码标准或编解码器中使用了GPM或AWP,那么可以使用该方法来确定权重矩阵,这样可以做到复用部分相同的逻辑。如AVS3帧间预测使用了AWP,那么在AVS3中可以使用AWP的方法来确定权重矩阵。当然也可以使用和同一个编解码标准或编解码器中的GPM或AWP不同方法,比如使用不同的模式数,或者不同的过渡区域算法,或者使用不同的参数等。因为帧间预测利用了时域上的相关性,它使用的是参考帧中已重建的图像作为参考块。而帧内预测利用了空域上的相关性,它使用的是当前块周边已重建的像素作为参考像素。空域上距离越近相关性越强,距离越远相关性越差。所以如果某种权重矩阵使得一个预测块使用的得到的像素位置都距离参考像素较远,那么这部分可能做不出比现有技术更合适的预测值,那么可以不使用这样的权重矩阵,而在帧间预测中可以使用。
需要说明的是,在本申请的实施例中,由于本申请实施例需要使用两个帧内预测模式,而常见的其他帧内预测方法一般仅仅需要使用一个帧内预测模式。因此,本申请实施例使用的帧内预测模式的编码方法可以与常见的其他帧内预测方法的帧内预测模式的编码方法不同,相应地,本申请实施例使用的MPM构建方法也可以与常见的其他帧内预测方法的MPM构建方法不同。
在本申请的实施例中,进一步地,由于本申请实施例提出的帧内预测方法需要在码流中传输权重矩阵导出模式的信息和两个帧内预测模式的信息,权重矩阵导出模式以AVS3的AWP为例有56种模式,反二值化需要5到6个比特。帧内预测模式以AVS3为例有66种模式,使用两个MPM。如果帧内预测模式是MPM,则反二值化需要两个比特,否则反二值化需要7个比特。也就是说在AVS3中,上述信息最多需要6+7+7为20个比特的开销。
为例降低上述信息的反二值化开销、提升编码性能,在本申请的实施例中,解码器可以利用当前块的帧内预测模式与权重矩阵之间的相关性进行上述信息的确定。具体地,当前块所使用的帧内预测模式与权重矩阵会有一定的相关性,利用这种相关性,解码器在对帧内预测模式进行解码可以利用权重矩阵的信息,进一步地,解码器在对帧内预测模式进行解码可以利用权重矩阵导出模式的信息。
进一步地,在本申请的实施例中,在权重矩阵包括有两种权重的情况下,权重变化的位置构成一条直线,或者,在权重矩阵有多种权重的情况下,过渡区域中权重相同的位置构成一条直线,可以将这条直线叫做分界线。分界线本身也是有角度的,可以设水平向右的角度为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模式共有7种分界线的角度。分界线角度的索引可以由权重矩阵导出模式的模式号模8(%8)得到。例如,表1为映射关系表,以AVS3的角度模式为例,分界线角度的索引0和1分别可以对应到两个帧内角度预测模式,一个从右上角到左下角,一个从左上角到右下角。具体实现时,可以为其他分界线角度的索引也找到另一个近似对应的帧内角度预测模式,或者所有的分界线角度的索引都只对应一种帧内角度预测模式。
进一步地,在本申请中观,一般使用当前块的左边和上边的参考像素进行帧内预测,而空间上像素的距离越近,相关性越强,空间上距离越远,相关性越弱。因此,如果当前块只有一部分像素由一种帧内预测模式预测所得,那么这部分像素所处的位置会影响这部分使用的帧内预测模式的概率。即上述分界线的位置和角度会影响分界线两边 的两个帧内预测模式的选择。
在本申请的实施例中,进一步地,解码器在根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式时,可以先利用权重矩阵导出模式确定模式列表(MPM列表);然后可以基于模式列表,进一步确定第一帧内预测模式和第二帧内预测模式。
具体地,在本申请的实施例中,在利用与权重矩阵的相关性进行第一帧内预测模式和第二帧内预测模式的确定时,可以利用权重矩阵导出模式构建模式列表,或者,在构建MPM时可以利用权重矩阵导出模式的信息。其中,权重矩阵导出模式可以对应至少一个帧内预测模式,因此解码器可以把当前块确定的权重矩阵导出模式对应的帧内预测模式加入到模式列表中,或者把权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式加入到模式列表中。
进一步地,在本申请的实施例中,解码器在利用权重矩阵导出模式确定模式列表时,可以先确定当前块的相邻块对应的帧内预测模式,然后将相邻块对应的帧内预测模式确定为待添加模式;在确定待添加模式满足预设添加条件之后,解码器可以将待添加模式添加至模式列表中,即将当前块的相邻块对应的帧内预测模式添加至模式列表中;接着,如果此时模式列表不满足预设列表长度,那么解码器可以继续确定权重矩阵导出模式对应的相关帧内预测模式,然后将权重矩阵导出模式对应的相关帧内预测模式确定为待添加模式;且在确定待添加模式满足预设添加条件,则将该待添加模式添加至模式列表中,即将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表。
需要说明的是,在本申请的实施例中,解码器在将相邻块对应的帧内预测模式添加至模式列表时,可以先确定相邻块对应的顺序参数;然后再按照顺序参数,依次将相邻块对应的帧内预测模式添加至模式列表。其中,解码器可以按照相邻块与当前块之间的空间距离来确定对应的顺序参数,例如,相邻块与当前块之间的空间距离越近,两者的相关性越强,越先进行添加处理,即顺序参数就越小;相邻块与当前块之间的空间距离越远,两者的相关性越弱,越后进行添加处理,即顺序参数就越大。
进一步地,在本申请的实施例中,解码器在确定权重矩阵导出模式对应的相关帧内预测模式,可以先确定权重矩阵导出模式对应的帧内预测模式,然后可以基于权重矩阵导出模式对应的帧内预测模式,按照第一索引间隔,确定相关帧内预测模式。
示例性的,在本申请的实施例中,解码器在确定与权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式时,可以根据第一索引间隔选择与该权重矩阵导出模式对应的帧内预测模式的索引序号相差某个或某几个数的模式。如相差1个索引序号,或者,相差2个索引序号等。例如,假设权重矩阵导出模式对应的帧内预测模式的索引是10,第一索引间隔为2,那么可以将索引为8和12的两个帧内预测模式确定为与权重矩阵导出模式对应的帧内预测模式相关的两个相关帧内预测模式。
需要说明的是,在本申请的实施例中,解码器在将当前块的相邻块对应的帧内预测模式添加至模式列表之后,或者,解码器在将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表之后,如果模式列表不满足预设列表长度,即模式列表未填满,那么解码器可以继续将预设预测模式确定为待添加模式;然后在确定待添加模式满足预设添加条件之后,将待添加模式添加至模式列表,即将预设预测模式添加至模式列表中。
可以理解的是,在本申请中,预设预测模式可以包括DC模式、Bilinear模式、Planar模式等多种不同模式中的一种或多种。
进一步地,在本申请的实施例中,解码器在分别将当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式、预设预测模式添加至模式列表之后,如果模式列表仍然不满足预设列表长度,即模式列表仍然未被填满,那么解码器可以选择使用模式列表中的预测模式进行关联帧内预测模式的确定,然后将关联帧内预测模式确定为待添加模式,并在确定待添加模式满足预设添加条件之后,将待添加模式添加至模式列表,即将模式列表对应的关联帧内预测模式添加至模式列表中。
也就是说,在本申请中,在将当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式以及预设预测模式依次添加至模式列表之后,如果模式列表仍然未被填满,那么解码器可以选择基于模式列表中的已有的预测模式,进行对应的关联帧内预测模式的确定,然后再将这些关联帧内预测模式添加至模式列表中。
示例性的,在本申请中,解码器可以基于模式列表中的任一个预测模式,按照第二索引间隔,依次确定出与该任一个预测模式相关的关联帧内预测模式。其中,解码器可以根据第二索引间隔选择与该任一个预测模式的索引序号相差某个或某几个数的模式。如相差1个索引序号,或者,相差2个索引序号等。
需要说明的是,在本申请的实施例中,无论是将当前块的相邻块对应的帧内预测模式作为待添加模式,还是将权重矩阵导出模式对应的相关帧内预测模式作为待添加模式,或者是将预设预测模式作为待添加模式,再者是将关联帧内预测模式作为待添加模式,解码器都需要进行待添加模式是否满足预设添加条件的判定,具体地,如果待添加模式存在,且待添加模式与模式列表中的预测模式均不相同,那么便可以确定待添加模式满足预设添加条件,从而可以将该待添加模式添加至模式列表中。
相应地,如果待添加模式不存在,或者待添加模式与模式列表中的一个预测模式相同(重合),那么便可以确定待添加模式不满足预设添加条件,因此不能将该待添加模式添加至模式列表中,而是直接丢弃该待添加模式。
可以理解的是,在本申请中,由于当前块需要使用两个帧内预测模式进行帧内预测处理,因此可以在构建MPM时参考更多位置的帧内预测模式,或者参考更多相邻块的帧内预测模式。相应地,在本申请中,当前块所使用的模式列表的长度可以与其他帧内预测模式的模式列表长度不同,因为MPM二值化时的码字比其他模式要短,增加两个帧内预测模式分别是MPM的概率,有利于编解码效率提升。
需要说明的是,在本申请中,为了保证当前块的第一帧内预测模式和第二帧内预测模式不相同,解码器在构建模式列表的过程中,必须保证每一次添加至模式列表中的帧内预测模式与模式列表中已有的帧内预测模式不重复。
进一步地,在本申请的实施例中,解码器在利用权重矩阵导出模式确定模式列表时,可以先确定权重矩阵导出 模式对应的列表构建策略;然后可以按照列表构建策略,进一步确定模式列表。
也就是说,在本申请中,针对不同的权重矩阵,即针对不同的权重矩阵导出模式,解码器可以使用不同的构建策略来进行模式列表的构建。例如,基于构建策略,如果权重矩阵的分界线是0度或90度,即在水平或竖直的情况下,解码器可以选择在构建模式列表时考虑权重矩阵对应的帧内预测模式,而其他情况不考虑权重矩阵对应的帧内预测模式。
示例性的,在本申请中,假设权重矩阵的分界线是0度,如AWP的2,10等模式(从0开始计数),在构建模式列表时,可以将水平帧内预测模式24加入模式列表的候选中;假设权重矩阵的分界线是90度,如AWP的6,14等模式(从0开始计数),在构建模式列表时,可以将垂直帧内预测模式12加入模式列表的候选中。
可以理解的是,在本申请中,还可以在权重矩阵的分界线为接近0度的一个范围内,将水平帧内预测模式,或水平帧内预测模式及相近的帧内预测模式,加入模式列表的候选中;在权重矩阵的分界线为接近90度的一个范围内,将垂直帧内预测模式,或水平帧内预测模式及相近的帧内预测模式,加入模式列表候选中。
可以理解的是,在本申请中,当前块进行帧内预测时使用的两个帧内预测模式不相同,即第一帧内预测模式与第二帧内预测模式并不相同,那么第二帧内预测模式在解码时就可以排除第一帧内预测模式的可能。也就是说第二帧内预测模式的解码可以使用第一帧内预测模式的信息。
在本申请的实施例中,进一步地,解码器在进行模式列表的构建过程中,还可以设置候补帧内预测模式。其中,候补帧内预测模式与模式列表中的帧内预测模式均不相同。
具体地,在本申请中,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,第二帧内预测模式的确定可以是依赖于第一帧内预测模式的。其中,解码器在基于模式列表,确定第一帧内预测模式和第二帧内预测模式时,可以先将模式列表中的一个预测模式确定为第一帧内预测模式;然后再根据第一帧内预测模式和模式列表,确定第二帧内预测模式。
进一步地,在本申请的实施例中,解码器在将模式列表中的一个预测模式确定为第一帧内预测模式之后,可以从模式列表中删除一个预测模式,然后再将候补帧内预测模式添加至模式列表,从而可以获得更新后的模式列表;然后可以从所述更新后的模式列表中选择一个预测模式确定为所述第二帧内预测模式,其中,选择方式可以为任意的。
也就是说,在本申请的实施例中,如果第一帧内预测模式选择了一个MPM,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,那么第二帧内预测模式可选的MPM便少了一个,为了不改变第一帧内预测模式和第二帧内预测模式可选的模式列表的长度,解码器可以在确定第一帧内预测模式之后,再增添一个MPM,就将预先设置的候补帧内预测模式添加至模式列表中,从而可以在确定第二帧内预测模式时仍可以使用和第一帧内预测模式相同数量的MPM。
示例性的,在本申请中,假设第一帧内预测模式和第二帧内预测模式可选的MPM为N个,在构建模式列表时,可以先构建N个MPM和1个候补的MPM,对第一帧内预测模式,可选的MPM是上述N个MPM。如果第一帧内预测模式选中了其中一个MPM,那么对第二帧内预测模式,将第一个帧内预测模式选中的MPM剔除,然后将候补的MPM加入模式列表,这样第二个帧内预测模式仍可选N个MPM。
在本申请的实施例中,进一步地,解码器在进行模式列表的构建过程中,还可以设置模式列表的长度参数为(N+1);其中,N为正整数。
具体地,在本申请中,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,第二帧内预测模式的确定可以是依赖于第一帧内预测模式的。其中,解码器在基于模式列表,确定第一帧内预测模式和第二帧内预测模式时,如果使用模式列表确定第一帧内预测模式,那么可以将模式列表的前N个预测模式中的一个预测模式确定为第一帧内预测模式;然后再根据第一帧内预测模式和模式列表,确定第二帧内预测模式。
进一步地,在本申请的实施例中,如果使用模式列表确定第一帧内预测模式,那么解码器在将模式列表的前N个预测模式中的一个预测模式确定为第一帧内预测模式之后,再利用模式列表的、第一帧内预测模式以外的其他N个预测模式确定第二帧内预测模式。
需要说明的是,在本申请的实施例中,解码器在基于模式列表,确定第一帧内预测模式和第二帧内预测模式时,如果不使用模式列表确定第一帧内预测模式,那么解码器可以直接将模式列表的前N个预测模式中的一个预测模式确定为第二帧内预测模式。
也就是说,在本申请的实施例中,假设帧内预测模式可选的MPM为N个,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,可以在构建模式列表时,构建(N+1)个MPM,对第一帧内预测模式,它可选的MPM是模式列表中的前N个MPM。如果第一帧内预测模式没有选择MPM,那么第二帧内预测模式可选的MPM是模式列表中的前N个MPM。如果第一帧内预测模式选择了MPM,那么第二帧内预测模式可选的MPM是模式列表中的、第一帧内预测模式以外的N个MPM。
示例性的,在本申请中,假设N为4,那么解码器可以构建包括5个MPM的模式列表。MPM[x]表示第(x+1)个MPM,即MPM[0]表示第一个MPM,这是由于数组的计数是从0开始。第一帧内预测模式为mode0,第二帧内预测模式为mode1。假设第一帧内预测模式和第二帧内预测模式都是MPM,第一帧内预测模式在可选MPM中的索引号为idx0,第二帧内预测模式在可选MPM中的索引号为idx1,那么
mode0=MPM[idx0]
mode1=MPM[idx1<idx0?idx1:idx1+1]
也就是说,如果idx1<idx0,那么mode1=MPM[idx1];
否则,mode1=MPM[idx1+1]
可见,idx0和idx1的取值范围都是0~3,且mode1的取值不仅和idx1相关,也和idx0相关。
示例性的,在本申请的实施例中,在解码侧,解码器解析码流可以确定关于第一帧内预测模式的变量 intra_luma_pred_mode0,还可以确定出关于第二帧内预测模式的变量intra_luma_pred_mode1,接着,解码器可以根据intra_luma_pred_mode0确定第一帧内预测模式IntraLumaPredMode0,同时可以根据intra_luma_pred_mode1确定第二帧内预测模式IntraLumaPredMode1。
在本申请的实施例中,在构建MPM列表时,保证MPM[0]<MPM[1]。如果初始MPM[0]>MPM[1],可以将MPM[0]和MPM[1]对调。为了跟后面第2步和第5步对应。编码器也需要使用相同的MPM列表构建方法。
具体地,变量intra_luma_pred_mode0和intra_luma_pred_mode1与二元符号串的关系可以如下表9所示:
表9
其中,以第一个比特位表示是否是MPM,比如“1”表示是MPM,“0”表示不是MPM。如果第一帧内预测模式是MPM,假设模式列表中包括有4个MPM,那么可以使用2个比特位表示使用模式列表中的哪一个MPM,即“00,01,10,11”分别表示模式列表中的第一个,第二个,第三个,第四个。
具体地,解码器根据intra_luma_pred_mode0和intra_luma_pred_mode1,分别导出IntraLumaPredMode0和IntraLumaPredMode1的方法如下:
1、如果intra_luma_pred_mode0的值为0,则IntraLumaPredMode0等于MPM[0];否则,如果intra_luma_pred_mode0的值为1,则IntraLumaPredMode0等于MPM[1];如果intra_luma_pred_mode0的值为2,则IntraLumaPredMode0等于MPM[2];如果intra_luma_pred_mode0的值为3,则IntraLumaPredMode0等于MPM[3];
2、否则,令IntraPredMode0的值(intra_luma_pred_mode0+EipmPuFlag×32):
如果IntraPredMode0减4的值小于MPM[0],则IntraLumaPredMode0等于IntraPredMode0减2;
否则,如果IntraPredMode0减3的值大于MPM[0]并且小于MPM[1],则IntraLumaPredMode0等于IntraPredMode0减1;
否则,IntraLumaPredMode0等于IntraPredMode0。
3、如果intra_luma_pred_mode0的值小于4,且intra_luma_pred_mode1的值小于4,且intra_luma_pred_mode1的值大于等于intra_luma_pred_mode0的值,mpmPlus=1,否则mpmPlus=0;
4、如果intra_luma_pred_mode1的值为0,则IntraLumaPredMode1等于MPM[0+mpmPlus];否则如果intra_luma_pred_mode1的值为1,则IntraLumaPredMode1等于MPM[1+mpmPlus];如果intra_luma_pred_mode1的值为2,则IntraLumaPredMode1等于MPM[2+mpmPlus];如果intra_luma_pred_mode1的值为3,则IntraLumaPredMode1等于MPM[3+mpmPlus];
5、否则,令IntraPredMode1的值(intra_luma_pred_mode1+EipmPuFlag×32):
如果IntraPredMode1减4的值小于MPM[0],则IntraLumaPredMode1等于IntraPredMode1减2;
否则,如果IntraPredMode1减3的值大于MPM[0]并且小于MPM[1],则IntraLumaPredMode1等于IntraPredMode1减1;
否则,IntraLumaPredMode1等于IntraPredMode1。
其中,eipm_pu_flag二值变量为帧内亮度预测模式扩展标志,示例性的,值为‘1’表示应使用帧内角度预测扩展模式;值为‘0’表示不使用帧内亮度预测扩展模式。EipmPuFlag的值等于eipm_pu_flag的值。具体地,如果码流中不存在eipm_pu_flag,则EipmPuFlag的值等于0。
可选地,在本申请的实施例中,如果仅仅保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,而不对第一帧内预测模式和第二帧内预测模式可选择的MPM的数量进行限制,那么解码器也可以不进行后补帧内预测模式的设置,或者,不进行增加模式列表长度的处理,此时,解码器则需要改变第二帧内预测模式的解码方法。也就是说,如果第一帧内预测模式选择了模式列表中的一个MPM之后,第二帧内预测模式可选的MPM则少了一个,这时由于第二帧内预测模式可选的MPM少了,因此需要改变第二帧内预测模式的解码方法。
示例性的,在本申请中,以MPM个数N等于4为例,以第一个比特位表示是否是MPM,比如“1”表示是MPM,“0”表示不是MPM。如果第一帧内预测模式是MPM,因为有4个MPM,以2个比特位表示是哪一个MPM,即“00,01,10,11”分别表示第一个,第二个,第三个,第四个。而如果第一帧内预测模式和第二帧内预测模式都是MPM,那么第二帧内预测模式可用的MPM只有3种,那么可以用1到2个比特位表示是哪一个MPM,如“00,01,10”分别表示剩余的第一个,第二个,第三个。可见,由于排除了一种可能,可以改变反二值化的方法以节省开销。
示例性的,在本申请中,假设N为4,那么构建包括4个MPM的模式列表。MPM[x]表示第(x+1)个MPM,即MPM[0]表示第一个MPM,这是由于数组的计数是从0开始。第一帧内预测模式为mode0,第二帧内预测模式为mode1。假设第一帧内预测模式和第二帧内预测模式都是MPM,第一帧内预测模式在可选MPM中的索引号为idx0,第二帧内预测模式在可选MPM中的索引号为idx1,那么
mode0=MPM[idx0]
mode1=MPM[idx1<idx0?idx1:idx1+1]
也就是说,如果idx1<idx0,那么mode1=MPM[idx1];
否则,mode1=MPM[idx1+1];
可见,idx0的取值范围是0~3,idx1的取值范围是0~2,且mode1的取值不仅和idx1相关,也和idx0相关。idx0可以使用2比特反二值化,而idx1使用1到2比特反二值化。
示例性的,在本申请的实施例中,在解码侧,解码器解析码流可以确定关于第一帧内预测模式的变量intra_luma_pred_mode0,还可以确定出关于第二帧内预测模式的变量intra_luma_pred_mode1,接着,解码器可以根据intra_luma_pred_mode0确定第一帧内预测模式IntraLumaPredMode0,同时可以根据intra_luma_pred_mode1确定第二帧内预测模式IntraLumaPredMode1。
在本申请的实施例中,在构建MPM列表时,保证MPM[0]<MPM[1]。如果初始MPM[0]>MPM[1],可以将MPM[0]和MPM[1]对调。为了跟后面第2步和第5步对应。编码器也需要使用相同的MPM列表构建方法。
具体地,变量intra_luma_pred_mode0和intra_luma_pred_mode1与二元符号串的关系可以如下表10所示:
表10
如果intra_luma_pred_mode0的值小于4,intra_luma_pred_mode1与二元符号串的关系如下表11所示,否则,intra_luma_pred_mode1与二元符号串的关系与intra_luma_pred_mode0相同。
表11
具体地,解码器根据intra_luma_pred_mode0和intra_luma_pred_mode1,分别导出IntraLumaPredMode0和IntraLumaPredMode1的方法如下:
1、如果intra_luma_pred_mode0的值为0,则IntraLumaPredMode0等于MPM[0];否则,如果intra_luma_pred_mode0的值为1,则IntraLumaPredMode0等于MPM[1];如果intra_luma_pred_mode0的值为2,则IntraLumaPredMode0等于MPM[2];如果intra_luma_pred_mode0的值为3,则IntraLumaPredMode0等于MPM[3];
2、否则,令IntraPredMode0的值(intra_luma_pred_mode0+EipmPuFlag×32):
如果IntraPredMode0减4的值小于MPM[0],则IntraLumaPredMode0等于IntraPredMode0减2;
否则,如果IntraPredMode0减3的值大于MPM[0]并且小于MPM[1],则IntraLumaPredMode0等于IntraPredMode0减1;
否则,IntraLumaPredMode0等于IntraPredMode0。
3、如果intra_luma_pred_mode0的值小于4,且intra_luma_pred_mode1的值小于4,且intra_luma_pred_mode1的值大于等于intra_luma_pred_mode0的值,mpmPlus=1,否则mpmPlus=0;
4、如果intra_luma_pred_mode1的值为0,则IntraLumaPredMode1等于MPM[0+mpmPlus];否则如果intra_luma_pred_mode1的值为1,则IntraLumaPredMode1等于MPM[1+mpmPlus];如果intra_luma_pred_mode1的值为2,则IntraLumaPredMode1等于MPM[2+mpmPlus];如果intra_luma_pred_mode1的值为3,则IntraLumaPredMode1等于MPM[3+mpmPlus];
5、否则,令IntraPredMode1的值(intra_luma_pred_mode1+EipmPuFlag×32):
如果IntraPredMode1减4的值小于MPM[0],则IntraLumaPredMode1等于IntraPredMode1减2;
否则,如果IntraPredMode1减3的值大于MPM[0]并且小于MPM[1],则IntraLumaPredMode1等于IntraPredMode1 减1;
否则,IntraLumaPredMode1等于IntraPredMode1。
其中,eipm_pu_flag二值变量为帧内亮度预测模式扩展标志,示例性的,值为‘1’表示应使用帧内角度预测扩展模式;值为‘0’表示不使用帧内亮度预测扩展模式。EipmPuFlag的值等于eipm_pu_flag的值。具体地,如果码流中不存在eipm_pu_flag,则EipmPuFlag的值等于0。
在本申请的实施例中,进一步地,解码器在根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式时,还可以对当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式、预设预测模式依次进行排序处理,从而可以获得预测模式的候选列表;其中,预设预测模式包括DC模式、Bilinear模式、Planar模式等多种预测模式中的一种或多种;接着,解码器便可以根据预测模式的候选列表确定第一帧内预测模式和第二帧内预测模式。
具体地,在本申请的实施例中,在利用与权重矩阵的相关性进行第一帧内预测模式和第二帧内预测模式的确定时,还可以给权重矩阵导出模式对应的帧内预测模式或权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式在二值化时赋予比普通帧内预测模式短的码字,或者说是比帧内预测模式中可能的最长的码字短的码字,也就是说它们的码字不是最长的。因为可以认为权重矩阵导出模式对应的帧内预测模式或权重矩阵导出模式对应的帧内预测模式相关的几个帧内预测模式被选中的概率比其他模式更高。
也就是说,在本申请的实施例中,第一帧内预测模式和第二帧内预测模式也可以不使用MPM,可以针对第一帧内预测模式和第二帧内预测模式可能使用的全部帧内预测模式进行排序处理,生成预测模式的候选列表,预测模式的候选列表中排序靠前的帧内预测模式分配较短的码字,预测模式的候选列表中排序靠后的帧内预测模式分配较长的码字。其中,排序处理时可以参考当前块的相邻块的帧内预测模式,还可以参考当前块的权重矩阵导出模式。
进一步地,在本申请的实施例中,解码器在根据权重矩阵导出模式确定当前块的第一帧内预测模式和第二帧内预测模式时,还可以建立权重矩阵导出模式对应的第一帧内预测模式的参考集合,同时建立权重矩阵导出模式对应的第二帧内预测模式的参考集合;然后可以基于第一帧内预测模式的参考集合确定第一帧内预测模式;同时,基于第二帧内预测模式的参考集合确定第二帧内预测模式。
也就是说,在本申请的实施例中,针对当前块的权重矩阵导出模式,解码器可以对与该权重矩阵导出模式对应的、第一帧内预测模式的全部可能的帧内预测模式进行排序处理,生成第一帧内预测模式的参考集合,同时,还可以对与该权重矩阵导出模式对应的、第二帧内预测模式的全部可能的帧内预测模式进行排序处理,生成第二帧内预测模式的参考集合,从而可以从第一帧内预测模式的参考集合中确定第一帧内预测模式,还可以从第二帧内预测模式的参考集合中确定第一帧内预测模式。
进一步地,在本申请的实施例中,为了降低复杂度,可以通过聚类的方法缩小如上述表2的查找表,例如,可以将权重矩阵导出模式进行分类处理,确定出权重矩阵导出模式对应的类型,对于一种类型的权重矩阵导出模式,对应有相同的、第一帧内预测模式的所有可能的帧内预测模式的排序,也对应有相同的、第二帧内预测模式的所有可能的帧内预测模式的排序。
进一步地,在本申请的实施例中,为了降低复杂度,可以通过聚类的方法缩小如上述表2的查找表,例如,还可以将帧内预测模式进行分类处理,确定出帧内预测模式对应的类型,如DC、Planar、Bilinear等非角度模式为一种类型,角度模式可以按一些弧度的范围进行分类处理,比如每45度,即1/4圆,为一种类型,或者每22.5度,即1/8圆,为一种类型。具体地,也可以将角度模式划分为几个不均等的区间。
在本申请的实施例中,进一步地,由于本申请提出的帧内预测方法,需要使用两个不同的帧内预测模式,和一个权重矩阵确定当前块的预测值,因此,为了降低开销,在本申请中,可以通过对当前块的两个帧内预测模式进行限制来降低比特数,同时,也可以通过对当前块的权重矩阵导出模式进行限制来降低比特数。
示例性的,在本申请中,由于AVS3的前33个预测模式已经几乎覆盖了整个角度范围,因此在AVS3中只使用前33种预测模式便可以保证较好的性能,且在解码时只需要调整为不使用EIPM即可。进一步地,还可以对当前块可能使用的帧内预测模式的个数进行进一步的压缩和限制,最终实现只使用5个比特进行解码,从而进一步减少开销,进而达到更好的性能。
可选地,在本申请中,可以通过减少当前块可能使用的帧内预测模式个数来降低解码两个帧内预测模式的开销。例如,在AVS3中,如果使用66种帧内预测模式,最多需要7个比特来解码一个帧内预测模式,而如果只使用33种帧内预测模式,且不使用PCM模式,则最多只需要6个比特来解码一个帧内预测模式。
进一步的,在本申请中,考虑到帧内预测模式一般包括非角度预测模式和角度预测模式,非角度预测模式如DC、Planar、Bilinear等。在实现的过程中,每种非角度模式使用一套逻辑、全部角度模式使用一套逻辑或者角度模式使用几套逻辑,不同的逻辑之间可能有部分电路可以复用,也有部分电路不可以复用。因此,在对当前块可能使用的帧内预测模式的个数进行的限定,可以限定仅可以选择角度预测模式或仅可以选择非角度预测模式。
下面以对第二帧内预测模式的可能使用的帧内预测模式的限定为例进行说明。需要说明的是,相应的限定也可以应用于第一帧内预测模式的限定。
方式一:第二帧内预测模式仅可以使用非角度预测模式中的指定的一种帧内预测模式。
例如,第二帧内预测模式只可以使用DC模式,或者,第二帧内预测模式只可以使用Bilinear模式,等等。由于第二帧内预测模式只有一种可能的选择,那么编码和解码使用本发明的块时可以默认导出第二帧内预测模式对当前块进行预测,不需要进行第二帧内预测模式的确定过程,而编码时不需要将第二帧内预测模式写入码流,解码时不需要从码流中解析第二帧内预测模式是什么。
在本实施例中,以应用于亮度预测为例进行进一步的说明。如果当前块CU使用SAWP预测模式,则需要解析码流以获取对应的权重矩阵到处模式和第一帧内预测模式(其中,第二帧内预测模式只有一种可能的选择,则默认 到处第二帧内预测模式为预设的帧内预测模式)。
其对应的解码过程如表12所示:
表12
其中,空域角度加权预测模式索引sawp_idx,用于确定空域角度加权预测的权重矩阵,SawpIdx的值等于sawp_idx的值。如果码流中不存在sawp_idx,则SawpIdx的值等于0
空域角度加权预测第一亮度预测模式intra_luma_pred_mode0,用于确定空域角度加权预测的亮度块的第一帧内预测模式IntraLumaPredMode0;根据intra_luma_pred_mode0确定第一帧内预测模式IntraLumaPredMode0。
默认导出第二帧内预测模式IntraLumaPredMode1。
分别根据第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1确定帧内预测样本矩阵predMatrix0和predMatrix1。根据SawpIdx确定权重矩阵SawpWeightArrayY。
根据两个帧内预测样本矩阵predMatrix0和predMatrix1和权重矩阵SawpWeightArrayY确定新的预测样本矩阵predMatrixSawp。
具体方法如下:
空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix0[x][y]*AwpWeightArrayY[x][y]+predMatrix1[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
方式二:第二帧内预测模式只可以使用非角度模式,或非角度模式中的某几个。
例如,第二帧内预测模式只可以使用DC和Bilinear模式,由于第二帧内预测模式只有2种可能的选择,那么可以用1个比特intra_luma_pred_mode1来表示第二帧内预测模式是DC还是Bilinear模式。在编码时,对第二帧内预测模式只需要尝试DC和Bilinear两种可能,在确定第二帧内预测模式是哪一个帧内预测模式后,即可确定intra_luma_pred_mode1。在解码相应的块的过程中,对第二帧内预测模式只需要解析1比特的intra_luma_pred_mode1确定时DC或Bilinear。
在其他实施例中,第二帧内预测模式只可以使用非角度模式,即为第二帧内预测模式只有3种可能的选择,那么可以用2个比特intra_luma_pred_mode1来表示第二帧内预测模式为哪种帧内预测模式。
在本实施例中,以应用于亮度预测为例进行进一步的说明。如果当前块CU使用SAWP预测模式,则需要解析码流以获取对应的权重矩阵到处模式和2个帧内预测模式。具体解码过程如表13所示:
表13
空域角度加权预测模式索引sawp_idx,用于确定空域角度加权预测的权重矩阵,SawpIdx的值等于sawp_idx的值。如果位流中不存在sawp_idx,SawpIdx的值等于0。
空域角度加权预测第一亮度预测模式intra_luma_pred_mode0,用于确定空域角度加权预测的亮度块的第一帧内预测模式IntraLumaPredMode0;空域角度加权预测第二亮度预测模式intra_luma_pred_mode1,用于确定空域角度加权预测的亮度块的第二帧内预测模式IntraLumaPredMode1。
如果intra_luma_pred_mode1的值为0,第二帧内预测模式IntraLumaPredMode1为DC模式“Intra_Luma_DC”,如果intra_luma_pred_mode1的值为1,第二帧内预测模式IntraLumaPredMode1为Bilinear模式“Intra_Luma_Bilinear”。
分别根据intra_luma_pred_mode0和intra_luma_pred_mode1确定第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1。分别根据第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1确定帧内预测样本矩阵predMatrix0和predMatrix1。根据SawpIdx确定权重矩阵SawpWeightArrayY。
根据两个帧内预测样本矩阵predMatrix0和predMatrix1和权重矩阵SawpWeightArrayY确定新的预测样本矩阵predMatrixSawp。具体方法如下:
空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix0[x][y] *AwpWeightArrayY[x][y]+predMatrix1[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
方式三:第二帧内预测模式只可以使用全部角度预测模式或部分角度预测模式。
因为第二帧内预测模式可以选择的帧内预测模式减少,在码流中表征第二帧内预测模式的intra_luma_pred_mode1的比特数也会有所减少。以在AVS3中第二帧内预测模式只可以使用全部角度模式为例。AVS3中有3种非角度模式,即DC,Plane,Bilinear。那么也就是说在AVS3中,第二帧内预测模式只可以使用0,1,2以外的其他模式。
在一个具体的实施例中,第二帧内预测模式可以使用除非角度预测模式之外所有其他帧内预测模式(即为可以使用所有角度预测模式)。
在一个具体的实施例中,第二帧内预测模式可以使用所有角度预测模式中的部分。其中,部分角度预测模式可以是前33种角度预测模式,或者,部分角度预测模式可以是按照预测的间隔从33种角度预测模式或65种角度预测模式中选择的部分角度预测模式,例如,该预设的间隔可以为1、2或者其他正整数。
如表3所述,给出了亮度预测块的帧内预测模式的一个示例,其中,模式号IntraLumaPredMode对应了相应的帧内预测模式。0代表DC模式,1代表Plane模式,2代表双线性Bilinear模式,12代表垂直模式,24代表水平模式,33代表PCM模式,其他的为除水平垂直之外的角度模式,具体模式号代表的角度可以参考图7。
以第二帧内预测模式只可以使用0,1,2以外的其他模式为例进行说明,给出第二帧内预测模式可选的MPM模式列表的构建过程。
以使用每个帧内预测模式可使用4个MPM为例。那么可以构建一个长度为8,其中非角度预测模式的个数应小于等于3,因为AVS3中只有3个非角度预测模式。其中前4个MPM供第一帧内预测模式选择。第二帧内预测模式可选的是MPM列表中非第一帧内预测模式且非角度模式的前4个MPM。
以图16为例进行说明,假设构建的MPM模式列表如图所示,第一帧内预测模式可以从前4个MPM中选择一个,假设第一帧内预测模式使用12,也就是MPM列表中的第一个MPM。对第二帧内预测模式,它可选的MPM从前往后查,第一个MPM(12)已经被第一帧内预测模式使用,因而不可用。第二个MPM(24)没有被使用而且是可用的角度模式因而可用,第三(0)、四(2)、五(1)对应的MPM虽然没有被使用但是是非角度模式,因而不可用。第六(6)、七(8)、八(10)个MPM被使用而且是可用的角度模式因而可用,则24,6,8,10分别对应第二帧内预测模式MPM索引为0,1,2,3的模式。
以图14所示的块为例,给出构建MPM列表的示例。
设置MPM模式列表的第一部分列表长度为8。
当前块为E,依次取F,G,C,A,B,D使用的帧内预测模式填入MPM模式列表。直至MPM模式填满。如果F,G,C,A,B,D中某个位置不可用或没有使用帧内预测模式则跳过该位置。其中,在本申请中,除了可以使用图14所示的块对应的帧内预测模式之外,也可以使用其他块对应的帧内预测模式,例如,使用当前块的右侧、或下侧的块对应的帧内预测模式。
进一步的,如果MPM模式列表没有填满,则将权重矩阵导出模式对应的帧内预测模式填入MPM模式列表,直至MPM模式列表填满。
如果MPM模式列表没有填满,则将DC模式、Bilinear模式依次填入MPM模式列表,直至MPM模式列表填满。
如果MPM模式列表没有填满,从MPM模式列表中的第一个帧内预测模式开始,将与该帧内预测模式相差1,-1,2,-2,3,-3的帧内预测模式填入MPM模式列表,直至MPM模式列表填满。如果相差1,-1,2,-2,3,-3的帧内预测模式中的某一个帧内预测模式非法,小于0或大于最大值,或者为PCM,则丢弃。
如果MPM模式列表第一个帧内预测模式的模式号大于第二个帧内预测模式的模式号,将这两个MPM进行交换。
填入MPM模式列表的操作中,每一个待填入的帧内预测模式如果与MPM模式列表中已有的帧内预测模式都不相同才可以填入MPM模式列表,否则丢弃。
在本实施例中,以应用于亮度预测为例进行进一步的说明。如果当前块CU使用SAWP预测模式,则需要解析码流以获取对应的权重矩阵到处模式和2个帧内预测模式。具体解码过程如表14所示:
表14
空域角度加权预测模式索引sawp_idx,用于确定空域角度加权预测的权重矩阵,SawpIdx的值等于sawp_idx的值。如果位流中不存在sawp_idx,SawpIdx的值等于0。
空域角度加权预测第一亮度预测模式intra_luma_pred_mode0,用于确定空域角度加权预测的亮度块的第一帧内预测模式IntraLumaPredMode0。
空域角度加权预测第二亮度预测模式intra_luma_pred_mode1,用于确定空域角度加权预测的亮度块的第二帧内预测模式IntraLumaPredMode1。
分别根据intra_luma_pred_mode0和intra_luma_pred_mode1确定第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1,该过程中使用如上所述的方法。分别根据第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1确定帧内预测样本矩阵predMatrix0和predMatrix1。根据SawpIdx确定权重矩阵SawpWeightArrayY。
根据两个帧内预测样本矩阵predMatrix0和predMatrix1和权重矩阵SawpWeightArrayY确定新的预测样本矩阵predMatrixSawp。
具体方法如下:
空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix0[x][y]*AwpWeightArrayY[x][y]+predMatrix1[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
在上述所有的对于第二帧内预测模式可以选择的帧内预测模式进行限制的过程中,如果导出或确定的第二帧内预测模式为非法的模式,则需要按照预设的对应关系进行修改,将第二帧内预测模式修改为合法的模式。具体的,在限定了第二帧内预测模式为角度预测模式的情况下,如果得到的第二帧内预测模式为0,1,2模式,则需要根据预设的对应关系对应到一种或几种可用的角度模式,以避免出现非法的模式(即限定不可用的非角度预测模式)。例如,第二帧内预测模式解码得到0模式,则按照预设的对应关系将第二帧内预测模式设置为12模式即垂直模式,如果第二帧内预测模式解码得到1模式,则按照预设的对应关系将第二帧内预测模式设置为18模式,即向右下45度的模式;如果第二帧内预测模式解码得到2模式,则按照预设的对应关系将第二帧内预测模式设置为24模式即水平模式。
需要说明的是,在本申请的实施例中,在对帧内预测模式的个数进行限制时,既可以直接对全部预测块的帧内预测模式的个数执行限制处理,还可以参考当前块的尺寸参数,对不同大小的当前块使用不同的限制方式。
示例性的,在本申请中,对于尺寸参数较大的预测块,如64×64或32×32大小的预测块,可以使用全部帧内预测模式进行当前块的两个帧内预测模式的确定,而对于尺寸参数较小的预测块,如8x8大小的预测块,可以使用部分帧内预测模式进行当前块的两个帧内预测模式的确定,即对当前块可能使用的帧内预测模式的数量进行限制,这是因为对于尺寸参数较小的预测块来说,细微的角度差异所造成的影响的并不明显。
可以理解的是,在本申请中,可以先设置一个尺寸阈值,如第二尺寸阈值,若当前块的尺寸参数小于第二尺寸阈值,那么可以认为细微的角度差异不会造成较大的影响,因此可以限制当前块能够选择的帧内预测模式的个数。具体地,可以通过对在当前块的两个帧内预测模式的索引序号进行限制,来实现对帧内预测模式的个数的限制。
示例性的,在本申请中,如果当前块的尺寸参数小于第二尺寸阈值,那么可以根据第二模式索引范围确定第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。具体地,第二模式索引范围可以包括第二下限阈值和第二上限阈值,可以先确定所述第一帧内预测模式的第一的索引序号,同时可以确定所述第二帧内预测模式的第二的索引序号;然后设置所述第一的索引序号和所述第二索引序号均大于所述第二下限阈值;设置所述第一的索引序号和所述第二索引序号均小于所述第二上限阈值。
也就是说,在本申请中,可以通过第二模式索引范围限制当前块的第一帧内预测模式的索引序号和第二帧内预测模式的索引序号,从而完成对帧内预测模式数量的限制。
例如,在AVS3中,第二模式索引范围可以为0-32,即可以通过第二模式索引范围将第一帧内预测模式的索引序号和第二帧内预测模式的索引序号限制在0-32之内,因此当前块可以使用前33种预测模式来进行第一帧内预测模式和第二帧内预测模式的确定。
可以理解的是,在本申请中,第一尺寸阈值与第二尺寸阈值可以相同也可以不同;第一模式索引范围与第二模式索引范围可以相同也可以不同。
进一步的,如果对第一帧内预测模式和第二帧内预测模式可以选择的帧内预测模式均不作限定的情况下,确定的2个帧内预测模式的预测能力是对应的,不需要对对应的权重矩阵进行处理。但是,在对于可以选择的帧内预测模式做了限定之后,2个帧内预测模式的预测能力出现了变化,相应的权重矩阵也需要进行调整。
具体的,在图2所示的AWP权重矩阵中,编号为0的右下角白色区域完全来自于第一帧内预测模式,左上角黑色部分完全来自于第二帧内预测模式,而灰色部分为两种帧内预测模式加权得到的。如果想要左上角使用DC模式预测,右下角使用水平模式预测,那么可以将第一帧内预测模式设为水平模式,第二帧内预测模式设为DC模式。相反,如果想要左上角使用水平模式预测,右下角使用DC模式预测,那么可以将第一帧内预测模式设为DC模式,第二帧内预测模式设为水平模式。但是如果其中某一个帧内预测模式做了限制,如第二帧内预测模式只可以使用角度模式,那么按现在的做法,对AWP权重矩阵0,就不能实现左上角使用DC模式预测,因为第二帧内预测模式不能使用DC模式。如果其中某一个帧内预测模式做了限制,如第二帧内预测模式只可以使用DC模式,那么按现在的做法,上述AWP权重矩阵中黑色的部分只能由DC模式预测得到。也就是说,因为对第二帧内预测模式的限制会明显影响到预测的效果。
因此,在本申请中,在某些情况下,需要对权重矩阵进行调整,即为将第一帧内预测模式对应的权重矩阵与第二帧内预测模式对应的权重矩阵进行对调。
方式一:增加一个权重矩阵对调标志位,这个标志位指示是否将两个预测块的权重矩阵进行对换,在解码的过程中通过解析码流获取该标志位以确定是否需要进行权重矩阵的对调。
在本实施例中,以应用于亮度预测为例进行进一步的说明。如果当前块CU使用SAWP预测模式,则需要解析码流以获取对应的权重矩阵到处模式和2个帧内预测模式。
具体解码过程如表15所示:
表15
空域角度加权预测模式索引sawp_idx,用于确定空域角度加权预测的权重矩阵,SawpIdx的值等于sawp_idx的值。如果位流中不存在sawp_idx,SawpIdx的值等于0。
空域角度加权预测第一亮度预测模式intra_luma_pred_mode0,用于确定空域角度加权预测的亮度块的第一帧内预测模式IntraLumaPredMode0。
空域角度加权预测第二亮度预测模式intra_luma_pred_mode1,用于确定空域角度加权预测的亮度块的第二帧内预测模式IntraLumaPredMode1。
空域角度加权预测转换标志switch_flag,SwitchFlag的值等于switch_flag的值。
分别根据intra_luma_pred_mode0和intra_luma_pred_mode1确定第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1。分别根据第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1确定帧内预测样本矩阵predMatrix0和predMatrix1。根据SawpIdx确定权重矩阵SawpWeightArrayY。
根据两个帧内预测样本矩阵predMatrix0和predMatrix1和权重矩阵SawpWeightArrayY确定新的预测样本矩阵predMatrixSawp。具体方法如下:
如果SwitchFlag的值为0,
空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix0[x][y]*AwpWeightArrayY[x][y]+predMatrix1[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
否则,即SwitchFlag的值为1,
空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix1[x][y]*AwpWeightArrayY[x][y]+predMatrix0[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
方式二:根据权重矩阵来确定两个预测块的权重是否进行对换。
具体的,在不对第一帧内预测模式可以选择的帧内预测模式进行限定的情况下,第一帧内预测模式可以选择的帧内预测模式较多,预测能力强,第二帧内预测模式因为对可以选择的帧内预测模式进行了限定,其可用的选择少,预测能力弱,那么可以根据权重矩阵来自动地分配权重。分配的结果使得最终的预测块中,由第一帧内预测模式影响的点较多,由第二帧内预测模式影响的点较少。
在本实施例中,以应用于亮度预测为例进行进一步的说明。如果当前块CU使用SAWP预测模式,则需要解析码流以获取对应的权重矩阵到处模式和2个帧内预测模式。
具体解码过程如表16所示:
表16
空域角度加权预测模式索引sawp_idx,用于确定空域角度加权预测的权重矩阵,SawpIdx的值等于sawp_idx的值。如果位流中不存在sawp_idx,SawpIdx的值等于0。
空域角度加权预测第一亮度预测模式intra_luma_pred_mode0,用于确定空域角度加权预测的亮度块的第一帧内预测模式IntraLumaPredMode0。
空域角度加权预测第二亮度预测模式intra_luma_pred_mode1,用于确定空域角度加权预测的亮度块的第二帧内预测模式IntraLumaPredMode1。
分别根据intra_luma_pred_mode0和intra_luma_pred_mode1确定第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1。分别根据第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1确定帧内预测样本矩阵predMatrix0和predMatrix1。根据SawpIdx确定权重矩阵SawpWeightArrayY。
根据两个帧内预测样本矩阵predMatrix0和predMatrix1和权重矩阵SawpWeightArrayY确定新的预测样本矩阵 predMatrixSawp。具体方法如下:
如果SawpIdx属于第一集合,
空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix0[x][y]*AwpWeightArrayY[x][y]+predMatrix1[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
否则,即SawpIdx属于第二集合,
空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix1[x][y]*AwpWeightArrayY[x][y]+predMatrix0[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
其中第一集合包括0~27。第二集合包括28~55。
方式三:根据第一帧内预测模式和/或第二帧内预测模式的模式号来确定两个预测块的权重是否进行对调。
因为相邻的角度预测模式在逻辑上使用的预测角度会有一定的差别,但是由于插值滤波以及块大小的影响,特别是在比较小的块中,相邻的角度预测模式做出的预测块差别不是特别大。因此,把两个预测块的权重是否进行对调的逻辑设置在帧内预测模式的模式号中,比如说某一个帧内预测模式(第一帧内预测模式或第二帧内预测模式)使用偶数号的角度预测模式表示两个预测块的权重不进行对调,该帧内预测模式使用奇数号的角度预测模式表示两个预测块的权重进行对调。
示例1:
若对第二帧内预测模式只能使用某个或某几个非角度模式的情况,这里以第二帧内预测模式只能使用DC模式为例,可以使用第一帧内预测模式的模式号的奇偶性来判断两个预测块的权重是否进行对调。如果第一帧内预测模式的模式号为偶数,则两个预测块的权重不进行对调,否则(第一帧内预测模式的模式号为奇数)两个预测块的权重进行对调。
在本实施例中,以应用于亮度预测为例进行进一步的说明。如果当前块CU使用SAWP预测模式,则需要解析码流以获取对应的权重矩阵到处模式和第一帧内预测模式。进一步的,第二帧内预测模式只有一种可能选择的帧内预测模式,则可以默认到处第二帧内预测模式为预设的帧内预测模式。
具体解码过程如表17所示:
表17
空域角度加权预测模式索引sawp_idx,用于确定空域角度加权预测的权重矩阵,SawpIdx的值等于sawp_idx的值。如果位流中不存在sawp_idx,SawpIdx的值等于0。
空域角度加权预测第一亮度预测模式intra_luma_pred_mode0,用于确定空域角度加权预测的亮度块的第一帧内预测模式IntraLumaPredMode0。
根据intra_luma_pred_mode0确定第一帧内预测模式IntraLumaPredMode0。默认导出第二帧内预测模式IntraLumaPredMode1。分别根据第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1确定帧内预测样本矩阵predMatrix0和predMatrix1。根据SawpIdx确定权重矩阵SawpWeightArrayY。
根据两个帧内预测样本矩阵predMatrix0和predMatrix1和权重矩阵SawpWeightArrayY确定新的预测样本矩阵predMatrixSawp。具体方法如下:
如果IntraLumaPredMode0为偶数,空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix0[x][y]*AwpWeightArrayY[x][y]+predMatrix1[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
否则,即IntraLumaPredMode0为奇数,空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix1[x][y]*AwpWeightArrayY[x][y]+predMatrix0[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
示例2:
若对第二帧内预测模式只能使用非角度模式的情况,可以使用第一帧内预测模式或第二帧内预测模式的模式号的奇偶性来判断两个预测块的权重矩阵是否进行对调。例如,若第二帧内预测模式的模式号为偶数,则两个预测块的权重矩阵不进行对调,否则(第二帧内预测模式的模式号为奇数)两个预测块的权重矩阵进行对调。
在本实施例中,以应用于亮度预测为例进行进一步的说明。如果当前块CU使用SAWP预测模式,则需要解析码流以获取对应的权重矩阵到处模式和2个帧内预测模式。
具体解码过程如表28所示:
表18
空域角度加权预测模式索引sawp_idx,用于确定空域角度加权预测的权重矩阵,SawpIdx的值等于sawp_idx的值。如果位流中不存在sawp_idx,SawpIdx的值等于0。
空域角度加权预测第一亮度预测模式intra_luma_pred_mode0,用于确定空域角度加权预测的亮度块的第一帧内预测模式IntraLumaPredMode0。
空域角度加权预测第二亮度预测模式intra_luma_pred_mode1,用于确定空域角度加权预测的亮度块的第二帧内预测模式IntraLumaPredMode1。
分别根据intra_luma_pred_mode0和intra_luma_pred_mode1确定第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1。分别根据第一帧内预测模式IntraLumaPredMode0和第二帧内预测模式IntraLumaPredMode1确定帧内预测样本矩阵predMatrix0和predMatrix1。根据SawpIdx确定权重矩阵SawpWeightArrayY。
根据两个帧内预测样本矩阵predMatrix0和predMatrix1和权重矩阵SawpWeightArrayY确定新的预测样本矩阵predMatrixSawp。具体方法如下:
如果IntraLumaPredMode1为偶数,空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix0[x][y]*AwpWeightArrayY[x][y]+predMatrix1[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
否则,即IntraLumaPredMode1为奇数,空域角度加权预测模式的预测样本矩阵predMatrixSawp中的元素predMatrixSawp[x][y]的值是((predMatrix1[x][y]*AwpWeightArrayY[x][y]+predMatrix0[x][y]*(8-AwpWeightArrayY[x][y])+4)>>3)。
可选地,在本申请中,可以通过减少当前块可能使用的权重矩阵导出模式个数来降低权重矩阵导出模式的开销。例如,在AVS3中,如果使用56种权重矩阵导出模式,最多需要6个比特来解码一个权重矩阵导出模式,而如果只使用32种权重矩阵导出模式,则最多只需要5个比特来解码一个权重矩阵导出模式。进一步地,还可以对当前块可能使用的权重矩阵导出模式的个数进行进一步的压缩和限制(以用更少的标志位来标识选择哪一个权重矩阵或标识权重矩阵到处模式),如只使用16种权重矩阵导出模式,最终实现只使用4个比特进行解码,从而进一步减少开销,进而达到更好的性能。
需要说明的是,在本申请的实施例中,在对权重矩阵导出模式的个数进行限制时,既可以直接对全部预测块的权重矩阵导出模式的个数执行限制处理,还可以参考当前块的尺寸参数,对不同大小的当前块使用不同的限制方式。
示例性的,在本申请中,对于尺寸参数较大的预测块,如64×64或32×32大小的预测块,可以使用全部权重矩阵导出模式进行当前块的权重矩阵导出模式的确定,而对于尺寸参数较小的预测块,如8x8大小的预测块,可以使用部分权重矩阵导出模式进行当前块的权重矩阵导出模式的确定,即对当前块可能使用的权重矩阵导出模式的数量进行限制,这是因为对于尺寸参数较小的预测块来说,细微的角度差异所造成的影响的并不明显。
可以理解的是,在本申请中,可以先设置一个尺寸阈值,如第一尺寸阈值,若当前块的尺寸参数小于第一尺寸阈值,那么可以认为细微的角度差异不会造成较大的影响,因此可以限制当前块能够选择的权重矩阵导出模式的个数。具体地,可以通过对在当前块的权重矩阵导出模式的索引序号进行限制,来实现对权重矩阵导出模式的个数的限制。
示例性的,在本申请中,如果当前块的尺寸参数小于第一尺寸阈值,那么可以根据第一模式索引范围确定权重矩阵导出模式;其中,第一模式索引范围用于对权重矩阵导出模式的索引序号进行限制。具体地,第一模式索引范围可以包括第一下限阈值和第一上限阈值,可以将权重矩阵到处模式的索引序号分别与第一下限阈值和第一上限阈值进行比较,如果权重矩阵导出模式的索引序号小于第一下限阈值,那么可以将权重矩阵导出模式的索引序号设置为第一下限阈值;如果权重矩阵导出模式的索引序号大于第一上限阈值,那么可以将权重矩阵导出模式的索引序号设置为第一上限阈值。
也就是说,在本申请中,可以通过第一模式索引范围限制当前块的权重矩阵导出模式的索引序号,从而完成对权重矩阵导出模式数量的限制。
例如,在AVS3中,第一模式索引范围可以为0-32,即可以通过第一模式索引范围将权重矩阵导出模式的索引序号限制在0-32之内,因此当前块可以使用前33种权重矩阵导出模式来进行当前块的权重矩阵导出模式的确定。
示例1:
AWP可使用的权重矩阵包括了编号0-55对应的权重矩阵,具体如图2所示。在本申请中,在SAWP中只是用32种权重矩阵,即SAWP可使用的权重矩阵对应AWP的权重矩阵的0~7,16~23,32~39,48~55个权重矩阵(如图2中对应的编号对应的权重矩阵)。即SAWP的权重矩阵0~7对应AWP的权重矩阵0~7,SAWP的权重矩阵8~15对应AWP的权重矩阵16~23,SAWP的权重矩阵16~23对应AWP的权重矩阵32~39,SAWP的权重矩阵24~31对应AWP的权重矩阵48~55,假设这32种权重矩阵是等概率的,需要5个比特的标志位sawp_idx。
在该示例中给出了角度加权预测模式AWP和空域角度加权预测模式SAWP的权重矩阵的导出相关的说明。
记M和N是当前预测单元PU的宽度和高度,权重矩阵的导出方法如下:
(1)导出stepIdx、angleIdx和subAngleIdx:
如果要导出的是角度加权预测模式AWP的权重矩阵,输入为AwpIdx,即为:
stepIdx=(AwpIdx>>3)–3,
modAngNum=AwpIdx%8;
否则如果要导出的是空域角度加权预测模式SAWP的权重矩阵,输入为SawpIdx,即为:
stepIdx=((SawpIdx>>3)<<1)–3,
modAngNum=SawpIdx%8。
进一步的,subAngleIdx的导出过程如下表19。
表19
(2)导出参考权重列表ReferenceWeight[x]的过程如下表20。
表20
(3)导出当前像素位置的亮度权重的过程如下表21。
表21
(4)导出当前像素位置的色度权重的过程如表22。
表22
如果要导出的是角度加权预测模式AWP的权重矩阵,将WeightArrayY赋值给AwpWeightArrayY,将WeightArrayUV赋值给AwpWeightArrayUV。
如果要导出的是空域角度加权预测模式SAWP的权重矩阵,将WeightArrayY赋值给SawpWeightArrayY,将WeightArrayUV赋值给SawpWeightArrayUV。
示例2:在本示例中,SAWP中只是用24种权重矩阵,SAWP可使用的权重矩阵对应如图2所示的AWP的权重矩阵的8~15,24~31,40~47个权重矩阵。即SAWP的权重矩阵0~7对应AWP的权重矩阵8~15,SAWP的权重矩阵8~15对应AWP的权重矩阵24~31,SAWP的权重矩阵16~23对应AWP的权重矩阵40~47,需要4~5个比特的标志位sawp_idx。
在该示例中给出了角度加权预测模式AWP和空域角度加权预测模式SAWP的权重矩阵的导出相关的说明。
记M和N是当前预测单元PU的宽度和高度,权重矩阵的导出方法如下:
(1)导出stepIdx、angleIdx和subAngleIdx:
如果要导出的是角度加权预测模式AWP的权重阵列,输入为AwpIdx,即为:
stepIdx=(AwpIdx>>3)–3,
modAngNum=AwpIdx%8。
否则如果要导出的是空域角度加权预测模式SAWP的权重阵列,输入为SawpIdx,即为:
stepIdx=((SawpIdx>>3)<<1)–2,
modAngNum=SawpIdx%8。
subAngleIdx的导出过程如表23。
表23
(2)导出参考权重列表ReferenceWeight[x]过程如表24。
表24
(3)导出当前像素位置的亮度权重的过程如表25。
表25
(4)导出当前像素位置的色度权重的过程如表26。
表26
如果要导出的是角度加权预测模式AWP的权重阵列,将WeightArrayY赋值给AwpWeightArrayY,将WeightArrayUV赋值给AwpWeightArrayUV。
如果要导出的是空域角度加权预测模式SAWP的权重阵列,将WeightArrayY赋值给SawpWeightArrayY,将WeightArrayUV赋值给SawpWeightArrayUV。
进一步的,由于上述SAWP的24种权重矩阵中的10号和14号,分别对应AWP的56种权重矩阵中的26和30号,与二叉树划分BT的水平和垂直方式的划分相似,实际选中的概率较低,可以将较长的二元符号串分配给它们,而将较短的二元符号串分配给选中的概率较高的权重矩阵。
步骤604、基于第一帧内预测模式、第二帧内预测模式以及权重矩阵,确定当前块的预测值。
在本申请的实施例中,解码器在根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式,同时根据所述权重矩阵导出模式确定所述当前块的权重矩阵之后,便可以基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,进一步地确定所述当前块的预测值。
可以理解的是,在本申请的实施例中,解码器在基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值时,可以先根据所述第一帧内预测模式确定所述当前块的第一预测值;同时可以根据所述第二帧内预测模式确定所述当前块的第二预测值;然后可以利用所述权重矩阵对所述第一预测值和所述第二预测值进行加权平均计算,最终便可以获得所述当前块的预测值。
在本申请的实施例中,进一步地,如果帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值,那么解码器进行解码处理的方法还可以包括以下步骤:
步骤701、根据模式列表确定当前块的第一初始模式和第二初始模式。
在本申请的实施例中,在确定当前块的帧内预测模式参数之后,如果帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值,那么解码器可以进一步确定当前块使用的模式列表(MPM列表)。然后可以根据所述模式列表确定所述当前块的第一初始模式和第二初始模式。
需要说明的是,在本申请中,模式列表用于对当前块使用的帧内预测模式进行确定。具体地,解码器可以利用使用概率较大的几个帧内预测模式构建成模式列表,从而可以基于模式列表确定当前块的两个帧内预测模式。
可以理解的时,在本申请的实施例中,解码器在进行模式列表的确定时,可以采用常见的构建最可能模式列表MPM的方式,如使用相邻块的预测模式构建MPM等,也可以使用本申请提出的帧内预测方法所涉及的模式列表的构建方法,即利用当前块的权重矩阵导出模式构建模式列表。
也就是说,在本申请中,模式列表的构建方法可以选择使用上述实施例中的步骤102所提出的模式列表构建方法,也可以是其他的MPM构建方法,本申请不做具体限定。
进一步地,在本申请的实施例中,解码器在确定当前块使用的模式列表之后,可以先根据所述模式列表确定所述当前块的第一初始模式和第二初始模式。
示例性的,在本申请中,构建包括有N个MPM的模式列表,如果N为2 n,那么可以使用n个比特(mpm_idx)来表示选择模式列表中的哪一个MPM,即确定第一初始模式和第二初始模式,然后再用一个比特来表示是否需要偏移(offset_needed)。例如,构建4个MPM的模式列表,那么在模式列表中选择帧内预测模式时,需要使用2个比特(mpm_idx)来表示选择模式列表中的哪一个MPM作为初始模式,如表3所示的mpm_idx的取值与二元符号串的对应关系可以用于进行预测模式的确定。
步骤702、确定偏移模式参数,当所述偏移模式参数指示进行偏移处理时,确定所述当前块的偏移参数。
在本申请的实施例中,解码器还可以确定偏移模式参数,其中,偏移模式参数用于确定是否需要进行偏移。具体地,当偏移模式参数指示进行偏移处理时,解码器可以进一步确定当前块的偏移参数。
需要说明的是,在本申请的实施例中,可以使用一个比特来表示是否需要偏移(offset_needed),也就是说,可以通过解析码流确定偏移模式参数,进一步确定当前块的预测模式(第一初始模式或第二初始模式)是否需要偏移。
进一步地,在本申请的实施例中,如果偏移模式参数指示进行偏移处理,那么解码器可以进一步解析码流确定当前块的偏移参数。其中,偏移参数可以包括偏移方式和偏移量,即通过偏移参数的确定,解码器可以确定如果对当前块的第一初始模式或第二初始模式进行偏移处理。
需要说明的是,在本申请的实施例中,解码器也可以解析码流确定偏移参数中的偏移方式和偏移量。例如,一个比特(sign)表示偏移方式是“+”还是“-”;一些比特(offset)来表示偏移量。
可选地,在本申请中,也可以预先对偏移方式和偏移量进行设置,例如,可以默认只能偏移某一个量,如1或2或4等。
步骤703、根据第一初始模式和偏移参数,确定当前块的第一帧内预测模式;根据第二初始模式和偏移参数,确定当前块的第二帧内预测模式。
在本申请的实施例中,解码器在确定所述当前块的偏移参数之后,便可以根据所述第一初始模式和所述偏移参数,确定所述当前块的第一帧内预测模式;同时可以根据所述第二初始模式和所述偏移参数,确定所述当前块的第二帧内预测模式。
进一步地,在本申请的实施例中,解码器在根据所述模式列表和所述偏移参数,确定当前块的第一帧内预测模式和第二帧内预测模式时,可以按照所述偏移方式和所述偏移量对所述第一初始模式进行偏移处理,从而确定所述第一帧内预测模式;同时还可以按照所述偏移方式和所述偏移量对所述第二初始模式进行偏移处理,从而确定所述第二帧内预测模式。
也就是说,在本申请的实施例中,解码器可以先解析码流确定使用模式列表中的哪一个预测模式,即先从模式列表中确定出初始模式,然后再按照偏移参数对初始模式进行偏移处理,最终便可以确定出当前块使用的帧内预测模式。
可以理解的是,在本申请的实施例中,可以对第一初始模式和第二初始模式使用相同的偏移参数,即基于第一初始模式和第二初始模式,按照相同的偏移方式和偏移量来进行偏移处理。相应地,也可以对第一初始模式和第二初始模式使用不同的偏移参数,即基于第一初始模式使用一种偏移方式进行偏移处理,同时基于第二初始模式使用另一种偏移方式进行偏移处理,其中,这两种偏移方式所对应的偏移方式和偏移量可以不完全相同。
也就是说,在本申请中,第一初始模式进行偏移处理时所对应的偏移方式和偏移量,与第二初始模式进行偏移处理时所对应的偏移方式和偏移量,可以相同,也可以不同。
可选地,在本申请中,第一初始模式对应的偏移模式参数和第二初始模式对应的偏移模式参数也可以不同,即通过对第一初始模式和第二初始模式分别设置偏移模式参数,实现以下几种不同的处理方式:对第一初始模式和第二初始模式均进行偏移处理;或者,对第一初始模式和第二初始模式均不进行偏移处理;或者,对第一初始模式进行偏移处理,同时对第二初始模式不进行偏移处理;或者,对第一初始模式不进行偏移处理,同时对第二初始模式进行偏移处理。
进一步地,在本申请的实施例中,如果偏移模式参数指示不进行偏移处理,那么解码器可以直接根据所述模式列表确定所述第一帧内预测模式和所述第二帧内预测模式。
步骤704、基于第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
在本申请的实施例中,解码器在根据模式列表和偏移参数确定当前块的第一帧内预测模式和第二帧内预测模式之后,便可以基于所述第一帧内预测模式和第二帧内预测模式,进一步确定所述当前块的预测值。
需要说明的是,在本申请的实施例中,解码器在进行当前块的预测值时,可以先根据所述第一帧内预测模式确定所述当前块的第一预测值;同时可以根据所述第二帧内预测模式确定所述当前块的第二预测值;然后可以利用当 前块的权重矩阵对所述第一预测值和所述第二预测值进行加权平均计算,最终便可以获得所述当前块的预测值。
在本申请的实施例中,进一步地,通过上述步骤701至步骤704所示的帧内预测方法,解码器可以先从模式列表中选择一个预测模式,然后在该预测模式的基础上确定是否需要偏移,如果需要偏移,则进一步确定偏移方式和偏移量,其中,偏移量可以理解为偏移的模式索引序号。
需要说明的是,在本申请的实施例中,对模式列表进行偏移处理后确定当前块的预测模式的方法,既可以应用于本申请实施例的SAWP模式中,也可以应用于其他帧内预测模式中,还可以应用于任意的帧间预测模式中,对此本申请不进行具体限定。
示例性的,在本申请中,规定构建4个MPM,那么可以使用2个比特确定选择哪一个预测模式,使用1个比特确定是否进行偏移处理。,那么如果选中的帧内预测模式是MPM之一,需要2个比特(mpm_idx)表示是哪一个MPM,1个比特(offset_needed)表示不需要偏移,共3个比特。
进一步地,在本申请的实施例中,如果偏移模式参数指示进行偏移处理,那么可以进一步确定偏移参数,其中,偏移参数可以包括一个比特(sign)的偏移方式,还可以包括一些比特(offset)的偏移量。
也就是说,在本申请中,如果需要偏移,那么可以用一个比特(sign)来表示偏移方式是“+”还是“-”。进一步地,偏移量的设置的方法可以默认只能偏移某一个量,如1或2或4等,或者,也可以使用一些开销来表示偏移量。比如,假设可选的偏移量有两种,如2和4,那么可以使用一个比特表示偏移量是2还是4。假设可选的偏移量是多种,那么可以用一些比特(offset)来表示,如表4所示的offset的取值与二元符号串的对应关系可以用于进行偏移量的确定。示例性的,在解码侧,解码器解析码流,可以确定当前块的初始模式(mpm_idx),还可以确定偏移模式参数(offset_needed),如果偏移模式参数offset_needed指示进行偏移处理,解码器还可以确定偏移方式(sign)和偏移量(offset),例如,该帧内预测模式的解码方法如下表27所示:
表27
其中,sign和offset的顺序可以对掉,如果offset只有一种可能的情况,则上述表格中没有offset。
具体地,假设帧内预测模式的模式号为intra_pred_mode,变量offset_value、offset_value的值为0;如果offset_needed为1,offset_value的值等于offset的值;如果sign为1,offset_value的值等于-offset_value的值;intra_pred_mode的值等于MPM[mpm_idx]的值加上offset_value的值。
进一步地,在本申请中,可以设置帧内预测模式只能使用MPM,这样在帧内预测模式解码时,只需要解析mpm_idx,而intra_pred_mode的值等于MPM[mpm_idx]的值。
本申请实施例提供一种帧内预测方法,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性,同时,编解码器还可以通过权重矩阵与预测模式之间的相关性进行MPM列表的构建,能够大大降低复杂度,也就是说,本申请提出的帧内预测方法,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。
基于上述实施例,本申请的再一实施例提出了一种帧内预测方法,应用于解码器,图19为帧内预测方法的实现流程示意图四,如图19所示,解码器进行帧内预测的方法可以包括以下步骤:
步骤801、解析码流,确定当前块的帧内预测模式参数。
步骤802、当帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值时,确定当前块的模式列表。
步骤803、根据模式列表,确定当前块的第一帧内预测模式和第二帧内预测模式。
步骤804、基于第一帧内预测模式和第二帧内预测模式,确定当前块的预测值。
在本申请的实施例中,解码器解析码流,确定当前块的帧内预测模式参数,如果帧内预测模式参数指示当前块使用SAWP模式确定当前块的帧内预测值,那么解码器可以进一步确定所述当前块的模式列表。
需要说明的是,在本申请的实施例中,SAWP模式为一种帧内预测方法,具体地,SAWP模式为对当前块确定两个不同的帧内预测模式,然后分别根据这两个不同的帧内预测模式确定出两个预测块,接着可以再确定一个权重矩阵,将则会两个预测块依据权重矩阵进行组合,最终便可以得到新的预测块,即获得当前块的预测块。
可选地,在本申请中,解码器可以先确定所述当前块的尺寸参数;然后可以根据所述尺寸参数确定所述当前块是否使用所述SAWP模式。具体地,若所述宽度大于第一阈值且所述高度大于第二阈值,则确定所述当前块使用所述SAWP模式;或者,若所述宽度小于第三阈值且所述高度大于第四阈值,则确定所述当前块使用所述SAWP模式。
可选地,在本申请中,解码器可以先确定所述当前块的像素参数;然后可以根据所述像素参数和第五阈值判断所述当前块是否使用所述SAWP模式。
可选地,在本申请中,解码器可以先确定当前块的帧内预测模式参数;然后根据所述帧内预测模式参数判断所述当前块是否使用所述SAWP模式。
需要说明的是,在本申请中,权重矩阵导出模式用于对当前块使用的权重矩阵进行确定。具体地,权重矩阵导出模式可以是导出权重矩阵的模式。对于一个给定长度和宽度的预测块,每一种权重矩阵导出模式可以导出一个权重矩阵;对于同样大小的预测块,不同权重矩阵导出模式导出的权重矩阵不同。
示例性的,在本申请中,AVS3的AWP有56种权重矩阵导出模式,VVC的GPM有64种权重矩阵导出模式。
进一步地,在本申请的实施例中,解码器在利用所述权重矩阵导出模式确定模式列表时,可以先确定所述当前 块的相邻块对应的帧内预测模式,然后将所述相邻块对应的帧内预测模式确定为待添加模式;在确定待添加模式满足预设添加条件之后,解码器可以将所述待添加模式添加至所述模式列表中,即将当前块的相邻块对应的帧内预测模式添加至模式列表中;接着,如果此时模式列表不满足预设列表长度,那么解码器可以继续确定所述当前块的权重矩阵导出模式,并确定所述权重矩阵导出模式对应的相关帧内预测模式,然后将所述权重矩阵导出模式对应的相关帧内预测模式确定为所述待添加模式;且在确定待添加模式满足所述预设添加条件,则将该待添加模式添加至所述模式列表中,即将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表。
需要说明的是,在本申请的实施例中,解码器在将当前块的相邻块对应的帧内预测模式添加至模式列表之后,或者,解码器在将权重矩阵导出模式对应的相关帧内预测模式添加至模式列表之后,如果模式列表不满足所述预设列表长度,即模式列表未填满,那么解码器可以继续将预设预测模式确定为所述待添加模式;然后在确定待添加模式满足所述预设添加条件之后,将待添加模式添加至所述模式列表,即将预设预测模式添加至模式列表中。
可以理解的是,在本申请中,预设预测模式可以包括DC模式、Bilinear模式、Planar模式等多种不同模式中的一种或多种。
进一步地,在本申请的实施例中,解码器在分别将当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式、预设预测模式添加至模式列表之后,如果模式列表仍然不满足所述预设列表长度,即模式列表仍然未被填满,那么解码器可以选择使用模式列表中的预测模式进行关联帧内预测模式的确定,然后将关联帧内预测模式确定为所述待添加模式,并在确定待添加模式满足所述预设添加条件之后,将所述待添加模式添加至所述模式列表,即将模式列表对应的关联帧内预测模式添加至模式列表中。
也就是说,在本申请中,在将当前块的相邻块对应的帧内预测模式、权重矩阵导出模式对应的相关帧内预测模式以及预设预测模式依次添加至模式列表之后,如果模式列表仍然未被填满,那么解码器可以选择基于模式列表中的已有的预测模式,进行对应的关联帧内预测模式的确定,然后再将这些关联帧内预测模式添加至模式列表中。
需要说明的是,在本申请的实施例中,无论是将当前块的相邻块对应的帧内预测模式作为待添加模式,还是将权重矩阵导出模式对应的相关帧内预测模式作为待添加模式,或者是将预设预测模式作为待添加模式,再者是将关联帧内预测模式作为待添加模式,解码器都需要进行待添加模式是否满足预设添加条件的判定,具体地,如果待添加模式存在,且所述待添加模式与所述模式列表中的预测模式均不相同,那么便可以确定所述待添加模式满足所述预设添加条件,从而可以将该待添加模式添加至模式列表中。
相应地,如果待添加模式不存在,或者待添加模式与所述模式列表中的一个预测模式相同(重合),那么便可以确定所述待添加模式不满足所述预设添加条件,因此不能将该待添加模式添加至模式列表中,而是直接丢弃该待添加模式。
可以理解的是,在本申请中,由于当前块需要使用两个帧内预测模式进行帧内预测处理,因此可以在构建MPM时参考更多位置的帧内预测模式,或者参考更多相邻块的帧内预测模式。相应地,在本申请中,当前块所使用的模式列表的长度可以与其他帧内预测模式的模式列表长度不同,因为MPM二值化时的码字比其他模式要短,增加两个帧内预测模式分别是MPM的概率,有利于编解码效率提升。
进一步地,在本申请的实施例中,解码器在利用所述权重矩阵导出模式确定模式列表时,可以先确定所述权重矩阵导出模式对应的列表构建策略;然后可以按照所述列表构建策略,进一步确定所述模式列表。
也就是说,在本申请中,针对不同的权重矩阵,即针对不同的权重矩阵导出模式,解码器可以使用不同的构建策略来进行模式列表的构建。例如,基于构建策略,如果权重矩阵的分界线是0度或90度,即在水平或竖直的情况下,解码器可以选择在构建模式列表时考虑权重矩阵对应的帧内预测模式,而其他情况不考虑权重矩阵对应的帧内预测模式。
在本申请的实施例中,解码器在构建当前块的模式列表之后,便可以根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式。
可以理解的是,在本申请中,当前块进行帧内预测时使用的两个帧内预测模式不相同,即第一帧内预测模式与第二帧内预测模式并不相同,那么第二帧内预测模式在解码时就可以排除第一帧内预测模式的可能。也就是说第二帧内预测模式的解码可以使用第一帧内预测模式的信息。
在本申请的实施例中,进一步地,解码器在进行模式列表的构建过程中,还可以设置候补帧内预测模式。其中,候补帧内预测模式与模式列表中的帧内预测模式均不相同。
具体地,在本申请中,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,第二帧内预测模式的确定可以是依赖于第一帧内预测模式的。其中,解码器在基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式时,可以先将所述模式列表中的一个预测模式确定为所述第一帧内预测模式;然后再根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
进一步地,在本申请的实施例中,解码器在将所述模式列表中的一个预测模式确定为所述第一帧内预测模式之后,可以从所述模式列表中删除所述一个预测模式,然后再将所述候补帧内预测模式添加至所述模式列表,从而可以获得更新后的模式列表;然后可以从所述更新后的模式列表中选择一个预测模式确定为所述第二帧内预测模式,其中,选择方式可以为任意的。
示例性的,在本申请中,假设第一帧内预测模式和所述第二帧内预测模式可选的MPM为N个,在构建模式列表时,可以先构建N个MPM和1个候补的MPM,对第一帧内预测模式,可选的MPM是上述N个MPM。如果第一帧内预测模式选中了其中一个MPM,那么对第二帧内预测模式,将第一个帧内预测模式选中的MPM剔除,然后将候补的MPM加入模式列表,这样第二个帧内预测模式仍可选N个MPM。
在本申请的实施例中,进一步地,解码器在进行模式列表的构建过程中,还可以设置所述模式列表的长度参数为(N+1);其中,N为正整数。
具体地,在本申请中,为了保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,第二帧内预测模式的确定可以是依赖于第一帧内预测模式的。其中,解码器在基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式时,如果使用所述模式列表确定所述第一帧内预测模式,那么可以将所述模式列表的前N个预测模式中的一个预测模式确定为所述第一帧内预测模式;然后再根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
进一步地,在本申请的实施例中,如果使用所述模式列表确定所述第一帧内预测模式,那么解码器在将所述模式列表的前N个预测模式中的一个预测模式确定为所述第一帧内预测模式之后,再利用所述模式列表的、所述第一帧内预测模式以外的其他N个预测模式确定所述第二帧内预测模式。
需要说明的是,在本申请的实施例中,解码器在基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式时,如果不使用所述模式列表确定所述第一帧内预测模式,那么解码器可以直接将所述模式列表的前N个预测模式中的一个预测模式确定为所述第二帧内预测模式。
可选地,在本申请的实施例中,如果仅仅保证当前块使用的第一帧内预测模式和第二帧内预测模式不相同,而不对第一帧内预测模式和第二帧内预测模式可选择的MPM的数量进行限制,那么也可以不进行后补帧内预测模式的设置,或者,不进行增加模式列表长度的处理。
示例性的,在本申请中,以MPM个数N等于4为例,以第一个比特位表示是否是MPM,比如“1”表示是MPM,“0”表示不是MPM。如果第一帧内预测模式是MPM,因为有4个MPM,以2个比特位表示是哪一个MPM,即“00,01,10,11”分别表示第一个,第二个,第三个,第四个。而如果第一帧内预测模式和第二帧内预测模式都是MPM,那么第二帧内预测模式可用的MPM只有3种,那么可以用1到2个比特位表示是哪一个MPM,如“00,01,10”分别表示剩余的第一个,第二个,第三个。可见,由于排除了一种可能,可以改变反二值化的方法以节省开销。
步骤503、基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
在本申请的实施例中,解码器在根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式之后,便可以基于所述第一帧内预测模式和第二帧内预测模式,进一步地确定所述当前块的预测值。
可以理解的是,在本申请的实施例中,解码器在基于所述第一帧内预测模式和第二帧内预测模式确定所述当前块的预测值时,可以先根据所述第一帧内预测模式确定所述当前块的第一预测值;同时可以根据所述第二帧内预测模式确定所述当前块的第二预测值;然后可以对所述第一预测值和所述第二预测值进行加权平均计算,最终便可以获得所述当前块的预测值。例如,解码器可以利用所述权重矩阵对所述第一预测值和所述第二预测值进行加权平均计算,以获得所述当前块的预测值。
在本申请的实施例中,进一步地,解码器也可以在确定当前块的模式列表之后,先根据所述模式列表确定所述当前块的第一初始模式和第二初始模式;然后确定偏移模式参数,当所述偏移模式参数指示进行偏移处理时,确定所述当前块的偏移参数;接着可以根据所述第一初始模式和所述偏移参数,确定所述当前块的第一帧内预测模式;根据所述第二初始模式和所述偏移参数,确定所述当前块的第二帧内预测模式;最后基于所述第一帧内预测模式和第二帧内预测模式,便可以确定所述当前块的预测值。
可以理解的时,在本申请的实施例中,解码器在进行模式列表的确定时,可以采用常见的构建最可能模式列表MPM的方式,如使用相邻块的预测模式构建MPM等,也可以使用本申请提出的帧内预测方法所涉及的模式列表的构建方法,即利用当前块的权重矩阵导出模式构建模式列表。
也就是说,在本申请中,模式列表的构建方法可以选择使用上述实施例中所提出的模式列表构建方法,也可以是其他的MPM构建方法,本申请不做具体限定。
进一步地,在本申请的实施例中,解码器在确定当前块使用的模式列表之后,可以先根据所述模式列表确定所述当前块的第一初始模式和第二初始模式。
示例性的,在本申请中,构建包括有N个MPM的模式列表,如果N为2 n,那么可以使用n个比特(mpm_idx)来表示选择模式列表中的哪一个MPM,即确定第一初始模式和第二初始模式,然后再用一个比特来表示是否需要偏移(offset_needed)。例如,构建4个MPM的模式列表,那么在模式列表中选择帧内预测模式时,需要使用2个比特(mpm_idx)来表示选择模式列表中的哪一个MPM作为初始模式,如表3所示的mpm_idx的取值与二元符号串的对应关系可以用于进行预测模式的确定。
需要说明的是,在本申请的实施例中,可以使用一个比特来表示是否需要偏移(offset_needed),也就是说,解码器可以通过解析码流确定偏移模式参数,进一步确定当前块的预测模式(第一初始模式或第二初始模式)是否需要偏移。
进一步地,在本申请的实施例中,如果偏移模式参数指示进行偏移处理,那么解码器可以进一步确定当前块的偏移参数。其中,偏移参数可以包括偏移方式和偏移量,即通过偏移参数的确定,解码器可以确定如果对当前块的第一初始模式或第二初始模式进行偏移处理。
需要说明的是,在本申请的实施例中,解码器解析码流获得的比特可以对偏移参数中的偏移方式和偏移量进行指示。例如,一个比特(sign)表示偏移方式是“+”还是“-”;一些比特(offset)来表示偏移量。
可选地,在本申请中,也可以预先对偏移方式和偏移量进行设置,例如,可以默认只能偏移某一个量,如1或2或4等。
进一步地,在本申请的实施例中,解码器在根据所述模式列表和所述偏移参数,确定当前块的第一帧内预测模式和第二帧内预测模式时,可以按照所述偏移方式和所述偏移量对所述第一初始模式进行偏移处理,从而确定所述第一帧内预测模式;同时还可以按照所述偏移方式和所述偏移量对所述第二初始模式进行偏移处理,从而确定所述第二帧内预测模式。
也就是说,在本申请的实施例中,解码器可以先根据解析确定的几个比特来确定使用模式列表中的哪一个预测 模式,即先从模式列表中确定出初始模式,然后再按照偏移参数对初始模式进行偏移处理,最终便可以确定出当前块使用的帧内预测模式。
可以理解的是,在本申请的实施例中,可以对第一初始模式和第二初始模式使用相同的偏移参数,即基于第一初始模式和第二初始模式,按照相同的偏移方式和偏移量来进行偏移处理。相应地,也可以对第一初始模式和第二初始模式使用不同的偏移参数,即基于第一初始模式使用一种偏移方式进行偏移处理,同时基于第二初始模式使用另一种偏移方式进行偏移处理,其中,这两种偏移方式所对应的偏移方式和偏移量可以不完全相同。
也就是说,在本申请中,第一初始模式进行偏移处理时所对应的偏移方式和偏移量,与第二初始模式进行偏移处理时所对应的偏移方式和偏移量,可以相同,也可以不同。
可选地,在本申请中,第一初始模式对应的偏移模式参数和第二初始模式对应的偏移模式参数也可以不同,即通过对第一初始模式和第二初始模式分别设置偏移模式参数,实现以下几种不同的处理方式:对第一初始模式和第二初始模式均进行偏移处理;或者,对第一初始模式和第二初始模式均不进行偏移处理;或者,对第一初始模式进行偏移处理,同时对第二初始模式不进行偏移处理;或者,对第一初始模式不进行偏移处理,同时对第二初始模式进行偏移处理。
进一步地,在本申请的实施例中,如果偏移模式参数指示不进行偏移处理,那么解码器可以直接根据所述模式列表确定所述第一帧内预测模式和所述第二帧内预测模式。
需要说明的是,在本申请的实施例中,解码器在进行当前块的预测值时,可以先根据所述第一帧内预测模式确定所述当前块的第一预测值;同时可以根据所述第二帧内预测模式确定所述当前块的第二预测值;然后可以对所述第一预测值和所述第二预测值进行加权平均计算,最终便可以获得所述当前块的预测值。
本申请实施例提供一种帧内预测方法,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性,同时,编解码器还可以通过权重矩阵与预测模式之间的相关性进行MPM列表的构建,能够大大降低复杂度,也就是说,本申请提出的帧内预测方法,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。
基于上述实施例,在本申请的再一实施例中,图20为本申请实施例提出的编码器的组成结构示意图一,如图20所示,本申请实施例提出的编码器300可以包括第一确定部分301,
所述第一确定部分301,配置为当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值;
所述第一确定部分301,还配置为当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
图21为本申请实施例提出的编码器的组成结构示意图二,如图21所示,本申请实施例提出的编码器300还可以包括第一处理器302、存储有第一处理器302可执行指令的第一存储器303、第一通信接口304,和用于连接第一处理器302、第一存储器303以及第一通信接口304的第一总线305。
进一步地,在本申请的实施例中,上述第一处理器302,用于当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
上述第一处理器302,还用于当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
图22为本申请实施例提出的解码器的组成结构示意图一,如图22所示,本申请实施例提出的解码器400可以包括解码部分401,第二确定部分402,
所述解码部分401,配置为解析码流;
所述第二确定部分402,配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值;
所述第二确定部分402,还配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
图23为本申请实施例提出的解码器的组成结构示意图二,如图23所示,本申请实施例提出的解码器400还可以包括第二处理器403、存储有第二处理器403可执行指令的第二存储器404、第二通信接口405,和用于连接第二处理器403、第二存储器404以及第二通信接口405的第二总线406。
进一步地,在本申请的实施例中,上述第二处理器403,用于解析码流,确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定 所述当前块的预测值。
上述第二处理器403,还用于解析码流,确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供了一种编解码器,一方面,当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。另一方面,当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。也就是说,在本申请的实施例中,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性,同时,编解码器还可以通过权重矩阵与预测模式之间的相关性进行MPM列表的构建,能够大大降低复杂度,也就是说,本申请提出的帧内预测方法,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。
本申请实施例提供计算机可读存储介质和计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述实施例所述的方法。
具体来讲,本实施例中的一种帧内预测方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种帧内预测方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;
根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;
基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
还包括如下步骤:
当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;
根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;
基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
还包括如下步骤:
解析码流,确定当前块的帧内预测模式参数;
当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;
根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;
基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
还包括如下步骤:
解析码流,确定当前块的帧内预测模式参数;
当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;
根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;
基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器 中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
工业实用性
本申请实施例提供了一种帧内预测方法、编码器、解码器以及存储介质,一方面,当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。另一方面,当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。也就是说,在本申请的实施例中,编解码器可以通过两种不同的帧内预测模式确定当前块的两个不同的预测块,然后可以通过多样的权重矩阵进行组合,最终得到更复杂的预测块,提高了预测的准确性,同时,编解码器还可以通过权重矩阵与预测模式之间的相关性进行MPM列表的构建,能够大大降低复杂度,也就是说,本申请提出的帧内预测方法,能够在提升帧内预测质量的同时,降低复杂度,从而提升压缩性能。

Claims (111)

  1. 一种帧内预测方法,应用于编码器,所述方法包括:
    当当前块使用空域角度加权预测SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;
    根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;
    基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
  2. 根据权利要求1所述的方法,其中,所述根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    利用所述权重矩阵导出模式确定模式列表;
    基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式。
  3. 根据权利要求2所述的方法,其中,所述利用所述权重矩阵导出模式确定模式列表,包括:
    确定所述当前块的相邻块对应的帧内预测模式,并将所述相邻块对应的帧内预测模式确定为待添加模式;
    若所述待添加模式满足预设添加条件,则将所述待添加模式添加至所述模式列表;
    若所述模式列表不满足预设列表长度,则确定所述权重矩阵导出模式对应的相关帧内预测模式,并将所述权重矩阵导出模式对应的相关帧内预测模式确定为所述待添加模式;
    若所述待添加模式满足所述预设添加条件,则将所述待添加模式添加至所述模式列表。
  4. 根据权利要求3所述的方法,其中,所述方法还包括:
    确定所述相邻块对应的顺序参数;
    按照所述顺序参数,依次将所述相邻块对应的帧内预测模式添加至所述模式列表。
  5. 根据权利要求3所述的方法,其中,所述确定所述权重矩阵导出模式对应的相关帧内预测模式,包括:
    确定所述权重矩阵导出模式对应的帧内预测模式;
    基于所述权重矩阵导出模式对应的帧内预测模式,按照第一索引间隔,确定所述相关帧内预测模式。
  6. 根据权利要求3所述的方法,其中,所述方法还包括:
    若所述模式列表不满足所述预设列表长度,则将预设预测模式确定为所述待添加模式;其中,所述预设预测模式包括DC模式、Bilinear模式、Planar模式中的一种或多种;
    若所述待添加模式满足所述预设添加条件,则将所述待添加模式添加至所述模式列表。
  7. 根据权利要求3所述的方法,其中,所述方法还包括:
    若所述模式列表不满足所述预设列表长度,则确定所述模式列表的关联帧内预测模式,并将所述关联帧内预测模式确定为所述待添加模式;
    若所述待添加模式满足所述预设添加条件,则将所述待添加模式添加至所述模式列表。
  8. 根据权利要求7所述的方法,其中,所述确定所述模式列表的关联帧内预测模式,包括:
    基于所述模式列表中的任一个预测模式,按照第二索引间隔,确定所述关联帧内预测模式。
  9. 根据权利要求3至8任一项所述的方法,其中,所述方法还包括:
    若所述待添加模式存在,且所述待添加模式与所述模式列表中的预测模式均不相同,则确定所述待添加模式满足所述预设添加条件。
  10. 根据权利要求2所述的方法,其中,所述利用所述权重矩阵导出模式确定模式列表,包括:
    确定所述权重矩阵导出模式对应的列表构建策略;
    按照所述列表构建策略,确定所述模式列表。
  11. 根据权利要求2所述的方法,其中,所述方法还包括:
    设置候补帧内预测模式。
  12. 根据权利要求11所述的方法,其中,所述基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式,包括:
    将所述模式列表中的一个预测模式确定为所述第一帧内预测模式;
    根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
  13. 根据权利要求11所述的方法,其中,所述根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式,包括:
    从所述模式列表中删除所述一个预测模式,并将所述候补帧内预测模式添加至所述模式列表,获得更新后的模式列表;
    从所述更新后的模式列表中选择一个预测模式确定为所述第二帧内预测模式。
  14. 根据权利要求2所述的方法,其中,所述方法还包括:
    设置所述模式列表的长度参数为(N+1);其中,N为正整数。
  15. 根据权利要求14所述的方法,其中,所述基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式,包括:
    若使用所述模式列表确定所述第一帧内预测模式,则将所述模式列表的前N个预测模式中的一个预测模式确定为所述第一帧内预测模式;
    根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
  16. 根据权利要求15所述的方法,其中,所述根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式,包括:
    利用所述模式列表的、所述第一帧内预测模式以外的其他N个预测模式确定所述第二帧内预测模式。
  17. 根据权利要求14所述的方法,其中,所述基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式,包括:
    若不使用所述模式列表确定所述第一帧内预测模式,则将所述模式列表的前N个预测模式中的一个预测模式确定为所述第二帧内预测模式。
  18. 根据权利要求1所述的方法,其中,所述根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    对所述当前块的相邻块对应的帧内预测模式、所述权重矩阵导出模式对应的相关帧内预测模式、预设预测模式依次进行排序处理,获得预测模式的候选列表;其中,所述预设预测模式包括DC模式、Bilinear模式、Planar模式中的一种或多种;
    根据所述预测模式的候选列表确定所述第一帧内预测模式和所述第二帧内预测模式。
  19. 根据权利要求1所述的方法,其中,所述根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    建立所述权重矩阵导出模式对应的所述第一帧内预测模式的参考集合;建立所述权重矩阵导出模式对应的所述第二帧内预测模式的参考集合;
    基于所述第一帧内预测模式的参考集合确定所述第一帧内预测模式;基于所述第二帧内预测模式的参考集合确定所述第二帧内预测模式。
  20. 根据权利要求1所述的方法,其中,所述方法还包括:
    根据第一模式索引范围确定所述权重矩阵导出模式;其中,所述第一模式索引范围用于对所述权重矩阵导出模式的索引序号进行限制。
  21. 根据权利要求1所述的方法,其中,所述方法还包括:
    若所述当前块的尺寸参数小于第一尺寸阈值,则根据第一模式索引范围确定所述权重矩阵导出模式;其中,所述第一模式索引范围用于对所述权重矩阵导出模式的索引序号进行限制。
  22. 根据权利要求20或21所述的方法,其中,第一模式索引范围包括第一下限阈值和第一上限阈值,所述方法还包括:
    若所述权重矩阵导出模式的索引序号小于所述第一下限阈值,则将所述权重矩阵导出模式的索引序号设置为所述第一下限阈值;
    若所述权重矩阵导出模式的索引序号大于所述第一上限阈值,则将所述权重矩阵导出模式的索引序号设置为所述第一上限阈值。
  23. 根据权利要求1所述的方法,其中,所述方法还包括:
    根据第二模式索引范围确定所述第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。
  24. 根据权利要求1所述的方法,其中,所述方法还包括:
    若所述当前块的尺寸参数小于第二尺寸阈值,则根据第二模式索引范围确定所述第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。
  25. 根据权利要求23或24所述的方法,其中,第二模式索引范围包括第二下限阈值和第二上限阈值,所述方法还包括:
    确定所述第一帧内预测模式的第一的索引序号,确定所述第二帧内预测模式的第二的索引序号;
    设置所述第一的索引序号和所述第二索引序号均大于所述第二下限阈值;设置所述第一的索引序号和所述第二索引序号均小于所述第二上限阈值。
  26. 根据权利要求1所述的方法,其中,所述方法还包括:
    根据所述模式列表确定所述当前块的第一初始模式和第二初始模式;
    确定偏移模式参数,当所述偏移模式参数指示进行偏移处理时,确定所述当前块的偏移参数;
    根据所述第一初始模式和所述偏移参数,确定所述当前块的第一帧内预测模式;根据所述第二初始模式和所述偏移参数,确定所述当前块的第二帧内预测模式;
    基于所述第一帧内预测模式和所述第二帧内预测模式,确定所述当前块的预测值。
  27. 根据权利要求26所述的方法,其中,所述偏移参数包括偏移方式和偏移量,所述根据所述第一初始模式和所述偏移参数,确定所述当前块的第一帧内预测模式;根据所述第二初始模式和所述偏移参数,确定所述当前块的第二帧内预测模式,包括:
    按照所述偏移方式和所述偏移量对所述第一初始模式进行偏移处理,确定所述第一帧内预测模式;
    按照所述偏移方式和所述偏移量对所述第二初始模式进行偏移处理,确定所述第二帧内预测模式。
  28. 根据权利要求26所述的方法,其中,所述方法还包括:
    当所述偏移模式参数指示不进行偏移处理时,根据所述模式列表确定所述第一帧内预测模式和所述第二帧内预测模式。
  29. 根据权利要求1所述的方法,其中,所述基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值,包括:
    根据所述第一帧内预测模式确定所述当前块的第一预测值;根据所述第二帧内预测模式确定所述当前块的第二预测值;
    利用所述权重矩阵对所述第一预测值和所述第二预测值进行加权平均计算,获得所述当前块的预测值。
  30. 根据权利要求1所述的方法,其中,所述方法还包括:
    确定所述当前块的尺寸参数;
    根据所述尺寸参数确定所述当前块是否使用所述SAWP模式。
  31. 根据权利要求30所述的方法,其中,所述尺寸参数包括宽度和高度;所述方法还包括:
    若所述宽度大于第一阈值且所述高度大于第二阈值,则确定所述当前块使用所述SAWP模式;或者,
    若所述宽度小于第三阈值且所述高度大于第四阈值,则确定所述当前块使用所述SAWP模式。
  32. 根据权利要求1所述的方法,其中,所述方法还包括:
    确定所述当前块的像素参数;
    根据所述像素参数和第五阈值判断所述当前块是否使用所述SAWP模式。
  33. 根据权利要求1所述的方法,其中,所述方法还包括:
    确定当前块的帧内预测模式参数;
    根据所述帧内预测模式参数判断所述当前块是否使用所述SAWP模式。
  34. 一种帧内预测方法,应用于编码器,所述方法包括:
    当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;
    根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;
    基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
  35. 根据权利要求34所述的方法,其中,所述确定所述当前块的模式列表,包括:
    确定所述当前块的相邻块对应的帧内预测模式,并将所述相邻块对应的帧内预测模式确定为待添加模式;
    若所述待添加模式满足预设添加条件,则将所述待添加模式添加至所述模式列表;
    若所述模式列表不满足预设列表长度,则所述当前块的权重矩阵导出模式,确定所述权重矩阵导出模式对应的相关帧内预测模式,并将所述权重矩阵导出模式对应的相关帧内预测模式确定为所述待添加模式;
    若所述待添加模式满足所述预设添加条件,则将所述待添加模式添加至所述模式列表。
  36. 根据权利要求35所述的方法,其中,所述利用所述权重矩阵导出模式确定模式列表,包括:
    确定所述权重矩阵导出模式对应的列表构建策略;
    按照所述列表构建策略,确定所述模式列表。
  37. 根据权利要求34所述的方法,其中,所述方法还包括:
    设置候补帧内预测模式。
  38. 根据权利要求37所述的方法,其中,所述根据所述模式列表,确定所述当前块的第一帧内预测模式和所述第二帧内预测模式,包括:
    将所述模式列表中的一个预测模式确定为所述第一帧内预测模式;
    根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
  39. 根据权利要求38所述的方法,其中,所述根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式,包括:
    从所述模式列表中删除所述一个预测模式,并将所述候补帧内预测模式添加至所述模式列表,获得更新后的模式列表;
    从所述更新后的模式列表中选择一个预测模式确定为所述第二帧内预测模式。
  40. 根据权利要求34所述的方法,其中,所述方法还包括:
    设置所述模式列表的长度参数为(N+1);其中,N为正整数。
  41. 根据权利要求40所述的方法,其中,所述根据所述模式列表,确定所述当前块的第一帧内预测模式和所述第二帧内预测模式,包括:
    若使用所述模式列表确定所述第一帧内预测模式,则将所述模式列表的前N个预测模式中的一个预测模式确定为所述第一帧内预测模式;
    根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
  42. 根据权利要求41所述的方法,其中,所述根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式,包括:
    利用所述模式列表的、所述第一帧内预测模式以外的其他N个预测模式确定所述第二帧内预测模式。
  43. 根据权利要求40所述的方法,其中,所述根据所述模式列表,确定所述当前块的第一帧内预测模式和所述第二帧内预测模式,包括:
    若不使用所述模式列表确定所述第一帧内预测模式,则将所述模式列表的前N个预测模式中的一个预测模式确定为所述第二帧内预测模式。
  44. 根据权利要求35所述的方法,其中,所述方法还包括:
    对所述当前块的相邻块对应的帧内预测模式、所述权重矩阵导出模式对应的相关帧内预测模式、预设预测模式依次进行排序处理,获得预测模式的候选列表;其中,所述预设预测模式包括DC模式、Bilinear模式、Planar模式中的一种或多种;
    根据所述预测模式的候选列表确定所述第一帧内预测模式和所述第二帧内预测模式。
  45. 根据权利要求35所述的方法,其中,所述方法还包括:
    建立所述权重矩阵导出模式对应的所述第一帧内预测模式的参考集合;建立所述权重矩阵导出模式对应的所述第二帧内预测模式的参考集合;
    基于所述第一帧内预测模式的参考集合确定所述第一帧内预测模式;基于所述第二帧内预测模式的参考集合确 定所述第二帧内预测模式。
  46. 根据权利要求35所述的方法,其中,所述方法还包括:
    根据第一模式索引范围确定所述权重矩阵导出模式;其中,所述第一模式索引范围用于对所述权重矩阵导出模式的索引序号进行限制。
  47. 根据权利要求35所述的方法,其中,所述方法还包括:
    若所述当前块的尺寸参数小于第一尺寸阈值,则根据第一模式索引范围确定所述权重矩阵导出模式;其中,所述第一模式索引范围用于对所述权重矩阵导出模式的索引序号进行限制。
  48. 根据权利要求46或47所述的方法,其中,第一模式索引范围包括第一下限阈值和第一上限阈值,所述方法还包括:
    若所述权重矩阵导出模式的索引序号小于所述第一下限阈值,则将所述权重矩阵导出模式的索引序号设置为所述第一下限阈值;
    若所述权重矩阵导出模式的索引序号大于所述第一上限阈值,则将所述权重矩阵导出模式的索引序号设置为所述第一上限阈值。
  49. 根据权利要求34所述的方法,其中,所述方法还包括:
    根据第二模式索引范围确定所述第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。
  50. 根据权利要求34所述的方法,其中,所述方法还包括:
    若所述当前块的尺寸参数小于第二尺寸阈值,则根据第二模式索引范围确定所述第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。
  51. 根据权利要求49或50所述的方法,其中,第二模式索引范围包括第二下限阈值和第二上限阈值,所述方法还包括:
    确定所述第一帧内预测模式的第一的索引序号,确定所述第二帧内预测模式的第二的索引序号;
    设置所述第一的索引序号和所述第二索引序号均大于所述第二下限阈值;设置所述第一的索引序号和所述第二索引序号均小于所述第二上限阈值。
  52. 根据权利要求34所述的方法,其中,所述方法还包括:
    根据所述模式列表确定所述当前块的第一初始模式和第二初始模式;
    确定偏移模式参数,当所述偏移模式参数指示进行偏移处理时,确定所述当前块的偏移参数;
    根据所述第一初始模式和所述偏移参数,确定所述当前块的第一帧内预测模式;根据所述第二初始模式和所述偏移参数,确定所述当前块的第二帧内预测模式;
    基于所述第一帧内预测模式和所述第二帧内预测模式,确定所述当前块的预测值。
  53. 根据权利要求34所述的方法,其中,所述基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值,包括:
    根据所述第一帧内预测模式确定所述当前块的第一预测值;根据所述第二帧内预测模式确定所述当前块的第二预测值;
    对所述第一预测值和所述第二预测值进行加权平均计算,获得所述当前块的预测值。
  54. 一种帧内预测方法,应用于解码器,所述方法包括:
    解析码流,确定当前块的帧内预测模式参数;
    当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;
    根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;
    基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值。
  55. 根据权利要求54所述的方法,其中,所述根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    利用所述权重矩阵导出模式确定模式列表;
    基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式。
  56. 根据权利要求55所述的方法,其中,所述利用所述权重矩阵导出模式确定模式列表,包括:
    确定所述当前块的相邻块对应的帧内预测模式,并将所述相邻块对应的帧内预测模式确定为待添加模式;
    若所述待添加模式满足预设添加条件,则将所述待添加模式添加至所述模式列表;
    若所述模式列表不满足预设列表长度,则确定所述权重矩阵导出模式对应的相关帧内预测模式,并将所述权重矩阵导出模式对应的相关帧内预测模式确定为所述待添加模式;
    若所述待添加模式满足所述预设添加条件,则将所述待添加模式添加至所述模式列表。
  57. 根据权利要求56所述的方法,其中,所述方法还包括:
    确定所述相邻块对应的顺序参数;
    按照所述顺序参数,依次将所述相邻块对应的帧内预测模式添加至所述模式列表。
  58. 根据权利要求56所述的方法,其中,所述确定所述权重矩阵导出模式对应的相关帧内预测模式,包括:
    确定所述权重矩阵导出模式对应的帧内预测模式;
    基于所述权重矩阵导出模式对应的帧内预测模式,按照第一索引间隔,确定所述相关帧内预测模式。
  59. 根据权利要求56所述的方法,其中,所述方法还包括:
    若所述模式列表不满足所述预设列表长度,则将预设预测模式确定为所述待添加模式;其中,所述预设预测模式包括DC模式、Bilinear模式、Planar模式中的一种或多种;
    若所述待添加模式满足所述预设添加条件,则将所述待添加模式添加至所述模式列表。
  60. 根据权利要求56所述的方法,其中,所述方法还包括:
    若所述模式列表不满足所述预设列表长度,则确定所述模式列表的关联帧内预测模式,并将所述关联帧内预测模式确定为所述待添加模式;
    若所述待添加模式满足所述预设添加条件,则将所述待添加模式添加至所述模式列表。
  61. 根据权利要求60所述的方法,其中,所述确定所述模式列表的关联帧内预测模式,包括:
    基于所述模式列表中的任一个预测模式,按照第二索引间隔,确定所述关联帧内预测模式。
  62. 根据权利要求56至61任一项所述的方法,其中,所述方法还包括:
    若所述待添加模式存在,且所述待添加模式与所述模式列表中的预测模式均不相同,则确定所述待添加模式满足所述预设添加条件。
  63. 根据权利要求55所述的方法,其中,所述利用所述权重矩阵导出模式确定模式列表,包括:
    确定所述权重矩阵导出模式对应的列表构建策略;
    按照所述列表构建策略,确定所述模式列表。
  64. 根据权利要求55所述的方法,其中,所述方法还包括:
    设置候补帧内预测模式。
  65. 根据权利要求64所述的方法,其中,所述基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式,包括:
    将所述模式列表中的一个预测模式确定为所述第一帧内预测模式;
    根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
  66. 根据权利要求64所述的方法,其中,所述根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式,包括:
    从所述模式列表中删除所述一个预测模式,并将所述候补帧内预测模式添加至所述模式列表,获得更新后的模式列表;
    从所述更新后的模式列表中选择一个预测模式确定为所述第二帧内预测模式。
  67. 根据权利要求55所述的方法,其中,所述方法还包括:
    设置所述模式列表的长度参数为(N+1);其中,N为正整数。
  68. 根据权利要求67所述的方法,其中,所述基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式,包括:
    若使用所述模式列表确定所述第一帧内预测模式,则将所述模式列表的前N个预测模式中的一个预测模式确定为所述第一帧内预测模式;
    根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
  69. 根据权利要求68所述的方法,其中,所述根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式,包括:
    利用所述模式列表的、所述第一帧内预测模式以外的其他N个预测模式确定所述第二帧内预测模式。
  70. 根据权利要求67所述的方法,其中,所述基于所述模式列表,确定所述第一帧内预测模式和所述第二帧内预测模式,包括:
    若不使用所述模式列表确定所述第一帧内预测模式,则将所述模式列表的前N个预测模式中的一个预测模式确定为所述第二帧内预测模式。
  71. 根据权利要求54所述的方法,其中,所述根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    对所述当前块的相邻块对应的帧内预测模式、所述权重矩阵导出模式对应的相关帧内预测模式、预设预测模式依次进行排序处理,获得预测模式的候选列表;其中,所述预设预测模式包括DC模式、Bilinear模式、Planar模式中的一种或多种;
    根据所述预测模式的候选列表确定所述第一帧内预测模式和所述第二帧内预测模式。
  72. 根据权利要求54所述的方法,其中,所述根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式,包括:
    建立所述权重矩阵导出模式对应的所述第一帧内预测模式的参考集合;建立所述权重矩阵导出模式对应的所述第二帧内预测模式的参考集合;
    基于所述第一帧内预测模式的参考集合确定所述第一帧内预测模式;基于所述第二帧内预测模式的参考集合确定所述第二帧内预测模式。
  73. 根据权利要求54所述的方法,其中,所述方法还包括:
    根据第一模式索引范围确定所述权重矩阵导出模式;其中,所述第一模式索引范围用于对所述权重矩阵导出模式的索引序号进行限制。
  74. 根据权利要求54所述的方法,其中,所述方法还包括:
    若所述当前块的尺寸参数小于第一尺寸阈值,则根据第一模式索引范围确定所述权重矩阵导出模式;其中,所述第一模式索引范围用于对所述权重矩阵导出模式的索引序号进行限制。
  75. 根据权利要求73或74所述的方法,其中,第一模式索引范围包括第一下限阈值和第一上限阈值,所述方 法还包括:
    若所述权重矩阵导出模式的索引序号小于所述第一下限阈值,则将所述权重矩阵导出模式的索引序号设置为所述第一下限阈值;
    若所述权重矩阵导出模式的索引序号大于所述第一上限阈值,则将所述权重矩阵导出模式的索引序号设置为所述第一上限阈值。
  76. 根据权利要求54所述的方法,其中,所述方法还包括:
    根据第二模式索引范围确定所述第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。
  77. 根据权利要求54所述的方法,其中,所述方法还包括:
    若所述当前块的尺寸参数小于第二尺寸阈值,则根据第二模式索引范围确定所述第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。
  78. 根据权利要求76或77所述的方法,其中,第二模式索引范围包括第二下限阈值和第二上限阈值,所述方法还包括:
    确定所述第一帧内预测模式的第一的索引序号,确定所述第二帧内预测模式的第二的索引序号;
    设置所述第一的索引序号和所述第二索引序号均大于所述第二下限阈值;设置所述第一的索引序号和所述第二索引序号均小于所述第二上限阈值。
  79. 根据权利要求54所述的方法,其中,所述方法还包括:
    根据所述模式列表确定所述当前块的第一初始模式和第二初始模式;
    确定偏移模式参数,当所述偏移模式参数指示进行偏移处理时,确定所述当前块的偏移参数;
    根据所述第一初始模式和所述偏移参数,确定所述当前块的第一帧内预测模式;根据所述第二初始模式和所述偏移参数,确定所述当前块的第二帧内预测模式;
    基于所述第一帧内预测模式和所述第二帧内预测模式,确定所述当前块的预测值。
  80. 根据权利要求79所述的方法,其中,所述偏移参数包括偏移方式和偏移量,所述根据所述第一初始模式和所述偏移参数,确定所述当前块的第一帧内预测模式;根据所述第二初始模式和所述偏移参数,确定所述当前块的第二帧内预测模式,包括:
    按照所述偏移方式和所述偏移量对所述第一初始模式进行偏移处理,确定所述第一帧内预测模式;
    按照所述偏移方式和所述偏移量对所述第二初始模式进行偏移处理,确定所述第二帧内预测模式。
  81. 根据权利要求79所述的方法,其中,所述方法还包括:
    当所述偏移模式参数指示不进行偏移处理时,根据所述模式列表确定所述第一帧内预测模式和所述第二帧内预测模式。
  82. 根据权利要求54所述的方法,其中,所述基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值,包括:
    根据所述第一帧内预测模式确定所述当前块的第一预测值;根据所述第二帧内预测模式确定所述当前块的第二预测值;
    利用所述权重矩阵对所述第一预测值和所述第二预测值进行加权平均计算,获得所述当前块的预测值。
  83. 根据权利要求54所述的方法,其中,所述方法还包括:
    确定所述当前块的尺寸参数;
    根据所述尺寸参数确定所述当前块是否使用所述SAWP模式。
  84. 根据权利要求83所述的方法,其中,所述尺寸参数包括宽度和高度;所述方法还包括:
    若所述宽度大于第一阈值且所述高度大于第二阈值,则确定所述当前块使用所述SAWP模式;或者,
    若所述宽度小于第三阈值且所述高度大于第四阈值,则确定所述当前块使用所述SAWP模式。
  85. 根据权利要求54所述的方法,其中,所述方法还包括:
    确定所述当前块的像素参数;
    根据所述像素参数和第五阈值判断所述当前块是否使用所述SAWP模式。
  86. 根据权利要求54所述的方法,其中,所述方法还包括:
    确定当前块的帧内预测模式参数;
    根据所述帧内预测模式参数判断所述当前块是否使用所述SAWP模式。
  87. 一种帧内预测方法,应用于解码器,所述方法包括:
    解析码流,确定当前块的帧内预测模式参数;
    当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;
    根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;
    基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
  88. 根据权利要求87所述的方法,其中,所述确定所述当前块的模式列表,包括:
    确定所述当前块的相邻块对应的帧内预测模式,并将所述相邻块对应的帧内预测模式确定为待添加模式;
    若所述待添加模式满足预设添加条件,则将所述待添加模式添加至所述模式列表;
    若所述模式列表不满足预设列表长度,则所述当前块的权重矩阵导出模式,确定所述权重矩阵导出模式对应的相关帧内预测模式,并将所述权重矩阵导出模式对应的相关帧内预测模式确定为所述待添加模式;
    若所述待添加模式满足所述预设添加条件,则将所述待添加模式添加至所述模式列表。
  89. 根据权利要求88所述的方法,其中,所述利用所述权重矩阵导出模式确定模式列表,包括:
    确定所述权重矩阵导出模式对应的列表构建策略;
    按照所述列表构建策略,确定所述模式列表。
  90. 根据权利要求87所述的方法,其中,所述方法还包括:
    设置候补帧内预测模式。
  91. 根据权利要求90所述的方法,其中,所述根据所述模式列表,确定所述当前块的第一帧内预测模式和所述第二帧内预测模式,包括:
    将所述模式列表中的一个预测模式确定为所述第一帧内预测模式;
    根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
  92. 根据权利要求91所述的方法,其中,所述根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式,包括:
    从所述模式列表中删除所述一个预测模式,并将所述候补帧内预测模式添加至所述模式列表,获得更新后的模式列表;
    从所述更新后的模式列表中选择一个预测模式确定为所述第二帧内预测模式。
  93. 根据权利要求87所述的方法,其中,所述方法还包括:
    设置所述模式列表的长度参数为(N+1);其中,N为正整数。
  94. 根据权利要求93所述的方法,其中,所述根据所述模式列表,确定所述当前块的第一帧内预测模式和所述第二帧内预测模式,包括:
    若使用所述模式列表确定所述第一帧内预测模式,则将所述模式列表的前N个预测模式中的一个预测模式确定为所述第一帧内预测模式;
    根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式。
  95. 根据权利要求94所述的方法,其中,所述根据所述第一帧内预测模式和所述模式列表,确定所述第二帧内预测模式,包括:
    利用所述模式列表的、所述第一帧内预测模式以外的其他N个预测模式确定所述第二帧内预测模式。
  96. 根据权利要求93所述的方法,其中,所述根据所述模式列表,确定所述当前块的第一帧内预测模式和所述第二帧内预测模式,包括:
    若不使用所述模式列表确定所述第一帧内预测模式,则将所述模式列表的前N个预测模式中的一个预测模式确定为所述第二帧内预测模式。
  97. 根据权利要求88所述的方法,其中,所述方法还包括:
    对所述当前块的相邻块对应的帧内预测模式、所述权重矩阵导出模式对应的相关帧内预测模式、预设预测模式依次进行排序处理,获得预测模式的候选列表;其中,所述预设预测模式包括DC模式、Bilinear模式、Planar模式中的一种或多种;
    根据所述预测模式的候选列表确定所述第一帧内预测模式和所述第二帧内预测模式。
  98. 根据权利要求88所述的方法,其中,所述方法还包括:
    建立所述权重矩阵导出模式对应的所述第一帧内预测模式的参考集合;建立所述权重矩阵导出模式对应的所述第二帧内预测模式的参考集合;
    基于所述第一帧内预测模式的参考集合确定所述第一帧内预测模式;基于所述第二帧内预测模式的参考集合确定所述第二帧内预测模式。
  99. 根据权利要求88所述的方法,其中,所述方法还包括:
    根据第一模式索引范围确定所述权重矩阵导出模式;其中,所述第一模式索引范围用于对所述权重矩阵导出模式的索引序号进行限制。
  100. 根据权利要求88所述的方法,其中,所述方法还包括:
    若所述当前块的尺寸参数小于第一尺寸阈值,则根据第一模式索引范围确定所述权重矩阵导出模式;其中,所述第一模式索引范围用于对所述权重矩阵导出模式的索引序号进行限制。
  101. 根据权利要求99或100所述的方法,其中,第一模式索引范围包括第一下限阈值和第一上限阈值,所述方法还包括:
    若所述权重矩阵导出模式的索引序号小于所述第一下限阈值,则将所述权重矩阵导出模式的索引序号设置为所述第一下限阈值;
    若所述权重矩阵导出模式的索引序号大于所述第一上限阈值,则将所述权重矩阵导出模式的索引序号设置为所述第一上限阈值。
  102. 根据权利要求87所述的方法,其中,所述方法还包括:
    根据第二模式索引范围确定所述第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。
  103. 根据权利要求87所述的方法,其中,所述方法还包括:
    若所述当前块的尺寸参数小于第二尺寸阈值,则根据第二模式索引范围确定所述第一帧内预测模式和所述第二帧内预测模式;其中,所述第二模式索引范围用于对帧内预测模式的索引序号进行限制。
  104. 根据权利要求102或103所述的方法,其中,第二模式索引范围包括第二下限阈值和第二上限阈值,所述方法还包括:
    确定所述第一帧内预测模式的第一的索引序号,确定所述第二帧内预测模式的第二的索引序号;
    设置所述第一的索引序号和所述第二索引序号均大于所述第二下限阈值;设置所述第一的索引序号和所述第二索引序号均小于所述第二上限阈值。
  105. 根据权利要求87所述的方法,其中,所述方法还包括:
    根据所述模式列表确定所述当前块的第一初始模式和第二初始模式;
    确定偏移模式参数,当所述偏移模式参数指示进行偏移处理时,确定所述当前块的偏移参数;
    根据所述第一初始模式和所述偏移参数,确定所述当前块的第一帧内预测模式;根据所述第二初始模式和所述偏移参数,确定所述当前块的第二帧内预测模式;
    基于所述第一帧内预测模式和所述第二帧内预测模式,确定所述当前块的预测值。
  106. 根据权利要求87所述的方法,其中,所述基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值,包括:
    根据所述第一帧内预测模式确定所述当前块的第一预测值;根据所述第二帧内预测模式确定所述当前块的第二预测值;
    对所述第一预测值和所述第二预测值进行加权平均计算,获得所述当前块的预测值。
  107. 一种编码器,所述编码器包括:第一确定部分,
    所述第一确定部分,配置为当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值;
    所述第一确定部分,还配置为当当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
  108. 一种编码器,所述编码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如权利要求1-33或34-53任一项所述的方法。
  109. 一种解码器,所述解码器包括:解码部分,第二确定部分,
    所述解码部分,配置为解析码流;
    所述第二确定部分,配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的权重矩阵导出模式;根据所述权重矩阵导出模式确定所述当前块的第一帧内预测模式和第二帧内预测模式;根据所述权重矩阵导出模式确定所述当前块的权重矩阵;基于所述第一帧内预测模式、第二帧内预测模式以及所述权重矩阵,确定所述当前块的预测值;
    所述第二确定部分,还配置为确定当前块的帧内预测模式参数;当所述帧内预测模式参数指示所述当前块使用SAWP模式确定所述当前块的帧内预测值时,确定所述当前块的模式列表;根据所述模式列表,确定所述当前块的第一帧内预测模式和第二帧内预测模式;基于所述第一帧内预测模式和第二帧内预测模式,确定所述当前块的预测值。
  110. 一种解码器,所述解码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如权利要求54-86或87-106任一项所述的方法。
  111. 一种计算机存储介质,其中,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求1-33或34-53任一项所述的方法,或者,被第二处理器执行时实现如权利要求54-86或87-106任一项所述的方法。
CN202080107557.9A 2020-12-03 2020-12-24 帧内预测方法、编码器、解码器以及存储介质 Pending CN116569546A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311105465.9A CN116980594A (zh) 2020-12-03 2020-12-24 帧内预测方法、编码器、解码器以及存储介质

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2020133708 2020-12-03
CNPCT/CN2020/133708 2020-12-03
PCT/CN2020/139178 WO2022116317A1 (zh) 2020-12-03 2020-12-24 帧内预测方法、编码器、解码器以及存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311105465.9A Division CN116980594A (zh) 2020-12-03 2020-12-24 帧内预测方法、编码器、解码器以及存储介质

Publications (1)

Publication Number Publication Date
CN116569546A true CN116569546A (zh) 2023-08-08

Family

ID=81852897

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202080107557.9A Pending CN116569546A (zh) 2020-12-03 2020-12-24 帧内预测方法、编码器、解码器以及存储介质
CN202311105465.9A Pending CN116980594A (zh) 2020-12-03 2020-12-24 帧内预测方法、编码器、解码器以及存储介质
CN202180078949.1A Pending CN116601951A (zh) 2020-12-03 2021-12-03 预测方法、编码器、解码器以及存储介质

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202311105465.9A Pending CN116980594A (zh) 2020-12-03 2020-12-24 帧内预测方法、编码器、解码器以及存储介质
CN202180078949.1A Pending CN116601951A (zh) 2020-12-03 2021-12-03 预测方法、编码器、解码器以及存储介质

Country Status (7)

Country Link
US (2) US20230300326A1 (zh)
EP (1) EP4258658A1 (zh)
JP (1) JP2023552997A (zh)
KR (1) KR20230111254A (zh)
CN (3) CN116569546A (zh)
MX (1) MX2023006589A (zh)
WO (2) WO2022116317A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021061826A1 (en) * 2019-09-24 2021-04-01 Futurewei Technologies, Inc. Filter flags for subpicture deblocking
US20230033501A1 (en) * 2021-08-02 2023-02-02 Tencent America LLC Constraint of intra mode for geometric partition mode with inter and intra prediction
WO2024007128A1 (zh) * 2022-07-04 2024-01-11 Oppo广东移动通信有限公司 视频编解码方法、装置、设备、系统、及存储介质
WO2024007366A1 (zh) * 2022-07-08 2024-01-11 Oppo广东移动通信有限公司 一种帧内预测融合方法、视频编解码方法、装置和系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101772459B1 (ko) * 2010-05-17 2017-08-30 엘지전자 주식회사 신규한 인트라 예측 모드
CN104247422B (zh) * 2011-11-07 2018-09-11 华为技术有限公司 用于改进帧内预测的新的角度表的方法和装置
WO2017123133A1 (en) * 2016-01-12 2017-07-20 Telefonaktiebolaget Lm Ericsson (Publ) Video coding using hybrid intra prediction
CA3025520A1 (en) * 2016-05-25 2017-11-30 Arris Enterprises Llc Improved weighted angular prediction coding for intra coding
CN116916007A (zh) * 2016-12-07 2023-10-20 株式会社Kt 对视频进行解码或编码的方法和存储视频数据的设备
CN116886899A (zh) * 2017-07-05 2023-10-13 艾锐势有限责任公司 对视频编码、解码的方法和计算机可读存储器或存储装置
KR20200057082A (ko) * 2017-10-09 2020-05-25 애리스 엔터프라이지즈 엘엘씨 적응적 동일하지 않은 가중 평면 예측
US10623736B2 (en) * 2018-06-14 2020-04-14 Telefonaktiebolaget Lm Ericsson (Publ) Tile selection and bandwidth optimization for providing 360° immersive video
CN117692636A (zh) * 2018-10-27 2024-03-12 华为技术有限公司 图像预测方法及装置
CN113273188A (zh) * 2018-12-31 2021-08-17 韩国电子通信研究院 图像编码/解码方法和装置以及存储有比特流的记录介质
US20220191530A1 (en) * 2019-03-12 2022-06-16 Hyundai Motor Company Intra prediction method and device for predicting and dividing prediction unit into sub-units

Also Published As

Publication number Publication date
KR20230111254A (ko) 2023-07-25
CN116980594A (zh) 2023-10-31
WO2022117089A1 (zh) 2022-06-09
EP4258658A1 (en) 2023-10-11
US20230300326A1 (en) 2023-09-21
CN116601951A (zh) 2023-08-15
US20230308645A1 (en) 2023-09-28
WO2022116317A1 (zh) 2022-06-09
MX2023006589A (es) 2023-06-16
JP2023552997A (ja) 2023-12-20

Similar Documents

Publication Publication Date Title
US11553185B2 (en) Method and apparatus for processing a video signal
US10785483B2 (en) Modified coding for a transform skipped block for CABAC in HEVC
CN113574898B (zh) 自适应环路滤波器
US10009616B2 (en) Image encoding device, image decoding device, image encoding method, and image decoding method
US20130003855A1 (en) Processing method and device for video signals
KR20220016232A (ko) 코딩 및 디코딩 방법, 장치 및 저장 매체
CN116569546A (zh) 帧内预测方法、编码器、解码器以及存储介质
JP7150861B2 (ja) ビデオコーディングのための空間変動変換
US11979554B2 (en) Intra prediction-based video signal processing method and device
EP3014879B1 (en) Modified coding for a transform skipped block for cabac in hevc
WO2022116113A1 (zh) 一种帧内预测方法、装置及解码器和编码器
WO2020185799A1 (en) Coding of transform coefficients in video coding
CN116489344A (zh) 一种编解码方法、装置及其设备
CN113497935A (zh) 视频编解码方法及设备
EP4297406A1 (en) Intra-frame prediction method, coder, decoder and storage medium
WO2022188114A1 (zh) 帧内预测方法、编码器、解码器以及存储介质
WO2022140905A1 (zh) 预测方法、编码器、解码器以及存储介质
CN114598873B (zh) 量化参数的解码方法和装置
WO2023193253A1 (zh) 解码方法、编码方法、解码器以及编码器
CN118118666A (zh) 自适应环路滤波器
KR20120058384A (ko) 인트라 프리딕션 방법

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