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

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

Info

Publication number
CN113709460B
CN113709460B CN202111152789.9A CN202111152789A CN113709460B CN 113709460 B CN113709460 B CN 113709460B CN 202111152789 A CN202111152789 A CN 202111152789A CN 113709460 B CN113709460 B CN 113709460B
Authority
CN
China
Prior art keywords
weight
value
prediction
sub
current block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111152789.9A
Other languages
English (en)
Other versions
CN113709460A (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 CN202111152789.9A priority Critical patent/CN113709460B/zh
Publication of CN113709460A publication Critical patent/CN113709460A/zh
Application granted granted Critical
Publication of CN113709460B publication Critical patent/CN113709460B/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/167Position within a video image, e.g. region of interest [ROI]
    • 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/182Methods 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 a pixel
    • 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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy

Landscapes

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

Abstract

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

Description

一种编解码方法、装置及其设备
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。其中,预测编码可以包括帧内编码和帧间编码。进一步的,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。帧内编码是指利用视频空间域的相关性,使用当前帧图像的已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
在相关技术中,当前块为矩形,而实际物体的边缘往往不是矩形,因此,对于物体边缘来说,往往存在两个不同对象(如存在前景的物体和背景)。基于此,当两个对象的运动不一致时,矩形划分不能很好的将两个对象分割,如果为此将当前块划分为两个非矩形子块,则通过两个非矩形子块预测当前块,那么,会存在预测效果不佳,编码性能差等问题。
发明内容
有鉴于此,本申请提供了一种编解码方法、装置及其设备,提高了预测的准确性。
本申请提供一种编解码方法,在确定对当前块启动加权预测时,所述方法包括:
针对所述当前块包括的至少一个子块中的每个子块,获取所述子块的权重预测角度;
针对所述子块的每个像素位置,根据所述子块的权重预测角度从所述子块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
针对所述子块的每个像素位置,根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据每个子块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编解码装置,所述装置包括:
获取模块,用于在确定对当前块启动加权预测时,针对所述当前块包括的至少一个子块中的每个子块,获取所述子块的权重预测角度;
第一确定模块,用于针对所述子块的每个像素位置,根据所述子块的权重预测角度从所述子块外部的周边位置中确定所述像素位置指向的周边匹配位置;
第二确定模块,用于根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
第三确定模块,用于针对所述子块的每个像素位置,根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
编解码模块,用于根据每个子块的所有像素位置的加权预测值确定当前块的加权预测值。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,针对所述当前块包括的至少一个子块中的每个子块,获取所述子块的权重预测角度;
针对所述子块的每个像素位置,根据所述子块的权重预测角度从所述子块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
针对所述子块的每个像素位置,根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据每个子块的所有像素位置的加权预测值确定所述当前块的加权预测值。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,针对所述当前块包括的至少一个子块中的每个子块,获取所述子块的权重预测角度;
针对所述子块的每个像素位置,根据所述子块的权重预测角度从所述子块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
针对所述子块的每个像素位置,根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据每个子块的所有像素位置的加权预测值确定所述当前块的加权预测值。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值加更接近原始像素,并带来编码性能的提高。
附图说明
图1是视频编码框架的示意图;
图2A-图2E是加权预测的示意图;
图3是本申请一种实施方式中的编解码方法的流程图;
图4A是本申请一种实施方式中的编解码方法的流程图;
图4B-图4E是当前块的子块外部的周边位置的示意图;
图4F是本申请一种实施方式中的编解码方法的流程图;
图5A是本申请一种实施方式中的编解码方法的流程图;
图5B-图5F是子块的权重预测角度、子块尺寸、权重预测位置的示意图;
图5G是本申请一种实施方式中的编解码方法的流程图;
图6A和图6B是本申请一种实施方式中的权重预测角度的示意图;
图6C-图6T是本申请一种实施方式中的子块的划分示意图;
图7是本申请一种实施方式中的当前块的相邻块的示意图;
图8A是本申请一种实施方式中的编解码装置的结构示意图;
图8B是本申请一种实施方式中的解码端设备的硬件结构图;
图8C是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
本申请实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
帧内预测、帧间预测(intra prediction and inter prediction)与IBC(帧内块拷贝)预测:
帧内预测是指,利用视频空间域的相关性,使用当前块的已编码块进行预测,以达到去除视频空域冗余的目的。帧内预测规定了多种预测模式,每种预测模式对应一种纹理方向(DC模式除外),例如,若图像纹理呈现水平状排布,则水平预测模式可以更好的预测图像信息。
帧间预测是指,基于视频时域的相关性,由于视频序列包含有较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,可以达到有效去除视频时域冗余的目的。视频编码标准帧间预测部分都采用了基于块的运动补偿技术,主要原理是为当前图像的每一个像素块在之前已编码图像中寻找一个最佳匹配块,该过程称为运动估计(MotionEstimation,ME)。
帧内块拷贝(IBC,Intra Block Copy)是指,允许同帧参考,当前块的参考数据来自同一帧,帧内块拷贝也可以称为帧内块复制。帧内块拷贝技术中,可以使用当前块的块矢量获取当前块的预测值,示例性的,基于屏幕内容中同一帧内存在大量重复出现的纹理这一特性,在采用块矢量获取当前块的预测值时,能够提升屏幕内容序列的压缩效率。
预测像素(Prediction Signal):预测像素是指从已编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换量化以及系数编码。帧间的预测像素指的是当前块从参考帧导出的像素值,由于像素位置离散,需要通过插值运算来获取最终的预测像素。预测像素与原始像素越接近,两者相减得到的残差能量越小,编码压缩性能越高。
运动矢量(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
调色板模式(Palette Mode):在调色板模式下,当前块的像素值通过一个小的像素值集合来表示,即调色板。在当前块中的像素位置的像素值接近调色板中的某个颜色时,该像素位置编码调色板中对应颜色的索引值。在当前块中的像素位置的像素值与调色板中的所有颜色不相似时,需要对该像素位置编码“逃离像素值”,并直接将其量化后编入码流。对于解码端来说,先获得一个调色板,例如,存储了{颜色A,颜色B,颜色C},而后每个像素位置先确认是不是逃离像素值,若不是逃离像素,则从码流中获得像素位置的索引,基于该像素位置的索引从调色板中获取颜色赋予该像素位置,否则,解析逃离像素值。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用RDO原则去对编码模式做比较决策,通常可以保证编码性能最佳。
视频编码框架:参见图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模式类似。
GEO预测块由帧间预测块1(即采用帧间预测模式得到像素位置的帧间预测值)和帧间预测块2(即采用帧间预测模式得到像素位置的帧间预测值)组合得到。GEO预测块可以划分为两个区域,一个区域可以为帧间区域1,另一个区域可以为帧间区域2。
示例性的,针对帧间区域1的每个像素位置,主要是基于帧间预测块1的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块1的帧间预测值的权重值较大,帧间预测块2的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。针对帧间区域2的每个像素位置,主要是基于帧间预测块2的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块2的帧间预测值的权重值较大,帧间预测块1的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。最终,可以将每个像素位置的联合预测值组成GEO预测块。
示例性的,GEO预测块的权重值设置与像素位置离分割线的距离有关,参见图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:实施例1中,当前块可以包括一个子块,即子块是当前块本身,针对一个子块的情况,参见图4A所示,为编解码方法的流程示意图,可以应用于编码端,该方法包括:
步骤401,在确定对当前块启动加权预测时,编码端获取子块的权重预测角度和权重预测位置。示例性的,编码端需要确定是否对当前块启动加权预测,如果是,则获取子块的权重预测角度和权重预测位置,并执行后续步骤,如果否,则处理方式本申请不做限制。
在一种可能的实施方式中,若当前块满足启动加权预测的条件,则编码端可以确定需要对当前块启动加权预测。若当前块不满足启动加权预测的条件,则编码端可以确定不需要对当前块启动加权预测。例如,编码端可以判断当前块的特征信息是否满足特定条件。如果是,则可以确定对当前块启动加权预测;如果否,则可以确定对当前块不启动加权预测。
示例性的,该特征信息包括但不限于以下之一或者任意组合:当前块所在当前帧的帧类型,当前块的尺寸信息,开关控制信息。该开关控制信息可以包括但不限于:序列级(SPS、SH)开关控制信息,或者,图像级(PPS、PH)开关控制信息,或者,片级(Slice、Tile、Patch),或者最大编码单元级(LCU、CTU)开关控制信息。
例如,若该特征信息为当前块所在当前帧的帧类型,当前块所在当前帧的帧类型满足特定条件,可以包括但不限于:若当前块所在当前帧的帧类型为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。
例如,若特征信息为开关控制信息,则该开关控制信息满足特定条件,可以包括但不限于:若开关控制信息为允许当前块启用加权预测,则确定该开关控制信息满足特定条件。
例如,若该特征信息为当前块所在当前帧的帧类型,当前块的尺寸信息,则该帧类型满足特定条件,且该尺寸信息满足特定条件时,可以确定当前块的特征信息满足特定条件。若该特征信息为当前块所在当前帧的帧类型,开关控制信息,则该帧类型满足特定条件,且该开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。若该特征信息为当前块的尺寸信息、开关控制信息,则该尺寸信息满足特定条件,且该开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。若该特征信息为当前块所在当前帧的帧类型、当前块的尺寸信息、开关控制信息,则该帧类型满足特定条件,且尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。
在一种可能的实施方式中,在确定对当前块启动加权预测时,编码端获取子块的权重预测角度和权重预测位置。权重预测角度表示子块内部的像素位置所指向的角度方向。参见图4B所示,基于某一种权重预测角度,示出了子块内部的像素位置(如像素位置1、像素位置2和像素位置3)所指向的角度方向,该角度方向指向子块外部的某个周边位置。参见图4C所示,基于另一种权重预测角度,示出了子块内部的像素位置(如像素位置2、像素位置3和像素位置4)所指向的角度方向,该角度方向指向子块外部的某个周边位置。
权重预测位置(也可以称为距离参数)用于配置子块外部周边位置的参考权重值。例如,可以根据权重预测角度、子块的尺寸等参数确定子块外部的周边位置的范围,参见图4B和图4C所示。然后,将周边位置的范围进行N等分,N的取值可以任意设置,如4、6、8等,以8为例进行说明,权重预测位置用于表示哪个周边位置作为子块的权重变换的起始位置,从而根据权重变换的起始位置配置该子块外部的周边位置的参考权重值。
参见图4D所示,在将所有周边位置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的取值也可以相同,在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,得到子块的加权预测值,以此类推。编码端可以基于每个组合(权重预测角度和权重预测位置的组合),得到子块的加权预测值。
若子块划分方式确定,编码端基于权重预测角度和权重预测位置的组合得到所有子块的加权预测值后,根据子块的加权预测值确定率失真代价值,对此确定方式不做限制,编码端可以得到每个组合的率失真代价值,并从所有率失真代价值中选择最小率失真代价值。
然后,编码端将最小率失真代价值对应的权重预测角度和权重预测位置组合分别作为每个字块的目标权重预测角度和目标权重预测位置,最后将目标权重预测角度在权重预测角度列表中的索引值和目标权重预测位置在权重预测位置列表中的索引值编入码流。例如,每个子块可以在码流中分别编码指示信息1和指示信息2,指示信息1用于指示目标权重预测角度在权重预测角度列表中的索引值,指示信息2用于指示目标权重预测位置在权重预测位置列表中的索引值;或者,可以在码流中编码一个指示信息3,指示信息3用于指示目标权重预测角度在权重预测角度列表中的索引值,并指示标权重预测位置在权重预测位置列表中的索引值;又或者,可以编码端和解码端约定部分子块的约束关系,从而达到进一步压缩编码信息的目的,例如,约定部分子块的权重预测位置一致。
当然,上述方式只是示例,对此不做限制,只要能够得到子块的权重预测角度和权重预测位置即可,例如,从权重预测角度列表中随机选择一个权重预测角度作为子块的权重预测角度,从权重预测位置列表中随机选择一个权重预测位置作为子块的权重预测位置。
步骤402,针对子块的每个像素位置,编码端根据子块的权重预测角度从子块外部的周边位置中确定该像素位置指向的周边匹配位置。为了区分方便,本实施例中,可以将该像素位置指向的子块外部的周边位置,称为该像素位置的周边匹配位置。
示例性的,由于权重预测角度表示子块内部的像素位置所指向的角度方向,因此,针对子块的每个像素位置,基于该权重预测角度确定该像素位置所指向的角度方向,继而根据该角度方向从该像素所属子块的外部的周边位置中确定该像素位置指向的周边匹配位置。
示例性的,子块外部周边位置可以包括:子块外部上侧一行的周边位置,如子块外部上侧第n1行的周边位置,n1可以为1,也可以为2、3等,对此不做限制。或者,子块外部左侧一列的周边位置,如子块外部左侧第n2列的周边位置,n2可以为1,也可以为2、3等,对此不做限制。或者,子块外部下侧一行的周边位置,如子块外部下侧第n3行的周边位置,n3可以为1,也可以为2、3等,对此不做限制。或者,子块外部右侧一列的周边位置,如子块外部右侧第n4列的周边位置,n4可以为1,也可以为2、3等,对此不做限制。
当然,上述只是周边位置的几个示例,对此不做限制,在实际应用中,除了利用子块外部周边位置,还可以利用子块的内部位置,即使用子块的内部位置替换上述子块外部周边位置,例如,位于子块内部第n5行的内部位置,n5可以为1,也可以为2、3等,又例如,位于子块内部第n6列的内部位置,n6可以为1,也可以为2、3等。当然,上述内部位置的长度可以超出子块的范围,例如第n7行的位置可以超出当前子块的范围,即往两边可延伸。
当然,还可以同时使用子块的内部位置和子块外部周边位置。
针对使用子块的内部位置,或者,同时使用子块的内部位置和子块外部周边位置的情况,可以将该子块通过内部位置所在行分为上下两个小子块,或者,通过内部位置所在列分为左右两个小子块,此时,两个小子块拥有相同的权重预测角度以及相同的参考权重配置。
示例性的,子块外部周边位置可以位于像素位置之间,即亚像素位置,此时子块的位置不能简单描述为第x行,而是位于第x行与第y行之间的亚像素位置行。
为了方便描述,在后续实施例中,以子块外部上侧第1行的周边位置,或者,子块外部左侧第1列的周边位置为例,针对其它周边位置的情况,实现方式与此类似。
示例性的,针对子块外部周边位置的范围,可以预先指定某个范围是子块外部的周边位置的范围;或者,可以根据权重预测角度确定子块外部的周边位置的范围,例如,根据权重预测角度确定子块内部的每个像素位置指向的周边位置,所有像素位置指向的周边位置的边界,可以是子块外部的周边位置的范围,对此周边位置的范围不做限制。
子块外部周边位置可以包括整像素位置;或者,子块外部周边位置可以包括非整像素位置,非整像素位置可以为亚像素位置,如1/2亚像素位置,1/4亚像素位置,3/4亚像素位置等,对此不做限制;或者,子块外部周边位置可以包括整像素位置和亚像素位置。
示例性的,子块外部的两个周边位置,可以对应一个整像素位置;或者,子块外部的四个周边位置,可以对应一个整像素位置;或者,子块外部的一个周边位置,可以对应一个整像素位置;或者,子块外部的一个周边位置,可以对应两个整像素位置。当然,上述只是几个示例,对此不做限制,周边位置与整像素位置的关系可以任意配置。
参见图4B和图4C所示,是一个周边位置对应一个整像素位置,参见图4E所示,是两个周边位置对应一个整像素位置,对于其它情况,本实施例中不再赘述。
步骤403,编码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
示例性的,针对子块的每个像素位置,在确定该像素位置指向的周边匹配位置后,编码端可以确定该周边匹配位置关联的参考权重值,该周边匹配位置关联的参考权重值可以是预先配置,也可以是采用某种策略确定,具体确定方式可以参见后续实施例。
然后,编码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,例如,可以将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。
示例性的,可以为子块外部的周边位置设置参考权重值,具体过程参见后续实施例,且子块外部的周边位置可以是整像素位置或者亚像素位置,比如说,可以为子块外部的整像素位置设置参考权重值,和/或,可以为子块外部的亚像素位置设置参考权重值。
在一种可能的实施方式中,根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,可以包括:情况一、若该周边匹配位置是整像素位置,且该整像素位置已设置参考权重值,根据该整像素位置的参考权重值确定该像素位置的目标权重值。情况二、若该周边匹配位置是整像素位置,且该整像素位置未设置参考权重值,则可以根据该整像素位置的相邻位置的参考权重值确定该像素位置的目标权重值;例如,对相邻位置的参考权重值进行向上取整操作,得到该像素位置的目标权重值;或者,对相邻位置的参考权重值进行向下取整操作,得到该像素位置的目标权重值;或者,根据该整像素位置的相邻位置的参考权重值的插值确定该像素位置的目标权重值,对此不做限制。情况三、若该周边匹配位置是亚像素位置,且该亚像素位置已设置参考权重值,根据该亚像素位置的参考权重值确定该像素位置的目标权重值。情况四、若该周边匹配位置是亚像素位置,且该亚像素位置未设置参考权重值,则可以根据该亚像素位置的相邻位置的参考权重值确定该像素位置的目标权重值;例如,对相邻位置的参考权重值进行向上取整操作,得到该像素位置的目标权重值;或者,对相邻位置的参考权重值进行向下取整操作,得到该像素位置的目标权重值;或者,根据该亚像素位置的相邻位置的参考权重值的插值确定该像素位置的目标权重值,对此不做限制。情况五、根据周边匹配位置关联的多个参考权重值确定该像素位置的目标权重值,例如,无论该周边匹配位置是整像素位置还是亚像素位置,均可以获取周边匹配位置的多个相邻位置的参考权重值。若周边匹配位置已设置参考权重值,则根据周边匹配位置的参考权重值和多个相邻位置的参考权重值进行加权运算,得到该像素位置的目标权重值;若周边匹配位置未设置参考权重值,则根据多个相邻位置的参考权重值进行加权运算,得到该像素位置的目标权重值。
当然,上述情况一至情况五只是几个示例,对此目标权重值的确定方式不做限制。
步骤404,编码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
步骤405,针对子块的每个像素位置,编码端根据当前块的第一预测模式确定该像素位置的第一预测值,并根据当前块的第二预测模式确定该像素位置的第二预测值。
示例性的,第一预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个;第二预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个。例如,第一预测模式可以为帧内块拷贝预测模式,第二预测模式可以为帧内块拷贝预测模式;或者,第一预测模式可以为帧内块拷贝预测模式,第二预测模式可以为帧内预测模式;或者,第一预测模式可以为帧内块拷贝预测模式,第二预测模式可以为帧间预测模式;或者,第一预测模式可以为帧内块拷贝预测模式,第二预测模式可以为调色板模式;以此类推,对此第一预测模式和第二预测模式均不做限制。
关于根据第一预测模式和第二预测模式确定预测值的过程,参见后续实施例。
步骤406,编码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
步骤407,编码端根据子块的每个像素位置的加权预测值确定当前块的加权预测值。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更加接近原始像素,并带来编码性能的提高。
实施例3:实施例1中,当前块可以包括一个子块,即子块是当前块本身,针对一个子块的情况,参见图4F所示,为编解码方法的流程示意图,可以应用于解码端,该方法包括:
步骤411,在确定对当前块启动加权预测时,解码端获取子块的权重预测角度和权重预测位置。示例性的,解码端需要确定是否允许对当前块启动加权预测,如果是,则获取子块的权重预测角度和权重预测位置,执行后续步骤,如果否,则处理方式本申请不做限制。
在一种可能的实施方式中,编码端判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测。解码端也判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测;如果否,则确定不对当前块启动加权预测。关于解码端如何基于特征信息确定当前块是否启动加权预测,可以参见步骤401,在此不再重复赘述。
在另一种可能的实施方式中,编码端根据当前块的特征信息确定当前块是否支持加权预测,在当前块支持加权预测时,还可以采用其它策略确定是否对当前块启动加权预测,如采用率失真原则确定是否对当前块启动加权预测。在确定是否对当前块启动加权预测后,编码端在发送当前块的编码比特流时,该编码比特流可以包括是否启动加权预测的语法,该语法表示当前块是否启动加权预测。解码端根据当前块的特征信息确定当前块是否支持加权预测,具体方式参见步骤401,在此不再重复赘述。在当前块支持加权预测时,解码端还可以从编码比特流中解析出是否启动加权预测的语法,并根据该语法确定是否对当前块启动加权预测。
在一种可能的实施方式中,在确定对当前块启动加权预测时,解码端获取子块的权重预测角度和权重预测位置,权重预测角度和权重预测位置的相关解释,参见步骤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对应的权重预测位置,该权重预测位置作为子块的权重预测位置。
当然,上述方式一和方式二只是示例,对此不做限制,只要解码端能够得到子块的权重预测角度(即目标权重预测角度)和权重预测位置(即目标权重预测位置)即可。
步骤412,针对子块的每个像素位置,解码端根据子块的权重预测角度从子块外部的周边位置中确定该像素位置指向的周边匹配位置。
步骤413,解码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
步骤414,解码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
步骤415,针对子块的每个像素位置,解码端根据当前块的第一预测模式确定该像素位置的第一预测值,并根据当前块的第二预测模式确定该像素位置的第二预测值。
步骤416,解码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
步骤417,解码端根据子块的每个像素位置的加权预测值确定当前块的加权预测值。
示例性的,针对步骤412-步骤417,其实现过程可以参见步骤402-步骤407,不同之处在于,步骤412-步骤417是解码端的处理流程,而不是编码端的处理流程,在此不再赘述。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更加接近原始像素,并带来编码性能的提高。
实施例4:实施例1中,当前块可以包括至少两个子块(如矩形子块),针对至少两个子块的情况,参见图5A所示,为编解码方法的流程图,可以应用于编码端,该方法包括:
步骤501,在确定对当前块启动加权预测时,针对当前块的每个子块,编码端获取该子块的尺寸,该子块的权重预测角度和该子块的权重预测位置。
示例性的,可以确定是否对当前块启动加权预测,确定方式参见步骤401,在此不再赘述。若对当前块启动加权预测,则获取子块的尺寸,权重预测角度和权重预测位置。
示例性的,当前块包括至少两个子块时,编码端和解码端可以约定子块的数量,如子块的数量可以为两个,即将当前块划分为两个子块,将两个子块记为子块1和子块2。子块的数量可以为三个,即将当前块划分为三个子块,将三个子块分别记为子块1,子块2和子块3,子块2可以位于子块1与子块3之间,即,子块1和子块2是相邻的两个子块,子块2和子块3是相邻的两个子块。当然,子块的数量还可以四个或者更多,对此不做限制。
在一种可能的实施方式中,在确定对当前块启动加权预测时,编码端获取当前块的每个子块的尺寸,权重预测角度和权重预测位置。参见图5B所示,可以将当前块划分为子块1和子块2,子块1可以为位于上侧的子块,子块2可以为位于下侧的子块,或者,子块1可以为位于下侧的子块,子块2可以为位于上侧的子块。为了方便描述,图5B以子块1位于下侧,子块2位于上侧为例,即划分方式为水平方式。因此,以下描述中,主要涉及子块1和子块2的尺寸的高。子块1的尺寸的高为H1,子块1的权重预测角度为权重预测角度A1,子块1的权重预测位置为权重预测位置B1。子块2的尺寸的高为H2,子块2的权重预测角度为权重预测角度A2,子块2的权重预测位置为权重预测位置B2。
参见图5C所示,将当前块划分为子块1和子块2,子块1为位于右侧的子块,子块2为位于左侧的子块,或者,子块1为位于左侧的子块,子块2为位于右侧的子块。为方便描述,图5C以子块1位于右侧,子块2位于左侧为例,即划分方式为垂直方式。因此,以下描述中,主要涉及子块1和子块2的尺寸的宽。子块1尺寸的宽为W1,子块1的权重预测角度为权重预测角度C1,子块1的权重预测位置为权重预测位置D1。子块2尺寸的宽为W2,子块2的权重预测角度为权重预测角度C2,子块2的权重预测位置为权重预测位置D2。
在后续实施例中,以图5B的应用场景为例进行说明。在图5B中,子块1尺寸的高H1与子块2尺寸的高H2的和,可以为当前块的高度H。子块1的权重预测角度A1与子块2的权重预测角度A2可以不同,权重预测角度A2可以是在对权重预测角度A1进行偏移后得到的。子块1的权重预测位置B1与子块2的权重预测位置B2可以相同。
示例性的,子块1和子块2的尺寸是由当前块进行子块划分得到的,例如,子块1尺寸的高为H1,则在当前块的高度为H1处,将当前块划分为子块1和子块2,子块1和子块2均为矩形子块,子块1的高度为H1,子块2的高度为H2(即H与H1的差值)。
示例性的,权重预测角度表示子块内部的像素位置所指向的角度方向,参见图5D所示,子块1的权重预测角度A1,表示子块1内部的像素位置所指向的角度方向,子块2的权重预测角度A2,表示子块2内部的像素位置所指向的角度方向。参见图5E所示,为图5D的等价示意图,与图5D相比,图5E指向的是子块外部的某周边位置。例如,权重预测角度A1表示子块1内部的像素位置所指向的角度方向,基于权重预测角度A1指向的角度方向,能够指向子块1外部的某个周边位置。权重预测角度A2表示子块2内部的像素位置所指向的角度方向,基于权重预测角度A2指向的角度方向,能够指向子块2外部的某个周边位置。
权重预测位置(也可以称为距离参数)用于配置子块外部周边位置的参考权重值。例如,可以根据子块1的权重预测角度A1、子块1的尺寸等参数确定子块1外部的周边位置的范围,将周边位置的范围进行N等分,N的取值可以任意设置,如4、6、8等,权重预测位置B1用于表示哪个周边位置作为子块1的权重变换的起始位置,从而配置子块1的周边位置的参考权重值。可以根据子块2的权重预测角度A2、子块2的尺寸等参数确定子块2外部的周边位置的范围,将周边位置的范围进行N等分,N的取值可以任意设置,如4、6、8等,权重预测位置B2用于表示哪个周边位置作为子块2的权重变换的起始位置,从而配置子块2的周边位置的参考权重值。
示例性的,将周边位置的范围进行N等分,在N为8时,则8等分的示意图参见图4D所示,本实施例中,是针对子块的周边位置的范围进行8等分,得到7个权重预测位置。当权重预测位置为0时,表示周边位置a0作为子块的权重变换的起始位置,从而配置子块的周边位置的参考权重值,以此类推。
参见图5F所示,可以将当前块划分为子块1、子块2和子块3,子块1可以为位于上侧的子块,子块2可以为位于中间的子块,子块3可以为位于下侧的子块,或者,子块1可以为位于下侧的子块,子块2可以为位于中间的子块,子块3可以为位于上侧的子块。
为了方便描述,在图5F中,可以以子块1位于下侧,子块2位于中间,子块3位于上侧为例进行说明。子块1尺寸的高为H1,子块1的权重预测角度为权重预测角度A1,子块1的权重预测位置为权重预测位置B1。子块2尺寸的高为H2,子块2的权重预测角度为权重预测角度A2,子块2的权重预测位置为权重预测位置B2。子块3尺寸的高为H3,子块3的权重预测角度为权重预测角度A3,子块3的权重预测位置为权重预测位置B3。
在图5F中,子块1尺寸的高H1、子块2尺寸的高H2与子块3尺寸的高H3之间的和,可以为当前块的高度H。相邻两个子块的权重预测角度可以不同,例如,子块1与子块2是相邻两个子块,子块1的权重预测角度A1与子块2的权重预测角度A2可以不同,权重预测角度A2可以是在对权重预测角度A1进行偏移后得到的。子块2与子块3是相邻两个子块,子块2的权重预测角度A2与子块3的权重预测角度A3可以不同,权重预测角度A3可以是在对权重预测角度A2进行偏移后得到的。子块1的权重预测角度A1与子块3的权重预测角度A3可以不同,也可以不同。子块1的权重预测位置B1与子块2的权重预测位置B2可以相同,子块2的权重预测位置B2与子块3的权重预测位置B3可以相同。
在上述实施例中,示出了将当前块划分为两个子块和三个子块的情况,在实际应用中,还可以将当前块划分为四个或者更多的子块,其实现过程类似,在此不再赘述。
示例性的,在确定对当前块启动加权预测时,针对当前块的每个子块,编码端采用如下方式获取该子块的尺寸,该子块的权重预测角度和该子块的权重预测位置。
方式一、编码端和解码端约定相同的子块划分方式,约定相同的权重预测角度作为子块的权重预测角度,并约定相同的权重预测位置作为子块的权重预测位置。以当前块划分为子块1和子块2为例,编码端和解码端将子块1尺寸的高划分为H1,将子块2尺寸的高划分为H2。编码端和解码端将权重预测角度A1作为子块1的权重预测角度,将权重预测角度A2作为子块2的权重预测角度。编码端和解码端将权重预测位置B1作为子块1的权重预测位置,将权重预测位置B2作为子块2的权重预测位置。
方式二、编码端构建划分方式列表,该划分方式列表可以包括至少一个划分组合,如将当前块的高划分为H1,H2等。编码端构建权重预测角度列表,该权重预测角度列表可以包括至少一个权重预测角度,如权重预测角度A1和权重预测角度A2等。编码端构建权重预测位置列表,该权重预测位置列表可以包括至少一个权重预测位置,如权重预测位置B1和权重预测位置B2等。编码端依次遍历划分方式列表中的每个划分方式,并遍历权重预测角度列表中的每个权重预测角度,并遍历权重预测位置列表中的每个权重预测位置,即遍历每个划分方式,每个权重预测角度以及每个权重预测位置的组合。针对划分方式,权重预测角度和权重预测位置的每个组合,导出子块1的尺寸,权重预测角度和权重预测位置,基于子块1的尺寸,权重预测角度和权重预测位置执行后续步骤,得到子块1的加权预测值。
例如,遍历到划分方式一,导出的子块尺寸的高H1,权重预测角度A1和权重预测位置B1时,基于子块尺寸的高H1,权重预测角度A1和权重预测位置B1执行后续步骤,得到子块1的加权预测值。遍历到划分方式二,导出的子块尺寸的高H1,权重预测角度A1和权重预测位置B2时,基于子块尺寸的高H1,权重预测角度A1和权重预测位置B2执行后续步骤,得到子块1的加权预测值,以此类推。编码端可以基于每个组合(划分方式(可导出子块尺寸),权重预测角度和权重预测位置的组合),得到子块1的加权预测值。
在上述过程中,可以得到子块1的尺寸,权重预测角度和权重预测位置。
示例性的,在得到子块1的尺寸后,可以根据子块1的尺寸确定子块2的尺寸,比如说,可以基于当前块的尺寸与子块1的尺寸确定子块2的尺寸。例如,子块2尺寸的高可以为:当前块的高度与子块1尺寸的高之间的差值,子块2尺寸的宽可以与子块1尺寸的宽一致。
在得到子块1的权重预测角度后,可以根据子块1的权重预测角度确定子块2的权重预测角度,子块2的权重预测角度是子块1的权重预测角度周围的权重预测角度。例如,假设权重预测角度列表依次包括权重预测角度A1-权重预测角度A8,若子块1的权重预测角度为权重预测角度A1,则子块2的权重预测角度可以是权重预测角度A1周围的权重预测角度A2。若子块1的权重预测角度为权重预测角度A4,则子块2的权重预测角度可以是权重预测角度A4周围的权重预测角度A3或者权重预测角度A5。若子块1的权重预测角度为权重预测角度A4,则子块2的权重预测角度可以是权重预测角度A4周围的权重预测角度A2,或权重预测角度A3,或权重预测角度A5,或权重预测角度A6,对此不做限制。
在得到子块1的权重预测位置后,可以根据子块1的权重预测位置确定子块2的权重预测位置,如子块2的权重预测位置与子块1的权重预测位置相同,即两个子块的权重预测位置,对应权重预测位置列表中的同一个权重预测位置。例如,子块1的权重预测位置为权重预测位置B1时,则子块2的权重预测位置也为权重预测位置B1。
示例性的,基于子块1尺寸的高H1,权重预测角度A1和权重预测位置B1,得到子块1的加权预测值时,还可以基于子块1尺寸的高H1,权重预测角度A1和权重预测位置B1,确定子块2的尺寸,权重预测角度和权重预测位置,并根据子块2的尺寸,权重预测角度和权重预测位置,确定子块2的加权预测值。然后,根据子块1的加权预测值和子块2的加权预测值得到当前块的加权预测值后,根据该加权预测值确定当前块的率失真代价值。
基于子块1尺寸的高H1,权重预测角度A1和权重预测位置B2,得到子块1的加权预测值时,还可以基于子块1尺寸的高H1,权重预测角度A1和权重预测位置B2,确定子块2的尺寸,权重预测角度和权重预测位置,并根据子块2的尺寸,权重预测角度和权重预测位置,确定子块2的加权预测值。然后,根据子块1的加权预测值和子块2的加权预测值得到当前块的加权预测值后,根据该加权预测值确定当前块的率失真代价值。
以此类推,编码端可以得到每个组合的率失真代价值,并从所有率失真代价值中选择最小率失真代价值。将最小率失真代价值对应的划分方式导出作为目标划分方式,将最小率失真代价值对应的子块1的权重预测角度作为子块1的目标权重预测角度,将最小率失真代价值对应的子块1的权重预测位置作为子块1的目标权重预测位置,将最小率失真代价值对应的子块2的权重预测角度作为子块2的目标权重预测角度,将最小率失真代价值对应的子块2的权重预测位置作为子块2的目标权重预测位置,最后,将目标划分方式在划分方式列表中的索引值,子块1与子块2的目标权重预测角度在权重预测角度列表中的索引值,子块1与子块2的目标权重预测位置在权重预测位置列表中的索引值编入码流。
当然,上述方式只是示例,对此不做限制,只要能够得到子块1的尺寸,权重预测角度和权重预测位置,并得到子块2的尺寸,权重预测角度和权重预测位置即可。
在上述实施例中,是以两个子块的实现方式为例进行说明,在当前块包括三个子块或者更多的子块时,实现方式与两个子块的实现方式类似,在此不再重复赘述。
步骤502,针对当前块的每个子块,针对该子块的每个像素位置,编码端根据该子块的权重预测角度从该子块外部的周边位置中确定该像素位置指向的周边匹配位置。
示例性的,由于子块的权重预测角度表示子块内部的像素位置所指向的角度方向,因此,针对子块的每个像素位置,基于该子块的权重预测角度确定该像素位置所指向的角度方向,继而根据该角度方向从子块外部的周边位置中确定该像素位置指向的周边匹配位置。
示例性的,子块外部的周边位置可以包括整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置。子块外部周边位置可以包括:子块外部上侧一行的周边位置,或者,子块外部左侧一列的周边位置,或者,子块外部下侧一行的周边位置,或者,子块外部右侧一列的周边位置,或者,子块内部一行的周边位置,或者,子块内部一列的周边位置。
示例性的,所有子块外部的周边位置可以位于同一行;或者,所有子块外部的周边位置可以位于同一列。例如,子块1外部周边位置为子块1上侧一行的周边位置时,子块2外部周边位置也为子块2上侧一行的周边位置,且子块1和子块2外部的周边位置位于同一行,如子块1外部周边位置是子块1的上侧第1行时,子块2外部周边位置也是子块2的上侧第1行,子块1外部周边位置是子块1的上侧第2行时,子块2外部周边位置也是子块2的上侧第2行。又例如,子块1外部周边位置为子块1左侧一列的周边位置时,子块2外部周边位置也为子块2左侧一列的周边位置,且子块1和子块2外部的周边位置位于同一列,如子块1外部周边位置是子块1的左侧第1列时,子块2外部周边位置也是子块2的左侧第1列。
示例性的,步骤502与步骤402类似,不同之处在于,在步骤402中,是基于当前块的权重预测角度确定当前块的像素位置指向的周边匹配位置,而在步骤502中,是基于子块的权重预测角度确定子块的像素位置指向的周边匹配位置,在此不再重复赘述。
步骤503,编码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
步骤504,编码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
步骤505,针对子块的每个像素位置,编码端根据当前块的第一预测模式确定该像素位置的第一预测值,并根据当前块的第二预测模式确定该像素位置的第二预测值。
步骤506,编码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
示例性的,步骤503-步骤506的实现过程与步骤403-步骤406的实现过程类似,不同之处在于,在步骤403-步骤406中,是针对当前块的像素位置进行处理,而在步骤503-步骤506中,是将当前块划分为至少两个子块,针对子块的像素位置进行处理,在此不再赘述。
步骤507,针对当前块的每个子块,编码端根据该子块的所有像素位置的加权预测值确定该子块的加权预测值,并根据所有子块的加权预测值确定当前块的加权预测值。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更加接近原始像素,并带来编码性能的提高。
实施例5:实施例1中,当前块可以包括至少两个子块(如矩形子块),针对至少两个子块的情况,参见图5G所示,为编解码方法的流程图,可以应用于解码端,该方法包括:
步骤511,在确定对当前块启动加权预测时,针对当前块的每个子块,解码端获取该子块的尺寸,该子块的权重预测角度和该子块的权重预测位置。
示例性的,可以确定是否对当前块启动加权预测,确定方式参见步骤411,在此不再赘述。若对当前块启动加权预测,则获取子块的尺寸,权重预测角度和权重预测位置。
在一种可能的实施方式中,在确定对当前块启动加权预测时,解码端可以获取每个子块的尺寸,权重预测角度和权重预测位置。关于尺寸,权重预测角度和权重预测位置的相关解释,可以参见步骤411,在此不再重复赘述。针对当前块的每个子块,解码端采用如下方式获取该子块的尺寸,该子块的权重预测角度和该子块的权重预测位置。
方式一、解码端和编码端约定相同的尺寸作为子块的尺寸,约定相同的权重预测角度作为子块的权重预测角度,并约定相同的权重预测位置作为子块的权重预测位置。
方式二、解码端构建划分方式列表,该划分方式列表与编码端的划分方式列表相同,该划分方式列表可以包括至少一个划分方式。解码端构建权重预测角度列表,该权重预测角度列表与编码端的权重预测角度列表相同,该权重预测角度列表包括可以至少一个权重预测角度。解码端构建权重预测位置列表,该权重预测位置列表与编码端的权重预测位置列表相同,该权重预测位置列表包括可以至少一个权重预测位置。以将当前块划分为子块1和子块2为例进行说,解码端在接收到当前块的编码比特流后,可以从该编码比特流中解析出指示信息,根据该指示信息从划分方式列表中选择一个划分方式导出子块1的尺寸,根据该指示信息从权重预测角度列表中选择一个权重预测角度作为子块1的权重预测角度,并根据该指示信息从权重预测位置列表中选择一个权重预测位置作为子块1的权重预测位置。
示例性的,在得到子块1的尺寸后,解码端可以根据子块1的尺寸确定子块2的尺寸,比如说,可以基于当前块的尺寸与子块1的尺寸确定子块2的尺寸。例如,子块2尺寸的高可以为:当前块的高度与子块1尺寸的高的差值,子块2尺寸的宽可与子块1尺寸的宽一致。
在得到子块1的权重预测角度后,解码端可以根据子块1的权重预测角度确定子块2的权重预测角度,子块2的权重预测角度是子块1的权重预测角度周围的权重预测角度。例如,假设权重预测角度列表依次包括权重预测角度A1-权重预测角度A8,若子块1的权重预测角度为权重预测角度A1,则子块2的权重预测角度可以是权重预测角度A1周围的权重预测角度A2。若子块1的权重预测角度为权重预测角度A4,则子块2的权重预测角度可以是权重预测角度A4周围的权重预测角度A3或者权重预测角度A5。关于是权重预测角度A3还是权重预测角度A5,可以采用如下方式:编码端和解码端可以约定将权重预测角度A4前面的权重预测角度作为子块2的权重预测角度,因此,解码端确定子块2的权重预测角度为权重预测角度A3;或者,编码端和解码端可以约定将权重预测角度A4后面的权重预测角度作为子块2的权重预测角度,因此,解码端确定子块2的权重预测角度为权重预测角度A5;或者,编码端还可以将权重预测角度A3或者权重预测角度A5的索引信息添加到码流中,解码端可以从码流中解析出该索引信息,继而根据该索引信息确定子块2的权重预测角度。
在得到子块1的权重预测位置后,可以根据子块1的权重预测位置确定子块2的权重预测位置,例如,子块2的权重预测位置与子块1的权重预测位置相同,即两个子块的权重预测位置,对应权重预测位置列表中的同一个权重预测位置。
在方式二中,编码端在向解码端发送编码比特流时,编码比特流可以包括一个指示信息1,指示信息1用于指示子块1的尺寸、权重预测角度和权重预测位置,基于指示信息1,解码端可以确定子块1的尺寸、权重预测角度和权重预测位置。编码比特流还可以包括多个指示信息,如指示信息2用于指示子块1的尺寸,指示信息3用于指示子块1的权重预测角度,指示信息4用于指示子块1的权重预测位置。基于指示信息2,指示信息3和指示信息4,解码端可以确定子块1的尺寸、权重预测角度和权重预测位置。
当然,上述方式只是两个示例,还可以通过约定优选配置组合等方式,实现尺寸、权重预测角度和权重预测位置的指示,对此不做限制,只要能够使得解码端获知子块1的尺寸、权重预测角度和权重预测位置即可,具体方式参见步骤411,在此不再赘述。
步骤512,针对当前块的每个子块,针对该子块的每个像素位置,解码端根据该子块的权重预测角度从该子块外部的周边位置中确定该像素位置指向的周边匹配位置。
步骤513,解码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
步骤514,解码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
步骤515,针对子块的每个像素位置,解码端根据当前块的第一预测模式确定该像素位置的第一预测值,并根据当前块的第二预测模式确定该像素位置的第二预测值。
步骤516,解码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
步骤517,针对当前块的每个子块,解码端根据该子块的所有像素位置的加权预测值确定该子块的加权预测值,并根据所有子块的加权预测值确定当前块的加权预测值。
示例性的,针对步骤512-步骤517,其实现过程可以参见步骤502-步骤507,不同之处在于,步骤512-步骤517是解码端的处理流程,而不是编码端的处理流程,在此不再赘述。
由以上技术方案可见,本申请实施例中,提出一种设置权重值的有效方式,能够为当前块的每个像素位置设置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值更加接近原始像素,并带来编码性能的提高。
在上述实施例中,在确定对当前块启动加权预测时,若将当前块划分为第一子块和第二子块,则编码端/解码端可以获取第一子块的第一权重预测角度,并获取第二子块的第二权重预测角度,且第一权重预测角度与第二权重预测角度不同。然后,针对第一子块的第一像素位置,根据第一权重预测角度从第一子块外部的周边位置中确定第一像素位置指向的第一周边匹配位置;根据第一周边匹配位置关联的参考权重值确定第一像素位置的目标权重值,根据第一像素位置的目标权重值确定第一像素位置的关联权重值。针对第二子块的第二像素位置,根据第二权重预测角度从第二子块外部的周边位置中确定第二像素位置指向的第二周边匹配位置;根据第二周边匹配位置关联的参考权重值确定第二像素位置的目标权重值,根据第二像素位置的目标权重值确定第二像素位置的关联权重值。然后,可以根据当前块的第一预测模式确定第一像素位置的第一预测值,根据当前块的第二预测模式确定第一像素位置的第二预测值;根据第一预测值,第一像素位置的目标权重值,第二预测值和第一像素位置的关联权重值,确定第一像素位置的加权预测值。可以根据当前块的第一预测模式确定第二像素位置的第三预测值,根据当前块的第二预测模式确定第二像素位置的第四预测值;根据第三预测值,第二像素位置的目标权重值,第四预测值和第二像素位置的关联权重值,确定第二像素位置的加权预测值。然后,可以根据第一子块的每个第一像素位置的加权预测值和第二子块的每个第二像素位置的加权预测值,确定当前块的加权预测值。
在上述实施例2和实施例3中,当前块包括一个子块,即针对当前块进行处理,可以将这种处理方式记为帧间角度加权预测(Angular Weighted Prediction,AWP)模式。在上述实施例4和实施例5中,当前块包括至少两个子块,即针对当前块的子块进行处理,可以将这种处理方式记为双重帧间角度加权预测(Dual Angular Weighted Prediction,DAWP)模式。
综上所述,可以对AWP模式进行衍生,通过较低代价将当前块划分为两个子块,且两个子块拥有相似的AWP参数,只有权重预测角度存在差异,比如说,可以将两个子块的分割线位置作为参考权重配置位置,且两个子块的权重预测角度不一致。
实施例6:在上述实施例1-实施例5中,涉及权重预测角度,该权重预测角度可以是任意角度,如180度内的任意角度,或者,360度内的任意角度,对此权重预测角度不做限制,如10度,20度,30度等等。在一种可能的实施方式中,权重预测角度可以为水平角度;或者,权重预测角度可以为垂直角度;或者,权重预测角度的斜率的绝对值(权重预测角度的斜率的绝对值也就是权重预测角度的tan值)可以为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次方)等等。示例性的,参见图6A所示,示出了8种权重预测角度,这些权重预测角度的斜率的绝对值为2的n次方。后续实施例中,可以对权重预测角度进行移位操作,因此,权重预测角度的斜率的绝对值为2的n次方时,在对权重预测角度进行移位操作时,可以避免出现除法操作,从而方便的进行移位实现。
示例性的,不同块尺寸支持的权重预测角度的数量可以相同或者不同。
在实施例2和实施例3中,只是涉及一个权重预测角度,在实施例4和实施例5中,当前块包括至少两个子块,基于此,相邻两个子块的权重预测角度不同,例如,针对相邻的第一子块和第二子块,在得到第一子块的权重预测角度后,对第一子块的权重预测角度进行偏移,得到第二子块的权重预测角度,第二子块的权重预测角度是第一子块的权重预测角度周围的权重预测角度。例如,针对图6A的8种权重预测角度,按照从左下到右上的顺序,依次可以为权重预测角度A1-权重预测角度A8,基于此,若第一子块的权重预测角度为权重预测角度A1,则第二子块的权重预测角度可以为权重预测角度A2;若第一子块的权重预测角度为权重预测角度A3,则第二子块的权重预测角度可以为权重预测角度A4,以此类推。
实施例7:在上述实施例1-实施例5中,针对每个像素位置,可以根据该像素位置指向的周边匹配位置关联的参考权重值,确定该像素位置的目标权重值。在实施例2和实施例3中,周边匹配位置是当前块的周边匹配位置,在实施例4和实施例5中,周边匹配位置是当前块的子块的周边匹配位置。为了方便描述,后续以子块为例进行说明,在实施例2和实施例3中,子块就是指当前块,在实施例4和实施例5中,子块就是指子块1或者子块2。
为了获得周边匹配位置关联的参考权重值,可以采用如下方式:根据子块的周边匹配位置的坐标值与该子块的权重变换起始位置的坐标值,确定该周边匹配位置关联的参考权重值。
示例性的,若周边匹配位置是子块外部上侧一行或下侧一行的周边位置,则周边匹配位置的坐标值是周边匹配位置的横坐标值,权重变换起始位置的坐标值是权重变换起始位置的横坐标值。或者,若周边匹配位置是子块外部左侧一列或右侧一列的周边位置,则周边匹配位置的坐标值是周边匹配位置的纵坐标值,权重变换起始位置的坐标值是权重变换起始位置的纵坐标值。
示例性的,可以将子块左上角的像素位置(如左上角的第一个像素位置)作为坐标原点,子块的周边匹配位置的坐标值(如横坐标值或纵坐标值)和子块的权重变换起始位置坐标值(如横坐标值或纵坐标值),均是相对于于该坐标原点的坐标值。当然,也可以将子块的其它像素位置作为坐标原点,实现方式与左上角的像素位置作为坐标原点的实现方式类似。
在一种可能的实施方式中,在根据周边匹配位置的坐标值与子块的权重变换起始位置的坐标值,确定周边匹配位置关联的参考权重值时,可以计算周边匹配位置的坐标值与子块的权重变换起始位置的坐标值的差值。若该差值小于第一数值,则确定周边匹配位置关联的参考权重值为第一数值;若该差值大于第二数值,则确定周边匹配位置关联的参考权重值为第二数值;若该差值不小于第一数值,且该差值不大于第二数值,则确定周边匹配位置关联的参考权重值为该差值。在另一种可能的实施方式中,在根据周边匹配位置的坐标值与子块的权重变换起始位置的坐标值,确定周边匹配位置关联的参考权重值时,还可以根据周边匹配位置的坐标值与子块的权重变换起始位置的坐标值的大小关系,直接确定周边匹配位置关联的参考权重值。
例如,若周边匹配位置的坐标值小于子块的权重变换起始位置的坐标值,则可以确定周边匹配位置关联的参考权重值为第一数值;若周边匹配位置的坐标值不小于子块的权重变换起始位置的坐标值,则可以确定周边匹配位置关联的参考权重值为第二数值。或者,
又例如,若周边匹配位置的坐标值小于子块的权重变换起始位置的坐标值,则可以确定周边匹配位置关联的参考权重值为第二数值;若周边匹配位置的坐标值不小于子块的权重变换起始位置的坐标值,则可以确定周边匹配位置关联的参考权重值为第一数值。
示例性的,第一数值和第二数值均可以根据经验配置,且第一数值小于第二数值,对此第一数值和第二数值均不做限制。例如,第一数值是预先约定的参考权重值的最小值,如0,第二数值是预先约定的参考权重值的最大值,如8,当然,0和8也只是示例。
示例性的,参见图4D所示,在将所有的周边位置8等分后,可以得到7个权重预测位置,当权重预测位置为0时,表示周边位置a0,即,权重变换起始位置的坐标值为周边位置a0的坐标值。当权重预测位置为1时,表示周边位置a1,即,权重变换起始位置的坐标值为周边位置a1的坐标值,以此类推,关于权重变换起始位置的坐标值的确定方式,在此不再赘述。
实施例8:在上述实施例1-实施例5中,针对每个像素位置,可以根据该像素位置指向的周边匹配位置关联的参考权重值,确定该像素位置的目标权重值。后续以子块的周边匹配位置为例,在实施例2和实施例3中,子块是指当前块,在实施例4和实施例5中,子块是指子块1或子块2。为了获得周边匹配位置关联的参考权重值,可以采用如下方式:确定子块的参考权重值列表,该参考权重值列表可以包括多个参考权重值,该参考权重值列表中的多个参考权重值是预先配置或者根据权重配置参数配置的。根据目标索引从该参考权重值列表中选择有效数量个参考权重值,并根据有效数量个参考权重值,设置子块外部的周边位置的参考权重值。示例性的,该有效数量可以是基于子块的尺寸和子块的权重预测角度确定;该目标索引可以是基于子块的尺寸,子块的权重预测角度和子块的权重预测位置确定。
综上所述,由于已经为子块外部的周边位置设置参考权重值,即每个周边位置均具有参考权重值,因此,在从子块外部的周边位置中确定出像素位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考权重值,也就是该像素位置的目标权重值。
以下结合具体实现步骤,对上述设置周边位置的参考权重值的过程进行说明。
步骤S1、确定子块的参考权重值列表。示例性的,针对当前块的每个子块,这些子块的参考权重值列表可以相同,这些子块的参考权重值列表也可以不同。
在一种可能的实施方式中,可以将序列级参考权重值列表,确定为子块的参考权重值列表。比如说,编码端和解码端均可以配置序列级参考权重值列表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,确定为子块的参考权重值列表。
综上所述,可以确定子块的参考权重值列表,该参考权重值列表可以包括多个参考权重值,该参考权重值列表中的多个参考权重值可以是预先配置或者根据权重配置参数配置。
关于子块的参考权重值列表,该参考权重值列表中的参考权重值数量可以为设定的固定值,该固定值可以根据经验任意设置,对此不做限制。或者,该参考权重值列表中的参考权重值数量可以与当前块所在当前帧的尺寸(如宽度或高度)相关,如参考权重值数量可以比当前帧的宽度大,或者与当前帧的宽度相同;参考权重值数量可以比当前帧的高度大,或者与当前帧的高度相同,对此不做限制,参考权重值数量可以根据实际需要进行选择。
示例性的,针对参考权重值列表中的多个参考权重值,多个参考权重值可以是非一致的参考权重值,比如说,参考权重值列表中的多个参考权重值,可以不完全相同。
在一种可能的实施方式中,针对参考权重值列表中的多个参考权重值,可以单调递增,或,单调递减。或者,针对参考权重值列表中的多个参考权重值,可以先单调递增,再单调递减;或,可以先单调递减,再单调递增。或者,针对参考权重值列表中的多个参考权重值,可以先包括多个第一数值,再包括多个第二数值,或,先包括多个第二数值,再包括多个第一数值。以下结合几个具体情况,对上述参考权重值列表的内容进行说明。
情况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、基于子块的尺寸和子块的权重预测角度确定有效数量。
示例性的,该有效数量是指子块外部存在有效数量个周边位置,比如说,子块内部的像素位置只会指向所述有效数量个周边位置,即,只需要为所述有效数量个周边位置设置参考权重值,就可以得到子块内部的每个像素位置的目标权重值。
示例性的,子块外部的周边位置的数量是基于子块的尺寸和/或子块的权重预测角度确定,本实施例中,将子块外部的周边位置的数量记为有效数量ValidLenth。
例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1,或者,ValidLenth=(M+(N>>X))<<1。在上述公式中,ValidLenth为有效数量,M为子块的宽,N为子块的高,X为子块的权重预测角度的斜率的绝对值的log2对数值,如0或1。
步骤S3、基于子块的尺寸,子块的权重预测角度和子块的权重预测位置确定目标索引。
示例性的,该目标索引可以是指参考权重值列表中的第几个参考权重值,比如说,当目标索引为259时,可以表示参考权重值列表中的第259个参考权重值。
例如,可以通过如下公式确定目标索引:FirstIndex=(HalfLenth-4)-((ValidLength>>1)-a+Y*((ValidLength-1)>>3))。或者,FirstIndex=(HalfLenth-4)-((ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X))。或者,FirstIndex=(HalfLenth-4)–((ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X))。或者,FirstIndex=(HalfLenth-4)–((ValidLength>>1)-d+Y*((ValidLength-1)>>3))。在上述公式中,FirstIndex为目标索引,ValidLength是有效数量,基于子块的尺寸和子块的权重预测角度确定,Y为子块的权重预测位置,HalfLenth–4的取值为权重变换的起始位置,M为子块的宽,N为子块的高,X为子块的权重预测角度的斜率的绝对值的log2对数值,a,b,c,d为预设的常数值。
在上述过程中,ValidLenth与子块的权重预测角度和子块的尺寸相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将子块的权重预测角度设置为固定参数值,ValidLenth只与子块的尺寸相关。在其它实施例中,ValidLenth也有类似的确定方式。
在上述过程中,FirstIndex与子块的权重预测角度、子块的尺寸、子块的权重预测位置相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将子块的权重预测角度设置为固定参数值,FirstIndex只与子块的尺寸和子块的权重预测位置相关。或者,可以将子块的权重预测位置设置为固定参数值,FirstIndex只与子块的尺寸和子块的权重预测角度相关。或者,可以将子块的权重预测角度和子块的权重预测位置均设置为固定参数值,这两个固定参数值可以相同或者不同,FirstIndex只与子块的尺寸相关。在其它实施例中,FirstIndex(或FirstPos)也有类似的确定方式,本文不再重复赘述。
步骤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个周边位置的参考权重值。或者,假设从参考权重值列表中选择r个参考权重值,则不需要从参考权重值列表中截取所述r个参考权重值,而是通过对参考权重值列表中的参考权重值进行移动,以使所述r个参考权重值作为子块外部的r个周边位置的参考权重值。
实施例9:在上述实施例1-实施例5中,针对每个像素位置,可以根据该像素位置指向的周边匹配位置关联的参考权重值,确定该像素位置的目标权重值。后续以子块的周边匹配位置为例,在实施例2和实施例3中,子块是指当前块,在实施例4和实施例5中,子块是指子块1或子块2。为了获得周边匹配位置关联的参考权重值,可以采用如下方式:直接为子块外部的每个周边位置设置参考权重值,例如,获取有效数量个参考权重值(不是从参考权重值列表中选择),并根据有效数量个参考权重值设置子块外部的周边位置的参考权重值。
示例性的,针对为子块外部的周边位置配置的参考权重值,可以是预先配置或根据权重配置参数配置的,该权重配置参数可以包括权重变换率和权重变换的起始位置。针对每个子块的权重变换的起始位置,该权重变换的起始位置由如下参数的至少一个确定:子块的权重预测角度,子块的权重预测位置,子块的尺寸。在当前块包括至少两个子块时,至少两个子块的权重预测位置均相同。在当前块包括至少两个子块时,每个子块外部的周边位置的数量(即有效数量)是基于子块的尺寸确定。在当前块包括一个子块时,外部的周边位置的数量(即有效数量)是基于子块的尺寸和子块的权重预测角度确定。
示例性的,在当前块包括至少两个子块时,第一子块的权重变换的起始位置,可以由如下参数的至少一个确定:第一子块的权重预测角度,第一子块的权重预测位置,第一子块的尺寸。第二子块的权重变换的起始位置,可以基于第一子块的权重变换的起始位置确定,或者,基于第一子块的权重变换的起始位置以及第一子块的权重预测角度确定,或者,基于第一子块的权重变换的起始位置以及第二子块的权重预测角度确定。针对第一子块和第二子块之前的其它子块,其权重变换的起始位置的确定方式参见第二子块,在此不再赘述。
综上所述,由于已经为子块外部的周边位置设置参考权重值,即每个周边位置均具有参考权重值,因此,在从子块外部的周边位置中确定出像素位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考权重值,也就是该像素位置的目标权重值。
以下结合具体实现步骤,对上述设置周边位置的参考权重值的过程进行说明。
步骤P1、获取有效数量个参考权重值。
示例性的,子块外部的周边位置的数量为有效数量,步骤P1中,需要获取有效数量个参考权重值。例如,采用如下方式确定有效数量:ValidLenth=(N+(M>>X))<<1,N和M分别是子块的高和宽,X为子块的权重预测角度的斜率的绝对值的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单调递增。
或者,第一邻近区域的参考权重值可以均为第一参考权重值,第二邻近区域的参考权重值可以单调递减。例如,第一邻近区域的参考权重值可以均为8,目标区域包括一个参考权重值,该参考权重值为7,第二邻近区域的参考权重值从6-0单调递减。
或者,第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,第二参考权重值与第三参考权重值不同。例如,第一邻近区域的参考权重值均为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个周边位置的参考权重值,以此类推。
实施例10:在上述实施例1-实施例3、实施例6-实施例9中,当前块可以包括一个子块,即子块是当前块本身,针对一个子块的情况,记M和N是当前块(即当前预测单元)的宽度和高度,由于当前块只包括一个子块,因此,也可以将M和N理解为子块的宽度和高度,在此情况下,角度加权预测模式(AWP)的权重阵列导出方式,可以包括:
步骤a1,根据AwpIdx获取stepIdx,angleIdx以及subAngleIdx等参数。
AwpIdx表示权重预测位置和权重预测角度的索引值,假设存在7种权重预测位置,8种权重预测角度,则AwpIdx的取值范围是0-55。若权重预测位置为-3至3(表示第4个权重预测位置是中心,第4个权重预测位置为0),权重预测角度的索引为0-7,则AwpIdx的56个索引值对应的权重预测位置和权重预测角度,可以参见表2所示。
表2
AwpIdx 权重预测位置 权重预测角度
0 -3 0
1 -3 1
7 -3 7
8 -2 0
9 -2 1
55 3 7
stepIdx表示权重预测位置,权重预测位置的范围是-3至3。例如,针对第1个权重预测位置,权重预测位置为-3,针对第2个权重预测位置,权重预测位置为-2,以此类推,针对第7个权重预测位置,权重预测位置为3。
angleIdx表示权重预测角度的斜率的绝对值的log2对数值(如0,或1,或较大常数),subAngleIdx表示权重预测角度所在的角度分区。参见图6B所示,示出8种权重预测角度,权重预测角度0的angleIdx为权重预测角度0的斜率的绝对值的log2对数值,权重预测角度1的angleIdx为权重预测角度1的斜率的绝对值的log2对数值,以此类推,权重预测角度7的angleIdx为权重预测角度7的斜率的绝对值的log2对数值。权重预测角度0和权重预测角度1位于角度分区0,权重预测角度2和权重预测角度3位于角度分区1,权重预测角度4和权重预测角度5位于角度分区2,权重预测角度6和权重预测角度7位于角度分区3。
示例性的,可以采用如下公式确定stepIdx:stepIdx=(AwpIdx>>3)–3。
示例性的,可以根据如下公式确定modAngNum(角度编号):modAngNum=AwpIdx%8;基于modAngNum,可以采用如下方式确定angleIdx:若modAngNum等于2,则angleIdx=7;若modAngNum等于6,则angleIdx=8;否则,angleIdx=modAngNum%2。
示例性的,可以采用如下公式确定subAngleIdx:subAngleIdx=modAngNum>>1。
综上所述,编码端在确定出当前块的权重预测角度和当前块的权重预测位置后,可以基于该权重预测角度和该权重预测位置确定AwpIdx的取值,参见表2所示。编码端在向解码端发送编码比特流时,该编码比特流可以携带AwpIdx的取值,基于此,解码端可以得到AwpIdx的取值,并根据AwpIdx获取stepIdx,angleIdx以及subAngleIdx。
示例性的,angleIdx以及subAngleIdx能够唯一确定一个权重预测角度,参见表3所示,当然,也可以采用其它方式确定权重预测角度,例如,更改分区编号等。
表3
Figure GDA0003896102870000361
/>
Figure GDA0003896102870000371
步骤a2,根据stepIdx,angleIdx以及subAngleIdx配置参考权重列表ReferenceWeight[x],配置参考权重列表ReferenceWeight[x]也就是为当前块外部的周边位置设置参考权重值。
情况一、若subAngleIdx为0,即权重预测角度位于角度分区0,比如说,权重预测角度为权重预测角度0或权重预测角度1,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_H>>1)-6+DeltaPos_H。然后,可以采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为1为例进行说明,也就是说,上述公式可以等价为ReferenceWeights[x]=Clip3(最小值,最大值,a*(x-FirstPos))。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_H-1,a表示权重变换率。
在上述公式中,ValidLength_H表示当前块外部的周边位置的数量(即有效数量,也可以称为有效长度),在subAngleIdx为0时,权重预测角度指向的当前块外部的周边位置,可以是左侧一列的周边位置,因此,将有效数量记为ValidLength_H。示例性的,可以采用如下公式确定有效数量ValidLength_H:ValidLength_H=(N+(M>>angleIdx))<<1。此处左移一位,是因为公式采用1/2-pel精度,若为1-pel精度,则ValidLength_H=(N+(M>>angleIdx));若为1/4-pel精度,则ValidLength_H=(N+(M>>angleIdx))<<2;若为2-pel精度,则ValidLength_H=(N+(M>>angleIdx))>>1,其他像素精度以此类推,不在赘述。之后的公式中,涉及的部分>>1操作,均可能因为像素精度的不同而发生改变。
在上述公式中,DeltaPos_H表示位置变化量参数(即一个中间参数),在subAngleIdx为0时,权重预测角度指向的当前块外部的周边位置,可以是左侧一列的周边位置,因此,将位置变化量参数记为DeltaPos_H。示例性的,可以采用如下公式确定DeltaPos_H:DeltaPos_H=stepIdx*((ValidLength_H>>3)-1)。
情况二、若subAngleIdx为1,即权重预测角度位于角度分区1,比如说,权重预测角度为权重预测角度2或权重预测角度3,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_H>>1)-4+DeltaPos_H–((M<<1)>>angleIdx)。然后,采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为1为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_H-1。
在上述公式中,ValidLength_H和DeltaPos_H可以参见情况一,在此不再赘述。
情况三、若subAngleIdx为2,即权重预测角度位于角度分区2,比如说,权重预测角度为权重预测角度4或权重预测角度5,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_W>>1)-4+DeltaPos_W–((N<<1)>>angleIdx)。然后,可以采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为1为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_W-1。
在上述公式中,ValidLength_W表示当前块外部的周边位置的数量(即有效数量,也可以称为有效长度),在subAngleIdx为2时,权重预测角度指向的当前块外部的周边位置,可以是上侧一行的周边位置,因此,将有效数量记为ValidLength_W。示例性的,可以采用如下公式确定有效数量ValidLength_W:ValidLength_W=(M+(N>>angleIdx))<<1。
在上述公式中,DeltaPos_W表示位置变化量参数(即一个中间参数),在subAngleIdx为2时,权重预测角度指向的当前块外部的周边位置,可以是上侧一行的周边位置,因此,将位置变化量参数记为DeltaPos_W。示例性的,可以采用如下公式确定DeltaPos_W:DeltaPos_W=stepIdx*((ValidLength_W>>3)-1)。
情况四、若subAngleIdx为3,即权重预测角度位于角度分区3,比如说,权重预测角度为权重预测角度6或权重预测角度7,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_W>>1)-6+DeltaPos_W。然后,可以采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,x-FirstPos),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为1为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_W-1。
在上述公式中,ValidLength_W和DeltaPos_W可以参见情况二,在此不再赘述。
综上所述,可以根据subAngleIdx确定应该采用哪种情况进行处理,例如,在情况一和情况二中,可以根据angleIdx和stepIdx确定ValidLength_H和DeltaPos_H,并可以根据ValidLength_H和DeltaPos_H确定FirstPos,继而根据FirstPos设置参考权重值。在情况三和情况四中,可以根据angleIdx和stepIdx确定ValidLength_W和DeltaPos_W,并可以根据ValidLength_W和DeltaPos_W确定FirstPos,继而根据FirstPos设置参考权重值。
上述各情况中的公式的区别在于,将当前块的左上角作为坐标原点时,参考权重列表ReferenceWeights[x]的起始位置发生了变化。例如,参见图6C所示,示出了角度分区2和角度分区3的示例,在1/2-pel精度时,参考权重列表ReferenceWeights[x]的起始位置为(高<<1)>>angleIdx,即公式中的偏移“–((N<<1)>>angleIdx)”。角度分区0和角度分区1的实现类似,只是公式中的偏移为“–((M<<1)>>angleIdx)”,即高度改为宽度即可。
步骤a3,根据angleIdx和参考权重列表ReferenceWeight[x]获取像素位置的亮度权重值。
情况一、若subAngleIdx为0,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(y<<1)+((x<<1)>>angleIdx)],(y<<1)+((x<<1)>>angleIdx)表示像素位置(x,y)指向的周边位置,ReferenceWeights[(y<<1)+((x<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1,y的取值范围是0~N-1。
情况二、若subAngleIdx为1,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(y<<1)-((x<<1)>>angleIdx)],(y<<1)-((x<<1)>>angleIdx)表示像素位置(x,y)指向的周边位置,ReferenceWeights[(y<<1)-((x<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
情况三、若subAngleIdx为2,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(x<<1)-((y<<1)>>angleIdx)],(x<<1)-((y<<1)>>angleIdx)表示像素位置(x,y)指向的周边位置,ReferenceWeights[(x<<1)-((y<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
情况四、若subAngleIdx为3,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(x<<1)+((y<<1)>>angleIdx)],(x<<1)+((y<<1)>>angleIdx)表示像素位置(x,y)指向的周边位置,ReferenceWeights[(x<<1)+((y<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
在上述步骤a2和步骤a3,可联合为一个步骤,即将步骤a2(根据stepIdx,angleIdx以及subAngleIdx配置参考权重列表ReferenceWeight[x],配置参考权重列表ReferenceWeight[x]也就是为当前块外部的周边位置设置参考权重值。)以及步骤a2(根据angleIdx和参考权重列表ReferenceWeight[x]获取像素位置的亮度权重值)联合为:根据stepIdx,angleIdx以及subAngleIdx获取像素位置的亮度权重值,即根据子块的周边匹配位置的坐标值与子块的权重变换起始位置的坐标值确定。
以情况一为例:
若subAngleIdx为0,即权重预测角度位于角度分区0,比如说,权重预测角度为权重预测角度0或权重预测角度1,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_H>>1)-6+DeltaPos_H。然后,可以采用如下公式AwpWeightArrayY[x][y]=Clip3(0,8,(y<<1)+((x<<1)>>angleIdx)-FirstPos)确定像素位置(x,y)的亮度权重值:(y<<1)+((x<<1)>>angleIdx)表示像素位置(x,y)指向的周边匹配位置。
其他情况类似。
步骤a4,根据像素位置的亮度权重值获取该像素位置的色度权重值,而该像素位置的亮度权重值和该像素位置的色度权重值,就可以组成该像素位置的目标权重值。
例如,若色度分辨率的格式为4:2:0,则采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=AwpWeightArrayY[x<<1][y<<1]。又例如,若色度分辨率的格式为4:4:4,则采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=AwpWeightArrayY[x][y]。其中,x的取值范围是0~M/2-1;y的取值范围是0~N/2-1。
步骤a4的另一种实现方式为:根据angleIdx和参考权重列表ReferenceWeight[x]获取像素位置的色度权重值,而不需要根据亮度权重值获取色度权重值。例如,若色度分辨率的格式为4:2:0,则根据angleIdx和参考权重列表ReferenceWeight[x]获取像素位置的色度权重值。
例如,若subAngleIdx为0,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(y<<2)+((x<<2)>>angleIdx)]。
例如,若subAngleIdx为1,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(y<<2)-((x<<2)>>angleIdx)]。
例如,若subAngleIdx为2,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(x<<2)-((y<<2)>>angleIdx)]。
例如,若subAngleIdx为3,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(x<<2)+((y<<2)>>angleIdx)]。
在上述各公式中,x的取值范围是0~M-1,y的取值范围是0~N-1。
在步骤a3和步骤a4中,各情况中的公式的区别在于,参见图6D所示,示出了角度分区2和角度分区3的示例。将当前块的左上角作为坐标原点时,(x,y)的匹配位置在角度分区2的计算公式可以为:x–y>>angleIdx,(x,y)的匹配位置在角度分区3的计算公式可以为:x+y>>angleIdx。在1/2-pel精度时,(x,y)的匹配位置在角度分区2的计算公式可以为:(x<<1)–(y<<1)>>angleIdx,(x,y)的匹配位置在角度分区3的计算公式可以为:(x<<1)+(y<<1)>>angleIdx。角度分区0和角度分区1的实现类似,只是交换(x,y)的位置即可。
实施例11:在上述实施例1、实施例2-实施例9中,当前块可以包括至少两个子块,针对至少两个子块的情况,以下结合几个具体应用场景对双重帧间角度加权预测(DAWP)的过程进行说明。记子块1的尺寸为M1*N1,M1为宽,N1为高,X1为子块1的权重预测角度的斜率的绝对值的log2对数值(如0,或1,或较大常数),记子块2的尺寸为M2*N2,M2为宽,N2为高,X2为子块2的权重预测角度的斜率的绝对值的log2对数值,子块1的权重预测角度与子块2的权重预测角度不同。Y为权重预测位置,也称为参考权重配置索引,权重预测位置Y的取值范围是(-3~3),子块1的权重预测位置与子块2的权重预测位置相同,a,b,c,d,e为预设的常数值。
应用场景1:在本应用场景中,可以采用如下方式确定周边位置的参考权重值:
步骤b1、从子块外部的周边位置中确定权重变换的起始位置的区间(后续记为ValidGap),即,权重变换的起始位置需要位于该ValidGap,是该ValidGap中的周边位置。
例如,针对子块1外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=M1<<1;若设置为整像素位置,则ValidGap=M1。针对子块2外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=M2<<1;若设置为整像素位置,则ValidGap=M2。
示例性的,参见图6E所示,为DAWP模式的两个子块的权重变换的起始位置的示意图,为了保证子块1与子块2的“划分结果”交点能够位于子块的分割线上,则对子块1的ValidGap进行限制,并对子块2的ValidGap进行限制。例如,限制子块1的ValidGap为子块1的宽,并限制子块2的ValidGap为子块2的宽。
步骤b2、根据如下公式计算子块1的权重变换的起始位置FirstPos1:
FirstPos1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)-((N1<<1)>>X1)。
步骤b3、根据如下公式计算子块2的权重变换的起始位置FirstPos2:
FirstPos2=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)-((N1<<1)>>X2)。
综上所述,FirstPos1与子块1的权重预测角度(用于确定X1的取值),子块1的权重预测位置(用于确定Y的取值),子块1的尺寸(用于确定ValidGap的取值)等参数有关。FirstPos2与子块2的权重预测角度(用于确定X2的取值),子块2的权重预测位置,子块2的尺寸等参数有关。
示例性的,可以根据步骤b2的公式对步骤b3的公式进行变形,也就是说,可以根据FirstPos1、((N1<<1)>>X1)、以及((N1<<1)>>X2)等,确定FirstPos2的取值。
关于FirstPos1和FirstPos2,可以通过对ValidGap的中心点(ValidGap>>1)进行Y相关的偏移得到,例如,可以将ValidGap进行等分,本例中Y共有7类取值,可以将ValidGap进行八等分得到,因此,上述公式中出现(ValidGap>>3)。((N1<<1)>>X1)以及((N1<<1)>>X2),是当前块上侧的错位△1以及△2,参见图6F所示,为权重变换的起始位置的示意图。
步骤b4、逐像素导出参考权重值SampleWeight[x][y],即,为子块外部的每个周边位置设置参考权重值。例如,可以采用如下公式为子块1外部的每个周边位置设置参考权重值:SampleWeight[x1][y1]=Clip3(权重最小值,权重最大值,权重变化率*((-(x1<<1)+((y1<<1)>>X1)-FirstPos1),x1,y1位于子块1内。以及,可以采用如下公式为子块2外部的每个周边位置设置参考权重值:SampleWeight[x2][y2]=Clip3(权重最小值,权重最大值,权重变化率*((-(x2<<1)+((y2<<1)>>X2)–FirstPos2),x2,y2位于子块2内。
应用场景2:在本应用场景中,可以采用如下方式确定周边位置的参考权重值:
步骤c1、从子块外部的周边位置中确定权重变换的起始位置的区间ValidGap。
例如,针对子块1外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=N1<<1;若设置为整像素位置,则ValidGap=N1。针对子块2外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=N2<<1;若设置为整像素位置,则ValidGap=N2。
示例性的,参见图6G所示,为DAWP模式的两个子块的权重变换的起始位置的示意图,为了保证子块1与子块2的“划分结果”交点能够位于子块的分割线上,则对子块1的ValidGap进行限制,并对子块2的ValidGap进行限制。例如,限制子块1的ValidGap为子块1的高,并限制子块2的ValidGap为子块2的高。
步骤c2、根据如下公式计算子块1的权重变换的起始位置FirstPos1:
FirstPos1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)-((M1<<1)>>X1)。
步骤c3、根据如下公式计算子块2的权重变换的起始位置FirstPos2:
FirstPos2=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)-((M1<<1)>>X2)。
关于FirstPos1和FirstPos2,可以通过对ValidGap的中心点(ValidGap>>1)进行Y相关的偏移得到,例如,可以将ValidGap进行等分,本例中Y共有7类取值,可以将ValidGap进行八等分得到,因此,上述公式中出现(ValidGap>>3)。((M1<<1)>>X1)以及((M1<<1)>>X2),是当前块左侧的错位△1以及△2,参见图6H所示,为权重变换的起始位置的示意图。
步骤c4、逐像素导出参考权重值SampleWeight[x][y],即,为子块外部的每个周边位置设置参考权重值。例如,可以采用如下公式为子块1外部的每个周边位置设置参考权重值:SampleWeight[x1][y1]=Clip3(权重最小值,权重最大值,权重变化率*((-(y1<<1)-((x1<<1)>>X1)-FirstPos1),x1,y1位于子块1内。以及,可以采用如下公式为子块2外部的每个周边位置设置参考权重值:SampleWeight[x2][y2]=Clip3(权重最小值,权重最大值,权重变化率*((-(y2<<1)-((x2<<1)>>X2)–FirstPos2),x2,y2位于子块2内。
应用场景3:在本应用场景中,可以采用如下方式确定周边位置的参考权重值:
步骤d1、从子块外部的周边位置中确定权重变换的起始位置的区间ValidGap。
例如,针对子块1外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=N1<<1;若设置为整像素位置,则ValidGap=N1。针对子块2外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=N2<<1;若设置为整像素位置,则ValidGap=N2。
示例性的,参见图6I所示,为DAWP模式的两个子块的权重变换的起始位置的示意图,为了保证子块1与子块2的“划分结果”交点能够位于子块的分割线上,则对子块1的ValidGap进行限制,并对子块2的ValidGap进行限制。例如,限制子块1的ValidGap为子块1的高,并限制子块2的ValidGap为子块1的高。
步骤d2、根据如下公式计算子块1的权重变换的起始位置FirstPos1:
FirstPos1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+((M1<<1)>>X1)。
步骤d3、根据如下公式计算子块2的权重变换的起始位置FirstPos2:
FirstPos2=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+((M1<<1)>>X2)。
关于FirstPos1和FirstPos2,可以通过对ValidGap的中心点(ValidGap>>1)进行Y相关的偏移得到,例如,可以将ValidGap进行等分,本例中Y共有7类取值,可以将ValidGap进行八等分得到,因此,上述公式中出现ValidGap>>3)。((M1<<1)>>X1)以及((M1<<1)>>X2),是当前块左侧的错位△1以及△2,参见图6J所示,为权重变换的起始位置的示意图。
步骤d4、逐像素导出参考权重值SampleWeight[x][y],即,为子块外部的每个周边位置设置参考权重值。例如,可以采用如下公式为子块1外部的每个周边位置设置参考权重值:SampleWeight[x1][y1]=Clip3(权重最小值,权重最大值,权重变化率*((-(y1<<1)+((x1<<1)>>X1)-FirstPos1),x1,y1位于子块1内。以及,可以采用如下公式为子块2外部的每个周边位置设置参考权重值:SampleWeight[x2][y2]=Clip3(权重最小值,权重最大值,权重变化率*((-(y2<<1)+((x2<<1)>>X2)–FirstPos2),x2,y2位于子块2内。
应用场景4:在本应用场景中,可以采用如下方式确定周边位置的参考权重值:
步骤e1、从子块外部的周边位置中确定权重变换的起始位置的区间ValidGap。
例如,针对子块1外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=M1<<1;若设置为整像素位置,则ValidGap=M1。针对子块2外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=M2<<1;若设置为整像素位置,则ValidGap=M2。
示例性的,参见图6K所示,为DAWP模式的两个子块的权重变换的起始位置的示意图,为了保证子块1与子块2的“划分结果”交点能够位于子块的分割线上,则对子块1的ValidGap进行限制,并对子块2的ValidGap进行限制。例如,限制子块1的ValidGap为子块1的宽,并限制子块2的ValidGap为子块2的宽。
步骤e2、根据如下公式计算子块1的权重变换的起始位置FirstPos1:
FirstPos1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+((N1<<1)>>X1)。
步骤e3、根据如下公式计算子块2的权重变换的起始位置FirstPos2:
FirstPos2=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+((N1<<1)>>X2)。
关于FirstPos1和FirstPos2,可以通过对ValidGap的中心点(ValidGap>>1)进行Y相关的偏移得到,例如,可以将ValidGap进行等分,本例中Y共有7类取值,可以将ValidGap进行八等分得到,因此,上述公式中出现(ValidGap>>3)。((N1<<1)>>X1)以及((N1<<1)>>X2),是当前块上侧的错位△1以及△2,参见图6L所示,为权重变换的起始位置的示意图。
步骤e4、逐像素导出参考权重值SampleWeight[x][y],即,为子块外部的每个周边位置设置参考权重值。例如,可以采用如下公式为子块1外部的每个周边位置设置参考权重值:SampleWeight[x1][y1]=Clip3(权重最小值,权重最大值,权重变化率*((-(x1<<1)-((y1<<1)>>X1)-FirstPos1),x1,y1位于子块1内。以及,可以采用如下公式为子块2外部的每个周边位置设置参考权重值:SampleWeight[x2][y2]=Clip3(权重最小值,权重最大值,权重变化率*((-(x2<<1)-((y2<<1)>>X2)–FirstPos2),x2,y2位于子块2内。
实施例12:在上述实施例1、实施例2-实施例9中,当前块可以包括至少两个子块,针对多个子块(如3个子块或者更多子块)的情况,以下结合具体场景进行说明,本场景中,以三个子块为例进行说明。记子块1的尺寸为M1*N1,M1为宽,N1为高,X1为子块1的权重预测角度的斜率的绝对值的log2对数值,记子块2的尺寸为M2*N2,M2为宽,N2为高,X2为子块2的权重预测角度的斜率的绝对值的log2对数值,记子块3的尺寸为M3*N3,M3为宽,N3为高,X3为子块3的权重预测角度的斜率的绝对值的log2对数值。子块1的权重预测角度与子块2的权重预测角度不同,子块2的权重预测角度与子块3的权重预测角度不同,子块1的权重预测角度与子块3的权重预测角度相同或不同。Y为权重预测位置,也称为参考权重配置索引,权重预测位置Y的取值范围是(-3~3),子块1的权重预测位置与子块2的权重预测位置相同,子块1的权重预测位置与子块3的权重预测位置相同,a,e为预设的常数值。本应用场景中,采用如下方式确定周边位置的参考权重值:
步骤f1、从子块外部的周边位置中确定权重变换的起始位置的区间(后续记为ValidGap),即,权重变换的起始位置需要位于该ValidGap,是该ValidGap中的周边位置。
例如,针对子块1外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=M1<<1;若设置为整像素位置,则ValidGap=M1。针对子块2外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=M2<<1;若设置为整像素位置,则ValidGap=M2。针对子块3外部的周边位置的ValidGap,若设置为1/2亚像素位置,则ValidGap=M3<<1;若设置为整像素位置,则ValidGap=M3。示例性的,参见图6M所示,为DAWP模式的三个子块的权重变换的起始位置的示意图,为了保证子块1与子块2的“划分结果”交点能够位于子块1的分割线上,且保证子块2与子块3的“划分结果”交点能够位于子块2的分割线上,则对子块1的ValidGap进行限制,并对子块2的ValidGap进行限制,并对子块3的ValidGap进行限制。例如,限制子块1的ValidGap为子块1的宽,并限制子块2的ValidGap为子块2的宽,并限制子块3的ValidGap为子块3的宽。
步骤f2、根据如下公式计算子块1的权重变换的起始位置FirstPos1:FirstPos1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+((N2<<1)>>X2)+((N1<<1)>>X1)。
步骤f3、根据如下公式计算子块2的权重变换的起始位置FirstPos2:FirstPos2=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+(((N1+N2)<<1)>>X2)。
步骤f4、根据如下公式计算子块3的权重变换的起始位置FirstPos3:FirstPos3=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+(((N1+N2)<<1)>>X3)。
关于FirstPos1,FirstPos2和FirstPos3,可以通过对ValidGap的中心点(ValidGap>>1)进行Y相关的偏移得到,例如,可以将ValidGap进行等分,本例中Y共有7类取值,可以将有ValidGap进行八等分得到,因此,上述公式中出现(ValidGap>>3)。((N2<<1)>>X2)+((N1<<1)>>X1),(((N1+N2)<<1)>>X2)以及(((N1+N2)<<1)>>X3),可以是当前块上侧的错位△1,△2以及△3,参见图6N所示,为权重变换的起始位置的示意图。
步骤f5、逐像素导出参考权重值SampleWeight[x][y],即,为子块外部的每个周边位置设置参考权重值。例如,可以采用如下公式为子块1外部的每个周边位置设置参考权重值:SampleWeight[x1][y1]=Clip3(权重最小值,权重最大值,权重变化率*((-(x1<<1)-((y1<<1)>>X1)-FirstPos1),x1,y1位于子块1内。采用如下公式为子块2外部的每个周边位置设置参考权重值:SampleWeight[x2][y2]=Clip3(权重最小值,权重最大值,权重变化率*((-(x2<<1)-((y2<<1)>>X2)–FirstPos2),x2,y2位于子块2内。采用如下公式为子块3外部的每个周边位置设置参考权重值:SampleWeight[x3][y3]=Clip3(权重最小值,权重最大值,权重变化率*((-(x3<<1)-((y3<<1)>>X3)–FirstPos3),x3,y3位于子块3内。
在上述实施例中,在运算FisrtPos时,(ValidGap>>1)-a+Y*((ValidGap>>3)-e)运算式之后的运算中,加法可根据具体角度变为减法,例如:FirstPos1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)-((N2<<1)>>X2)+((N1<<1)>>X1);FirstPos2=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)-(((N1+N2)<<1)>>X2);FirstPos3=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)-(((N1+N2)<<1)>>X3)。
以此类推,对于N个子块,若均为横向划分,那么N个子块的宽相等,若N个子块尺寸的高为(W1,W2,...,WN-1),N个子块的权重预测角度的斜率的绝对值的log2对数值为(X1,X2,...,XN),采用如下方式确定参考权重值:
步骤g1、从子块外部的周边位置中确定权重变换的起始位置的区间ValidGap。
步骤g2、计算N个子块的权重变换的起始位置:FirstPos1,FirstPos2...FirstPosN
FirstPos1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+((W1<<1)>>X1)+((W2<<1)>>X2)+...+((WN-1<<1)>>XN-1);
FirstPos2=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+(((W1+W2)<<1)>>X2)+((W3<<1)>>X3)+...+((WN-1<<1)>>XN-1);
...;
FirstPosN-2=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+(((W1+W2+...+WN-2)<<1)>>XN-2)+((WN-1<<1)>>XN-1);
FirstPosN-1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+(((W1+W2+...+WN-1)<<1)>>XN-1);
FirstPosN=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+(((W1+W2+...+WN-1)<<1)>>XN)。
综上所述,除FirstPos1以及FirstPosN外,
Figure GDA0003896102870000441
Figure GDA0003896102870000442
步骤g3、逐像素导出权重SampleWeight[x][y],即,为子块外部的每个周边位置设置参考权重值。例如,可以采用如下公式为N个子块外部的每个周边位置设置参考权重值:
SampleWeight[x1][y1]=Clip3(权重最小值,权重最大值,权重变化率*((-(x1<<1)-((y1<<1)>>X1)-FirstPos1),示例性的,x1,y1位于子块1内;
SampleWeight[x2][y2]=Clip3(权重最小值,权重最大值,权重变化率*((-(x2<<1)-((y2<<1)>>X2)–FirstPos2),示例性的,x2,y2位于子块2内;
...;
SampleWeight[xN][yN]=Clip3(权重最小值,权重最大值,权重变化率*((-(xN<<1)-((yN<<1)>>XN)–FirstPosN),示例性的,xN,yN位于子块N内。
在上述实施例中,针对任意的两个相邻子块,参见图6O所示,满足如下关系:
FirstPosi–FirstPosi+1=((W<<1)>>Xi)-((W<<1)>>Xi+1);
示例性的,FirstPosi=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+K+((W<<1)>>Xi);FirstPosi+1=(ValidGap>>1)-a+Y*((ValidGap>>3)-e)+K+((W<<1)>>Xi+1);K与子块i+2至子块N的划分位置以及权重预测角度相关。
在上述实施例中,示出了在水平方向或者垂直方向,将当前块划分为至少两个子块的情况,在实际应用中,还可以同时在水平方向和垂直方向对当前块进行划分,参见图6P和图6Q所示,为同时在水平方向和垂直方向对当前块进行划分,得到3个子块的示意图。
参见图6P所示,子块1外部的周边位置的ValidGap,是基于子块1的宽确定的,子块2的权重预测位置,是基于子块1的权重预测位置确认的,而子块3的权重预测位置,是基于子块2的权重预测位置确认的。基于图6P的应用场景,可以根据子块1的权重预测位置和权重预测角度,确定子块1外部周边位置的参考权重值,并根据子块1外部周边位置的参考权重值确定子块1的每个像素位置的目标权重值,以及,根据子块1外部周边位置的参考权重值确定子块2的外部周边位置的参考权重值。然后,根据子块2外部周边位置的参考权重值确定子块2的每个像素位置的目标权重值,以及,根据子块2外部周边位置的参考权重值确定子块3的外部周边位置的参考权重值。然后,根据子块3外部周边位置的参考权重值确定子块3的每个像素位置的目标权重值。
参见图6Q所示,子块1外部的周边位置的ValidGap,是基于子块1的高确定的;子块2的权重预测位置,是基于子块1的权重预测位置确认的;而子块3的权重预测位置,是基于子块2的权重预测位置确认的。基于图6Q的应用场景,根据子块1的权重预测位置和权重预测角度,确定子块1外部周边位置的参考权重值,并根据子块1外部周边位置的参考权重值确定子块1的每个像素位置的目标权重值,以及,根据子块1外部周边位置的参考权重值确定子块2的外部周边位置的参考权重值,此例中,二者的外部周边位置位于同一列。然后,根据子块2外部周边位置的参考权重值确定子块2的每个像素位置的目标权重值,以及,根据子块2外部周边位置的参考权重值确定子块3的外部周边位置的参考权重值。然后,根据子块3外部周边位置的参考权重值确定子块3的每个像素位置的目标权重值。
综上所述,在多个子块的实施例下,对于解码端,先解码一个子块的外部周边位置的参考权重值,根据该子块的外部周边位置以及权重预测角度导出该子块每个像素位置的目标权重值。而后,根据相邻关系以及各子块的权重预测角度,逐步导出相邻子块的外部周边位置的参考权重值,直至导出每个子块的外部周边位置的参考权重值。基于每个子块的外部周边位置的参考权重值,就可以导出该子块内部的每个像素位置的目标权重值。
在上述实施例11和实施例12中,针对每个子块来说,该子块的权重变换的起始位置,可以由如下参数的至少一个确定:子块的权重预测角度,子块的权重预测位置,子块的尺寸。在实际应用中,可以只根据第一子块(即所有子块中的任一子块)的权重预测角度,第一子块的权重预测位置和第一子块的尺寸,确定第一子块的权重变换的起始位置,并根据第一子块的权重变换的起始位置确定其它子块的权重变换的起始位置。
例如,参见图6R,图6S和图6T所示,可以根据子块1的权重预测角度,权重预测位置的尺寸等参数,确定子块1的权重变换的起始位置,即图中黑色像素位置。然后,基于子块1的权重变换的起始位置,以及子块1的权重预测角度(或子块2的权重预测角度,图中是以子块1的权重预测角度为例),可以确定子块2的权重变换的起始位置,即图中子块1的权重预测角度指向的黑色像素位置。在得到子块2的权重变换的起始位置后,就可以为子块2的外部周边位置配置参考权重值。
参见图6T所示,基于子块2的权重变换的起始位置,以及子块2的权重预测角度,可以确定子块3的权重变换的起始位置,即图中子块2的权重预测角度指向的黑色像素位置。在得到子块3的权重变换的起始位置后,就可以为子块3的外部周边位置配置参考权重值。
实施例13:在上述实施例1-实施例5中,需要根据第一预测模式确定像素位置的第一预测值,并根据第二预测模式确定像素位置的第二预测值。示例性的,第一预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个;第二预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个。
本实施例中,以第一预测模式可以为帧间预测模式,第二预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个为例进行说明。
情况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。解码端在接收到编码比特流后,从编码比特流中解析出指示信息a,基于指示信息a,解码端从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的目标运动信息。
示例性的,关于编码端/解码端确定当前块的目标帧内模式(如Planar模式,或DC模式,或水平角度模式,或垂直角度模式,或任意的角度模式等),并根据该目标帧内模式确定像素位置的第二预测值的过程,本申请实施例中不再赘述,可以参见帧内预测过程。
情况4、第一预测模式为帧间预测模式,第二预测模式为帧内块拷贝预测模式(即IBC模式),构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息。可以从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息。可以构建块矢量候选列表,该块矢量候选列表可以包括至少一个候选块矢量。从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量。针对当前块的每个像素位置,可以根据该目标运动信息确定该像素位置的第一预测值,根据该目标块矢量确定该像素位置的第二预测值。
示例性的,针对编码端和解码端来说,均可以构建运动信息候选列表,且编码端的运动信息候选列表与解码端的运动信息候选列表相同,对此运动信息候选列表不做限制。
关于运动信息候选列表的构建方式,可以参见情况1或情况3,关于编码端/解码端从运动信息候选列表中选择目标运动信息的方式,可以参见情况3,在此不再重复赘述。
示例性的,针对编码端和解码端来说,为当前块构建块矢量候选列表,从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量,并根据该目标块矢量确定像素位置的第二预测值的过程,本申请实施例中不再详细赘述,可以参见基于帧内模式得到预测值的方式。
情况5、第一预测模式为帧间预测模式,第二预测模式为调色板模式,构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息。从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息。针对当前块的每个像素位置,可以根据该目标运动信息确定该像素位置的第一预测值,并根据调色板模式确定该像素位置的第二预测值。
运动信息候选列表的构建方式,可以参见情况1或情况3,编码端/解码端从运动信息候选列表中选择目标运动信息的方式,可以参见情况3,在此不再重复赘述。编码端/解码端根据调色板模式确定该像素位置的第二预测值,可以参见调色板预测过程,对此不做限制。
在上述情况中,第一预测模式的预测信息的指示信息与第二预测模式的预测信息的指示信息,可以进行互换,编码端与解码端一致即可,此处是指示信息的互换,不影响解析过程,即不存在解析依赖。在同一预测模式候选列表的情况下,第一预测模式的预测信息的指示信息与第二预测模式的预测信息的指示信息不能相等,假设编码两个索引值,索引值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。
实施例14:针对实施例13的情况1-情况5,均需要构建运动信息候选列表,该运动信息候选列表可以为单向运动信息候选列表。参见图7所示,为当前块与相邻块的示意图,针对运动信息候选列表的构建过程,基于F,G,C,A,B,D的顺序,将单向运动信息按照List0优先的顺序依次加入到运动信息候选列表,且在加入过程中需要进行查重处理。当然,F,G,C,A,B,D的顺序只是一个示例,还可以采用其它顺序,对此不做限制。
若运动信息候选列表不满,则继续将剩余的双向运动信息拆分为单向运动信息,并按照List0优先的顺序依次加入到运动信息候选列表,且在加入过程中需要进行查重处理。
最后,若运动信息候选列表不满,则继续将时域运动信息拆分为单向运动信息,并按照List0优先的顺序依次加入到运动信息候选列表,且在加入过程中需要进行查重处理。
List0优先的策略如下:若存在List0的运动信息,则可以将List0的运动信息加入到运动信息候选列表,且在加入过程中需要进行查重处理。若存在List1的运动信息,则可以将List1的运动信息加入到运动信息候选列表,且在加入过程中需要进行查重处理。
以下结合几个具体应用场景,对运动信息候选列表的构建过程进行说明。
应用场景1:第一步,参见图7所示,F,G,C,A,B,D是当前块E的相邻预测块,基于F,G,C,A,B,D的顺序(该顺序可变,例如,按照D,B,A,C,G,F的顺序,或者按照其它顺序;此外,可以删除若干相邻预测块,例如,只采用F、G、C、A和D等),将其运动信息(若有)按照List0优先的顺序依次加入到运动信息候选列表,且在加入过程中需要进行查重处理,直至检查完所有运动信息或运动信息候选列表的长度达到X-1。
第二步,由于运动信息候选列表的长度小于X,因此,将导出的时域运动信息中指向List0的单向运动信息(若有)加入到运动信息候选列表,且在加入过程中需要进行查重处理。
第三步,若运动信息候选列表的长度小于X,则将导出的时域运动信息中指向List1的单向运动信息(若有)加入到运动信息候选列表,且在加入过程中需要进行查重处理。
第四步,若运动信息候选列表的长度小于X,则可以将运动信息候选列表中最后一个单向运动信息进行重复填充操作,直至运动信息候选列表的长度为X。
在上述实施例中,X可以取任意的正整数,例如,X的取值可以4,5等。
应用场景2:第一步,F,G,C,A,B,D是当前块E的相邻预测块,基于F,G,C,A,B,D的顺序,将其运动信息(若有)按照List0优先的顺序依次加入到运动信息候选列表,且加入过程进行查重处理,直至检查完所有运动信息或运动信息候选列表的长度达到X。
第二步,若运动信息候选列表的长度小于X,则可以将导出的时域运动信息中指向List0的单向运动信息(若有)加入到运动信息候选列表,且在加入过程中需要进行查重处理。
第三步,若运动信息候选列表的长度小于X,则将导出的时域运动信息中指向List1的单向运动信息(若有)加入到运动信息候选列表,且在加入过程中需要进行查重处理。
第四步,若运动信息候选列表的长度小于X,则可以将运动信息候选列表中最后一个单向运动信息进行重复填充操作,直至运动信息候选列表的长度为X。
在上述实施例中,X可以取任意的正整数,例如,X的取值可以4,5等。
示例性的,应用场景1与应用场景2的区别在于,应用场景1至少预留一个位置给时域运动信息,即第一步,运动信息候选列表的长度最多达到X-1,而不是达到X。
应用场景3:第一步,F,G,C,A,B,D是当前块E的相邻预测块,基于F,G,C,A,B,D的顺序,将单向运动信息(若有)依次加入到运动信息候选列表,且在加入过程中需要进行查重处理,直至检查完所有单向运动信息或运动信息候选列表的长度达到X-1。
第二步,若运动信息候选列表的长度小于X-1,则将F,G,C,A,B,D的双向运动信息(若有)按照List0优先的顺序,依次加入到运动信息候选列表,且在加入过程中需要进行查重处理,直至检查完所有双向运动信息或运动信息候选列表的长度达到X-1。
第三步,由于运动信息候选列表的长度小于X,因此,将导出的时域运动信息中指向List0的单向运动信息(若有)加入到运动信息候选列表,且在加入过程中需要进行查重处理。
第四步,若运动信息候选列表的长度小于X,则将导出的时域运动信息中指向List1的单向运动信息(若有)加入到运动信息候选列表,且在加入过程中需要进行查重处理。
第五步,若运动信息候选列表的长度小于X,则可以将运动信息候选列表中最后一个单向运动信息进行重复填充操作,直至运动信息候选列表的长度为X。
在上述实施例中,X可以取任意的正整数,例如,X的取值可以4,5等。
在一种可能的实施方式中,应用场景3的另一种描述形式可以为:
第一步,F,G,C,A,B,D是当前块E的相邻预测块,基于F,G,C,A,B,D的顺序,确定F、G、C、A、B和D的“可用”性:如果F存在,且采用帧间预测模式,则可以确定F可用;否则,确定F不可用。如果G存在,且采用帧间预测模式,则可以确定G可用;否则,确定G不可用。如果C存在,且采用帧间预测模式,则可以确定C可用;否则,确定C不可用。如果A存在,且采用帧间预测模式,则可以确定A可用;否则,确定A不可用。如果B存在,且采用帧间预测模式,则可以确定B可用;否则,确定B不可用。如果D存在,且采用帧间预测模式,则可以确定D可用;否则,确定D不可用。
第二步,基于F,G,C,A,B,D的顺序,将单向可用的运动信息依次加入到运动信息候选列表,且加入过程需要进行查重处理,直至运动信息候选列表的长度为X-1或遍历结束。
第三步,若运动信息候选列表的长度小于X-1,则按照F,G,C,A,B,D的顺序,将双向可用的运动信息拆分为指向List0的单向运动信息以及指向List1的单向运动信息,依次加入到运动信息候选列表并进行查重,直至运动信息候选列表的长度为X-1或者遍历结束。
第四步,将导出的时域双向运动信息拆分为指向List0的单向运动信息以及指向List1的单向运动信息,先进行单向运动信息的查重操作,若单向运动信息不重复,则将单向运动信息加入到运动信息候选列表,直至运动信息候选列表的长度为X或遍历结束。
第五步,若运动信息候选列表的长度小于X,则可以将运动信息候选列表中最后一个单向运动信息进行重复填充操作,直至运动信息候选列表的长度为X。
在上述实施例中,X可以取任意的正整数,例如,X的取值可以4,5等。
应用场景4:第一步,F,G,C,A,B,D是当前块E的相邻预测块,基于F,G,C,A,B,D的顺序,将单向运动信息(若有)依次加入到运动信息候选列表,且在加入过程中需要进行查重处理,直至检查完所有单向运动信息或运动信息候选列表的长度达到X。
第二步,若运动信息候选列表的长度小于X,则将F,G,C,A,B,D的双向运动信息(若有)按照List0优先的顺序,依次加入到运动信息候选列表,且在加入过程中需要进行查重处理,直至检查完所有双向运动信息或运动信息候选列表的长度达到X。
第三步,若运动信息候选列表的长度小于X,因此,将导出的时域运动信息中指向List0的单向运动信息(若有)加入到运动信息候选列表,且在加入过程中需要进行查重处理。
第四步,若运动信息候选列表的长度小于X,则将导出的时域运动信息中指向List1的单向运动信息(若有)加入到运动信息候选列表,且在加入过程中需要进行查重处理。
第五步,若运动信息候选列表的长度小于X,则可以将运动信息候选列表中最后一个单向运动信息进行重复填充操作,直至运动信息候选列表的长度为X。
在上述实施例中,X可以取任意的正整数,例如,X的取值可以4,5等。
示例性的,应用场景3与应用场景4的区别在于,应用场景3至少预留一个位置给时域运动信息,即第一步,运动信息候选列表的长度最多达到X-1,而不是达到X。
在上述应用场景1-应用场景4中,时域运动信息的导出方案为现有技术,例如,可以通过同位帧的同位块导出当前块的时域运动信息等,对此不做限制。
应用场景5:在应用场景1-应用场景4中,若运动信息候选列表的长度小于X,将运动信息候选列表中最后一个单向运动信息进行重复填充操作。在应用场景5中,不再对最后一个单向运动信息进行重复填充操作,而是通过衍生来进行填充操作。例如,以运动信息候选列表中的任意一个有效运动信息(x,y,ref_idx,ListX)为基础,ref_idx和ListX分别为参考帧索引和参考帧列表,且二者可以统称为参考帧信息,可添加以下至少一个候选运动信息:
(x+a,y+b,ref_idx,ListX),a,b可以取任意整数;(k1*x,k1*y,ref_idx_new1,ListX),k1为任意非0正整数,即对运动矢量进行伸缩操作;(k2*x,k2*y,ref_idx_new2,ListY),k2为任意非0正整数,即对运动矢量进行伸缩操作。此外,也可以进行补0操作,即候选运动信息可以为(0,0,ref_idx3,ListZ)。针对上述的候选运动信息,在将候选运动信息添加到运动信息候选列表时,可以进行查重处理,也可以不进行查重处理。
应用场景6:在应用场景1-应用场景4中,运动信息候选列表的长度为X。针对实施例13的情况2-情况5,需要从运动信息候选列表中选择一个候选运动信息作为当前块的目标运动信息,因此,运动信息候选列表的长度可以为1~H,H可以根据经验配置,如4、5等。
在此基础上,编码端可以通过序列级语法设置运动信息候选列表的长度(即AWP模式的运动信息候选列表的长度,或DAWP模式的运动信息候选列表的长度,或EAWP模式的运动信息候选列表的长度),如通过awp_max_cand_num指示运动信息候选列表的长度,假设awp_max_cand_num指示的值为a,且a位于1~H之间,则解码端根据awp_max_cand_num确定运动信息候选列表的长度,如长度X为a。或者,通过awp_max_cand_num_minus2指示运动信息候选列表的长度,假设awp_max_cand_num_minus2指示的值为a,且a位于0~(H-1)之间,则解码端根据awp_max_cand_num确定运动信息候选列表的长度,如长度X为a+1。
编码端可通过帧级语法设置运动信息候选列表的长度,如通过slice_awp_max_cand_num指示运动信息候选列表的长度,假设slice_awp_max_cand_num指示的值为a,且a位于1~H之间,则解码端根据slice_awp_max_cand_num确定运动信息候选列表的长度,如长度X为a。或者,通过slice_awp_max_cand_num_minus2指示运动信息候选列表的长度,假设slice_awp_max_cand_num_minus2指示的值为a,且a位于0~(H-1)之间,则解码端根据slice_awp_max_cand_num_minus2确定运动信息候选列表的长度,如长度X为a+1。
针对实施例13的情况1,需要从运动信息候选列表中选择两个候选运动信息作为当前块的目标运动信息,因此,运动信息候选列表的长度可以为2~H,H可以根据经验配置,如4、5等。在此基础上,编码端可以通过序列级语法设置运动信息候选列表的长度,例如,可以通过awp_max_cand_num指示运动信息候选列表的长度,假设awp_max_cand_num指示的值为a,且a位于2~H之间,则解码端根据awp_max_cand_num确定运动信息候选列表的长度,如长度X为a。或者,通过awp_max_cand_num_minus2指示运动信息候选列表的长度,假设awp_max_cand_num_minus2指示的值为a,且a位于0~(H-2)之间,则解码端根据awp_max_cand_num_minus2确定运动信息候选列表的长度,如长度X为a+2。或者,编码端通过帧级语法设置运动信息候选列表的长度,如通过slice_awp_max_cand_num指示运动信息候选列表的长度,假设slice_awp_max_cand_num指示的值为a,且a位于2~H之间,则解码端根据slice_awp_max_cand_num确定运动信息候选列表的长度,如长度X为a。或者,可以通过slice_awp_max_cand_num_minus2指示运动信息候选列表的长度,假设slice_awp_max_cand_num_minus2指示的值为a,且a位于0~(H-2)之间,则解码端根据slice_awp_max_cand_num_minus2确定运动信息候选列表的长度,如长度X为a+2。
应用场景7:在应用场景1-应用场景4中,可以构建运动信息候选列表,本应用场景7中,将该运动信息候选列表记为AwpUniArray,可以将AwpUniArray中的运动信息称为候选运动信息。针对实施例13的情况1-情况5,可以从AwpUniArray中选择候选运动信息作为当前块的目标运动信息,继而根据该目标运动信息确定像素位置的预测值。
针对实施例13的情况1,需要从AwpUniArray中选择两个候选运动信息,将其作为当前块的第一目标运动信息和第二目标运动信息。在此基础上,解码端可以从编码比特流中解析出AwpCandIdx0和AwpCandIdx1,并将AwpUniArray中的第AwpCandIdx0+1个运动信息赋值给mvAwp0L0,mvAwp0L1,RefIdxAwp0L0,RefIdxAwp0L1。将AwpUniArray中的第AwpCandIdx1+1个运动信息赋值给mvAwp1L0,mvAwp1L1,RefIdxAwp1L0,RefIdxAwp1L1。当然,也可以将AwpUniArray中的第AwpCandIdx0+1个运动信息赋值给mvAwp1L0,mvAwp1L1,RefIdxAwp1L0,RefIdxAwp1L1,将AwpUniArray中的第AwpCandIdx1+1个运动信息赋值给mvAwp0L0,mvAwp0L1,RefIdxAwp0L0,RefIdxAwp0L1,对此不做限制。
示例性的,AwpCandIdx0表示第一目标运动信息的索引值,因此,可以将AwpUniArray中的第AwpCandIdx0+1个运动信息赋值给第一目标运动信息。例如,若AwpCandIdx0为0,则将AwpUniArray中的第1个运动信息赋值给第一目标运动信息,若AwpCandIdx0为1,则将AwpUniArray中的第2个运动信息赋值给第一目标运动信息,以此类推。
mvAwp0L0,mvAwp0L1,RefIdxAwp0L0,RefIdxAwp0L1合起来作为第一目标运动信息,即第一目标运动信息包括指向List0的单向运动信息以及指向List1的单向运动信息。
若AwpUniArray中的第AwpCandIdx0+1个运动信息是指向List0的单向运动信息,则第一目标运动信息包括指向List0的单向运动信息,且指向List1的单向运动信息为空。
若AwpUniArray中的第AwpCandIdx0+1个运动信息是指向List1的单向运动信息,则第一目标运动信息包括指向List1的单向运动信息,且指向List0的单向运动信息为空。
示例性的,mvAwp0L0和RefIdxAwp0L0表示第一目标运动信息中指向List0的单向运动信息,mvAwp0L1和RefIdxAwp0L1表示第一目标运动信息中指向List1的单向运动信息。
若RefIdxAwp0L0有效,则表示指向List0的单向运动信息为有效,因此,第一目标运动信息的预测模式为PRED_List0,即可以采用指向List0的单向运动信息像素位置的预测值。
若RefIdxAwp0L1有效,则表示指向List1的单向运动信息为有效,因此,第一目标运动信息的预测模式为PRED_List1,即可以采用指向List1的单向运动信息像素位置的预测值。
示例性的,AwpCandIdx1表示第二目标运动信息的索引值,因此,可以将AwpUniArray中的第AwpCandIdx1+1个运动信息赋值给第二目标运动信息。例如,若AwpCandIdx1为0,则将AwpUniArray中的第1个运动信息赋值给第二目标运动信息,若AwpCandIdx1为1,则将AwpUniArray中的第2个运动信息赋值给第二目标运动信息,以此类推。
mvAwp1L0,mvAwp1L1,RefIdxAwp1L0,RefIdxAwp1L1合起来作为第二目标运动信息,即第二目标运动信息包括指向List0的单向运动信息以及指向List1的单向运动信息。
若AwpUniArray中的第AwpCandIdx1+1个运动信息是指向List0的单向运动信息,则第二目标运动信息包括指向List0的单向运动信息,且指向List1的单向运动信息为空。
若AwpUniArray中的第AwpCandIdx1+1个运动信息是指向List1的单向运动信息,则第二目标运动信息包括指向List1的单向运动信息,且指向List0的单向运动信息为空。
示例性的,mvAwp1L0和RefIdxAwp1L0表示第二目标运动信息中指向List0的单向运动信息,mvAwp1L1和RefIdxAwp1L1表示第二目标运动信息中指向List1的单向运动信息。
若RefIdxAwp1L0有效,则表示指向List0的单向运动信息为有效,因此,第二目标运动信息的预测模式为PRED_List0,即可以采用指向List0的单向运动信息像素位置的预测值。
若RefIdxAwp1L1有效,则表示指向List1的单向运动信息为有效,因此,第二目标运动信息的预测模式为PRED_List1,即可以采用指向List1的单向运动信息像素位置的预测值。
针对实施例13的情况2-情况5,需要从AwpUniArray中选择一个候选运动信息,作为当前块的目标运动信息。解码端可以从编码比特流中解析出AwpCandIdx,并将AwpUniArray中的第AwpCandIdx+1个运动信息赋值给mvAwpL0,mvAwpL1,RefIdxAwpL0,RefIdxAwpL1。AwpCandIdx表示目标运动信息的索引值,mvAwpL0,mvAwpL1,RefIdxAwpL0,RefIdxAwpL1合起来作为目标运动信息,mvAwpL0和RefIdxAwpL0表示目标运动信息中指向List0的单向运动信息,mvAwpL1和RefIdxAwpL1表示目标运动信息中指向List1的单向运动信息。
实施例15:在上述实施例1-实施例5中,需要根据第一预测模式确定像素位置的第一预测值,并根据第二预测模式确定像素位置的第二预测值。示例性的,第一预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式等视频编码预测模式中的任意一个;第二预测模式可以为帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式等视频编码预测模式中的任意一个。本实施例中,以第一预测模式可以为帧间预测模式,第二预测模式可以为视频编码任意预测模式,本实施例以帧内块拷贝预测模式,帧内预测模式,帧间预测模式,调色板模式中的任意一个为例进行说明。
情况1、第一预测模式为帧间预测模式,第二预测模式为帧间预测模式,构建运动信息候选列表,该运动信息候选列表可以包括至少两个候选运动信息。从该运动信息候选列表中选择一个候选运动信息作为当前块的第一原始运动信息,并从运动信息候选列表中选择另一个候选运动信息作为当前块的第二原始运动信息,第一原始运动信息和第二原始运动信息不同。然后,根据第一原始运动信息确定当前块的第一目标运动信息,并根据第二原始运动信息确定当前块的第二目标运动信息。针对当前块的每个像素位置,根据第一目标运动信息确定该像素位置的第一预测值,根据第二目标运动信息确定该像素位置的第二预测值。
关于运动信息候选列表的构建过程,可以参见实施例13和实施例14,在此不再赘述。关于根据第一目标运动信息确定第一预测值,根据第二目标运动信息确定第二预测值的过程,可以参见实施例13,在此不再赘述。与实施例13不同的是,在实施例15中,从运动信息候选列表中选择的候选运动信息作为原始运动信息,而不是作为目标运动信息。在得到原始运动信息,还可以根据原始运动信息获取目标运动信息,具体获取过程参见后续实施例。
情况2、第一预测模式为帧间预测模式,第二预测模式为帧间预测模式,构建第一运动信息候选列表和第二运动信息候选列表,第一运动信息候选列表包括至少一个候选运动信息,第二运动信息候选列表包括至少一个候选运动信息。从第一运动信息候选列表中选择一个候选运动信息作为当前块的第一原始运动信息,根据第一原始运动信息确定当前块的第一目标运动信息。从第二运动信息候选列表中选择一个候选运动信息作为当前块的第二原始运动信息,根据第二原始运动信息确定当前块的第二目标运动信息。针对当前块的每个像素位置,根据第一目标运动信息确定该像素位置的第一预测值;根据第二目标运动信息确定该像素位置的第二预测值。与实施例13不同的是,在实施例15中,从运动信息候选列表中选择的候选运动信息作为原始运动信息,而不是作为目标运动信息。在得到原始运动信息,还可以根据原始运动信息获取目标运动信息,具体获取过程参见后续实施例。
情况3、第一预测模式为帧间预测模式,第二预测模式为帧内预测模式,可以构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息。从运动信息候选列表中选择一个候选运动信息作为当前块的原始运动信息,并根据该原始运动信息确定当前块的目标运动信息。确定当前块的目标帧内模式。针对当前块的每个像素位置,根据该目标运动信息确定该像素位置的第一预测值,根据该目标帧内模式确定该像素位置的第二预测值。
情况4、第一预测模式为帧间预测模式,第二预测模式为帧内块拷贝预测模式,构建运动信息候选列表,运动信息候选列表包括至少一个候选运动信息。从运动信息候选列表中选择一个候选运动信息作为当前块的原始运动信息,根据该原始运动信息确定当前块的目标运动信息。构建块矢量候选列表,块矢量候选列表包括至少一个候选块矢量。从块矢量候选列表中选择一个候选块矢量作为当前块的目标块矢量。针对当前块的每个像素位置,根据目标运动信息确定该像素位置的第一预测值,根据目标块矢量确定该像素位置的第二预测值。
情况5、第一预测模式为帧间预测模式,第二预测模式为调色板模式,可以构建运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息。可以从运动信息候选列表中选择一个候选运动信息作为当前块的原始运动信息,并根据该原始运动信息确定当前块的目标运动信息。然后,针对当前块的每个像素位置,可以根据该目标运动信息确定该像素位置的第一预测值,并根据调色板模式确定该像素位置的第二预测值。
综上所述,针对上述情况1-情况5,当至少一个预测模式为帧间预测模式时,可以构建运动信息候选列表,该运动信息候选列表中包括至少一个候选运动信息。然后,可以从该运动信息候选列表中选择一个候选运动信息作为当前块的原始运动信息,并根据该原始运动信息确定当前块的目标运动信息(在情况一和情况二中,是根据第一原始运动信息确定第一目标运动信息,根据第二原始运动信息确定第二目标运动信息,后续以一组原始运动信息和目标运动信息的实现为例)。然后,根据该目标运动信息确定像素位置的预测值。
关于如何根据原始运动信息确定目标运动信息,本实施例中给出一种单向运动信息叠加运动矢量差(Enhanced Angular Weighted Prediction,EAWP)的方案,比如说,原始运动信息包括原始运动矢量,目标运动信息包括目标运动矢量,为了根据原始运动矢量确定当前块的目标运动矢量,则可以获取与原始运动矢量对应的运动矢量差(MVD),并根据运动矢量差和原始运动矢量确定目标运动矢量,即运动矢量差与原始运动矢量的和作为目标运动矢量。
实施例16:在实施例15的基础上,约定运动矢量差的方向信息和幅值信息,若方向信息表示方向为右,幅值信息表示幅值为A,则运动矢量差为(A,0);若方向信息表示方向为下,幅值信息表示幅值为A,则运动矢量差为(0,-A);若方向信息表示方向为左,幅值信息表示幅值为A,则运动矢量差为(-A,0);若方向信息表示方向为上,幅值信息表示幅值为A,则运动矢量差为(0,A);若方向信息表示方向为右上,幅值信息表示幅值为A,则运动矢量差为(A,A);若方向信息表示方向为左上,幅值信息表示幅值为A,则运动矢量差为(-A,A);若方向信息表示方向为左下,幅值信息表示幅值为A,则运动矢量差为(-A,-A);若方向信息表示方向为右下,幅值信息表示幅值为A,则运动矢量差为(A,-A)。
示例性的,运动矢量差可以支持上述方向信息的部分或者全部,运动矢量差支持的幅值A的取值范围,可以根据经验进行配置,可以为至少一个取值,对此不做限制。
例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持如下5类步长配置:1/4-pel,1/2-pel,1-pel,2-pel,4-pel,即幅值A的取值可以为1,2,4,8,16。综上所述,在方向为上时,运动矢量差可以为(0,1),(0,2),(0,4),(0,8),(0,16)。在方向为下时,运动矢量差可以为(0,-1),(0,-2),(0,-4),(0,-8),(0,-16)。在方向为左时,运动矢量差可以为(-1,0),(-2,0),(-4,0),(-8,0),(-16,0)。在方向为右时,运动矢量差可以为(1,0),(2,0),(4,0),(8,0),(16,0)。
又例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持如下6类步长配置:1/4-pel,1/2-pel,1-pel,2-pel,3-pel,4-pel,即幅值A的取值可以为1,2,4,8,12,16。综上所述,在方向为上时,运动矢量差可以为(0,1),(0,2),(0,4),(0,8),(0,12),(0,16),关于其它方向的运动矢量差,与“上”的实现方式类似,在此不再赘述。
又例如,运动矢量差支持上,下,左,右,左上,左下,右上,右下等八个方向,运动矢量差支持如下3类步长配置:1/4-pel,1/2-pel,1-pel,即幅值A的取值可以为1,2,4。综上所述,在方向为左上时,运动矢量差可以为(-1,1),(-2,2),(-4,4);在方向为右上时,运动矢量差可以为(1,1),(2,2),(4,4),关于其它方向的运动矢量差,与“左上、右上”的实现方式类似,运动矢量差的取值参见上述约定,在此不再赘述。
又例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持如下4类步长配置:1/4-pel,1/2-pel,1-pel,2-pel,即幅值A的取值可以为1,2,4,8。
当然,上述只是给出了几个示例,对此不做限制。例如,运动矢量差支持的方向可以任意选择,如可以支持上,下,左,右,左上,左下等六个方向,或者,可以支持上,下等两个方向等。又例如,运动矢量差支持的步长配置可变,可以进行灵活配置。又例如,可根据量化参数QP等编码参数对步长配置进行自适应配置,如对较大QP采用1-pel,2-pel,4-pel,8-pel对较小QP采用1/4-pel,1/2-pel,1-pel,2-pel。又例如,可以在序列级,图像级,帧级,Slice级,tile级,patch级,CTU级等设置合适的步长配置,解码端根据序列级,图像级,帧级,Slice级,tile级,patch级,CTU级解析到的步长配置进行解码操作。
为了方便描述,在后续实施例中,假设运动矢量差支持上,下等方向,支持1-pel,2-pel等步长配置,按照1/4-pel精度描述,则运动矢量差可以为(0,4),(0,8),(0,-4),(0,-8)即(0,1<<2),(0,1<<3),(0,-1<<2),(0,-1<<3)。
针对编码端来说,在构建运动信息候选列表后,依次遍历运动信息候选列表中的每个候选运动矢量。在遍历到候选运动矢量1时,将候选运动矢量1与运动矢量差(0,4)的和作为候选运动矢量1-1,确定候选运动矢量1-1对应的率失真代价值1-1,对此确定过程不做限制。将候选运动矢量1与运动矢量差(0,8)的和作为候选运动矢量1-2,确定候选运动矢量1-2对应的率失真代价值1-2。将候选运动矢量1与运动矢量差(0,-4)的和作为候选运动矢量1-3,确定候选运动矢量1-3对应的率失真代价值1-3;将候选运动矢量1与运动矢量差(0,-8)的和作为候选运动矢量1-4,确定候选运动矢量1-4对应的率失真代价值1-4。
依次类推,针对遍历到的每个候选运动矢量,均可以采用上述方式进行处理,得到率失真代价值。在完成所有候选运动矢量的遍历后,从所有率失真代价值中选择最小的率失真代价值,假设率失真代价值1-1为最小,则编码端可以在编码比特流中编码如下内容:候选运动矢量1在运动信息候选列表中的索引值。运动矢量差(0,4)的方向信息和幅值信息,方向信息用于表示运动矢量差(0,4)的方向为向上,幅值信息用于表示运动矢量差(0,4)的幅值为4。例如,方向信息的指示信息可以为0,表示方向列表(上,下)中的第一个方向,幅值信息的指示信息可以为0,表示步长配置列表(1-pel,2-pel)中的第一个步长配置。当然,上述过程只是简化后的示例,对此不做限制,只要能够表示方向信息和幅值信息即可。
例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4-pel,1/2-pel,1-pel,2-pel,4-pel等5类步长配置时,运动矢量差的方向信息可以采用2bin定长码(共4类值)进行编码,2bin定长码的4个取值分别表示上,下,左,右等四个方向。运动矢量差的幅值信息可以采用截断一元码进行编码,即通过截断一元码表示5类步长配置。
又例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4-pel,1/2-pel,1-pel,2-pel,3-pel,4-pel等6类步长配置时,运动矢量差的方向信息可以采用2bin定长码(共4类值)进行编码,运动矢量差的幅值信息可以采用截断一元码进行编码。
又例如,运动矢量差支持上,下,左,右,左上,左下,右上,右下等八个方向,运动矢量差支持1/4-pel,1/2-pel,1-pel等3类步长配置时,运动矢量差的方向信息可以采用3bin定长码(共8类值)进行编码,运动矢量差的幅值信息可以采用截断一元码进行编码。
又例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4-pel,1/2-pel,1-pel,2-pel等4类步长配置时,基于此,运动矢量差的方向信息可以采用截断一元码进行编码,运动矢量差的幅值信息可以采用2bin定长码(共4类值)进行编码。
当然,上述只是编码方式的几个示例,对此编码方式不做限制。
综上所述,针对编码端来说,可以在一定区域内搜索到最佳运动矢量,而后将最佳运动矢量与候选运动矢量的差值,作为运动矢量差(MVD),将运动矢量差的幅值信息和方向信息编入码流,并将候选运动矢量在运动信息候选列表中的索引值编入码流。编码端在一定区域内搜索最佳运动矢量时,需要约定运动矢量差的方向以及幅值,即,在(A,0),(0,-A),(-A,0),(0,A),(A,A),(-A,A),(-A,-A),(A,-A)等运动矢量差的限定范围内,搜索最佳运动矢量,而不是在任意运动矢量差的范围搜索最佳运动矢量。
针对解码端来说,在接收到当前块的编码比特流后,可以从编码比特流中解析出候选运动矢量在运动信息候选列表中的索引值,并从运动信息候选列表中选择与该索引值对应的候选运动矢量,将该候选运动矢量作为当前块的原始运动矢量。解码端还可以从该编码比特流中解析出运动矢量差的方向信息和幅值信息,并根据该方向信息和幅值信息确定运动矢量差。
然后,解码端可以根据该运动矢量差和该原始运动矢量确定当前块的目标运动矢量,比如说,该运动矢量差与该原始运动矢量的和,可以作为当前块的目标运动矢量。
示例性的,参见上述实施例,在根据方向信息和幅值信息确定运动矢量差时,若方向信息表示方向为右,幅值信息表示幅值为A,则运动矢量差为(A,0);若方向信息表示方向为下,幅值信息表示幅值为A,则运动矢量差为(0,-A);若方向信息表示方向为左,幅值信息表示幅值为A,则运动矢量差为(-A,0);若方向信息表示方向为上,幅值信息表示幅值为A,则运动矢量差为(0,A);若方向信息表示方向为右上,幅值信息表示幅值为A,则运动矢量差为(A,A);若方向信息表示方向为左上,幅值信息表示幅值为A,则运动矢量差为(-A,A);若方向信息表示方向为左下,幅值信息表示幅值为A,则运动矢量差为(-A,-A);若方向信息表示方向为右下,幅值信息表示幅值为A,则运动矢量差为(A,-A)。
参见上述实施例,编码端在对运动矢量差的方向信息进行编码时,可以采用定长码,截断一元码等方式,因此,解码端可以采用定长码,截断一元码等方式,对运动矢量差的方向信息进解码,得到运动矢量差的方向信息,如上,下,左,右,左上,左下,右上,右下等。
参见上述实施例,编码端在对运动矢量差的幅值信息进行编码时,可以采用定长码,截断一元码等方式,因此,解码端可以采用定长码,截断一元码等方式,对运动矢量差的幅值信息进解码,得到运动矢量差的幅值信息,如1/4-pel,1/2-pel,1-pel,2-pel等步长配置,继而根据1/4-pel,1/2-pel,1-pel,2-pel等步长配置确定出运动矢量差的幅值A的取值。
综上所述,解码端可以从编码比特流中解析中运动矢量差的方向信息和幅值信息,在解析出方向信息和幅值信息后,就可以根据方向信息和幅值信息确定运动矢量差。
在一种可能的实施方式中,编码端还可以在编码比特流中编码增强角度加权预测模式的子模式标志,该子模式标志指示对原始运动矢量叠加运动矢量差,或者对原始运动矢量不叠加运动矢量差。解码端在接收到当前块的编码比特流后,先从当前块的编码比特流中解析出增强角度加权预测模式的子模式标志。若该子模式标志指示对原始运动矢量叠加运动矢量差,则解码端从当前块的编码比特流中解析出运动矢量差的方向信息和幅值信息,并根据该方向信息和该幅值信息确定运动矢量差,并根据原始运动矢量和运动矢量差确定当前块的目标运动矢量。若该子模式标志指示对原始运动矢量不叠加运动矢量差,则解码端不会解析运动矢量差的方向信息和幅值信息,直接将原始运动矢量作为当前块的目标运动矢量。
示例性的,当增强角度加权预测模式的子模式标志为第一取值时,指示对原始运动矢量叠加运动矢量差,当增强角度加权预测模式的子模式标志为第二取值时,表示对原始运动矢量不叠加运动矢量差。第一取值和第二取值可以根据经验配置,如第一取值为1,第二取值为0,或者,如第一取值为0,第二取值为1,当然,上述只是两个示例,对此不做限制。
在一种可能的实施方式中,针对实施例15的情况1或情况2,第一原始运动信息包括第一原始运动矢量,第一目标运动信息包括第一目标运动矢量,第二原始运动信息包括第二原始运动矢量,第二目标运动信息包括第二目标运动矢量,基于此,可以获取与第一原始运动矢量对应的第一运动矢量差,并根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量,即第一运动矢量差与第一原始运动矢量的和作为第一目标运动矢量。可以获取与第二原始运动矢量对应的第二运动矢量差,并根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量,即第二运动矢量差与第二原始运动矢量的和作为第二目标运动矢量。
针对编码端来说,可以采用率失真原则确定与第一原始运动矢量对应的第一运动矢量差,以及,与第二原始运动矢量对应的第二运动矢量差,对此确定过程不再赘述。
编码端在向解码端发送当前块的编码比特流时,编码比特流可以携带第一运动矢量差的方向信息和幅值信息,以及,第二运动矢量差的方向信息和幅值信息。
针对解码端来说,在接收到当前块的编码比特流后,解码端可以从该编码比特流中解析出第一运动矢量差的方向信息和幅值信息,并根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差。可以从该编码比特流中解析出第二运动矢量差的方向信息和幅值信息,并根据第二运动矢量差的方向信息和幅值信息确定第二运动矢量差。
然后,解码端可以根据第一运动矢量差和第一原始运动矢量确定当前块的第一目标运动矢量,并根据第二运动矢量差和第二原始运动矢量确定当前块的第二目标运动矢量。
在一种可能的实施方式中,编码端还可以在编码比特流中编码增强角度加权预测模式的第一子模式标志和第二子模式标志,第一子模式标志指示对第一原始运动矢量叠加运动矢量差,或者对第一原始运动矢量不叠加运动矢量差。第二子模式标志指示对第二原始运动矢量叠加运动矢量差,或者对第二原始运动矢量不叠加运动矢量差。
解码端在接收到当前块的编码比特流后,可以先从当前块的编码比特流中解析出增强角度加权预测模式的第一子模式标志和第二子模式标志。若第一子模式标志指示对第一原始运动矢量叠加运动矢量差,则从当前块的编码比特流中解析出第一运动矢量差的方向信息和幅值信息,并根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差,继而根据第一原始运动矢量和第一运动矢量差确定当前块的第一目标运动矢量。若第一子模式标志指示对第一原始运动矢量不叠加运动矢量差,则不会解析第一运动矢量差的方向信息和幅值信息,可以直接将第一原始运动矢量作为当前块的第一目标运动矢量。若第二子模式标志指示对第二原始运动矢量叠加运动矢量差,则从当前块的编码比特流中解析出第二运动矢量差的方向信息和幅值信息,并根据第二运动矢量差的方向信息和幅值信息确定第二运动矢量差,继而根据第二原始运动矢量和第二运动矢量差确定当前块的第二目标运动矢量。若第二子模式标志指示对第二原始运动矢量不叠加运动矢量差,则不会解析第二运动矢量差的方向信息和幅值信息,可以直接将第二原始运动矢量作为当前块的第二目标运动矢量。
实施例17:在实施例15的基础上,针对编码端来说,可以在一定区域内搜索到最佳运动矢量,而后将最佳运动矢量与候选运动矢量的差值,作为运动矢量差(MVD),将运动矢量差的信息编入码流,并将候选运动矢量在运动信息候选列表中的索引值编入码流。
编码端在一定区域内搜索最佳运动矢量时,可以任意搜索,对此不做限制。例如,针对运动信息候选列表中的每个候选运动矢量,以该候选运动矢量为中心搜索出若干个边缘运动矢量,确定每个边缘运动矢量对应的率失真代价值,并从所有率失真代价值中选择最小的率失真代价值,将最小的率失真代价值对应的边缘运动矢量作为最佳运动矢量。
假设最佳运动矢量是基于候选运动矢量1搜索出的,则候选运动矢量1可以作为当前块的原始运动矢量,且最佳运动矢量与候选运动矢量1的差值,作为运动矢量差。
编码端可以在当前块的编码比特流中编码如下内容:候选运动矢量1在运动信息候选列表中的索引值。运动矢量差的信息,运动矢量差的信息可以包括但不限于水平分量差的信息和/或垂直分量差的信息。其中,水平分量差的信息可以包括水平分量差绝对值和/或水平分量差符号值,垂直分量差的信息可以包括垂直分量差绝对值和/或垂直分量差符号值。
针对解码端来说,在接收到当前块的编码比特流后,可以从编码比特流中解析出候选运动矢量在运动信息候选列表中的索引值,并从运动信息候选列表中选择与该索引值对应的候选运动矢量,将该候选运动矢量作为当前块的原始运动矢量。解码端还可以从该当前块的编码比特流中解析出运动矢量差的水平分量差的信息和垂直分量差的信息,并根据运动矢量差的水平分量差的信息(如水平分量差绝对值和/或水平分量差符号值)和垂直分量差的信息(如垂直分量差绝对值和/或垂直分量差符号值)确定该运动矢量差。
然后,解码端可以根据该运动矢量差和该原始运动矢量确定当前块的目标运动矢量,比如说,解码端可以将该运动矢量差与该原始运动矢量的和,作为当前块的目标运动矢量。
示例性的,解码端可以根据水平分量差绝对值和水平分量差符号值,确定水平分量差,并根据垂直分量差绝对值和垂直分量差符号值,确定垂直分量差,而水平分量差与垂直分量差的组合,就是运动矢量差,即运动矢量差包括该水平分量差和该垂直分量差。
在一种可能的实施方式中,编码端还可以在编码比特流中编码增强角度加权预测模式的子模式标志,该子模式标志指示对原始运动矢量叠加运动矢量差,或者对原始运动矢量不叠加运动矢量差。解码端在接收到当前块的编码比特流后,从编码比特流中解析出增强角度加权预测模式的子模式标志。若该子模式标志指示对原始运动矢量叠加运动矢量差,则从编码比特流中解析出运动矢量差的水平分量差的信息和垂直分量差的信息,并根据水平分量差的信息和垂直分量差的信息确定运动矢量差,根据原始运动矢量和运动矢量差确定当前块的目标运动矢量。若该子模式标志指示对原始运动矢量不叠加运动矢量差,则不会解析运动矢量差的水平分量差的信息和垂直分量差的信息,将原始运动矢量作为当前块的目标运动矢量。
在一种可能的实施方式中,针对实施例15的情况1或情况2,第一原始运动信息包括第一原始运动矢量,第一目标运动信息包括第一目标运动矢量,第二原始运动信息包括第二原始运动矢量,第二目标运动信息包括第二目标运动矢量,基于此,可以获取与第一原始运动矢量对应的第一运动矢量差,并根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量,即第一运动矢量差与第一原始运动矢量的和作为第一目标运动矢量。可以获取与第二原始运动矢量对应的第二运动矢量差,并根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量,即第二运动矢量差与第二原始运动矢量的和作为第二目标运动矢量。
针对编码端来说,当前块的编码比特流可以携带第一运动矢量差的水平分量差的信息(如水平分量差绝对值和/或水平分量差符号值)和垂直分量差的信息(如垂直分量差绝对值和/或垂直分量差符号值),以及,第二运动矢量差的水平分量差的信息和垂直分量差的信息。
针对解码端来说,在接收到当前块的编码比特流后,可以从该编码比特流中解析出第一运动矢量差的水平分量差的信息和垂直分量差的信息,并根据第一运动矢量差的水平分量差的信息和垂直分量差的信息确定第一运动矢量差。可以从该编码比特流中解析出第二运动矢量差的水平分量差的信息和垂直分量差的信息,并根据第二运动矢量差的水平分量差的信息和垂直分量差的信息确定第二运动矢量差。根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量,并根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量。
在一种可能的实施方式中,编码端还可以在编码比特流中编码增强角度加权预测模式的第一子模式标志和第二子模式标志,第一子模式标志可以指示对第一原始运动矢量叠加运动矢量差,或者对第一原始运动矢量不叠加运动矢量差。第二子模式标志可以指示对第二原始运动矢量叠加运动矢量差,或者对第二原始运动矢量不叠加运动矢量差。
解码端在接收到当前块的编码比特流后,可以先从当前块的编码比特流中解析出增强角度加权预测模式的第一子模式标志和第二子模式标志。若第一子模式标志指示对第一原始运动矢量叠加运动矢量差,则从当前块的编码比特流中解析出第一运动矢量差的水平分量差的信息和垂直分量差的信息,并根据第一运动矢量差的水平分量差的信息和垂直分量差的信息确定第一运动矢量差,继而根据第一原始运动矢量和第一运动矢量差确定当前块的第一目标运动矢量。若第一子模式标志指示对第一原始运动矢量不叠加运动矢量差,则不会解析第一运动矢量差的水平分量差的信息和垂直分量差的信息,可以直接将第一原始运动矢量作为当前块的第一目标运动矢量。若第二子模式标志指示对第二原始运动矢量叠加运动矢量差,则从当前块的编码比特流中解析出第二运动矢量差的水平分量差的信息和垂直分量差的信息,并根据第二运动矢量差的水平分量差的信息和垂直分量差的信息确定第二运动矢量差,继而根据第二原始运动矢量和第二运动矢量差确定当前块的第二目标运动矢量。若第二子模式标志指示对第二原始运动矢量不叠加运动矢量差,则不会解析第二运动矢量差的水平分量差的信息和垂直分量差的信息,可以直接将第二原始运动矢量作为当前块的第二目标运动矢量。
实施例18:在实施例15-17的基础上,针对两个运动矢量差的情况,以下结合几个具体应用场景,对单向运动信息叠加运动矢量差EAWP的相关语法进行说明:
应用场景1:参见表4所示,为相关语法的示例,SkipFlag表示当前块是否为Skip模式,DirectFlag表示当前块是否为Direct模式,AwpFlag表示当前块是否为AWP模式。
awp_idx(角度加权预测模式索引):跳过模式或直接模式下的角度加权预测模式索引值,AwpIdx(AwpIdx的定义参见实施例10)的值,可以等于awp_idx的值。
如果码流中不存在awp_idx,则AwpIdx的值等于0。
awp_cand_idx0(角度加权预测模式的第一运动信息索引):跳过模式或直接模式下的角度加权预测模式的第一运动信息索引值。AwpCandIdx0(相关定义参见实施例14)的值等于awp_cand_idx0的值,如果码流中不存在awp_cand_idx0,则AwpCandIdx0的值等于0。
awp_cand_idx1(角度加权预测模式第二运动信息索引):跳过模式或直接模式下的角度加权预测模式的第二运动信息索引值。AwpCandIdx1(相关定义参见实施例14)的值等于awp_cand_idx1的值,如果码流中不存在awp_cand_idx1,则AwpCandIdx1的值等于0。
awp_mvd_flag(增强角度加权预测模式标志),是一个二值变量,awp_mvd_flag为第一取值(如1)时,表示当前块为增强角度加权预测模式,awp_mvd_flag为第二取值(如0)时,表示当前块为非增强角度加权预测模式。示例性的,AwpMvdFlag的取值,可以等于awp_mvd_flag的值,如果码流中不存在awp_mvd_flag,则AwpMvdFlag的值等于0。
awp_mvd_sub_flag0(增强角度加权预测模式第一子模式标志),可以是一个二值变量,awp_mvd_sub_flag0为第一取值时,可以表示角度加权预测模式的第一运动信息需要叠加运动信息差;awp_mvd_sub_flag0为第二取值时,可以表示角度加权预测模式的第一运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag0的值可以等于awp_mvd_sub_flag0的值,如果码流中不存在awp_mvd_sub_flag0,则AwpMvdSubFlag0的值等于0。
awp_mvd_sub_flag1(增强角度加权预测模式第二子模式标志),可以是一个二值变量,awp_mvd_sub_flag1为第一取值时,可以表示角度加权预测模式的第二运动信息需要叠加运动信息差;awp_mvd_sub_flag1为第二取值时,可以表示角度加权预测模式的第二运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag1的值可以等于awp_mvd_sub_flag1的值,如果码流中不存在awp_mvd_sub_flag1,则还可以存在以下情况:若AwpMvdFlag等于1,那么,AwpMvdSubFlag1的值等于1,否则,AwpMvdSubFlag1的值可以等于0。
awp_mvd_dir0(第一运动信息运动矢量差方向索引值),角度加权预测模式第一运动信息的运动矢量差方向索引值。示例性的,AwpMvdDir0的值可以等于awp_mvd_dir0的值,如果码流中不存在awp_mvd_dir0,则AwpMvdDir0的值可以等于0。
awp_mvd_step0(第一运动信息运动矢量差步长索引值),角度加权预测模式第一运动信息的运动矢量差步长索引值。示例性的,AwpMvdStep0的值可以等于awp_mvd_step0的值,如果码流中不存在awp_mvd_step0,则AwpMvdStep0的值可以等于0。
awp_mvd_dir1(第二运动信息运动矢量差方向索引值),角度加权预测模式第二运动信息的运动矢量差方向索引值。示例性的,AwpMvdIdx1的值可以等于awp_mvd_dir1的值。如果码流中不存在awp_mvd_dir1,则AwpMvdDir1的值可以等于0。
awp_mvd_step1(第二运动信息运动矢量差步长索引值),角度加权预测模式第二运动信息的运动矢量差步长索引值。示例性的,AwpMvdStep1的值可以等于awp_mvd_step1的值。如果码流中不存在awp_mvd_step1,则AwpMvdStep1的值可以等于0。
表4
Figure GDA0003896102870000611
Figure GDA0003896102870000621
应用场景2:参见表5所示,为相关语法的示例,SkipFlag表示当前块是否为Skip模式,DirectFlag表示当前块是否为Direct模式,AwpFlag表示当前块是否为AWP模式。
关于awp_idx,awp_cand_idx0和awp_cand_idx1,可以参见应用场景1,在此不再赘述。
awp_mvd_sub_flag0(增强角度加权预测模式第一子模式标志),可以是一个二值变量,awp_mvd_sub_flag0为第一取值时,可以表示角度加权预测模式的第一运动信息需要叠加运动信息差;awp_mvd_sub_flag0为第二取值时,可以表示角度加权预测模式的第一运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag0的值可以等于awp_mvd_sub_flag0的值,如果码流中不存在awp_mvd_sub_flag0,则AwpMvdSubFlag0的值等于0。
awp_mvd_sub_flag1(增强角度加权预测模式第二子模式标志),可以是一个二值变量,awp_mvd_sub_flag1为第一取值时,可以表示角度加权预测模式的第二运动信息需要叠加运动信息差;awp_mvd_sub_flag1为第二取值时,可以表示角度加权预测模式的第二运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag1的值可以等于awp_mvd_sub_flag1的值,如果码流中不存在awp_mvd_sub_flag1,则AwpMvdSubFlag1的值可以等于0。
关于awp_mvd_dir0,awp_mvd_step0,awp_mvd_dir1,awp_mvd_step1,参见应用场景1。
表5
Figure GDA0003896102870000622
示例性的,针对应用场景1和应用场景2,二者的区别在于:在应用场景1中,存在语法awp_mvd_flag,在应用场景2中,不存在语法awp_mvd_flag。在应用场景1中,可以通过awp_mvd_flag控制增强角度加权预测模式,即通过总开关控制增强角度加权预测模式。
示例性的,应用场景1和应用场景2,可以是针对实施例16的实现方式。
应用场景3:参见表6所示,为相关语法的示例,SkipFlag表示当前块是否为Skip模式,DirectFlag表示当前块是否为Direct模式,AwpFlag表示当前块是否为AWP模式。
awp_idx(角度加权预测模式索引):跳过模式或直接模式下的角度加权预测模式索引值,AwpIdx的值可以等于awp_idx的值。如果码流中不存在awp_idx,则AwpIdx的值等于0。
awp_cand_idx0(角度加权预测模式的第一运动信息索引):跳过模式或直接模式下的角度加权预测模式的第一运动信息索引值。AwpCandIdx0(相关定义参见实施例14)的值等于awp_cand_idx0的值,如果码流中不存在awp_cand_idx0,则AwpCandIdx0的值等于0。
awp_cand_idx1(角度加权预测模式第二运动信息索引):跳过模式或直接模式下的角度加权预测模式的第二运动信息索引值。AwpCandIdx1(相关定义参见实施例14)的值等于awp_cand_idx1的值,如果码流中不存在awp_cand_idx1,则AwpCandIdx1的值等于0。
awp_mvd_flag(增强角度加权预测模式标志),是一个二值变量,awp_mvd_flag为第一取值(如1)时,表示当前块为增强角度加权预测模式,awp_mvd_flag为第二取值(如0)时,表示当前块为非增强角度加权预测模式。示例性的,AwpMvdFlag的取值,可以等于awp_mvd_flag的值,如果码流中不存在awp_mvd_flag,则AwpMvdFlag的值等于0。
awp_mvd_sub_flag0(增强角度加权预测模式第一子模式标志),可以是一个二值变量,awp_mvd_sub_flag0为第一取值时,可以表示角度加权预测模式的第一运动信息需要叠加运动信息差;awp_mvd_sub_flag0为第二取值时,可以表示角度加权预测模式的第一运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag0的值可以等于awp_mvd_sub_flag0的值,如果码流中不存在awp_mvd_sub_flag0,则AwpMvdSubFlag0的值等于0。
awp_mvd_sub_flag1(增强角度加权预测模式第二子模式标志),可以是一个二值变量,awp_mvd_sub_flag1为第一取值时,可以表示角度加权预测模式的第二运动信息需要叠加运动信息差;awp_mvd_sub_flag1为第二取值时,可以表示角度加权预测模式的第二运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag1的值可以等于awp_mvd_sub_flag1的值,如果码流中不存在awp_mvd_sub_flag1,则还可以存在以下情况:若AwpMvdFlag等于1,那么,AwpMvdSubFlag0的值等于1,否则,AwpMvdSubFlag0的值可以等于0。
示例性的,awp_mv_diff_x_abs0(角度加权预测模式第一运动矢量水平分量差绝对值)以及awp_mv_diff_y_abs0(角度加权预测模式第一运动矢量垂直分量差绝对值)是角度加权预测模式的第一运动矢量差值的绝对值,AwpMvDiffXAbs0等于awp_mv_diff_x_abs0的值,AwpMvDiffYAbs0等于awp_mv_diff_y_abs0的值。awp_mv_diff_x_sign0(角度加权预测模式第一运动矢量水平分量差符号值)和awp_mv_diff_y_sign0(角度加权预测模式第一运动矢量垂直分量差符号值)是角度加权预测模式的第一运动矢量差值的符号位,AwpMvDiffXSign0的值等于awp_mv_diff_x_sign0的值,AwpMvDiffYSign0的值等于awp_mv_diff_y_sign0。
在一种可能的实施方式中,如果码流不存在awp_mv_diff_x_sign0或awp_mv_diff_y_sign0,则AwpMvDiffXSign0或AwpMvDiffYSign0的值为0。如果AwpMvDiffXSign0的值为0,则AwpMvDiffX0等于AwpMvDiffXAbs0。如果AwpMvDiffXSign0的值为1,则AwpMvDiffX0可以等于-AwpMvDiffXAbs0。如果AwpMvDiffYSign0的值为0,则AwpMvDiffY0可以等于AwpMvDiffYAbs0;如果AwpMvDiffYSign0的值为1,则AwpMvDiffY0可以等于-AwpMvDiffYAbs0。AwpMvDiffX0和AwpMvDiffY0的取值范围是-32768~32767。
示例性的,awp_mv_diff_x_abs1(角度加权预测模式第二运动矢量水平分量差绝对值)以及awp_mv_diff_y_abs1(角度加权预测模式第二运动矢量垂直分量差绝对值)是角度加权预测模式的第二运动矢量差值的绝对值,AwpMvDiffXAbs1等于awp_mv_diff_x_abs1的值,AwpMvDiffYAbs1等于awp_mv_diff_y_abs1的值。awp_mv_diff_x_sign1(角度加权预测模式第二运动矢量水平分量差符号值)和awp_mv_diff_y_sign1(角度加权预测模式第二运动矢量垂直分量差符号值)是角度加权预测模式的第二运动矢量差值的符号位,AwpMvDiffXSign1的值等于awp_mv_diff_x_sign1的值,AwpMvDiffYSign1的值等于awp_mv_diff_y_sign1。
在一种可能的实施方式中,如果码流不存在awp_mv_diff_x_sign1或awp_mv_diff_y_sign1,则AwpMvDiffXSign1或AwpMvDiffYSign1的值为0。如果AwpMvDiffXSign1的值为0,则AwpMvDiffX1等于AwpMvDiffXAbs1。如果AwpMvDiffXSign1的值为1,则AwpMvDiffX1等于-AwpMvDiffXAbs1。如果AwpMvDiffYSign1的值为0,则AwpMvDiffY1可以等于AwpMvDiffYAbs1;如果AwpMvDiffYSign1的值为1,则AwpMvDiffY1可以等于-AwpMvDiffYAbs1。AwpMvDiffX1和AwpMvDiffY1的取值范围是-32768~32767。
表6
Figure GDA0003896102870000641
应用场景4:参见表7所示,为相关语法的示例,SkipFlag表示当前块是否为Skip模式,DirectFlag表示当前块是否为Direct模式,AwpFlag表示当前块是否为AWP模式。
关于awp_idx,awp_cand_idx0和awp_cand_idx1,可以参见应用场景1,在此不再赘述。
awp_mvd_sub_flag0(增强角度加权预测模式第一子模式标志),可以是一个二值变量,awp_mvd_sub_flag0为第一取值时,可以表示角度加权预测模式的第一运动信息需要叠加运动信息差;awp_mvd_sub_flag0为第二取值时,可以表示角度加权预测模式的第一运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag0的值可以等于awp_mvd_sub_flag0的值,如果码流中不存在awp_mvd_sub_flag0,则AwpMvdSubFlag0的值等于0。
awp_mvd_sub_flag1(增强角度加权预测模式第二子模式标志),可以是一个二值变量,awp_mvd_sub_flag1为第一取值时,可以表示角度加权预测模式的第二运动信息需要叠加运动信息差;awp_mvd_sub_flag1为第二取值时,可以表示角度加权预测模式的第二运动信息不需要叠加运动信息差。示例性的,AwpMvdSubFlag1的值可以等于awp_mvd_sub_flag1的值,如果码流中不存在awp_mvd_sub_flag1,则AwpMvdSubFlag1的值可以等于0。
示例性的,针对表7中的awp_mv_diff_x_abs0,awp_mv_diff_y_abs0,awp_mv_diff_x_sign0,awp_mv_diff_y_sign0,awp_mv_diff_x_abs1,awp_mv_diff_y_abs1,awp_mv_diff_x_sign1和awp_mv_diff_y_sign1等参数,可以参见参见应用场景3,在此不再重复赘述。
表7
Figure GDA0003896102870000651
示例性的,针对应用场景3和应用场景4,二者的区别在于:在应用场景3中,存在语法awp_mvd_flag,在应用场景4中,不存在语法awp_mvd_flag。在应用场景3中,可以通过awp_mvd_flag控制增强角度加权预测模式,即通过总开关控制增强角度加权预测模式。
示例性的,应用场景3和应用场景4,可以是针对实施例17的实现方式。
应用场景3/应用场景4与应用场景1/应用场景2的区别在于:在应用场景1/应用场景2中,采用若干优选MVD,在应用场景3/应用场景4中,允许在一定搜索范围内的所有MVD,例如,可以采用应用场景5的方式,在一定搜索范围搜索所有的MVD。
应用场景5:参见表8所示,为相关语法的示例,表8示出了一种MVD的编码方式。从表8可以看出,可以采用如下步骤实现MVD的编码,当然,这里只是一个示例。
1、判断|MVD_X|是否大于0,|...|为绝对值符号,MVD_X表示MVD的横向分量。
2、判断|MVD_Y|是否大于0,|...|为绝对值符号,MVD_Y表示MVD的纵向分量。
3、如果|MVD_X|大于0,判断|MVD_X|是否大于1。
4、如果|MVD_Y|大于0,判断|MVD_Y|是否大于1。
5、如果|MVD_X|大于1,编码|MVD_X|-2。
6、如果|MVD_X|大于0,编码MVD_X的符号位。
7、如果|MVD_Y|大于1,编码|MVD_Y|-2。
8、如果|MVD_Y|大于0,编码MVD_Y的符号位。
表8
Figure GDA0003896102870000661
应用场景6:可以对上述应用场景1-应用场景4进行衍生,将AWP与EAWP模式完全融合,即对跨度增加0跨度,从而不需要编码是否使能的标志位。例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持如下6类步长配置:0-pel,1/4-pel,1/2-pel,1-pel,2-pel,4-pel,即增加了一个步长配置0-pel。在此基础上,表4/表5可以更新为表9,表6/表7可以更新为表10,表9和表10中相关语法的含义,可以参见表4和表6,在此不再赘述。
表9
Figure GDA0003896102870000662
/>
Figure GDA0003896102870000671
表10
Figure GDA0003896102870000672
应用场景7:上述实施例中涉及AWP模式,DAWP模式和EAWP模式,可以通过高层语法控制这些模式的开启或关闭。例如,通过高层语法1控制AWP模式的开启或关闭。又例如,通过高层语法2控制DAWP模式的开启或关闭。又例如,通过高层语法3控制EAWP模式的开启或关闭。又例如,通过高层语法4控制AWP模式和DAWP模式同时开启,或者,控制AWP模式和DAWP模式同时关闭。又例如,通过高层语法5控制AWP模式和EAWP模式同时开启,或者,控制AWP模式和EAWP模式同时关闭。又例如,通过高层语法6控制DAWP模式和EAWP模式同时开启,或者,控制DAWP模式和EAWP模式同时关闭。又例如,通过高层语法7控制AWP模式,DAWP模式和EAWP模式同时开启,或者,控制AWP模式,DAWP模式和EAWP模式同时关闭。当然,上述只是几个示例,对此不做限制。
在上述实施例中,高层语法可以是序列参数集级的高层语法,或图像参数集级的高层语法,或片头级的高层语法,或图像头级的高层语法,对此高层语法不做限制。例如,基于序列参数集级的高层语法,可以通过sps_awp_enable_flag,sh_awp_enable_flag,awp_enable_flag等,控制AWP模式的开启或关闭,或者,控制DAWP模式的开启或关闭,或者,控制EAWP模式的开启或关闭,或者,控制多个模式同时开始或者同时关闭,对此不做限制。
示例性的,在上述实施例中,可以根据原始运动信息获取目标运动信息,在得到目标运动信息后,还可以存储当前块的目标运动信息,对此存储方式不做限制。
示例性的,上述实施例1-实施例18可以单独实现,也可以组合实现。例如,实施例1和实施例2可以组合实现;实施例1和实施例3可以组合实现;实施例1,实施例2和实施例3可以组合实现;实施例1和实施例4可以组合实现;实施例1和实施例5可以组合实现;实施例1,实施例4和实施例5可以组合实现。实施例6可以和实施例1-5中的一个或者多个组合实现;实施例7(或实施例8,或实施例9)可以与实施例2(或实施例3)组合实现;实施例7(或实施例8,或实施例9)可以与实施例4(或实施例5)组合实现。实施例10可以与实施例2(或实施例3)组合实现;实施例11(或实施例12)可以与实施例4(或实施例5)组合实现。实施例7(或实施例8,或实施例9)可以与实施例2(或实施例3)组合实现。实施例13至实施例18的任意一个或者多个实施例,可以与实施例1-实施例12的任意一个或者多个实施例,可以进行组合实现等。当然,上述只是几个示例,对此实施例之间的组合方式不做限制。
实施例19:基于与上述方法同样的申请构思,本申请实施例还提出一种编解码装置,所述装置应用于编码端或者解码端,参见图8A所示,为所述装置的结构图,包括:获取模块811,用于在确定对当前块启动加权预测时,针对所述当前块包括的至少一个子块中的每个子块,获取所述子块的权重预测角度;第一确定模块812,用于针对所述子块的每个像素位置,根据所述子块的权重预测角度从所述子块外部的周边位置中确定所述像素位置指向的周边匹配位置;第二确定模块813,用于根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;第三确定模块814,用于针对所述子块的每个像素位置,根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;编解码模块815,用于根据每个子块的所有像素位置的加权预测值确定当前块的加权预测值。
所述第二确定模块813还用于:为所述子块外部的周边位置配置参考权重值;其中,所述子块外部的周边位置的参考权重值是预先配置或者根据权重配置参数配置的;所述权重配置参数包括权重变换率和权重变换的起始位置。示例性的,所述权重变换的起始位置由如下参数的至少一个确定:所述子块的权重预测角度,所述子块的权重预测位置,所述子块的尺寸。在当前块包括至少两个子块时,所述至少两个子块的权重预测位置均相同。
示例性的,所述子块外部的周边位置的数量是基于所述子块的尺寸和/或所述子块的权重预测角度确定;所述子块外部的周边位置的参考权重值单调递增或者单调递减。
示例性的,所述子块外部的周边位置的参考权重值包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值;其中:第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值单调递增;或者,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值单调递减;或者,第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,所述第二参考权重值与所述第三参考权重值不同;或者,第一邻近区域的参考权重值单调递增,第二邻近区域的参考权重值单调递增;或者,第一邻近区域的参考权重值单调递减,第二邻近区域的参考权重值单调递减。
所述目标区域包括一个参考权重值或至少两个参考权重值;若所述目标区域包括至少两个参考权重值,则所述目标区域的至少两个参考权重值单调递增或单调递减。
示例性的,所述子块外部的周边位置的参考权重值包括第一目标区域的参考权重值,第二目标区域的参考权重值,只与第一目标区域相邻的第一邻近区域的参考权重值,与第一目标区域和第二目标区域均相邻的第二邻近区域的参考权重值,只与第二目标区域相邻的第三邻近区域的参考权重值;第一邻近区域的参考权重值均为第一参考权重值;第二邻近区域的参考权重值均为第二参考权重值;第三邻近区域的参考权重值均为第三参考权重值;所述第一参考权重值与第三参考权重值相同,所述第一参考权重值与第二参考权重值不同。
若所述第一目标区域包括至少两个参考权重值,则所述第一目标区域的至少两个参考权重值单调递增或者单调递减;若所述第二目标区域包括至少两个参考权重值,则所述第二目标区域的至少两个参考权重值单调递减或者单调递增。
在所述当前块包括至少两个子块时,相邻两个子块的权重预测角度不同。
所述获取模块811具体用于:针对相邻的第一子块和第二子块,在得到所述第一子块的权重预测角度后,对所述第一子块的权重预测角度进行偏移,得到所述第二子块的权重预测角度;所述第二子块的权重预测角度是所述第一子块的权重预测角度周围的权重预测角度。
第二确定模块813具体用于:若所述周边匹配位置是整像素位置,且所述整像素位置已设置参考权重值,则根据所述整像素位置的参考权重值确定所述像素位置的目标权重值;或者,若所述周边匹配位置是亚像素位置,且所述亚像素位置已设置参考权重值,则根据所述亚像素位置的参考权重值确定所述像素位置的目标权重值;或者,根据所述周边匹配位置关联的多个参考权重值确定所述像素位置的目标权重值。
若所述第一预测模式为帧间预测模式,所述第三确定模块814根据所述当前块的第一预测模式确定所述像素位置的第一预测值时具体用于:构建运动信息候选列表,所述运动信息候选列表中包括至少一个候选运动信息;从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的原始运动信息;根据所述原始运动信息确定所述当前块的目标运动信息;根据所述目标运动信息确定所述像素位置的第一预测值。
所述原始运动信息包括原始运动矢量,所述目标运动信息包括目标运动矢量,所述第三确定模块814根据所述原始运动信息确定所述当前块的目标运动信息时具体用于:获取与所述原始运动矢量对应的运动矢量差;根据所述运动矢量差和所述原始运动矢量,确定所述目标运动矢量。若所述方法应用于解码端,则:所述第三确定模块814获取与所述原始运动矢量对应的运动矢量差时具体用于:从所述当前块的编码比特流中解析出所述运动矢量差的方向信息和幅值信息;根据所述运动矢量差的方向信息和幅值信息确定所述运动矢量差。
所述第三确定模块814从所述当前块的编码比特流中解析出所述运动矢量差的方向信息和幅值信息时具体用于:从所述当前块的编码比特流中解析出增强角度加权预测模式的子模式标志;若所述子模式标志指示对所述原始运动矢量叠加运动矢量差,则从所述当前块的编码比特流中解析出所述运动矢量差的方向信息和幅值信息。
若所述方法应用于解码端,则:所述第三确定模块814获取与所述原始运动矢量对应的运动矢量差时具体用于:从当前块的编码比特流中解析出运动矢量差的水平分量差的信息和垂直分量差的信息;根据所述运动矢量差的水平分量差的信息和垂直分量差的信息确定所述运动矢量差。所述第三确定模块814从当前块的编码比特流中解析出运动矢量差的水平分量差的信息和垂直分量差的信息时具体用于:从所述当前块的编码比特流中解析出增强角度加权预测模式的子模式标志;若所述子模式标志指示对所述原始运动矢量叠加运动矢量差,则从当前块的编码比特流中解析出运动矢量差的水平分量差的信息和垂直分量差的信息。
基于与上述方法同样的申请构思,本申请实施例提供的解码端设备(也可以称为视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图8B所示。包括:处理器821和机器可读存储介质822,其中:所述机器可读存储介质822存储有能够被所述处理器821执行的机器可执行指令;所述处理器821用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器821用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,针对所述当前块包括的至少一个子块中的每个子块,获取所述子块的权重预测角度;针对所述子块的每个像素位置,根据所述子块的权重预测角度从所述子块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
针对所述子块的每个像素位置,根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据每个子块的所有像素位置的加权预测值确定所述当前块的加权预测值。
基于与上述方法同样的申请构思,本申请实施例提供的编码端设备(也可以称为视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图8C所示。包括:处理器831和机器可读存储介质832,其中:所述机器可读存储介质832存储有能够被所述处理器831执行的机器可执行指令;所述处理器831用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,所述处理器931用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,针对所述当前块包括的至少一个子块中的每个子块,获取所述子块的权重预测角度;针对所述子块的每个像素位置,根据所述子块的权重预测角度从所述子块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
针对所述子块的每个像素位置,根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;根据所述当前块的第一预测模式确定所述像素位置的第一预测值,根据所述当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据每个子块的所有像素位置的加权预测值确定所述当前块的加权预测值。
基于与上述方法同样的申请构思,本申请实施例中还提供一种摄像机设备,该摄像机设备可以包括上述任一实施例中的编解码装置,且该摄像机设备可以采用上述流程进行处理。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法,如上述各实施例中的编解码方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (22)

1.一种解码方法,其特征在于,在确定对当前块启动加权预测时,所述方法包括:
获取所述当前块的权重预测角度;
针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
针对所述当前块的每个像素位置,根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值;
其中,所述第一预测模式为帧间预测模式,所述第二预测模式为帧间预测模式,所述方法还包括:构建运动信息候选列表,所述运动信息候选列表中包括至少两个候选运动信息;
其中,所述根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值,包括:
从所述当前块的编码比特流中解析出第一标志信息,若所述第一标志信息指示对第一原始运动矢量叠加运动矢量差,则从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的第一原始运动信息;根据所述第一原始运动信息确定所述当前块的第一目标运动信息;根据所述第一目标运动信息确定所述像素位置的所述第一预测值;
从所述当前块的编码比特流中解析出第二标志信息,若所述第二标志信息指示对第二原始运动矢量叠加运动矢量差,则从所述运动信息候选列表中选择另一个候选运动信息作为所述当前块的第二原始运动信息;根据所述第二原始运动信息确定所述当前块的第二目标运动信息;根据所述第二目标运动信息确定所述像素位置的所述第二预测值。
2.根据权利要求1所述的方法,其特征在于,
所述第一原始运动信息包括第一原始运动矢量,所述第一目标运动信息包括第一目标运动矢量,所述根据所述第一原始运动信息确定所述当前块的第一目标运动信息,包括:获取与所述第一原始运动矢量对应的运动矢量差;根据所述第一原始运动矢量对应的运动矢量差和所述第一原始运动矢量,确定所述第一目标运动矢量;
所述第二原始运动信息包括第二原始运动矢量,所述第二目标运动信息包括第二目标运动矢量,所述根据所述第二原始运动信息确定所述当前块的第二目标运动信息,包括:获取与所述第二原始运动矢量对应的运动矢量差;根据所述第二原始运动矢量对应的运动矢量差和所述第二原始运动矢量,确定所述第二目标运动矢量。
3.根据权利要求2所述的方法,其特征在于,
所述获取与所述第一原始运动矢量对应的运动矢量差,包括:从所述当前块的编码比特流中解析出所述第一原始运动矢量对应的运动矢量差的方向信息和幅值信息;根据该方向信息和该幅值信息确定所述第一原始运动矢量对应的运动矢量差;
所述获取与所述第二原始运动矢量对应的运动矢量差,包括:从所述当前块的编码比特流中解析出所述第二原始运动矢量对应的运动矢量差的方向信息和幅值信息;根据该方向信息和该幅值信息确定所述第二原始运动矢量对应的运动矢量差。
4.根据权利要求3所述的方法,其特征在于,
若方向信息表示方向为右,幅值信息表示幅值为Ar,则运动矢量差为(Ar,0);
若方向信息表示方向为下,幅值信息表示幅值为Ad,则运动矢量差为(0,-Ad);
若方向信息表示方向为左,幅值信息表示幅值为Al,则运动矢量差为(-Al,0);
若方向信息表示方向为上,幅值信息表示幅值为Au,则运动矢量差为(0,Au)。
5.根据权利要求1所述的方法,其特征在于,所述根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值,包括:
从所述当前块的编码比特流中解析出第一标志信息,若所述第一标志信息指示不对第一原始运动矢量叠加运动矢量差,则从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的第一目标运动信息;根据所述第一目标运动信息确定所述像素位置的所述第一预测值;
从所述当前块的编码比特流中解析出第二标志信息,若所述第二标志信息指示不对第二原始运动矢量叠加运动矢量差,则从所述运动信息候选列表中选择另一个候选运动信息作为所述当前块的第二目标运动信息;根据所述第二目标运动信息确定所述像素位置的所述第二预测值。
6.根据权利要求1所述的方法,其特征在于,
所述根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值之前,所述方法还包括:为所述当前块外部的周边位置配置参考权重值;
其中,所述当前块外部的周边位置的参考权重值是根据权重配置参数配置的;
所述权重配置参数包括权重变换率和权重变换的起始位置;
其中,所述权重变换的起始位置由如下参数的至少一个确定:
所述当前块的权重预测角度,所述当前块的权重预测位置,所述当前块的尺寸。
7.根据权利要求6所述的方法,其特征在于,所述当前块外部的周边位置包括:所述当前块外部上侧一行的周边位置,或者,所述当前块外部左侧一列的周边位置;所述当前块外部的周边位置的数量是基于所述当前块的尺寸和/或所述当前块的权重预测角度确定;
所述当前块外部的周边位置的参考权重值单调递增或者单调递减。
8.根据权利要求6所述的方法,其特征在于,
所述当前块外部的周边位置的参考权重值包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值;其中:
第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,所述第二参考权重值与所述第三参考权重值不同;
其中,所述目标区域包括一个参考权重值或至少两个参考权重值;若所述目标区域包括至少两个参考权重值,则所述目标区域的至少两个参考权重值单调递增或单调递减。
9.根据权利要求1-8任一所述的方法,其特征在于,
所述当前块的权重预测角度为水平角度;或者,
所述当前块的权重预测角度为垂直角度;或者,
所述当前块的权重预测角度的斜率的绝对值为2的n次方,n为整数。
10.根据权利要求1-8任一所述的方法,其特征在于,所述当前块外部的周边位置包括整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置;
所述根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,包括:
若所述周边匹配位置是整像素位置,且所述整像素位置已设置参考权重值,则根据所述整像素位置的参考权重值确定所述像素位置的目标权重值;或者,
若所述周边匹配位置是亚像素位置,且所述亚像素位置已设置参考权重值,则根据所述亚像素位置的参考权重值确定所述像素位置的目标权重值。
11.一种解码装置,其特征在于,应用于解码端,所述解码装置包括:
获取模块,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度;
第一确定模块,用于针对所述当前块的每个像素位置,根据所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;
第二确定模块,用于根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
第三确定模块,用于针对所述当前块的每个像素位置,根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
编解码模块,用于根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值;
其中,所述第一预测模式为帧间预测模式,所述第二预测模式为帧间预测模式,所述第三确定模块,还用于构建运动信息候选列表,所述运动信息候选列表中包括至少两个候选运动信息;其中,所述第三确定模块根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值时具体用于:
从所述当前块的编码比特流中解析出第一标志信息,若所述第一标志信息指示对第一原始运动矢量叠加运动矢量差,则从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的第一原始运动信息;根据所述第一原始运动信息确定所述当前块的第一目标运动信息;根据所述第一目标运动信息确定所述像素位置的所述第一预测值;
从所述当前块的编码比特流中解析出第二标志信息,若所述第二标志信息指示对第二原始运动矢量叠加运动矢量差,则从所述运动信息候选列表中选择另一个候选运动信息作为所述当前块的第二原始运动信息;根据所述第二原始运动信息确定所述当前块的第二目标运动信息;根据所述第二目标运动信息确定所述像素位置的所述第二预测值。
12.根据权利要求11所述的装置,其特征在于,
所述第一原始运动信息包括第一原始运动矢量,所述第一目标运动信息包括第一目标运动矢量,所述第三确定模块根据所述第一原始运动信息确定所述当前块的第一目标运动信息时具体用于:获取与所述第一原始运动矢量对应的运动矢量差;根据所述第一原始运动矢量对应的运动矢量差和所述第一原始运动矢量,确定所述第一目标运动矢量;
所述第二原始运动信息包括第二原始运动矢量,所述第二目标运动信息包括第二目标运动矢量,所述第三确定模块根据所述第二原始运动信息确定所述当前块的第二目标运动信息时具体用于:获取与所述第二原始运动矢量对应的运动矢量差;根据所述第二原始运动矢量对应的运动矢量差和所述第二原始运动矢量,确定所述第二目标运动矢量。
13.根据权利要求12所述的装置,其特征在于,
所述第三确定模块获取与所述第一原始运动矢量对应的运动矢量差时具体用于:从所述当前块的编码比特流中解析出所述第一原始运动矢量对应的运动矢量差的方向信息和幅值信息;根据该方向信息和该幅值信息确定所述第一原始运动矢量对应的运动矢量差;
所述第三确定模块获取与所述第二原始运动矢量对应的运动矢量差时具体用于:从所述当前块的编码比特流中解析出所述第二原始运动矢量对应的运动矢量差的方向信息和幅值信息;根据该方向信息和该幅值信息确定所述第二原始运动矢量对应的运动矢量差。
14.根据权利要求13所述的装置,其特征在于,
若方向信息表示方向为右,幅值信息表示幅值为Ar,则运动矢量差为(Ar,0);
若方向信息表示方向为下,幅值信息表示幅值为Ad,则运动矢量差为(0,-Ad);
若方向信息表示方向为左,幅值信息表示幅值为Al,则运动矢量差为(-Al,0);
若方向信息表示方向为上,幅值信息表示幅值为Au,则运动矢量差为(0,Au)。
15.根据权利要求11所述的装置,其特征在于,
所述第三确定模块根据当前块的第一预测模式确定所述像素位置的第一预测值,根据当前块的第二预测模式确定所述像素位置的第二预测值时具体用于:从所述当前块的编码比特流中解析出第一标志信息,若所述第一标志信息指示不对第一原始运动矢量叠加运动矢量差,则从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的第一目标运动信息;根据所述第一目标运动信息确定所述像素位置的所述第一预测值;从所述当前块的编码比特流中解析出第二标志信息,若所述第二标志信息指示不对第二原始运动矢量叠加运动矢量差,则从所述运动信息候选列表中选择另一个候选运动信息作为所述当前块的第二目标运动信息;根据所述第二目标运动信息确定所述像素位置的所述第二预测值。
16.根据权利要求11所述的装置,其特征在于,
所述第二确定模块还用于:为所述当前块外部的周边位置配置参考权重值;
其中,所述当前块外部的周边位置的参考权重值是根据权重配置参数配置的;
所述权重配置参数包括权重变换率和权重变换的起始位置;
其中,所述权重变换的起始位置由如下参数的至少一个确定:
所述当前块的权重预测角度,所述当前块的权重预测位置,所述当前块的尺寸。
17.根据权利要求16所述的装置,其特征在于,所述当前块外部的周边位置包括:所述当前块外部上侧一行的周边位置,或者,所述当前块外部左侧一列的周边位置;所述当前块外部的周边位置的数量是基于所述当前块的尺寸和/或所述当前块的权重预测角度确定;
所述当前块外部的周边位置的参考权重值单调递增或者单调递减。
18.根据权利要求16所述的装置,其特征在于,
所述当前块外部的周边位置的参考权重值包括目标区域的参考权重值,目标区域的第一邻近区域的参考权重值,目标区域的第二邻近区域的参考权重值;其中:
第一邻近区域的参考权重值均为第二参考权重值,第二邻近区域的参考权重值均为第三参考权重值,所述第二参考权重值与所述第三参考权重值不同;
其中,所述目标区域包括一个参考权重值或至少两个参考权重值;若所述目标区域包括至少两个参考权重值,则所述目标区域的至少两个参考权重值单调递增或单调递减。
19.根据权利要求11-18任一所述的装置,其特征在于,
所述当前块的权重预测角度为水平角度;或者,
所述当前块的权重预测角度为垂直角度;或者,
所述当前块的权重预测角度的斜率的绝对值为2的n次方,n为整数。
20.根据权利要求11-18任一所述的装置,其特征在于,所述当前块外部的周边位置包括整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置;
所述第二确定模块根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值时具体用于:若所述周边匹配位置是整像素位置,且所述整像素位置已设置参考权重值,则根据所述整像素位置的参考权重值确定所述像素位置的目标权重值;或者,
若所述周边匹配位置是亚像素位置,且所述亚像素位置已设置参考权重值,则根据所述亚像素位置的参考权重值确定所述像素位置的目标权重值。
21.一种解码设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求1-10中任一项所述的方法。
22.一种机器可读存储介质,其特征在于,
所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求1-10中任一项所述的方法。
CN202111152789.9A 2020-03-25 2020-03-25 一种编解码方法、装置及其设备 Active CN113709460B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111152789.9A CN113709460B (zh) 2020-03-25 2020-03-25 一种编解码方法、装置及其设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010220130.1A CN113452997B (zh) 2020-03-25 2020-03-25 一种编解码方法、装置及其设备
CN202111152789.9A CN113709460B (zh) 2020-03-25 2020-03-25 一种编解码方法、装置及其设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202010220130.1A Division CN113452997B (zh) 2020-03-25 2020-03-25 一种编解码方法、装置及其设备

Publications (2)

Publication Number Publication Date
CN113709460A CN113709460A (zh) 2021-11-26
CN113709460B true CN113709460B (zh) 2023-03-24

Family

ID=77806922

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010220130.1A Active CN113452997B (zh) 2020-03-25 2020-03-25 一种编解码方法、装置及其设备
CN202111152789.9A Active CN113709460B (zh) 2020-03-25 2020-03-25 一种编解码方法、装置及其设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010220130.1A Active CN113452997B (zh) 2020-03-25 2020-03-25 一种编解码方法、装置及其设备

Country Status (8)

Country Link
US (1) US20230353723A1 (zh)
EP (1) EP4109897A4 (zh)
JP (2) JP7375224B2 (zh)
KR (1) KR20220158799A (zh)
CN (2) CN113452997B (zh)
AU (1) AU2021243002B2 (zh)
TW (1) TWI797582B (zh)
WO (1) WO2021190515A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113810686B (zh) * 2020-06-01 2023-02-24 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN113873249B (zh) * 2020-06-30 2023-02-28 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN115633168A (zh) * 2022-09-30 2023-01-20 腾讯科技(深圳)有限公司 一种视频处理方法及相关设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6522425B2 (en) * 1997-02-04 2003-02-18 Fuji Photo Film Co., Ltd. Method of predicting and processing image fine structures
US20120207214A1 (en) * 2011-02-11 2012-08-16 Apple Inc. Weighted prediction parameter estimation
CN104539967B (zh) * 2015-01-15 2017-07-28 哈尔滨工业大学 混合视频编码标准中帧间预测方法
US10694179B2 (en) * 2016-01-12 2020-06-23 Telefonaktiebolaget Lm Ericsson (Publ) Video coding using hybrid intra prediction
US10523949B2 (en) * 2016-05-25 2019-12-31 Arris Enterprises Llc Weighted angular prediction for intra coding
US20170347094A1 (en) * 2016-05-31 2017-11-30 Google Inc. Block size adaptive directional intra prediction
US10542275B2 (en) * 2016-12-28 2020-01-21 Arris Enterprises Llc Video bitstream coding
JP6658654B2 (ja) * 2017-03-31 2020-03-04 京セラドキュメントソリューションズ株式会社 画像形成システム、サーバー、画像形成装置、及び画像形成方法
US10542264B2 (en) * 2017-04-04 2020-01-21 Arris Enterprises Llc Memory reduction implementation for weighted angular prediction
US10225578B2 (en) * 2017-05-09 2019-03-05 Google Llc Intra-prediction edge filtering
US10992939B2 (en) * 2017-10-23 2021-04-27 Google Llc Directional intra-prediction coding
CN117336504A (zh) * 2017-12-31 2024-01-02 华为技术有限公司 图像预测方法、装置以及编解码器
CN110121073B (zh) * 2018-02-06 2021-07-09 浙江大学 一种双向帧间预测方法及装置
US11956460B2 (en) * 2018-08-31 2024-04-09 Hulu, LLC Selective template matching in video coding
CN112468825B (zh) * 2018-12-28 2022-04-26 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN111385569B (zh) * 2018-12-28 2022-04-26 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN109803145B (zh) * 2018-12-29 2022-10-28 浙江大华技术股份有限公司 帧内预测方法、装置、编码器及存储装置
CN112954329B (zh) * 2019-03-11 2022-08-26 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备

Also Published As

Publication number Publication date
CN113452997A (zh) 2021-09-28
AU2021243002B2 (en) 2023-10-05
AU2021243002A1 (en) 2022-11-03
CN113709460A (zh) 2021-11-26
EP4109897A1 (en) 2022-12-28
JP2023519874A (ja) 2023-05-15
JP2023179791A (ja) 2023-12-19
KR20220158799A (ko) 2022-12-01
EP4109897A4 (en) 2023-09-06
TWI797582B (zh) 2023-04-01
JP7375224B2 (ja) 2023-11-07
WO2021190515A1 (zh) 2021-09-30
CN113452997B (zh) 2022-07-29
TW202141980A (zh) 2021-11-01
US20230353723A1 (en) 2023-11-02

Similar Documents

Publication Publication Date Title
WO2013042888A2 (ko) 머지 후보 블록 유도 방법 및 이러한 방법을 사용하는 장치
CN112369021A (zh) 用于吞吐量增强的图像编码/解码方法和设备以及存储比特流的记录介质
CN113709460B (zh) 一种编解码方法、装置及其设备
CN113794878B (zh) 一种编解码方法、装置及其设备
CN113709488B (zh) 一种编解码方法、装置及其设备
CN113794881B (zh) 一种编解码方法、装置及其设备
CN113709500B (zh) 一种编解码方法、装置及其设备
CN110832854B (zh) 利用插值进行帧内预测的方法和装置
CN113574878A (zh) 用于对视频信号进行编码/解码的方法及其设备
CN113810686B (zh) 一种编解码方法、装置及其设备
CN113709499B (zh) 一种编解码方法、装置及其设备
CN114598889B (zh) 一种编解码方法、装置及其设备
RU2808807C1 (ru) Способ, оборудование и устройство для кодирования и декодирования
CN114650423B (zh) 一种编解码方法、装置及其设备
RU2809619C1 (ru) Способ, оборудование и устройство для кодирования и декодирования

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40064015

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant