CN113709500A - 一种编解码方法、装置及其设备 - Google Patents

一种编解码方法、装置及其设备 Download PDF

Info

Publication number
CN113709500A
CN113709500A CN202111152763.4A CN202111152763A CN113709500A CN 113709500 A CN113709500 A CN 113709500A CN 202111152763 A CN202111152763 A CN 202111152763A CN 113709500 A CN113709500 A CN 113709500A
Authority
CN
China
Prior art keywords
value
prediction
current block
target
reference weight
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.)
Granted
Application number
CN202111152763.4A
Other languages
English (en)
Other versions
CN113709500B (zh
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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN202111152763.4A priority Critical patent/CN113709500B/zh
Publication of CN113709500A publication Critical patent/CN113709500A/zh
Application granted granted Critical
Publication of CN113709500B publication Critical patent/CN113709500B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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/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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

本申请提供一种编解码方法、装置及其设备,该方法包括:在确定对当前块启动加权预测时,获取当前块的权重预测角度;针对当前块的每个像素位置,根据权重预测角度从当前块外部的周边位置中确定像素位置指向的周边匹配位置,根据周边匹配位置关联的参考权重值确定像素位置的目标权重值,根据目标权重值确定像素位置的关联权重值;根据第一预测模式确定像素位置的第一预测值,根据第二预测模式确定像素位置的第二预测值,根据第一预测值,目标权重值,第二预测值和关联权重值,确定像素位置的加权预测值;根据每个像素位置的加权预测值确定当前块的加权预测值。通过本申请的技术方案,提高预测准确性。

Description

一种编解码方法、装置及其设备
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。其中,预测编码可以包括帧内编码和帧间编码。进一步的,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。帧内编码是指利用视频空间域的相关性,使用当前帧图像的已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
相关技术中,当前块为矩形,而实际物体的边缘往往不是矩形,对于物体边缘来说,往往存在两个不同对象(如存在前景的物体和背景)。当两个对象的运动不一致时,矩形划分不能很好的将两个对象分割,如果为此将当前块划分为两个非方子块,通过两个非方子块预测当前块,那么,会存在预测效果不佳,编码性能差等问题。
发明内容
有鉴于此,本申请提供了一种编解码方法、装置及其设备,提高了预测的准确性。
本申请提供一种编解码方法,所述方法包括:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置,根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,并根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编解码装置,所述装置包括:
获取模块,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;
第一确定模块,用于针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置,根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
第二确定模块,用于根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,并根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置,根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,并根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置,根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,并根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更接近原始像素,并带来编码性能的提高。
附图说明
图1是视频编码框架的示意图;
图2A-图2E是加权预测的示意图;
图3是本申请一种实施方式中的编解码方法的流程图;
图4是本申请另一种实施方式中的编解码方法的流程图;
图5A-图5D是当前块外部的周边位置的示意图;
图6是本申请另一种实施方式中的编解码方法的流程图;
图7是本申请一种实施方式中的权重预测角度的示意图;
图8A-图8H是参考权重值的示意图;
图9A是本申请一种实施方式中的编解码装置的结构示意图;
图9B是本申请一种实施方式中的解码端设备的硬件结构图;
图9C是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
本申请实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
帧内预测、帧间预测(intra prediction and inter prediction)与IBC(帧内块拷贝)预测:
帧内预测是指,利用视频空间域的相关性,使用当前块的已编码块进行预测,以达到去除视频空域冗余的目的。帧内预测规定了多种预测模式,每种预测模式对应一种纹理方向(DC模式除外),例如,若图像纹理呈现水平状排布,则水平预测模式可以更好的预测图像信息。
帧间预测是指,基于视频时域的相关性,由于视频序列包含有较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,可以达到有效去除视频时域冗余的目的。视频编码标准帧间预测部分都采用了基于块的运动补偿技术,主要原理是为当前图像的每一个像素块在之前已编码图像中寻找一个最佳匹配块,该过程称为运动估计(MotionEstimation,ME)。
帧内块拷贝(IBC,Intra Block Copy)是指,允许同帧参考,当前块的参考数据来自同一帧,帧内块拷贝也可以称为帧内块复制。帧内块拷贝技术中,可以使用当前块的块矢量获取当前块的预测值,示例性的,基于屏幕内容中同一帧内存在大量重复出现的纹理这一特性,在采用块矢量获取当前块的预测值时,能够提升屏幕内容序列的压缩效率。
运动矢量(Motion Vector,MV):在帧间编码中,可以使用运动矢量表示当前帧图像的当前块与参考帧图像的参考块之间的相对位移。每个划分的块都有相应的运动矢量传送到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是小尺寸的大量块,则消耗很多比特。为降低用于编码运动矢量的比特数,可以利用相邻块之间的空间相关性,根据相邻已编码块的运动矢量对当前待编码块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。在对当前块的运动矢量进行编码时,可以先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对该运动矢量的预测值(MVP,Motion Vector Prediction)与运动矢量的真正估值之间的差值(MVD,Motion VectorDifference)进行编码。
运动信息(Motion Information):由于运动矢量表示当前块与某个参考块之间的位置偏移,为了准确的获取指向块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示当前块使用哪个参考帧图像。在视频编码技术中,对于当前帧图像,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧图像。此外,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。综上所述,在视频编码技术中,可以将运动矢量,参考帧索引,参考方向等与运动相关的信息统称为运动信息。
块矢量(Block Vector,BV):块矢量应用在帧内块拷贝技术中,帧内块拷贝技术是使用块矢量进行运动补偿,即采用块矢量获取当前块的预测值。与运动矢量不同的是,块矢量表示当前块与当前帧已编码块中的最佳匹配块之间的相对位移。基于同一帧内存在大量重复纹理这一特性,在采用块矢量获取当前块的预测值时,能够显著提升压缩效率。
帧内预测模式:在帧内编码中,使用帧内预测模式进行运动补偿,即采用帧内预测模式获取当前块的预测值。例如,帧内预测模式可以包括但不限于Planar模式,DC模式和33种角度模式。参见表1所示,为帧内预测模式的示例,Planar模式对应模式0,DC模式对应模式1,其余的33种角度模式对应模式1-模式34。Planar模式适用于像素值缓慢变化的区域,使用水平方向和垂直方向的两个线性滤波器,将两者的平均值作为当前块像素的预测值。DC模式适用于大面积平坦区域,将当前块的周围像素的平均值作为当前块的预测值。角度模式有33种角度模式,新一代编解码标准VVC中采用了更细分的角度模式,如67种角度模式。
表1
帧内预测模式 帧内预测模式
0 Planar模式
1 DC模式
2…34 angular2…angular34
预测像素(Prediction Signal):预测像素是指从已编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换量化以及系数编码。帧间的预测像素指的是当前块从参考帧导出的像素值,由于像素位置离散,需要通过插值运算来获取最终的预测像素。预测像素与原始像素越接近,两者相减得到的残差能量越小,编码压缩性能越高。
调色板模式(Palette Mode):在调色板模式下,当前块的像素值通过一个小的像素值集合来表示,即调色板。在当前块中的像素位置的像素值接近调色板中的某个颜色时,该像素位置编码调色板中对应颜色的索引值。在当前块中的像素位置的像素值与调色板中的所有颜色不相似时,需要对该像素位置编码“逃离像素值”,并直接将其量化后编入码流。对于解码端来说,先获得一个调色板,例如,存储了{颜色A,颜色B,颜色C},而后每个像素位置先确认是不是逃离像素值,若不是逃离像素,则从码流中获得像素位置的索引,基于该像素位置的索引从调色板中获取颜色赋予该像素位置,否则,解析逃离像素值。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
视频编码框架:参见图1所示,可以使用视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再重复赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。示例性的,在视频编码框架和视频解码框架中,可以包括但不限于帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
在相关技术中,若当前块为矩形,而实际物体的边缘往往不是矩形,即,对于物体的边缘来说,往往存在两个不同对象(如存在前景的物体和背景等)。当两个对象的运动不一致时,则矩形划分不能很好的将这两个对象进行分割,为此,可以将当前块划分为两个非方子块,并对两个非方子块进行加权预测。示例性的,加权预测是利用多个预测值进行加权操作,从而获得最终预测值,加权预测可以包括:帧间和帧内的联合加权预测,帧间和帧间的联合加权预测,帧内和帧内的联合加权预测等。针对加权预测的权重值,可以为当前块的所有像素位置设置相同的权重值,也可以为当前块的所有像素位置设置不同的权重值。
参见图2A所示,为帧间帧内联合加权预测的示意图。
CIIP(Combined inter/intra prediction,帧间帧内联合预测)预测块由帧内预测块(即采用帧内预测模式得到像素位置的帧内预测值)和帧间预测块(即采用帧间预测模式得到像素位置的帧间预测值)加权得到,每个像素位置采用的帧内预测值与帧间预测值的权重比是1:1。例如,针对每个像素位置,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权,得到该像素位置的联合预测值,最终将每个像素位置的联合预测值组成CIIP预测块。
示例性的,帧内预测块的帧内预测模式可以在编码端和解码端固定,从而避免传输语法指示具体的帧内预测模式。或者,构建帧内预测模式列表,编码端将选中的帧内预测模式的索引值编入码流,解码端基于该索引值从帧内预测模式列表中选择帧内预测模式。
参见图2B所示,为帧间三角划分加权预测(Triangular Partition Mode,TPM)的示意图。
TPM预测块由帧间预测块1(即采用帧间预测模式得到像素位置的帧间预测值)和帧间预测块2(即采用帧间预测模式得到像素位置的帧间预测值)加权得到。TPM预测块可以划分为两个区域,一个区域可以为帧间区域1,另一个区域可以为帧间区域2,TPM预测块的两个帧间区域可以呈非方形分布,虚线分界线的角度可以为主对角线或者副对角线两种。
示例性的,针对帧间区域1的每个像素位置,主要是基于帧间预测块1的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块1的帧间预测值的权重值较大,帧间预测块2的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。针对帧间区域2的每个像素位置,主要是基于帧间预测块2的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块2的帧间预测值的权重值较大,帧间预测块1的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。最终,可以将每个像素位置的联合预测值组成TPM预测块。
参见图2C所示,为帧间帧内联合三角加权预测的示意图。通过对帧间帧内联合加权预测进行修改,使CIIP预测块的帧间区域和帧内区域呈现三角加权划分预测的权重分布。
CIIP预测块由帧内预测块(即采用帧内预测模式得到像素位置的帧内预测值)和帧间预测块(即采用帧间预测模式得到像素位置的帧间预测值)加权得到。CIIP预测块可以划分为两个区域,一个区域可以为帧内区域,另一个区域可以为帧间区域,CIIP预测块的帧间帧内可以呈非方形分布,虚线分界线区域可采用混合加权方式或者直接进行分割,且该虚线分界线的角度可以为主对角线或者副对角线两种,帧内区域和帧间区域的位置可变。
针对帧内区域的每个像素位置,主要是基于帧内预测值确定,例如,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权时,帧内预测值的权重值较大,帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。针对帧间区域的每个像素位置,主要是基于帧间预测值确定,例如,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权时,帧间预测值的权重值较大,帧内预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。最终,将每个像素位置的联合预测值组成CIIP预测块。
参见图2D所示,为帧间块几何分割模式(Geometrical partitioning for interblocks,GEO)的示意图,GEO模式用于利用一条分割线将帧间预测块划分为两个子块,不同于TPM模式,GEO模式可以采用更多的划分方向,GEO模式的加权预测过程与TPM模式类似。
TPM预测块由帧间预测块1(即采用帧间预测模式得到像素位置的帧间预测值)和帧间预测块2(即采用帧间预测模式得到像素位置的帧间预测值)加权得到。TPM预测块可以划分为两个区域,一个区域可以为帧间区域1,另一个区域可以为帧间区域2。
示例性的,针对帧间区域1的每个像素位置,主要是基于帧间预测块1的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块1的帧间预测值的权重值较大,帧间预测块2的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。针对帧间区域2的每个像素位置,主要是基于帧间预测块2的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块2的帧间预测值的权重值较大,帧间预测块1的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。最终,可以将每个像素位置的联合预测值组成TPM预测块。
示例性的,TPM预测块的权重值设置与像素位置离分割线的距离有关,参见图2E所示,像素位置A,像素位置B和像素位置C位于分割线右下侧,像素位置D,像素位置E和像素位置F位于分割线左上侧。对于像素位置A,像素位置B和像素位置C来说,帧间区域2的权重值排序为B≥A≥C,帧间区域1的权重值排序为C≥A≥B。对于像素位置D,像素位置E和像素位置F来说,帧间区域1的权重值排序为D≥F≥E,帧间区域2的权重值排序为E≥F≥D。上述方式需要计算像素位置与分割线的距离,继而确定像素位置的权重值。
针对上述各种情况,为了实现加权预测,均需要确定当前块的每个像素位置的权重值,并基于每个像素位置的权重值对该像素位置进行加权预测。但是,相关技术中,并没有设置权重值的有效方式,无法设置合理的权重值,导致预测效果不佳,编码性能差等问题。
针对上述发现,本申请实施例提出权重值的导出方式,可以根据当前块外部的周边位置的参考权重值,确定当前块的每个像素位置的目标权重值,能够为每个像素位置设置合理的目标权重值,提高预测准确性,提高预测性能,提高编码性能,预测值更接近原始像素。
以下结合几个具体实施例,对本申请实施例中的编解码方法进行详细说明。
实施例1:参见图3所示,为本申请实施例中提出的编解码方法的流程示意图,该编解码方法可以应用于解码端或者编码端,该编解码方法可以包括以下步骤:
步骤301,在确定对当前块启动加权预测时,获取当前块的权重预测角度。
示例性的,解码端或编码端需要确定是否对当前块启动加权预测。若启动加权预测,则采用本申请实施例的编解码方法,即获取当前块的权重预测角度。若不启动加权预测,则实现方式本申请实施例不做限制。
示例性的,在确定对当前块启动加权预测时,需要获取当前块的权重预测角度,权重预测角度表示当前块内部的像素位置所指向的角度方向。例如,基于某一种权重预测角度,当前块内部的像素位置所指向的角度方向,该角度方向指向当前块的某个外部周边位置。
步骤302,针对当前块的每个像素位置,根据权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置,根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,根据该像素位置的目标权重值确定该像素位置的关联权重值。
示例性的,由于权重预测角度表示当前块内部的像素位置所指向的角度方向,因此,针对当前块的每个像素位置,基于该权重预测角度确定该像素位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
针对当前块的每个像素位置,在确定该像素位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考权重值,周边匹配位置关联的参考权重值可以是预先配置,也可以是采用某种策略确定,对此不做限制,只要该周边匹配位置具有关联的参考权重值即可。
然后,根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,例如,可以将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。
示例性的,在得到该像素位置的目标权重值后,可以根据该像素位置的目标权重值确定该像素位置的关联权重值。例如,每个像素位置的目标权重值与关联权重值的和,均为固定的预设数值,因此,关联权重值可以为预设数值与目标权重值之差。假设预设数值为8,像素位置的目标权重值为0,则该像素位置的关联权重值为8;若像素位置的目标权重值为1,则该像素位置的关联权重值为7,以此类推,只要目标权重值与关联权重值之和为8即可。
步骤303,针对当前块的每个像素位置,根据当前块的第一预测模式确定该像素位置的第一预测值,根据当前块的第二预测模式确定该像素位置的第二预测值,并根据第一预测值,目标权重值,第二预测值和关联权重值,确定该像素位置的加权预测值。
示例性的,针对当前块的每个像素位置,可以根据第一预测模式确定该像素位置的第一预测值,根据第二预测模式确定该像素位置的第二预测值,对此确定方式不做限制。
假设目标权重值是第一预测模式对应的权重值,关联权重值是第二预测模式对应的权重值,则该像素位置的加权预测值可以为:(该像素位置的第一预测值*该像素位置的目标权重值+该像素位置的第二预测值*该像素位置的关联权重值)/固定的预设数值。或者,假设目标权重值是第二预测模式对应的权重值,关联权重值是第一预测模式对应的权重值,则该像素位置的加权预测值可以为:(该像素位置的第二预测值*该像素位置的目标权重值+该像素位置的第一预测值*该像素位置的关联权重值)/固定的预设数值。为方便描述,后续实施例中,以目标权重值是第一预测模式对应的权重值,关联权重值是第二预测模式对应的权重值为例。
步骤304,根据当前块的每个像素位置的加权预测值确定当前块的加权预测值。例如,将每个像素位置的加权预测值组成当前块的加权预测值,至此,得到当前块的加权预测值。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更接近原始像素,并带来编码性能的提高。
实施例2:参见图4所示,为编解码方法的流程示意图,可以应用于编码端,包括:
步骤401,在确定对当前块启动加权预测时,编码端获取当前块的权重预测角度和权重预测位置。示例性的,编码端需要确定是否对当前块启动加权预测,如果是,则获取当前块的权重预测角度和权重预测位置,并执行后续步骤,如果否,则处理方式本申请不做限制。
在一种可能的实施方式中,可以判断当前块的特征信息是否满足特定条件。如果是,则可以确定对当前块启动加权预测;如果否,则可以确定不对当前块启动加权预测。
该特征信息包括但不限于以下之一或者任意组合:当前块所在当前帧的帧类型,当前块的尺寸信息,开关控制信息。该开关控制信息可以包括但不限于:SPS(序列级)开关控制信息,或者,PPS(图像参数级)开关控制信息,或者,TILE(片级)开关控制信息。
例如,若该特征信息为当前块所在当前帧的帧类型,当前块所在当前帧的帧类型满足特定条件,可以包括但不限于:若当前块所在当前帧的帧类型为B帧,则确定帧类型满足特定条件。或者,若当前块所在当前帧的帧类型为I帧,则确定帧类型满足特定条件。
例如,若特征信息为当前块的尺寸信息,如当前块的宽度和高度,则当前块的尺寸信息满足特定条件,可以包括但不限于:若宽度大于或等于第一数值,高度大于或等于第二数值,确定当前块的尺寸信息满足特定条件。或,若宽度大于或等于第三数值,高度大于或等于第四数值,宽度小于或等于第五数值,高度小于或等于第六数值,确定当前块的尺寸信息满足特定条件。或,若宽度和高度的乘积大于或等于第七数值,确定当前块的尺寸信息满足特定条件。上述数值可以根据经验配置,如8、16、32、64、128等,对此不做限制。例如,第一数值为8,第二数值为8,第三数值为8,第四数值为8,第五数值为64,第六数值为64,第七数值为64。当然,上述只是示例,对此不做限制。综上所述,若宽度大于或等于8,高度大于或等于8,确定当前块的尺寸信息满足特定条件。或,若宽度大于或等于8,高度大于或等于8,宽度小于或等于64,高度小于或等于64,确定当前块的尺寸信息满足特定条件。或,若宽度和高度的乘积大于或等于64,确定当前块的尺寸信息满足特定条件。
例如,若特征信息为当前块的尺寸信息,如当前块的宽度和高度,则当前块的尺寸信息满足特定条件,可以包括但不限于:宽度不小于a,且不大于b,高度不小于a,且不大于b。a可以小于或等于16,b可以大于或等于16。例如,a等于8,b等于64或者b等于32。
例如,若特征信息为开关控制信息,则该开关控制信息满足特定条件,可以包括但不限于:若开关控制信息为允许当前块启用加权预测,则确定该开关控制信息满足特定条件。
例如,若该特征信息为当前块所在当前帧的帧类型,当前块的尺寸信息,则该帧类型满足特定条件,且该尺寸信息满足特定条件时,可以确定当前块的特征信息满足特定条件。若该特征信息为当前块所在当前帧的帧类型,开关控制信息,则该帧类型满足特定条件,且该开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。若该特征信息为当前块的尺寸信息、开关控制信息,则该尺寸信息满足特定条件,且该开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。若该特征信息为当前块所在当前帧的帧类型、当前块的尺寸信息、开关控制信息,则该帧类型满足特定条件,且尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。
在一种可能的实施方式中,在确定对当前块启动加权预测时,编码端获取当前块的权重预测角度和权重预测位置。权重预测角度表示当前块内部的像素位置所指向的角度方向。参见图5A所示,基于某一种权重预测角度,示出了当前块内部的像素位置(如像素位置1、像素位置2和像素位置3)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。参见图5B所示,基于另一种权重预测角度,示出了当前块内部的像素位置(如像素位置2、像素位置3和像素位置4)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。
权重预测位置(也可以称为距离参数)用于指示当前块外部的哪个周边位置作为当前块的目标周边位置。例如,可以根据权重预测角度确定当前块外部的周边位置的范围,参见图5A和图5B所示。然后,将周边位置的范围进行N等分,N的取值可以任意设置,如4、6、8等,以8为例进行说明。权重预测位置用于表示哪个周边位置作为当前块的目标周边位置。
参见图5C所示,在将所有周边位置8等分后,可以得到7个权重预测位置。当权重预测位置为0时,表示周边位置a0(即虚线0指向的周边位置,实际应用中,并不存在虚线0,虚线0只是为了方便理解给出的示例,虚线0-虚线6用于将所有周边位置8等分)作为当前块的目标周边位置。当权重预测位置为1时,表示周边位置a1作为当前块的目标周边位置。以此类推,当权重预测位置为6时,表示周边位置a6作为当前块的目标周边位置。
示例性的,针对不同的权重预测角度,N的取值可以不同,如针对权重预测角度A,N的取值为6,表示将基于权重预测角度A确定的周边位置的范围进行6等分,针对权重预测角度B,N的取值为8,表示将基于权重预测角度B确定的周边位置的范围进行8等分。
示例性的,针对不同的权重预测角度,N的取值相同的情况下,支持的权重预测位置数量可以不同,如针对权重预测角度A,N的取值为8,表示将基于权重预测角度A确定的周边位置的范围进行8等分,针对权重预测角度B,N的取值为8,表示将基于权重预测角度B确定的周边位置的范围进行8等分,但是,权重预测角度A对应的权重预测位置选择a1至a5共5个位置,而权重预测角度B对应的权重预测位置选择a0至a6共7个位置。
示例性的,上述是以将周边位置的范围进行N等分为例,在实际应用中,还可以采用不均匀的划分方式,将周边位置的范围划分成N份,而不是N等分,对此不做限制。
示例性的,在将所有的周边位置8等分后,可以得到7个权重预测位置,在步骤401中,编码端可以从7个权重预测位置中获取一个权重预测位置,也可以从7个权重预测位置中选择部分权重预测位置(如5个权重预测位置),从5个权重预测位置获取一个权重预测位置。
示例性的,编码端采用如下方式获取当前块的权重预测角度和权重预测位置:
方式一、编码端和解码端约定相同的权重预测角度作为当前块的权重预测角度,并约定相同的权重预测位置作为当前块的权重预测位置。例如,编码端和解码端将权重预测角度A作为当前块的权重预测角度,编码端和解码端将权重预测位置4作为当前块的权重预测位置。
方式二、编码端构建权重预测角度列表,权重预测角度列表包括至少一个权重预测角度,如权重预测角度A和权重预测角度B。编码端构建权重预测位置列表,权重预测位置列表包括至少一个权重预测位置,如权重预测位置0-权重预测位置数6。编码端依次遍历权重预测角度列表中的每个权重预测角度,并遍历权重预测位置列表中的每个权重预测位置,即遍历每个权重预测角度以及每个权重预测位置的组合。针对权重预测角度和权重预测位置的每个组合,作为步骤401中获取的当前块的权重预测角度和权重预测位置,基于该权重预测角度和该权重预测位置执行步骤402-步骤407,得到当前块的加权预测值。
例如,编码端遍历到权重预测角度A和权重预测位置0时,基于权重预测角度A和权重预测位置0执行步骤402-步骤407,得到当前块的加权预测值。编码端遍历到权重预测角度A和权重预测位置1时,基于权重预测角度A和权重预测位置1执行步骤402-步骤407,得到当前块的加权预测值。编码端遍历到权重预测角度B和权重预测位置0时,基于权重预测角度B和权重预测位置0执行步骤402-步骤407,得到当前块的加权预测值,以此类推。编码端可以基于每个组合(权重预测角度和权重预测位置的组合),得到当前块的加权预测值。
编码端基于权重预测角度A和权重预测位置0得到当前块的加权预测值后,根据该加权预测值确定率失真代价值,对此确定方式不做限制,编码端基于权重预测角度A和权重预测位置1得到当前块的加权预测值后,根据该加权预测值确定率失真代价值,以此类推,编码端可以得到每个组合的率失真代价值,并从所有率失真代价值中选择最小率失真代价值。
然后,编码端将最小率失真代价值对应的权重预测角度以及权重预测位置分别作为当前块的目标权重预测角度,以及当前块的目标权重预测位置,最后将目标权重预测角度在权重预测角度列表中的索引值以及目标权重预测位置在权重预测位置列表中的索引值编入码流。
当然,上述方式只是示例,对此不做限制,只要能够得到当前块的权重预测角度和权重预测位置即可,例如,从权重预测角度列表中随机选择一个权重预测角度作为当前块的权重预测角度,从权重预测位置列表中随机选择一个权重预测位置作为当前块的权重预测位置。
步骤402,针对当前块的每个像素位置,编码端根据当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。为了区分方便,本实施例中,可以将该像素位置指向的当前块外部的周边位置,称为该像素位置的周边匹配位置。
示例性的,由于权重预测角度表示当前块内部的像素位置所指向的角度方向,因此,针对当前块的每个像素位置,基于该权重预测角度确定该像素位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
示例性的,当前块外部周边位置可以包括:当前块外部上侧一行的周边位置,如当前块外部上侧第n1行的周边位置,n1可以为1,也可以为2、3等,对此不做限制。或者,当前块外部左侧一列的周边位置,如当前块外部左侧第n2列的周边位置,n2可以为1,也可以为2、3等,对此不做限制。或者,当前块外部下侧一行的周边位置,如当前块外部下侧第n2行的周边位置,n3可以为1,也可以为2、3等,对此不做限制。或者,当前块外部右侧一列的周边位置,如当前块外部右侧第n4列的周边位置,n4可以为1,也可以为2、3等,对此不做限制。当然,上述只是周边位置的几个示例,对此不做限制,例如,周边位置还可以位于当前块内部,如当前块内部第n5行的周边位置,n5可以为1,也可以为2、3等,周边位置还可以当前块内部第n6列的周边位置,n6可以为1,也可以为2、3等。
为了方便描述,在后续实施例中,以当前块外部上侧第1行的周边位置,或者,当前块外部左侧第1列的周边位置为例,针对其它周边位置的情况,实现方式类似。
示例性的,针对当前块外部周边位置的范围,可以预先指定某个范围是当前块外部的周边位置的范围;或者,可以根据权重预测角度确定当前块外部的周边位置的范围,例如,根据权重预测角度确定当前块内部的每个像素位置指向的周边位置,所有像素位置指向的周边位置的边界,可以是当前块外部的周边位置的范围,对此周边位置的范围不做限制。
示例性的,当前块外部周边位置可以包括整像素位置;或者,当前块外部周边位置可以包括非整像素位置,非整像素位置可以为亚像素位置,如1/2亚像素位置,1/4亚像素位置,3/4亚像素位置等,对此亚像素位置不做限制;或者,当前块外部周边位置可以包括整像素位置和亚像素位置。
示例性的,当前块外部的两个周边位置,可以对应一个整像素位置;或者,当前块外部的四个周边位置,可以对应一个整像素位置;或者,当前块外部的一个周边位置,可以对应一个整像素位置;或者,当前块外部的一个周边位置,可以对应两个整像素位置。当然,上述只是几个示例,对此不做限制,周边位置与整像素位置的关系可以任意配置。
参见图5A和图5B所示,是一个周边位置对应一个整像素位置,参见图5D所示,是两个周边位置对应一个整像素位置,对于其它情况,本实施例中不再赘述。
步骤403,编码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
示例性的,针对当前块的每个像素位置,在确定该像素位置指向的周边匹配位置后,编码端可以确定该周边匹配位置关联的参考权重值,该周边匹配位置关联的参考权重值可以是预先配置,也可以是采用某种策略确定,具体确定方式可以参见后续实施例。
然后,编码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,例如,可以将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。
在一种可能的实施方式中,根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,可以包括:情况一、若该周边匹配位置是整像素位置,且该整像素位置已设置参考权重值,根据该整像素位置的参考权重值确定该像素位置的目标权重值。情况二、若该周边匹配位置是整像素位置,且该整像素位置未设置参考权重值,则可以根据该整像素位置的相邻位置的参考权重值确定该像素位置的目标权重值;例如,对相邻位置的参考权重值进行向上取整操作,得到该像素位置的目标权重值;或者,对相邻位置的参考权重值进行向下取整操作,得到该像素位置的目标权重值;或者,根据该整像素位置的相邻位置的参考权重值的插值确定该像素位置的目标权重值,对此不做限制。情况三、若该周边匹配位置是亚像素位置,且该亚像素位置已设置参考权重值,根据该亚像素位置的参考权重值确定该像素位置的目标权重值。情况四、若该周边匹配位置是亚像素位置,且该亚像素位置未设置参考权重值,则可以根据该亚像素位置的相邻位置的参考权重值确定该像素位置的目标权重值;例如,对相邻位置的参考权重值进行向上取整操作,得到该像素位置的目标权重值;或者,对相邻位置的参考权重值进行向下取整操作,得到该像素位置的目标权重值;或者,根据该亚像素位置的相邻位置的参考权重值的插值确定该像素位置的目标权重值,对此不做限制。
示例性的,可以为当前块外部的周边位置设置参考权重值,具体过程参见后续实施例,且当前块外部的周边位置可以是整像素位置或者亚像素位置,比如说,可以为当前块外部的整像素位置设置参考权重值,和/或,可以为当前块外部的亚像素位置设置参考权重值。
若为当前块外部的整像素位置设置参考权重值,则可以存在以下情况:
针对当前块的每个像素位置,根据权重预测角度确定该像素位置指向的周边匹配位置,若该像素位置指向的周边匹配位置是整像素位置,则该周边匹配位置已设置参考权重值,因此,可以将该周边匹配位置的参考权重值确定为该像素位置的目标权重值。
针对当前块的每个像素位置,根据权重预测角度确定该像素位置指向的周边匹配位置,若该像素位置指向的周边匹配位置是亚像素位置,则该周边匹配位置未设置参考权重值,因此,根据该周边匹配位置的相邻位置的参考权重值确定该像素位置的目标权重值。
若为当前块外部的亚像素位置设置参考权重值,则可以存在以下情况:
针对当前块的每个像素位置,根据权重预测角度确定该像素位置指向的周边匹配位置,若该像素位置指向的周边匹配位置是亚像素位置,则该周边匹配位置已设置参考权重值,因此,可以将该周边匹配位置的参考权重值确定为该像素位置的目标权重值。
针对当前块的每个像素位置,根据权重预测角度确定该像素位置指向的周边匹配位置,若该像素位置指向的周边匹配位置是整像素位置,则该周边匹配位置未设置参考权重值,因此,根据该周边匹配位置的相邻位置的参考权重值确定该像素位置的目标权重值。
步骤404,编码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
示例性的,每个像素位置的目标权重值与关联权重值的和,均为固定的预设数值,即关联权重值可以为预设数值与目标权重值之差。假设预设数值为8,像素位置的目标权重值为2,则该像素位置的关联权重值为6,以此类推,只要目标权重值与关联权重值之和为8即可。
步骤405,针对当前块的每个像素位置,编码端根据当前块的第一预测模式确定该像素位置的第一预测值,并根据当前块的第二预测模式确定该像素位置的第二预测值。
示例性的,第一预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个;第二预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个。例如,第一预测模式可以为帧内块拷贝预测模式,第二预测模式可以为帧内块拷贝预测模式;或者,第一预测模式可以为帧内块拷贝预测模式,第二预测模式可以为帧内预测模式;或者,第一预测模式可以为帧内块拷贝预测模式,第二预测模式可以为帧间预测模式;或者,第一预测模式可以为帧内块拷贝预测模式,第二预测模式可以为调色板模式;以此类推,对此第一预测模式和第二预测模式均不做限制。
关于根据第一预测模式和第二预测模式确定预测值的过程,参见后续实施例。
步骤406,编码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
例如,该像素位置的加权预测值可以为:(该像素位置的第一预测值*该像素位置的目标权重值+该像素位置的第二预测值*该像素位置的关联权重值)/固定的预设数值。
步骤407,编码端根据当前块的每个像素位置的加权预测值确定当前块的加权预测值。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更接近原始像素,并带来编码性能的提高。
实施例3:参见图6所示,为编解码方法的流程示意图,可以应用于解码端,包括:
步骤601,在确定对当前块启动加权预测时,解码端获取当前块的权重预测角度和权重预测位置。示例性的,解码端需要确定是否允许对当前块启动加权预测,如果是,则获取当前块的权重预测角度和权重预测位置,执行后续步骤,如果否,则处理方式本申请不做限制。
在一种可能的实施方式中,编码端判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测;如果否,则确定不对当前块启动加权预测。解码端也判断当前块的特征信息是否满足特定条件。如果是,则确定对当前块启动加权预测;如果否,则确定不对当前块启动加权预测。在此方式下,编码端和解码端均可以基于当前块的特征信息,确定是否对当前块启动加权预测,即直接得到是否启动加权预测的确定结果。
示例性的,该特征信息包括但不限于以下之一或者任意组合:当前块所在当前帧的帧类型,当前块的尺寸信息,开关控制信息。该开关控制信息包括但不限于:SPS开关控制信息,或者,PPS开关控制信息,或者,TILE开关控制信息。关于如何基于这些特征信息确定当前块是否启动加权预测,可以参见步骤401,只是执行主体变为解码端,在此不再重复赘述。
在另一种可能的实施方式中,编码端根据当前块的特征信息确定当前块是否支持加权预测,确定方式参见步骤401,在当前块支持加权预测时,还可以采用其它方式确定是否对当前块启动加权预测,如采用率失真原则确定是否对当前块启动加权预测,对此不做限制。
在确定是否对当前块启动加权预测后,编码端在发送当前块的编码比特流时,该编码比特流可以包括是否启动加权预测的语法,该语法表示当前块是否启动加权预测。
解码端根据当前块的特征信息确定当前块是否支持加权预测,确定方式参见步骤401,在当前块支持加权预测时,解码端还可以从编码比特流中解析出是否启动加权预测的语法,并根据该语法确定是否对当前块启动加权预测。
例如,该语法用于表示当前块是否启动加权预测,该语法的语法元素采用基于上下文的自适应二进制算术编码或基于上下文的自适应二进制算术解码,该语法元素的编码仅采用一个上下文模型进行编码或解码,相关方案中会采用多个上下文模型(如判断当前块的上边块/左边块是否启动与当前块的预测模式,当前块的尺寸是否超过阈值等)进行编码或解码,本实施例可以简化上下文模型数目及概率更新的过程,简化编解码过程。又例如,该语法用于表示当前块是否启动加权预测,该语法的语法元素采用基于上下文的自适应二进制算术编码或基于上下文的自适应二进制算术解码,该语法元素的编码仅采用至多2个上下文模型进行编码或解码,仅判断当前块的尺寸是否超过一定阈值,而在相关方案中会采用多个上下文模型(包括判断当前块的上边块/左边块是否启动加权预测,当前块的尺寸是否超过阈值)进行编码或解码,本实施例可以简化上下文模型数目及概率更新的过程,简化编解码过程,不判断左边块和上边块是否采用语法来判决上下文模型的选择。
在一种可能的实施方式中,在确定对当前块启动加权预测时,解码端获取当前块的权重预测角度和权重预测位置,权重预测角度和权重预测位置的相关解释,参见步骤401,在此不再重复赘述。解码端可以采用如下方式获取当前块的权重预测角度和权重预测位置:
方式一、解码端和编码端约定相同的权重预测角度作为当前块的权重预测角度,并约定相同的权重预测位置作为当前块的权重预测位置。例如,解码端和编码端将权重预测角度A作为当前块的权重预测角度,解码端和编码端将权重预测位置4作为当前块的权重预测位置。
方式二、解码端构建权重预测角度列表,该权重预测角度列表与编码端的权重预测角度列表相同,该权重预测角度列表包括至少一个权重预测角度,如权重预测角度A和权重预测角度B。解码端构建权重预测位置列表,该权重预测位置列表与编码端的权重预测位置列表相同,该权重预测位置列表包括至少一个权重预测位置,如权重预测位置0-权重预测位置数6。解码端在接收到当前块的编码比特流后,从该编码比特流中解析出指示信息,根据该指示信息从权重预测角度列表中选择一个权重预测角度作为当前块的权重预测角度,并根据该指示信息从权重预测位置列表中选择一个权重预测位置作为当前块的权重预测位置。
以下结合几个具体应用场景,对方式二的实现过程进行说明。
应用场景1:编码端在向解码端发送编码比特流时,该编码比特流可以包括指示信息1,指示信息1用于指示当前块的权重预测角度(即目标权重预测角度)和当前块的权重预测位置(即目标权重预测位置)。例如,当指示信息1为0时,用于指示权重预测角度列表中的第一个权重预测角度,且指示权重预测位置列表中的第一个权重预测位置,当指示信息1为1时,用于指示权重预测角度列表中的第一个权重预测角度,且指示权重预测位置列表中的第二个权重预测位置,以此类推,对于指示信息1的取值,用于指示哪个权重预测角度和哪个权重预测位置,只要编码端与解码端进行约定即可。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息1,基于该指示信息1,解码端可以从权重预测角度列表中选择与该指示信息1对应的权重预测角度,该权重预测角度作为当前块的权重预测角度,后续过程以权重预测角度A为例进行说明。基于该指示信息1,解码端可以从权重预测位置列表中选择与该指示信息1对应的权重预测位置,该权重预测位置作为当前块的权重预测位置,后续过程以权重预测位置4为例进行说明。
应用场景2:编码端在向解码端发送编码比特流时,该编码比特流可以包括指示信息2和指示信息3。指示信息2用于指示当前块的目标权重预测角度,如目标权重预测角度在权重预测角度列表中的索引值1,索引值1表示目标权重预测角度是权重预测角度列表中的第几个权重预测角度。指示信息3用于指示当前块的目标权重预测位置,如目标权重预测位置在权重预测位置列表中的索引值2,索引值2表示目标权重预测位置是权重预测位置列表中的第几个权重预测位置。解码端接收到编码比特流后,从编码比特流中解析出指示信息2和指示信息3,基于指示信息2,从权重预测角度列表中选择与该索引值1对应的权重预测角度,该权重预测角度作为当前块的权重预测角度。基于该指示信息3,从权重预测位置列表中选择与该索引值2对应的权重预测位置,该权重预测位置作为当前块的权重预测位置。
应用场景3:编码端和解码端可以约定优选配置组合,对此优选配置组合不做限制,可以根据实际经验进行配置,例如,约定包括权重预测角度A和权重预测位置4的优选配置组合1,包括权重预测角度B和权重预测位置4的优选配置组合2。
编码端确定当前块的目标权重预测角度和目标权重预测位置后,确定目标权重预测角度和目标权重预测位置是否为优选配置组合。如果是,则编码端向解码端发送编码比特流时,该编码比特流可以包括指示信息4和指示信息5。指示信息4用于指示当前块是否采用优选配置组合,如指示信息4为第一取值(如0),表示当前块采用优选配置组合。指示信息5用于指示当前块采用哪个优选配置组合,如指示信息5为0时,用于指示当前块采用优选配置组合1,指示信息5为1时,用于指示当前块采用优选配置组合2。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息4和指示信息5,基于该指示信息4,解码端确定当前块是否采用优选配置组合。若指示信息4为第一取值,则确定当前块采用优选配置组合。在当前块采用优选配置组合时,解码端基于指示信息5,确定当前块采用哪个优选配置组合,如当指示信息5为0时,确定当前块采用优选配置组合1,即当前块的权重预测角度为权重预测角度A,当前块的权重预测位置为权重预测位置4。又例如,当指示信息5为1时,确定当前块采用优选配置组合2,即当前块的权重预测角度为权重预测角度B,当前块的权重预测位置为权重预测位置4。
示例性的,若编码端和解码端只约定一组优选配置组合,如包括权重预测角度A和权重预测位置4的优选配置组合,则该编码比特流可以包括指示信息4,而不包括指示信息5,指示信息4用于指示当前块采用优选配置组合。解码端从该编码比特流中解析出指示信息4后,若指示信息4为第一取值,则确定当前块采用优选配置组合,基于该优选配置组合,确定当前块的权重预测角度为权重预测角度A,当前块的权重预测位置为权重预测位置4。
应用场景4:编码端和解码端可以约定优选配置组合,编码端确定当前块的目标权重预测角度和目标权重预测位置后,确定目标权重预测角度和目标权重预测位置是否为优选配置组合。如果否,则编码端向解码端发送编码比特流时,该编码比特流包括指示信息4和指示信息6。指示信息4用于指示当前块是否采用优选配置组合,如指示信息4为第二取值(如1),表示当前块未采用优选配置组合。指示信息6用于指示当前块的目标权重预测角度和当前块的目标权重预测位置。例如,当指示信息6为0时,用于指示权重预测角度列表中的第一个权重预测角度,且指示权重预测位置列表中的第一个权重预测位置,以此类推。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息4和指示信息6,基于该指示信息4,解码端确定当前块是否采用优选配置组合。若指示信息4为第二取值,则确定当前块未采用优选配置组合。在当前块未采用优选配置组合时,解码端基于指示信息6,可以从权重预测角度列表中选择与该指示信息6对应的权重预测角度,该权重预测角度作为当前块的权重预测角度,基于该指示信息6,解码端可以从权重预测位置列表中选择与该指示信息6对应的权重预测位置,该权重预测位置作为当前块的权重预测位置。
应用场景5:编码端和解码端可以约定优选配置组合,编码端确定当前块的目标权重预测角度和目标权重预测位置后,确定目标权重预测角度和目标权重预测位置是否为优选配置组合。如果否,则编码端向解码端发送编码比特流时,该编码比特流包括指示信息4,指示信息7和指示信息8。示例性的,指示信息4用于指示当前块是否采用优选配置组合,如指示信息4为第二取值,表示当前块未采用优选配置组合。指示信息7用于指示当前块的目标权重预测角度,如目标权重预测角度在权重预测角度列表中的索引值1,索引值1表示目标权重预测角度是权重预测角度列表中的第几个权重预测角度。指示信息8用于指示当前块的目标权重预测位置,如目标权重预测位置在权重预测位置列表中的索引值2,索引值2表示目标权重预测位置是权重预测位置列表中的第几个权重预测位置。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息4,指示信息7和指示信息8,基于该指示信息4,解码端确定当前块是否采用优选配置组合。若指示信息4为第二取值,则确定当前块未采用优选配置组合。在当前块未采用优选配置组合时,解码端基于该指示信息7,从权重预测角度列表中选择与该索引值1对应的权重预测角度,该权重预测角度作为当前块的权重预测角度。解码端基于该指示信息8,从权重预测位置列表中选择与该索引值2对应的权重预测位置,该权重预测位置作为当前块的权重预测位置。
当然,上述方式一和方式二只是示例,对此不做限制,只要解码端能够得到当前块的权重预测角度(即目标权重预测角度)和当前块的权重预测位置(即目标权重预测位置)即可。
步骤602,针对当前块的每个像素位置,解码端根据当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
步骤603,解码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
步骤604,解码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
步骤605,针对当前块的每个像素位置,解码端根据当前块的第一预测模式确定该像素位置的第一预测值,并根据当前块的第二预测模式确定该像素位置的第二预测值。
步骤606,解码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
步骤607,解码端根据当前块的每个像素位置的加权预测值确定当前块的加权预测值。
示例性的,针对步骤602-步骤607,其实现过程可以参见步骤402-步骤407,不同之处在于,步骤602-步骤607是解码端的处理流程,而不是编码端的处理流程,在此不再赘述。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更接近原始像素,并带来编码性能的提高。
实施例4:在上述实施例1-实施例3中,涉及权重预测角度,该权重预测角度可以是任意角度,如180度内的任意角度,或者,360度内的任意角度,对此权重预测角度不做限制,如10度,20度,30度等等。在一种可能的实施方式中,权重预测角度可以为水平角度;或者,权重预测角度可以为垂直角度;或者,权重预测角度的斜率的绝对值可以为2的n次方,n为整数,如正整数,0,负整数等。例如,权重预测角度的斜率的绝对值可以为1(即2的0次方),2(即2的1次方),1/2(即2的-1次方),4(即2的2次方),1/4(即2的-2次方),8(即2的3次方),1/8(即2的-3次方)等等。示例性的,参见图7所示,示出了8种权重预测角度,这些权重预测角度的斜率的绝对值为2的n次方。后续实施例中,可以对tan(权重预测角度)进行移位操作,因此,权重预测角度的斜率的绝对值为2的n次方时,在对tan(权重预测角度)进行移位操作时,可以避免除法,从而方便进行移位实现。
示例性的,不同块尺寸支持的权重预测角度的数量可以相同或者不同。
实施例5:在上述实施例1-实施例3中,针对当前块的每个像素位置,需要根据该像素位置指向的周边匹配位置关联的参考权重值,确定该像素位置的目标权重值。为了获得该周边匹配位置关联的参考权重值,在一种可能的实施方式中,采用如下方式:根据该周边匹配位置的坐标值与当前块的权重预测位置的坐标值,确定该周边匹配位置关联的参考权重值。
示例性的,若周边匹配位置是当前块外部上侧一行或下侧一行的周边位置,则周边匹配位置的坐标值是周边匹配位置的横坐标值,权重预测位置的坐标值是权重预测位置的横坐标值。或者,若周边匹配位置是当前块外部左侧一列或右侧一列的周边位置,则周边匹配位置的坐标值是周边匹配位置的纵坐标值,权重预测位置的坐标值是权重预测位置的纵坐标值。
示例性的,可以将当前块左上角的像素位置(如左上角的第一个像素位置)作为坐标原点,周边匹配位置的坐标值(如横坐标值或纵坐标值)和权重预测位置坐标值(如横坐标值或纵坐标值),均是相对于该坐标原点的坐标值。当然,也可以将当前块的其它像素位置作为坐标原点,实现方式与左上角的像素位置作为坐标原点类似,后续不再赘述。
在一种可能的实施方式中,在根据周边匹配位置的坐标值与权重预测位置的坐标值,确定周边匹配位置关联的参考权重值时,可以计算周边匹配位置的坐标值与权重预测位置的坐标值的差值。若该差值小于第一数值,则确定周边匹配位置关联的参考权重值为第一数值;若该差值大于第二数值,则确定周边匹配位置关联的参考权重值为第二数值;若该差值不小于第一数值,且该差值不大于第二数值,则确定周边匹配位置关联的参考权重值为该差值。
在另一种可能的实施方式中,在根据周边匹配位置的坐标值与权重预测位置的坐标值,确定周边匹配位置关联的参考权重值时,还可以根据周边匹配位置的坐标值与权重预测位置的坐标值的大小关系,直接确定周边匹配位置关联的参考权重值。
例如,若周边匹配位置的坐标值小于权重预测位置的坐标值,则确定周边匹配位置关联的参考权重值为第一数值;若周边匹配位置的坐标值不小于权重预测位置的坐标值,则确定周边匹配位置关联的参考权重值为第二数值。或者,若周边匹配位置的坐标值小于权重预测位置的坐标值,则确定周边匹配位置关联的参考权重值为第二数值;若周边匹配位置的坐标值不小于权重预测位置的坐标值,则确定周边匹配位置关联的参考权重值为第一数值。
示例性的,第一数值和第二数值均可以根据经验配置,且第一数值小于第二数值,对此第一数值和第二数值均不做限制。例如,第一数值是预先约定的参考权重值的最小值,如0,第二数值是预先约定的参考权重值的最大值,如8,当然,0和8也只是示例。
以下结合几个具体应用场景,对上述参考权重值的确定过程进行说明。示例性的,假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高。X为权重预测角度的tan值的log2对数值,如0或1。Y为权重预测位置的索引值,参见图5C所示,权重预测位置的索引值为0-6,权重预测位置的索引值为0时,表示权重预测位置是周边位置a0,权重预测位置的索引值为1时,表示权重预测位置是周边位置a1,以此类推。a,b,c,d为预设的常数值。
应用场景1:基于当前块的尺寸和权重预测角度确定有效数量(也可以称为参考权重有效长度,可以将有效数量记为ValidLenth)。基于当前块的尺寸,权重预测角度和权重预测位置确定权重预测位置的坐标值(可以将权重预测位置的坐标值记为FirstPos)。
例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1,在上述公式中,N和M是当前块的尺寸,X基于当前块的权重预测角度确定,>>X表示右移X位,<<1表示左移1位。在后续实施例中,>>就表示右移,<<均表示左移,后续不再赘述。
例如,可以通过如下公式确定权重预测位置的坐标值:FirstPos=(ValidLength>>1)-a+Y*((ValidLength-1)>>3),ValidLength是基于当前块的尺寸和权重预测角度确定,Y为权重预测位置的索引值,如当前块的权重预测位置为权重预测位置4时,Y为4。
然后,针对当前块的每个像素位置,根据该像素位置指向的周边匹配位置的坐标值与权重预测位置的坐标值,确定周边匹配位置关联的参考权重值,这个参考权重值就是该像素位置的目标权重值。例如,可以通过如下公式导出当前块的每个像素位置的目标权重值:
SampleWeight[x][y]=Clip3(0,8,(y<<1)+((x<<1)>>X)-FirstPos)。
在上述公式中,[x][y]表示当前块的像素位置的坐标,SampleWeight[x][y]表示像素位置[x][y]的目标权重值。(y<<1)+((x<<1)>>X)表示像素位置[x][y]指向的周边匹配位置(即基于权重预测角度指向的周边匹配位置)的坐标值。(y<<1)+((x<<1)>>X)–FirstPos,即周边匹配位置的坐标值与权重预测位置的坐标值的差值。Clip3(0,8,(y<<1)+((x<<1)>>X)-FirstPos)是该周边匹配位置关联的参考权重值,即像素位置[x][y]的目标权重值。
Clip3(0,8,(y<<1)+((x<<1)>>X)-FirstPos),表示将周边匹配位置的坐标值与权重预测位置的坐标值的差值限制在0与8之间,0表示上述第一数值,8表示上述第二数值。比如说,若该差值小于0,则SampleWeight[x][y]为0,若该差值大于8,则SampleWeight[x][y]为8,若该差值不小于0,且该差值不大于8,则SampleWeight[x][y]为该差值。
应用场景2:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1。可以通过如下公式确定权重预测位置的坐标值:FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X)。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=Clip3(0,8,(y<<1)-((x<<1)>>X)-FirstPos)。
应用场景3:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1。可以通过如下公式确定权重预测位置的坐标值:FirstPos=(ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X)。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=Clip3(0,8,(x<<1)-((y<<1)>>X)-FirstPos)。
应用场景4:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1。可以通过如下公式确定权重预测位置的坐标值:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=Clip3(0,8,(x<<1)+((y<<1)>>X)-FirstPos)。
示例性的,针对应用场景2、应用场景3和应用场景4来说,其实现原理与应用场景1的实现原理类似,不同之处在于,相关公式有所不同,在此不再重复赘述。
应用场景5:与应用场景1不同的是,本应用场景中,需要获取当前块的两个权重预测位置,例如,针对编码端来说,基于两个权重预测位置对应的率失真代价值,确定当前块的两个权重预测位置,且编码比特流中携带两个权重预测位置的指示信息。针对解码端来说,根据该指示信息确定两个权重预测位置。两个权重预测位置的获取方式与一个权重预测位置的获取方式类似,在此不再重复赘述。假设两个权重预测位置分别为权重预测位置a和权重预测位置b,Y1为权重预测位置a的索引值,Y2为权重预测位置b的索引值。
基于当前块的尺寸和权重预测角度确定有效数量(可以将有效数量记为ValidLenth),例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1。示例性的,有效数量的确定公式还可以替换为应用场景2-应用场景4中的公式,在此不再赘述。
基于当前块的尺寸,权重预测角度和权重预测位置a确定权重预测位置a的坐标值(将权重预测位置a的坐标值记为FirstPos_a),基于当前块的尺寸,权重预测角度和权重预测位置b确定权重预测位置b的坐标值(将权重预测位置b的坐标值记为FirstPos_b)。
例如,与上述应用场景1类似,本应用场景中,可以通过如下公式确定权重预测位置a的坐标值:FirstPos_a=(ValidLength>>1)-a+Y1*((ValidLength-1)>>3)。通过如下公式确定权重预测位置b的坐标值:FirstPos_b=(ValidLength>>1)-a+Y2*((ValidLength-1)>>3)。
示例性的,权重预测位置的坐标值的确定公式,还可以替换为应用场景2-应用场景4中的公式,只是权重预测位置的索引值替换为Y1或Y2,在此不再赘述。
然后,针对当前块的每个像素位置,根据该像素位置指向的周边匹配位置的坐标值,权重预测位置a的坐标值FirstPos_a,权重预测位置b的坐标值FirstPos_b,确定周边匹配位置关联的参考权重值,这个参考权重值就是该像素位置的目标权重值。
例如,假设FirstPos_a小于FirstPos_b,设置FirstPos_c=(FirstPos_a+FirstPos_b)/2,若周边匹配位置的坐标值小于FirstPos_c,则SampleWeight[x][y]=Clip3(0,8,(y<<1)+((x<<1)>>X)-FirstPos_a),在该情况下,周边位置的参考权重值从0递增至8。或者,若周边匹配位置的坐标值不小于FirstPos_c,则SampleWeight[x][y]=Clip3(0,8,FirstPos_b-(y<<1)+((x<<1)>>X)),在该情况下,周边位置的参考权重值从8递减至0。
在上述公式中,SampleWeight[x][y]表示像素位置[x][y]的目标权重值,(y<<1)+((x<<1)>>X)表示像素位置[x][y]指向的周边匹配位置的坐标值。
基于应用场景5,能够达到如下效果:当前块的周边位置的参考权重值,从0递增至8,然后从8递减至0;或者,当前块的周边位置的参考权重值,从8递减至0,然后从0递增至8。例如,当前块的周边位置的参考权重值可以依次为[0...0000123456788...8876543210000...0],或者,当前块的周边位置的参考权重值可以依次为[8...8888765432100...0012345678888...8],或者,当前块的周边位置的参考权重值可以依次为[0...00024688...88642000...0],或者,当前块的周边位置的参考权重值可以依次为[8...88864200...00246888...8]等,对此参考权重值不做限制。示例性的,权重预测位置a与权重预测位置b的融合(blending)的参考权重值不重叠。
实施例6:在上述实施例1-实施例3中,针对当前块的每个像素位置,需要根据该像素位置指向的周边匹配位置关联的参考权重值,确定该像素位置的目标权重值。为了获得周边匹配位置关联的参考权重值,在一种可能的实施方式中,可以采用如下方式:确定当前块的参考权重值列表,该参考权重值列表可以包括多个参考权重值,该参考权重值列表中的多个参考权重值是预先配置或者根据权重配置参数配置。根据目标索引从该参考权重值列表中选择有效数量个参考权重值,并根据有效数量个参考权重值,设置当前块外部的周边位置的参考权重值。示例性的,该有效数量可以是基于当前块的尺寸和权重预测角度确定;该目标索引可以是基于当前块的尺寸,权重预测角度和当前块的权重预测位置确定。
综上所述,由于已经为当前块外部的周边位置设置参考权重值,即每个周边位置均具有参考权重值,因此,在从当前块外部的周边位置中确定像素位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考权重值,也就是该像素位置的目标权重值。
以下结合具体实现步骤,对上述设置周边位置的参考权重值的过程进行说明。
步骤S1、确定当前块的参考权重值列表。
在一种可能的实施方式中,可以将序列级参考权重值列表,确定为当前块的参考权重值列表。比如说,编码端和解码端均配置序列级参考权重值列表A1,针对序列级的多帧图像来说,这些图像均使用参考权重值列表A1,即无论当前块的权重预测角度和权重预测位置是什么,序列级的多帧图像的每个当前块共用同一个参考权重值列表A1。基于此,可以将序列级参考权重值列表A1,确定为当前块的参考权重值列表。
在另一种可能的实施方式中,可以将预设的参考权重值列表,确定为当前块的参考权重值列表。比如说,编码端和解码端均预设参考权重值列表,针对多个序列的所有图像来说,均使用该参考权重值列表,即无论权重预测角度和权重预测位置是什么,多个序列的所有图像的每个块共用该参考权重值列表。显然,均预的参考权重值列表的使用范围大于将序列级参考权重值列表。基于此,可以将预设的参考权重值列表确定为当前块的参考权重值列表。
在另一种可能的实施方式中,可以将权重预测角度对应的参考权重值列表,确定为当前块的参考权重值列表。比如说,编码端和解码端均配置多个参考权重值列表,若干个权重预测角度共用同一个参考权重值列表。例如,配置参考权重值列表A2和参考权重值列表A3,权重预测角度1和权重预测角度2共用同一个参考权重值列表A2,权重预测角度3使用参考权重值列表A3。基于此,在得到当前块的权重预测角度后,若当前块的权重预测角度为权重预测角度1,则将权重预测角度1对应的参考权重值列表A2确定为当前块的参考权重值列表。
在另一种可能的实施方式中,可以将权重预测角度和权重预测位置对应的参考权重值列表,确定为当前块的参考权重值列表。比如说,编码端和解码端均配置多个参考权重值列表,针对权重预测角度和权重预测位置的不同组合,可以对应相同或者不同的参考权重值列表。
例如,配置参考权重值列表A4,参考权重值列表A5和参考权重值列表A6,权重预测角度1和权重预测位置0-2共用同一个参考权重值列表A4,权重预测角度1和权重预测位置3-5共用同一个参考权重值列表A5,权重预测角度2和权重预测位置0-5共用同一个参考权重值列表A6。基于此,在得到当前块的权重预测角度和权重预测位置后,若当前块的权重预测角度为权重预测角度1,当前块的权重预测位置为权重预测位置4,则将权重预测角度1和权重预测位置4对应的参考权重值列表A5,确定为当前块的参考权重值列表。
在另一种可能的实施方式中,可以将当前块的尺寸和权重预测角度对应的参考权重值列表,确定为当前块的参考权重值列表。比如说,编码端和解码端均配置多个参考权重值列表,针对尺寸和权重预测角度的不同组合,可以对应相同或者不同的参考权重值列表。
例如,配置参考权重值列表A7和参考权重值列表A8,权重预测角度1和尺寸1采用参考权重值列表A7,权重预测角度1和尺寸2、权重预测角度2和尺寸1均采用参考权重值列表A8。基于此,若权重预测角度为权重预测角度1,当前块的尺寸为尺寸1,则将权重预测角度1和尺寸1对应的参考权重值列表A7,确定为当前块的参考权重值列表。
示例性的,每种有效数量可以对应一个参考权重值列表,如有效数量s1对应参考权重值列表A7,有效数量s2对应参考权重值列表A8。基于此,可以利用当前块的权重预测角度和当前块的尺寸确定有效数量,并将该有效数量对应的参考权重值列表,确定为当前块的参考权重值列表。例如,可以采用如下方式确定有效数量:ValidLenth=(N+(M>>X))<<1,N和M分别是当前块的高和宽,X为当前块的权重预测角度的tan值的log2对数值,如0或1。
另外,可以将有效数量进行量化后归类,例如有效数量30,31,32都可以量化为32,从而对应同一个参考权重值列表。
综上所述,可以确定当前块的参考权重值列表,该参考权重值列表可以包括多个参考权重值,该参考权重值列表中的多个参考权重值是预先配置或者根据权重配置参数配置。
关于当前块的参考权重值列表,参考权重值列表中的参考权重值数量可以为设定的固定值,该固定值可以根据经验任意设置,对此不做限制。或者,参考权重值列表中的参考权重值数量可以与当前块所在当前帧的尺寸(如当前帧的宽度或高度)相关,如参考权重值数量可以比当前帧的宽度大,或者与当前帧的宽度相同;参考权重值数量可以比当前帧的高度大,或者与当前帧的高度相同,对此不做限制,参考权重值数量可以根据实际需要进行选择。
示例性的,针对参考权重值列表中的多个参考权重值,可以是非一致的参考权重值,比如说,参考权重值列表中的多个参考权重值,可以不完全相同。
在一种可能的实施方式中,针对参考权重值列表中的多个参考权重值,可以单调递增,或,单调递减。或者,针对参考权重值列表中的多个参考权重值,可以先单调递增,再单调递减;或,可以先单调递减,再单调递增。或者,针对参考权重值列表中的多个参考权重值,可以先包括多个第一数值,再包括多个第二数值,或,先包括多个第二数值,再包括多个第一数值。以下结合几个具体情况,对上述参考权重值列表进行说明。
情况1:参考权重值列表中的多个参考权重值可以单调递增或单调递减。例如,参考权重值列表为[8888...8876543210000...00],即参考权重值列表中的多个参考权重值单调递减。又例如,参考权重值列表为[0000...0012345678888...88],即参考权重值列表中的多个参考权重值单调递增。当然,上述只是示例,对此参考权重值列表不做限制。
示例性的,参考权重值列表中的参考权重值,可以是预先配置的,或者,根据权重配置参数配置的。权重配置参数可以包括权重变换率和权重变换的起始位置,该权重变换率可以是根据经验配置的数值,该权重变换的起始位置也可以是根据经验配置的数值。
参考权重值列表中的多个参考权重值,可以单调递增或单调递减。例如,参考权重值的最大值为M1,参考权重值的最小值为M2,则针对参考权重值列表中的多个参考权重值,从最大值M1至最小值M2单调递减;或从最小值M2至最大值M1单调递增。假设M1为8,M2为0,则多个参考权重值,可以从8至0单调递减;或从0至8单调递增。
示例性的,针对预先配置参考权重值列表中的参考权重值的过程,可以任意配置参考权重值列表中的多个参考权重值,只要多个参考权重值单调递增或单调递减即可。
示例性的,针对根据权重配置参数配置参考权重值列表中的参考权重值的过程,可以先获取权重变换率和权重变换的起始位置,然后,根据权重变换率和权重变换的起始位置,确定参考权重值列表中的多个参考权重值。权重变换率和权重变换的起始位置均可以是预设数值,对此权重变换率和权重变换的起始位置不做限制,可以根据经验进行配置。
例如,可以采用如下方式确定参考权重值列表中的参考权重值:y=Clip3(最小值,最大值,a*(x-s)),x表示参考权重值列表中的位置索引,如x为1,表示参考权重值列表中的第1个位置,y表示参考权重值列表中的第1个参考权重值。a表示权重变换率,s表示权重变换的起始位置。Clip3用于限制参考权重值位于最小值与最大值之间,最小值和最大值均可以根据经验配置,为了方便描述,后续以最小值为0,最大值为8为例进行说明。
a表示权重变换率,可以根据经验进行配置,如a可以是不为0的整数,如a可以是-4、-3、-2、-1、1、2、3、4等,为了方便描述,以a为1为例进行说明。若a为1,则参考权重值从0到8需要经过0,1,2,3,4,5,6,7,8,或者,参考权重值从8到0需要经过8,7,6,5,4,3,2,1,0。
s表示权重变换的起始位置,可以根据经验进行配置,例如,s可以是参考权重值列表中参考权重值总数量的一半;或者,s可以比参考权重值总数量的一半略小,如参考权重值总数量的一半减去4;或者,s可以比参考权重值总数量的一半略大,如参考权重值总数量的一半加上4。当然,上述只是s取值的几个示例,对此s的取值不做限制。
综上所述,在根据权重配置参数配置参考权重值列表中的参考权重值时,可以采用如下方式:ReferenceWeightsWhole[x]=Clip3(0,8,x-Z);或者,ReferenceWeightsWhole[x]=Clip3(0,8,Z-x);或者,ReferenceWeightsWhole[x]=Clip3(0,4,x-Z);或者,ReferenceWeightsWhole[x]=Clip3(0,4,Z-x)。当然,上述方式只是几个示例,对此实现方式不做限制。
在上述公式中,x的取值范围是0~WholeLenth-1,当x为1时,ReferenceWeightsWhole[x]表示参考权重值列表中的第1个参考权重值,当x为2时,ReferenceWeightsWhole[x]表示参考权重值列表中的第2个参考权重值,以此类推。示例性的,若当前块外部的周边位置是上侧一行或下侧一行的周边位置,则WholeLenth基于当前帧的宽度确定,若当前块外部的周边位置是左侧一列或右侧一列的周边位置,则WholeLenth基于当前帧的高度确定。
在上述公式a*(x-s)中,若a为1,则a*(x-s)=x-s,即Clip3(0,8,x-Z)中的x–Z与x-s等价,Z表示权重变换的起始位置。若a为-1,则a*(x-s)=s-x,即Clip3(0,8,Z-x)中的Z-x与s-x等价,Z表示权重变换的起始位置。当a为其它数值时,实现过程类似,只要参考权重值列表中的参考权重值满足y=Clip3(最小值,最大值,a*(x-s))即可。Clip3(0,8)用于将参考权重值限制在0与8之间,Clip3(0,4)用于将参考权重值限制在0与4之间。
在上述公式中,Z表示权重变换的起始位置,可以根据经验配置,例如,假设x的取值范围为0-511,Z为255,将Z代入公式ReferenceWeightsWhole[x]=Clip3(0,8,x-Z),针对0-511中的任意取值,可以得到ReferenceWeightsWhole[x],即得到512个参考权重值,而512个参考权重值就构成参考权重值列表。例如,当x的取值为0-255时,参考权重值均为0,当x的取值为256时,参考权重值为1,以此类推,当x的取值为262时,参考权重值为7,当的取值为263-511时,参考权重值均为8。综上所述,当a为1时,Clip3(0,8,x-Z)用于使参考权重值单调递增。同理,将Z代入其它公式中,也可以得到512个参考权重值,并基于512个参考权重值构成参考权重值列表,例如,当a为-1时,Clip3(0,8,Z-x)用于使参考权重值单调递减。Clip3(0,4)用于将参考权重值限制在0与4之间,对此不再重复赘述。
综上所述,可以得到当前块的参考权重值列表,且该参考权重值列表可以包括多个参考权重值,该参考权重值列表中的多个参考权重值可以单调递增或单调递减。在一种可能的实施方式中,针对参考权重值列表,该参考权重值列表还可以包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值。
目标区域包括基于权重变换的起始位置确定的一个或者多个参考权重值。例如,基于权重变换的起始位置,确定一个参考权重值,将这个参考权重值作为目标区域。比如说,权重变换的起始位置s是255,则可以将第259个参考权重值作为目标区域,或者,将第258个参考权重值作为目标区域,或者,将第260个参考权重值作为目标区域,当然,上述只是几个示例,对此不做限制。又例如,基于权重变换的起始位置,确定多个参考权重值,将这多个参考权重值作为目标区域,比如说,将第256-262个参考权重值作为目标区域,或者,将258-260个参考权重值作为目标区域,当然,上述只是几个示例,对此不做限制。
例如,目标区域可以包括参考权重值为4的参考权重值,例如,第259个参考权重值为4,因此,若目标区域包括一个参考权重值,则该目标区域可以包括第259个参考权重值,或者,若目标区域包括多个参考权重值,则该目标区域可以包括第256-262个参考权重值,或第258-260个参考权重值,对此不做限制,只要该目标区域内存在第259个参考权重值即可。
综上所述,目标区域可以包括一个参考权重值;或者,目标区域可以包括多个参考权重值。若目标区域包括多个参考权重值,则目标区域的多个参考权重值单调递增或单调递减。所述单调递增可以是严格单调递增(即目标区域的多个参考权重值严格单调递增);所述单调递减可以是严格单调递减(即目标区域的多个参考权重值严格单调递减)。例如,目标区域的多个参考权重值从1-7单调递增,或者,目标区域的多个参考权重值从7-1单调递减。
示例性的,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值单调递增或单调递减。例如,第一邻近区域的参考权重值均为0,目标区域包括一个参考权重值,该参考权重值为1,第二邻近区域的参考权重值从2-8单调递增。
或者,第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,第二参考权重值与第三参考权重值不同。例如,第一邻近区域的参考权重值均为0,目标区域包括多个参考权重值,多个参考权重值从1-7单调递增,第二邻近区域的参考权重值均为8,显然,第一邻近区域的参考权重值与第二邻近区域的参考权重值不同。
或者,第一邻近区域的参考权重值单调递增或单调递减,第二邻近区域的参考权重值单调递增或单调递减;例如,第一邻近区域的参考权重值单调递增,第二邻近区域的参考权重值也单调递增;又例如,第一邻近区域的参考权重值单调递减,第二邻近区域的参考权重值也单调递减。例如,第一邻近区域的参考权重值从0-3单调递增,目标区域包括一个参考权重值,该参考权重值为4,第二邻近区域的参考权重值从5-8单调递增。
情况2:参考权重值列表中的多个参考权重值先单调递增再单调递减,或,多个参考权重值先单调递减再单调递增。例如,参考权重值列表为[88...88765432100...00123456788…88],即参考权重值列表中的多个参考权重值,先单调递减再单调递增。又例如,参考权重值列表为[00...00123456788...88765432100…00],即参考权重值列表中的多个参考权重值,先单调递增再单调递减。当然,上述只是示例,对此参考权重值列表不做限制。
示例性的,参考权重值列表中的参考权重值,可以是预先配置的,或者,根据权重配置参数配置的。权重配置参数可以包括权重变换率和权重变换的起始位置,该权重变换率可以是根据经验配置的数值,该权重变换的起始位置也可以是根据经验配置的数值。
示例性的,假设参考权重值的最大值为M1,参考权重值的最小值为M2,则针对参考权重值列表中的多个参考权重值,从最大值M1至最小值M2单调递减,然后从最小值M2至最大值M1单调递增。或者,从最小值M2至最大值M1单调递增,然后从最大值M1至最小值M2单调递减。假设M1为8,M2为0,则多个参考权重值,可以从8至0单调递减再从0至8单调递增;或者,多个参考权重值,从0至8单调递增再从8至0单调递减。
示例性的,针对预先配置参考权重值列表中的参考权重值的过程,可以任意配置参考权重值列表中的多个参考权重值,只要多个参考权重值先单调递增再单调递减,或者,多个参考权重值先单调递减再单调递增即可,对于多个参考权重值不做限制。
示例性的,针对根据权重配置参数配置参考权重值列表中的参考权重值的过程,可以先获取第一权重变换率,第二权重变换率,第一权重变换的起始位置,第二权重变换的起始位置,然后,根据第一权重变换率,第二权重变换率,第一权重变换的起始位置,第二权重变换的起始位置,确定参考权重值列表中的多个参考权重值。第一权重变换率,第二权重变换率,第一权重变换的起始位置,第二权重变换的起始位置均可以是预设数值,对第一权重变换率,第二权重变换率,第一权重变换的起始位置,第二权重变换的起始位置均不做限制。
例如,可以采用如下方式确定参考权重值列表中的参考权重值:当x位于[0,k]时,y=Clip3(最小值,最大值,a1*(x-s1))。当x位于[k+1,t]时,y=Clip3(最小值,最大值,a2*(x-s2))。x表示参考权重值列表中的位置索引,如x为1,表示参考权重值列表中的第1个位置,y表示参考权重值列表中的第1个参考权重值。k是根据经验配置的数值,对此不做限制,如可以是参考权重值列表中参考权重值总数量的一半,或者其它数值,k只要小于t即可,t是参考权重值列表中参考权重值总数量。a1表示第一权重变换率,a2表示第二权重变换率。s1表示第一权重变换的起始位置,s2表示第二权重变换的起始位置。
Clip3用于限制参考权重值位于最小值与最大值之间,最小值和最大值均可以根据经验进行配置,为了方便描述,后续以最小值为0,最大值为8为例进行说明。
a1和a2均表示权重变换率,可以根据经验进行配置,如a1可以是不为0的整数,如a1可以是-4、-3、-2、-1、1、2、3、4等,a2可以是不为0的整数,如a2可以是-4、-3、-2、-1、1、2、3、4等。示例性的,当a1为正整数时,a2可以为负整数,当a1为负整数时,a2可以为正整数。例如,a1可以为-a2,即两者的变化率是一致的,反映到参考权重值的设置上,就是参考权重值的渐变宽度一致。为了方便描述,以a1为1,a2为-1为例,则参考权重值从0到8需要经过0,1,2,3,4,5,6,7,8,然后再从8到0,经过8,7,6,5,4,3,2,1,0。或者,参考权重值从8到0,经过8,7,6,5,4,3,2,1,0,然后再从0到8需要经过0,1,2,3,4,5,6,7,8。以a1为2,a2为-2为例,则参考权重值从0到8需要经过0,2,4,6,8,然后再从8到0,经过8,6,4,2,0。或者,参考权重值从8到0,经过8,6,4,2,0,然后再从0到8需要经过0,2,4,6,8。
s1和s2均表示权重变换的起始位置,可以根据经验进行配置,例如,s1是区间[0,k]的参考权重值的权重变换的起始位置,s1可以是k的一半;或者,s1可以比k一半略小,如k的一半减去4;或者,s1可以比k的一半略大,如k的一半加上4。当然,上述只是几个示例,对s1取值不做限制。s2是区间[k+1,t]的参考权重值的权重变换的起始位置,s2可以是q(即t与k+1的差值)的一半;或者,s2可以比q一半略小,如q的一半减去4;或者,s2可以比q的一半略大,如q的一半加上4。当然,上述只是几个示例,对s2取值不做限制。
综上所述,可以得到当前块的参考权重值列表,且该参考权重值列表可以包括多个参考权重值,该参考权重值列表中的多个参考权重值可以先单调递增再单调递减,或者,多个参考权重值先单调递减再单调递增。在一种可能的实施方式中,针对参考权重值列表,该参考权重值列表还可以包括第一目标区域的参考权重值,第二目标区域的参考权重值,只与第一目标区域相邻的第一邻近区域的参考权重值,与第一目标区域和第二目标区域均相邻的第二邻近区域的参考权重值,只与第二目标区域相邻的第三邻近区域的参考权重值。
第一目标区域包括基于第一权重变换的起始位置确定的一个或者多个参考权重值。例如,基于第一权重变换的起始位置,确定一个参考权重值,将这个参考权重值作为第一目标区域。或,基于第一权重变换的起始位置,确定多个参考权重值,将这多个参考权重值作为第一目标区域。若第一目标区域包括多个参考权重值,则第一目标区域的多个参考权重值单调递增或单调递减。所述单调递增可以是严格单调递增(第一目标区域的多个参考权重值严格单调递增);所述单调递减可以是严格单调递减(第一目标区域的多个参考权重值严格单调递减)。
第二目标区域包括基于第二权重变换的起始位置确定的一个或者多个参考权重值。例如,基于第二权重变换的起始位置,确定一个参考权重值,将这个参考权重值作为第二目标区域。或,基于第二权重变换的起始位置,确定多个参考权重值,将这多个参考权重值作为第二目标区域。若第二目标区域包括多个参考权重值,则第二目标区域的多个参考权重值单调递增或单调递减。所述单调递增可以是严格单调递增(第二目标区域的多个参考权重值严格单调递增);所述单调递减可以是严格单调递减(第二目标区域的多个参考权重值严格单调递减)。
若第一目标区域的多个参考权重值单调递增(如严格单调递增),则第二目标区域的多个参考权重值单调递减(如严格单调递减)。或者,若第一目标区域的多个参考权重值单调递减(如严格单调递减),则第二目标区域的多个参考权重值单调递增(如严格单调递增)。
示例性的,第一邻近区域的参考权重值均为第一参考权重值;第二邻近区域的参考权重值均为第二参考权重值;第三邻近区域的参考权重值均为第三参考权重值。第一参考权重值与第三参考权重值可以相同,第一参考权重值与第二参考权重值可以不同,第三参考权重值与第二参考权重值可以不同。例如,第一邻近区域的参考权重值均为0,第二邻近区域的参考权重值均为8,第三邻近区域的参考权重值均为0;或者,第一邻近区域的参考权重值均为8,第二邻近区域的参考权重值均为0,第三邻近区域的参考权重值均为8。
或者,第一邻近区域的参考权重值均为第一参考权重值;第二邻近区域的参考权重值单调递减;第三邻近区域的参考权重值单调递增。例如,第一邻近区域的参考权重值均为8,第一目标区域包括一个参考权重值7,第二邻近区域的参考权重值从6到0单调递减,第二目标区域包括一个参考权重值1,第三邻近区域的参考权重值从2到8单调递增。
或者,第一邻近区域的参考权重值单调递减;第二邻近区域的参考权重值先单调递减再单调递增;第三邻近区域的参考权重值单调递增。例如,第一邻近区域的参考权重值从8到5单调递减,第一目标区域包括一个参考权重值4,第二邻近区域的参考权重值先从3到0单调递减再从0到3单调递增,第二目标区域包括一个参考权重值4,第三邻近区域的参考权重值从5到8单调递增。
或者,第一邻近区域的参考权重值单调递减;第二邻近区域的参考权重值单调递增;第三邻近区域的参考权重值均为第三参考权重值。例如,第一邻近区域的参考权重值从8到1单调递减,第一目标区域包括一个参考权重值0,第二邻近区域的参考权重值从0到7单调递增,第二目标区域包括一个参考权重值8,第三邻近区域的参考权重值均为8。
或者,第一邻近区域的参考权重值均为第一参考权重值;第二邻近区域的参考权重值单调递增;第三邻近区域的参考权重值单调递减。例如,第一邻近区域的参考权重值均为0,第一目标区域包括一个参考权重值1,第二邻近区域的参考权重值从1到8单调递增,第二目标区域包括一个参考权重值7,第三邻近区域的参考权重值从7到0单调递减。
或者,第一邻近区域的参考权重值单调递增;第二邻近区域的参考权重值先单调递增再单调递减;第三邻近区域的参考权重值单调递减。例如,第一邻近区域的参考权重值从0到3单调递增,第一目标区域包括一个参考权重值4,第二邻近区域的参考权重值先从5到8单调递增再从8到5单调递减,第二目标区域包括一个参考权重值4,第三邻近区域的参考权重值从4到0单调递减。
或者,第一邻近区域的参考权重值单调递增;第二邻近区域的参考权重值单调递减;第三邻近区域的参考权重值均为第三参考权重值。例如,第一邻近区域的参考权重值从0到7单调递增,第一目标区域包括一个参考权重值8,第二邻近区域的参考权重值从7到0单调递减,第二目标区域包括一个参考权重值0,第三邻近区域的参考权重值均为0。
当然,上述只是几个示例,对此不做限制,只要参考权重值列表中的多个参考权重值满足以下需求即可:从0递增至8,再从8递减至0;或者,从8递减至0,再从0递增至8。
情况3:针对参考权重值列表中的多个参考权重值,可以先包括多个第一数值,再包括多个第二数值,或者,先包括多个第二数值,再包括多个第一数值。例如,参考权重值列表可以为[88...8800...00],又例如,参考权重值列表可以为[00...0088...88]。
示例性的,参考权重值列表中的参考权重值,可以是预先配置的,或者,根据权重配置参数配置的,权重配置参数可以包括权重变换的起始位置,权重变换的起始位置可以是根据经验配置的数值。针对预先配置参考权重值列表中的参考权重值的过程,可以任意配置参考权重值列表中的多个参考权重值,只要多个参考权重值只包括第一数值和第二数值即可。
针对根据权重配置参数配置参考权重值列表中的参考权重值的过程,可以先获取权重变换的起始位置,然后,根据权重变换的起始位置确定参考权重值列表中的多个参考权重值。例如,权重变换的起始位置表示参考权重值列表中的第s个参考权重值,因此,第s个参考权重值之前(不包括第s个参考权重值)的所有参考权重值为第一数值(如8),第s个参考权重值之后(包括第s个参考权重值)的所有参考权重值为第二数值(如0)。或者,第s个参考权重值之前(不包括第s个参考权重值)的所有参考权重值为第二数值(如0),第s个参考权重值之后(包括第s个参考权重值)的所有参考权重值为第一数值(如8)。
基于上述几种情况,均可以得到当前块的参考权重值列表,为了方便描述,后续实施例中,以情况1的参考权重值列表为例进行说明,其它情况的参考权重值列表的实现过程类似。
步骤S2、基于当前块的尺寸和当前块的权重预测角度确定有效数量。
示例性的,该有效数量是指当前块外部存在有效数量个周边位置,比如说,当前块内部的像素位置只会指向所述有效数量个周边位置,即,只需要为所述有效数量个周边位置设置参考权重值,就可以得到当前块内部的每个像素位置的目标权重值。
关于基于当前块的尺寸和当前块的权重预测角度确定有效数量,参见后续实施例。
步骤S3、基于当前块的尺寸,权重预测角度和权重预测位置确定目标索引。
示例性的,该目标索引可以是指参考权重值列表中的第几个参考权重值,比如说,当目标索引为259时,可以表示参考权重值列表中的第259个参考权重值。
关于基于当前块的尺寸,权重预测角度和权重预测位置确定目标索引,参见后续实施例。
步骤S4、根据目标索引从该参考权重值列表中选择有效数量个参考权重值。
示例性的,假设目标索引为q1,有效数量为r,若目标索引作为参考权重值列表中需要被选取的第一个参考权重值,则从参考权重值列表中选取第q1至第q2个参考权重值,q2与q1之间的差值为r,从而从参考权重值列表中选择r个参考权重值。或者,若目标索引作为参考权重值列表中需要被选取的最后一个参考权重值,则从参考权重值列表中选取第q3至第q1个参考权重值,q1与q3之间的差值为r,从而从参考权重值列表中选择r个参考权重值。
当然,上述方式只是示例,目标索引还可以作为参考权重值列表中需要被选取的中间位置的参考权重值,实现方式类似,在此不再赘述,后续以目标索引作为参考权重值列表中需要被选取的第一个参考权重值为例,即,选取第q1至第q2个参考权重值。
步骤S5、根据有效数量个参考权重值,设置当前块外部的周边位置的参考权重值。
示例性的,当前块外部的周边位置的数量为有效数量,且从参考权重值列表中选择有效数量个参考权重值,因此,周边位置的数量与选择的参考权重值的数量相同,可以将参考权重值列表中的有效数量个参考权重值,设置为当前块外部的周边位置的参考权重值。
例如,针对有效数量个参考权重值的第1个参考权重值,将该参考权重值设置为当前块外部的第1个周边位置的参考权重值,针对有效数量个参考权重值的第2个参考权重值,将该参考权重值设置为当前块外部的第2个周边位置的参考权重值,以此类推。
在一种可能的实施方式中,假设从参考权重值列表中选择r个参考权重值,则从参考权重值列表中截取r个参考权重值,并将r个参考权重值设置为当前块外部的r个周边位置的参考权重值。例如,参考权重值列表为[0000000000000001234567888888888888888],参见图8A所示,从参考权重值列表中截取如下参考权重值[001234567888888888888],并将这些参考权重值设置为周边位置的参考权重值。参见图8B所示,从参考权重值列表中截取如下参考权重值[000000123456788888],并将这些参考权重值设置为周边位置的参考权重值。参见图8C所示,从参考权重值列表中截取如下参考权重值[000001234567888888888888888],并将这些参考权重值设置为周边位置的参考权重值。参见图8D所示,从参考权重值列表中截取如下参考权重值[001234567888888888],并将这些参考权重值设置为周边位置的参考权重值。
在另一种可能的实施方式中,假设从参考权重值列表中选择r个参考权重值,则不需要从参考权重值列表中截取r个参考权重值,而是通过对参考权重值列表中的参考权重值进行移动,以使所述r个参考权重值作为当前块外部的r个周边位置的参考权重值。例如,参考权重值列表为[0000000000000001234567888888888888888],参见图8E所示,通过对参考权重值列表中的参考权重值进行移动,以使如下参考权重值[001234567888888888888]与当前块外部的r个周边位置相对应,继而能够将这些参考权重值设置为r个周边位置的参考权重值,但是,图8E中仍然存在参考权重值列表中未被选择的其它参考权重值。参见图8F所示,通过对参考权重值列表中的参考权重值进行移动,以使如下参考权重值[000000123456788888]与当前块外部的r个周边位置相对应,继而能够将这些参考权重值设置为r个周边位置的参考权重值。参见图8G所示,通过对参考权重值列表中的参考权重值进行移动,以使如下参考权重值[000001234567888888888888888]与当前块外部的r个周边位置相对应,继而能够将这些参考权重值设置为r个周边位置的参考权重值。参见图8H所示,通过对参考权重值列表中的参考权重值进行移动,以使如下参考权重值[001234567888888888]与当前块外部的r个周边位置相对应,继而能够将这些参考权重值设置为r个周边位置的参考权重值。
以下结合几个具体应用场景,对上述步骤S1-步骤S5的过程进行说明。示例性的,假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高。X为权重预测角度的tan值的log2对数值,如0或1。Y为权重预测位置的索引值,a,b,c,d,e,f为预设的常数值。
示例性的,可以设置参考权重值列表为ReferenceWeightsWhole[x],x的取值范围是0~WholeLenth-1,当x为1时,ReferenceWeightsWhole[x]表示参考权重值列表中的第1个参考权重值,以此类推。WholeLenth=(MAX_SIZE<<e)–f,MAX_SIZE为允许加权预测的最大块尺寸。ReferenceWeightsWhole[x]=Clip3(0,8,x-(HalfLenth-4)),HalfLenth–4的取值,可以为上述实施例中的Z,即权重变换的起始位置。HalfLenth=WholeLenth>>1。当然,HalfLenth–4的取值可以更新为HalfLenth,或者HalfLenth–2,或者HalfLenth+4等,对此不做限制,可以根据实际需要任意设置,后续以HalfLenth–4为例进行说明。
应用场景1:基于当前块的尺寸和当前块的权重预测角度确定有效数量(也可以称为参考权重有效长度,可以将该有效数量记为ValidLenth)。基于当前块的尺寸,当前块的权重预测角度和当前块的权重预测位置确定目标索引(可以将该目标索引记为FirstIndex)。
例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1,在上述公式中,N和M是当前块的尺寸,X基于当前块的权重预测角度确定。当然,上述公式只是示例。
可以通过如下公式确定目标索引:FirstIndex=(HalfLenth-4)-((ValidLength>>1)-a+Y*((ValidLength-1)>>3)),ValidLength是基于当前块的尺寸和权重预测角度确定,Y为权重预测位置的索引值,如当前块的权重预测位置为权重预测位置4时,Y为4,HalfLenth–4的取值为权重变换的起始位置。当然,上述公式只是示例,对此不做限制。
然后,可以根据目标索引从该参考权重值列表中选择有效数量个参考权重值,并根据有效数量个参考权重值,设置当前块外部的周边位置的参考权重值。针对当前块的每个像素位置,根据该像素位置指向的周边匹配位置的参考权重值,确定该像素位置的目标权重值。例如,可以通过如下公式导出当前块的每个像素位置的目标权重值:
SampleWeight[x][y]=ReferenceWeightsWhole[(y<<1)+((x<<1)>>X)+FirstIndex]。
在上述公式中,[x][y]表示当前块的像素位置的坐标,SampleWeight[x][y]表示像素位置[x][y]的目标权重值。(y<<1)+((x<<1)>>X)表示像素位置[x][y]指向的周边匹配位置(即基于权重预测角度指向的周边匹配位置)是第几个周边位置,如所有周边位置中的第5个周边位置,将(y<<1)+((x<<1)>>X)记为p。ReferenceWeightsWhole[p+FirstIndex],表示参考权重值列表中的第p+FirstIndex个参考权重值,也就是说,参考权重值列表中的第p+FirstIndex个参考权重值,表示周边匹配位置关联的参考权重值,即像素位置[x][y]的目标权重值。
应用场景2:可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1。通过如下公式确定目标索引:FirstIndex=(HalfLenth-4)-((ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X))。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=ReferenceWeightsWhole[(y<<1)-((x<<1)>>X)+FirstIndex]。
应用场景3:可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1。通过如下公式确定目标索引:FirstIndex=(HalfLenth-4)–((ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X))。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=ReferenceWeightsWhole[(x<<1)-((y<<1)>>X)+FirstIndex)]。
应用场景4:可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1。可以通过如下公式确定目标索引:FirstIndex=(HalfLenth-4)–((ValidLength>>1)-d+Y*((ValidLength-1)>>3))。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=ReferenceWeightsWhole[(x<<1)+((y<<1)>>X)+FirstIndex]。
示例性的,针对应用场景2、应用场景3和应用场景4来说,其实现原理与应用场景1的实现原理类似,不同之处在于,相关公式有所不同,在此不再重复赘述。
应用场景5:可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1;通过如下公式确定目标索引:FirstIndex=(HalfLenth-4)-((ValidLength>>1)-a+Y*((ValidLength-1)>>3))。然后,在得到有效数量和目标索引后,可以根据目标索引从该参考权重值列表中选择有效数量个参考权重值,这些参考权重值组成当前块的参考权重列表FinalReference,也就是说,可以基于统一的参考权重列表ReferenceWeightsWhole,设置当前块的参考权重列表FinalReference,当前块的参考权重列表FinalReference中只包括有效数量个参考权重值。
例如,可以通过如下公式确定当前块的参考权重列表FinalReference:FinalReference[x]=ReferenceWeightsWhole[x+FirstIndex],x的取值范围是0~ValidLenth-1。示例性的,x为0时,表示参考权重列表FinalReference中的第1个参考权重值,FinalReference[x]的参考权重值是参考权重列表ReferenceWeightsWhole中的第x+FirstIndex个参考权重值,以此类推。
然后,根据当前块的参考权重列表FinalReference,设置当前块外部的周边位置的参考权重值。针对当前块的每个像素位置,根据该像素位置指向的周边匹配位置的参考权重值,确定该像素位置的目标权重值。例如,通过如下公式导出当前块的每个像素位置的目标权重值:
SampleWeight[x][y]=FinalReference[(y<<1)+((x<<1)>>X)];
在上述公式中,[x][y]表示当前块的像素位置的坐标,SampleWeight[x][y]表示像素位置[x][y]的目标权重值。(y<<1)+((x<<1)>>X)表示像素位置[x][y]指向的周边匹配位置(即基于权重预测角度指向的周边匹配位置)是第几个周边位置,如所有周边位置中的第5个周边位置,FinalReference[(y<<1)+((x<<1)>>X)]表示该周边位置的参考权重值,也就是说,针对第5个周边位置,选取FinalReference[x]中的第5个参考权重值,而这个参考权重值表示周边匹配位置关联的参考权重值,即像素位置[x][y]的目标权重值。
应用场景6:通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1;通过如下公式确定目标索引:FirstIndex=(HalfLenth-4)–((ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X));通过如下公式确定当前块的参考权重列表FinalReference:FinalReference[x]=ReferenceWeightsWhole[x+FirstIndex];通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=FinalReference[(y<<1)-((x<<1)>>X)]。
应用场景7:通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1;通过如下公式确定目标索引:FirstIndex=(HalfLenth–4)-((ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X));通过如下公式确定当前块的参考权重列表FinalReference:FinalReference[x]=ReferenceWeightsWhole[x+FirstIndex];通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=FinalReference[(x<<1)-((y<<1)>>X)]。
应用场景8:通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1;通过如下公式确定目标索引:FirstIndex=(HalfLenth-4)–((ValidLength>>1)-d+Y*((ValidLength-1)>>3));通过如下公式确定当前块的参考权重列表FinalReference:FinalReference[x]=ReferenceWeightsWhole[x+FirstIndex];通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=FinalReference[(x<<1)+((y<<1)>>X)]。
示例性的,针对应用场景6、应用场景7和应用场景8来说,其实现原理与应用场景5的实现原理类似,不同之处在于,相关公式有所不同,在此不再重复赘述。
在上述实施例6中,ValidLenth与权重预测角度和块尺寸相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将权重预测角度设置为固定参数值,ValidLenth只与块尺寸相关。在其它实施例中,ValidLenth也有类似的确定方式,本文不再重复赘述。
在上述实施例6中,FirstIndex与权重预测角度、块尺寸、权重预测位置相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将权重预测角度设置为固定参数值,FirstIndex只与块尺寸和权重预测位置相关。或者,可以将权重预测位置设置为固定参数值,FirstIndex只与块尺寸和权重预测角度相关。或者,可以将权重预测角度和权重预测位置均设置为固定参数值,这两个固定参数值可以相同或者不同,FirstIndex只与块尺寸相关。在其它实施例中,FirstIndex(或FirstPos)也有类似的确定方式,本文不再重复赘述。
实施例7:在上述实施例1-实施例3中,针对当前块的每个像素位置,需要根据该像素位置指向的周边匹配位置关联的参考权重值,确定该像素位置的目标权重值。为了获得周边匹配位置关联的参考权重值,在一种可能的实施方式中,可以采用如下方式:直接为当前块外部的每个周边位置设置参考权重值,例如,获取有效数量个参考权重值(不是从参考权重值列表中选择有效数量个参考权重值),并根据有效数量个参考权重值设置当前块外部的周边位置的参考权重值。示例性的,该有效数量可以是基于当前块的尺寸和权重预测角度确定。针对有效数量个参考权重值,可以是预先配置的或根据权重配置参数配置的。
综上所述,由于已经为当前块外部的周边位置设置参考权重值,即每个周边位置均具有参考权重值,因此,在从当前块外部的周边位置中确定像素位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考权重值,也就是该像素位置的目标权重值。
以下结合具体实现步骤,对上述设置周边位置的参考权重值的过程进行说明。
步骤P1、获取有效数量个参考权重值。
示例性的,当前块外部的周边位置的数量为有效数量,步骤P1中,需要获取有效数量个参考权重值。例如,可以采用如下方式确定有效数量:ValidLenth=(N+(M>>X))<<1,N和M分别是当前块的高和宽,X为当前块的权重预测角度的tan值的log2对数值,如0或1。
在一种可能的实施方式中,针对有效数量个参考权重值,单调递增,或,单调递减。或者,针对有效数量个参考权重值,先单调递增,再单调递减;或,先单调递减,再单调递增。或者,针对有效数量个参考权重值,先包括多个第一数值,再包括多个第二数值,或,先包括多个第二数值,再包括多个第一数值。以下结合几个具体情况,对此进行说明。
情况1:针对有效数量个参考权重值,可以单调递增或单调递减。例如,有效数量个参考权重值为[8888...8876543210000...00],即单调递减。又例如,有效数量个参考权重值为[0000...0012345678888...88],即单调递增。当然,上述只是示例,对此不做限制。
示例性的,参考权重值可以是预先配置的,或者,根据权重配置参数配置的。权重配置参数可以包括权重变换率和权重变换的起始位置,权重变换率可以是根据经验配置的数值。权重变换的起始位置可以是根据经验配置的数值,也可以由权重预测位置确定权重变换的起始位置,还可以由权重预测角度和权重预测位置确定权重变换的起始位置。
针对有效数量个参考权重值,按照从第一个到最后一个的顺序,可以单调递增或单调递减。例如,参考权重值的最大值为M1,参考权重值的最小值为M2,则针对有效数量个参考权重值,从最大值M1至最小值M2单调递减;或从最小值M2至最大值M1单调递增。假设M1为8,M2为0,则多个参考权重值,可以从8至0单调递减;或从0至8单调递增。
示例性的,针对预先配置多个参考权重值的过程,可以任意配置多个参考权重值,只要多个参考权重值单调递增或单调递减即可。或者,针对根据权重配置参数配置多个参考权重值的过程,可以先获取权重变换率和权重变换的起始位置,然后,可以根据权重变换率和权重变换的起始位置,确定多个参考权重值。权重变换的起始位置是由当前块的权重预测位置确定的;或者,权重变换的起始位置是由当前块的权重预测角度和权重预测位置确定的。
例如,可以采用如下方式确定参考权重值:y=Clip3(最小值,最大值,a*(x-s)),x表示周边位置的索引,即x的取值范围是1-有效数量值,如x为1,表示第1个周边位置,y表示第1个周边位置的参考权重值。a表示权重变换率,s表示权重变换的起始位置。
Clip3用于限制参考权重值位于最小值与最大值之间,最小值和最大值均可以根据经验配置,为了方便描述,后续以最小值为0,最大值为8为例进行说明。
a表示权重变换率,可以根据经验进行配置,如a可以是不为0的整数,如a可以是-4、-3、-2、-1、1、2、3、4等,为了方便描述,以a为1为例进行说明。若a为1,则参考权重值从0到8需要经过0,1,2,3,4,5,6,7,8,或者,参考权重值从8到0需要经过8,7,6,5,4,3,2,1,0。
示例性的,当a为正整数时,a可以与周边位置的数量正相关,即当前块外部的周边位置越多时,a的取值越大。当a为负整数时,a可以与周边位置的数量负相关,即当前块外部的周边位置越多时,a的取值越小。当然,上述只是a的取值的示例,对此不做限制。
s表示权重变换的起始位置,s可以由权重预测位置确定,例如,s=f(权重预测位置),即s是一个与权重预测位置有关的函数。例如,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,并将所有周边位置进行N等分,N的取值可以任意设置,如4、6、8等,而权重预测位置用于表示采用当前块外部的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就是权重变换的起始位置。或者,s可以由权重预测角度和权重预测位置确定,例如,s=f(权重预测角度,权重预测位置),即s是一个与权重预测角度和权重预测位置有关的函数。例如,可以根据权重预测角度确定当前块外部的周边位置的范围,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,并将所有周边位置进行N等分,权重预测位置用于表示采用当前块外部的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就是权重变换的起始位置。
综上所述,在y=Clip3(最小值,最大值,a*(x-s))中,权重变换率a和权重变换的起始位置s均为已知值,针对当前块外部的每个周边位置,可以通过该函数关系确定该周边位置的参考权重值。例如,假设权重变换率a为2,权重变换的起始位置s为2,则该函数关系为y=2*(x-2),针对当前块外部的每个周边位置x,可以得到参考权重值y。
综上所述,可以得到当前块的有效数量个参考权重值,这些参考权重值可以单调递增或单调递减。在一种可能的实施方式中,这些参考权重值包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值。
示例性的,目标区域包括基于权重变换的起始位置确定的一个或者多个参考权重值。例如,基于权重变换的起始位置,确定一个参考权重值,将这个参考权重值作为目标区域。又例如,基于权重变换的起始位置,确定多个参考权重值,将这多个参考权重值作为目标区域。
若目标区域包括多个参考权重值,则目标区域的多个参考权重值单调递增或单调递减。所述单调递增可以是严格单调递增(即目标区域的多个参考权重值严格单调递增);所述单调递减可以是严格单调递减(即目标区域的多个参考权重值严格单调递减)。例如,目标区域的多个参考权重值从1-7单调递增,或者,目标区域的多个参考权重值从7-1单调递减。
示例性的,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值单调递增或单调递减。例如,第一邻近区域的参考权重值均为0,目标区域包括一个参考权重值,该参考权重值为1,第二邻近区域的参考权重值从2-8单调递增。
或者,第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,第二参考权重值与第三参考权重值不同。例如,第一邻近区域的参考权重值均为0,目标区域包括多个参考权重值,多个参考权重值从1-7单调递增,第二邻近区域的参考权重值均为8,显然,第一邻近区域的参考权重值与第二邻近区域的参考权重值不同。
或者,第一邻近区域的参考权重值单调递增或单调递减,第二邻近区域的参考权重值单调递增或单调递减;例如,第一邻近区域的参考权重值单调递增,第二邻近区域的参考权重值也单调递增;又例如,第一邻近区域的参考权重值单调递减,第二邻近区域的参考权重值也单调递减。例如,第一邻近区域的参考权重值从0-3单调递增,目标区域包括一个参考权重值,该参考权重值为4,第二邻近区域的参考权重值从5-8单调递增。
情况2:针对有效数量个参考权重值,先单调递增再单调递减,或,先单调递减再单调递增。例如,有效数量个参考权重值为[88...88765432100...00123456788…88],即先单调递减再单调递增。又例如,有效数量个参考权重值为[00...00123456788...88765432100…00],即先单调递增再单调递减。当然,上述只是示例,对此有效数量个参考权重值不做限制。
示例性的,针对有效数量个参考权重值,可以是预先配置的,或者,根据权重配置参数配置的。权重配置参数包括权重变换率和权重变换的起始位置,权重变换率可以是根据经验配置的数值。权重变换的起始位置可以是根据经验配置的数值,也可以由权重预测位置确定权重变换的起始位置,还可以由权重预测角度和权重预测位置确定权重变换的起始位置。
示例性的,假设参考权重值的最大值为M1,参考权重值的最小值为M2,则针对有效数量个参考权重值,从最大值M1至最小值M2单调递减,然后从最小值M2至最大值M1单调递增。或者,从最小值M2至最大值M1单调递增,然后从最大值M1至最小值M2单调递减。假设M1为8,M2为0,则有效数量个参考权重值,可以从8至0单调递减再从0至8单调递增;或者,有效数量个参考权重值,从0至8单调递增再从8至0单调递减。
示例性的,针对预先配置多个参考权重值的过程,可以任意配置多个参考权重值,只要多个参考权重值先单调递增再单调递减,或者,多个参考权重值先单调递减再单调递增即可。针对根据权重配置参数配置多个参考权重值的过程,可以获取第一权重变换率,第二权重变换率,第一权重变换的起始位置,第二权重变换的起始位置,根据第一权重变换率,第二权重变换率,第一权重变换的起始位置,第二权重变换的起始位置,确定多个参考权重值。
例如,可以采用如下方式确定多个参考权重值:当x位于[0,k]时,y=Clip3(最小值,最大值,a1*(x-s1))。当x位于[k+1,t]时,y=Clip3(最小值,最大值,a2*(x-s2))。x表示周边位置的位置索引,如x为1,表示第1个周边位置,y表示第1个周边位置的参考权重值。k是根据经验配置的数值,对此不做限制,如可以是有效数量的一半,或其它数值,k只要小于t即可,t是周边位置的总数量,即上述有效数量。a1表示第一权重变换率,a2表示第二权重变换率。s1表示第一权重变换的起始位置,s2表示第二权重变换的起始位置。
Clip3用于限制参考权重值位于最小值与最大值之间,最小值和最大值均可以根据经验进行配置,为了方便描述,后续以最小值为0,最大值为8为例进行说明。
a1和a2均表示权重变换率,可以根据经验进行配置,如a1是不为0的整数,如-4、-3、-2、-1、1、2、3、4等,a2是不为0的整数,如-4、-3、-2、-1、1、2、3、4等。
s1和s2均表示权重变换的起始位置,可以根据经验进行配置,s1是区间[0,k]的参考权重值的权重变换的起始位置,s2是区间[k+1,t]的参考权重值的权重变换的起始位置。
s1可以由权重预测位置确定,例如,s1=f(权重预测位置),即s1是一个与权重预测位置有关的函数。例如,在当前块外部的周边位置的范围确定后,从所有周边位置中确定范围[0,k],将范围[0,k]的所有周边位置进行N等分,N的取值可以任意设置,而权重预测位置用于表示范围[0,k]中的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就是权重变换的起始位置s1。或者,s1可以由权重预测角度和权重预测位置确定,例如,s1=f(权重预测角度,权重预测位置),即s1是一个与权重预测角度和权重预测位置有关的函数。例如,可以根据权重预测角度确定当前块外部的周边位置的范围,从所有周边位置中确定范围[0,k],将范围[0,k]的所有周边位置进行N等分,权重预测位置用于表示范围[0,k]中的哪个周边位置作为当前块的目标周边区域,从而得到权重变换的起始位置s1。
s2可以由权重预测位置确定,或者由权重预测角度和权重预测位置确定,s2的实现过程参见s1的实现过程,只是范围发生变化,即范围为[k+1,t],在此不再赘述。
当然,上述只是确定权重变换的起始位置s1和s2的示例,对此不做限制。
综上所述,可以得到多个参考权重值,多个参考权重值可以先单调递增再单调递减,或者,多个参考权重值先单调递减再单调递增。在一种可能的实施方式中,多个参考权重值还可以包括第一目标区域的参考权重值,第二目标区域的参考权重值,只与第一目标区域相邻的第一邻近区域的参考权重值,与第一目标区域和第二目标区域均相邻的第二邻近区域的参考权重值,只与第二目标区域相邻的第三邻近区域的参考权重值。
第一目标区域包括基于第一权重变换的起始位置确定的一个或者多个参考权重值。例如,基于第一权重变换的起始位置,确定一个参考权重值,将这个参考权重值作为第一目标区域。或,基于第一权重变换的起始位置,确定多个参考权重值,将这多个参考权重值作为第一目标区域。若第一目标区域包括多个参考权重值,则第一目标区域的多个参考权重值单调递增或单调递减。所述单调递增可以是严格单调递增(第一目标区域的多个参考权重值严格单调递增);所述单调递减可以是严格单调递减(第一目标区域的多个参考权重值严格单调递减)。
第二目标区域包括基于第二权重变换的起始位置确定的一个或者多个参考权重值。例如,基于第二权重变换的起始位置,确定一个参考权重值,将这个参考权重值作为第二目标区域。或,基于第二权重变换的起始位置,确定多个参考权重值,将这多个参考权重值作为第二目标区域。若第二目标区域包括多个参考权重值,则第二目标区域的多个参考权重值单调递增或单调递减。所述单调递增可以是严格单调递增(第二目标区域的多个参考权重值严格单调递增);所述单调递减可以是严格单调递减(第二目标区域的多个参考权重值严格单调递减)。
若第一目标区域的多个参考权重值单调递增(如严格单调递增),则第二目标区域的多个参考权重值单调递减(如严格单调递减)。或者,若第一目标区域的多个参考权重值单调递减(如严格单调递减),则第二目标区域的多个参考权重值单调递增(如严格单调递增)。
示例性的,第一邻近区域的参考权重值均为第一参考权重值;第二邻近区域的参考权重值均为第二参考权重值;第三邻近区域的参考权重值均为第三参考权重值。第一参考权重值与第三参考权重值可以相同,第一参考权重值与第二参考权重值可以不同,第三参考权重值与第二参考权重值可以不同。例如,第一邻近区域的参考权重值均为0,第二邻近区域的参考权重值均为8,第三邻近区域的参考权重值均为0;或者,第一邻近区域的参考权重值均为8,第二邻近区域的参考权重值均为0,第三邻近区域的参考权重值均为8。
或者,第一邻近区域的参考权重值均为第一参考权重值;第二邻近区域的参考权重值单调递减;第三邻近区域的参考权重值单调递增。或者,第一邻近区域的参考权重值单调递减;第二邻近区域的参考权重值先单调递减再单调递增;第三邻近区域的参考权重值单调递增。或者,第一邻近区域的参考权重值单调递减;第二邻近区域的参考权重值单调递增;第三邻近区域的参考权重值均为第三参考权重值。或者,第一邻近区域的参考权重值均为第一参考权重值;第二邻近区域的参考权重值单调递增;第三邻近区域的参考权重值单调递减。或者,第一邻近区域的参考权重值单调递增;第二邻近区域的参考权重值先单调递增再单调递减;第三邻近区域的参考权重值单调递减。或者,第一邻近区域的参考权重值单调递增;第二邻近区域的参考权重值单调递减;第三邻近区域的参考权重值均为第三参考权重值。
当然,上述只是几个示例,对此不做限制,只要多个参考权重值满足以下需求即可:从0递增至8,再从8递减至0;或者,从8递减至0,再从0递增至8。
情况3:针对有效数量个参考权重值,可以先包括多个第一数值,再包括多个第二数值,或者,先包括多个第二数值,再包括多个第一数值。例如,有效数量个参考权重值可以为[88...8800...00]或[00...0088...88]。针对有效数量个参考权重值,可以是预先配置,或者,根据权重配置参数配置,权重配置参数可以包括权重变换的起始位置。针对根据权重配置参数配置参考权重值的过程,可以获取权重变换的起始位置,根据权重变换的起始位置确定多个参考权重值。例如,权重变换的起始位置表示第s个参考权重值,因此,第s个参考权重值之前(不包括第s个参考权重值)的所有参考权重值为第一数值(如8),第s个参考权重值之后(包括第s个参考权重值)的所有参考权重值为第二数值(如0)。或者,第s个参考权重值之前的所有参考权重值为第二数值,第s个参考权重值之后的所有参考权重值为第一数值。
基于上述几种情况,均可以得到有效数量个参考权重值,为了方便描述,后续实施例中,以情况1的参考权重值为例进行说明,其它情况的参考权重值的实现过程类似。
步骤P2,根据有效数量个参考权重值,设置当前块外部的周边位置的参考权重值。
示例性的,当前块外部的周边位置的数量为有效数量,且参考权重值的数量为有效数量,因此,可以将有效数量个参考权重值,设置为当前块外部的周边位置的参考权重值。例如,将第1个参考权重值设置为当前块外部的第1个周边位置的参考权重值,将第2个参考权重值设置为当前块外部的第2个周边位置的参考权重值,以此类推。
以下结合几个具体的应用场景,对上述过程的实施方式进行说明。示例性的,假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高。X为权重预测角度的tan值的log2对数值,如0或1。Y为权重预测位置的索引值,a,b,c,d为预设的常数值。
应用场景1:基于当前块的尺寸和当前块的权重预测角度确定有效数量(也可以称为参考权重有效长度,可以将该有效数量记为ValidLenth),并获取参数FirstPos。例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-a+Y*((ValidLength-1)>>3);可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos)。示例性的,x的取值范围可以是0~ValidLength-1;或1~ValidLength。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=ReferenceWeights[(y<<1)+((x<<1)>>X)]。
应用场景2:可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X);可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos)。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=ReferenceWeights[(y<<1)-((x<<1)>>X)]。
应用场景3:可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X);可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos)。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=ReferenceWeights[(x<<1)-((y<<1)>>X)]。
应用场景4:可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3);可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos)。可以通过如下公式导出当前块的每个像素位置的目标权重值:SampleWeight[x][y]=ReferenceWeights[(x<<1)+((y<<1)>>X)]。
实施例8:在上述实施例1-实施例3中,需要根据第一预测模式确定像素位置的第一预测值,根据第二预测模式确定像素位置的第二预测值,以下对此过程进行说明。
情况1、第一预测模式为帧间预测模式,第二预测模式为帧间预测模式,构建运动信息候选列表,运动信息候选列表包括至少两个候选运动信息。从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,从运动信息候选列表中选择另一个候选运动信息作为当前块的第二目标运动信息。针对当前块的每个像素位置,根据第一目标运动信息确定该像素位置的第一预测值,根据第二目标运动信息确定该像素位置的第二预测值。
示例性的,针对编码端和解码端来说,均可以构建运动信息候选列表,且编码端的运动信息候选列表与解码端的运动信息候选列表相同,对此运动信息候选列表不做限制。
示例性的,运动信息候选列表中的候选运动信息均为单假设运动信息,比如说,针对运动信息候选列表中的候选运动信息,只是单向运动信息,而不是双向运动信息。显然,由于候选运动信息均为单假设运动信息,因此,运动信息候选列表可以为单向运动信息候选列表。
在构建运动信息候选列表时,可以先加入空域运动信息(如空域运动信息矢量),后加入时域运动信息(如时域运动矢量)。和/或,在构建运动信息候选列表时,可以先加入单向运动信息(如单向运动矢量),后加入双向运动信息(如双向运动矢量)。
在向运动信息候选列表中加入双向运动信息时,先将双向运动信息拆分为两个单向运动信息,将拆分后的两个单向运动信息依次加入到运动信息候选列表。或者,在向运动信息候选列表中加入双向运动信息时,先将双向运动信息裁剪为一个单向运动信息,将所述一个单向运动信息加入到运动信息候选列表。示例性的,将双向运动信息裁剪为一个单向运动信息包括:直接取List0(参考帧列表0)中的单向运动信息;或者,直接取List1(参考帧列表1)中的单向运动信息;或者,根据加入顺序确定取List0或者List1中的单向运动信息。
当然,上述只是运动信息候选列表的示例,对运动信息候选列表中的运动信息不做限制。
针对编码端来说,可以基于率失真原则,从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,从运动信息候选列表中选择另一个候选运动信息作为当前块的第二目标运动信息,第一目标运动信息与第二目标运动信息不同,对此不做限制。
在一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标运动信息的索引值1,索引值1表示第一目标运动信息是运动信息候选列表中的第几个候选运动信息。指示信息b用于指示当前块的第二目标运动信息的索引值2,索引值2表示第二目标运动信息是运动信息候选列表中的第几个候选运动信息。示例性的,索引值1和索引值2可以不同。
解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息b。基于指示信息a,解码端从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的第一目标运动信息。基于指示信息b,解码端从运动信息候选列表中选择索引值2对应的候选运动信息,该候选运动信息作为当前块的第二目标运动信息。
在另一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息c,指示信息a用于指示当前块的第一目标运动信息的索引值1,索引值1表示第一目标运动信息是运动信息候选列表中的第几个候选运动信息。指示信息c用于指示索引值2与索引值1的差值,索引值2表示第二目标运动信息是运动信息候选列表中的第几个候选运动信息。示例性的,索引值1和索引值2可以不同。
解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息c。基于指示信息a,解码端从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的第一目标运动信息。基于指示信息c,解码端先根据索引值2与索引值1的差值,以及索引值1确定索引值2,然后,解码端从运动信息候选列表中选择索引值2对应的候选运动信息,该候选运动信息作为当前块的第二目标运动信息。
关于编码端/解码端根据第一目标运动信息确定像素位置的第一预测值,根据第二目标运动信息确定像素位置的第二预测值的过程,可以参见传统实现方式,对此不做限制。
示例性的,在根据第一目标运动信息确定像素位置的第一预测值时,可以采用帧间加权预测模式得到像素位置的第一预测值。例如,先利用第一目标运动信息确定像素位置的初始预测值,然后对该初始预测值乘以预设因子,得到调整预测值。若调整预测值大于最大预测值,则将最大预测值作为当前块的第一预测值,若调整预测值小于最小预测值,则将最小预测值作为当前块的第一预测值,若调整预测值不小于最小预测值,且不大于最大预测值,则将调整预测值作为当前块的第一预测值。当然,上述方式只是示例,对此不做限制。
同理,在根据第二目标运动信息确定像素位置的第二预测值时,也可以采用帧间加权预测模式得到像素位置的第二预测值,具体实现方式参见上述示例,在此不再重复赘述。
情况2、第一预测模式为帧间预测模式,第二预测模式为帧间预测模式,构建第一运动信息候选列表和第二运动信息候选列表,第一运动信息候选列表包括至少一个候选运动信息,第二运动信息候选列表包括至少一个候选运动信息。从第一运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,从第二运动信息候选列表中选择一个候选运动信息作为当前块的第二目标运动信息。针对当前块的每个像素位置,根据第一目标运动信息确定该像素位置的第一预测值;根据第二目标运动信息确定该像素位置的第二预测值。
示例性的,针对编码端和解码端来说,均可以构建第一运动信息候选列表和第二运动信息候选列表,且编码端的第一运动信息候选列表与解码端的第一运动信息候选列表相同,编码端的第二运动信息候选列表与解码端的第二运动信息候选列表相同。
第一运动信息候选列表中的候选运动信息均为单假设运动信息,即,针对第一运动信息候选列表中的候选运动信息,只是单向运动信息,而不是双向运动信息。显然,由于候选运动信息均为单假设运动信息,因此,第一运动信息候选列表可以为单向运动信息候选列表。
第二运动信息候选列表中的候选运动信息均为单假设运动信息,即,针对第二运动信息候选列表中的候选运动信息,只是单向运动信息,而不是双向运动信息。显然,由于候选运动信息均为单假设运动信息,因此,第二运动信息候选列表可以为单向运动信息候选列表。
示例性的,第一运动信息候选列表中的候选运动信息的参考帧,来自于当前块的一个参考帧列表,第二运动信息候选列表中的候选运动信息的参考帧,来自于当前块的另一个参考帧列表。例如,第一运动信息候选列表中的候选运动信息的参考帧,来自于当前块的List0(参考帧列表0),第二运动信息候选列表中的候选运动信息的参考帧,来自于当前块的List1(参考帧列表1)。或者,第一运动信息候选列表中的候选运动信息的参考帧,来自于当前块的List1,第二运动信息候选列表中的候选运动信息的参考帧,来自于当前块的List0。
在构建第一运动信息候选列表时,可以先加入空域运动信息(如空域运动信息矢量),后加入时域运动信息(如时域运动矢量)。和/或,在构建第一运动信息候选列表时,可以先加入单向运动信息(如单向运动矢量),后加入双向运动信息(如双向运动矢量)。
在构建第二运动信息候选列表时,可以先加入空域运动信息(如空域运动信息矢量),后加入时域运动信息(如时域运动矢量)。和/或,在构建第二运动信息候选列表时,可以先加入单向运动信息(如单向运动矢量),后加入双向运动信息(如双向运动矢量)。
例如,可以在第一运动信息候选列表中先加入List0的单向运动信息,后加入双向运动信息(如双向运动信息中的List0的单向运动信息)。可以在第二运动信息候选列表中先加入List1的单向运动信息,后加入双向运动信息(如双向运动信息中的List1的单向运动信息)。或者,可以在第一运动信息候选列表中先加入List1的单向运动信息,后加入双向运动信息(如双向运动信息中的List1的单向运动信息)。可以在第二运动信息候选列表中先加入List0的单向运动信息,后加入双向运动信息(如双向运动信息中的List0的单向运动信息)。
针对编码端来说,可以基于率失真原则,从第一运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,从第二运动信息候选列表中选择一个候选运动信息作为当前块的第二目标运动信息,第一目标运动信息与第二目标运动信息不同,对此不做限制。
编码端向解码端发送编码比特流时,该编码比特流携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标运动信息的索引值1,索引值1表示第一目标运动信息是第一运动信息候选列表中的第几个候选运动信息。指示信息b用于指示当前块的第二目标运动信息的索引值2,索引值2表示第二目标运动信息是第二运动信息候选列表中的第几个候选运动信息。解码端接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息b。基于指示信息a,从第一运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的第一目标运动信息。基于指示信息b,从第二运动信息候选列表中选择索引值2对应的候选运动信息,该候选运动信息作为当前块的第二目标运动信息。
关于编码端/解码端根据第一目标运动信息确定像素位置的第一预测值,根据第二目标运动信息确定像素位置的第二预测值的过程,可以参见传统实现方式,对此不做限制。
情况3、第一预测模式为帧间预测模式,第二预测模式为帧内预测模式,构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息。从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息。确定当前块的目标帧内模式(即帧内预测模式中的目标帧内预测模式)。针对当前块的每个像素位置,根据该目标运动信息确定该像素位置的第一预测值,根据该目标帧内模式确定该像素位置的第二预测值。
示例性的,针对编码端和解码端来说,均可以构建运动信息候选列表,且编码端的运动信息候选列表与解码端的运动信息候选列表相同,对此运动信息候选列表不做限制。
示例性的,运动信息候选列表中的候选运动信息包括单假设运动信息,和/或,多假设运动信息。比如说,针对运动信息候选列表中的候选运动信息,可以是单向运动信息,也可以是双向运动信息,即运动信息候选列表支持单向运动信息和双向运动信息。
在构建运动信息候选列表时,可以先加入空域运动信息(如空域运动信息矢量),后加入时域运动信息(如时域运动矢量)。和/或,在构建运动信息候选列表时,可以先加入单向运动信息(如单向运动矢量),后加入双向运动信息(如双向运动矢量)。
与情况一和情况二不同的是,由于支持双向运动信息,因此,在向运动信息候选列表中加入双向运动信息时,可以直接将双向运动信息加入到运动信息候选列表,而不需要将双向运动信息拆分为两个单向运动信息,也不需要将双向运动信息裁剪为一个单向运动信息。
针对编码端来说,可以基于率失真原则,从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息。编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a,指示信息a用于指示当前块的目标运动信息的索引值1,该索引值1用于表示目标运动信息是运动信息候选列表中的第几个候选运动信息。解码端在接收到编码比特流后,从编码比特流中解析出指示信息a,基于指示信息a,解码端从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的目标运动信息。
示例性的,确定当前块的目标帧内模式,可以包括但不限于如下方式:
方式一、将指定帧内模式确定为当前块的目标帧内模式。例如,编码端将指定帧内模式(如Planar模式,或DC模式,或水平角度模式,或垂直角度模式)确定为当前块的目标帧内模式,解码端也将该指定帧内模式确定为当前块的目标帧内模式。例如,编码端将Planar模式确定为当前块的目标帧内模式,解码端也将Planar模式确定为当前块的目标帧内模式。
方式二、构建帧内预测模式候选列表,该帧内预测模式候选列表包括至少一个候选帧内模式;从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的目标帧内模式。
例如,针对编码端和解码端来说,均为当前块构建帧内预测模式候选列表,且编码端的帧内预测模式候选列表与解码端的帧内预测模式候选列表可以相同。帧内预测模式候选列表中的候选帧内模式包括但不限于:Planar模式、DC模式、垂直角度模式、水平角度模式等。
针对编码端来说,可以基于率失真原则,从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的目标帧内模式。编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息b,指示信息b用于指示当前块的目标帧内模式的索引值2,该索引值2用于表示目标帧内模式是帧内预测模式候选列表中的第几个候选帧内模式。解码端在接收到编码比特流后,从编码比特流中解析出指示信息b,基于指示信息b,解码端从帧内预测模式候选列表中选择索引值2对应的候选帧内模式,该候选帧内模式作为当前块的目标帧内模式。
方式三、将当前块的相邻块(如当前块的上侧相邻块或者当前块的左侧相邻块)的目标帧内模式确定为当前块的目标帧内模式。例如,若当前块的相邻块采用目标帧内模式进行预测,则编码端可以将当前块的相邻块的目标帧内模式确定为当前块的目标帧内模式,且解码端也可以将当前块的相邻块的目标帧内模式确定为当前块的目标帧内模式。
方式四、根据权重预测角度和帧内帧间相对位置关系,确定当前块的目标帧内模式。
例如,若权重预测角度为左上-右下的权重预测角度,帧内区域位于帧间区域的左下方,则可以将水平角度模式确定为当前块的目标帧内模式。若权重预测角度为左上-右下的权重预测角度,帧内区域位于帧间区域的右上方,则可以将垂直角度模式确定为当前块的目标帧内模式。否则,可以将Planar模式确定为当前块的目标帧内模式。
当然,上述方式只是示例,对此不做限制,只要能够得到当前块的目标帧内模式即可。
关于编码端/解码端根据目标运动信息确定像素位置的第一预测值,根据目标帧内模式确定像素位置的第二预测值的过程,可以参见传统实现方式,对此不做限制。
情况4、第一预测模式为帧间预测模式,第二预测模式为帧内块拷贝预测模式(即IBC模式),构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息。从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息。构建块矢量候选列表,该块矢量候选列表可以包括至少一个候选块矢量。从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量。针对当前块的每个像素位置,可以根据该目标运动信息确定该像素位置的第一预测值,根据该目标块矢量确定该像素位置的第二预测值。
示例性的,针对编码端和解码端来说,均可以构建运动信息候选列表,且编码端的运动信息候选列表与解码端的运动信息候选列表相同,对此运动信息候选列表不做限制。
关于运动信息候选列表的构建方式,可以参见情况1或情况3,关于编码端/解码端从运动信息候选列表中选择目标运动信息的方式,可以参见情况3,在此不再重复赘述。
示例性的,针对编码端和解码端来说,均可以为当前块构建块矢量候选列表,且编码端的块矢量候选列表与解码端的块矢量候选列表相同,对此块矢量候选列表不做限制。
示例性的,块矢量候选列表中的候选块矢量均为单假设块矢量,比如说,针对块矢量候选列表中的候选块矢量,只是单向候选块矢量。显然,由于候选块矢量均为单假设块矢量,因此,块矢量候选列表可以为单向块矢量候选列表。
示例性的,块矢量候选列表中的候选块矢量可以包括但不限于:当前块的空域相邻块的块矢量、当前块对应的HMVP(History-based motion vector prediction,基于历史信息的运动矢量预测)列表中的历史块矢量、默认块矢量等,对此不做限制。在为当前块构建块矢量候选列表后,可以从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量。
针对编码端来说,可以基于率失真原则,从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量,对此过程不再赘述。编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息b,指示信息b用于指示当前块的目标块矢量的索引值2,该索引值2用于表示目标块矢量是块矢量候选列表中的第几个候选块矢量。解码端在接收到编码比特流后,从该编码比特流中解析出指示信息b,基于指示信息b,解码端从块矢量候选列表中选择索引值2对应的候选块矢量,该候选块矢量作为当前块的目标块矢量。
关于编码端/解码端根据目标运动信息确定像素位置的第一预测值,根据目标块矢量确定像素位置的第二预测值的过程,可以参见传统实现方式,对此不做限制。
情况5、第一预测模式为帧间预测模式,第二预测模式为调色板模式,构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息。从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息。针对当前块的每个像素位置,可以根据该目标运动信息确定该像素位置的第一预测值,并根据调色板模式确定该像素位置的第二预测值。
运动信息候选列表的构建方式,可以参见情况1或情况3,编码端/解码端从运动信息候选列表中选择目标运动信息的方式,可以参见情况3,在此不再重复赘述。编码端/解码端根据调色板模式确定该像素位置的第二预测值,可以参见传统实现方式,对此不做限制。
情况6、第一预测模式为帧内预测模式,第二预测模式为帧间预测模式,确定当前块的目标帧内模式(即帧内预测模式中的目标帧内预测模式)。构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息,从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息。针对当前块的每个像素位置,根据该目标帧内模式确定该像素位置的第一预测值,根据该目标运动信息确定该像素位置的第二预测值。
确定当前块的目标帧内模式的方式参见情况3,例如,将指定帧内模式确定为当前块的目标帧内模式;或,构建帧内预测模式候选列表,该帧内预测模式候选列表包括至少一个候选帧内模式,从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的目标帧内模式;或,将当前块的相邻块的目标帧内模式确定为当前块的目标帧内模式。或根据权重预测角度和帧内帧间相对位置关系,确定当前块的目标帧内模式,对此不再赘述。
示例性的,针对构建运动信息候选列表,从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息的过程,可以参见情况3,在此不再重复赘述。
情况7、第一预测模式为帧内预测模式,第二预测模式为帧内预测模式,确定当前块的第一目标帧内模式(即帧内预测模式中的目标帧内预测模式),并确定当前块的第二目标帧内模式。然后,针对当前块的每个像素位置,根据该第一目标帧内模式确定该像素位置的第一预测值,并根据该第二目标帧内模式确定该像素位置的第二预测值。
示例性的,该第一目标帧内模式与该第二目标帧内模式可以不同。
确定当前块的第一目标帧内模式和第二目标帧内模式,可以包括但不限于:
方式一、将指定第一帧内模式确定为当前块的第一目标帧内模式,并将指定第二帧内模式确定为当前块的第二目标帧内模式。例如,编码端将指定第一帧内模式(如Planar模式,或DC模式,或水平角度模式,或垂直角度模式)确定为当前块的第一目标帧内模式,解码端也将该指定第一帧内模式确定为当前块的第一目标帧内模式。编码端将指定第二帧内模式(如Planar模式,或DC模式,或水平角度模式,或垂直角度模式)确定为当前块的第二目标帧内模式,解码端也将该指定第二帧内模式确定为当前块的第二目标帧内模式。
例如,编码端通过协议约定默认将Planar模式确定为当前块的第一目标帧内模式,并通过协议约定默认将DC模式确定为当前块的第二目标帧内模式。解码端通过协议约定默认将Planar模式确定为当前块的第一目标帧内模式,通过协议约定默认将DC模式确定为当前块的第二目标帧内模式。当然,上述方式只是示例,还可以进行其它约定,对此不做限制。
方式二、构建帧内预测模式候选列表,该帧内预测模式候选列表包括至少两个候选帧内模式;从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标帧内模式,并从帧内预测模式候选列表中选择另一个候选帧内模式作为当前块的第二目标帧内模式。
例如,针对编码端和解码端来说,均为当前块构建帧内预测模式候选列表,且编码端的帧内预测模式候选列表与解码端的帧内预测模式候选列表可以相同。帧内预测模式候选列表中的候选帧内模式包括但不限于:Planar模式、DC模式、垂直角度模式、水平角度模式等。
针对编码端来说,可以基于率失真原则,从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标帧内模式,并从帧内预测模式候选列表中选择另一个候选帧内模式作为当前块的第二目标帧内模式。在一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标帧内模式的索引值1,该索引值1用于表示第一目标帧内模式是帧内预测模式候选列表中的第几个候选帧内模式。指示信息b用于指示当前块的第二目标帧内模式的索引值2,该索引值2用于表示第二目标帧内模式是帧内预测模式候选列表中的第几个候选帧内模式。
解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息b,基于指示信息a,解码端从帧内预测模式候选列表中选择索引值1对应的候选帧内模式,该候选帧内模式作为当前块的第一目标帧内模式。基于指示信息b,解码端从帧内预测模式候选列表中选择索引值2对应的候选帧内模式,该候选帧内模式作为当前块的第二目标帧内模式。
在另一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息c,指示信息a用于指示当前块的第一目标帧内模式的索引值1,该索引值1用于表示第一目标帧内模式是帧内预测模式候选列表中的第几个候选帧内模式。指示信息c用于指示索引值2与索引值1的差值,索引值2用于表示第二目标帧内模式是帧内预测模式候选列表中的第几个候选帧内模式。示例性的,索引值1和索引值2不同。
解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息c。基于指示信息a,解码端从帧内预测模式候选列表中选择索引值1对应的候选帧内模式,该候选帧内模式作为当前块的第一目标帧内模式。基于指示信息c,解码端先根据索引值2与索引值1的差值,以及索引值1确定索引值2,然后,解码端从帧内预测模式候选列表中选择索引值2对应的候选帧内模式,该候选帧内模式作为当前块的第二目标帧内模式。
方式三、构建第一帧内预测模式候选列表和第二帧内预测模式候选列表,第一帧内预测模式候选列表包括至少一个候选帧内模式,第二帧内预测模式候选列表包括至少一个候选帧内模式。从第一帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标帧内模式,从第二帧内预测模式候选列表选择一个候选帧内模式作为当前块的第二目标帧内模式。
针对编码端和解码端来说,均为当前块构建第一帧内预测模式候选列表和第二帧内预测模式候选列表,且编码端的第一帧内预测模式候选列表与解码端的第一帧内预测模式候选列表相同,编码端的第二帧内预测模式候选列表与解码端的第二帧内预测模式候选列表相同。
针对编码端来说,可以基于率失真原则,从第一帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标帧内模式,并从第二帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第二目标帧内模式。编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标帧内模式的索引值1,该索引值1表示第一目标帧内模式是第一帧内预测模式候选列表中的第几个候选帧内模式。指示信息b用于指示当前块的第二目标帧内模式的索引值2,该索引值2表示第二目标帧内模式是第二帧内预测模式候选列表中的第几个候选帧内模式。
解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息b,基于指示信息a,从第一帧内预测模式候选列表中选择索引值1对应的候选帧内模式,该候选帧内模式作为当前块的第一目标帧内模式。基于指示信息b,从第二帧内预测模式候选列表中选择索引值2对应的候选帧内模式,该候选帧内模式作为当前块的第二目标帧内模式。
方式四、若当前块的第一相邻块(如当前块的上侧相邻块)的目标帧内模式与当前块的第二相邻块(如当前块的左侧相邻块)的目标帧内模式不同,则可以将第一相邻块的目标帧内模式确定为当前块的第一目标帧内模式,可以将第二相邻块的目标帧内模式确定为当前块的第二目标帧内模式。若第一相邻块的目标帧内模式与第二相邻块的目标帧内模式相同,则可以将第一相邻块的目标帧内模式确定为当前块的第一目标帧内模式,并可以将与第一目标帧内模式不同的另一个帧内模式确定为当前块的第二目标帧内模式。
例如,针对编码端或解码端来说,若第一相邻块的目标帧内模式为帧内模式A,第二相邻块的目标帧内模式为帧内模式B,当帧内模式A与帧内模式B不同时,将帧内模式A确定为当前块的第一目标帧内模式,将帧内模式B确定为当前块的第二目标帧内模式。当帧内模式A与帧内模式B相同时,将帧内模式A确定为当前块的第一目标帧内模式,并将与帧内模式A不同的另一个帧内模式C确定为当前块的第二目标帧内模式。例如,帧内模式C可以为第二相邻块的相邻块的目标帧内模式;又例如,若帧内模式A为Planar模式,则帧内模式C为DC模式,对此不做限制,只要帧内模式C与帧内模式A不同即可。
当然,上述方式一、方式二、方式三和方式四只是几个示例,对此不做限制,只要能够得到当前块的第一目标帧内模式和当前块的第二目标帧内模式即可。
情况8、第一预测模式为帧内预测模式,第二预测模式为帧内块拷贝预测模式(即IBC模式),确定当前块的目标帧内模式(即帧内预测模式中的目标帧内预测模式)。构建块矢量候选列表,该块矢量候选列表可以包括至少一个候选块矢量,从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量。针对当前块的每个像素位置,根据该目标帧内模式确定该像素位置的第一预测值,根据该目标块矢量确定该像素位置的第二预测值。
针对确定当前块的目标帧内模式的方式,可以包括:将指定帧内模式确定为当前块的目标帧内模式;或,构建帧内预测模式候选列表,该帧内预测模式候选列表包括至少一个候选帧内模式,从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的目标帧内模式;或,将当前块的相邻块的目标帧内模式确定为当前块的目标帧内模式。上述三种方式可以参见情况3,在此不再重复赘述。针对构建块矢量候选列表,从块矢量候选列表中选择当前块的目标块矢量的过程,可以参见情况4,在此不再重复赘述。
示例性的,确定当前块的目标帧内模式的方式,还可以包括:根据权重预测角度和帧内IBC相对位置关系,确定当前块的目标帧内模式。例如,若权重预测角度为左上-右下的权重预测角度,帧内区域位于IBC区域的左下方,则将水平角度模式确定为当前块的目标帧内模式。若权重预测角度为左上-右下的权重预测角度,帧内区域位于IBC区域的右上方,则将垂直角度模式确定为当前块的目标帧内模式。否则将Planar模式确定为当前块的目标帧内模式。
情况9、第一预测模式为帧内预测模式,第二预测模式为调色板模式,确定当前块的目标帧内模式(即帧内预测模式中的目标帧内预测模式),针对当前块的每个像素位置,根据目标帧内模式确定该像素位置的第一预测值,根据调色板模式确定该像素位置的第二预测值。
示例性的,确定当前块的目标帧内模式的方式参见情况3,编码端/解码端根据调色板模式确定该像素位置的第二预测值,可以参见传统实现方式,对此不做限制。
情况10、第一预测模式为帧内块拷贝预测模式(即IBC模式),第二预测模式为帧间预测模式,构建块矢量候选列表,该块矢量候选列表可以包括至少一个候选块矢量,从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量。构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息,从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息。针对当前块的每个像素位置,可以根据该目标块矢量确定该像素位置的第一预测值,根据该目标运动信息确定该像素位置的第二预测值。
示例性的,针对编码端和解码端来说,均可以为当前块构建块矢量候选列表,且编码端的块矢量候选列表与解码端的块矢量候选列表相同,对此块矢量候选列表不做限制。
关于块矢量候选列表的构建方式,可以参见情况4,关于编码端/解码端从块矢量候选列表中选择目标块矢量的方式,可以参见情况4,在此不再重复赘述。
示例性的,针对编码端和解码端来说,均可以构建运动信息候选列表,且编码端的运动信息候选列表与解码端的运动信息候选列表相同,对此运动信息候选列表不做限制。
关于运动信息候选列表的构建方式,可以参见情况1或情况3,关于编码端/解码端从运动信息候选列表中选择目标运动信息的方式,可以参见情况3,在此不再重复赘述。
情况11、第一预测模式为帧内块拷贝预测模式(即IBC模式),第二预测模式为帧内预测模式,构建块矢量候选列表,该块矢量候选列表可以包括至少一个候选块矢量,从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量。确定当前块的目标帧内模式(即帧内预测模式中的目标帧内预测模式)。针对当前块的每个像素位置,根据该目标块矢量确定该像素位置的第一预测值,根据该目标帧内模式确定该像素位置的第二预测值。
确定当前块的目标帧内模式的方式参见情况3和情况8,针对构建块矢量候选列表,从块矢量候选列表中选择当前块的目标块矢量的过程,可以参见情况4,在此不再重复赘述。
情况12、第一预测模式为帧内块拷贝预测模式(即IBC模式),第二预测模式为帧内块拷贝预测模式(即IBC模式),可以构建块矢量候选列表,该块矢量候选列表可以包括至少两个候选块矢量。从该块矢量候选列表中选择一个候选块矢量作为当前块的第一目标块矢量,并从该块矢量候选列表中选择另一个候选块矢量作为当前块的第二目标块矢量,该第一目标块矢量与该第二目标块矢量不同。针对当前块的每个像素位置,根据第一目标块矢量确定该像素位置的第一预测值;根据第二目标块矢量确定该像素位置的第二预测值。
示例性的,针对编码端和解码端来说,均可以为当前块构建块矢量候选列表,且编码端的块矢量候选列表与解码端的块矢量候选列表相同,对此块矢量候选列表不做限制。
示例性的,块矢量候选列表中的候选块矢量均为单假设块矢量,比如说,针对块矢量候选列表中的候选块矢量,只是单向候选块矢量。显然,由于候选块矢量均为单假设块矢量,因此,块矢量候选列表可以为单向块矢量候选列表。
示例性的,块矢量候选列表中的候选块矢量可以包括但不限于:当前块的空域相邻块的块矢量、当前块对应的HMVP列表中的历史块矢量、默认块矢量等,对此不做限制。
针对编码端来说,可以基于率失真原则,从块矢量候选列表中选择一个候选块矢量作为当前块的第一目标块矢量,并从块矢量候选列表中选择另一个候选块矢量作为当前块的第二目标块矢量,对此过程不再赘述。在一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标块矢量的索引值1,该索引值1用于表示第一目标块矢量是块矢量候选列表中的第几个候选块矢量。指示信息b用于指示当前块的第二目标块矢量的索引值2,该索引值2用于表示第二目标块矢量是块矢量候选列表中的第几个候选块矢量。
解码端在接收到编码比特流后,从该编码比特流中解析出指示信息a和指示信息b,基于指示信息a,解码端从块矢量候选列表中选择索引值1对应的候选块矢量,该候选块矢量作为当前块的第一目标块矢量。基于指示信息b,解码端从块矢量候选列表中选择索引值2对应的候选块矢量,该候选块矢量作为当前块的第二目标块矢量。
在另一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息c,指示信息a用于指示当前块的第一目标块矢量的索引值1,该索引值1用于表示第一目标块矢量是块矢量候选列表中的第几个候选块矢量。指示信息c用于指示索引值2与索引值1的差值,索引值2用于表示用于表示第二目标块矢量是块矢量候选列表中的第几个候选块矢量。解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息c。基于指示信息a,解码端从块矢量候选列表中选择索引值1对应的候选块矢量,该候选块矢量作为当前块的第一目标块矢量。基于指示信息c,解码端先根据索引值2与索引值1的差值,以及索引值1确定索引值2,然后,解码端从块矢量候选列表中选择索引值2对应的候选块矢量,该候选块矢量作为当前块的第二目标块矢量。
情况13、第一预测模式为帧内块拷贝预测模式,第二预测模式为帧内块拷贝预测模式,构建当前块的第一块矢量候选列表和第二块矢量候选列表,第一块矢量候选列表包括至少一个候选块矢量,第二块矢量候选列表包括至少一个候选块矢量。从第一块矢量候选列表中选择一个候选块矢量作为当前块的第一目标块矢量,并从第二块矢量候选列表中选择一个候选块矢量作为当前块的第二目标块矢量。针对当前块的每个像素位置,根据第一目标块矢量确定该像素位置的第一预测值;根据第二目标块矢量确定该像素位置的第二预测值。
示例性的,针对编码端和解码端来说,均可以为当前块构建第一块矢量候选列表和第二块矢量候选列表,且编码端的第一块矢量候选列表与解码端的第一块矢量候选列表相同,编码端的第二块矢量候选列表与解码端的第二块矢量候选列表相同。
示例性的,第一块矢量候选列表中的候选块矢量均为单假设块矢量,比如说,针对第一块矢量候选列表中的候选块矢量,只是单向候选块矢量。显然,由于候选块矢量均为单假设块矢量,因此,第一块矢量候选列表可以为单向块矢量候选列表。
示例性的,第二块矢量候选列表中的候选块矢量均为单假设块矢量,比如说,针对第二块矢量候选列表中的候选块矢量,只是单向候选块矢量。显然,由于候选块矢量均为单假设块矢量,因此,第二块矢量候选列表可以为单向块矢量候选列表。
示例性的,第一块矢量候选列表中的候选块矢量可以包括但不限于:当前块的空域相邻块的块矢量、当前块对应的HMVP列表中的历史块矢量、默认块矢量等,对此不做限制。
示例性的,第二块矢量候选列表中的候选块矢量可以包括但不限于:当前块的空域相邻块的块矢量、当前块对应的HMVP列表中的历史块矢量、默认块矢量等,对此不做限制。
针对编码端来说,可以基于率失真原则,从第一块矢量候选列表中选择一个候选块矢量作为当前块的第一目标块矢量,从第二块矢量候选列表中选择一个候选块矢量作为当前块的第二目标块矢量。编码端在向解码端发送编码比特流时,该编码比特流携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标块矢量的索引值1,该索引值1用于表示第一目标块矢量是第一块矢量候选列表中的第几个候选块矢量。指示信息b用于指示当前块的第二目标块矢量的索引值2,该索引值2用于表示第二目标块矢量是第二块矢量候选列表中的第几个候选块矢量。解码端在接收到编码比特流后,从该编码比特流中解析出指示信息a和指示信息b,基于指示信息a,从第一块矢量候选列表中选择索引值1对应的候选块矢量,该候选块矢量作为当前块的第一目标块矢量。基于指示信息b,从第二块矢量候选列表中选择索引值2对应的候选块矢量,该候选块矢量作为当前块的第二目标块矢量。
情况14、第一预测模式为帧内块拷贝预测模式,第二预测模式为调色板模式,可以构建块矢量候选列表,该块矢量候选列表可以包括至少一个候选块矢量,从该块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量。针对当前块的每个像素位置,根据目标块矢量确定该像素位置的第一预测值,根据调色板模式确定该像素位置的第二预测值。
示例性的,关于块矢量候选列表的构建方式,编码端/解码端从块矢量候选列表中选择目标块矢量的方式,可以参见情况4,在此不再重复赘述。编码端/解码端根据调色板模式确定该像素位置的第二预测值,可以参见传统实现方式,对此不做限制。
情况15、第一预测模式为调色板模式,第二预测模式为帧间预测模式,针对当前块的每个像素位置,根据调色板模式确定该像素位置的第一预测值,根据帧间预测模式的目标运动信息确定该像素位置的第二预测值,对此过程不再赘述。或者,第一预测模式为调色板模式,第二预测模式为帧内预测模式,针对当前块的每个像素位置,根据调色板模式确定该像素位置的第一预测值,根据帧内预测模式的目标帧内模式确定该像素位置的第二预测值,对此过程不再赘述。或者,第一预测模式为调色板模式,第二预测模式为帧内块拷贝预测模式,针对当前块的每个像素位置,根据调色板模式确定该像素位置的第一预测值,根据帧内块拷贝预测模式的目标块矢量确定该像素位置的第二预测值,对此过程不再赘述。
在上述各情况中,第一预测模式的预测信息的指示信息与第二预测模式的预测信息的指示信息,可以进行互换,编码端与解码端一致即可,此处是指示信息的互换,不影响解析过程,即不存在解析依赖。在同一预测模式候选列表的情况下,第一预测模式的预测信息的指示信息与第二预测模式的预测信息的指示信息不能相等,因此,假设需要编码两个索引值,索引值a的取值为1,索引值b的取值为3,在先编码索引值a时,则索引值b可以只编码2(即3-1),在先编码索引值b时,则索引值b需要编码3。
综上所述,先编码索引值小的指示信息,可以降低另一个较大索引值的编码代价,在预测模式候选列表构建方式下,第一个预测模式大概率来自左侧,根据这个先验进行编码端与解码端的调整,可以先编码与左侧相邻区域的预测信息的指示信息。
以下结合情况一进行说明,其它情况的实现过程与情况一的实现过程类似,在此不再赘述。在情况一中,预测模式候选列表可以为运动信息候选列表,第一预测模式的预测信息可以为第一目标运动信息,第二预测模式的预测信息可以为第二目标运动信息。
在编码比特流中,可以先编码第一目标运动信息的指示信息,如索引值a,后编码第二目标运动信息的指示信息,如索引值b。也可以先编码第二目标运动信息的指示信息,如索引值b,后编码第一目标运动信息的指示信息,如索引值a。例如,假设索引值a的取值为1,索引值b的取值为3,则可以先编码索引值a,后编码索引值b。又例如,假设索引值b的取值为1,索引值a的取值为3,则可以先编码索引值b,后编码索引值a。
实施例9:在上述实施例1-实施例3、实施例8中,涉及当前块的第一预测模式和当前块的第二预测模式,如何存储当前块的目标预测信息,可以采用如下方式实现:
在一种可能的实施方式中,将第一预测模式的预测信息存储为当前块的目标预测信息;或者,将第二预测模式的预测信息存储为当前块的目标预测信息;或者,根据权重预测角度和权重预测位置确定当前块的存储方式,若存储方式为存储第一预测模式的预测信息,则将第一预测模式的预测信息存储为当前块的目标预测信息,若存储方式为存储第二预测模式的预测信息,则将第二预测模式的预测信息存储为当前块的目标预测信息。
在另一种可能的实施方式中,可以将当前块划分为至少一个预测信息存储单元,每个预测信息存储单元的尺寸可以任意配置,例如,1*1的预测信息存储单元、2*2的预测信息存储单元、4*4的预测信息存储单元等。从当前块的多个预测信息存储单元中选择目标预测信息存储单元,该目标预测信息存储单元可以是多个预测信息存储单元中的任一预测信息存储单元,如该目标预测信息存储单元位于当前块的右下角,即包括当前块右下角的像素位置。然后,根据权重预测角度和权重预测位置确定目标预测信息存储单元的存储方式,并将目标预测信息存储单元的存储方式确定为当前块的存储方式。基于当前块的存储方式,将第一预测模式的预测信息存储为当前块的目标预测信息,或者,将第二预测模式的预测信息存储为当前块的目标预测模式。例如,若存储方式为存储第一预测模式的预测信息,则将第一预测模式的预测信息存储为当前块的目标预测信息,若存储方式为存储第二预测模式的预测信息,则将第二预测模式的预测信息存储为当前块的目标预测信息。
综上所述,针对当前块的所有预测信息存储单元(如4*4大小),根据权重预测角度和权重预测位置确定目标预测信息存储单元的存储方式后,基于目标预测信息存储单元的存储方式确定将第一预测模式的预测信息存储为所有预测信息存储单元的目标预测信息,或将第二预测模式的预测信息存储为所有预测信息存储单元的目标预测信息。
在另一种可能的实施方式中,可以将当前块划分为至少一个预测信息存储单元,每个预测信息存储单元的尺寸可以任意配置,如1*1的预测信息存储单元、2*2的预测信息存储单元、4*4的预测信息存储单元等。针对当前块的每个预测信息存储单元,可以根据权重预测角度和权重预测位置确定该预测信息存储单元的存储方式,基于该预测信息存储单元的存储方式,可以将第一预测模式的预测信息存储为该预测信息存储单元的目标预测信息,或者,可以将第二预测模式的预测信息存储为该预测信息存储单元的目标预测信息。例如,若该存储方式为存储第一预测模式的预测信息,则将第一预测模式的预测信息存储为该预测信息存储单元的目标预测信息,若该存储方式为存储第二预测模式的预测信息,则将第二预测模式的预测信息存储为该预测信息存储单元的目标预测信息。
综上所述,针对当前块的每个预测信息存储单元(如4*4大小),根据权重预测角度和权重预测位置确定将第一预测模式的预测信息存储为该预测信息存储单元的目标预测信息,或将第二预测模式的预测信息存储为该预测信息存储单元的目标预测信息,其依据是每个预测信息存储单元与“划分结果”的相对位置关系。
在另一种可能的实施方式中,当第一预测模式和第二预测模式均为帧间预测模式时,且第一预测模式的预测信息(即上述第一目标运动信息)与第二预测模式的预测信息(即上述第二目标运动信息)来自不同的参考帧列表时,可以将第一预测模式的预测信息和第二预测模式的预测信息组合成新预测信息(如第一预测模式的第一目标运动信息和第二预测模式的第二目标运动信息均为单向运动信息,将两个单向运动信息组合成双向运动信息),并将新预测信息存储为当前块(或者当前块的每个预测信息存储单元)的目标预测信息。
示例性的,参见实施例8,若第一预测模式为帧间预测模式,则第一预测模式的预测信息为目标运动信息;若第一预测模式为帧内预测模式,则第一预测模式的预测信息为目标帧内模式;若第一预测模式为帧内块拷贝预测模式,则第一预测模式的预测信息为目标块矢量。
示例性的,参见实施例8,若第二预测模式为帧间预测模式,则第二预测模式的预测信息为目标运动信息;若第二预测模式为帧内预测模式,则第二预测模式的预测信息为目标帧内模式;若第二预测模式为帧内块拷贝预测模式,则第二预测模式的预测信息为目标块矢量。
以下结合几个具体应用场景,对上述目标预测信息的存储过程进行说明。假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高,X为权重预测角度的tan值的log2对数值,如0或1,Y为权重预测位置的索引值,如0~6等,a,b,c,d为预设的常数值。
应用场景1:通过如下公式确定有效数量ValidLenth:ValidLenth=(N+(M>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-a+Y*((ValidLength-1)>>3)。
示例性的,针对当前块的预测信息存储单元,将该预测信息存储单元的中心位置或者左上角位置的坐标记为(x,y),基于此,若(y<<1)+((x<<1)>>X)大于或者等于FirstPos,则该预测信息存储单元的存储方式可以为存储第一预测模式的预测信息;否则,该预测信息存储单元的存储方式可以为存储第二预测模式的预测信息。
应用场景2:通过如下公式确定有效数量ValidLenth:ValidLenth=(N+(M>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X)。针对当前块的预测信息存储单元,将该预测信息存储单元的中心位置或者左上角位置的坐标记为(x,y),基于此,若(y<<1)-((x<<1)>>X)大于或者等于FirstPos,则该预测信息存储单元的存储方式可以为存储第一预测模式的预测信息;否则,该预测信息存储单元的存储方式可以为存储第二预测模式的预测信息。
应用场景3:通过如下公式确定有效数量ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)–c+Y*((ValidLength-1)>>3)–((N<<1)>>X)。针对当前块的预测信息存储单元,将该预测信息存储单元的中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)-((y<<1)>>X)大于或者等于FirstPos,则该预测信息存储单元的存储方式可以为存储第一预测模式的预测信息;否则,该预测信息存储单元的存储方式可以为存储第二预测模式的预测信息。
应用场景4:通过如下公式确定有效数量ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。
示例性的,针对当前块的预测信息存储单元,将该预测信息存储单元的中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)+((y<<1)>>X)大于或者等于FirstPos,则该预测信息存储单元的存储方式可以为存储第一预测模式的预测信息;否则,该预测信息存储单元的存储方式可以为存储第二预测模式的预测信息。
示例性的,基于应用场景1-应用场景4确定每个预测信息存储单元的存储方式,基于预测信息存储单元的存储方式,可以将第一预测模式的预测信息存储为该预测信息存储单元的目标预测信息,或者,将第二预测模式的预测信息存储为该预测信息存储单元的目标预测信息。
基于应用场景1-应用场景4确定目标预测信息存储单元(即应用场景中的预测信息存储单元为目标预测信息存储单元)的存储方式,基于目标预测信息存储单元的存储方式,可以将第一预测模式的预测信息存储为当前块的目标预测信息,或者,将第二预测模式的预测信息存储为当前块的目标预测信息。
应用场景5:当第一预测模式和第二预测模式均为帧间预测模式,且第一预测模式的预测信息与第二预测模式的预测信息来自不同的参考帧列表时,可以采用如下存储方式:
通过如下公式确定有效数量ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。
示例性的,针对当前块的预测信息存储单元,将该预测信息存储单元的中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)+((y<<1)>>X)大于FirstPos,则该预测信息存储单元的存储方式可以为存储第一预测模式的预测信息;若(x<<1)+((y<<1)>>X)小于FirstPos,则该预测信息存储单元的存储方式可以为存储第二预测模式的预测信息;若(x<<1)+((y<<1)>>X)等于FirstPos,则该预测信息存储单元的存储方式可以为存储新预测信息(即第一预测模式的预测信息和第二预测模式的预测信息组合成的新预测信息)。
应用场景6:当第一预测模式和第二预测模式均为帧间预测模式,且第一预测模式的预测信息与第二预测模式的预测信息来自不同的参考帧列表时,可以采用如下存储方式:
通过如下公式确定有效数量ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。
示例性的,针对当前块的预测信息存储单元,将该预测信息存储单元的中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)+((y<<1)>>X)大于f1,则该预测信息存储单元的存储方式可以为存储第一预测模式的预测信息;若(x<<1)+((y<<1)>>X)小于f2,则该预测信息存储单元的存储方式可以为存储第二预测模式的预测信息;若(x<<1)+((y<<1)>>X)不大于f1,且不小于f2,则该预测信息存储单元的存储方式可以为存储新预测信息(即第一预测模式的预测信息和第二预测模式的预测信息组合成的新预测信息)。
示例性的,f1可以大于FirstPos,f2可以小于FirstPos,对此f1和f2的取值不做限制。如f1可以为FirstPos+2,f2可以为FirstPos-2,当然,f1和f2可以任意设置。
示例性的,基于应用场景5和应用场景6,确定每个预测信息存储单元的存储方式,基于预测信息存储单元的存储方式,可以将第一预测模式的预测信息存储为该预测信息存储单元的目标预测信息,或者,将第二预测模式的预测信息存储为该预测信息存储单元的目标预测信息,或者,将新预测信息存储为该预测信息存储单元的目标预测信息。
基于应用场景5和应用场景6,确定目标预测信息存储单元(即应用场景中的预测信息存储单元为目标预测信息存储单元)的存储方式,基于目标预测信息存储单元的存储方式,可以将第一预测模式的预测信息存储为当前块的目标预测信息,或者,将第二预测模式的预测信息存储为当前块的目标预测信息,或者,将新预测信息存储为该预测信息存储单元的目标预测信息。
实施例10:基于子块的帧间变换(Sub-Block Transform,SBT):SBT是基于子块的变换,又由于只运用于帧间预测得到的残差块,因此称为基于子块的帧间变换。一个完整的残差块被划分成两个子块,其中一个子块需要进行变换编码,另一个子块残差强制置0,不需要进行变换编码。基于非矩形划分模式(NRPM),NRPM是采用本实施例的上述实施例1-实施例9实现的技术。基于上述两种技术,则可以有以下实现方式:
1、对于SBT的使能条件的限制条件,在当前块已经是一个基于几何子块预测的帧间块时,当前块不使能SBT,也就是当前块的nrpm_cu_flag和sbtflag不能同时为真。SBT的尺寸限制条件至少包含当前块不是一个基于几何子块预测得到的帧间块。对当前块来说,语法中Cu_sbt_flag存在的条件包括但不限于当前块的nrpm_cu_flag标志位为假(false)。通过这一条件的限制,可以减少编码复杂度,减少由于SBT引起的视觉边界效应,提升主观质量。
2、对于SBT的使能条件,若当前块是一个三角划分或者几何划分预测的块,则当前块不会使用SBT。换言之,当前块SBT的使能条件包括两个条件,一个条件为当前块不为三角划分预测的块,另一个条件为当前块不为几何划分预测的块。
3、对于NRPM的使能条件的设置,当前块可以使用NRPM模式的条件包括但不限于:当前块的尺寸在宽度和高度的乘积大于等于64时,当前块可以使能NRPM模式。
4、对于NRPM的使能条件的设置,当前块可以使用NRPM模式的条件包括但不限于:当前块的尺寸在宽度为4,高度为大于等于16时,当前块可以使能NRPM模式。
5、对于NRPM的使能条件的设置,当前块可以使用NRPM模式的条件包括但不限于:当前块的尺寸在高度为4,宽度为大于等于16时,当前块可以使能NRPM模式。
6、对于nrpm_cu_flag语法,该语法用于表示当前块是否选择几何划分预测,该语法的语法元素采用基于上下文的自适应二进制算术编码或基于上下文的自适应二进制算术解码,该语法元素的编码仅采用一个上下文模型进行编码或者解码,在相关方案中会采用多个上下文模型(包括判断当前块的上边块/左边块是否使用了几何划分模式,当前块的尺寸是否超过一定阈值等)进行编码或者解码,本实施例可以简化上下文模型数目及概率更新的过程,简化编解码过程。
7、对于nrpm_cu_flag语法,该语法用于表示当前块是否选择几何划分预测,该语法的语法元素采用基于上下文的自适应二进制算术编码或基于上下文的自适应二进制算术解码,该语法元素的编码仅采用至多2个上下文模型进行编码或者解码,仅判断当前块的尺寸是否超过一定阈值,而在相关方案中会采用多个上下文模型(包括判断当前块的上边块/左边块是否使用了几何划分模式,当前块的尺寸是否超过一定阈值)进行编码或者解码,本实施例可以简化上下文模型数目及概率更新的过程,简化编解码过程,不需要判断左边块和上边块是否采用了nrpm_cu_flag来判决上下文模型的选择。
实施例11:基于与上述方法同样的申请构思,本申请实施例还提出一种编解码装置,所述装置应用于编码端或者解码端,参见图9A所示,为所述装置的结构图,包括:获取模块911,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;第一确定模块912,用于针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置,根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;第二确定模块913,用于根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,并根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值。
所述第一确定模块912还用于:获取所述当前块的权重预测位置;确定所述当前块的参考权重值列表,所述参考权重值列表包括多个参考权重值,所述参考权重值列表中的多个参考权重值是预先配置或者根据权重配置参数配置;根据目标索引从所述参考权重值列表中选择有效数量个参考权重值;根据所述有效数量个参考权重值,设置所述当前块外部的周边位置的参考权重值;所述有效数量是基于所述当前块的尺寸和所述权重预测角度确定;所述目标索引是基于所述当前块的尺寸,所述权重预测角度和所述当前块的权重预测位置确定。
所述第一确定模块912确定所述当前块的参考权重值列表时具体用于:将序列级参考权重值列表,确定为当前块的参考权重值列表;或,将预设的参考权重值列表,确定为所述当前块的参考权重值列表;或,将所述权重预测角度对应的参考权重值列表,确定为当前块的参考权重值列表;或,将所述权重预测角度和所述权重预测位置对应的参考权重值列表,确定为所述当前块的参考权重值列表;或,将所述当前块的尺寸和所述权重预测角度对应的参考权重值列表,确定为所述当前块的参考权重值列表。
所述权重配置参数包括权重变换率和权重变换的起始位置。
所述参考权重值列表中的多个参考权重值单调递增或单调递减。
所述参考权重值列表包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值;其中,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值单调递增,或第二邻近区域的参考权重值单调递减;或者,第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,所述第二参考权重值与所述第三参考权重值不同;或者,第一邻近区域的参考权重值单调递增,第二邻近区域的参考权重值单调递增;或者,第一邻近区域的参考权重值单调递减,第二邻近区域的参考权重值单调递减。
在一种可能的实施方式中,所述目标区域包括一个参考权重值;或者,所述目标区域包括多个参考权重值;其中,若所述目标区域包括多个参考权重值,则所述目标区域的多个参考权重值单调递增,或者,所述目标区域的多个参考权重值单调递减。
在一种可能的实施方式中,所述当前块外部周边位置包括:所述当前块外部上侧一行的周边位置;或者,所述当前块外部左侧一列的周边位置;或者,所述当前块外部下侧一行的周边位置;或者,所述当前块外部右侧一列的周边位置。
所述当前块外部周边位置包括整像素位置;或者,所述当前块外部周边位置包括亚像素位置;或者,所述当前块外部周边位置包括整像素位置和亚像素位置。
所述第一确定模块912还用于获取所述当前块的权重预测位置;根据所述周边匹配位置的坐标值与所述当前块的权重预测位置的坐标值确定所述周边匹配位置关联的参考权重值。
所述第一确定模块912根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值时具体用于:若所述周边匹配位置是整像素位置,且所述整像素位置已设置参考权重值,则根据所述整像素位置的参考权重值确定所述像素位置的目标权重值;或者,
若所述周边匹配位置是整像素位置,且所述整像素位置未设置参考权重值,则根据所述整像素位置的相邻位置的参考权重值确定所述像素位置的目标权重值;或者,
若所述周边匹配位置是亚像素位置,且所述亚像素位置已设置参考权重值,则根据所述亚像素位置的参考权重值确定所述像素位置的目标权重值;或者,
若所述周边匹配位置是亚像素位置,且所述亚像素位置未设置参考权重值,则根据所述亚像素位置的相邻位置的参考权重值确定所述像素位置的目标权重值。
在一种可能的实施方式中,所述第一预测模式为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个;所述第二预测模式为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个。
若所述第一预测模式为帧间预测模式,所述第二预测模式为帧间预测模式,第二确定模块913具体用于:构建运动信息候选列表,运动信息候选列表包括至少两个候选运动信息;从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的第一目标运动信息,从所述运动信息候选列表中选择另一个候选运动信息作为所述当前块的第二目标运动信息;根据所述第一目标运动信息确定所述像素位置的第一预测值;根据所述第二目标运动信息确定所述像素位置的第二预测值。所述运动信息候选列表中的候选运动信息均为单假设运动信息。
若所述第一预测模式为帧间预测模式,所述第二预测模式为帧间预测模式,第二确定模块913具体用于:构建第一运动信息候选列表和第二运动信息候选列表,所述第一运动信息候选列表包括至少一个候选运动信息,所述第二运动信息候选列表包括至少一个候选运动信息;从第一运动信息候选列表中选择一个候选运动信息作为所述当前块的第一目标运动信息,并从第二运动信息候选列表中选择一个候选运动信息作为所述当前块的第二目标运动信息;根据所述第一目标运动信息确定所述像素位置的第一预测值;根据所述第二目标运动信息确定所述像素位置的第二预测值。所述第一运动信息候选列表中的候选运动信息均为单假设运动信息;所述第二运动信息候选列表中的候选运动信息均为单假设运动信息。所述第一运动信息候选列表中的候选运动信息的参考帧,来自于所述当前块的一个参考帧列表;所述第二运动信息候选列表中的候选运动信息的参考帧,来自于所述当前块的另一个参考帧列表。
若所述第一预测模式为帧间预测模式,所述第二预测模式为帧内预测模式,第二确定模块913具体用于:构建运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息;从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的目标运动信息;确定所述当前块的目标帧内模式;根据所述目标运动信息确定所述像素位置的第一预测值;根据所述目标帧内模式确定所述像素位置的第二预测值。示例性的,所述运动信息候选列表中的候选运动信息包括单假设运动信息,和/或,多假设运动信息。
若所述第一预测模式为帧内块拷贝预测模式,所述第二预测模式为帧内块拷贝预测模式,第二确定模块913具体用于:构建块矢量候选列表,所述块矢量候选列表包括至少两个候选块矢量;从所述块矢量候选列表中选择一个候选块矢量作为所述当前块的第一目标块矢量,并从所述块矢量候选列表中选择另一个候选块矢量作为所述当前块的第二目标块矢量;根据所述第一目标块矢量确定所述像素位置的第一预测值;根据所述第二目标块矢量确定所述像素位置的第二预测值。
若所述第一预测模式为帧内块拷贝预测模式,所述第二预测模式为帧内块拷贝预测模式,第二确定模块913具体用于:构建第一块矢量候选列表和第二块矢量候选列表,所述第一块矢量候选列表包括至少一个候选块矢量,所述第二块矢量候选列表包括至少一个候选块矢量;从所述第一块矢量候选列表中选择一个候选块矢量作为所述当前块的第一目标块矢量,并从所述第二块矢量候选列表中选择一个候选块矢量作为所述当前块的第二目标块矢量;根据所述第一目标块矢量确定所述像素位置的第一预测值;根据所述第二目标块矢量确定所述像素位置的第二预测值。
所述编解码装置还可以包括:存储模块,用于若所述当前块包括多个预测信息存储单元,则从所述多个预测信息存储单元中选择目标预测信息存储单元;根据所述权重预测角度和所述权重预测位置确定所述目标预测信息存储单元的存储方式;将所述目标预测信息存储单元的存储方式确定为所述当前块的存储方式;基于所述当前块的存储方式,将所述第一预测模式的预测信息存储为所述当前块的目标预测信息,或者,将所述第二预测模式的预测信息存储为所述当前块的目标预测信息。
示例性的,所述目标预测信息存储单元位于所述当前块的右下角。
所述存储模块,还用于针对所述当前块的每个预测信息存储单元,根据所述权重预测角度和所述权重预测位置确定所述预测信息存储单元的存储方式;基于所述预测信息存储单元的存储方式,将所述第一预测模式的预测信息存储为所述预测信息存储单元的目标预测信息,或者,将所述第二预测模式的预测信息存储为所述预测信息存储单元的目标预测信息。
在上述实施例中,所述权重预测角度为水平角度;或者,所述权重预测角度为垂直角度;或者,所述权重预测角度的斜率的绝对值为2的n次方,n为整数。
基于与上述方法同样的申请构思,本申请实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图9B所示。包括:处理器921和机器可读存储介质922,其中:所述机器可读存储介质922存储有能够被所述处理器921执行的机器可执行指令;所述处理器921用于执行机器可执行指令,以实现本申请上述示例公开的方法。
例如,所述处理器921用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置,根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,并根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值。
基于与上述方法同样的申请构思,本申请实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图9C所示。包括:处理器931和机器可读存储介质932,其中:所述机器可读存储介质932存储有能够被所述处理器931执行的机器可执行指令;所述处理器931用于执行机器可执行指令,以实现本申请上述示例公开的方法。
例如,所述处理器931用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置,根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,并根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法。其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (9)

1.一种解码方法,其特征在于,所述方法包括:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置,根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,并根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值;
其中,若所述第一预测模式为帧内预测模式,所述第二预测模式为帧内预测模式,所述根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值,包括:构建帧内预测模式候选列表,所述帧内预测模式候选列表包括至少两个候选帧内模式;从所述帧内预测模式候选列表中选择一个候选帧内模式作为所述当前块的第一目标帧内模式,从所述帧内预测模式候选列表中选择另一个候选帧内模式作为所述当前块的第二目标帧内模式;根据所述第一目标帧内模式确定所述像素位置的第一预测值;根据所述第二目标帧内模式确定所述像素位置的第二预测值。
2.根据权利要求1所述的方法,其特征在于,
所述根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,包括:
若所述周边匹配位置是整像素位置,且所述整像素位置已设置参考权重值,则根据所述整像素位置的参考权重值确定所述像素位置的目标权重值;或者,
若所述周边匹配位置是亚像素位置,且所述亚像素位置已设置参考权重值,则根据所述亚像素位置的参考权重值确定所述像素位置的目标权重值。
3.根据权利要求1所述的方法,其特征在于,所述从所述帧内预测模式候选列表中选择一个候选帧内模式作为所述当前块的第一目标帧内模式,从所述帧内预测模式候选列表中选择另一个候选帧内模式作为所述当前块的第二目标帧内模式,包括:
从编码比特流中解析出第一指示信息和第二指示信息,所述第一指示信息用于指示当前块的第一目标帧内模式的第一索引值,所述第一索引值用于索引所述帧内预测模式候选列表中的第一目标帧内模式,所述第二指示信息用于指示当前块的第二目标帧内模式的第二索引值,所述第二索引值用于索引所述帧内预测模式候选列表中的第二目标帧内模式;
基于所述第一指示信息,从所述帧内预测模式候选列表中选择所述第一索引值对应的候选帧内模式作为当前块的第一目标帧内模式;基于所述第二指示信息,从所述帧内预测模式候选列表中选择所述第二索引值对应的候选帧内模式作为当前块的第二目标帧内模式。
4.根据权利要求1-3任一项所述的方法,其特征在于,
所述第一目标帧内模式与所述第二目标帧内模式不同。
5.根据权利要求1所述的方法,其特征在于,所述根据所述当前块的每个像素位置的加权预测值确定所述当前块的加权预测值之后,所述方法还包括:
针对所述当前块的每个预测信息存储单元,根据所述权重预测角度和所述权重预测位置确定所述预测信息存储单元的存储方式;基于所述预测信息存储单元的存储方式,将所述第一目标帧内模式存储为所述预测信息存储单元的目标帧内模式,或者,将所述第二目标帧内模式存储为所述预测信息存储单元的目标帧内模式。
6.根据权利要求5所述的方法,其特征在于,
所述预测信息存储单元是4*4大小的预测信息存储单元。
7.一种解码装置,其特征在于,应用于解码端,
所述解码装置包括的模块用于实现权利要求1-6中任一项所述的方法。
8.一种解码设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求1-6中任一项所述的方法。
9.一种机器可读存储介质,其特征在于,
所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求1-6中任一项所述的方法。
CN202111152763.4A 2019-12-23 2019-12-23 一种编解码方法、装置及其设备 Active CN113709500B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111152763.4A CN113709500B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202111152763.4A CN113709500B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备
CN201911343050.9A CN113099240B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201911343050.9A Division CN113099240B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备

