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

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

Info

Publication number
CN114650423B
CN114650423B CN202011615201.4A CN202011615201A CN114650423B CN 114650423 B CN114650423 B CN 114650423B CN 202011615201 A CN202011615201 A CN 202011615201A CN 114650423 B CN114650423 B CN 114650423B
Authority
CN
China
Prior art keywords
sub
current block
value
block
prediction
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
CN202011615201.4A
Other languages
English (en)
Other versions
CN114650423A (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 CN202111155067.9A priority Critical patent/CN113794885B/zh
Priority to CN202011615201.4A priority patent/CN114650423B/zh
Publication of CN114650423A publication Critical patent/CN114650423A/zh
Application granted granted Critical
Publication of CN114650423B publication Critical patent/CN114650423B/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/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/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements

Landscapes

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

Abstract

本申请提供一种编解码方法、装置及其设备,包括:在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;基于所述目标分组索引值对应的模式信息确定所述子块的预测值;根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。通过本申请提高预测准确性。

Description

一种编解码方法、装置及其设备
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码可以包括预测、变换、量化、熵编码、滤波等过程。针对预测过程,预测过程可以包括帧内预测和帧间预测,帧间预测是指利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。帧内预测是指利用视频空间域的相关性,使用当前帧图像的已编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
在相关技术中,当前块为矩形,而实际物体的边缘往往不是矩形,因此,对于物体边缘来说,往往存在两个不同对象(如存在前景的物体和背景)。基于此,当两个对象的运动不一致时,矩形划分不能很好的将两个对象分割,即使将当前块划分为两个非矩形子块,通过两个非矩形子块预测当前块,目前,也存在预测效果不佳,编码性能较差等问题。
发明内容
有鉴于此,本申请提供了一种编解码方法、装置及其设备,提高了预测的准确性。
本申请提供一种编解码方法,所述方法包括:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
本申请提供一种解码装置,所述解码装置包括:
存储器,其经配置以存储视频数据;
解码器,其经配置以实现:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
本申请提供一种编码装置,所述编码装置包括:
存储器,其经配置以存储视频数据;
编码器,其经配置以实现:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
由以上技术方案可见,本申请实施例中,提出一种针对当前块的组合预测方式,通过将当前块划分为至少一个子块,从而能够为当前块的每个子块选取合理的模式信息,并基于该模式信息确定该子块的预测值,从而能够提高预测的准确性,并提高预测性能,提高编码性能,能够使当前块的预测值更加接近原始像素,并带来编码性能的提高。
附图说明
图1是视频编码框架的示意图;
图2是水平或垂直划分的示意图;
图3是本申请一种实施方式中的编解码方法的流程图;
图4A-图4C是当前块外部的周边位置的示意图;
图4D-图4K是子块划分以及参考分组索引值的示意图;
图5是本申请一种实施方式中的分组索引预测角度的示意图;
图6是本申请一种实施方式中的子块的参考像素的示意图;
图7A-图7B是子块划分以及参考权重值的示意图;
图7C是本申请一种实施方式中的四种权重变换率的参考权重值的示意图;
图7D-图7F是本申请一种实施方式中的权重预测角度与角度分区的示意图;
图8A是本申请一种实施方式中的解码端设备的硬件结构图;
图8B是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非用于限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息,取决于语境。此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
本申请实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
帧内预测(intra prediction),帧间预测(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},而后每个像素位置先确认是不是逃离像素值,若不是逃离像素,则从码流中获得像素位置的索引,基于该像素位置的索引从调色板中获取颜色赋予该像素位置,否则,解析逃离像素值。
知识库帧(lib picture):知识库帧也可以称为知识库图像,类似长期参考帧(long term reference picture)的概念,知识库帧可以为较远距离的帧,知识库帧可以存在于当前帧的参考帧列表(也可以称为参考帧队列)中,用于有效的帧间预测。示例性的,知识库帧的POC(Picture Order Count,显示顺序,即图像顺序号)可以被设置为当前帧的POC减1。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
视频编码框架:参见图1所示,可以使用视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再重复赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。示例性的,在视频编码框架和视频解码框架中,可以包括但不限于帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
在相关技术中,当前块为矩形,而实际物体的边缘往往不是矩形,因此,对于物体边缘来说,往往存在两个不同对象(如存在前景的物体和背景),当两个对象的运动不一致时,单一的帧内预测或单假设的帧间预测很难得到较好的预测值,加权预测利用多个预测值进行加权操作从而获得最终的预测值。加权预测有帧间帧内的联合加权预测,也存在两个帧间预测的联合加权。加权预测的权重可以设置为所有位置的像素点一致,也可以根据不同的像素位置进行不同的权重设置。在采用加权预测时,预测单元划分均为水平或垂直,参见图2所示。但是,上述加权预测方式仍然存在预测效果不佳,编码性能较差等问题。
针对上述发现,本申请实施例中提出一种针对当前块的组合预测方式,通过将当前块划分为至少一个子块,从而能够为当前块的每个子块选取合理的模式信息,并基于该模式信息确定该子块的预测值,从而能够提高预测的准确性,并提高预测性能,提高编码性能。
以下结合几个具体实施例,对本申请实施例中的编解码方法进行详细说明。
实施例1:参见图3所示,为编解码方法的流程示意图,该方法可以应用于解码端(也可以称为视频解码器)或者编码端(也可以称为视频编码器),该方法可以包括:
步骤301,在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数。示例性的,该分组索引配置参数可以包括分组索引变换的起始位置;或者,该分组索引配置参数可以包括分组索引变换的起始位置以及分组索引变换率;或者,该分组索引配置参数可以包括分组索引分割位置。当然,上述只是分组索引配置参数的几个示例。
示例性的,分组索引变换的起始位置可以由如下参数中的至少一个确定:分组索引预测角度,当前块的分组索引预测位置,当前块的尺寸。显然,若需要基于当前块的分组索引预测位置确定分组索引变换的起始位置,则还可以获取当前块的分组索引预测位置。
示例性的,可以预设若干分割位置作为分组索引分割位置,并可以将分组索引分割位置作为分组索引配置参数,比如说,将有效数量(即当前块外部周边位置的有效数量)的1/4,有效数量的1/2,有效数量的3/4这三个点作为分组索引分割位置。
示例性的,当前块的分组索引预测角度可以是0-360之间的任意角度,对此角度不做限制。比如说,该分组索引预测角度可以为水平角度;或者,该分组索引预测角度可以为垂直角度;或者,该分组索引预测角度的斜率的绝对值可以为2的n次方,且n为整数。
示例性的,在需要对当前块进行预测时,解码端或者编码端可以先确定是否对当前块启动组合预测。若对当前块启动组合预测,则采用本申请实施例的编解码方法,即执行步骤301和后续步骤。若对当前块不启动组合预测,则实现方式本申请实施例中不做限制。
示例性的,在确定对当前块启动组合预测时,可以获取当前块的分组索引预测角度,当前块的分组索引预测位置,及当前块的分组索引变换率。基于当前块的分组索引预测角度,当前块的分组索引预测位置和当前块的尺寸中的至少一个,确定当前块的分组索引变换的起始位置。至此,可以得到当前块的分组索引预测角度,当前块的分组索引变换率和当前块的分组索引变换的起始位置,而当前块的分组索引变换率和当前块的分组索引变换的起始位置作为分组索引配置参数。或者,在确定对当前块启动组合预测时,可以获取当前块的分组索引预测角度,及当前块的分组索引预测位置。基于当前块的分组索引预测角度,当前块的分组索引预测位置和当前块的尺寸中的至少一个,确定当前块的分组索引变换的起始位置。至此,可以得到当前块的分组索引预测角度和当前块的分组索引变换的起始位置,而当前块的分组索引变换的起始位置作为分组索引配置参数。或者,在确定对当前块启动组合预测时,获取当前块的分组索引预测角度,及当前块的分组索引分割位置,而该分组索引分割位置作为分组索引配置参数。综上所述,均可得到当前块的分组索引预测角度和分组索引配置参数。
步骤302,根据分组索引配置参数为当前块外部的周边位置配置参考分组索引值。
示例性的,当前块外部的周边位置的数量可以由当前块的尺寸和/或当前块的分组索引预测角度确定。例如,基于当前块的尺寸和/或当前块的分组索引预测角度确定当前块外部的周边位置的数量M,并根据分组索引配置参数为M个周边位置配置参考分组索引值。
示例性的,当前块外部的周边位置可以包括但不限于:当前块外部上侧一行的周边位置,或者,当前块外部左侧一列的周边位置。当然,上述只是周边位置的示例,对此不做限制。
示例性的,当前块外部的周边位置的参考分组索引值可以单调递增;或者,当前块外部的周边位置的参考分组索引值可以单调递减。比如说,若当前块外部的周边位置可以包括当前块外部上侧一行的周边位置,则从左到右的顺序上的参考分组索引值,可以是单调递增或单调递减。或者,若当前块外部的周边位置可以包括当前块外部左侧一列的周边位置,则从上到下的顺序上的参考分组索引值,可以是单调递增或单调递减。
当然,上述参考分组索引值单调递增或单调递减只是示例,对此不做限制,参考分组索引值也可以不是单调递增或单调递减。比如说,参考分组索引值先递增再递减,或者,参考分组索引值先递减再递增。比如说,当前块外部的周边位置的参考分组索引值的排布可以为00…0011…1122…2233…33,即参考分组索引值单调递增。或者,当前块外部的周边位置的参考分组索引值的排布可以为33…3322…2211…1100…00,即参考分组索引值单调递减。或者,当前块外部的周边位置的参考分组索引值的排布可以为33…3300…0011…1122…22,即,参考分组索引值先递减再递增。或者,当前块外部的周边位置的参考分组索引值的排布可以为00…0022…2211…1133…33,即,参考分组索引值先递增再递减再递增。或者,当前块外部的周边位置的参考分组索引值的排布可以为00…0033…3322…2211…11,即,参考分组索引值先递增再递减,以此类推,对参考分组索引值的排布不做限制。
示例性的,当前块外部的周边位置可以包括至少两个区域,每个区域可以包括至少一个周边位置。同一区域内的周边位置的参考分组索引值可以相同,不同区域内的周边位置的参考分组索引值可以相同,不同区域内的周边位置的参考分组索引值也可以不同。
比如说,若至少两个区域为两个区域,则一个区域内的周边位置的参考分组索引值,与另一个区域内的周边位置的参考分组索引值不同。例如,当前块外部的周边位置可以包括区域1和区域2,区域1可以包括至少一个周边位置,且区域1内的周边位置的参考分组索引值均为第一取值,区域2可以包括至少一个周边位置,且区域2内的周边位置的参考分组索引值均为第二取值。第一取值和第二取值可以任意,对此不做限制,只要第一取值和第二取值不同即可,例如,第一取值为0,第二取值为1,或者,第一取值为1,第二取值为0,或者,第一取值为2,第二取值为4,或者,第一取值为4,第二取值为2,以此类推。
比如说,若至少两个区域为至少三个区域,则相邻的两个区域内的周边位置的参考分组索引值可以不同,不相邻的两个区域内的周边位置的参考分组索引值可以相同或不同。例如,当前块外部的周边位置可以依次包括区域1、区域2和区域3,区域1和区域2是相邻的两个区域,区域2和区域3是相邻的两个区域,区域1和区域3是不相邻的两个区域。在此基础上,区域1可以包括至少一个周边位置,且区域1内的周边位置的参考分组索引值均为第一取值,区域2可以包括至少一个周边位置,且区域2内的周边位置的参考分组索引值均为第二取值,区域3可以包括至少一个周边位置,且区域3内的周边位置的参考分组索引值均为第三取值。第一取值、第二取值和第三取值可以任意,对此不做限制,只要第一取值和第二取值不同、第二取值和第三取值不同即可,但第一取值和第三取值可以相同,也可以不同。
又例如,当前块外部的周边位置可以依次包括区域1、区域2、区域3和区域4,区域1和区域2是相邻的两个区域,区域2和区域3是相邻的两个区域,区域3和区域4是相邻的两个区域,区域1和区域3是不相邻的两个区域,区域1和区域4是不相邻的两个区域,区域2和区域4是不相邻的两个区域。在此基础上,区域1可以包括至少一个周边位置,且区域1内的周边位置的参考分组索引值均为第一取值,区域2可以包括至少一个周边位置,且区域2内的周边位置的参考分组索引值均为第二取值,区域3可以包括至少一个周边位置,且区域3内的周边位置的参考分组索引值均为第三取值,区域4可以包括至少一个周边位置,且区域4内的周边位置的参考分组索引值均为第四取值。第一取值、第二取值、第三取值和第四取值可以任意,对此不做限制,只要第一取值和第二取值不同、第二取值和第三取值不同、第三取值和第四取值不同即可,但是,第一取值和第三取值可以相同,也可以不同。第一取值和第四取值可以相同,也可以不同。第二取值和第四取值可以相同,也可以不同。
步骤303,针对当前块的每个子块,根据该分组索引预测角度从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置。根据该周边匹配位置关联的参考分组索引值确定该子块的目标分组索引值,基于目标分组索引值对应的模式信息确定该子块的预测值。
分组索引预测角度表示子块内部的预设位置所指向的角度方向,基于某一种分组索引预测角度,该分组索引预测角度对应的角度方向指向当前块的某个外部周边位置。基于此,针对当前块的每个子块,基于该分组索引预测角度确定该子块的预设位置所指向的角度方向,根据该角度方向从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置。
针对当前块的每个子块,在确定该子块的预设位置指向的周边匹配位置后,就可以基于该周边匹配位置关联的参考分组索引值确定该子块的目标分组索引值,比如说,可以直接将该周边匹配位置关联的参考分组索引值确定为该子块的目标分组索引值。
在一种可能的实施方式中,周边匹配位置关联的参考分组索引值,可以是根据该周边匹配位置的坐标值与分组索引变换的起始位置的坐标值确定。
示例性的,针对当前块的每个子块,该子块可以为矩形子块(即四边形子块),该子块也可以不为矩形子块,例如,该子块可以为三角形子块,五边形子块。六边形子块等,对此子块的形状不做限制,子块可以是任意形状的子块。不同子块的形状可以相同,不同子块的形状也可以不同。不同子块的尺寸可以相同,不同子块的尺寸也可以不同。
若该子块为矩形子块,则该子块的尺寸可以为M*N,M为子块的宽度,且M大于或者等于1,N为子块的高度,且N大于或者等于1。综上所述,该子块可以包括至少一个像素位置。若该子块不为矩形子块,则该子块也可以包括至少一个像素位置。
在此基础上,若子块为1*1的像素位置(即只包括一个像素位置),则子块的预设位置可以为该像素位置本身。若该子块不为1*1的像素位置(即包括至少两个像素位置),则子块的预设位置可以包括但不限于:左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置,对此不做限制,可以是子块内部的任意一个像素位置。
示例性的,当前块外部的周边位置可以包括:整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置。对于整像素位置来说,整像素位置可以为1像素位置,或2像素位置,或4像素位置等,对此不做限制。显然,由于是针对当前块的子块确定预测值,因此,整像素位置不需要特别精细的位置划分,可以选用2像素位置或4像素位置等。
在此基础上,针对当前块的每个子块,根据该周边匹配位置关联的参考分组索引值确定该子块的目标分组索引值,可以包括但不限于:若该周边匹配位置是亚像素位置,并且该亚像素位置已配置参考分组索引值,则可以根据该亚像素位置的参考分组索引值确定该子块的目标分组索引值;若该周边匹配位置是整像素位置,并且该整像素位置已配置参考分组索引值,则可以根据该整像素位置的参考分组索引值确定该子块的目标分组索引值。
示例性的,在基于目标分组索引值对应的模式信息确定该子块的预测值之前,可以先获取目标分组索引值对应的模式信息,该模式信息可以为基于帧间预测模式的模式信息,或基于帧内预测模式的模式信息,或基于帧内块拷贝预测模式的模式信息,或基于调色板模式的模式信息,对此模式信息不做限制,在得到目标分组索引值对应的模式信息后,就可以基于目标分组索引值对应的模式信息确定该子块的预测值,对此预测过程不做限制。
为了获取目标分组索引值对应的模式信息,可以采用如下方式:
方式1、获取为目标分组索引值配置的模式信息。
比如说,针对每个参考分组索引值,可以预先配置与该参考分组索引值对应的模式信息,如参考分组索引值0对应模式信息0,参考分组索引值1对应模式信息1,参考分组索引值2对应模式信息2,参考分组索引值3对应模式信息3,在此基础上,在得到子块的目标分组索引值后,就可以直接获得为该目标分组索引值配置的模式信息。
方式2、获取为当前块创建的模式信息候选列表,该模式信息候选列表可以包括至少两个候选模式信息;从该模式信息候选列表中选取与该目标分组索引值对应的模式信息。针对解码端来说,可以从当前块的编码比特流中解析目标分组索引值对应的模式信息对应的指示信息;基于该指示信息,从该模式信息候选列表中选取与该目标分组索引值对应的模式信息。
在一种可能的实施方式中,该模式信息候选列表中的候选模式信息可以包括但不限于以下至少一种:基于帧间预测模式的候选模式信息;基于帧内预测模式的候选模式信息;基于帧内块拷贝预测模式的候选模式信息;基于调色板模式的候选模式信息。
比如说,该模式信息候选列表中的候选模式信息可以只包括基于帧间预测模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以只包括基于帧内预测模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以只包括基于帧内块拷贝预测模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以只包括基于调色板模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以同时包括基于帧间预测模式的候选模式信息和基于帧内预测模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以同时包括基于帧间预测模式的候选模式信息,基于帧内预测模式的候选模式信息和基于帧内块拷贝预测模式的候选模式信息,对此候选模式信息不做限制。
方式3、获取为当前块创建的至少两个模式信息候选列表,针对每个模式信息候选列表来说,该模式信息候选列表可以包括至少一个候选模式信息。然后,可以从至少两个模式信息候选列表中选取与该目标分组索引值对应的目标模式信息候选列表,然后,可以从该目标模式信息候选列表中选取与该目标分组索引值对应的模式信息。
示例性的,针对解码端来说,可以从当前块的编码比特流中解析目标分组索引值对应的目标模式信息候选列表对应的指示信息;基于该指示信息,从为当前块创建的至少两个模式信息候选列表中选取与该目标分组索引值对应的目标模式信息候选列表。以及,针对解码端来说,还可以从当前块的编码比特流中解析目标分组索引值对应的模式信息对应的指示信息;基于该指示信息,从该模式信息候选列表中选取与该目标分组索引值对应的模式信息。
在一种可能的实施方式中,该模式信息候选列表中的候选模式信息可以包括但不限于以下至少一种:基于帧间预测模式的候选模式信息;基于帧内预测模式的候选模式信息;基于帧内块拷贝预测模式的候选模式信息;基于调色板模式的候选模式信息。
示例性的,针对同一模式信息候选列表,可以只包括一种预测模式的候选模式信息,针对不同模式信息候选列表,可以包括不同预测模式的候选模式信息。比如说,模式信息候选列表0中的候选模式信息可以只包括基于帧间预测模式的候选模式信息,模式信息候选列表1中的候选模式信息可以只包括基于帧内预测模式的候选模式信息,模式信息候选列表2中的候选模式信息可以只包括基于帧内块拷贝预测模式的候选模式信息,模式信息候选列表4中的候选模式信息可以只包括基于调色板模式的候选模式信息,以此类推。
针对同一模式信息候选列表,可以同时包括至少两种预测模式的候选模式信息,比如说,模式信息候选列表0中的候选模式信息可以同时包括基于帧间预测模式的候选模式信息和基于帧内预测模式的候选模式信息,模式信息候选列表1中的候选模式信息可以同时包括基于帧内预测模式的候选模式信息和基于帧内块拷贝预测模式的候选模式信息,以此类推。
步骤304,根据当前块的所有子块的预测值确定当前块的组合预测值。
例如,将当前块的所有子块的预测值组合起来,得到当前块的组合预测值。
示例性的,上述执行顺序只是为了方便描述给出的示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
由以上技术方案可见,本申请实施例中,提出一种针对当前块的组合预测方式,通过将当前块划分为至少一个子块,从而能够为当前块的每个子块选取合理的模式信息,并基于该模式信息确定该子块的预测值,从而能够提高预测的准确性,并提高预测性能,提高编码性能,能够使当前块的预测值更加接近原始像素,并带来编码性能的提高。
实施例2:本申请实施例提出另一种编解码方法,可以应用于编码端,该方法包括:
步骤a1,在确定对当前块启动组合预测时,编码端获取当前块的分组索引预测角度,当前块的分组索引预测位置,及当前块的分组索引变换率。或者,在确定对当前块启动组合预测时,编码端获取当前块的分组索引预测角度,及当前块的分组索引预测位置。或者,在确定对当前块启动组合预测时,编码端获取当前块的分组索引预测角度,及当前块的分组索引分割位置。示例性的,在第一种情况中,编码端基于分组索引预测位置和分组索引变换率确定分组索引配置参数,在第二种情况中,编码端基于分组索引预测位置确定分组索引配置参数,在第三种情况中,编码端基于分组索引分割位置确定分组索引配置参数。
示例性的,编码端可以确定是否对当前块启动组合预测,如果是,则执行步骤a1及后续步骤,如果否,则处理方式本申请实施例不做限制。
在一种可能的实施方式中,若当前块满足启动组合预测的条件,则确定对当前块启动组合预测。若当前块不满足启动组合预测的条件,则确定对当前块不启动组合预测。例如,判断当前块的特征信息是否满足特定条件。如果是,则确定对当前块启动组合预测;如果否,确定对当前块不启动组合预测。特征信息可以包括但不限于以下之一或任意组合:当前块所在当前帧的帧类型,当前块的尺寸信息,开关控制信息。开关控制信息包括但不限于:序列级(SPS、SH)开关控制信息,或图像级(PPS、PH)开关控制信息,或片级(Slice、Tile、Patch),或最大编码单元级(LCU、CTU),或块级(CU、PU、TU)开关控制信息。
例如,若该特征信息为当前块所在当前帧的帧类型,当前块所在当前帧的帧类型满足特定条件,可以包括但不限于:若当前块所在当前帧的帧类型为B帧,则可以确定帧类型满足特定条件。或者,若当前块所在当前帧的帧类型为I帧,则可以确定帧类型满足特定条件。或者,若当前块所在当前帧的帧类型为P帧,则可以确定帧类型满足特定条件。
例如,若特征信息为当前块的尺寸信息,如宽度和高度,尺寸信息满足特定条件包括但不限于:若宽度大于或等于第一数值,高度大于或等于第二数值,确定当前块的尺寸信息满足特定条件。或,若宽度大于或等于第三数值,高度大于或等于第四数值,宽度小于或等于第五数值,高度小于或等于第六数值,确定当前块的尺寸信息满足特定条件。或,若宽度和高度的乘积大于或等于第七数值,确定当前块的尺寸信息满足特定条件。上述数值可以根据经验配置,如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。
例如,若特征信息为开关控制信息,则该开关控制信息满足特定条件,可以包括但不限于:若开关控制信息为允许当前块启用组合预测,则确定该开关控制信息满足特定条件。
例如,若特征信息为当前块所在当前帧的帧类型,当前块的尺寸信息,则帧类型满足特定条件,且尺寸信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块所在当前帧的帧类型,开关控制信息,则帧类型满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块的尺寸信息、开关控制信息,则尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块所在当前帧的帧类型、当前块的尺寸信息、开关控制信息,则帧类型满足特定条件,尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。
在一种可能的实施方式中,在确定对当前块启动组合预测时,编码端可以获取当前块的分组索引预测角度,当前块的分组索引预测位置,及当前块的分组索引变换率。或者,编码端可以获取当前块的分组索引预测角度,及当前块的分组索引预测位置。或者,编码端可以获取当前块的分组索引预测角度,及当前块的分组索引分割位置。
示例性的,分组索引预测角度表示当前块内部的像素位置所指向的角度方向,参见图4A所示,基于某一种分组索引预测角度,示出了当前块内部的像素位置(如像素位置1、像素位置2和像素位置3)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。参见图4B所示,基于另一种分组索引预测角度,示出了当前块内部的像素位置(如像素位置2、像素位置3和像素位置4)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。
示例性的,分组索引预测位置(也可以称为距离参数)用于配置当前块外部周边位置的参考分组索引值。例如,根据当前块的分组索引预测角度、当前块的尺寸等参数,确定当前块外部的周边位置的范围(即当前块外部的周边位置的数量),参见图4A或者图4B所示。
然后,将周边位置的范围进行N等分,N的取值可以任意配置,如2、4、6、8等,分组索引预测位置用于表示当前块外部的哪个周边位置作为当前块的分组索引变换的起始位置,从而根据分组索引变换的起始位置配置当前块外部的周边位置的参考分组索引值。
参见图4C所示,在将所有周边位置8等分后,可以得到7个分组索引预测位置。当分组索引预测位置为0时,可以表示周边位置a0(即虚线0指向的周边位置,在实际应用中,并不存在虚线0,虚线0只是为了方便理解给出的示例,虚线0-虚线6用于将所有周边位置8等分)作为当前块外部周边位置的分组索引变换的起始位置。以此类推,当分组索引预测位置为6时,表示周边位置a6作为当前块外部周边位置的分组索引变换的起始位置。
针对不同分组索引预测角度,N的取值可以不同,如针对分组索引预测角度A,N取值为6,表示将基于分组索引预测角度A确定的周边位置的范围进行6等分,针对分组索引预测角度B,N取值为4,表示将基于分组索引预测角度B确定的周边位置的范围进行4等分。
针对不同的分组索引预测角度,N的取值也可以相同,但分组索引预测位置数量不同,如针对分组索引预测角度A,N取值为8,表示将基于分组索引预测角度A确定的周边位置的范围进行8等分,针对分组索引预测角度B,N取值为8,表示将基于分组索引预测角度B确定的周边位置的范围进行8等分,但分组索引预测角度A对应的分组索引预测位置选择a1至a5共5个位置,分组索引预测角度B对应的分组索引预测位置选择a0至a6共7个位置。
上述是以将周边位置的范围进行N等分为例,在实际应用中,还可以采用不均匀的划分方式,比如说,将周边位置的范围划分成N份,而不是N等分,对此不做限制。
在将所有的周边位置8等分后,可以得到7个分组索引预测位置,步骤a1中,编码端可以从7个分组索引预测位置中获取一个分组索引预测位置,或从7个分组索引预测位置中选择部分分组索引预测位置(如5个),从5个分组索引预测位置获取一个分组索引预测位置。
示例性的,分组索引变换率表示当前块外部的周边位置的参考分组索引值的变换率,用于表示参考分组索引值的变换速度,分组索引变换率可以是大于0,且小于或者等于1的数值,如分组索引变换率可以是1/8、1/6、1/4、1/2、1等。例如,分组索引变换率为1/8时,用于表示参考分组索引值的变化速度为1/8,即连续8个参考分组索引值为同一取值,假设共有4种参考分组索引值,则参考分组索引值为00000000111111112222222233333333。例如,分组索引变换率为1/4时,用于表示参考分组索引值的变化速度为1/4,即连续4个参考分组索引值为同一取值,假设共有4种参考分组索引值,则参考分组索引值为0000111122223333。例如,分组索引变换率为1/2时,用于表示参考分组索引值的变化速度为1/2,即连续2个参考分组索引值为同一取值,假设共有4种参考分组索引值,则参考分组索引值为00112233。例如,分组索引变换率为1时,用于表示参考分组索引值的变化速度为1,即连续1个参考分组索引值为同一取值,假设共有4种参考分组索引值,则参考分组索引值为0123。
示例性的,分组索引分割位置用于表示从当前块外部的哪个周边位置开始分割,从而将当前块外部的周边位置分割成至少两个区域,比如说,预设若干分割位置作为分组索引分割位置,例如,将有效数量(即当前块外部周边位置的有效数量)的1/4,有效数量的1/2,有效数量的3/4这三个位置作为分组索引分割位置,那么,这三个分组索引分割位置可以将当前块外部周边位置划分为4个区域,假设当前块外部周边位置的有效数量为M,则区域1可以包括第1至M/4个周边位置,区域2可以包括第M/4+1至M/2个周边位置,区域3可以包括第M/2+1至3M/4个周边位置,区域4可以包括第3M/4+1至M个周边位置。例如,将有效数量(即当前块外部周边位置的有效数量)的1/2位置作为分组索引分割位置,那么,这一个分组索引分割位置可以将当前块外部周边位置划分为2个区域,假设当前块外部周边位置的有效数量为M,则区域1可以包括第1至M/2个周边位置,区域2可以包括第M/2+1至M个周边位置。当然,具体的分割位置属于哪个区域可以进行微调,例如,区域1可以包括第1至M/2-1个周边位置,区域2可以包括第M/2至M个周边位置。
步骤a2,编码端根据当前块的分组索引变换率和分组索引变换的起始位置(分组索引变换率和分组索引变换的起始位置可以称为分组索引配置参数)为当前块外部的周边位置配置参考分组索引值。或者,编码端根据当前块的分组索引变换的起始位置(分组索引变换的起始位置可以称为分组索引配置参数)为当前块外部的周边位置配置参考分组索引值。或者,编码端根据当前块的分组索引分割位置(分组索引分割位置可以称为分组索引配置参数)为当前块外部的周边位置配置参考分组索引值。
示例性的,分组索引变换的起始位置可以由如下参数的至少一个确定:分组索引预测角度,分组索引预测位置,当前块的尺寸,因此,可以基于分组索引预测角度,分组索引预测位置和当前块的尺寸中的至少一个,确定当前块的分组索引变换的起始位置。然后,根据分组索引变换率和分组索引变换的起始位置为当前块外部的周边位置配置参考分组索引值。或者,根据分组索引变换的起始位置为当前块外部的周边位置配置参考分组索引值。
步骤a3,针对当前块的每个子块,编码端根据当前块的分组索引预测角度从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置。为了区分方便,本实施例中,可以将该子块的预设位置指向的当前块外部的周边位置,称为周边匹配位置。
示例性的,由于分组索引预测角度表示当前块内部的像素位置所指向的角度方向,因此,针对当前块的每个子块,基于该分组索引预测角度确定该子块的预设位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该预设位置指向的周边匹配位置。
当前块外部的周边位置可以包括:当前块外部上侧一行的周边位置(如像素位置),如当前块外部上侧第n1行的周边位置,n1可以为1,也可以为2、3等,对此不做限制。或者,当前块外部左侧一列的周边位置(如像素位置),如当前块外部左侧第n2列的周边位置,n2可以为1,也可以为2、3等,对此不做限制。当然,上述只是周边位置的几个示例,对此不做限制。示例性的,当前块外部周边位置可以位于像素位置之间,即亚像素位置,此时,当前块的位置不能简单描述为第x行,而是位于第x行与第y行之间的亚像素位置行。
示例性的,针对当前块外部周边位置的范围,可以预先指定某个范围是当前块外部的周边位置的范围;或者,可以根据分组索引预测角度确定当前块外部的周边位置的范围,例如,根据分组索引预测角度确定当前块内部的每个像素位置指向的周边位置,所有像素位置指向的周边位置的边界,可以是当前块外部的周边位置的范围,对此周边位置的范围不做限制。
示例性的,当前块外部的周边位置可以包括整像素位置;或者,当前块外部的周边位置可以包括非整像素位置,非整像素位置可以为亚像素位置,如1/2亚像素位置,1/4亚像素位置,3/4亚像素位置等,对此不做限制;或者,当前块外部的周边位置可以包括整像素位置和亚像素位置。对于整像素位置来说,整像素位置可以为1像素位置,或2像素位置,或4像素位置等,对此不做限制。显然,由于是针对当前块的子块确定预测值,因此,整像素位置不需要特别精细的位置划分,可以选用2像素位置或4像素位置等。
综上所述,当前块外部的两个周边位置,可以对应一个整像素位置;或,当前块外部的四个周边位置,可以对应一个整像素位置;或,当前块外部的一个周边位置,可以对应一个整像素位置;或,当前块外部的一个周边位置,可以对应两个整像素位置;或,当前块外部的一个周边位置,可以对应四个整像素位置。当然,上述只是几个示例,对此不做限制。
示例性的,针对当前块的每个子块,该子块可以为矩形子块,该子块也可以不为矩形子块,例如,该子块可以为三角形子块,五边形子块。六边形子块等。不同子块的形状可以相同,不同子块的形状也可以不同。不同子块的尺寸可以相同,不同子块的尺寸也可以不同。每个子块的预设位置可以相同,也可以不同,只需要编码端和解码端约定子块的预设位置即可,例如,按照尺寸,面积,形状等确定子块的预设位置。比如说,若子块为1*1的像素位置,则子块的预设位置可以为该像素位置本身。若该子块不为1*1的像素位置,则子块的预设位置可以包括但不限于:左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置,对此不做限制,可以是子块内部的任意一个像素位置。
参见图4D所示,可以将当前块划分为4*4大小的矩形子块,每个子块的预设位置为该子块的中心像素位置,则图4D示出了分组索引预测角度指向的周边匹配位置,图4D中的“0”表示该子块的预设位置指向的周边匹配位置的参考分组索引值为0,图4D中的“1”表示该子块的预设位置指向的周边匹配位置的参考分组索引值为1。在图4D中,在周边位置中,白色区域的周边位置的参考分组索引值为0,灰色区域的周边位置的参考分组索引值为1。
与图4D等价的另一种划分方式参见图4E所示,将当前块划分为两个非矩形子块,每个子块的预设位置为该子块的中心像素位置,显然,一个子块的预设位置指向的周边匹配位置的参考分组索引值为0,另一个子块的预设位置指向的周边匹配位置的参考分组索引值为1。
参见图4F所示,可以将当前块划分为4*4大小的矩形子块、8*8大小的矩形子块、4*8大小的矩形子块、8*4大小的矩形子块,每个子块的预设位置可以为该子块的中心像素位置,则图4F示出了分组索引预测角度指向的周边匹配位置,图4F中的“0”可以表示该子块的预设位置指向的周边匹配位置的参考分组索引值为0,图4F中的“1”可以表示该子块的预设位置指向的周边匹配位置的参考分组索引值为1。在图4F中,在这些周边位置中,白色区域的周边位置的参考分组索引值为0,灰色区域的周边位置的参考分组索引值为1。
与图4F等价的另一种划分方式参见图4G所示,将当前块划分为两个非矩形子块,每个子块的预设位置为该子块的中心像素位置,显然,一个子块的预设位置指向的周边匹配位置的参考分组索引值为0,另一个子块的预设位置指向的周边匹配位置的参考分组索引值为1。
在上述图4D-图4G中,是以两个参考分组索引值为例,在实际应用中,参考分组索引值的数量还可以更多,下面以三个参考分组索引值为例,继续对子块的划分方式进行说明。
参见图4H所示,可以将当前块划分为4*4大小的矩形子块,每个子块的预设位置为该子块的中心像素位置,则图4H示出了分组索引预测角度指向的周边匹配位置,图4H中的“0”表示该子块的预设位置指向的周边匹配位置的参考分组索引值为0,图4H中的“1”表示该子块的预设位置指向的周边匹配位置的参考分组索引值为1,图4H中的“2”表示该子块的预设位置指向的周边匹配位置的参考分组索引值为2。在图4H中,白色区域的周边位置的参考分组索引值为0,灰色区域的周边位置的参考分组索引值为1,黑色区域的周边位置的参考分组索引值为2。与图4H等价的另一种划分方式参见图4I所示,将当前块划分为三个非矩形子块,每个子块的预设位置为该子块的中心像素位置,显然,一个子块的预设位置指向的周边匹配位置的参考分组索引值为0,另一个子块的预设位置指向的周边匹配位置的参考分组索引值为1,最后一个子块的预设位置指向的周边匹配位置的参考分组索引值为2。需要注意的是,参考分组索引值的数值本身没有意义,只是用来区分不同的分组。
参见图4J所示,可以将当前块划分为4*4大小的矩形子块、8*8大小的矩形子块、4*8大小的矩形子块、8*4大小的矩形子块,每个子块的预设位置可以为该子块的中心像素位置,则图4J示出了分组索引预测角度指向的周边匹配位置,图4J中的“0”可以表示该子块的预设位置指向的周边匹配位置的参考分组索引值为0,图4J中的“1”可以表示该子块的预设位置指向的周边匹配位置的参考分组索引值为1,图4J中的“2”可以表示该子块的预设位置指向的周边匹配位置的参考分组索引值为2。在图4G中,白色区域的周边位置的参考分组索引值为0,灰色区域的周边位置的参考分组索引值为1,黑色区域的周边位置的参考分组索引值为2。与图4J等价的另一种划分方式参见图4K所示,将当前块划分为三个非矩形子块,每个子块的预设位置为该子块的中心像素位置,显然,一个子块的预设位置指向的周边匹配位置的参考分组索引值为0,另一个子块的预设位置指向的周边匹配位置的参考分组索引值为1,最后一个子块的预设位置指向的周边匹配位置的参考分组索引值为2。
综上所述,针对当前块的每个子块,可以确定该子块对应的参考分组索引值。
步骤a4,编码端根据周边匹配位置关联的参考分组索引值确定该子块的目标分组索引值。
针对当前块的每个子块,在确定该子块的预设位置指向的周边匹配位置后,编码端确定该周边匹配位置关联的参考分组索引值,并根据该周边匹配位置关联的参考分组索引值确定该子块的目标分组索引值,例如,将该周边匹配位置关联的参考分组索引值确定为该子块的目标分组索引值。比如说,若该周边匹配位置是亚像素位置,并且该亚像素位置已配置参考分组索引值,则编码端可以根据该亚像素位置的参考分组索引值确定该子块的目标分组索引值。若该周边匹配位置是整像素位置,并且该整像素位置已配置参考分组索引值,则编码端可以根据该整像素位置的参考分组索引值确定该子块的目标分组索引值。
步骤a5,编码端获取该子块的目标分组索引值对应的模式信息。
步骤a6,编码端根据该子块的目标分组索引值对应的模式信息确定该子块的预测值。
步骤a7,编码端根据当前块的所有子块的预测值确定当前块的组合预测值。
实施例3:本申请实施例提出另一种编解码方法,可以应用于解码端,该方法包括:
步骤b1,在确定对当前块启动组合预测时,解码端获取当前块的分组索引预测角度,当前块的分组索引预测位置,及当前块的分组索引变换率。或者,在确定对当前块启动组合预测时,解码端获取当前块的分组索引预测角度,及当前块的分组索引预测位置。或者,在确定对当前块启动组合预测时,解码端获取当前块的分组索引预测角度,及当前块的分组索引分割位置。示例性的,解码端可以确定是否对当前块启动组合预测,如果是,则执行步骤b1及后续步骤,如果否,则处理方式本申请实施例不做限制。
在一种可能的实施方式中,编码端判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动组合预测。解码端也判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动组合预测;如果否,则确定对当前块不启动组合预测。关于解码端如何基于特征信息确定当前块是否启动组合预测,与编码端的确定方式类似,在此不再重复赘述。
在另一种可能的实施方式中,编码端根据当前块的特征信息确定当前块是否支持组合预测,在当前块支持组合预测时,还可以采用其它策略确定是否对当前块启动组合预测,如采用率失真原则确定是否对当前块启动组合预测。在确定是否对当前块启动组合预测后,编码端发送当前块的编码比特流时,编码比特流可以包括是否启动组合预测的语法,该语法表示当前块是否启动组合预测。解码端根据当前块的特征信息确定当前块是否支持组合预测,具体方式与编码端的确定方式类似,在此不再赘述。在当前块支持组合预测时,解码端可以从编码比特流中解析出是否启动组合预测的语法,根据该语法确定是否对当前块启动组合预测。
示例性的,在确定对当前块启动组合预测时,解码端还可以获取当前块的分组索引预测角度,当前块的分组索引预测位置,及当前块的分组索引变换率,或者,解码端还可以获取当前块的分组索引预测角度,及当前块的分组索引预测位置,或者,解码端还可以获取当前块的分组索引预测角度,及当前块的分组索引分割位置。关于分组索引预测角度,分组索引预测位置、分组索引分割位置及分组索引变换率的说明,参见实施例2的步骤a1。
步骤b2,解码端根据当前块的分组索引变换率和分组索引变换的起始位置(分组索引变换率和分组索引变换的起始位置可以称为分组索引配置参数)为当前块外部的周边位置配置参考分组索引值。或者,解码端根据当前块的分组索引变换的起始位置(分组索引变换的起始位置可以称为分组索引配置参数)为当前块外部的周边位置配置参考分组索引值。或者,解码端根据当前块的分组索引分割位置(分组索引分割位置可以称为分组索引配置参数)为当前块外部的周边位置配置参考分组索引值。
步骤b3,针对当前块的每个子块,解码端根据当前块的分组索引预测角度从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置。
步骤b4,解码端根据周边匹配位置关联的参考分组索引值确定该子块的目标分组索引值。
步骤b5,解码端获取该子块的目标分组索引值对应的模式信息。
步骤b6,解码端根据该子块的目标分组索引值对应的模式信息确定该子块的预测值。
步骤b7,解码端根据当前块的所有子块的预测值确定当前块的组合预测值。
示例性的,针对步骤b2-步骤b7,其实现过程可以参见步骤a2-步骤a7,不同之处在于,步骤b2-步骤b7是解码端的处理流程,而不是编码端的处理流程,在此不再赘述。
在实施例1-实施例3中,涉及分组索引预测角度,该分组索引预测角度可以是任意角度,如180度内任意角度,或360度内任意角度,对此分组索引预测角度不做限制,如10度,20度等。在一种可能的实施方式中,分组索引预测角度可以为水平角度;或者,分组索引预测角度可以为垂直角度;或者,分组索引预测角度的斜率的绝对值(分组索引预测角度的斜率的绝对值也就是分组索引预测角度的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次方)等。参见图5所示,示出了8种分组索引预测角度,这些分组索引预测角度的斜率的绝对值为2的n次方。
本实施例中,可以对分组索引预测角度进行移位操作,关于对分组索引预测角度进行移位操作的例子参见后续实施例,因此,在分组索引预测角度的斜率的绝对值为2的n次方时,在对分组索引预测角度进行移位操作时,可以避免出现除法操作,从而方便的进行移位实现。不同块尺寸(即当前块的尺寸)支持的分组索引预测角度的数量可以相同或者不同。例如,块尺寸A支持8种分组索引预测角度,块尺寸B和块尺寸C支持6种分组索引预测角度等。
实施例4:在上述实施例1-实施例3中,编码端/解码端可以根据当前块的分组索引变换率和当前块的分组索引变换的起始位置为当前块外部的周边位置配置参考分组索引值。例如,针对当前块外部的每个周边位置,根据该周边位置的坐标值,该分组索引变换的起始位置的坐标值,以及该分组索引变换率,配置该周边位置的参考分组索引值。针对每个周边位置,若该周边位置是当前块外部上侧一行的周边位置,则该周边位置的坐标值是横坐标值,分组索引变换的起始位置的坐标值是横坐标值。若该周边位置是当前块外部左侧一列的周边位置,则该周边位置的坐标值是纵坐标值,分组索引变换的起始位置的坐标值是纵坐标值。
示例性的,可以将当前块左上角的像素位置(如左上角的第一个像素位置)作为坐标原点,当前块的周边位置的坐标值(如横坐标值或纵坐标值)和分组索引变换的起始位置的坐标值(如横坐标值或纵坐标值),均是相对于该坐标原点的坐标值。当然,也可以将当前块的其它像素位置作为坐标原点,实现方式与左上角的像素位置作为坐标原点的实现方式类似。
在一种可能的实施方式中,可以确定周边位置的坐标值与分组索引变换的起始位置的坐标值的差值,确定该差值与当前块的分组索引变换率的乘积值。若乘积值小于第一数值(参考分组索引值的最小值,如0),确定该周边位置关联的参考分组索引值为第一数值;若乘积值大于第二数值(参考分组索引值的最大值,如8),确定该周边位置关联的参考分组索引值为第二数值;若乘积值不小于第一数值,且该乘积值不大于第二数值,确定该周边位置关联的参考分组索引值为该乘积值。或者,可以根据周边位置的坐标值与分组索引变换的起始位置的坐标值的大小关系,确定周边位置关联的参考分组索引值。例如,若周边位置的坐标值小于分组索引变换的起始位置的坐标值,确定周边位置关联的参考分组索引值为第一数值;若周边位置的坐标值不小于分组索引变换的起始位置的坐标值,确定周边位置关联的参考分组索引值为第二数值。又例如,若周边位置的坐标值小于分组索引变换的起始位置的坐标值,确定周边位置关联的参考分组索引值为第二数值;若周边位置的坐标值不小于分组索引变换的起始位置的坐标值,确定周边位置关联的参考分组索引值为第一数值。
在上述实施例1-实施例3中,编码端/解码端可以根据当前块的分组索引变换的起始位置为当前块外部的周边位置配置参考分组索引值。例如,针对当前块外部的每个周边位置,根据该周边位置的坐标值,以及该分组索引变换的起始位置的坐标值,配置该周边位置的参考分组索引值。在一种可能的实施方式中,可以确定周边位置的坐标值与分组索引变换的起始位置的坐标值的差值,若该差值小于第一数值(如0),则确定该周边位置关联的参考分组索引值为第一数值;若该差值大于第二数值(如8),则确定该周边位置关联的参考分组索引值为第二数值;若该差值不小于第一数值,且该差值不大于第二数值,则确定该周边位置关联的参考分组索引值为该差值。或者,还可以根据周边位置的坐标值与分组索引变换的起始位置的坐标值的大小关系,确定周边位置关联的参考分组索引值。
在上述实施例中,第一数值和第二数值均可以根据经验配置,且第一数值小于第二数值,对此第一数值和第二数值均不做限制。例如,第一数值是预先约定的参考分组索引值的最小值,如0,第二数值是预先约定的参考分组索引值的最大值,如8,当然,0和8也只是示例。
参见图4C所示,在将所有的周边位置8等分后,可以得到7个分组索引预测位置,当分组索引预测位置为0时,表示周边位置a0,分组索引变换的起始位置的坐标值为周边位置a0的坐标值。当分组索引预测位置为1时,表示周边位置a1,分组索引变换的起始位置的坐标值为周边位置a1的坐标值,以此类推,对此分组索引变换的起始位置的坐标值不做限制。
实施例5:在上述实施例1-实施例3中,编码端/解码端可以根据周边匹配位置关联的参考分组索引值确定子块的目标分组索引值,而周边匹配位置关联的参考分组索引值,可以是为该周边匹配位置配置的参考分组索引值,也可以采用如下方式确定周边匹配位置关联的参考分组索引值:周边匹配位置关联的参考分组索引值,可以是根据该周边匹配位置的坐标值与分组索引变换的起始位置的坐标值(如分组索引预测位置的坐标值)确定。
示例性的,若周边匹配位置是当前块外部上侧一行的周边位置,则周边匹配位置的坐标值是周边匹配位置的横坐标值,分组索引预测位置的坐标值是分组索引预测位置的横坐标值。或者,若周边匹配位置是当前块外部左侧一列的周边位置,则周边匹配位置的坐标值是周边匹配位置的纵坐标值,分组索引预测位置的坐标值是分组索引预测位置的纵坐标值。
示例性的,可以将当前块左上角的像素位置(如左上角的第一个像素位置)作为坐标原点,周边匹配位置的坐标值(如横坐标值或纵坐标值)和分组索引预测位置坐标值(如横坐标值或纵坐标值),均是相对于该坐标原点的坐标值。当然,也可以将当前块的其它像素位置作为坐标原点,实现方式与左上角的像素位置作为坐标原点类似,后续不再赘述。
示例性的,在根据周边匹配位置的坐标值与分组索引预测位置的坐标值,确定周边匹配位置关联的参考分组索引值时,计算周边匹配位置的坐标值与分组索引预测位置的坐标值的差值。若该差值小于第一数值,确定周边匹配位置关联的参考分组索引值为第一数值;若该差值大于第二数值,确定周边匹配位置关联的参考分组索引值为第二数值;若该差值不小于第一数值,且该差值不大于第二数值,确定周边匹配位置关联的参考分组索引值为该差值。
示例性的,在根据周边匹配位置的坐标值与分组索引预测位置的坐标值,确定周边匹配位置关联的参考分组索引值时,还可以根据周边匹配位置的坐标值与分组索引预测位置的坐标值的大小关系,直接确定周边匹配位置关联的参考分组索引值。例如,若周边匹配位置的坐标值小于分组索引预测位置的坐标值,则确定周边匹配位置关联的参考分组索引值为第一数值;若周边匹配位置的坐标值不小于分组索引预测位置的坐标值,则确定周边匹配位置关联的参考分组索引值为第二数值。或者,若周边匹配位置的坐标值小于分组索引预测位置的坐标值,则确定周边匹配位置关联的参考分组索引值为第二数值;若周边匹配位置的坐标值不小于分组索引预测位置的坐标值,则确定周边匹配位置关联的参考分组索引值为第一数值。
示例性的,第一数值和第二数值均可以根据经验配置,且第一数值小于第二数值,对此第一数值和第二数值均不做限制。例如,第一数值可以是预先约定的参考分组索引值的最小值,如0,第二数值可以是预先约定的参考分组索引值的最大值,如1,8等。
以下结合几个具体应用场景,对上述参考分组索引值的确定过程进行说明。假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高。X为分组索引预测角度的tan值的log2对数值,如0或1。Y为分组索引预测位置的索引值,分组索引预测位置的索引值为0-6,分组索引预测位置的索引值为0时,表示分组索引预测位置是周边位置a0,分组索引预测位置的索引值为1时,表示分组索引预测位置是周边位置a1,以此类推。a,b,c,d为预设常数。
应用场景1:基于当前块的尺寸和分组索引预测角度确定有效数量(也称为参考分组索引有效长度,将有效数量记为ValidLenth)。基于当前块的尺寸,分组索引预测角度和分组索引预测位置确定分组索引预测位置的坐标值(将分组索引预测位置的坐标值记为FirstPos)。
例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1,在上述公式中,N和M是当前块的尺寸,X基于当前块的分组索引预测角度确定,>>X表示右移X位,<<1表示左移1位。在后续实施例中,>>就表示右移,<<均表示左移,后续不再赘述。
可以通过如下公式确定分组索引预测位置的坐标值:FirstPos=(ValidLength>>1)-a+Y*((ValidLength-1)>>3),ValidLength是基于当前块的尺寸和分组索引预测角度确定,Y为分组索引预测位置的索引值,如当前块的分组索引预测位置为分组索引预测位置4时,Y为4。
然后,针对当前块的每个子块的,根据该子块的预设位置指向的周边匹配位置的坐标值与分组索引预测位置的坐标值,确定周边匹配位置关联的参考分组索引值,这个参考分组索引值就是该子块的目标分组索引值。例如,可以通过如下公式导出当前块的每个子块目标分组索引值:SubBlockGroupIdx[x][y]=Clip3(0,1,(y<<1)+((x<<1)>>X)-FirstPos)。
在上述公式中,[x][y]表示子块的预设位置的坐标,SubBlockGroupIdx[x][y]表示该子块的目标分组索引值。(y<<1)+((x<<1)>>X)表示子块的预设位置位置[x][y]指向的周边匹配位置(即基于分组索引预测角度指向的周边匹配位置)的坐标值。(y<<1)+((x<<1)>>X)–FirstPos,即周边匹配位置的坐标值与分组索引预测位置的坐标值的差值。Clip3(0,1,(y<<1)+((x<<1)>>X)-FirstPos)是该周边匹配位置关联的参考分组索引值,即该子块的目标分组索引值。Clip3(0,1,(y<<1)+((x<<1)>>X)-FirstPos),表示将周边匹配位置的坐标值与分组索引预测位置的坐标值的差值限制在0与1之间,0表示上述第一数值,1表示上述第二数值。比如说,若差值小于0,则SubBlockGroupIdx[x][y]为0,若差值大于1,则SubBlockGroupIdx[x][y]为1,若该差值不小于0,且该差值不大于1,则SubBlockGroupIdx[x][y]为该差值,当然,此处是两组的情况,因此只存在,0与1两个分组。
应用场景2:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1。可以通过如下公式确定分组索引预测位置的坐标值:FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X)。可以通过如下公式导出当前块的每个子块的目标分组索引值:SubBlockGroupIdx[x][y]=Clip3(0,1,(y<<1)-((x<<1)>>X)-FirstPos)。
应用场景3:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1。可以通过如下公式确定分组索引预测位置的坐标值:FirstPos=(ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X)。可以通过如下公式导出当前块的每个子块的目标分组索引值:SubBlockGroupIdx[x][y]=Clip3(0,1,(x<<1)-((y<<1)>>X)-FirstPos)。
应用场景4:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1。可以通过如下公式确定分组索引预测位置的坐标值:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。可以通过如下公式导出当前块的每个子块的目标分组索引值:SubBlockGroupIdx[x][y]=Clip3(0,1,(x<<1)+((y<<1)>>X)-FirstPos)。示例性的,针对应用场景2、应用场景3和应用场景4来说,其实现原理与应用场景1的实现原理类似,不同之处在于,相关公式有所不同,在此不再重复赘述。
应用场景5:与应用场景1不同的是,本应用场景中,需要获取当前块的两个分组索引预测位置,例如,针对编码端来说,基于两个分组索引预测位置对应的率失真代价值,确定当前块的两个分组索引预测位置,且编码比特流中携带两个分组索引预测位置的指示信息。针对解码端来说,根据该指示信息确定两个分组索引预测位置。两个分组索引预测位置的获取方式与一个分组索引预测位置的获取方式类似,在此不再重复赘述。
假设两个分组索引预测位置分别为分组索引预测位置a和分组索引预测位置b,Y1为分组索引预测位置a的索引值,Y2为分组索引预测位置b的索引值。
基于当前块的尺寸和分组索引预测角度确定有效数量(可以将有效数量记为ValidLenth),例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1。示例性的,有效数量的确定公式还可以替换为应用场景2-应用场景4中的公式,在此不再赘述。
基于当前块的尺寸,分组索引预测角度和分组索引预测位置a确定分组索引预测位置a的坐标值(将分组索引预测位置a的坐标值记为FirstPos_a),基于当前块的尺寸,分组索引预测角度和分组索引预测位置b确定分组索引预测位置b的坐标值(将分组索引预测位置b的坐标值记为FirstPos_b)。例如,与应用场景1类似,可以通过如下公式确定分组索引预测位置a的坐标值:FirstPos_a=(ValidLength>>1)-a+Y1*((ValidLength-1)>>3)。通过如下公式确定分组索引预测位置b的坐标值:FirstPos_b=(ValidLength>>1)-a+Y2*((ValidLength-1)>>3)。
示例性的,分组索引预测位置的坐标值的确定公式,还可以替换为应用场景2-应用场景4中的公式,只是分组索引预测位置的索引值替换为Y1或Y2,在此不再赘述。
然后,针对当前块的每个子块,根据该子块的预设位置位置指向的周边匹配位置的坐标值,分组索引预测位置a的坐标值FirstPos_a,分组索引预测位置b的坐标值FirstPos_b,确定周边匹配位置关联的参考分组索引值,这个参考分组索引值就是该子块的目标分组索引值。
例如,假设FirstPos_a小于FirstPos_b,设置FirstPos_c=(FirstPos_a+FirstPos_b)/2,若周边匹配位置的坐标值小于FirstPos_c,则SubBlockGroupIdx[x][y]=Clip3(0,1,(y<<1)+((x<<1)>>X)-FirstPos_a),在该情况下,周边位置的参考分组索引值从0递增至8。或者,若周边匹配位置的坐标值不小于FirstPos_c,则SubBlockGroupIdx[x][y]=Clip3(0,1,FirstPos_b-(y<<1)+((x<<1)>>X)),在该情况下,周边位置的参考分组索引值从8递减至0。
在上述公式中,[x][y]表示子块的预设位置的坐标,SubBlockGroupIdx[x][y]表示该子块的的目标分组索引值,(y<<1)+((x<<1)>>X)表示子块的预设位置[x][y]指向的周边匹配位置的坐标值。
基于应用场景5,能够达到如下效果:当前块的周边位置的参考分组索引值,从0递增至8,然后从8递减至0;或者,当前块的周边位置的参考分组索引值,从8递减至0,然后从0递增至8。例如,当前块的周边位置的参考分组索引值可以依次为[0...0000123456788...8876543210000...0],或者,当前块的周边位置的参考分组索引值可以依次为[8...8888765432100...0012345678888...8],或者,当前块的周边位置的参考分组索引值可以依次为[0...00024688...88642000...0],或者,当前块的周边位置的参考分组索引值可以依次为[8...88864200...00246888...8]等,对此参考分组索引值不做限制。示例性的,分组索引预测位置a与分组索引预测位置b的融合(blending)的参考分组索引值不重叠。
实施例6:在实施例1-实施例3中,编码端/解码端根据当前块的分组索引变换率和当前块的分组索引变换的起始位置为当前块外部的周边位置配置参考分组索引值。比如说,可以采用如下方式:获取当前块的分组索引预测角度、当前块的分组索引变换率和当前块的分组索引预测位置,基于当前块的分组索引预测位置确定当前块的分组索引变换的起始位置,基于该分组索引变换的起始位置和该分组索引变换率确定分组索引配置参数,即该分组索引配置参数可以包括分组索引变换的起始位置和分组索引变换率。然后,根据该分组索引配置参数确定当前块外部的周边位置的参考分组索引值。例如,可以采用如下方式确定参考分组索引值:y=Clip3(最小值,最大值,k),k表示对a*(x-s)进行取整。比如说,k表示对a*(x-s)进行向下取整,或者,k表示对a*(x-s)进行向上取整,或者,采用其它取整方式,对此取整方式不做限制,在后续实施例中,以k表示对a*(x-s)进行向下取整为例。
示例性的,x表示周边位置的索引,a表示分组索引变换率,s表示分组索引变换的起始位置。综上所述,针对当前块外部的每个周边位置,根据该周边位置的索引,分组索引变换的起始位置以及该分组索引变换率,配置该周边位置的参考分组索引值。
编码端/解码端根据当前块的分组索引变换的起始位置为当前块外部的周边位置配置参考分组索引值。比如说,可以采用如下方式:获取当前块的分组索引预测角度和当前块的分组索引预测位置,基于当前块的分组索引预测位置确定当前块的分组索引变换的起始位置,基于该分组索引变换的起始位置确定分组索引配置参数,即该分组索引配置参数包括分组索引变换的起始位置。根据该分组索引配置参数确定当前块外部的周边位置的参考分组索引值。例如,采用如下方式确定参考分组索引值:y=Clip3(最小值,最大值,x-s),x表示周边位置的索引,s表示分组索引变换的起始位置。综上所述,针对当前块外部的每个周边位置,根据该周边位置的索引,以及分组索引变换的起始位置,配置该周边位置的参考分组索引值。
显然,在后面这种方式中,没有分组索引变换率这个参数,实际上也就是分组索引变换率为1的情况,为了方便描述,后续以存在分组索引变换率这个参数为例。
以下结合具体步骤,对为当前块外部的周边位置配置参考分组索引值的过程进行说明。
步骤c1、获取有效数量个参考分组索引值。
示例性的,当前块外部的周边位置的数量为有效数量,步骤c1中,需要获取有效数量个参考分组索引值,该有效数量可以是基于当前块的尺寸和/或当前块的分组索引预测角度确定。例如,采用如下方式确定该有效数量:ValidLenth=(N+(M>>X))<<1,N和M分别是当前块的高和宽,X为当前块的分组索引预测角度的斜率的绝对值的log2对数值,如0或1。
在一种可能的实施方式中,针对有效数量个参考分组索引值,可以单调递增或单调递减。或,针对有效数量个参考分组索引值,可以先包括多个第一数值再包括多个第二数值,或,针对有效数量个参考分组索引值,可以先包括多个第二数值再包括多个第一数值。
若当前块外部的周边位置包括当前块外部上侧一行的像素位置,则从左到右的顺序上的参考分组索引值,可以单调递增或单调递减。若当前块外部的周边位置包括当前块外部左侧一列的像素位置,则从上到下的顺序上的参考分组索引值,可以单调递增或单调递减。
示例性的,参考分组索引值可以是根据分组索引配置参数配置的,该分组索引配置参数可以包括分组索引变换率和分组索引变换的起始位置,该分组索引变换率可以是根据经验配置的数值,该分组索引变换的起始位置可以是根据经验配置的数值,也可以由分组索引预测位置确定分组索引变换的起始位置,还可以由分组索引预测角度和分组索引预测位置确定分组索引变换的起始位置,对此不做限制。针对有效数量个参考分组索引值,按照从第一个到最后一个的顺序,可以单调递增或者单调递减。例如,参考分组索引值的最大值为M1,参考分组索引值的最小值为M2,针对有效数量个参考分组索引值,可以从最大值M1至最小值M2单调递减;或者,可以从最小值M2至最大值M1单调递增。
示例性的,可以先获取分组索引变换率和分组索引变换的起始位置,然后,可以根据分组索引变换率和分组索引变换的起始位置,确定多个参考分组索引值。例如,可以采用如下方式确定参考分组索引值:y=Clip3(最小值,最大值,k),k表示对a*(x-s)进行向下取整。x表示周边位置的索引,x的取值范围是0-(有效数量值-1),x为0,表示第1个周边位置,y表示第1个周边位置的参考分组索引值,x为1,表示第2个周边位置,y表示第2个周边位置的参考分组索引值,以此类推。a表示分组索引变换率,s表示分组索引变换的起始位置。
Clip3用于限制参考分组索引值位于最小值与最大值之间,最小值和最大值均可以根据经验配置,为了方便描述,在后续过程中,以最小值为0,最大值为3为例进行说明。
a表示分组索引变换率,a可以是大于0,且小于或者等于1的数值,如a可以是1/8、1/6、1/4、1/2、1等,对此a的取值不做限制。例如,a为1/8时,用于表示连续8个参考分组索引值为同一取值,a为1/4时,用于表示连续4个参考分组索引值为同一取值,以此类推。
s表示分组索引变换的起始位置,s可以由分组索引预测位置确定,例如,s=f(分组索引预测位置),即s是一个与分组索引预测位置有关的函数。例如,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,将所有周边位置进行N等分,N的取值可以任意配置,如4、6、8等,分组索引预测位置用于表示采用当前块外部的哪个周边位置作为分组索引变换的起始位置。或,s可以由分组索引预测角度和分组索引预测位置确定,例如,s=f(分组索引预测角度,分组索引预测位置),即s是一个与分组索引预测角度和分组索引预测位置有关的函数。例如,可以根据分组索引预测角度确定当前块外部的周边位置的范围,在当前块外部的周边位置的范围确定后,确定周边位置的有效数量,将所有周边位置进行N等分,分组索引预测位置用于表示采用当前块外部的哪个周边位置作为分组索引变换的起始位置。
综上所述,在y=Clip3(最小值,最大值,k),k表示对a*(x-s)进行向下取整,a和s均为已知值,针对当前块外部的每个周边位置,可以通过该函数关系确定该周边位置的参考分组索引值。例如,假设a为1/4,s为2,则该函数关系可以为y=Clip3(0,3,k),k表示对1/4*(x-2)进行向下取整,针对当前块外部的每个周边位置x,可以得到参考分组索引值y。
显然,若参考分组索引值的有效数量为20,则可以将0-19中的任意x的取值代入上述公式,得到所有周边位置的参考分组索引值依次为:00000011112222333333。在上述参考分组索引值中,0000111122223333表示连续4个参考分组索引值为同一取值。
在y=Clip3(最小值,最大值,k)中,若最小值为0,最大值为1,则20个参考分组索引值依次为:00000011111111111111。在y=Clip3(最小值,最大值,k)中,若最小值为0,最大值为2,则20个参考分组索引值依次为:00000011112222222222,以此类推。
综上所述,可以得到当前块的有效数量个参考分组索引值,这些参考分组索引值单调递增或单调递减,当前块外部的周边位置可以包括至少两个区域,每个区域可以包括至少一个周边位置,同一区域内的周边位置的参考分组索引值可以相同,不同区域内的周边位置的参考分组索引值可以相同,不同区域内的周边位置的参考分组索引值也可以不同。
例如,若至少两个区域为两个区域,则一个区域内的周边位置的参考分组索引值,与另一个区域内的周边位置的参考分组索引值不同。比如说,最小值为0,最大值为1,当前块外部的周边位置包括区域1和区域2,区域1可以包括6个周边位置,这些周边位置的参考分组索引值均为0,区域2可以包括14个周边位置,这些周边位置的参考分组索引值均为1。
若至少两个区域为至少三个区域,则相邻的两个区域内的周边位置的参考分组索引值可以不同,不相邻的两个区域内的周边位置的参考分组索引值可以相同或不同,以不相邻的两个区域内的周边位置的参考分组索引值不同为例。比如说,最小值为0,最大值为2,当前块外部的周边位置可以依次包括区域1、区域2和区域3,区域1可以包括6个周边位置,这些周边位置的参考分组索引值均为0,区域2可以包括4个周边位置,这些周边位置的参考分组索引值均为1,区域3可以包括10个周边位置,这些周边位置的参考分组索引值均为2。
在上述实施例中,参考分组索引值为0、1、2等,只是本申请用于表示不同分组的示例,对此参考分组索引值不做限制,如还可以用w、p、r等区分不同的参考分组索引值。
在一种可能的实施方式中,若参考分组索引值只有两种取值,还可以根据分组索引变换的起始位置确定参考分组索引值。例如,分组索引变换的起始位置表示第s个参考分组索引值,因此,第s个参考分组索引值之前(不包括第s个参考分组索引值)的所有参考分组索引值为第一数值(如0),第s个参考分组索引值之后(包括第s个参考分组索引值)的所有参考分组索引值为第二数值(如1)。或者,第s个参考分组索引值之前的所有参考分组索引值为第二数值,第s个参考分组索引值之后的所有参考分组索引值为第一数值。
步骤c2,根据有效数量个参考分组索引值,配置当前块外部的周边位置的参考分组索引值。由于当前块外部的周边位置的数量为有效数量,且参考分组索引值的数量为有效数量,因此,可以将有效数量个参考分组索引值,配置为当前块外部的周边位置的参考分组索引值。例如,将第1个参考分组索引值配置为当前块外部的第1个周边位置的参考分组索引值,将第2个参考分组索引值配置为当前块外部的第2个周边位置的参考分组索引值,以此类推。
综上所述,由于已经为当前块外部的周边位置配置参考分组索引值,即每个周边位置均具有参考分组索引值,因此,在从当前块外部的周边位置中确定子块的预设位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考分组索引值,即该子块的目标分组索引值。
实施例7:在实施例1-实施例3中,编码端/解码端可以根据当前块的分组索引分割位置为当前块外部的周边位置配置参考分组索引值。比如说,可以采用如下方式:获取当前块的分组索引分割位置,然后,根据该分组索引分割位置确定当前块外部的周边位置的参考分组索引值。例如,可以采用如下分组函数确定当前块外部的周边位置的参考分组索引值:
Figure BDA0002876388560000221
在上述分组函数中,A,…,D等为参考分组索引值,如0、1、2等,x表示当前块外部的周边位置坐标,L表示当前块尾部的周边位置数量(即最大值),K、P等表示当前块的分组索引分割位置的取值。例如,若周边位置x的取值大于等于0且小于等于K,则周边位置x的参考分组索引值为A,若周边位置x的取值大于P且小于等于L,则周边位置x的参考分组索引值为D。若分割点K与P直接有更多的分割点,则以此类推。
示例性的,分组索引分割位置用于表示从当前块外部的哪个周边位置开始分割,从而将当前块外部的周边位置分割成至少两个区域,在一种可能的实施方式中,可以基于当前块外部周边位置的有效数量确定分组索引分割位置,如有效数量的1/4,有效数量的1/2,有效数量的3/4等中的一个或多个。当然,也可以采用其它方式确定分组索引分割位置,对此不做限制。
在一种可能的实施方式中,编码端和解码端可以预先约定分组索引分割位置,如预先约定有效数量的1/4,有效数量的1/2,有效数量的3/4作为分组索引分割位置。或者,编码端和解码端可以预先约定多个位置,编码端可以采用率失真代价值从所有位置中选取部分位置作为分组索引分割位置,并将分组索引分割位置的指示信息编码到当前块的码流中,解码端从码流中解析出分组索引分割位置的指示信息,基于该指示信息,从所有位置中选取部分位置作为分组索引分割位置。比如说,基于分组索引分割位置的指示信息,0表示将有效数量的1/4作为分组索引分割位置,1表示将有效数量的1/2作为分组索引分割位置,2表示将有效数量的3/4作为分组索引分割位置。3表示将有效数量的1/4以及有效数量的3/4作为分组索引分割位置等等,本实施例对此分组索引分割位置的确定方式不做限制。
综上所述,在上述分组函数中,分段函数的分割点的值(即K、P等),可以为valid_length/4,valid_length/2,3*valid_length/4中的一个或多个,valid_length为有效数量,即L等于valid_length。
实施例8:在上述实施例1-实施例3中,编码端/解码端根据当前块的分组索引变换率和当前块的分组索引变换的起始位置为当前块外部的周边位置配置参考分组索引值。在一种可能的实施方式中,记M和N是当前块的宽和高,组合预测(Combined Prediction)的分组索引阵列导出方式,可以包括:
步骤s1,根据CpIdx获取stepIdx,angleIdx以及subAngleIdx等参数。
示例性的,CpIdx表示分组索引预测位置和分组索引预测角度的索引值,假设对于某个尺寸的编码单元,存在7种分组索引预测位置,8种分组索引预测角度,则CpIdx的取值范围是0-55。若分组索引预测位置为-3至3(表示第4个分组索引预测位置是中心,第4个分组索引预测位置为0),分组索引预测角度的索引为0-7,则CpIdx的56个索引值对应的分组索引预测位置和分组索引预测角度的排列方式可以包括:
排列方式1:
{角度0,跨度-3},{角度1,跨度-3},...,{角度6,跨度-3},{角度7,跨度-3};
{角度0,跨度-2},{角度1,跨度-2},...,{角度6,跨度-2},{角度7,跨度-2};
{角度0,跨度-1},{角度1,跨度-1},...,{角度6,跨度-1},{角度7,跨度-1};
{角度0,跨度0},{角度1,跨度0},...,{角度6,跨度0},{角度7,跨度0};
{角度0,跨度1},{角度1,跨度1},...,{角度6,跨度1},{角度7,跨度1};
{角度0,跨度2},{角度1,跨度2},...,{角度6,跨度2},{角度7,跨度2};
{角度0,跨度3},{角度1,跨度3},...,{角度6,跨度3},{角度7,跨度3}。
排列方式2:
{角度0,跨度0},{角度1,跨度0},...,{角度6,跨度0},{角度7,跨度0};
{角度0,跨度-1},{角度1,跨度-1},...,{角度6,跨度-1},{角度7,跨度-1};
{角度0,跨度1},{角度1,跨度1},...,{角度6,跨度1},{角度7,跨度1};
{角度0,跨度-2},{角度1,跨度-2},...,{角度6,跨度-2},{角度7,跨度-2};
{角度0,跨度2},{角度1,跨度2},...,{角度6,跨度2},{角度7,跨度2};
{角度0,跨度-3},{角度1,跨度-3},...,{角度6,跨度-3},{角度7,跨度-3};
{角度0,跨度3},{角度1,跨度3},...,{角度6,跨度3},{角度7,跨度3}。
在上述排列方式1和排列方式2中,角度0表示8种分组索引预测角度中的第一种分组索引预测角度,角度1表示8种分组索引预测角度中的第二种分组索引预测角度,以此类推。
跨度0表示7种分组索引预测位置中的第4个分组索引预测位置(即处于中心的分组索引预测位置),跨度-1表示第4个分组索引预测位置左侧第一个分组索引预测位置(即表示7种分组索引预测位置中的第3个分组索引预测位置),跨度1表示第4个分组索引预测位置右侧第一个分组索引预测位置(即表示7种分组索引预测位置中的第5个分组索引预测位置),跨度-2表示第4个分组索引预测位置左侧第二个分组索引预测位置(即表示7种分组索引预测位置中的第2个分组索引预测位置),以此类推。
在排列方式1中,{角度0,跨度-3}对应的CpIdx为0,{角度1,跨度-3}对应的CpIdx为1,{角度2,跨度-3}对应的CpIdx为2,以此类推,{角度7,跨度3}对应的CpIdx为55,按照排列方式1的顺序,CpIdx依次增加。在排列方式2中,{角度0,跨度0}对应的CpIdx为0,{角度1,跨度0}对应的CpIdx为2,{角度2,跨度0}对应的CpIdx为3,以此类推,{角度7,跨度3}对应的CpIdx为55,按照排列方式2的顺序CpIdx依次增加。
当CpIdx的取值越小时,码率代价越小,当CpIdx的取值越大时,码率代价越大,因此,CpIdx的前面取值的码率代价会低于后面取值的码率代价。基于上述原因,排列方式2中,将“跨度0”的分组索引预测位置放置于最前面,即“跨度0”的分组索引预测位置与8种分组索引预测角度的组合,其CpIdx的取值是前8种取值,其码率代价最小。又由于“跨度0”的分组索引预测位置被选中的概率较大,因此,排列方式2能够降低编码的码率代价。
示例性的,stepIdx表示分组索引预测位置(即分组索引预测位置的索引值),分组索引预测位置的范围可以是-3至3。例如,针对第1个分组索引预测位置,分组索引预测位置为-3,针对第2个分组索引预测位置,分组索引预测位置为-2,以此类推。angleIdx表示分组索引预测角度的斜率的绝对值的log2对数值(如0或1或较大常数),subAngleIdx表示分组索引预测角度所在的角度分区。分组索引预测角度0的angleIdx为分组索引预测角度0的斜率的绝对值的log2对数值,分组索引预测角度1的angleIdx为分组索引预测角度1的斜率的绝对值的log2对数值,以此类推,分组索引预测角度7的angleIdx为分组索引预测角度7的斜率的绝对值的log2对数值。分组索引预测角度0和分组索引预测角度1位于角度分区0,分组索引预测角度2和分组索引预测角度3位于角度分区1,分组索引预测角度4和分组索引预测角度5位于角度分区2,分组索引预测角度6和分组索引预测角度7位于角度分区3。
综上所述,根据CpIdx获取stepIdx,angleIdx以及subAngleIdx,可以包括:
可以采用如下公式确定stepIdx:
Figure BDA0002876388560000241
可以根据如下公式确定modAngNum(角度编号):modAngNum=CpIdx%8;基于modAngNum,可以采用如下方式确定angleIdx:若modAngNum等于2,则angleIdx=7;若modAngNum等于6,则angleIdx=8;否则,angleIdx=modAngNum%2。
可以采用如下公式确定subAngleIdx:subAngleIdx=modAngNum>>1。
综上所述,编码端在确定出当前块的分组索引预测角度和当前块的分组索引预测位置后,可以基于该分组索引预测角度和该分组索引预测位置确定CpIdx的取值,参见排列方式1或者排列方式2。编码端向解码端发送编码比特流时,该编码比特流携带CpIdx的取值,基于此,解码端得到CpIdx的取值,并根据CpIdx获取stepIdx,angleIdx以及subAngleIdx。stepIdx能够唯一确定一个分组索引预测位置,angleIdx以及subAngleIdx能够唯一确定一个分组索引预测角度,当然,也可以采用其它方式确定分组索引预测角度,如更改分区编号等。
步骤s2,根据stepIdx,angleIdx和subAngleIdx为当前块外部周边位置配置参考分组索引值。
情况一、若subAngleIdx为0,即分组索引预测角度位于角度分区0,比如说,分组索引预测角度为分组索引预测角度0或分组索引预测角度1,则可以采用如下公式确定分组索引变换的起始位置FirstPos:FirstPos=(ValidLength_H>>1)-3+DeltaPos_H。然后,采用如下公式确定当前块外部的周边位置的参考分组索引值:ReferenceGroupIdx[x]=Clip3(0,1,x-FirstPos),在该公式中,是以参考分组索引值的最小值为0,参考分组索引值的最大值为1,分组索引变换率为1为例进行说明,也就是说,上述公式可以等价为ReferenceGroupIdx[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)-1+DeltaPos_H–((M<<1)>>angleIdx)。然后,采用如下公式确定当前块外部的周边位置的参考分组索引值:ReferenceGroupIdx[x]=Clip3(0,1,a*(x-FirstPos)),在该公式中,是以参考分组索引值的最小值为0,参考分组索引值的最大值为1,分组索引变换率为a为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_H-1。
在上述公式中,ValidLength_H和DeltaPos_H可以参见情况一,在此不再赘述。
情况三、若subAngleIdx为2,即分组索引预测角度位于角度分区2,比如说,分组索引预测角度为分组索引预测角度4或分组索引预测角度5,则可以采用如下公式确定分组索引变换的起始位置FirstPos:FirstPos=(ValidLength_W>>1)-1+DeltaPos_W–((N<<1)>>angleIdx)。然后,采用如下公式确定当前块外部的周边位置的参考分组索引值:ReferenceGroupIdx[x]=Clip3(0,1,a*(x-FirstPos)),在该公式中,是以参考分组索引值的最小值为0,参考分组索引值的最大值为1,分组索引变换率为a为例进行说明。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)-3+DeltaPos_W。然后,可以采用如下公式确定当前块外部的周边位置的参考分组索引值:ReferenceGroupIdx[x]=Clip3(0,1,a*(x-FirstPos)),在该公式中,是以参考分组索引值的最小值为0,参考分组索引值的最大值为1,分组索引变换率为a为例进行说明。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配置参考分组索引值。
上述各情况中的公式的区别在于,将当前块的左上角作为坐标原点时,参考分组索引值ReferenceGroupIdx[x]的起始位置发生了变化。针对角度分区2和角度分区3的示例,在1/2-pel精度时,参考分组索引值ReferenceGroupIdx[x]的起始位置为(高<<1)>>angleIdx,即公式中的偏移“–((N<<1)>>angleIdx)”。角度分区0和角度分区1的实现类似,只是公式中的偏移为“–((M<<1)>>angleIdx)”,即高度改为宽度即可。
步骤s3,根据angleIdx和参考分组索引值ReferenceGroupIdx[x]获取每个亮度子块的分组索引值,即子块的预设位置的亮度分组索引值作为该亮度子块的分组索引值。
情况一、若subAngleIdx为0,采用如下公式确定亮度子块的分组索引值:CpWeightArrayY[x][y]=ReferenceGroupIdx[(y<<1)+((x<<1)>>angleIdx)],(y<<1)+((x<<1)>>angleIdx)表示子块的预设位置(x,y)指向的周边位置,ReferenceGroupIdx[(y<<1)+((x<<1)>>angleIdx)]表示该周边位置的参考分组索引值。当子块均为4x4时,x取值范围是0~M/4-1,y取值范围是0~N/4-1,当子块均为8x8时,x的取值范围是0~M/8-1,y的取值范围是0~N/8-1。当其他划分时,根据子块位置和大小限制x,y的取值。
情况二、若subAngleIdx为1,则采用如下公式确定亮度子块的分组索引值:CpWeightArrayY[x][y]=ReferenceGroupIdx[(y<<1)-((x<<1)>>angleIdx)],(y<<1)-((x<<1)>>angleIdx)表示子块的预设位置(x,y)指向的周边位置,ReferenceGroupIdx[(y<<1)-((x<<1)>>angleIdx)]表示该周边位置的参考分组索引值。当子块均为4x4时,x的取值范围是0~M/4-1;y的取值范围是0~N/4-1,当子块均为8x8时,x的取值范围是0~M/8-1,y的取值范围是0~N/8-1。当其他划分时,根据子块位置和大小限制x,y的取值。
情况三、若subAngleIdx为2,则采用如下公式确定亮度子块的分组索引值:CpWeightArrayY[x][y]=ReferenceGroupIdx[(x<<1)-((y<<1)>>angleIdx)],(x<<1)-((y<<1)>>angleIdx)表示子块的预设位置(x,y)指向的周边位置,ReferenceGroupIdx[(x<<1)-((y<<1)>>angleIdx)]表示该周边位置的参考分组索引值。当子块均为4x4时,x的取值范围是0~M/4-1;y的取值范围是0~N/4-1,当子块均为8x8时,x的取值范围是0~M/8-1,y的取值范围是0~N/8-1。当其他划分时,根据子块位置和大小限制x,y的取值。
情况四、若subAngleIdx为3,则采用如下公式确定亮度子块的分组索引值:CpWeightArrayY[x][y]=ReferenceGroupIdx[(x<<1)+((y<<1)>>angleIdx)],(x<<1)+((y<<1)>>angleIdx)表示子块的预设位置(x,y)指向的周边位置,ReferenceGroupIdx[(x<<1)+((y<<1)>>angleIdx)]表示该周边位置的参考分组索引值。当子块均为4x4时,x取值范围是0~M/4-1;y取值范围是0~N/4-1,当子块均为8x8时,x的取值范围是0~M/8-1,y的取值范围是0~N/8-1。当其他划分时,根据子块位置和大小限制x,y的取值。
步骤s4,根据亮度子块的分组索引值获取色度子块的分组索引值,而像素位置的亮度分组索引值和像素位置的色度分组索引值,就组成该像素位置的目标分组索引值。
例如,若色度分辨率的格式为4:2:0,则采用如下公式确定像素位置(x,y)的色度分组索引值:CpWeightArrayUV[x][y]=AwpWeightArrayY[x<<1][y<<1]。又例如,若色度分辨率的格式为4:4:4,则采用如下公式确定色度子块的分组索引值:CpWeightArrayUV[x][y]=CpWeightArrayY[x][y]。其中,当子块均为4x4时,x的取值范围是0~M/8-1;y的取值范围是0~N/8-1。
步骤s4的另一种实现方式为:
根据angleIdx和参考分组索引值ReferenceGroupIdx[x]获取色度子块的分组索引值。例如,若色度分辨率的格式为4:2:0,则根据angleIdx和参考分组索引值ReferenceGroupIdx[x]获取像素位置的色度分组索引值。
例如,若subAngleIdx为0,则可以采用如下公式确定色度子块的分组索引值:CpWeightArrayUV[x][y]=ReferenceGroupIdx[(y<<2)+((x<<2)>>angleIdx)]。
例如,若subAngleIdx为1,则可以采用如下公式确定色度子块的分组索引值:CpWeightArrayUV[x][y]=ReferenceGroupIdx[(y<<2)-((x<<2)>>angleIdx)]。
例如,若subAngleIdx为2,则可以采用如下公式确定色度子块的分组索引值:CpWeightArrayUV[x][y]=ReferenceGroupIdx[(x<<2)-((y<<2)>>angleIdx)]。
例如,若subAngleIdx为3,则可以采用如下公式确定色度子块的分组索引值:CpWeightArrayUV[x][y]=ReferenceGroupIdx[(x<<2)+((y<<2)>>angleIdx)]。
在上述各公式中,当子块均为4x4时,x的取值范围是0~M/8-1,y的取值范围是0~N/8-1,当子块均为8x8时,x的取值范围是0~M/16-1,y的取值范围是0~N/16-1。当其他划分时,根据子块位置和大小限制x,y的取值。
在步骤s3和步骤s4中,将当前块的左上角作为坐标原点时,(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)的位置即可。
实施例9:在实施例1-实施例3中,编码端/解码端需要获取当前块的分组索引预测角度和分组索引预测位置,如采用如下方式获取分组索引预测角度和分组索引预测位置:
编码端和解码端约定相同的分组索引预测角度作为当前块的分组索引预测角度,并约定相同的分组索引预测位置作为当前块的分组索引预测位置。例如,将分组索引预测角度0作为当前块的分组索引预测角度,或将分组索引预测位置4作为当前块的分组索引预测位置。
在另一种可能的实施方式中,编码端构建分组索引预测角度列表,该分组索引预测角度列表包括至少一个分组索引预测角度,如8种分组索引预测角度(0至7)。编码端构建分组索引预测位置列表,该分组索引预测位置列表包括至少一个分组索引预测位置,如7种分组索引预测位置(0至6)。编码端依次遍历分组索引预测角度列表中每个分组索引预测角度,遍历分组索引预测位置列表中每个分组索引预测位置,即遍历每个分组索引预测角度及每个分组索引预测位置的组合。将每个组合作为步骤a1中获取的分组索引预测角度和分组索引预测位置,基于该分组索引预测角度及该分组索引预测位置,得到当前块的组合预测值。
例如,编码端遍历到分组索引预测角度0和分组索引预测位置0时,基于分组索引预测角度0和分组索引预测位置0得到当前块的组合预测值。遍历到分组索引预测角度1和分组索引预测位置0时,基于分组索引预测角度1和分组索引预测位置0得到当前块的组合预测值,以此类推。基于分组索引预测角度和分组索引预测位置的每个组合,得到当前块的组合预测值。基于分组索引预测角度和分组索引预测位置的组合得到当前块的组合预测值后,编码端可以根据当前块的组合预测值确定出率失真代价值,对此率失真代价值的确定方式不做限制,然后,编码端可以基于每个组合的率失真代价值选择最小率失真代价值。然后,编码端将最小率失真代价值对应的分组索引预测角度和分组索引预测位置组合分别作为目标分组索引预测角度和目标分组索引预测位置,最后,将目标分组索引预测角度在分组索引预测角度列表中的索引值和目标分组索引预测位置在分组索引预测位置列表中的索引值编入码流。
针对解码端来说,解码端构建分组索引预测角度列表,该分组索引预测角度列表与编码端的分组索引预测角度列表相同,该分组索引预测角度列表包括至少一个分组索引预测角度。解码端构建分组索引预测位置列表,该分组索引预测位置列表与编码端的分组索引预测位置列表相同,该分组索引预测位置列表包括至少一个分组索引预测位置。解码端在接收到当前块的编码比特流后,从编码比特流中解析出指示信息,根据该指示信息从分组索引预测角度列表中选择一个分组索引预测角度作为当前块的分组索引预测角度,根据该指示信息从分组索引预测位置列表中选择一个分组索引预测位置作为当前块的分组索引预测位置。
比如说,编码端在向解码端发送编码比特流时,该编码比特流可以包括指示信息,该指示信息用于指示当前块的分组索引预测角度和当前块的分组索引预测位置。解码端在接收到编码比特流后,从该编码比特流中解析出该指示信息,基于该指示信息,解码端可以确定当前块的分组索引预测角度和当前块的分组索引预测位置,对此确定过程不再赘述。
在上述实施例1-实施例9中,涉及分组索引预测角度,在上述实施例中,是以8种分组索引预测角度为例,在实际应用中,分组索引预测角度的数量还可以与当前块的尺寸有关,比如说,若当前块的尺寸越大,则分组索引预测角度的数量越多,当前块的尺寸越小,则分组索引预测角度的数量越少。在上述实施例1-实施例9中,还涉及分组索引预测位置,在上述实施例中,是以7种分组索引预测位置为例,在实际应用中,分组索引预测位置的数量还可以与当前块的尺寸有关,比如说,若当前块的尺寸越大,则分组索引预测位置的数量越多,当前块的尺寸越小,则分组索引预测位置的数量越少。关于分组索引预测角度的数量和分组索引预测位置的数量,本实施例中不做限制,与当前块的尺寸有关即可。
实施例10:在实施例1-实施例3中,针对当前块的每个子块,在确定该子块的目标分组索引值之后,编码端/解码端可以基于该目标分组索引值对应的模式信息确定该子块的预测值,该目标分组索引值对应的模式信息可以为基于帧间预测模式的模式信息,或基于帧内预测模式的模式信息,或基于帧内块拷贝预测模式的模式信息,或基于调色板模式的模式信息。
比如说,若该目标分组索引值对应的模式信息为基于帧间预测模式的模式信息,即该模式信息为该子块的目标运动信息,则基于该子块的目标运动信息确定该子块的预测值。
又例如,若该目标分组索引值对应的模式信息为基于帧内预测模式的模式信息,即该模式信息为该子块的帧内模式信息(如DC模式,Planner模式,水平角度模式和垂直角度模式等各种角度模式),则基于该子块的帧内模式信息确定该子块的预测值。
又例如,若该目标分组索引值对应的模式信息为基于帧内块拷贝预测模式的模式信息,即该模式信息为该子块的块矢量,则基于该子块的块矢量确定该子块的预测值。
又例如,若该目标分组索引值对应的模式信息为基于调色板模式的模式信息,即该模式信息为该子块的调色板,则基于该子块的调色板确定该子块的预测值。
当然,上述只是目标分组索引值对应的模式信息的几个示例,对此不做限制。
在一种可能的实施方式中,在基于目标分组索引值对应的模式信息确定该子块的预测值之前,可以先获取目标分组索引值对应的模式信息,在得到目标分组索引值对应的模式信息后,就可以基于目标分组索引值对应的模式信息确定该子块的预测值。然后,可以将当前块的所有子块的预测值组合起来,得到当前块的组合预测值,完成当前块的预测过程。
显然,由于当前块的不同子块可能对应相同的目标分组索引值,当前块的不同子块也可能对应不同的目标分组索引值,因此,当前块的的多个子块可以选择出不同的目标分组索引值,而不同的目标分组索引值对应不同的模式信息,综上所述,可以采用不同的模式信息对当前块的的多个子块进行不同的预测,以使各个子块的预测过程更加灵活。
示例性的,为了获取目标分组索引值对应的模式信息,可以采用如下方式:
方式1、编码端和解码端约定每个参考分组索引值对应的模式信息,在此基础上,针对编码端和解码端来说,均可以直接获取为目标分组索引值配置的模式信息。
比如说,针对每个参考分组索引值,编码端和解码端均预先配置与该参考分组索引值对应的模式信息,如参考分组索引值0对应模式信息0,参考分组索引值1对应模式信息1,参考分组索引值2对应模式信息2,参考分组索引值3对应模式信息3,在此基础上,在得到子块的目标分组索引值后,就可以直接获得为该目标分组索引值配置的模式信息。
示例性的,关于与参考分组索引值对应的模式信息,可以根据经验配置,例如,参考分组索引值对应的模式信息可以为基于帧间预测模式的模式信息,如基于帧间预测模式的MVP+MVD,又例如,参考分组索引值对应的模式信息可以为基于帧内预测模式的模式信息,如基于帧内预测模式的MPM+idx。当然,上述只是几个示例,对此模式信息不做限制。
方式2、获取为当前块创建的模式信息候选列表,该模式信息候选列表可以包括至少两个候选模式信息;从该模式信息候选列表中选取与该目标分组索引值对应的模式信息。
示例性的,针对编码端和解码端来说,可以为当前块创建相同的模式信息候选列表,该模式信息候选列表中的候选模式信息可以包括但不限于以下至少一种:基于帧间预测模式的候选模式信息,基于帧内预测模式的候选模式信息,基于帧内块拷贝预测模式的候选模式信息,基于调色板模式的候选模式信息。当然,上述只是几个示例,对此不做限制。
针对基于帧间预测模式的候选模式信息,可以是各种运动信息,比如说,当前块的空域相邻块的运动信息(即空域运动信息),当前块的时域相邻块的运动信息(即时域运动信息),预设运动信息(如基于空域运动信息和/或时域运动信息推导出的运动信息,零运动信息等)。针对基于帧间预测模式的候选模式信息,也可以是预测模式,如MVP+MVD的预测模式等。
针对基于帧内预测模式的候选模式信息,可以是各种帧内模式信息,比如说,候选模式信息可以为DC模式,Planar模式,33种角度模式(参见表1所示)等。针对基于帧内预测模式的候选模式信息,也可以是预测模式,如MPM+idx的预测模式等。
针对基于帧内块拷贝预测模式的候选模式信息,可以是各种块矢量。
当然,上述只是模式信息候选列表中的候选模式信息的几个示例,对此模式信息候选列表中的候选模式信息不做限制,只要基于该候选模式信息能够确定子块的预测值即可。
示例性的,针对编码端来说,编码端依次遍历模式信息候选列表中的每个候选模式信息,基于该候选模式信息得到当前块的组合预测值。比如说,假设一共存在两种参考分组索引值,即参考分组索引值0和参考分组索引值1,并存在4个候选模式信息,则:
为参考分组索引值0遍历出候选模式信息0,为参考分组索引值1遍历出候选模式信息1,即不同参考分组索引值对应的候选模式信息不同,确定这种情况下的当前块的组合预测值。为参考分组索引值0遍历出候选模式信息0,为参考分组索引值1遍历出候选模式信息2,确定这种情况下的当前块的组合预测值。为参考分组索引值0遍历出候选模式信息0,为参考分组索引值1遍历出候选模式信息3,确定这种情况下的当前块的组合预测值。为参考分组索引值0遍历出候选模式信息1,为参考分组索引值1遍历出候选模式信息0,确定这种情况下的当前块的组合预测值。为参考分组索引值0遍历出候选模式信息1,为参考分组索引值1遍历出候选模式信息2,确定这种情况下的当前块的组合预测值。为参考分组索引值0遍历出候选模式信息1,为参考分组索引值1遍历出候选模式信息3,确定这种情况下的当前块的组合预测值。以此类推,基于不同的组合,均可以得到当前块的组合预测值。
基于每种组合下当前块的组合预测值,编码端可以根据当前块的组合预测值确定出率失真代价值,并将最小率失真代价值对应的候选模式信息作为参考分组索引值对应的模式信息,比如说,将模式信息候选列表中的候选模式信息0作为参考分组索引值0对应的模式信息,并将模式信息候选列表中的候选模式信息1作为参考分组索引值1对应的模式信息。
然后,编码端向解码端发送编码比特流时,还可以在编码比特流中编码参考分组索引值0对应的模式信息的指示信息(后续记为指示信息a),并在编码比特流中编码参考分组索引值1对应的模式信息的指示信息(后续记为指示信息b)。指示信息a用于指示参考分组索引值0对应的模式信息在模式信息候选列表中的索引值(表示第几个候选模式信息),指示信息b用于指示参考分组索引值1对应的模式信息在模式信息候选列表中的索引值。
针对解码端来说,解码端在接收到当前块的编码比特流后,可以从该编码比特流中解析出参考分组索引值0对应的模式信息对应的指示信息a,基于该指示信息a,解码端从该模式信息候选列表中选取与参考分组索引值0对应的模式信息,即,将该模式信息候选列表中的第一个候选模式信息0作为参考分组索引值0对应的模式信息。此外,解码端还可以从该编码比特流中解析出参考分组索引值1对应的模式信息对应的指示信息b,基于该指示信息b,解码端从该模式信息候选列表中选取与参考分组索引值1对应的模式信息,即,将该模式信息候选列表中的第二个候选模式信息1作为参考分组索引值1对应的模式信息。
方式3、获取为当前块创建的至少两个模式信息候选列表,且模式信息候选列表包括至少一个候选模式信息。从至少两个模式信息候选列表中选取与该目标分组索引值对应的目标模式信息候选列表,并从目标模式信息候选列表中选取与该目标分组索引值对应的模式信息。
示例性的,针对编码端来说,可以为当前块创建至少两个模式信息候选列表,针对解码端来说,也可以为当前块创建至少两个模式信息候选列表。编码端创建的至少两个模式信息候选列表与解码端创建的至少两个模式信息候选列表相同。针对编码端和解码端创建的每个模式信息候选列表,该模式信息候选列表中的候选模式信息可以包括但不限于以下至少一种:基于帧间预测模式的候选模式信息,基于帧内预测模式的候选模式信息,基于帧内块拷贝预测模式的候选模式信息,基于调色板模式的候选模式信息。当然,上述只是几个示例。
示例性的,针对同一个模式信息候选列表,可以只包括一种预测模式的候选模式信息,针对不同的模式信息候选列表,可以包括不同预测模式的候选模式信息。比如说,假设编码端和解码端均创建模式信息候选列表0和模式信息候选列表1,则模式信息候选列表0中的候选模式信息可以只包括基于帧间预测模式的候选模式信息,模式信息候选列表1中的候选模式信息可以只包括基于帧内预测模式的候选模式信息。或者,模式信息候选列表0中的候选模式信息可以只包括基于帧内预测模式的候选模式信息,模式信息候选列表1中的候选模式信息可以只包括基于帧内块拷贝预测模式的候选模式信息,对此不做限制。
针对同一个模式信息候选列表,也可以同时包括至少两种预测模式的候选模式信息,比如说,假设编码端和解码端均创建模式信息候选列表0和模式信息候选列表1,则模式信息候选列表0中的候选模式信息可以同时包括基于帧间预测模式的候选模式信息和基于帧内块拷贝预测模式的候选模式信息,模式信息候选列表1中的候选模式信息可以同时包括基于帧内预测模式的候选模式信息和基于帧内块拷贝预测模式的候选模式信息,对此不做限制。
示例性的,针对基于帧间预测模式的候选模式信息,可以是各种运动信息,比如说,当前块的空域相邻块的运动信息,当前块的时域相邻块的运动信息,预设运动信息。也可以是预测模式,如MVP+MVD的预测模式等。针对基于帧内预测模式的候选模式信息,可以是各种帧内模式信息,如DC模式,Planar模式,33种角度模式等。也可以是预测模式,如MPM+idx的预测模式等。针对基于帧内块拷贝预测模式的候选模式信息,可以是各种块矢量。
当然,上述只是模式信息候选列表中的候选模式信息的几个示例,对此模式信息候选列表中的候选模式信息不做限制,只要基于该候选模式信息能够确定子块的预测值即可。
在一种可能的实施方式中,参考分组索引值的数量与模式信息候选列表的数量可以相同,即,每个参考分组索引值对应一个模式信息候选列表,比如说,假设一共存在两个参考分组索引值,即参考分组索引值0和参考分组索引值1,则编码端和解码端均可以创建两个模式信息候选列表,如模式信息候选列表0和模式信息候选列表1,模式信息候选列表0中的候选模式信息包括基于帧间预测模式的候选模式信息,模式信息候选列表1中的候选模式信息包括基于帧内预测模式的候选模式信息。当然,上述候选模式信息只是示例,对此不做限制,比如说,模式信息候选列表0中的候选模式信息包括基于帧内预测模式的候选模式信息,模式信息候选列表1中的候选模式信息包括基于帧内预测模式的候选模式信息。又例如,模式信息候选列表0中的候选模式信息包括基于帧间预测模式的候选模式信息,模式信息候选列表1中的候选模式信息包括基于帧间预测模式的候选模式信息。在此基础上,参考分组索引值0与模式信息候选列表0对应,参考分组索引值1与模式信息候选列表1对应,或者,参考分组索引值0与模式信息候选列表1对应,参考分组索引值1与模式信息候选列表0对应。
示例性的,针对编码端来说,依次遍历模式信息候选列表中的每个候选模式信息,基于该候选模式信息得到当前块的组合预测值。比如说,假设存在两种参考分组索引值,即参考分组索引值0和参考分组索引值1,存在两个模式信息候选列表,即模式信息候选列表0和模式信息候选列表1,模式信息候选列表0包括2个候选模式信息,即候选模式信息00和候选模式信息01,模式信息候选列表1包括1个候选模式信息,即候选模式信息10,则:
为参考分组索引值0遍历出模式信息候选列表0中的候选模式信息00,为参考分组索引值1遍历出模式信息候选列表1中的候选模式信息10,即不同参考分组索引值对应的候选模式信息所属的模式信息候选列表不同,确定这种情况下的当前块的组合预测值。为参考分组索引值0遍历出模式信息候选列表0中的候选模式信息01,为参考分组索引值1遍历出模式信息候选列表1中的候选模式信息10,确定这种情况下的当前块的组合预测值。为参考分组索引值1遍历出模式信息候选列表0中的候选模式信息00,为参考分组索引值0遍历出模式信息候选列表1中的候选模式信息10,确定这种情况下的当前块的组合预测值。为参考分组索引值1遍历出模式信息候选列表0中的候选模式信息01,为参考分组索引值0遍历出模式信息候选列表1中的候选模式信息10,确定这种情况下的当前块的组合预测值。
基于每种组合下当前块的组合预测值,编码端可以根据当前块的组合预测值确定出率失真代价值,并将最小率失真代价值对应的模式信息候选列表作为参考分组索引值对应的目标模式信息候选列表,并将最小率失真代价值对应的候选模式信息作为参考分组索引值对应的模式信息,比如说,将模式信息候选列表0作为参考分组索引值0对应的目标模式信息候选列表,将模式信息候选列表0中的候选模式信息01作为参考分组索引值0对应的模式信息,并将模式信息候选列表1作为参考分组索引值1对应的目标模式信息候选列表,将模式信息候选列表1中的候选模式信息10作为参考分组索引值1对应的模式信息。
然后,编码端向解码端发送编码比特流时,还可以在编码比特流中编码参考分组索引值0对应的目标模式信息候选列表的指示信息(后续记为指示信息a1)、参考分组索引值0对应的模式信息的指示信息(后续记为指示信息a2),并在编码比特流中编码参考分组索引值1对应的目标模式信息候选列表的指示信息(后续记为指示信息b1)、参考分组索引值1对应的模式信息的指示信息(后续记为指示信息b2)。指示信息a1用于指示参考分组索引值0对应的目标模式信息候选列表是模式信息候选列表0(即第一个模式信息候选列表),指示信息a2用于指示参考分组索引值0对应的模式信息在模式信息候选列表0中的索引值(表示第几个候选模式信息),指示信息b1用于指示参考分组索引值1对应的目标模式信息候选列表是模式信息候选列表1(即第二个模式信息候选列表),指示信息b2用于指示参考分组索引值1对应的模式信息在模式信息候选列表1中的索引值(表示第几个候选模式信息)。
针对解码端来说,解码端在接收到当前块的编码比特流后,可以从该编码比特流中解析出参考分组索引值0对应的目标模式信息候选列表的指示信息a1、参考分组索引值0对应的模式信息对应的指示信息a2,基于指示信息a1,解码端从为当前块创建的所有模式信息候选列表中选取与参考分组索引值0对应的目标模式信息候选列表,即模式信息候选列表0。基于指示信息a2,解码端从模式信息候选列表0(即参考分组索引值0对应的目标模式信息候选列表)中选取与参考分组索引值0对应的模式信息,即,将模式信息候选列表0中的第二个候选模式信息01作为参考分组索引值0对应的模式信息。此外,解码端还可以从该编码比特流中解析出参考分组索引值1对应的目标模式信息候选列表的指示信息b1、参考分组索引值1对应的模式信息对应的指示信息b2,基于指示信息b1,解码端从为当前块创建的所有模式信息候选列表中选取与参考分组索引值1对应的目标模式信息候选列表,即模式信息候选列表1。基于指示信息b2,解码端从模式信息候选列表1(即参考分组索引值1对应的目标模式信息候选列表)中选取与参考分组索引值1对应的模式信息,即,将模式信息候选列表1中的第一个候选模式信息10作为参考分组索引值1对应的模式信息。
在一种可能的实施方式中,针对当前块的每个子块,编码端/解码端基于目标分组索引值对应的模式信息确定该子块的预测值。若目标分组索引值对应的模式信息为基于帧内预测模式的模式信息,则采用帧内预测模式确定该子块的预测值。在采用帧内预测模式确定该子块的预测值时,参见图6所示,可以参考当前块外部左侧的参考像素或者当前块外部上侧的参考像素,也可以参考当前子块外部左侧的参考像素或者当前子块外部上侧的参考像素。
比如说,以CU为单位,每个子块进行的帧内预测采用的均为当前CU的参考像素。以子块为单位,参见图6右侧所示的示例,每个子块进行的帧内预测采用的是当前子块的参考像素,不同子块之间相互依赖,在这种情况下,可以看做每个子块为一个CU的形式。
示例性的,上述各实施例可以单独实现,也可以组合实现,比如说,实施例1和实施例2组合实现,实施例1和实施例3组合实现,实施例2和实施例3组合实现,实施例1和实施例4-实施例10中的至少一个实施例组合实现,实施例2和实施例4-实施例10中的至少一个实施例组合实现,实施例3和实施例4-实施例10中的至少一个实施例组合实现,实施例4-实施例10中的任意至少两个可以组合实现,实施例1、实施例2和实施例4-实施例10中的至少一个实施例组合实现,实施例1、实施例3和实施例4-实施例10中的至少一个实施例组合实现,实施例2、实施例3和实施例4-实施例10中的至少一个实施例组合实现等。
当然,上述只是组合方式的几个示例,对实施例之间的组合方式不做限制。
示例性的,上述各实施例中,编码端的内容也可以应用到解码端,即解码端可以采用相同方式进行处理,解码端的内容也可以应用到编码端,即编码端可以采用相同方式进行处理。
实施例11:参见如下流程所示,为编解码方法的流程示意图,该方法可以应用于解码端(也可以称为视频解码器)或者编码端(也可以称为视频编码器),该方法可以包括:
步骤d1,在确定对当前块启动加权预测时,获取当前块的权重预测角度和权重配置参数,该权重配置参数包括权重变换率和权重变换的起始位置。权重变换的起始位置可以由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸。
示例性的,在需要对当前块进行预测时,解码端或者编码端可以先确定是否对当前块启动加权预测。若对当前块启动加权预测,则采用本申请实施例的编解码方法,即执行步骤d1和后续步骤。若对当前块不启动加权预测,则实现方式本申请实施例中不做限制。
示例性的,在确定对当前块启动加权预测时,可以获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。然后,可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。至此,可以得到当前块的权重预测角度,当前块的权重变换率和当前块的权重变换的起始位置。
步骤d2,根据当前块的权重配置参数为当前块外部的周边位置配置参考权重值。
示例性的,当前块外部的周边位置的数量由如下参数的至少一个确定:当前块的尺寸,当前块的权重预测角度。例如,基于当前块的尺寸和/或当前块的权重预测角度确定当前块外部的周边位置的数量M,并根据当前块的权重配置参数为M个周边位置配置参考权重值。
示例性的,针对当前块外部的周边位置,可以根据该周边位置的坐标值,该权重变换的起始位置的坐标值,以及该权重变换率,配置该周边位置的参考权重值。针对该周边位置的坐标值和该权重变换的起始位置的坐标值,与像素坐标值可以不在同一坐标系中,即配置周边位置的参考权重值是个独立操作,当确定子块对应的参考权重时,才在同一坐标系。
示例性的,当前块外部的周边位置的参考权重值可以单调递增;或,当前块外部的周边位置的参考权重值可以单调递减。例如,当前块外部的周边位置的参考权重值的排布可以为00…0024688…88,或,当前块外部的周边位置的参考权重值的排布可以为88…8864200…00。当然,上述参考权重值单调递增或单调递减只是示例,对此不做限制,参考权重值也可以不是单调递增或单调递减。比如说,参考权重值先递增再递减,或者,先递减再递增。
示例性的,当前块外部的周边位置可以包括但不限于:当前块外部上侧一行的周边位置,或者,当前块外部左侧一列的周边位置。当然,上述只是周边位置的示例,对此不做限制。
若当前块外部的周边位置包括当前块外部上侧一行的周边位置,则从左到右的顺序上的参考权重值,可以是单调递增或单调递减。或者,若当前块外部的周边位置包括当前块外部左侧一列的周边位置,则从上到下的顺序上的参考权重值,可以是单调递增或单调递减。
示例性的,当前块外部的周边位置可以包括目标区域,目标区域的第一邻近区域,目标区域的第二邻近区域。示例性的,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值均为第二参考权重值,且该第一参考权重值与该第二参考权重值不同。示例性的,目标区域可以包括一个参考权重值或至少两个参考权重值;若目标区域包括至少两个参考权重值,则目标区域的至少两个参考权重值单调递增或单调递减。
示例性的,若当前块支持权重变换率切换模式,则采用如下方式获取当前块的权重变换率:获取当前块的权重变换率指示信息;根据该权重变换率指示信息获取当前块的权重变换率;若权重变换率指示信息为第一指示信息,则当前块的权重变换率为第一权重变换率;若权重变换率指示信息为第二指示信息,则当前块的权重变换率为第二权重变换率。当前块的权重变换率指示信息可以为当前块对应的权重变换率切换标识,第一指示信息用于指示当前块不需要进行权重变换率切换,第二指示信息用于指示当前块需要进行权重变换率切换。
示例性的,当前块的权重预测角度为水平角度;或者,当前块的权重预测角度为垂直角度;或者,当前块的权重预测角度的斜率的绝对值为2的n次方,n为整数。
步骤d3,针对当前块的每个子块,根据该子块的预设位置,当前块的权重预测角度,从当前块外部的周边位置中导出该子块的目标权重值,根据该子块的目标权重值确定该子块的关联权重值。比如说,可以采用如下方式确定子块的目标权重值和关联权重值:
方式1,针对当前块的每个子块,根据当前块的权重预测角度从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置;根据该周边匹配位置关联的参考权重值确定该子块的目标权重值,根据该子块的目标权重值确定该子块的关联权重值。显然,在上述方式中,只需要一次获取过程,得到该子块的预设位置指向的周边匹配位置关联的参考权重值,就可以获知该子块的参考权重值,不需要针对每个像素位置分别获取参考权重值。
方式2,针对当前块的每个子块,根据当前块的权重预测角度从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置;根据该周边匹配位置关联的参考权重值确定该子块的每个像素位置的目标权重值(即将该周边匹配位置关联的参考权重值作为子块的每个像素位置的目标权重值),根据该像素位置的目标权重值确定该像素位置的关联权重值。显然,在上述方式中,只需要一次获取过程,得到该子块的预设位置指向的周边匹配位置关联的参考权重值,就可以获知该子块内的每个像素位置的参考权重值,提高处理性能。
示例性的,权重预测角度表示当前块内部的像素位置(即子块的预设位置)所指向的角度方向,基于某一种权重预测角度,该权重预测角度对应的角度方向指向当前块的某个外部周边位置。基于此,针对当前块的每个子块,基于该权重预测角度确定该子块的预设位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置。针对当前块的每个子块,确定该子块的预设位置指向的周边匹配位置后,
可以基于该周边匹配位置关联的参考权重值确定该子块的目标权重值,例如,将该周边匹配位置关联的参考权重值确定为该子块的目标权重值。然后,根据该子块的目标权重值确定该子块的关联权重值,例如,子块的目标权重值与关联权重值的和,可以为固定的预设数值,因此,关联权重值可以为预设数值与目标权重值之差。假设预设数值为8,子块的目标权重值为0,则该子块的关联权重值为8;若子块的目标权重值为1,则该子块的关联权重值为7,以此类推,只要该子块的目标权重值与该子块的关联权重值之和为8即可。
或者,可以基于该周边匹配位置关联的参考权重值确定该子块的每个像素位置的目标权重值,例如,将该周边匹配位置关联的参考权重值确定为该子块的每个像素位置的目标权重值。然后,针对该子块的每个像素位置,根据该像素位置的目标权重值确定该像素位置的关联权重值,例如,该像素位置的目标权重值与该像素位置的关联权重值的和,可以为固定的预设数值,因此,关联权重值可以为预设数值与目标权重值之差。
假设预设数值为8,若该像素位置的目标权重值为0,则该像素位置的关联权重值为8;若该像素位置的目标权重值为1,则该像素位置的关联权重值为7,以此类推,只要该像素位置的目标权重值与该像素位置的关联权重值之和为8即可。
在一种可能的实施方式中,周边匹配位置关联的参考权重值,可以是根据该周边匹配位置的坐标值与分组索引变换的起始位置的坐标值确定。
示例性的,针对当前块的每个子块,该子块可以为矩形子块(即四边形子块),该子块也可以不为矩形子块,例如,该子块可以为三角形子块,五边形子块。六边形子块等,对此子块的形状不做限制,子块可以是任意形状的子块。不同子块的形状可以相同,不同子块的形状也可以不同。不同子块的尺寸可以相同,不同子块的尺寸也可以不同。
若该子块为矩形子块,则该子块的尺寸可以为M*N,M为子块的宽度,且M大于或者等于1,N为子块的高度,且N大于或者等于1。综上所述,该子块可以包括至少一个像素位置。若该子块不为矩形子块,则该子块也可以包括至少一个像素位置。
在此基础上,若子块为1*1的像素位置(即只包括一个像素位置),则子块的预设位置可以为该像素位置本身。若该子块不为1*1的像素位置(即包括至少两个像素位置),则子块的预设位置可以包括但不限于:左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置,对此不做限制,可以是子块内部的任意一个像素位置。
示例性的,当前块外部的周边位置可以包括:整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置。对于整像素位置来说,整像素位置可以为1像素位置,或2像素位置,或4像素位置等,对此不做限制。显然,由于是针对当前块的子块确定预测值,因此,整像素位置不需要特别精细的位置划分,可以选用2像素位置或4像素位置等。
在此基础上,根据周边匹配位置关联的参考权重值确定该子块的目标权重值,可以包括:若周边匹配位置是亚像素位置,且该亚像素位置已设置参考权重值,则根据该亚像素位置的参考权重值确定该子块的目标权重值。若周边匹配位置是整像素位置,且该整像素位置已设置参考权重值,则根据该整像素位置的参考权重值确定该子块的目标权重值。
步骤d4,针对当前块的每个子块,根据当前块的第一目标预测模式确定该子块的第一预测值,根据当前块的第二目标预测模式确定该子块的第二预测值;根据该第一预测值,该目标权重值,该第二预测值和该关联权重值,确定该子块的加权预测值。
示例性的,第一目标预测模式可以为帧间预测模式(如普通帧间预测模式,仿射预测模式等),帧内预测模式,帧内块拷贝预测模式,调色板模式中的任意一个;第二目标预测模式可以为帧间预测模式,帧内预测模式,帧内块拷贝预测模式,调色板模式中的任意一个。例如,第一目标预测模式可以为帧间预测模式,第二目标预测模式可以为帧间预测模式,或者,第一目标预测模式可以为帧间预测模式,第二目标预测模式可以为帧内预测模式,或者,第一目标预测模式可以为帧内预测模式,第二目标预测模式可以为帧内预测模式,以此类推。
示例性的,基于步骤d3的方式1,假设目标权重值是第一目标预测模式对应的权重值,关联权重值是第二目标预测模式对应的权重值,则该子块的加权预测值可以为:(该子块的第一预测值*该子块的目标权重值+该子块的第二预测值*该子块的关联权重值)/固定的预设数值。或者,假设目标权重值是第二目标预测模式对应的权重值,关联权重值是第一目标预测模式对应的权重值,则该子块的加权预测值可以为:(该子块的第二预测值*该子块的目标权重值+该子块的第一预测值*该子块的关联权重值)/固定的预设数值。
示例性的,针对步骤d3的方式2,假设目标权重值是第一目标预测模式对应的权重值,关联权重值是第二目标预测模式对应的权重值,则先确定该子块的每个像素位置的加权预测值,然后将该子块的每个像素位置的加权预测值组合起来,得到该子块的加权预测值,而该子块的每个像素位置的加权预测值可以为:该像素位置的第一预测值*该像素位置的目标权重值+该像素位置的第二预测值*该像素位置的关联权重值)/固定的预设数值。或者,假设目标权重值是第二目标预测模式对应的权重值,关联权重值是第一目标预测模式对应的权重值,则该子块的每个像素位置的加权预测值可以为:(该像素位置的第二预测值*该像素位置的目标权重值+该像素位置的第一预测值*该像素位置的关联权重值)/固定的预设数值。
步骤d5,根据当前块的所有子块的加权预测值确定当前块的加权预测值。
例如,将当前块的所有子块的加权预测值组合起来,得到当前块的加权预测值。
示例性的,上述执行顺序只是为了方便描述给出的示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
由以上技术方案可见,本申请实施例中,提出一种配置权重值的有效方式,能够为当前块的每个子块配置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值加更接近原始像素,并带来编码性能的提高。若限定参考权重值只存在最大和最小两种的情况,此时的加权预测也可应用于P帧进行加权预测。
实施例12:本申请实施例提出另一种编解码方法,可以应用于编码端,该方法包括:
步骤e1,在确定对当前块启动加权预测时,编码端获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。示例性的,编码端确定是否对当前块启动加权预测,如果是,则执行步骤e1及后续步骤,如果否,则处理方式本申请不做限制。
在一种可能的实施方式中,若当前块满足启动加权预测的条件,则确定对当前块启动加权预测。若当前块不满足启动加权预测的条件,则确定不对当前块启动加权预测。例如,判断当前块的特征信息是否满足特定条件。如果是,确定对当前块启动加权预测;如果否,确定对当前块不启动加权预测。特征信息包括但不限于以下之一或任意组合:当前块所在当前帧的帧类型,当前块的尺寸信息,开关控制信息。开关控制信息可以包括但不限于:序列级(SPS、SH)开关控制信息,或,图像级(PPS、PH)开关控制信息,或,片级(Slice、Tile、Patch),或,最大编码单元级(LCU、CTU),或块级(CU、PU、TU)开关控制信息。
例如,若特征信息为当前块所在当前帧的帧类型,当前块所在当前帧的帧类型满足特定条件,可以包括但不限于:若当前块所在当前帧的帧类型为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。
例如,若特征信息为开关控制信息,则该开关控制信息满足特定条件,可以包括但不限于:若开关控制信息为允许当前块启用加权预测,则确定该开关控制信息满足特定条件。
例如,若特征信息为当前块所在当前帧的帧类型,当前块的尺寸信息,则帧类型满足特定条件,且尺寸信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块所在当前帧的帧类型,开关控制信息,则帧类型满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块的尺寸信息、开关控制信息,则尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块所在当前帧的帧类型、当前块的尺寸信息、开关控制信息,则帧类型满足特定条件,尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。
在一种可能的实施方式中,在确定对当前块启动加权预测时,编码端可以获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。
示例性的,权重预测角度表示当前块内部的像素位置所指向的角度方向,与图4A和图4B类似,将其中的分组索引预测角度替换为权重预测角度即可,权重预测角度是当前块内部的像素位置(如像素位置1、像素位置2和像素位置3)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。或者,权重预测角度是当前块内部的像素位置(如像素位置2、像素位置3和像素位置4)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。
示例性的,权重预测位置(也可以称为距离参数)用于配置当前块外部周边位置的参考权重值。例如,根据当前块的权重预测角度、当前块的尺寸等参数,确定当前块外部的周边位置的范围(即当前块外部的周边位置的数量),参见图4A或者图4B所示。
然后,将周边位置的范围进行N等分,N的取值可以任意配置,如4、6、8等,以8为例进行说明,权重预测位置用于表示当前块外部的哪个周边位置作为当前块的权重变换的起始位置,从而根据权重变换的起始位置配置当前块外部的周边位置的参考权重值。
参见图4C所示,在将所有周边位置8等分后,可以得到7个权重预测位置。在此基础上,当权重预测位置为0时,可以表示周边位置a0(即虚线0指向的周边位置,在实际应用中,并不存在虚线0,虚线0只是为了方便理解给出的示例,虚线0-虚线6用于将所有周边位置8等分)作为当前块外部周边位置的权重变换的起始位置。以此类推,当权重预测位置为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个权重预测位置,步骤e1中,编码端可以从7个权重预测位置中获取一个权重预测位置,也可以从7个权重预测位置中选择部分权重预测位置(如5个权重预测位置),从5个权重预测位置获取一个权重预测位置。
示例性的,权重变换率表示当前块外部的周边位置的参考权重值的变换率,用于表示参考权重值的变化速度,权重变换率可以是不为0的任意数,如权重变换率可以是-4、-2、-1、1、2、4、0.5、0.75、1.5等。权重变换率的绝对值为1时,即权重变换率为-1或者1,用于表示参考权重值的变化速度为1,参考权重值从0到8需要经过0,1,2,3,4,5,6,7,8等数值,参考权重值从8到0需要经过8,7,6,5,4,3,2,1,0等数值。权重变换率的绝对值为2时,即权重变换率为-2或者2,用于表示参考权重值的变化速度为2,参考权重值从0到8需要经过0,2,4,6,8等数值,参考权重值从8到0需要经过8,6,4,2,0等数值。权重变换率的绝对值为4时,即权重变换率为-4或者4,用于表示参考权重值的变化速度为4,参考权重值从0到8需要经过0,4,8等数值,参考权重值从8到0需要经过8,4,0等数值。权重变换率的绝对值为0.5时,即权重变换率为-0.5或者0.5,用于表示参考权重值的变化速度为0.5,参考权重从0到8需要经过0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8等数值,参考权重从8到0需要经过8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1,0,0等数值。当然,上述举例为从0到8,可以将0和8替换为任意数。
步骤e2,编码端根据当前块的权重变换率和权重变换的起始位置(权重变换率和权重变换的起始位置可以称为权重配置参数)为当前块外部的周边位置配置参考权重值。
示例性的,权重变换的起始位置可以由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸,因此,可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。然后,根据当前块的权重变换率和权重变换的起始位置为当前块外部的周边位置配置参考权重值。
步骤e3,针对当前块的每个子块,编码端根据当前块的权重预测角度从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置。为了区分方便,本实施例中,可以将该子块的预设位置指向的当前块外部的周边位置,称为该像素位置的周边匹配位置。
示例性的,由于权重预测角度表示当前块内部的像素位置所指向的角度方向,因此,针对当前块的每个子块,基于该权重预测角度确定该子块的预设位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该子块的预设位置指向的周边匹配位置。
当前块外部的周边位置可以包括:当前块外部上侧一行的周边位置(即像素位置),如当前块外部上侧第n1行的周边位置,n1可以为1,也可以为2、3等,对此不做限制。或者,当前块外部左侧一列的周边位置(即像素位置),如当前块外部左侧第n2列的周边位置,n2可以为1,也可以为2、3等,对此不做限制。当然,上述只是周边位置的几个示例,对此不做限制。示例性的,当前块外部周边位置可以位于像素位置之间,即亚像素位置,此时,当前块的位置不能简单描述为第x行,而是位于第x行与第y行之间的亚像素位置行。
示例性的,针对当前块外部周边位置的范围,可以预先指定某个范围是当前块外部的周边位置的范围;或者,可以根据权重预测角度确定当前块外部的周边位置的范围,例如,根据权重预测角度确定当前块内部的每个像素位置指向的周边位置,所有像素位置指向的周边位置的边界,可以是当前块外部的周边位置的范围,对此周边位置的范围不做限制。
示例性的,当前块外部的周边位置可以包括整像素位置;或者,当前块外部的周边位置可以包括非整像素位置,非整像素位置可以为亚像素位置,如1/2亚像素位置,1/4亚像素位置,3/4亚像素位置等,对此不做限制;或者,当前块外部的周边位置可以包括整像素位置和亚像素位置。对于整像素位置来说,整像素位置可以为1像素位置,或2像素位置,或4像素位置等,对此不做限制。显然,由于是针对当前块的子块确定预测值,因此,整像素位置不需要特别精细的位置划分,可以选用2像素位置或4像素位置等。
综上所述,当前块外部的两个周边位置,可以对应一个整像素位置;或,当前块外部的四个周边位置,可以对应一个整像素位置;或,当前块外部的一个周边位置,可以对应一个整像素位置;或,当前块外部的一个周边位置,可以对应两个整像素位置;或,当前块外部的一个周边位置,可以对应四个整像素位置。当然,上述只是几个示例,对此不做限制。
示例性的,针对当前块的每个子块,该子块可以为矩形子块,该子块也可以不为矩形子块,例如,该子块可以为三角形子块,五边形子块。六边形子块等。不同子块的形状可以相同,不同子块的形状也可以不同。不同子块的尺寸可以相同,不同子块的尺寸也可以不同。每个子块的预设位置可以相同,也可以不同,只需要编码端和解码端约定子块的预设位置即可,例如,按照尺寸,面积,形状等确定子块的预设位置。比如说,若子块为1*1的像素位置,则子块的预设位置可以为该像素位置本身。若该子块不为1*1的像素位置,则子块的预设位置可以包括但不限于:左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置,对此不做限制,可以是子块内部的任意一个像素位置。
参见图7A所示,可以将当前块划分为1*4大小的矩形子块,或者4*1大小的矩形子块,在图7A中,是以4*1大小的矩形子块为例,每个子块的预设位置为该子块的中心像素位置,则图7A示出了权重预测角度指向的周边匹配位置,图7A中的“0”表示该子块的预设位置指向的周边匹配位置的参考权重值为0,图7A中的“1”表示该子块的预设位置指向的周边匹配位置的参考权重值为1,图7A中的“2”表示该子块的预设位置指向的周边匹配位置的参考权重值为2。在图7A中,在周边位置中,白色区域的周边位置的参考权重值为0,灰色区域的周边位置的参考权重值为1,黑色区域的周边位置的参考权重值为2。
示例性的,与图7A等价的另一种划分方式参见图7B所示,将当前块划分为三个非矩形子块,每个子块的预设位置为该子块的中心像素位置,显然,一个子块的预设位置指向的周边匹配位置的参考权重值为0,另一个子块的预设位置指向的周边匹配位置的参考权重值为1,最后一个子块的预设位置指向的周边匹配位置的参考权重值为2。
步骤e4,编码端根据周边匹配位置关联的参考权重值确定该子块的目标权重值。
针对当前块的每个子块,在确定该子块的预设位置指向的周边匹配位置后,编码端确定该周边匹配位置关联的参考权重值,并根据该周边匹配位置关联的参考权重值确定该子块的目标权重值,例如,将该周边匹配位置关联的参考权重值确定为该子块的目标权重值。
编码端根据周边匹配位置关联的参考权重值确定该子块的目标权重值,可以包括:若该周边匹配位置是亚像素位置,且该亚像素位置已设置参考权重值,则根据该亚像素位置的参考权重值确定该子块的目标权重值。若该周边匹配位置是整像素位置,且该整像素位置已设置参考权重值,则根据该整像素位置的参考权重值确定该子块的目标权重值。
步骤e5,编码端根据该子块的目标权重值确定该子块的关联权重值。
示例性的,针对每个子块来说,该子块的目标权重值与该子块的关联权重值的和,可以为固定的预设数值,即关联权重值可以为预设数值与目标权重值之差。基于此,假设预设数值为8,该子块的目标权重值为2,则该子块的关联权重值为6。
在一种可能的实施方式中,针对步骤e4和步骤e5,针对当前块的每个子块,在确定该子块的预设位置指向的周边匹配位置后,编码端还可以根据该周边匹配位置关联的参考权重值确定该子块的每个像素位置的目标权重值,如将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值,并根据该像素位置的目标权重值确定该像素位置的关联权重值。
步骤e6,针对当前块的每个子块,编码端根据当前块的第一目标预测模式确定该子块的第一预测值,并根据当前块的第二目标预测模式确定该子块的第二预测值。
步骤e7,编码端根据该子块的第一预测值,该子块的目标权重值,该子块的第二预测值和该子块的关联权重值,确定该子块的加权预测值。
例如,该子块的加权预测值可以为:(该子块的第一预测值*该子块的目标权重值+该子块的第二预测值*该子块的关联权重值)/固定的预设数值。
步骤e8,编码端根据当前块的所有子块的加权预测值确定当前块的加权预测值。
实施例13:本申请实施例提出另一种编解码方法,可以应用于解码端,该方法包括:
步骤f1,在确定对当前块启动加权预测时,解码端获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。示例性的,解码端确定是否对当前块启动加权预测,如果是,则执行步骤f1及后续步骤,如果否,则处理方式本申请不做限制。
在一种可能的实施方式中,编码端判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测。解码端也判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测;如果否,则确定不对当前块启动加权预测。关于解码端如何基于特征信息确定当前块是否启动加权预测,与编码端的确定方式类似,在此不再重复赘述。
在另一种可能的实施方式中,编码端根据当前块的特征信息确定当前块是否支持加权预测,在当前块支持加权预测时,还可以采用其它策略确定是否对当前块启动加权预测,如采用率失真原则确定是否对当前块启动加权预测。在确定是否对当前块启动加权预测后,编码端发送当前块的编码比特流时,编码比特流可以包括是否启动加权预测的语法,该语法表示当前块是否启动加权预测。解码端根据当前块的特征信息确定当前块是否支持加权预测,具体方式与编码端的确定方式类似,在此不再赘述。在当前块支持加权预测时,解码端可以从编码比特流中解析出是否启动加权预测的语法,根据该语法确定是否对当前块启动加权预测。
示例性的,在确定对当前块启动加权预测时,解码端还可以获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率,关于该权重预测角度,该权重预测位置及该权重变换率的相关说明,可以参见上述实施例12的步骤e1,在此不再重复赘述。
步骤f2,解码端根据当前块的权重变换率和权重变换的起始位置(权重变换率和权重变换的起始位置可以称为权重配置参数)为当前块外部的周边位置配置参考权重值。
示例性的,解码端可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。然后,解码端根据当前块的权重变换率和权重变换的起始位置为当前块外部的周边位置配置参考权重值。
步骤f3,针对当前块的每个子块,解码端可以根据该当前块的权重预测角度从该当前块外部的周边位置中确定出与该子块的预设位置指向的周边匹配位置。
步骤f4,解码端根据该周边匹配位置关联的参考权重值确定该子块的目标权重值。
步骤f5,解码端根据该子块的目标权重值确定该子块的关联权重值。
步骤f6,针对当前块的每个子块,解码端根据当前块的第一目标预测模式确定该子块的第一预测值,并根据当前块的第二目标预测模式确定该子块的第二预测值。
步骤f7,解码端根据该子块的第一预测值,该子块的目标权重值,该子块的第二预测值和该子块的关联权重值,确定该子块的加权预测值。
步骤f8,解码端根据当前块的所有子块的加权预测值确定当前块的加权预测值。
示例性的,针对步骤f2-步骤f8,其实现过程可以参见步骤e2-步骤e8,不同之处在于,步骤f2-步骤f8解码端的处理流程,而不是编码端的处理流程,在此不再赘述。
实施例14:在实施例11-实施例13中,需要基于权重预测角度进行加权处理,且针对当前块的每个子块进行加权处理,可以将这种加权处理方式记为BAWP(Block basedAngular Weighted Prediction,块级角度加权预测)模式,即,在当前块支持BAWP模式时,采用实施例11-实施例13对当前块的每个子块进行加权预测,得到当前块的加权预测值。
实施例11-实施例13涉及权重预测角度,该权重预测角度可以是任意角度,如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次方)等。示例性的,参见图5所示,示出了8种权重预测角度,这些权重预测角度的斜率的绝对值为2的n次方。
本申请实施例中,可以对权重预测角度进行移位操作,关于对权重预测角度进行移位操作的例子参见后续实施例,因此,在权重预测角度的斜率的绝对值为2的n次方时,在对权重预测角度进行移位操作时,可以避免出现除法操作,从而方便的进行移位实现。
示例性的,不同块尺寸(即当前块的尺寸)支持的权重预测角度的数量可以相同或者不同。例如,块尺寸A支持8种权重预测角度,块尺寸B和块尺寸C支持6种权重预测角度等。
实施例15:在上述实施例11-实施例13中,编码端/解码端可以根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式中,可以采用如下方式:针对当前块外部的每个周边位置,根据该周边位置的坐标值,该权重变换的起始位置的坐标值,以及该权重变换率,配置该周边位置的参考权重值。针对每个周边位置,若该周边位置是当前块外部上侧一行的周边位置,则该周边位置的坐标值是横坐标值,权重变换的起始位置的坐标值是横坐标值。若该周边位置是当前块外部左侧一列的周边位置,则该周边位置的坐标值是纵坐标值,权重变换的起始位置的坐标值是纵坐标值。
示例性的,可以将当前块左上角的像素位置(如左上角的第一个像素位置)作为坐标原点,当前块的周边位置的坐标值(如横坐标值或纵坐标值)和权重变换的起始位置的坐标值(如横坐标值或纵坐标值),均是相对于该坐标原点的坐标值。当然,也可以将当前块的其它像素位置作为坐标原点,实现方式与左上角的像素位置作为坐标原点的实现方式类似。
在一种可能的实施方式中,确定周边位置的坐标值与权重变换的起始位置的坐标值的差值,确定该差值与当前块的权重变换率的乘积值。若乘积值小于第一数值(参考权重值的最小值,如0),确定该周边位置关联的参考权重值为第一数值;若乘积值大于第二数值(参考权重值的最大值,如8),确定该周边位置关联的参考权重值为第二数值;若乘积值不小于第一数值,且该乘积值不大于第二数值,确定该周边位置关联的参考权重值为该乘积值。
还可以根据周边位置的坐标值与权重变换的起始位置的坐标值的大小关系,确定周边位置关联的参考权重值。例如,若周边位置的坐标值小于权重变换的起始位置的坐标值,确定周边位置关联的参考权重值为第一数值;若周边位置的坐标值不小于权重变换的起始位置的坐标值,确定周边位置关联的参考权重值为第二数值。又例如,若周边位置的坐标值小于权重变换的起始位置的坐标值,确定周边位置关联的参考权重值为第二数值;若周边位置的坐标值不小于权重变换的起始位置的坐标值,确定周边位置关联的参考权重值为第一数值。
在上述实施例中,第一数值和第二数值均可以根据经验配置,且第一数值小于第二数值,对此第一数值和第二数值均不做限制。例如,第一数值是预先约定的参考权重值的最小值,如0,第二数值是预先约定的参考权重值的最大值,如8,当然,0和8也只是示例。
示例性的,参见图4C所示,在将所有的周边位置8等分后,可以得到7个权重预测位置,当权重预测位置为0时,表示周边位置a0,权重变换的起始位置的坐标值为周边位置a0的坐标值。当权重预测位置为1时,表示周边位置a1,权重变换的起始位置的坐标值为周边位置a1的坐标值,以此类推,关于权重变换的起始位置的坐标值的确定方式,在此不再赘述。
实施例16:在上述实施例11-实施例13中,编码端/解码端可以根据周边匹配位置关联的参考权重值确定子块的目标权重值,而周边匹配位置关联的参考权重值,可以是为该周边匹配位置配置的参考权重值,也可以采用如下方式确定周边匹配位置关联的参考权重值:周边匹配位置关联的参考权重值,可以是根据该周边匹配位置的坐标值与权重变换的起始位置的坐标值(如权重预测位置的坐标值)确定。若周边匹配位置是当前块外部上侧一行的周边位置,则周边匹配位置的坐标值是周边匹配位置的横坐标值,权重预测位置的坐标值是权重预测位置的横坐标值。或者,若周边匹配位置是当前块外部左侧一列的周边位置,则周边匹配位置的坐标值是周边匹配位置的纵坐标值,权重预测位置的坐标值是权重预测位置的纵坐标值。示例性的,可以将当前块左上角的像素位置(如左上角的第一个像素位置)作为坐标原点,周边匹配位置的坐标值(如横坐标值或纵坐标值)和权重预测位置坐标值(如横坐标值或纵坐标值),均是相对于该坐标原点的坐标值。当然,也可以将当前块的其它像素位置作为坐标原点,实现方式与左上角的像素位置作为坐标原点类似,后续不再赘述。
在一种可能的实施方式中,在根据周边匹配位置的坐标值与权重预测位置的坐标值,确定周边匹配位置关联的参考权重值时,可以计算周边匹配位置的坐标值与权重预测位置的坐标值的差值。若该差值小于第一数值,则确定周边匹配位置关联的参考权重值为第一数值;若该差值大于第二数值,则确定周边匹配位置关联的参考权重值为第二数值;若该差值不小于第一数值,且该差值不大于第二数值,则确定周边匹配位置关联的参考权重值为该差值。
在另一种可能的实施方式中,在根据周边匹配位置的坐标值与权重预测位置的坐标值,确定周边匹配位置关联的参考权重值时,还可以根据周边匹配位置的坐标值与权重预测位置的坐标值的大小关系,直接确定周边匹配位置关联的参考权重值。
例如,若周边匹配位置的坐标值小于权重预测位置的坐标值,则确定周边匹配位置关联的参考权重值为第一数值;若周边匹配位置的坐标值不小于权重预测位置的坐标值,则确定周边匹配位置关联的参考权重值为第二数值。或者,若周边匹配位置的坐标值小于权重预测位置的坐标值,则确定周边匹配位置关联的参考权重值为第二数值;若周边匹配位置的坐标值不小于权重预测位置的坐标值,则确定周边匹配位置关联的参考权重值为第一数值。
示例性的,第一数值和第二数值均可以根据经验配置,且第一数值小于第二数值,对此第一数值和第二数值均不做限制。例如,第一数值是预先约定的参考权重值的最小值,如0,第二数值是预先约定的参考权重值的最大值,如8,当然,0和8也只是示例。
以下结合几个具体应用场景,对上述参考权重值的确定过程进行说明。示例性的,假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高。X为权重预测角度的tan值的log2对数值,如0或1。Y为权重预测位置的索引值,权重预测位置的索引值为0-6,权重预测位置的索引值为0时,表示权重预测位置是周边位置a0,权重预测位置的索引值为1时,表示权重预测位置是周边位置a1,以此类推。a,b,c,d为预设的常数值。
应用场景1:基于当前块的尺寸和权重预测角度确定有效数量(也可以称为参考权重有效长度,可以将有效数量记为ValidLenth)。基于当前块的尺寸,权重预测角度和权重预测位置确定权重预测位置的坐标值(可以将权重预测位置的坐标值记为FirstPos)。
例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1,在上述公式中,N和M是当前块的尺寸,X基于当前块的权重预测角度确定,>>X表示右移X位,<<1表示左移1位。在后续实施例中,>>就表示右移,<<均表示左移,后续不再赘述。
例如,可以通过如下公式确定权重预测位置的坐标值:FirstPos=(ValidLength>>1)-a+Y*((ValidLength-1)>>3),ValidLength是基于当前块的尺寸和权重预测角度确定,Y为权重预测位置的索引值,如当前块的权重预测位置为权重预测位置4时,Y为4。
然后,针对当前块的每个子块,根据该子块的预设位置指向的周边匹配位置的坐标值与权重预测位置的坐标值,确定周边匹配位置关联的参考权重值,这个参考权重值就是该子块的目标权重值,这个参考权重值也就是该子块内所有像素位置的目标权重值。例如,可以通过如下公式导出当前子块的每个像素位置的目标权重值:
SubBlockWeight=Clip3(0,8,(y<<1)+((x<<1)>>X)-FirstPos)。
在上述公式中,x,y表示当前子块的预设位置的坐标,SubBlockWeight表示当前子块的目标权重值。(y<<1)+((x<<1)>>X)表示预设位置[x][y]指向的周边匹配位置(即基于权重预测角度指向的周边匹配位置)的坐标值。(y<<1)+((x<<1)>>X)–FirstPos,即周边匹配位置的坐标值与权重预测位置的坐标值的差值。Clip3(0,8,(y<<1)+((x<<1)>>X)-FirstPos)是该周边匹配位置关联的参考权重值,即当前子块的目标权重值。
Clip3(0,8,(y<<1)+((x<<1)>>X)-FirstPos),表示将周边匹配位置的坐标值与权重预测位置的坐标值的差值限制在0与8之间,0表示上述第一数值,8表示上述第二数值。比如说,若该差值小于0,则SubBlockWeight为0,若该差值大于8,则SubBlockWeight为8,若该差值不小于0,且该差值不大于8,则SubBlockWeight为该差值。
另一种等价的实现方式为:
若当前块内像素位置的坐标为p_x,p_y,且均按照4x4划分当前块,则当前子块的预设位置的坐标x=(p_x>>2)<<2,y=(p_y>>2)<<2;若均按照8x8划分当前块,则当前子块的预设位置的坐标x=(p_x>>3)<<3,y=(p_y>>3)<<3;其他情况以此类推。
以均按照4x4划分当前块为例,当前块内每个像素位置的坐标也可通过以下公式导出:
SampleWeight[p_x][p_y]=Clip3(0,8,(((p_y>>2)<<2)<<1)+((((p_x>>2)<<2)<<1)>>X)-FirstPos)。在上述公式中,[p_x][p_y]表示当前块的像素位置的坐标,SampleWeight[p_x][p_y]表示像素位置[p_x][p_y]的目标权重值。
应用场景2:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1。可以通过如下公式确定权重预测位置的坐标值:FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X)。可以通过如下公式导出当前子块的目标权重值:SubBlockWeight=Clip3(0,8,(y<<1)-((x<<1)>>X)-FirstPos)。
应用场景3:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1。可以通过如下公式确定权重预测位置的坐标值:FirstPos=(ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X)。可以通过如下公式导出当前子块的目标权重值:SubBlockWeight=Clip3(0,8,(x<<1)-((y<<1)>>X)-FirstPos)。
应用场景4:本应用场景中,可以通过如下公式确定有效数量:ValidLenth=(M+(N>>X))<<1。可以通过如下公式确定权重预测位置的坐标值:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。可以通过如下公式导出当前子块的目标权重值:SubBlockWeight=Clip3(0,8,(x<<1)+((y<<1)>>X)-FirstPos)。
示例性的,针对应用场景2、应用场景3和应用场景4来说,其实现原理与应用场景1的实现原理类似,不同之处在于,相关公式有所不同,在此不再重复赘述。并且,同样可以通过等价的实现方式进行公式计算。
应用场景5:与应用场景1不同的是,本应用场景中,需要获取当前块的两个权重预测位置,例如,针对编码端来说,基于两个权重预测位置对应的率失真代价值,确定当前块的两个权重预测位置,且编码比特流中携带两个权重预测位置的指示信息。针对解码端来说,根据该指示信息确定两个权重预测位置。两个权重预测位置的获取方式与一个权重预测位置的获取方式类似,在此不再重复赘述。假设两个权重预测位置分别为权重预测位置a和权重预测位置b,Y1为权重预测位置a的索引值,Y2为权重预测位置b的索引值。
基于当前块的尺寸和权重预测角度确定有效数量(可以将有效数量记为ValidLenth),例如,可以通过如下公式确定有效数量:ValidLenth=(N+(M>>X))<<1。示例性的,有效数量的确定公式还可以替换为应用场景2-应用场景4中的公式,在此不再赘述。
基于当前块的尺寸,权重预测角度和权重预测位置a确定权重预测位置a的坐标值(将权重预测位置a的坐标值记为FirstPos_a),基于当前块的尺寸,权重预测角度和权重预测位置b确定权重预测位置b的坐标值(将权重预测位置b的坐标值记为FirstPos_b)。
例如,与上述应用场景1类似,本应用场景中,可以通过如下公式确定权重预测位置a的坐标值:FirstPos_a=(ValidLength>>1)-a+Y1*((ValidLength-1)>>3)。通过如下公式确定权重预测位置b的坐标值:FirstPos_b=(ValidLength>>1)-a+Y2*((ValidLength-1)>>3)。
示例性的,权重预测位置的坐标值的确定公式,还可以替换为应用场景2-应用场景4中的公式,只是权重预测位置的索引值替换为Y1或Y2,在此不再赘述。
然后,针对当前块的每个子块,根据该子块的预设位置指向的周边匹配位置的坐标值,权重预测位置a的坐标值FirstPos_a,权重预测位置b的坐标值FirstPos_b,确定周边匹配位置关联的参考权重值,这个参考权重值就是该子块的目标权重值,这个参考权重值也就是该子块内所有像素位置的目标权重值。
例如,假设FirstPos_a小于FirstPos_b,设置FirstPos_c=(FirstPos_a+FirstPos_b)/2,若周边匹配位置的坐标值小于FirstPos_c,则SubBlockWeight=Clip3(0,8,(y<<1)+((x<<1)>>X)-FirstPos_a),在该情况下,周边位置的参考权重值从0递增至8。或者,若周边匹配位置的坐标值不小于FirstPos_c,则SubBlockWeight=Clip3(0,8,FirstPos_b-(y<<1)+((x<<1)>>X)),在该情况下,周边位置的参考权重值从8递减至0。
在上述公式中,SubBlockWeight表示当前子块的目标权重值,(y<<1)+((x<<1)>>X)表示子块的预设位置[x][y]指向的周边匹配位置的坐标值。
基于应用场景5,能够达到如下效果:当前块的周边位置的参考权重值,从0递增至8,然后从8递减至0;或者,当前块的周边位置的参考权重值,从8递减至0,然后从0递增至8。例如,当前块的周边位置的参考权重值可以依次为[0...0000123456788...8876543210000...0],或者,当前块的周边位置的参考权重值可以依次为[8...8888765432100...0012345678888...8],或者,当前块的周边位置的参考权重值可以依次为[0...00024688...88642000...0],或者,当前块的周边位置的参考权重值可以依次为[8...88864200...00246888...8]等,对此参考权重值不做限制。示例性的,权重预测位置a与权重预测位置b的融合(blending)的参考权重值不重叠。
实施例17:在上述实施例11-实施例13中,编码端/解码端根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式,可以采用如下方式:获取当前块的权重预测角度、当前块的权重变换率和当前块的权重预测位置,基于当前块的权重预测位置确定当前块的权重变换的起始位置,基于该权重变换的起始位置和该权重变换率确定权重配置参数,即该权重配置参数包括权重变换的起始位置和权重变换率。根据该权重配置参数确定当前块外部的周边位置的参考权重值。例如,采用如下方式确定参考权重值:y=Clip3(最小值,最大值,k),k表示对a*(x-s)进行取整。比如说,k表示对a*(x-s)进行向下取整,或者,k表示对a*(x-s)进行向上取整,或者,采用其它取整方式,对此取整方式不做限制,在后续实施例中,以a*(x-s)本身就是整数,即a的取值为整数为例,因此,y=Clip3(最小值,最大值,a*(x-s))。x表示周边位置的索引,a表示权重变换率,s表示权重变换的起始位置。综上所述,针对当前块外部的每个周边位置,根据该周边位置的索引,权重变换的起始位置及权重变换率,配置该周边位置的参考权重值。
以下结合具体步骤,对为当前块外部的周边位置配置参考权重值的过程进行说明。
步骤g1、获取有效数量个参考权重值。
示例性的,当前块外部的周边位置的数量为有效数量,步骤g1中,需要获取有效数量个参考权重值,该有效数量可以是基于当前块的尺寸和/或当前块的权重预测角度确定。例如,采用如下方式确定该有效数量:ValidLenth=(N+(M>>X))<<1,N和M分别是当前块的高和宽,X为当前块的权重预测角度的斜率的绝对值的log2对数值,如0或1。
在一种可能的实施方式中,针对有效数量个参考权重值,可以单调递增或单调递减。或,针对有效数量个参考权重值,可以先包括多个第一数值再包括多个第二数值,或,针对有效数量个参考权重值,可以先包括多个第二数值再包括多个第一数值。若当前块外部的周边位置包括当前块外部上侧一行的像素位置,则从左到右的顺序上的参考权重值,单调递增或单调递减。若当前块外部的周边位置包括当前块外部左侧一列的像素位置,则从上到下的顺序上的参考权重值,单调递增或单调递减。以下结合几个具体情况,对此进行说明。
情况1:针对有效数量个参考权重值,可以单调递增,或,单调递减。例如,有效数量个参考权重值可以为[88...88765432100...00],即单调递减。又例如,有效数量个参考权重值可以为[00...00123456788...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个周边位置的参考权重值,x为2,表示第2个周边位置,y表示第2个周边位置的参考权重值。a表示权重变换率,s表示权重变换的起始位置。
Clip3用于限制参考权重值位于最小值与最大值之间,最小值和最大值均可以根据经验配置,为了方便描述,在后续过程中,以最小值为0,最大值为8为例进行说明。
a表示权重变换率,a可以是不为0的整数,如a可以是-4、-2、-1、1、2、4等,对此a的取值不做限制。若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=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-7单调递增,第二邻近区域的参考权重值均为8,显然,第一邻近区域的参考权重值与第二邻近区域的参考权重值不同。又例如,第一邻近区域的参考权重值均为8,目标区域包括至少两个参考权重值,参考权重值从7-1单调递减,第二邻近区域的参考权重值均为0。
情况2:针对有效数量个参考权重值,可以先包括多个第一数值,再包括多个第二数值,或者,可以先包括多个第二数值,再包括多个第一数值。例如,有效数量个参考权重值可以为[88...8800...00]或[00...0088...88]。示例性的,可以根据权重变换的起始位置确定多个参考权重值。例如,权重变换的起始位置表示第s个参考权重值,因此,第s个参考权重值之前(不包括第s个参考权重值)的所有参考权重值为第一数值(如8),第s个参考权重值之后(包括第s个参考权重值)的所有参考权重值为第二数值(如0)。或者,第s个参考权重值之前的所有参考权重值为第二数值,第s个参考权重值之后的所有参考权重值为第一数值。
步骤g2,根据有效数量个参考权重值,配置当前块外部的周边位置的参考权重值。
示例性的,当前块外部的周边位置的数量为有效数量,且参考权重值的数量为有效数量,因此,可以将有效数量个参考权重值,配置为当前块外部的周边位置的参考权重值。
例如,可以将第1个参考权重值配置为当前块外部的第1个周边位置的参考权重值,将第2个参考权重值配置为当前块外部的第2个周边位置的参考权重值,以此类推。
综上所述,由于已经为当前块外部的周边位置配置参考权重值,即每个周边位置均具有参考权重值,因此,在从当前块外部的周边位置中确定子块的预设位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考权重值,也就是该子块的目标权重值。
以下结合几个具体的应用场景,对上述过程的实施方式进行说明。示例性的,在后续几个应用场景中,假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高。X为权重预测角度的tan值的log2对数值,如0或者1。Y为权重预测位置的索引值,a,b,c,d为预设的常数值。ValidLenth表示有效数量,FirstPos表示权重变换的起始位置,ReferenceWeights[i]表示第i个周边位置的参考权重值,Clip3用于限制参考权重值位于最小值0与最大值8之间,i表示当前块外部的周边位置的索引,a表示权重变换率的绝对值。
应用场景1:基于当前块的尺寸和当前块的权重预测角度确定有效数量(也可以称为参考权重有效长度,即ValidLenth),并获取权重变换的起始位置(即FirstPos)。例如,可以通过如下公式确定ValidLenth:ValidLenth=(N+(M>>X))<<1;通过如下公式确定FirstPos:FirstPos=(ValidLength>>1)-a+Y*((ValidLength-1)>>3)。在此基础上,通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,a*(i-FirstPos))。i的取值范围可以是0~ValidLength-1;或1~ValidLength。在得到当前块的周边位置的参考权重值ReferenceWeights[i]后,通过如下公式导出预设位置为(x,y)的子块的目标权重值:SubBlockWeight=ReferenceWeights[(y<<1)+((x<<1)>>X)],<<表示左移,>>表示右移。
同样的可以采取实施例16的应用场景1中的等价方式直接计算当前块内每个像素位置的目标权重值,不再赘述。
应用场景2:可以通过如下公式确定ValidLenth:ValidLenth=(N+(M>>X))<<1;通过如下公式确定FirstPos:FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X)。在此基础上,通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,a*(i-FirstPos))。可以通过如下公式导出预设位置为(x,y)的子块的目标权重值:SubBlockWeight=ReferenceWeights[(y<<1)-((x<<1)>>X)]。
应用场景3:可以通过如下公式确定ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定FirstPos:FirstPos=(ValidLength>>1)-c+Y*((ValidLength-1)>>3)–((N<<1)>>X)。在此基础上,可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,a*(i-FirstPos))。可以通过如下公式导出预设位置为(x,y)的子块的目标权重值:SubBlockWeight=ReferenceWeights[(x<<1)-((y<<1)>>X)]。
应用场景4:可以通过如下公式确定ValidLenth:ValidLenth=(M+(N>>X))<<1;可以通过如下公式确定FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3);在此基础上,可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,a*(i-FirstPos))。可以通过如下公式导出预设位置为(x,y)的子块的目标权重值:SubBlockWeight=ReferenceWeights[(x<<1)+((y<<1)>>X)]。
应用场景5:参见图7C所示,示出了四种权重变换率的参考权重值的示意图。
在权重变换率的绝对值为1时,即权重变换率为1或者权重变换率为-1,可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,1*(i-FirstPos)),上述公式可以等价为ReferenceWeight[i]=Clip3(0,8,i–FirstPos)。在该情况中,参见图7C所示的第一类情况,FirstPos可以为4,即第1个到第4个周边位置的参考权重值为0,第5个周边位置的参考权重值为1,第6个周边位置的参考权重值为2,以此类推。
在权重变换率的绝对值为2时,即权重变换率为2或者权重变换率为-2,通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,2*(i-FirstPos)),上述公式可以等价为ReferenceWeight[i]=Clip3(0,8,(i–FirstPos)<<1)。在该情况中,参见图7C所示的第二类情况,FirstPos可以为6,即第1个到第6个周边位置的参考权重值为0,第7个周边位置的参考权重值为2,第8个周边位置的参考权重值为4,以此类推。
在权重变换率的绝对值为4时,即权重变换率为4或者权重变换率为-4,可以通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,4*(i-FirstPos)),上述公式可以等价为ReferenceWeight[i]=Clip3(0,8,(i–FirstPos)<<2)。在该情况中,参见图7C所示的第三类情况,FirstPos可以为7,第1个到第7个周边位置的参考权重值为0,第8个周边位置的参考权重值为4,第9-17个周边位置的参考权重值为8。
在权重变换率的绝对值为8时,即权重变换率为8或者权重变换率为-8,通过如下公式导出当前块的每个周边位置的参考权重值:ReferenceWeights[i]=Clip3(0,8,8*(i-FirstPos)),上述公式可以等价为ReferenceWeight[i]=Clip3(0,8,(i–FirstPos)<<3)。在该情况中,参见图7C所示的第四类情况,FirstPos可以为8,即第1个到第8个周边位置的参考权重值为0,第9个周边位置的参考权重值为9,第10-17个周边位置的参考权重值为8,以此类推。
综上所述,在权重变换率的绝对值为1时,FirstPos为4,在权重变换率的绝对值为2时,FirstPos为6(即权重变换率1时的FirstPos+2),在权重变换率的绝对值为4时,FirstPos为7(即权重变换率1时的FirstPos+3),基于此,可以对齐参考权重值为4的位置。
示例性的,针对当前块来说,在支持权重变换率切换并启动权重变换率切换时,可以从图7C所示的4类权重变换率的参考权重值分布示例中选择一种进行切换,从而通过对图像或者图像的局部区域进行权重变换率的切换,达到减弱一些图像显示场景中的图像显示的跳变突出。比如说,有一些图像显示场景中需要解决跳变比较突出的问题,SbAWP模式的权重变化率切换能够解决这个问题。如混合图像内容包括部分屏幕内容,动画片,包含动画片的图像等,可以对某个含有屏幕内容的区域进行权重变换率切换,解决跳变比较突出的问题。
在上述过程中,ValidLenth与当前块的权重预测角度和当前块的尺寸相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将当前块的权重预测角度配置为固定参数值,ValidLenth只与当前块的尺寸相关。FirstPos与当前块的权重预测角度,当前块的尺寸,当前块的权重预测位置相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将当前块的权重预测角度配置为固定参数值,FirstPos只与当前块的尺寸和当前块的权重预测位置相关。或,将当前块的权重预测位置配置为固定参数值,FirstPos只与当前块的尺寸和当前块的权重预测角度相关。或,将当前块的权重预测角度和当前块的权重预测位置均配置为固定参数值,这两个固定参数值可以相同或者不同,FirstPos只与当前块的尺寸相关。
实施例18:在上述实施例11-实施例13中,编码端/解码端根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式中,记M和N是当前块的宽和高,权重阵列导出方式,可以包括:
步骤h1,根据AwpIdx获取stepIdx,angleIdx以及subAngleIdx等参数。
示例性的,AwpIdx表示权重预测位置和权重预测角度的索引值,假设存在7种权重预测位置,8种权重预测角度,则AwpIdx的取值范围是0-55。若权重预测位置为-3至3(表示第4个权重预测位置是中心,第4个权重预测位置为0),权重预测角度的索引为0-7,则AwpIdx的56个索引值对应的权重预测位置和权重预测角度的排列方式可以包括:
排列方式1:
{角度0,跨度-3},{角度1,跨度-3},...,{角度6,跨度-3},{角度7,跨度-3};
{角度0,跨度-2},{角度1,跨度-2},...,{角度6,跨度-2},{角度7,跨度-2};
{角度0,跨度-1},{角度1,跨度-1},...,{角度6,跨度-1},{角度7,跨度-1};
{角度0,跨度0},{角度1,跨度0},...,{角度6,跨度0},{角度7,跨度0};
{角度0,跨度1},{角度1,跨度1},...,{角度6,跨度1},{角度7,跨度1};
{角度0,跨度2},{角度1,跨度2},...,{角度6,跨度2},{角度7,跨度2};
{角度0,跨度3},{角度1,跨度3},...,{角度6,跨度3},{角度7,跨度3}。
排列方式2:
{角度0,跨度0},{角度1,跨度0},...,{角度6,跨度0},{角度7,跨度0};
{角度0,跨度-1},{角度1,跨度-1},...,{角度6,跨度-1},{角度7,跨度-1};
{角度0,跨度1},{角度1,跨度1},...,{角度6,跨度1},{角度7,跨度1};
{角度0,跨度-2},{角度1,跨度-2},...,{角度6,跨度-2},{角度7,跨度-2};
{角度0,跨度2},{角度1,跨度2},...,{角度6,跨度2},{角度7,跨度2};
{角度0,跨度-3},{角度1,跨度-3},...,{角度6,跨度-3},{角度7,跨度-3};
{角度0,跨度3},{角度1,跨度3},...,{角度6,跨度3},{角度7,跨度3}。
在上述排列方式1和排列方式2中,角度0表示8种权重预测角度中的第一种权重预测角度,角度1表示8种权重预测角度中的第二种权重预测角度,以此类推。
跨度0表示7种权重预测位置中的第4个权重预测位置(即处于中心的权重预测位置),跨度-1表示第4个权重预测位置左侧第一个权重预测位置(即表示7种权重预测位置中的第3个权重预测位置),跨度1表示第4个权重预测位置右侧第一个权重预测位置(即表示7种权重预测位置中的第5个权重预测位置),跨度-2表示第4个权重预测位置左侧第二个权重预测位置(即表示7种权重预测位置中的第2个权重预测位置),以此类推。
在排列方式1中,{角度0,跨度-3}对应的AwpIdx为0,{角度1,跨度-3}对应的AwpIdx为1,{角度2,跨度-3}对应的AwpIdx为2,以此类推,{角度7,跨度3}对应的AwpIdx为55,按照排列方式1的顺序,AwpIdx依次增加。在排列方式2中,{角度0,跨度0}对应的AwpIdx为0,{角度1,跨度0}对应的AwpIdx为2,{角度2,跨度0}对应的AwpIdx为3,以此类推,{角度7,跨度3}对应的AwpIdx为55,按照排列方式2的顺序AwpIdx依次增加。
显然,当AwpIdx的取值越小时,码率代价越小,当AwpIdx的取值越大时,码率代价越大,因此,AwpIdx的前面取值的码率代价会低于后面取值的码率代价。基于上述原因,在排列方式2中,考虑将“跨度0”的权重预测位置放置于最前面,即“跨度0”的权重预测位置与8种权重预测角度的组合,其AwpIdx的取值是前8种取值,其码率代价最小。又由于“跨度0”的权重预测位置被选中的概率较大,因此,排列方式2能够降低编码的码率代价。
示例性的,stepIdx表示权重预测位置(即权重预测位置的索引值),权重预测位置的范围可以是-3至3。例如,针对第1个权重预测位置,权重预测位置为-3,针对第2个权重预测位置,权重预测位置为-2,以此类推,针对第7个权重预测位置,权重预测位置为3。
示例性的,angleIdx表示权重预测角度的斜率的绝对值的log2对数值(如0或1或较大常数),subAngleIdx表示权重预测角度所在的角度分区。参见图7D所示,示出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。
综上所述,根据AwpIdx获取stepIdx,angleIdx以及subAngleIdx,可以包括:
可以采用如下公式确定stepIdx:
Figure BDA0002876388560000501
可以根据如下公式确定modAngNum(角度编号):modAngNum=AwpIdx%8;基于modAngNum,可以采用如下方式确定angleIdx:若modAngNum等于2,则angleIdx=7;若modAngNum等于6,则angleIdx=8;否则,angleIdx=modAngNum%2。
可以采用如下公式确定subAngleIdx:subAngleIdx=modAngNum>>1。
综上所述,编码端在确定出当前块的权重预测角度和当前块的权重预测位置后,可以基于该权重预测角度和该权重预测位置确定AwpIdx的取值,参见排列方式1或者排列方式2。编码端在向解码端发送编码比特流时,该编码比特流可以携带AwpIdx的取值,基于此,解码端可以得到AwpIdx的取值,并根据AwpIdx获取stepIdx,angleIdx以及subAngleIdx。stepIdx能够唯一确定一个权重预测位置,angleIdx以及subAngleIdx能够唯一确定一个权重预测角度,参见表2所示,当然,也可以采用其它方式确定权重预测角度,例如,更改分区编号等。
表2
Figure BDA0002876388560000502
Figure BDA0002876388560000511
步骤h2,根据stepIdx,angleIdx和subAngleIdx为当前块外部周边位置配置参考权重值。
情况一、若subAngleIdx为0,即权重预测角度位于角度分区0,比如说,权重预测角度为权重预测角度0或权重预测角度1,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_H>>1)-3+DeltaPos_H。然后,采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,8*(x-FirstPos)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为8为例进行说明,也就是说,上述公式可以等价为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)-1+DeltaPos_H–((M<<1)>>angleIdx)。然后,采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,a*(x-FirstPos)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~ValidLength_H-1。
在上述公式中,ValidLength_H和DeltaPos_H可以参见情况一,在此不再赘述。
情况三、若subAngleIdx为2,即权重预测角度位于角度分区2,比如说,权重预测角度为权重预测角度4或权重预测角度5,则可以采用如下公式确定权重变换的起始位置FirstPos:FirstPos=(ValidLength_W>>1)-1+DeltaPos_W–((N<<1)>>angleIdx)。然后,采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,a*(x-FirstPos)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。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)-3+DeltaPos_W。然后,可以采用如下公式确定当前块外部的周边位置的参考权重值:ReferenceWeights[x]=Clip3(0,8,a*(x-FirstPos)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。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]的起始位置发生了变化。例如,参见图7E所示,示出了角度分区2和角度分区3的示例,在1/2-pel精度时,参考权重值ReferenceWeights[x]的起始位置为(高<<1)>>angleIdx,即公式中的偏移“–((N<<1)>>angleIdx)”。角度分区0和角度分区1的实现类似,只是公式中的偏移为“–((M<<1)>>angleIdx)”,即高度改为宽度即可。
步骤h3,根据angleIdx和参考权重值ReferenceWeights[x]获取像素位置的亮度权重值,即子块的预设位置的亮度权重值作为该子块的每个像素位置的亮度权重值。
情况一、若subAngleIdx为0,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(((y>>2)<<2)<<1)+((((x>>2)<<2)<<1)>>angleIdx)],(((y>>2)<<2)<<1)+((((x>>2)<<2)<<1)>>angleIdx)表示像素位置(x,y)所在的子块的预设位置((x>>2)<<2,(y>>2)<<2)指向的周边位置,ReferenceWeights[(y<<1)+((x<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1,y的取值范围是0~N-1。
情况二、若subAngleIdx为1,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(((y>>2)<<2)<<1)-((((x>>2)<<2)<<1)>>angleIdx)],(((y>>2)<<2)<<1)-((((x>>2)<<2)<<1)>>angleIdx)表示像素位置(x,y)所在的子块的预设位置((x>>2)<<2,(y>>2)<<2)指向的周边位置,ReferenceWeights[(y<<1)-((x<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
情况三、若subAngleIdx为2,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(((x>>2)<<2)<<1)-((((y>>2)<<2)<<1)>>angleIdx)],(((x>>2)<<2)<<1)-((((y>>2)<<2)<<1)>>angleIdx)表示像素位置(x,y)所在的子块的预设位置((x>>2)<<2,(y>>2)<<2)指向的周边位置,ReferenceWeights[(x<<1)-((y<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
情况四、若subAngleIdx为3,则可以采用如下公式确定像素位置(x,y)的亮度权重值:AwpWeightArrayY[x][y]=ReferenceWeights[(((x>>2)<<2)<<1)+((((y>>2)<<2)<<1)>>angleIdx)],(((x>>2)<<2)<<1)+((((y>>2)<<2)<<1)>>angleIdx)表示像素位置(x,y)所在的子块的预设位置((x>>2)<<2,(y>>2)<<2)指向的周边位置,ReferenceWeights[(x<<1)+((y<<1)>>angleIdx)]表示该周边位置的参考权重值。x的取值范围是0~M-1;y的取值范围是0~N-1。
步骤h4,根据像素位置的亮度权重值获取该像素位置的色度权重值,而该像素位置的亮度权重值和该像素位置的色度权重值,就可以组成该像素位置的目标权重值。
例如,若色度分辨率的格式为4:2:0且子块大小均为4x4,则采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=AwpWeightArrayY[((x>>2)<<2)<<1][((y>>2)<<2)<<1]。若色度分辨率的格式为4:2:0且子块大小均为8x8,则采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=AwpWeightArrayY[((x>>3)<<3)<<1][((y>>3)<<3)<<1]。其中,x的取值范围是0~M/2-1;y的取值范围是0~N/2-1。又例如,若色度分辨率的格式为4:4:4,则无论何种子块划分,均采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=AwpWeightArrayY[x][y]。其中,x的取值范围是0~M-1;y的取值范围是0~N-1。
步骤h4的另一种实现方式为:根据angleIdx和参考权重值ReferenceWeight[x]获取像素位置的色度权重值,而不需要根据亮度权重值获取色度权重值。例如,若色度分辨率的格式为4:2:0,则根据angleIdx和参考权重值ReferenceWeight[x]获取像素位置的色度权重值。
以当前块均为4x4划分为例:
例如,若subAngleIdx为0,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(((y>>2)<<2)<<2)+((((x>>2)<<2)<<2)>>angleIdx)]。
例如,若subAngleIdx为1,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(((y>>2)<<2)<<2)-((((x>>2)<<2)<<2)>>angleIdx)]。
例如,若subAngleIdx为2,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(((x>>2)<<2)<<2)-((((y>>2)<<2)<<2)>>angleIdx)]。
例如,若subAngleIdx为3,则可以采用如下公式确定像素位置(x,y)的色度权重值:AwpWeightArrayUV[x][y]=ReferenceWeights[(((x>>2)<<2)<<2)+((((y>>2)<<2)<<2)>>angleIdx)]。
在上述各公式中,x的取值范围是0~M/2-1,y的取值范围是0~N/2-1,子块的预设位置坐标为((x>>2)<<2,(y>>2)<<2)。
在步骤h3和步骤h4中,各情况中的公式的区别在于,参见图7F所示,示出了角度分区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)的位置即可。
实施例19:在上述实施例11-实施例13中,编码端/解码端需要获取当前块的权重变换率,若当前块支持权重变换率切换模式,则采用如下方式获取当前块的权重变换率:获取当前块的权重变换率指示信息,并根据该权重变换率指示信息确定当前块的权重变换率。示例性的,若该权重变换率指示信息为第一指示信息,则当前块的权重变换率为第一权重变换率;若权重变换率指示信息为第二指示信息,则当前块的权重变换率为第二权重变换率。若当前块不支持权重变换率切换模式,则将预设的权重变换率确定为当前块的权重变换率。
综上所述,若当前块支持权重变换率切换模式,则当前块的权重变换率可以为第一权重变换率或者第二权重变换率,且第一权重变换率与第二权重变换率不同,即,当前块的权重变换率是可变的,从而能够自适应的切换权重变换率,而不是采用统一的一个权重变换率。
示例性的,若切换控制信息允许当前块启用权重变换率切换模式,则当前块支持权重变换率切换模式,若切换控制信息不允许当前块启用权重变换率切换模式,则当前块不支持权重变换率切换模式。该切换控制信息可以包括但不限于:序列级切换控制信息,帧级切换控制信息,Slice(片)级切换控制信息,Tile(片)级切换控制信息,Patch(片)级切换控制信息,CTU(Coding Tee Unit,编码树单元)级切换控制信息,LCU(Largest CodingUnit,最大编码单元)级切换控制信息,块级切换控制信息,CU(Coding Unit,编码单元)级切换控制信息,PU(Prediction Unit,预测单元)级切换控制信息等,对此不做限制。
对于编码端来说,可以获知切换控制信息,且获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。编码端可以将切换控制信息编码到码流,使得解码端从码流中解析出切换控制信息,获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。编码端也可以不将切换控制信息编码到码流,而是由解码端隐式推导出切换控制信息,获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。
以序列级切换控制信息为例,序列级切换控制信息为awp_adptive_flag(帧间角度加权预测适应标志位),若awp_adptive_flag为第一取值,则表示序列级切换控制信息允许当前序列启用权重变换率切换模式,从而允许当前块启用权重变换率切换模式,若awp_adptive_flag为第二取值,则表示序列级切换控制信息不允许当前序列启用权重变换率切换模式,从而不允许当前块启用权重变换率切换模式。示例性的,第一取值为1,第二取值为0,或者,第一取值为0,第二取值为1。当然,上述只是第一取值和第二取值的示例,对此不做限制。针对其它类型的切换控制信息,实现过程与序列级切换控制信息类似,在此不再赘述。
在一种可能的实施方式中,当前块的权重变换率指示信息可以为当前块对应的权重变换率切换标识,第一指示信息用于指示当前块不需要进行权重变换率切换,第二指示信息用于指示当前块需要进行权重变换率切换。在此基础上,可以获取当前块对应的权重变换率切换标识,并根据该权重变换率切换标识确定当前块的权重变换率。例如,若该权重变换率切换标识用于指示当前块不需要进行权重变换率切换,则当前块的权重变换率可以为第一权重变换率;若该权重变换率切换标识用于指示当前块需要进行权重变换率切换,则当前块的权重变换率可以为第二权重变换率。第一权重变换率的绝对值不等于第二权重变换率的绝对值。
例如,第一权重变换率的绝对值可以大于第二权重变换率的绝对值,如第一权重变换率的绝对值可以为4,第二权重变换率的绝对值为1或2。或,第一权重变换率的绝对值可以为2,第二权重变换率的绝对值为1。或,第一权重变换率的绝对值可以为8,第二权重变换率的绝对值为1或2或4。又例如,第一权重变换率的绝对值可以小于第二权重变换率的绝对值,如第一权重变换率的绝对值可以为1,第二权重变换率的绝对值可以为2或4或8。或者,第一权重变换率的绝对值可以为2,第二权重变换率的绝对值可以为4或8。或者,第一权重变换率的绝对值可以为4,第二权重变换率的绝对值可以为8。当然,上述只是几个示例,对此不做限制,只要第一权重变换率的绝对值不等于第二权重变换率的绝对值即可。
示例性的,权重变换率切换标识可以包括但不限于:序列级权重变换率切换标识,帧级权重变换率切换标识,Slice级权重变换率切换标识,Tile级权重变换率切换标识,Patch级权重变换率切换标识,CTU级权重变换率切换标识,LCU级权重变换率切换标识,块级权重变换率切换标识,CU级权重变换率切换标识,PU级权重变换率切换标识等等,对此不做限制。
例如,可以将当前块对应的序列级权重变换率切换标识确定为当前块对应的权重变换率切换标识,或者,将当前块对应的帧级权重变换率切换标识确定为当前块对应的权重变换率切换标识,以此类推,只要能够得到当前块对应的权重变换率切换标识即可。
示例性的,可以将第一权重变换率作为默认的权重变换率,对于编码端来说,可以获知当前块是否需要进行权重变换率切换,若当前块不需要进行权重变换率切换,则编码端确定当前块的权重变换率为第一权重变换率。若当前块需要进行权重变换率切换,则编码端确定当前块的权重变换率为第二权重变换率。或者,对于编码端来说,可以获知当前块对应的权重变换率切换标识,若该权重变换率切换标识用于指示当前块不需要进行权重变换率切换,则编码端可以确定当前块的权重变换率为第一权重变换率。若该权重变换率切换标识用于指示当前块需要进行权重变换率切换,则编码端确定当前块的权重变换率为第二权重变换率。
例如,编码端确定与第一权重变换率对应的率失真代价值1,与第二权重变换率对应的率失真代价值2。若率失真代价值1小于率失真代价值2,则确定当前块不需要进行权重变换率切换,若率失真代价值2小于率失真代价值1,则确定当前块需要进行权重变换率切换。
编码端可以将权重变换率切换标识(如序列级权重变换率切换标识等)编码到码流,使得解码端从码流中解析出该权重变换率切换标识,并将该权重变换率切换标识确定为当前块对应的权重变换率切换标识。综上所述,解码端可以获知当前块对应的权重变换率切换标识,若该权重变换率切换标识用于指示当前块不需要进行权重变换率切换,则解码端确定当前块的权重变换率为第一权重变换率。若该权重变换率切换标识用于指示当前块需要进行权重变换率切换,则解码端确定当前块的权重变换率为第二权重变换率。例如,若权重变换率切换标识为第一取值,则指示当前块不需要进行权重变换率切换,若权重变换率切换标识为第二取值,则指示当前块需要进行权重变换率切换。第一取值为1,第二取值为0,或者,第一取值为0,第二取值为1。当然,上述只是第一取值和第二取值的示例,对此不做限制。
编码端也可以不将权重变换率切换标识编码到码流,而是由解码端隐式推导权重变换率切换标识,并将该权重变换率切换标识确定为当前块对应的权重变换率切换标识。例如,若连续多个块均需要进行权重变换率切换,则当前块也需要进行权重变换率切换,解码端隐式推导出权重变换率切换标识,将该权重变换率切换标识确定为当前块对应的权重变换率切换标识,且该权重变换率切换标识指示当前块需要进行权重变换率切换。若连续多个块均不需要进行权重变换率切换,则当前块也不需要进行权重变换率切换,解码端隐式推导出权重变换率切换标识,且权重变换率切换标识指示当前块不需要进行权重变换率切换。当然,上述方式只是隐式推导出权重变换率切换标识的示例,对此推导方式不做限制。综上所述,解码端可以获知当前块对应的权重变换率切换标识,若该权重变换率切换标识指示当前块不需要进行权重变换率切换,则确定当前块的权重变换率为第一权重变换率。若该权重变换率切换标识指示当前块需要进行权重变换率切换,则确定当前块的权重变换率为第二权重变换率。
综上所述,当前块的权重变换率可以为第一权重变换率或第二权重变换率,即当前块的权重变换率可以进行切换,权重变换率的切换依赖于某级的权重变换率切换标识(refine_flag),该refine_flag为显示标识或隐式标识,显示标识是指将refine_flag编入码流,使得解码端从码流中解析出refine_flag,隐式标识是指编解码端根据能够得到的信息自适应推导refine_flag。
示例性的,某级refine_flag是指:序列级指示当前序列的refine_flag,作为属于当前序列的所有块的refine_flag;帧级指示当前帧的refine_flag,作为属于当前帧的所有块的refine_flag;Slice级指示当前Slice的refine_flag,作为属于当前Slice的所有块的refine_flag;Tile级指示当前Tile的refine_flag,作为属于当前Tile的所有块的refine_flag;Patch级指示当前Patch的refine_flag,作为属于当前Patch的所有块的refine_flag;CTU级指示当前CTU的refine_flag,作为属于当前CTU的所有块的refine_flag;LCU级指示当前LCU的refine_flag,作为属于当前LCU的所有块的refine_flag;块级指示当前块的refine_flag,作为属于当前块的refine_flag;CU级指示当前CU的refine_flag,作为属于当前CU的refine_flag;PU级指示当前PU的refine_flag,作为属于当前PU的refine_flag。当然,上述只是几个示例,对此不做限制。
示例性的,可以将第一权重变换率作为默认的权重变换率,在权重变换率切换标识用于指示当前块不需要进行权重变换率切换时,不对权重变换率进行切换,即确定当前块的权重变换率为第一权重变换率。在权重变换率切换标识用于指示当前块需要进行权重变换率切换时,对权重变换率进行切换,即确定当前块的权重变换率为第二权重变换率。
实施例20:在上述实施例11-实施例13中,编码端/解码端需要获取当前块的权重预测角度和权重预测位置,在实施例19中,可以得到当前块的权重变换率,如第一权重变换率或者第二权重变换率,在此基础上,采用如下方式获取当前块的权重预测角度和权重预测位置:
编码端和解码端约定相同的权重预测角度作为当前块的权重预测角度,并约定相同的权重预测位置作为当前块的权重预测位置。例如,编码端和解码端将权重预测角度0作为当前块的权重预测角度,编码端和解码端将权重预测位置4作为当前块的权重预测位置。
编码端构建权重预测角度列表,权重预测角度列表包括至少一个权重预测角度,如上述实施例的8种权重预测角度(0至7)。构建权重预测位置列表,权重预测位置列表包括至少一个权重预测位置,如上述实施例的7种权重预测位置(-3至3)。依次遍历权重预测角度列表中每个权重预测角度,遍历权重预测位置列表中每个权重预测位置,即遍历每个权重预测角度及每个权重预测位置的组合。将每个组合作为获取的权重预测角度和权重预测位置,基于权重预测角度,权重预测位置及权重变换率,得到当前块的加权预测值。
例如,编码端遍历到权重预测角度0和权重预测位置0时,基于权重预测角度0和权重预测位置0得到当前块的加权预测值。遍历到权重预测角度1和权重预测位置0时,基于权重预测角度1和权重预测位置0得到当前块的加权预测值,以此类推。基于权重预测角度和权重预测位置的每个组合,得到当前块的加权预测值。基于权重预测角度和权重预测位置的组合得到当前块的加权预测值后,根据当前块的加权预测值确定率失真代价值,对此率失真代价值的确定方式不做限制,基于每个组合的率失真代价值选择最小率失真代价值。
然后,编码端将最小率失真代价值对应的权重预测角度和权重预测位置组合分别作为目标权重预测角度和目标权重预测位置,最后,将目标权重预测角度在权重预测角度列表中的索引值和目标权重预测位置在权重预测位置列表中的索引值编入码流。
针对解码端来说,解码端构建权重预测角度列表,该权重预测角度列表与编码端的权重预测角度列表相同,权重预测角度列表包括至少一个权重预测角度。构建权重预测位置列表,该权重预测位置列表与编码端的权重预测位置列表相同,权重预测位置列表包括至少一个权重预测位置。解码端在接收到当前块的编码比特流后,从编码比特流中解析出指示信息,根据该指示信息从权重预测角度列表中选择一个权重预测角度作为当前块的权重预测角度,根据该指示信息从权重预测位置列表中选择一个权重预测位置作为当前块的权重预测位置。
比如说,编码端在向解码端发送编码比特流时,该编码比特流可以包括指示信息,该指示信息用于指示当前块的权重预测角度和当前块的权重预测位置,参见上述实施例的AwpIdx,以排列方式2为例,基于当前块的权重预测角度和当前块的权重预测位置,编码端可以获知AwpIdx的取值,并在编码比特流中编码AwpIdx的取值(即指示信息)。解码端在接收到编码比特流后,从该编码比特流中解析出该指示信息(即AwpIdx的取值),基于AwpIdx的取值以及排列方式2,可以确定当前块的权重预测角度和当前块的权重预测位置。
上述实施例11-20是SbAWP模式的编解码过程,在SbAWP模式中,模式数可以在序列级,帧级,Slice级,Tile级,Patch级,CTU级,LCU级,块级,CU级,PU级开关控制大小。模式数大小的控制可以通过权重预测角度的增减或/和参考权重配置方式数量的增减。语法标识可以单独编码flag也可以依赖别的flag导出,如通过某个flag来控制SbAWP模式的模式数,如flag为1时,权重预测角度为6种,flag为0时,权重预测角度为8种。
在上述实施例11-实施例20中,涉及权重预测角度,上述实施例是以8种权重预测角度为例,实际应用中,权重预测角度的数量还可以与当前块的尺寸有关,比如说,若当前块的尺寸越大,则权重预测角度的数量越多,当前块的尺寸越小,则权重预测角度的数量越少。在上述实施例1-实施例9中,还涉及权重预测位置,上述实施例是以7种权重预测位置为例,实际应用中,权重预测位置的数量还可以与当前块的尺寸有关,比如说,若当前块的尺寸越大,则权重预测位置的数量越多,当前块的尺寸越小,则权重预测位置的数量越少。关于权重预测角度的数量和权重预测位置的数量,本实施例中不做限制,与当前块的尺寸有关即可。
实施例21:在上述实施例11-实施例13中,编码端和解码端需要根据当前块的第一目标预测模式确定子块的第一预测值,并根据当前块的第二目标预测模式确定该子块的第二预测值。示例性的,第一目标预测模式可以为基于帧间预测模式的模式信息,或基于帧内预测模式的模式信息,或基于帧内块拷贝预测模式的模式信息,或基于调色板模式的模式信息。此外,第二目标预测模式可以为基于帧间预测模式的模式信息,或基于帧内预测模式的模式信息,或基于帧内块拷贝预测模式的模式信息,或基于调色板模式的模式信息。
比如说,若第一目标预测模式或第二目标预测模式为基于帧间预测模式的模式信息,则该模式信息为该子块的目标运动信息,可以基于该子块的目标运动信息确定该子块的预测值。
又例如,若第一目标预测模式或第二目标预测模式为基于帧内预测模式的模式信息,则该模式信息为该子块的帧内模式信息(如DC模式,Planner模式,水平角度模式和垂直角度模式等各种角度模式),可以基于该子块的帧内模式信息确定该子块的预测值。
又例如,若第一目标预测模式或第二目标预测模式为基于帧内块拷贝预测模式的模式信息,则该模式信息为该子块的块矢量,可以基于该子块的块矢量确定该子块的预测值。
又例如,若第一目标预测模式或第二目标预测模式为基于调色板模式的模式信息,则该模式信息为该子块的调色板,可以基于该子块的调色板确定该子块的预测值。
当然,上述只是第一目标预测模式和第二目标预测模式的几个示例,对此不做限制。
在一种可能的实施方式中,编码端和解码端需要根据当前块的第一目标预测模式确定子块的第一预测值,并根据当前块的第二目标预测模式确定该子块的第二预测值之前,可以先获取当前块的第一目标预测模式和第二目标预测模式,在得到第一目标预测模式和第二目标预测模式后,就可以根据当前块的第一目标预测模式确定子块的第一预测值,并根据当前块的第二目标预测模式确定该子块的第二预测值,并基于第一预测值和第二预测值确定该子块的加权预测值,将当前块的所有子块的加权预测值组合起来,得到当前块的加权预测值。
示例性的,为了获取第一目标预测模式和第二目标预测模式,可以采用如下方式:
方式1、编码端和解码端约定第一目标预测模式和第二目标预测模式,在此基础上,针对编码端和解码端来说,均可以直接获取当前块的第一目标预测模式和第二目标预测模式。
比如说,编码端和解码端均预先配置第一目标预测模式对应模式信息0,第二目标预测模式对应模式信息1,在此基础上,可以直接获得第一目标预测模式和第二目标预测模式。
示例性的,关于与第一目标预测模式(或第二目标预测模式)对应的模式信息,可以根据经验配置,例如,第一目标预测模式(或第二目标预测模式)对应的模式信息可以为基于帧间预测模式的模式信息,如基于帧间预测模式的MVP+MVD,又例如,第一目标预测模式(或第二目标预测模式)对应的模式信息可以为基于帧内预测模式的模式信息,如基于帧内预测模式的MPM+idx。当然,上述只是几个示例,对此模式信息不做限制。
方式2、获取为当前块创建的模式信息候选列表,该模式信息候选列表可以包括至少两个候选模式信息;从该模式信息候选列表中选取一个候选模式信息作为当前块的第一目标预测模式,并从该模式信息候选列表中选取另一个候选模式信息作为当前块的第二目标预测模式,且当前块的第一目标预测模式与当前块的第二目标预测模式可以不同。
示例性的,针对编码端和解码端来说,可以为当前块创建相同的模式信息候选列表,该模式信息候选列表中的候选模式信息可以包括但不限于以下至少一种:基于帧间预测模式的候选模式信息,基于帧内预测模式的候选模式信息,基于帧内块拷贝预测模式的候选模式信息,基于调色板模式的候选模式信息。当然,上述只是几个示例,对此不做限制。
比如说,该模式信息候选列表中的候选模式信息可以只包括基于帧间预测模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以只包括基于帧内预测模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以只包括基于帧内块拷贝预测模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以只包括基于调色板模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以同时包括基于帧间预测模式的候选模式信息和基于帧内预测模式的候选模式信息;或者,该模式信息候选列表中的候选模式信息可以同时包括基于帧间预测模式的候选模式信息,基于帧内预测模式的候选模式信息和基于帧内块拷贝预测模式的候选模式信息,对此候选模式信息不做限制。
针对基于帧间预测模式的候选模式信息,可以是各种运动信息,比如说,当前块的空域相邻块的运动信息(即空域运动信息),当前块的时域相邻块的运动信息(即时域运动信息),预设运动信息(如基于空域运动信息和/或时域运动信息推导出的运动信息,零运动信息等)。针对基于帧间预测模式的候选模式信息,也可以是预测模式,如MVP+MVD的预测模式等。
针对基于帧内预测模式的候选模式信息,可以是各种帧内模式信息,比如说,候选模式信息可以为DC模式,Planar模式,33种角度模式(参见表1所示)等。针对基于帧内预测模式的候选模式信息,也可以是预测模式,如MPM+idx的预测模式等。
针对基于帧内块拷贝预测模式的候选模式信息,可以是各种块矢量。
当然,上述只是模式信息候选列表中的候选模式信息的几个示例,对此模式信息候选列表中的候选模式信息不做限制,只要基于该候选模式信息能够确定子块的预测值即可。
示例性的,针对编码端来说,依次遍历模式信息候选列表中的每个候选模式信息,基于候选模式信息得到当前块的加权预测值。比如说,假设一共存在4个候选模式信息,则:
为第一目标预测模式遍历出候选模式信息0,为第二目标预测模式遍历出候选模式信息1,即不同目标预测模式对应的候选模式信息不同,确定这种情况下的当前块的加权预测值。为第一目标预测模式遍历出候选模式信息0,为第二目标预测模式遍历出候选模式信息2,确定这种情况下的当前块的加权预测值。为第一目标预测模式遍历出候选模式信息0,为第二目标预测模式遍历出候选模式信息3,确定这种情况下的当前块的加权预测值。为第一目标预测模式遍历出候选模式信息1,为第二目标预测模式遍历出候选模式信息0,确定这种情况下的当前块的加权预测值。为第一目标预测模式遍历出候选模式信息1,为第二目标预测模式遍历出候选模式信息2,确定这种情况下的当前块的加权预测值,以此类推。
基于每种组合下当前块的加权预测值,编码端可以根据当前块的加权预测值确定出率失真代价值,并将最小率失真代价值对应的候选模式信息作为当前块的第一目标预测模式和第二目标预测模式,比如说,将模式信息候选列表中的候选模式信息0作为第一目标预测模式,并将模式信息候选列表中的候选模式信息1作为第二目标预测模式。
编码端向解码端发送编码比特流时,在编码比特流中编码第一目标预测模式的指示信息(记为指示信息a),并在编码比特流中编码第二目标预测模式的指示信息(记为指示信息b)。指示信息a用于指示第一目标预测模式在模式信息候选列表中的索引值(表示第几个候选模式信息),指示信息b用于指示第二目标预测模式在模式信息候选列表中的索引值。
针对解码端来说,在接收到当前块的编码比特流后,可以从该编码比特流中解析出第一目标预测模式的指示信息a,基于该指示信息a,解码端从该模式信息候选列表中选取一个候选模式信息作为第一目标预测模式,即,将该模式信息候选列表中的第一个候选模式信息0作为第一目标预测模式。还可以从该编码比特流中解析出第二目标预测模式的指示信息b,基于该指示信息b,解码端从该模式信息候选列表中选取另一个候选模式信息作为第二目标预测模式,即,将该模式信息候选列表中的第二个候选模式信息1作为第二目标预测模式。
方式3、获取为当前块创建的模式信息候选列表,该模式信息候选列表可以包括至少一个候选模式信息;从该模式信息候选列表中选取一个候选模式信息作为当前块的第一目标预测模式,并基于第一目标预测模式推导出当前块的第二目标预测模式,且当前块的第一目标预测模式与当前块的第二目标预测模式可以不同。关于如何基于第一目标预测模式推导出第二目标预测模式,本实施例不做限制,例如,第一目标预测模式为帧间预测模式的运动信息时,可以通过运动信息叠加MVD的方式推导出第二目标预测模式。又例如,第一目标预测模式为帧内预测模式的帧内模式信息时,可以通过帧内模式信息推导出第二目标预测模式。
示例性的,针对编码端和解码端来说,可以为当前块创建相同的模式信息候选列表,该模式信息候选列表中的候选模式信息可以包括但不限于以下至少一种:基于帧间预测模式的候选模式信息,基于帧内预测模式的候选模式信息,基于帧内块拷贝预测模式的候选模式信息,基于调色板模式的候选模式信息。当然,上述只是几个示例,对此不做限制。
针对基于帧间预测模式的候选模式信息,可以是各种运动信息,比如说,当前块的空域相邻块的运动信息,当前块的时域相邻块的运动信息,预设运动信息。针对基于帧间预测模式的候选模式信息,也可以是预测模式,如MVP+MVD的预测模式等。针对基于帧内预测模式的候选模式信息,可以是各种帧内模式信息,比如说,候选模式信息可以为DC模式,Planar模式,33种角度模式等。针对基于帧内预测模式的候选模式信息,也可以是预测模式,如MPM+idx的预测模式等。针对基于帧内块拷贝预测模式的候选模式信息,可以是各种块矢量。
示例性的,针对编码端来说,依次遍历模式信息候选列表中的每个候选模式信息,基于候选模式信息得到当前块的加权预测值。比如说,假设一共存在4个候选模式信息,则:
为第一目标预测模式遍历出候选模式信息0,并基于候选模式信息0推导出第二目标预测模式,确定这种情况下的当前块的加权预测值。为第一目标预测模式遍历出候选模式信息1,并基于候选模式信息1推导出第二目标预测模式,确定这种情况下的当前块的加权预测值。为第一目标预测模式遍历出候选模式信息2,并基于候选模式信息2推导出第二目标预测模式,确定这种情况下的当前块的加权预测值。为第一目标预测模式遍历出候选模式信息3,并基于候选模式信息3推导出第二目标预测模式,确定这种情况下的当前块的加权预测值。
基于每种组合下当前块的加权预测值,编码端可以根据当前块的加权预测值确定出率失真代价值,并将最小率失真代价值对应的候选模式信息作为当前块的第一目标预测模式,比如说,可以将模式信息候选列表中的候选模式信息0作为第一目标预测模式。
编码端向解码端发送编码比特流时,在编码比特流中编码第一目标预测模式的指示信息(记为指示信息a),指示信息a用于指示第一目标预测模式在模式信息候选列表中的索引值。
针对解码端来说,在接收到当前块的编码比特流后,解码端可以从该编码比特流中解析出第一目标预测模式的指示信息a,基于该指示信息a,解码端可以从该模式信息候选列表中选取一个候选模式信息作为第一目标预测模式,即,将该模式信息候选列表中的第一个候选模式信息0作为第一目标预测模式。在得到第一目标预测模式后,解码端还可以基于第一目标预测模式推导出当前块的第二目标预测模式,对此推导过程不做限制。
方式4、获取为当前块创建的至少两个模式信息候选列表,以两个模式信息候选列表为例,针对每个模式信息候选列表来说,该模式信息候选列表包括至少一个候选模式信息。基于所述两个模式信息候选列表,从一个模式信息候选列表中选取一个候选模式信息作为第一目标预测模式,从另一个模式信息候选列表中选取一个候选模式信息作为第二目标预测模式。
示例性的,针对编码端来说,可以为当前块创建两个模式信息候选列表,针对解码端来说,也可以为当前块创建两个模式信息候选列表。编码端创建的两个模式信息候选列表与解码端创建的两个模式信息候选列表相同。针对编码端和解码端创建的每个模式信息候选列表,该模式信息候选列表中的候选模式信息可以包括但不限于以下至少一种:基于帧间预测模式的候选模式信息,基于帧内预测模式的候选模式信息,基于帧内块拷贝预测模式的候选模式信息,基于调色板模式的候选模式信息。当然,上述只是几个示例,对此不做限制。
示例性的,针对同一个模式信息候选列表,可以只包括一种预测模式的候选模式信息,针对不同的模式信息候选列表,可以包括不同预测模式的候选模式信息。比如说,假设编码端和解码端均创建模式信息候选列表0和模式信息候选列表1,则模式信息候选列表0中的候选模式信息可以只包括基于帧间预测模式的候选模式信息,模式信息候选列表1中的候选模式信息可以只包括基于帧内预测模式的候选模式信息。或者,模式信息候选列表0中的候选模式信息可以只包括基于帧内预测模式的候选模式信息,模式信息候选列表1中的候选模式信息可以只包括基于帧内块拷贝预测模式的候选模式信息,对此不做限制。
针对同一个模式信息候选列表,也可以同时包括至少两种预测模式的候选模式信息,比如说,假设编码端和解码端均创建模式信息候选列表0和模式信息候选列表1,则模式信息候选列表0中的候选模式信息可以同时包括基于帧间预测模式的候选模式信息和基于帧内块拷贝预测模式的候选模式信息,模式信息候选列表1中的候选模式信息可以同时包括基于帧内预测模式的候选模式信息和基于帧内块拷贝预测模式的候选模式信息,对此不做限制。
示例性的,针对基于帧间预测模式的候选模式信息,可以是各种运动信息,比如说,当前块的空域相邻块的运动信息,当前块的时域相邻块的运动信息,预设运动信息。也可以是预测模式,如MVP+MVD的预测模式等。针对基于帧内预测模式的候选模式信息,可以是各种帧内模式信息,如DC模式,Planar模式,33种角度模式等。也可以是预测模式,如MPM+idx的预测模式等。针对基于帧内块拷贝预测模式的候选模式信息,可以是各种块矢量。
当然,上述只是模式信息候选列表中的候选模式信息的几个示例,对此模式信息候选列表中的候选模式信息不做限制,只要基于该候选模式信息能够确定子块的预测值即可。
在一种可能的实施方式中,目标预测模式的数量与模式信息候选列表的数量可以相同,即,每个目标预测模式对应一个模式信息候选列表,比如说,由于需要确定当前块的第一目标预测模式和第二目标预测模式,因此,编码端和解码端均可以创建两个模式信息候选列表,如模式信息候选列表0和模式信息候选列表1,模式信息候选列表0中的候选模式信息包括基于帧间预测模式的候选模式信息,模式信息候选列表1中的候选模式信息包括基于帧内预测模式的候选模式信息。当然,上述候选模式信息只是示例,对此不做限制,比如说,模式信息候选列表0中的候选模式信息包括基于帧内预测模式的候选模式信息,模式信息候选列表1中的候选模式信息包括基于帧内预测模式的候选模式信息。又例如,模式信息候选列表0中的候选模式信息包括基于帧间预测模式的候选模式信息,模式信息候选列表1中的候选模式信息包括基于帧间预测模式的候选模式信息。在此基础上,第一目标预测模式与模式信息候选列表0对应,第二目标预测模式与模式信息候选列表1对应,或者,第一目标预测模式与模式信息候选列表1对应,第二目标预测模式与模式信息候选列表0对应。
示例性的,针对编码端来说,依次遍历模式信息候选列表中的每个候选模式信息,基于该候选模式信息得到当前块的加权预测值。比如说,模式信息候选列表0包括2个候选模式信息,即候选模式信息00和候选模式信息01,模式信息候选列表1包括1个候选模式信息,即候选模式信息10,则:为第一目标预测模式遍历出模式信息候选列表0中的候选模式信息00,为第二目标预测模式遍历出模式信息候选列表1中的候选模式信息10,即不同目标预测模式所属的模式信息候选列表不同,确定这种情况下的当前块的加权预测值。为第一目标预测模式遍历出模式信息候选列表0中的候选模式信息01,为第二目标预测模式遍历出模式信息候选列表1中的候选模式信息10,确定这种情况下的当前块的加权预测值。为第二目标预测模式遍历出模式信息候选列表0中的候选模式信息00,为第一目标预测模式遍历出模式信息候选列表1中的候选模式信息10,确定这种情况下的当前块的加权预测值。为第二目标预测模式遍历出模式信息候选列表0中的候选模式信息01,为第一目标预测模式遍历出模式信息候选列表1中的候选模式信息10,确定这种情况下的当前块的加权预测值。基于每种组合下当前块的加权预测值,编码端可以根据当前块的加权预测值确定出率失真代价值,并将最小率失真代价值对应的模式信息候选列表作为目标预测模式对应的目标模式信息候选列表,并将最小率失真代价值对应的候选模式信息作为目标预测模式,比如说,将模式信息候选列表0作为第一目标预测模式对应的目标模式信息候选列表,将模式信息候选列表0中的候选模式信息01作为第一目标预测模式,并将模式信息候选列表1作为第二目标预测模式对应的目标模式信息候选列表,将模式信息候选列表1中的候选模式信息10作为第二目标预测模式。
然后,编码端向解码端发送编码比特流时,还可以在编码比特流中编码第一目标预测模式对应的目标模式信息候选列表的指示信息(后续记为指示信息a1)、第一目标预测模式的指示信息(后续记为指示信息a2),并在编码比特流中编码第二目标预测模式对应的目标模式信息候选列表的指示信息(后续记为指示信息b1)、第二目标预测模式的指示信息(后续记为指示信息b2)。指示信息a1用于指示第一目标预测模式对应的目标模式信息候选列表是模式信息候选列表0,指示信息a2用于指示第一目标预测模式在模式信息候选列表0中的索引值,指示信息b1用于指示第二目标预测模式对应的目标模式信息候选列表是模式信息候选列表1,指示信息b2用于指示第二目标预测模式在模式信息候选列表1中的索引值。
针对解码端来说,在接收到当前块的编码比特流后,从该编码比特流中解析出第一目标预测模式对应的目标模式信息候选列表的指示信息a1、第一目标预测模式对应的指示信息a2,基于指示信息a1,从为当前块创建的所有模式信息候选列表中选取与第一目标预测模式对应的目标模式信息候选列表,即模式信息候选列表0。基于指示信息a2,从模式信息候选列表0中选取第一目标预测模式,即,将模式信息候选列表0中的第二个候选模式信息01作为第一目标预测模式。解码端还可以从该编码比特流中解析出第二目标预测模式对应的目标模式信息候选列表的指示信息b1、第二目标预测模式对应的指示信息b2,基于指示信息b1,从为当前块创建的所有模式信息候选列表中选取与第二目标预测模式对应的目标模式信息候选列表,即模式信息候选列表1。基于指示信息b2,从模式信息候选列表1中选取第二目标预测模式,即,将模式信息候选列表1中的第一个候选模式信息10作为第二目标预测模式。
在一种可能的实施方式中,针对当前块的每个子块,编码端/解码端基于第一目标预测模式和第二目标预测模式确定该子块的预测值。比如说,若第一目标预测模式为基于帧内预测模式的模式信息,第二目标预测模式为基于帧内预测模式的模式信息,则:针对当前块的每个子块,根据基于帧内预测模式的第一模式信息(即第一目标预测模式)确定该子块的第一预测值,并根据基于帧内预测模式的第二模式信息(即第二目标预测模式)确定该子块的第二预测值;根据该第一预测值,该子块的目标权重值,该第二预测值和该子块的关联权重值,确定该子块的加权预测值,加权预测值的确定过程可以参见实施例11-13,在此不再赘述。
比如说,关于基于帧内预测模式的模式信息,编码端可以通过协议约定默认将Planar模式确定为当前块的第一目标预测模式,并可以通过协议约定默认将DC模式确定为当前块的第二目标预测模式。解码端可以通过协议约定默认将Planar模式确定为当前块的第一目标预测模式,可以通过协议约定默认将DC模式确定为当前块的第二目标预测模式。
又例如,编码端和解码端均构建帧内预测模式候选列表,该帧内预测模式候选列表包括至少两个候选帧内模式,从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标预测模式,并从帧内预测模式候选列表中选择另一个候选帧内模式作为当前块的第二目标预测模式。帧内预测模式候选列表中的候选帧内模式可以包括但不限于:Planar模式、DC模式、垂直角度模式、水平角度模式等。针对编码端来说,编码端可以基于率失真原则,从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标预测模式,并从帧内预测模式候选列表中选择另一个候选帧内模式作为当前块的第二目标预测模式。针对解码端来说,解码端可以从当前块的编码比特流中解析出指示信息,并基于该指示信息,从帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标预测模式,并从帧内预测模式候选列表中选择另一个候选帧内模式作为当前块的第二目标预测模式。
又例如,编码端和解码端均构建第一帧内预测模式候选列表和第二帧内预测模式候选列表,第一帧内预测模式候选列表包括至少一个候选帧内模式,第二帧内预测模式候选列表包括至少一个候选帧内模式。从第一帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标预测模式,从第二帧内预测模式候选列表选择一个候选帧内模式作为当前块的第二目标预测模式。示例性的,该第一帧内预测模式候选列表中的候选帧内模式可以包括但不限于:Planar模式、DC模式、垂直角度模式、水平角度模式等。该第二帧内预测模式候选列表中的候选帧内模式可以包括但不限于:Planar模式、DC模式、垂直角度模式、水平角度模式等。针对编码端来说,编码端可以基于率失真原则,从该第一帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标预测模式,并从该第二帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第二目标预测模式。针对解码端来说,解码端可以从当前块的编码比特流中解析出指示信息,并基于该指示信息,从该第一帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第一目标预测模式,并从该第二帧内预测模式候选列表中选择一个候选帧内模式作为当前块的第二目标预测模式。
实施例22:在上述实施例11-实施例13中,涉及当前块的第一目标预测模式和当前块的第二目标预测模式,如何存储当前块的目标预测模式,可以采用如下方式实现:
在一种可能的实施方式中,针对当前块的每个预测模式存储单元,根据预测模式存储单元的坐标,当前块的权重预测角度和当前块外部的周边位置的参考权重值确定该预测模式存储单元的存储方式;基于该预测模式存储单元的存储方式,将第一目标预测模式存储为该预测模式存储单元的目标预测模式,或者,将第二目标预测模式存储为该预测模式存储单元的目标预测模式。例如,针对预测模式存储单元,可以从该预测模式存储单元中选取一个目标像素位置(如可以基于预测模式存储单元的坐标,从该预测模式存储单元中选取一个像素位置作为目标像素位置),如预测模式存储单元的左上角的像素位置,右上角的像素位置,左下角的像素位置,右下角的像素位置,中心像素位置等。根据该权重预测角度从当前块外部的周边位置中确定该目标像素位置指向的周边匹配位置,根据该周边匹配位置关联的参考权重值确定该预测模式存储单元的存储方式。比如说,若该周边匹配位置关联的参考权重值大于预设阈值(可以根据经验配置),则确定预测模式存储单元的存储方式为存储第一目标预测模式,若该周边匹配位置关联的参考权重值不大于预设阈值,则确定预测模式存储单元的存储方式为存储第二目标预测模式;或者,若该周边匹配位置关联的参考权重值大于预设阈值,则确定预测模式存储单元的存储方式为存储第二目标预测模式,若该周边匹配位置关联的参考权重值不大于预设阈值,则确定预测模式存储单元的存储方式为存储第一目标预测模式。若预测模式存储单元的存储方式为存储第一目标预测模式,则将第一目标预测模式存储为该预测模式存储单元的目标预测模式,或者,若预测模式存储单元的存储方式为存储第二目标预测模式,则将第二目标预测模式存储为该预测模式存储单元的目标预测模式。
在另一种可能的实施方式中,针对当前块的每个预测模式存储单元,可以根据该预测模式存储单元的坐标,当前块的权重预测角度和当前块的权重预测位置确定该预测模式存储单元的存储方式;基于预测模式存储单元的存储方式,将第一目标预测模式存储为预测模式存储单元的目标预测模式,或者,将第二目标预测模式存储为预测模式存储单元的目标预测模式。比如说,若预测模式存储单元的存储方式为存储第一目标预测模式,则将第一目标预测模式存储为该预测模式存储单元的目标预测模式,或者,若预测模式存储单元的存储方式为存储第二目标预测模式,则将第二目标预测模式存储为该预测模式存储单元的目标预测模式。
示例性的,可以将当前块划分为至少一个预测模式存储单元,每个预测模式存储单元的尺寸可以任意配置,例如,1*1的预测模式存储单元、2*2的预测模式存储单元、4*4的预测模式存储单元等。针对当前块的每个预测模式存储单元,可以根据权重预测角度和权重预测位置确定该预测模式存储单元的存储方式,基于该预测模式存储单元的存储方式,可以将第一目标预测模式存储为该预测模式存储单元的目标预测模式,或者,将第二目标预测模式存储为该预测模式存储单元的目标预测模式。综上所述,针对当前块的每个预测模式存储单元(如4*4大小),根据权重预测角度和权重预测位置确定将第一目标预测模式存储为该预测模式存储单元的目标预测模式,或将第二目标预测模式存储为该预测模式存储单元的目标预测模式,其依据是每个预测模式存储单元与“划分结果”的相对位置关系。
以下结合几个具体应用场景,对上述目标预测模式的存储过程进行说明。假设当前块的尺寸为M*N,M为当前块的宽,N为当前块的高,X为权重预测角度的tan值的log2对数值,如0或1,Y为权重预测位置的索引值,如-3~3等,a,b,c,d为预设的常数值。
应用场景1:通过如下公式确定有效数量ValidLenth:ValidLenth=(N+(M>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-a+Y*((ValidLength-1)>>3)。针对每个预测模式存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(y<<1)+((x<<1)>>X)大于或者等于FirstPos,则该预测模式存储单元的存储方式为存储第一目标预测模式;否则,该预测模式存储单元的存储方式为存储目标预测模式。
应用场景2:通过如下公式确定有效数量ValidLenth:ValidLenth=(N+(M>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)–((M<<1)>>X)。针对每个预测模式存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(y<<1)-((x<<1)>>X)大于或等于FirstPos,则该预测模式存储单元的存储方式为存储第一目标预测模式;否则,该预测模式存储单元的存储方式为存储第二目标预测模式。
应用场景3:通过如下公式确定有效数量ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)–c+Y*((ValidLength-1)>>3)–((N<<1)>>X)。针对每个预测模式存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)-((y<<1)>>X)大于或等于FirstPos,则该预测模式存储单元的存储方式为存储第一目标预测模式;否则,该预测模式存储单元的存储方式为存储第二目标预测模式。
应用场景4:通过如下公式确定有效数量ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。针对每个预测模式存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)+((y<<1)>>X)大于或者等于FirstPos,则该预测模式存储单元的存储方式为存储第一目标预测模式;否则,该预测模式存储单元的存储方式可以为存储第二目标预测模式。
示例性的,基于应用场景1-应用场景4确定每个预测模式存储单元的存储方式,基于预测模式存储单元的存储方式,可以将第一目标预测模式存储为该预测模式存储单元的目标预测模式,或者,将第二目标预测模式存储为该预测模式存储单元的目标预测模式。
应用场景5:当第一目标预测模式与第二目标预测模式来自不同的参考帧列表时,可以采用如下存储方式:通过如下公式确定有效数量ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。针对每个预测模式存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)+((y<<1)>>X)大于FirstPos,则该预测模式存储单元的存储方式为存储第一目标预测模式;若(x<<1)+((y<<1)>>X)小于FirstPos,则该预测模式存储单元的存储方式为存储第二目标预测模式;若(x<<1)+((y<<1)>>X)等于FirstPos,则该预测模式存储单元的存储方式可以为存储新预测模式(即第一目标预测模式和第二目标预测模式组合成的新预测模式)。
应用场景6:当第一目标预测模式与第二目标预测模式来自不同的参考帧列表时,可以采用如下存储方式:通过如下公式确定有效数量ValidLenth:ValidLenth=(M+(N>>X))<<1;通过如下公式确定参数FirstPos:FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3)。针对每个预测模式存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)+((y<<1)>>X)大于f1,则该预测模式存储单元的存储方式为存储第一目标预测模式;若(x<<1)+((y<<1)>>X)小于f2,则该预测模式存储单元的存储方式为存储第二目标预测模式;若(x<<1)+((y<<1)>>X)不大于f1,且不小于f2,则该预测模式存储单元的存储方式可以为存储新预测模式(即第一目标预测模式和第二目标预测模式组合成的新预测模式)。
示例性的,f1可以大于FirstPos,f2可以小于FirstPos,对此f1和f2的取值不做限制。如f1可以为FirstPos+2,f2可以为FirstPos-2,当然,f1和f2可以任意设置。
示例性的,基于应用场景5和应用场景6,可以确定每个预测模式存储单元的存储方式,基于预测模式存储单元的存储方式,可以将第一目标预测模式存储为该预测模式存储单元的目标预测模式,或者,将第二目标预测模式存储为该预测模式存储单元的目标预测模式,或者,将新预测模式存储为该预测模式存储单元的目标预测模式。
示例性的,上述各实施例可以单独实现,也可以组合实现,比如说,实施例11和实施例12组合实现,实施例11和实施例13组合实现,实施例12和实施例13组合实现,实施例11和实施例14-实施例22中的至少一个实施例组合实现,实施例12和实施例14-实施例22中的至少一个实施例组合实现,实施例13和实施例14-实施例22中的至少一个实施例组合实现,实施例14-实施例22中的任意至少两个可以组合实现,实施例11、实施例12和实施例14-实施例22中的至少一个实施例组合实现,实施例11、实施例13和实施例14-实施例22中的至少一个实施例组合实现,实施例12、实施例13和实施例14-实施例22中的至少一个实施例组合实现等。当然,上述只是组合方式的几个示例,对实施例之间的组合方式不做限制。
示例性的,上述各实施例中,编码端的内容也可以应用到解码端,即解码端可以采用相同方式进行处理,解码端的内容也可以应用到编码端,即编码端可以采用相同方式进行处理。
实施例23:基于与上述方法同样的申请构思,本申请实施例中还提出一种解码装置,所述解码装置应用于解码端,所述解码装置包括:存储器,其经配置以存储视频数据;解码器,其经配置以实现上述实施例1-实施例22中的编解码方法,即解码端的处理流程。
比如说,在一种可能的实施方式中,解码器,其经配置以实现:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
基于与上述方法同样的申请构思,本申请实施例中还提出一种编码装置,所述编码装置应用于编码端,所述编码装置包括:存储器,其经配置以存储视频数据;编码器,其经配置以实现上述实施例1-实施例22中的编解码方法,即编码端的处理流程。
比如说,在一种可能的实施方式中,编码器,其经配置以实现:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
基于与上述方法同样的申请构思,本申请实施例提供的解码端设备(也可以称为视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图8A所示。包括:处理器811和机器可读存储介质812,其中:所述机器可读存储介质812存储有能够被所述处理器811执行的机器可执行指令;所述处理器811用于执行机器可执行指令,以实现本申请上述实施例1-22公开的方法。例如,所述处理器811用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
基于与上述方法同样的申请构思,本申请实施例提供的编码端设备(也可以称为视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图8B所示。包括:处理器821和机器可读存储介质822,其中:所述机器可读存储介质822存储有能够被所述处理器821执行的机器可执行指令;所述处理器821用于执行机器可执行指令,以实现本申请上述实施例1-22公开的方法。例如,所述处理器821用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动组合预测时,获取当前块的分组索引预测角度和分组索引配置参数;
根据所述分组索引配置参数为所述当前块外部的周边位置配置参考分组索引值;
针对所述当前块的每个子块,根据所述分组索引预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;
根据所述周边匹配位置关联的参考分组索引值确定所述子块的目标分组索引值;
基于所述目标分组索引值对应的模式信息确定所述子块的预测值;
根据所述当前块的所有子块的预测值确定所述当前块的组合预测值。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法,如上述上述各实施例中的编解码方法。
基于与上述方法同样的申请构思,本申请实施例还提供一种计算机应用程序,所述计算机应用程序令被处理器执行时,能够实现本申请上述示例公开的编解码方法。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种编解码方法,其特征在于,所述方法包括:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数,所述权重配置参数包括权重变换率和权重变换的起始位置;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个子块,根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,根据所述子块的目标权重值确定所述子块的关联权重值;以及,根据所述当前块的第一目标预测模式确定所述子块的第一预测值,根据所述当前块的第二目标预测模式确定所述子块的第二预测值,根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述子块的加权预测值;
根据所述当前块的所有子块的加权预测值确定所述当前块的加权预测值;
其中,所述根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,包括:根据所述权重预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值,确定所述子块的目标权重值;其中,若所述子块为1*1,则所述子块的预设位置为像素位置本身;若所述子块不为1*1,则所述子块的预设位置为左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置。
2.根据权利要求1所述的方法,其特征在于,所述权重变换的起始位置由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸。
3.根据权利要求1所述的方法,其特征在于,
所述当前块的权重预测角度为水平角度;或者,
所述当前块的权重预测角度为垂直角度;或者,
所述当前块的权重预测角度的斜率的绝对值为2的n次方,n为整数。
4.根据权利要求1所述的方法,其特征在于,所述当前块外部的周边位置的数量由如下参数的至少一个确定:所述当前块的尺寸,所述当前块的权重预测角度;
其中,所述当前块外部的周边位置包括:所述当前块外部上侧一行的周边位置,或者,所述当前块外部左侧一列的周边位置;
其中,所述当前块外部的周边位置的参考权重值单调递增;
其中,所述当前块外部的周边位置包括目标区域,所述目标区域的第一邻近区域,所述目标区域的第二邻近区域;所述第一邻近区域的参考权重值均为第一参考权重值,所述第二邻近区域的参考权重值均为第二参考权重值,且所述第一参考权重值与所述第二参考权重值不同;所述目标区域包括一个参考权重值或至少两个参考权重值,若所述目标区域包括至少两个参考权重值,则所述目标区域的至少两个参考权重值单调递增。
5.根据权利要求1所述的方法,其特征在于,
针对所述当前块的每个子块,所述子块为矩形子块,且所述子块的尺寸为M*N,M为所述子块的宽度,且M大于或者等于1,N为所述子块的高度,且N大于或者等于1。
6.根据权利要求1所述的方法,其特征在于,所述当前块外部的周边位置包括:整像素位置,或者,亚像素位置,或者,整像素位置和亚像素位置;
所述根据所述周边匹配位置关联的参考权重值,确定所述子块的目标权重值,包括:
若所述周边匹配位置是亚像素位置,且所述亚像素位置已设置参考权重值,则根据所述亚像素位置的参考权重值确定所述子块的目标权重值;或者,
若所述周边匹配位置是整像素位置,且所述整像素位置已设置参考权重值,则根据所述整像素位置的参考权重值确定所述子块的目标权重值。
7.一种解码装置,其特征在于,所述解码装置包括:
存储器,其经配置以存储视频数据;
解码器,其经配置以实现:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数,所述权重配置参数包括权重变换率和权重变换的起始位置;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个子块,根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,根据所述子块的目标权重值确定所述子块的关联权重值;以及,根据所述当前块的第一目标预测模式确定所述子块的第一预测值,根据所述当前块的第二目标预测模式确定所述子块的第二预测值,根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述子块的加权预测值;
根据所述当前块的所有子块的加权预测值确定所述当前块的加权预测值;
其中,所述根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,包括:根据所述权重预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值,确定所述子块的目标权重值;其中,若所述子块为1*1,则所述子块的预设位置为像素位置本身;若所述子块不为1*1,则所述子块的预设位置为左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置。
8.一种编码装置,其特征在于,所述编码装置包括:
存储器,其经配置以存储视频数据;
编码器,其经配置以实现:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数,所述权重配置参数包括权重变换率和权重变换的起始位置;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个子块,根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,根据所述子块的目标权重值确定所述子块的关联权重值;以及,根据所述当前块的第一目标预测模式确定所述子块的第一预测值,根据所述当前块的第二目标预测模式确定所述子块的第二预测值,根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述子块的加权预测值;
根据所述当前块的所有子块的加权预测值确定所述当前块的加权预测值;
其中,所述根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,包括:根据所述权重预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值,确定所述子块的目标权重值;其中,若所述子块为1*1,则所述子块的预设位置为像素位置本身;若所述子块不为1*1,则所述子块的预设位置为左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置。
9.一种解码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数,所述权重配置参数包括权重变换率和权重变换的起始位置;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个子块,根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,根据所述子块的目标权重值确定所述子块的关联权重值;以及,根据所述当前块的第一目标预测模式确定所述子块的第一预测值,根据所述当前块的第二目标预测模式确定所述子块的第二预测值,根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述子块的加权预测值;
根据所述当前块的所有子块的加权预测值确定所述当前块的加权预测值;
其中,所述根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,包括:根据所述权重预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值,确定所述子块的目标权重值;其中,若所述子块为1*1,则所述子块的预设位置为像素位置本身;若所述子块不为1*1,则所述子块的预设位置为左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置。
10.一种编码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数,所述权重配置参数包括权重变换率和权重变换的起始位置;
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
针对所述当前块的每个子块,根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,根据所述子块的目标权重值确定所述子块的关联权重值;以及,根据所述当前块的第一目标预测模式确定所述子块的第一预测值,根据所述当前块的第二目标预测模式确定所述子块的第二预测值,根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述子块的加权预测值;
根据所述当前块的所有子块的加权预测值确定所述当前块的加权预测值;
其中,所述根据所述子块的预设位置和所述权重预测角度,从当前块外部的周边位置中导出所述子块的目标权重值,包括:根据所述权重预测角度从所述当前块外部的周边位置中确定所述子块的预设位置指向的周边匹配位置;根据所述周边匹配位置关联的参考权重值,确定所述子块的目标权重值;其中,若所述子块为1*1,则所述子块的预设位置为像素位置本身;若所述子块不为1*1,则所述子块的预设位置为左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置。
CN202011615201.4A 2020-12-30 2020-12-30 一种编解码方法、装置及其设备 Active CN114650423B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111155067.9A CN113794885B (zh) 2020-12-30 2020-12-30 一种编解码方法、装置及其设备
CN202011615201.4A CN114650423B (zh) 2020-12-30 2020-12-30 一种编解码方法、装置及其设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011615201.4A CN114650423B (zh) 2020-12-30 2020-12-30 一种编解码方法、装置及其设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111155067.9A Division CN113794885B (zh) 2020-12-30 2020-12-30 一种编解码方法、装置及其设备

Publications (2)

Publication Number Publication Date
CN114650423A CN114650423A (zh) 2022-06-21
CN114650423B true CN114650423B (zh) 2022-12-23

Family

ID=78877579

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111155067.9A Active CN113794885B (zh) 2020-12-30 2020-12-30 一种编解码方法、装置及其设备
CN202011615201.4A Active CN114650423B (zh) 2020-12-30 2020-12-30 一种编解码方法、装置及其设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111155067.9A Active CN113794885B (zh) 2020-12-30 2020-12-30 一种编解码方法、装置及其设备

Country Status (1)

Country Link
CN (2) CN113794885B (zh)

Citations (4)

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

Patent Citations (4)

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

Also Published As

Publication number Publication date
CN113794885B (zh) 2022-12-23
CN113794885A (zh) 2021-12-14
CN114650423A (zh) 2022-06-21

Similar Documents

Publication Publication Date Title
KR102071577B1 (ko) 트리 구조의 부호화 단위에 기초한 스케일러블 비디오 부호화 방법 및 그 장치, 트리 구조의 부호화 단위에 기초한 스케일러블 비디오 복호화 방법 및 그 장치
MX2012004679A (es) Metodo y aparato de codificacion de video y metodo y aparato de decodificacion de video, basados en estructura jerarquica de unidad de codificacion.
CN113709462B (zh) 一种编解码方法、装置及其设备
CN112543323B (zh) 一种编解码方法、装置及其设备
CN114830651A (zh) 帧内预测方法、编码器、解码器以及计算机存储介质
CN113709460B (zh) 一种编解码方法、装置及其设备
CN113940077A (zh) 用于视频编码/解码的虚拟边界信令方法和设备
CN113709488B (zh) 一种编解码方法、装置及其设备
CN113709500B (zh) 一种编解码方法、装置及其设备
CN113841399A (zh) 图像编码/解码方法和设备
CN113841404A (zh) 视频编码/解码方法和设备以及存储比特流的记录介质
CN113810686B (zh) 一种编解码方法、装置及其设备
CN114650423B (zh) 一种编解码方法、装置及其设备
CN113709499B (zh) 一种编解码方法、装置及其设备
KR101926017B1 (ko) 계층적 부호화 단위의 크기에 따른 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
CN112291558A (zh) 一种编解码方法、装置及其设备
CN114598889B (zh) 一种编解码方法、装置及其设备
KR20150061618A (ko) 계층적 부호화 단위의 크기에 따른 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
KR20150002553A (ko) 계층적 부호화 단위의 크기에 따른 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
KR20150060615A (ko) 계층적 부호화 단위의 크기에 따른 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치

Legal Events

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