Publications (2)

Publication Number Publication Date
CN113709500A true CN113709500A (zh) 2021-11-26
CN113709500B CN113709500B (zh) 2022-12-23

Family

ID=76663256

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202111155058.XA Active CN113709501B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备
CN201911343050.9A Active CN113099240B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备
CN202111152763.4A Active CN113709500B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN202111155058.XA Active CN113709501B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备
CN201911343050.9A Active CN113099240B (zh) 2019-12-23 2019-12-23 一种编解码方法、装置及其设备

Country Status (1)

Country Link
CN (3) CN113709501B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023123478A1 (zh) * 2021-12-31 2023-07-06 Oppo广东移动通信有限公司 预测方法、装置、设备、系统、及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113810686B (zh) * 2020-06-01 2023-02-24 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN114938449B (zh) * 2022-07-20 2023-10-27 浙江大华技术股份有限公司 帧内预测方法、图像编码方法、图像解码方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105491390A (zh) * 2015-11-30 2016-04-13 哈尔滨工业大学 混合视频编码标准中帧内预测方法
CN107995489A (zh) * 2017-12-20 2018-05-04 北京大学深圳研究生院 一种用于p帧或b帧的帧内帧间组合预测方法
CN108702515A (zh) * 2016-02-25 2018-10-23 联发科技股份有限公司 视频编解码的方法与装置
CN110312132A (zh) * 2019-03-11 2019-10-08 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130107949A1 (en) * 2011-10-26 2013-05-02 Intellectual Discovery Co., Ltd. Scalable video coding method and apparatus using intra prediction mode
CN107113425A (zh) * 2014-11-06 2017-08-29 三星电子株式会社 视频编码方法和设备以及视频解码方法和设备
WO2016195460A1 (ko) * 2015-06-05 2016-12-08 한양대학교 산학협력단 화면 내 예측에 대한 부호화/복호화 방법 및 장치
CN116886928A (zh) * 2016-11-28 2023-10-13 韩国电子通信研究院 对图像编码/解码的方法和设备及存储比特流的记录介质
CN109996080B (zh) * 2017-12-31 2023-01-06 华为技术有限公司 图像的预测方法、装置及编解码器
CN111385569B (zh) * 2018-12-28 2022-04-26 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN110072112B (zh) * 2019-03-12 2023-05-12 浙江大华技术股份有限公司 帧内预测方法、编码器及存储装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105491390A (zh) * 2015-11-30 2016-04-13 哈尔滨工业大学 混合视频编码标准中帧内预测方法
CN108702515A (zh) * 2016-02-25 2018-10-23 联发科技股份有限公司 视频编解码的方法与装置
CN107995489A (zh) * 2017-12-20 2018-05-04 北京大学深圳研究生院 一种用于p帧或b帧的帧内帧间组合预测方法
CN110312132A (zh) * 2019-03-11 2019-10-08 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023123478A1 (zh) * 2021-12-31 2023-07-06 Oppo广东移动通信有限公司 预测方法、装置、设备、系统、及存储介质

Also Published As

Publication number Publication date
CN113099240A (zh) 2021-07-09
CN113709500B (zh) 2022-12-23
CN113709501A (zh) 2021-11-26
CN113709501B (zh) 2022-12-23
CN113099240B (zh) 2022-05-31

Similar Documents

Publication Publication Date Title
US11882281B2 (en) Method and apparatus for encoding/decoding image
CN113099240B (zh) 一种编解码方法、装置及其设备
CN113709460B (zh) 一种编解码方法、装置及其设备
JP5485851B2 (ja) 映像符号化方法,映像復号方法,映像符号化装置,映像復号装置およびそれらのプログラム
CN112543323B (zh) 一种编解码方法、装置及其设备
CN112369021A (zh) 用于吞吐量增强的图像编码/解码方法和设备以及存储比特流的记录介质
CN112584142B (zh) 一种编解码方法、装置及其设备
JP7541599B2 (ja) 復号化方法、復号化デバイス、復号化側機器、電子機器及び不揮発性記憶媒体
CN113709462B (zh) 一种编解码方法、装置及其设备
CN113810686B (zh) 一种编解码方法、装置及其设备
CN113709488B (zh) 一种编解码方法、装置及其设备
CN113709499B (zh) 一种编解码方法、装置及其设备
CN114598889B (zh) 一种编解码方法、装置及其设备
CN114650423B (zh) 一种编解码方法、装置及其设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant