一种编解码方法、装置及其设备
文献发布时间:2024-01-17 01:16:56
技术领域
本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。
背景技术
为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码可以包括预测、变换、量化、熵编码、滤波等过程。针对预测过程,预测过程可以包括帧内预测和帧间预测,帧间预测是指利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。帧内预测是指利用视频空间域的相关性,使用当前帧图像的已编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
无损压缩是指对原始图像中的冗余信息进行压缩,重建原始图像而不引起任何失真的技术。如果重建后图像和原始图像之间存在误差,而误差被限制在一定的范围内,则可以称为近无损压缩。在压缩编码过程中,需要预测原始图像中像素之间的残差值,残差值用于指示像素之间的差异。采用半定长编码(Semi Fixed-Length Code)对残差值进行编码,进一步降低编码长度。但是,半定长编码技术仍然在编码长度较长,编码效率较低等问题。
发明内容
有鉴于此,本申请提供一种编解码方法、装置及其设备,提高编码性能和解码性能。
本申请提供一种编解码方法,所述方法包括:
在当前块的参考像素不可得时,对所述当前块对应的初始预测模式列表中的目标预测模式进行去除处理,得到目标预测模式列表;
基于所述目标预测模式列表对所述当前块进行编解码。
本申请提供一种编解码方法,所述方法包括:
在当前块的第一边界的参考像素不可得,所述当前块的第二边界的参考像素可得时,基于所述第二边界的参考像素填充所述第一边界的参考像素;
基于填充后的第一边界的参考像素和第二边界的参考像素对所述当前块进行编解码。
本申请提供一种编解码方法,若当前块启用帧内块复制预测模式,该方法包括:
若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则基于所述上边界的重建像素确定所述当前块的第一部分子块对应的第一搜索区域,基于所述第一搜索区域的参考像素确定所述第一部分子块的重建像素;
在得到所述第一部分子块的重建像素之后,基于所述上边界的重建像素和/或所述第一部分子块的重建像素确定所述当前块的第二部分子块对应的第二搜索区域,基于所述第二搜索区域的参考像素确定所述第二部分子块的重建像素;
其中,所述当前块被划分为所述第一部分子块和所述第二部分子块。
本申请提供一种解码方法,应用于解码端,所述方法包括:
从当前块对应的码流中解码所述当前块内每个子块对应的定长码;
针对所述当前块内每个子块,基于所述子块对应的定长码,从所述当前块对应的码流中解码所述子块内的每个位置对应的残差值;
根据所述子块对应的定长码的值确定是否需要解码所述子块对应的符号位;若是,则从所述当前块对应的码流中解码所述子块对应的符号位;
若所述子块内的目标位置对应的残差值为残差边界值,则根据所述符号位确定所述残差边界值的符号,所述目标位置是所述子块内的任一位置。
本申请提供一种编解码装置,所述装置包括:
存储器,其经配置以存储视频数据;
解码器,其经配置以实现:
在当前块的参考像素不可得时,对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,得到目标预测模式列表;基于所述目标预测模式列表对所述当前块进行编解码;
或者,在当前块的第一边界的参考像素不可得,所述当前块的第二边界的参考像素可得时,基于所述第二边界的参考像素填充所述第一边界的参考像素;基于填充后的第一边界的参考像素和第二边界的参考像素对所述当前块进行编解码;
或者,若当前块启用帧内块复制预测模式,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则基于所述上边界的重建像素确定所述当前块的第一部分子块对应的第一搜索区域,基于所述第一搜索区域的参考像素确定所述第一部分子块的重建像素;在得到所述第一部分子块的重建像素之后,基于所述上边界的重建像素和/或所述第一部分子块的重建像素确定所述当前块的第二部分子块对应的第二搜索区域,基于所述第二搜索区域的参考像素确定所述第二部分子块的重建像素;其中,所述当前块被划分为所述第一部分子块和所述第二部分子块;
或者,从当前块对应的码流中解码所述当前块内每个子块对应的定长码;针对所述当前块内每个子块,基于所述子块对应的定长码,从所述当前块对应的码流中解码所述子块内的每个位置对应的残差值;根据所述子块对应的定长码的值确定是否需要解码所述子块对应的符号位;若是,则从所述当前块对应的码流中解码所述子块对应的符号位;若所述子块内的目标位置对应的残差值为残差边界值,则根据所述符号位确定所述残差边界值的符号,所述目标位置是所述子块内的任一位置。
本申请提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现上述的编解码方法。
本申请提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现上述的编解码方法。
由以上技术方案可见,本申请实施例中,对于处于边界的当前块(即当前块的参考像素不可得),考虑到模式编码代价有冗余,提出了去除编码冗余的方案,即对初始预测模式列表中的目标预测模式进行去除处理,从而对边界无法选中的模式进行去除,从模式编码的码表中改变其码字对应的模式,从而去除编码冗余。对于处于边界的当前块(即左边界的参考像素不可得或者上边界的参考像素不可得),利用已编码的重建块,尽可能导出更多不一样的参考像素,可以基于重建块导出不同预测模式无法获得的重建值,增加更多参考像素填充方案,使得单一默认值填充下无法被选中的模式,在使用其它参考像素填充后,该模式可能会被选中。对于有符号定长码边界符号位进行优化,有利于提高压缩效率,同时降低硬件成本,使得符号位的解析不依赖于残差值本身。能够去除编码冗余,提高编码效率,对于边界处的参考像素进行有效填充,提高边界位置预测模式的预测能力,从而提高重建图像在边界处的质量,由于编码误差有传递性,质量提升也有传递性,提高整体编码性能和解码性能。
附图说明
图1是视频编码框架的示意图;
图2A-图2C是视频编码框架的示意图;
图3是本申请一种实施方式中的编解码方法的流程图;
图4A-图4F是本申请一种实施方式中的预测模式的示意图;
图5A是本申请一种实施方式中的普通帧内预测模式的示意图;
图5B是本申请一种实施方式中的逐点预测模式的示意图;
图5C是本申请一种实施方式中的帧内块复制预测模式的示意图;
图6是本申请一种实施方式中的编解码方法的流程图;
图7A-图7D是本申请一种实施方式中的填充过程示意图;
图8A是本申请一种实施方式中的编解码方法的流程图;
图8B-图8C是本申请一种实施方式中的搜索区域的示意图;
图9A是本申请一种实施方式中的解码方法的流程图;
图9B是本申请一种实施方式中的编码方法的流程示意图;
图9C是本申请一种实施方式中的解码端设备的硬件结构图;
图9D是本申请一种实施方式中的编码端设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非用于限制本申请。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息,取决于语境。此外,所使用的词语“如果”可以被解释成为“在……时”,或“当……时”,或“响应于确定”。
本申请实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
近无损压缩(Near-Lossless Compression):近无损压缩是介于无损压缩和有损压缩之间的压缩技术,近无损压缩的目的是在一定的压缩倍数下获得较高的图像压缩质量。
量化和反量化(Quantization&Dequantization):量化是将信号的连续取值(或大量离散取值)映射为有限多个离散幅值的过程,实现信号取值的多对一映射。在视频图像的编码过程中,残差信号经过变换后,变换系数往往具有较大的动态范围,因此,对变换系数进行量化可以有效减少信号取值空间,获得更好的压缩效果。由于多对一的映射机制,量化过程不可避免的会引入失真,这是视频图像编码中产生失真的根本原因。反量化是量化的反过程,可以将量化后的系数映射为输入信号空间中的重建信号,重建信号是输入信号的一个近似。
率失真原则(Rate-Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,其中,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和,为了实现代价考虑,也可以使用SAD指标,SAD是指重建图像块与源图像的差值绝对值之和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用率失真原则去对编码模式做比较决策,通常可以保证编码性能最佳。
视频编码框架:参见图1所示,为编码端的视频编码框架的示意图,可以使用该视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图可以与图1类似,在此不再重复赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。
示例性的,参见图1所示,视频编码框架可以包括预测、变换、量化、熵编码器、反量化、反变换、重建、滤波等模块。在编码端,通过这些模块之间的配合,可以实现编码端的处理流程。此外,视频解码框架可以包括预测、变换、量化、熵解码器、反量化、反变换、重建、滤波等模块,在解码端,通过这些模块之间的配合,可以实现解码端的处理流程。
针对编码端的各个模块,提出了非常多的编码工具,而每个工具往往又有多种模式。对于不同视频序列,能获得最优编码性能的编码工具往往不同。因此,在编码过程中,通常采用RDO(Rate-Distortion Opitimize)比较不同工具或模式的编码性能,以选择最佳模式。在确定最优工具或模式后,再通过在比特流中编码标记信息的方法传递工具或模式的决策信息。这种方法虽然带来了较高的编码复杂度,但可以针对不同内容,自适应选择最优的模式组合,获得最优的编码性能。解码端可通过直接解析标志信息获得相关模式信息,复杂度影响较小。
示例性的,针对预测、变换、量化、熵编码和滤波等模块来说,预测模块包括帧内预测和帧间预测,帧内预测是利用当前块周围的重建像素进行预测,去除空间冗余,帧间预测是利用时域参考帧上的重建像素进行预测,去除时间冗余。变换模块是将空域的残差信息线性映射到变换域(如频域)上,目标是使能量更集中,去除信号的频域相关性,理论上的变换矩阵是可逆的,不会带来信号损失。量化模块是一个“多对一”的映射过程,不可逆,会带来信号损失;好处是能够大幅度缩减信号的取值范围,使得编码器能够用少量的符号给出原始信号的很好近似,从而提高压缩率。熵编码模块是基于信息熵原理的无损编码方式,将一系列用来表示视频序列的元素符号(如变换系数和模式信息等)转变为一个二进制码流,去除这些视频元素符号的统计冗余。滤波模块会对重建图像进行增强,目标是使重建图像更加接近原始图像,同时削减块效应和振铃效应的影响,提升重建图像的质量。
下面对编码端和解码端的结构进行简单介绍。参见图2A所示,示出用于实现本申请实施例的编码端的实例的示意性框图。在图2A中,编码端包括预测处理单元、残差计算单元、变换处理单元、量化单元、编码单元、反量化单元(也可以称为逆量化单元)、反变换处理单元(也可以称为逆变换处理单元)、重构单元(或者称为重建单元)以及滤波器单元。在一个例子中,编码端还可以包括缓冲器、经解码图像缓冲器,其中,缓冲器用于缓存重构单元输出的重构图像块,经解码图像缓冲器用于缓存滤波器单元输出的滤波后的图像块。
编码端(也可以称为编码器)的输入为图像(可以称为待编码图像)的图像块,图像块也可以称为当前块或待编码块,编码端中还可以包括分割单元(图中未示出),该分割单元用于将待编码图像分割成多个图像块。编码端用于逐块编码从而完成对待编码图像的编码,例如,对每个图像块执行编码过程。预测处理单元用于接收或获取图像块(当前待编码图像的当前待编码图像块,也可以称为当前块,该图像块可以理解为图像块的真实值)和已重构图像数据,基于已重构图像数据中的相关数据对当前块进行预测,得到当前块的预测块。在一个例子中,预测处理单元可以包含帧间预测单元、帧内预测单元和模式选择单元,模式选择单元用于选择帧内预测模式或者帧间预测模式,若选择帧内预测模式,则由帧内预测单元执行预测过程,若选择帧间预测模式,则可以由帧间预测单元执行预测过程。
残差计算单元用于计算图像块的真实值和该图像块的预测块之间的残差,得到残差块,例如,残差计算单元可以通过逐像素将图像块的像素值减去预测块的像素值。
变换处理单元用于对残差块进行例如离散余弦变换(discrete cosinetransform,DCT)或离散正弦变换(discrete sine transform,DST)的变换,以在变换域中获取变换系数,变换系数也可以称为变换残差系数,该变换残差系数可以在变换域中表示残差块。
量化单元用于通过应用标量量化或向量量化来量化变换系数,以获取经量化变换系数,经量化变换系数也可以称为经量化残差系数。量化过程可以减少与部分或全部变换系数有关的位深度。例如,可在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m。可通过调整量化参数(quantization parameter,QP)修改量化程度。例如,对于标量量化,可以应用不同的标度来实现较细或较粗的量化。较小量化步长对应较细量化,而较大量化步长对应较粗量化。可以通过量化参数(quantization parameter,QP)指示合适的量化步长。
编码单元用于对上述经量化残差系数进行编码,以经编码比特流的形式输出的经编码图像数据(即当前待编码图像块的编码结果),然后将经编码比特流传输到解码器,或将其存储起来,后续传输至解码器或用于检索。编码单元还可用于对当前图像块的其它语法元素进行编码,例如将预测模式编码至码流等。编码算法包括但不限于可变长度编码(variable length coding,VLC)算法、上下文自适应VLC(context adaptive VLC,CAVLC)算法、算术编码算法、上下文自适应二进制算术编码(context adaptive binaryarithmetic coding,CABAC)算法、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binary arithmetic coding,SBAC)算法、概率区间分割熵(probability interval partitioning entropy,PIPE)算法。
反量化单元用于对上述经量化系数进行反量化,以获取经反量化系数,该反量化可以是上述量化单元的反向应用,例如,基于或使用与量化单元相同的量化步长,应用量化单元应用的量化方案的逆量化方案。经反量化系数也可以称为经反量化残差系数。
反变换处理单元用于对上述反量化系数进行反变换,应该理解的是,该反变换可以是上述变换处理单元的反向应用,例如,反变换可以包括逆离散余弦变换(discretecosine transform,DCT)或逆离散正弦变换(discrete sine transform,DST),以在像素域(或者称为样本域)中获取逆变换块。逆变换块也可以称为逆变换经反量化块或逆变换残差块。
重构单元用于将逆变换块(即逆变换残差块)添加至预测块,以在样本域中获取经重构块,重构单元可以为求和器,例如,将残差块的样本值(即像素值)与预测块的样本值相加。该重构单元输出的重构块可以后续用于预测其他图像块,例如,在帧内预测模式下使用。
滤波器单元(或简称“滤波器”)用于对经重构块进行滤波以获取经滤波块,从而顺利进行像素转变或提高图像质量。滤波器单元可以为环路滤波器单元,旨在表示一个或多个环路滤波器,例如,滤波器单元可以为去块滤波器、样本自适应偏移(sample-adaptiveoffset,SAO)滤波器或其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loopfilter,ALF),或锐化或平滑滤波器,或协同滤波器。在一个例子中,该滤波单元输出的经滤波块可以后续用于预测其他图像块,例如,在帧间预测模式下使用,对此不做限制。
参见图2B所示,示出用于实现本申请实施例的解码端(也可以称为解码器)的实例的示意性框图。解码器用于接收例如由编码器编码的经编码图像数据(即经编码比特流,例如,包括图像块的经编码比特流及相关联的语法元素),以获取经解码图像。解码器可以包括解码单元、反量化单元、反变换处理单元、预测处理单元、重构单元、滤波器单元等。在一些实例中,解码器可执行大体上与图2A的编码器描述的编码遍次互逆的解码遍次。在一个例子中,解码器还可以包括缓冲器、经解码图像缓冲器,其中,缓冲器用于缓存重构单元输出的重构图像块,经解码图像缓冲器用于缓存滤波器单元输出的滤波后的图像块。
解码单元用于对经编码图像数据执行解码,以获取经量化系数和/或经解码的编码参数(例如,解码参数可以包括帧间预测参数、帧内预测参数、滤波器参数和/或其它语法元素中的任意一个或全部)。解码单元还用于将上述经解码的编码参数转发至预测处理单元,以供预测处理单元根据编码参数执行预测过程。反量化单元的功能可与编码器的反量化单元的功能相同,用于反量化(即,逆量化)在由解码单元解码的经量化系数。
反变换处理单元的功能可与编码器的反变换处理单元的功能可以相同,重构单元(例如求和器)的功能可与编码器的重构单元的功能可以相同,用于对上述经量化系数进行逆变换(例如,逆DCT、逆整数变换或概念上类似的逆变换过程),从而得到逆变换块(也可以称为逆变换残差块),该逆变换块即为当前图像块在像素域中的残差块。
预测处理单元,用于接收或获取经编码图像数据(例如当前图像块的经编码比特流)和已重构图像数据,预测处理单元还可以从例如解码单元接收或获取预测相关参数和/或关于所选择的预测模式的信息(即经解码的编码参数),并且基于已重构图像数据中的相关数据和经解码的编码参数对当前图像块进行预测,得到当前图像块的预测块。
在一个例子中,预测处理单元可以包含帧间预测单元、帧内预测单元和模式选择单元,模式选择单元用于选择帧内预测模式或者帧间预测模式,若选择帧内预测模式,则由帧内预测单元执行预测过程,若选择帧间预测模式,则由帧间预测单元执行预测过程。
重构单元用于将逆变换块(即逆变换残差块)添加到预测块,以在样本域中获取经重构块,例如,可以将逆变换残差块的样本值与预测块的样本值相加。
滤波器单元用于对经重构块进行滤波以获取经滤波块,该经滤波块即为经解码图像块。
应当理解的是,在本申请实施例的编码器和解码器中,针对某个环节的处理结果也可以经过进一步处理后,输出到下一个环节,例如,在插值滤波、运动矢量推导或滤波等环节之后,对相应环节的处理结果进一步进行Clip或移位shift等操作。
在编码器以及解码器的基础上,本申请实施例提供一种可能的编/解码实现方式,如图2C所示,图2C为本申请实施例提供的一种编码和解码的流程示意图,该编码和解码实现方式包括过程①至过程⑤,过程①至过程⑤可以由上述的解码器和编码器执行。过程①:将一帧图像分成一个或多个互相不重叠的并行编码单元。该一个或多个并行编码单元之间无依赖关系,可以完全并行/独立编码和解码,如图2C所示出的并行编码单元1和并行编码单元2。
过程②:对于每个并行编码单元,可再将其分成一个或多个互相不重叠的独立编码单元,各个独立编码单元间可相互不依赖,但可以共用一些并行编码单元头信息。例如,独立编码单元的宽为w_lcu,高为h_lcu。若并行编码单元划分成一个独立编码单元,则独立编码单元的尺寸与并行编码单元完全相同;否则,则独立编码单元的宽应大于高(除非是边缘区域)。
通常的,独立编码单元可为固定的w_lcu×h_lcu,w_lcu和h_lcu均为2的N次方(N≥0),如独立编码单元的尺寸为:128×4,64×4,32×4,16×4,8×4,32×2,16×2或8×2等。
作为一种可能的示例,独立编码单元可以为固定的128×4。若并行编码单元的尺寸为256×8,则可以将并行编码单元等分为4个独立编码单元;若并行编码单元的尺寸为288×10,则并行编码单元以划分为:第一/二行为2个128×4+1个32×4的独立编码单元;第三行为2个128×2+1个32×2的独立编码单元。值得注意的是,独立编码单元既可以是包括亮度Y、色度Cb、色度Cr三个分量,或红(red,R)、绿(green,G)、蓝(blue,B)三个分量,或亮度Y、色度Co、色度Cg三个分量也可以仅包含其中的某一个分量。若独立编码单元包含三个分量,则这三个分量的尺寸可以完全一样,也可不一样,具体与图像的输入格式相关。
过程③:对于每个独立编码单元,可再将其分成一个或多个互相不重叠的编码单元,独立编码单元内的各个编码单元可相互依赖,如多个编码单元可以进行相互参考预编解码。
若编码单元与独立编码单元尺寸相同(即独立编码单元仅分成一个编码单元),则其尺寸可为过程②所述的所有尺寸。若独立编码单元分成多个互相不重叠的编码单元,则其可行划分例子有:水平等分(编码单元的高与独立编码单元相同,但宽不同,可为其1/2,1/4,1/8,1/16等),垂直等分(编码单元的宽与独立编码单元相同,高不同,可为其1/2,1/4,1/8,1/16等),水平和垂直等分(四叉树划分)等,优选为水平等分。
编码单元的宽为w_cu,高为h_cu,宽应大于高(除非是边缘区域)。通常的,编码单元为固定的w_cu x h_cu,w_cu和h_cu均为2个N次方(N大于等于0),如16x4,8x4,16x2,8x2,8x1,4x1等。如编码单元为固定的16x4。若独立编码单元的尺寸为64x4,则将独立编码单元等分为4个编码单元;若独立编码单元的尺寸为72x4,则编码单元划分为:4个16x4+1个8x4。值得注意的是,编码单元既可以是包括亮度Y、色度Cb、色度Cr三个分量(或红R、绿G、蓝B三分量,或,亮度Y、色度Co、色度Cg),也可以仅包含其中的某一个分量。若包含三个分量,几个分量的尺寸可以完全一样,也可以不一样,具体与图像输入格式相关。
值得注意的是,过程③可以是编解码方法中一个可选的步骤,编码器/解码器可以对过程②获得的独立编码单元进行残差系数(或残差值)进行编码和解码。
过程④:对于编码单元,可以将其再将其分成一个或多个互相不重叠的预测组(Prediction Group,PG),PG也简称为Group,各PG按照选定预测模式进行编解码,得到PG的预测值,组成整个编码单元的预测值,基于预测值和编码单元的原始值,获得编码单元的残差值。
过程⑤:基于编码单元的残差值,对编码单元进行分组,获得一个或多个相不重叠的残差小块(residual block,RB),各个RB的残差系数按照选定模式进行编解码,形成残差系数流。具体的,可分为对残差系数进行变换和不进行变换两类。
其中,过程⑤中残差系数编解码方法的选定模式可以包括,但不限于下述任一种:半定长编码方式、指数哥伦布(Golomb)编码方法、Golomb-Rice编码方法、截断一元码编码方法、游程编码方法、直接编码原始残差值等。例如,编码器可直接对RB内的系数进行编码。又例如,编码器也可以对残差块进行变换,如DCT、DST、Hadamard变换等,再对变换后的系数进行编码。作为一种可能的示例,当RB较小时,编码器可以直接对RB内的各个系数进行统一量化,再进行二值化编码。若RB较大,可以进一步划分为多个系数组(coefficient group,CG),再对各个CG进行统一量化,再进行二值化编码。在本申请的一些实施例中,系数组(CG)和量化组(QG)可以相同,当然,系数组和量化组也就可以不同。
下面以半定长编码方式对残差系数编码的部分进行示例性说明。首先,将一个RB块内残差绝对值的最大值定义为修整最大值(modified maximum,mm)。其次,确定该RB块内残差系数的编码比特数(同一RB块内残差系数的编码比特数一致)。例如,若当前RB块的关键限值(critica llimit,CL)为2,当前残差系数为1,则编码残差系数1需要2个比特,表示为01。若当前RB块的CL为7,则表示编码8-bit的残差系数和1-bit的符号位。CL的确定是去找满足当前子块所有残差都在[-2^(M-1),2^(M-1)]范围之内的最小M值。若同时存在-2^(M-1)和2^(M-1)两个边界值,则M增加1,即需要M+1个比特编码当前RB块的所有残差;若仅存在-2^(M-1)和2^(M-1)两个边界值中的一个,则编码一个Trailing位来确定该边界值是-2^(M-1)还是2^(M-1);若所有残差均不存在-2^(M-1)和2^(M-1)中的任何一个,则无需编码该Trailing位。对于某些特殊情况,编码器可以直接编码图像的原始值,而不是残差值。
在一种可能的实施方式中,对于边界无法获取预测值的情况,一般会使用一个默认值作为填充,这个填充的值一般为1<<(bitdepth-1)或(1<<(bitdepth-1)-1),当图像位宽为8时,bitdepth等于8,即默认值填充为128或127。单一的默认值填充会导致多种预测模式下的预测值都是相同的,因此,在编码过程中,有一些模式是无法被选中的,从而造成编码冗余。
针对上述发现,本申请实施例中提出一种编解码方法,对于边界上的编码单元(即当前块),对于边界处无法被选中的模式,修改解析码表,通过改变其码字对应的模式,使得边界处的可用模式变少,删除码表中较长的码字,从而达到去除编码冗余的目的。
以下结合几个具体实施例,对本申请实施例中的编解码方法进行详细说明。
实施例1:本申请实施例中提出一种编解码方法,该方法可以应用于解码端(也称为视频解码器),该方法也可以应用于编码端(也称为视频编码器),针对解码端来说,编解码方法可以为解码方法,针对编码端来说,编解码方法可以为编码方法。
参见图3所示,为该编解码方法的流程示意图,该方法可以包括:
步骤301、在当前块的参考像素不可得时,对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,得到目标预测模式列表。比如说,初始预测模式列表包括多个预测模式,目标预测模式为参考像素不可得时,初始预测模式列表中当前块不会采用的预测模式。
步骤302、基于目标预测模式列表对当前块进行编解码。
比如说,对于解码端来说,可以从目标预测模式列表中选择一个预测模式作为目标预测模式,基于该目标预测模式对当前块进行解码,对此解码过程不作限制。
比如说,对于编码端来说,可以从目标预测模式列表中选择一个预测模式作为目标预测模式,基于该目标预测模式对当前块进行编码,对此编码过程不作限制。
示例性的,当前块的参考像素不可得,可以包括:当前块的上边界的参考像素不可得,当前块的左边界的参考像素可得。当前块的左边界的参考像素不可得,当前块的上边界的参考像素可得。当前块的上边界的参考像素不可得,当前块的左边界的参考像素不可得。
对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,可以包括但不限于:确定初始预测模式列表中的候选预测模式,候选预测模式为参考像素不可得时,初始预测模式列表中当前块不会采用的预测模式。从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式,并对初始预测模式列表中的第一目标预测模式进行去除处理。
示例性的,从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式,可以包括但不限于:基于每个候选预测模式对应的码字长度,从所有候选预测模式中选取K个候选预测模式作为保留预测模式,K为正整数;将保留预测模式之外的候选预测模式确定为第一目标预测模式。比如说,K为1,保留预测模式为码字长度最小的候选预测模式,也就是说,将码字长度最小的候选预测模式作为保留预测模式,将剩余候选预测模式作为第一目标预测模式。又例如,K为2,保留预测模式为码字长度最小的候选预测模式和码字长度第二小的候选预测模式。又例如,K为1,保留预测模式为所有候选预测模式中的任一个预测模式。又例如,K为2,保留预测模式为所有候选预测模式中的任两个预测模式。当然,上述方式只是几个示例,对此不作限制,K的取值可以任意配置,保留预测模式也可以任意选取。
示例性的,从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式,可以包括但不限于:基于每个候选预测模式对应的码字长度,从所有候选预测模式中选取L个候选预测模式作为第一目标预测模式,L为正整数,L小于候选预测模式的总数量。比如说,按照码字长度对所有候选预测模式进行排序,从码字长度最大的候选预测模式开始,选取L个候选预测模式作为第一目标预测模式,L为1、2、3、4等,L小于候选预测模式的总数量。又例如,可以从所有候选预测模式中任意选取L个候选预测模式作为第一目标预测模式。当然,上述方式只是几个示例,L的取值可以任意配置,第一目标预测模式也可以任意选取。
示例性的,候选预测模式可以包括但不限于以下预测模式中的多种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,候选预测模式可以同时包括DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。
第一目标预测模式可以包括但不限于以下预测模式的至少一种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,从上述预测模式中去除一种预测模式(可以是任意一种预测模式),第一目标预测模式同时包括剩余预测模式。
在一种可能的实施方式中,若当前块的上边界参考像素不可得,但当前块的左边界参考像素可得,则候选预测模式可以包括但不限于以下预测模式中的多种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式。比如说,候选预测模式可以同时包括DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式。第一目标预测模式可以包括但不限于以下预测模式的至少一种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式。比如说,从上述预测模式中去除一种预测模式(可以是任意一种预测模式),第一目标预测模式同时包括剩余预测模式。例如,从上述预测模式中去除DC预测模式时,第一目标预测模式同时包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式。从上述预测模式中去除VER预测模式时,第一目标预测模式同时包括:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式。比如说,从上述预测模式中去除两种预测模式(可以是任意两种预测模式),第一目标预测模式同时包括剩余预测模式。例如,从上述预测模式中去除DC预测模式和VER预测模式时,第一目标预测模式同时包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式。当然,上述只是候选预测模式和第一目标预测模式的示例。
在一种可能的实施方式中,若当前块的左边界参考像素不可得,但当前块的上边界参考像素可得,则候选预测模式可以包括但不限于以下预测模式中的多种:HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,候选预测模式可以同时包括HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。第一目标预测模式可以包括但不限于以下预测模式的至少一种:HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,从上述预测模式中去除一种预测模式(可以是任意一种预测模式),第一目标预测模式同时包括剩余预测模式。例如,从上述预测模式中去除HOR预测模式时,第一目标预测模式同时包括:IBM0预测模式、IBM1预测模式和IBM2预测模式。
当然,上述只是候选预测模式和第一目标预测模式的示例,对此不作限制。
在一种可能的实施方式中,若当前块的上边界参考像素不可得,但当前块的左边界参考像素不可得,则候选预测模式可以包括但不限于以下预测模式中的多种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,候选预测模式可以同时包括DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。
第一目标预测模式可以包括但不限于以下预测模式的至少一种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,从上述预测模式中去除一种预测模式(可以是任意一种预测模式),第一目标预测模式同时包括剩余预测模式。例如,从上述预测模式中去除DC预测模式时,第一目标预测模式同时包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。又例如,从上述预测模式中去除HOR预测模式时,第一目标预测模式同时包括:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,从上述预测模式中去除两种预测模式(可以是任意两种预测模式),第一目标预测模式同时包括剩余预测模式。例如,从上述预测模式中去除DC预测模式和HOR预测模式时,第一目标预测模式同时包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。
当然,上述只是候选预测模式和第一目标预测模式的示例,对此不作限制。
在一种可能的实施方式中,对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,可以包括但不限于:确定初始预测模式列表中的第二目标预测模式,第二目标预测模式为参考像素不可得时,初始预测模式列表中当前块不会采用的预测模式;对初始预测模式列表中的第二目标预测模式进行去除处理。与上述方式不同的是,在该实施方式中,不需要从初始预测模式列表中选取候选预测模式,从候选预测模式中选取第一目标预测模式,而是直接从初始预测模式列表中选取第二目标预测模式,为了与上述第一目标预测模式区分,将该实施方式中的目标预测模式记为第二目标预测模式。
示例性的,第二目标预测模式可以包括但不限于以下预测模式中的至少一种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,从上述预测模式中去除一种预测模式(任意一种预测模式),第二目标预测模式同时包括剩余预测模式。
比如说,若当前块的上边界参考像素不可得,但当前块的左边界参考像素可得,则第二目标预测模式可以包括但不限于以下预测模式的至少一种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式。比如说,第二目标预测模式同时包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式。或者,第二目标预测模式同时包括:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式。或者,第二目标预测模式同时包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式。
比如说,若当前块的左边界参考像素不可得,但当前块的上边界参考像素可得,则第二目标预测模式可以包括但不限于以下预测模式的至少一种:HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,第二目标预测模式同时包括:IBM0预测模式、IBM1预测模式和IBM2预测模式。
比如说,第二目标预测模式可以包括但不限于以下预测模式的至少一种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。例如,第二目标预测模式同时包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。或者,第二目标预测模式同时包括:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。或者,第二目标预测模式同时包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。
示例性的,上述执行顺序只是为了方便描述给出的示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
由以上技术方案可见,本申请实施例中,对于处于边界的当前块(即当前块的参考像素不可得),考虑到模式编码代价有冗余,提出了去除编码冗余的方案,即对初始预测模式列表中的目标预测模式进行去除处理,从而对边界无法选中的模式进行去除,从模式编码的码表中改变其码字对应的模式,从而去除编码冗余,即能够去除编码冗余,提高编码效率,提高边界位置预测模式的预测能力,提高重建图像在边界处的质量,提高编码性能和解码性能。
实施例2:针对实施例1来说,当slice边界外像素不可得时,有一些预测模式的预测值无法获得,因此,无法选中这些预测模式,对于这样的编码块而言,预测模式的个数会减少,模式编码可以进行相应的调整来节约比特开销。综上所述,对于边界上的编码单元(即当前块),对于边界处无法被选中的预测模式,修改解析码表,通过改变其码字对应的模式,使得边界处的可用预测模式变少,删除码表中较长的码字,从而达到去除编码冗余的目的。
参见图4A所示,为模式编码的示意图,当前块对应的初始预测模式列表可以包括但不限于:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式、IBM2预测模式、ORG预测模式、PM0预测模式、PM1预测模式、PM2预测模式、PM3预测模式。
从图4A可以看出,DC预测模式对应的码字为11,DIAG0预测模式对应的码字为10011,DIAG1预测模式对应的码字为10010,DIAG2预测模式对应的码字为100001,DIAG3预测模式对应的码字为100000,VER预测模式对应的码字为1011,HOR预测模式对应的码字为1010,IBM0预测模式对应的码字为011,IBM1预测模式对应的码字为0101,IBM2预测模式对应的码字为0100,ORG预测模式对应的码字为10001,PM0预测模式对应的码字为0010,PM1预测模式对应的码字为0011,PM2预测模式对应的码字为0000,PM3预测模式对应的码字为0001。当然,上述只是各预测模式对应码字的示例,本实施例对此不作限制。
在一种可能的实施方式中,若当前块的上边界参考像素不可得,但当前块的左边界参考像素可得,那么,可以确定初始预测模式列表中的候选预测模式,候选预测模式为当前块的上边界参考像素不可得,但当前块的左边界参考像素可得时,初始预测模式列表中当前块不会采用的预测模式,参见图4B所示,候选预测模式可以包括DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式。
比如说,若当前块的参考像素位于slice上边界时,即当前块的上边界参考像素不可得,那么,帧内预测模式(即INTRA预测模式)中的DC预测模式、VER预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式的参考像素不可得,这些参考像素的预测值可以是默认值,如1< 在该情况下,可以从DC预测模式、VER预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式中选取一个预测模式作为默认值模式,即,在参考像素的预测值为默认值时,使用该预测模式进行预测。比如说,可以将DC预测模式作为默认值模式,也就是说,在参考像素的预测值为默认值时,使用该DC预测模式进行预测。 综上所述,可以保留DC预测模式,并去除VER预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式,这样,在上边界参考像素不可得时,帧内预测模式可以保留DC预测模式和HOR预测模式,上溢判断条件默认选DC预测模式。 对于DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式等候选预测模式,可以将DC预测模式作为保留预测模式,并将DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式等作为目标预测模式,从初始预测模式列表中去除目标预测模式,就可以得到目标预测模式列表,该目标预测模式列表可以参见图4C所示。显然,当前块对应的目标预测模式列表可以包括但不限于:DC预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式、IBM2预测模式、ORG预测模式、PM0预测模式、PM1预测模式、PM2预测模式、PM3预测模式。 从图4C可以看出,DC预测模式对应的码字为11,HOR预测模式对应的码字为101,ORG预测模式对应的码字为100,IBM0预测模式对应的码字为011,IBM1预测模式对应的码字为0101,IBM2预测模式对应的码字为0100,PM0预测模式对应的码字为0010,PM1预测模式对应的码字为0011,PM2预测模式对应的码字为0000,PM3预测模式对应的码字为0001。当然,上述只是各预测模式对应码字的示例,本实施例对此不作限制。 结合图4A和图4C可以看出,HOR预测模式对应的码字从1010变为101,ORG预测模式对应的码字从10001变为100,即减少了码字长度,能够减少比特开销。 在一种可能的实施方式中,若当前块的左边界参考像素不可得,但当前块的上边界参考像素可得,那么,可以确定初始预测模式列表中的候选预测模式,候选预测模式为当前块的左边界参考像素不可得,但当前块的上边界参考像素可得时,初始预测模式列表中当前块不会采用的预测模式,参见图4D所示,候选预测模式可以包括HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。比如说,若当前块的参考像素位于slice左边界时,即当前块的左边界参考像素不可得,那么,帧内预测模式(即INTRA预测模式)中的HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式的参考像素不可得,这些参考像素的预测值可以是默认值,如1< 在该情况下,可以从HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式中选取一个预测模式作为默认值模式,即,在参考像素的预测值为默认值时,可以使用该预测模式进行预测。比如说,可以将HOR预测模式作为默认值模式,也就是说,在参考像素的预测值为默认值时,可以使用该HOR预测模式进行预测。综上所述,可以保留HOR预测模式,并去除IBM0预测模式、IBM1预测模式和IBM2预测模式,这样,在左边界参考像素不可得时,帧内预测模式可以保留HOR预测模式作为默认值模式。 对于HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式等候选预测模式,可以将HOR预测模式作为保留预测模式,并将IBM0预测模式、IBM1预测模式和IBM2预测模式等作为目标预测模式,从初始预测模式列表(可以参见图4A所示)中去除目标预测模式,就可以得到目标预测模式列表,该目标预测模式列表可以参见图4E所示。显然,当前块对应的目标预测模式列表可以包括但不限于:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、ORG预测模式、PM0预测模式、PM1预测模式、PM2预测模式、PM3预测模式。 从图4E可以看出,DC预测模式对应的码字为11,DIAG0预测模式对应的码字为10011,DIAG1预测模式对应的码字为10010,DIAG2预测模式对应的码字为100001,DIAG3预测模式对应的码字为100000,VER预测模式对应的码字为1011,HOR预测模式对应的码字为1010,ORG预测模式对应的码字为10001,PM0预测模式对应的码字为010,PM1预测模式对应的码字为011,PM2预测模式对应的码字为000,PM3预测模式对应的码字为001。当然,上述只是各预测模式对应码字的示例,本实施例中对此不作限制。结合图4A和图4E可以看出,PM0预测模式对应的码字从0010变为010,PM1预测模式对应的码字从0011变为011,PM2预测模式对应的码字从0000变为000,即减少了码字长度,能够减少比特开销。 在一种可能的实施方式中,若当前块的上边界参考像素不可得,且当前块的左边界参考像素不可得,那么,可以确定初始预测模式列表中的候选预测模式,候选预测模式可以为当前块的上边界参考像素不可得,且当前块的左边界参考像素不可得时,初始预测模式列表中当前块不会采用的预测模式,结合图4B和图4D所示,候选预测模式可以包括:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。 比如说,若当前块的参考像素位于slice上边界和左边界时,即当前块的上边界参考像素不可得,当前块的左边界参考像素不可得,那么,帧内预测模式(即INTRA预测模式)中的DC预测模式、VER预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式的参考像素不可得,且HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式的参考像素不可得,这些参考像素的预测值可以是默认值,如1< 在该情况下,可以从DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式中选取一个预测模式作为默认值模式,即,在参考像素的预测值为默认值时,可以使用该预测模式进行预测。比如说,可以将DC预测模式作为默认值模式,也就是说,在参考像素的预测值为默认值时,可以使用该DC预测模式进行预测。 综上所述,可以保留DC预测模式,并去除DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式,这样,在上边界参考像素不可得、且左边界参考像素不可得时,帧内预测模式可以保留DC预测模式作为默认值模式,上溢判断条件默认选DC预测模式。 对于DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式等候选预测模式,可以将DC预测模式作为保留预测模式,并将DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式等作为目标预测模式,从初始预测模式列表中去除目标预测模式,就可以得到目标预测模式列表,该目标预测模式列表可以参见图4F所示。 显然,当前块对应的目标预测模式列表可以包括但不限于:DC预测模式、ORG预测模式、PM0预测模式、PM1预测模式、PM2预测模式、PM3预测模式。 从图4F可以看出,DC预测模式对应的码字为11,ORG预测模式对应的码字为10,PM0预测模式对应的码字为010,PM1预测模式对应的码字为011,PM2预测模式对应的码字为000,PM3预测模式对应的码字为001。当然,上述只是各预测模式对应码字的示例,本实施例对此不作限制。结合图4A和图4F可以看出,ORG预测模式对应的码字长度、PM0预测模式对应的码字长度、PM1预测模式对应的码字长度、PM2预测模式对应的码字长度、PM3预测模式对应的码字长度等,均减少了码字长度,从而能够减少比特开销。 实施例3:在实施例1和实施例2中,可以涉及DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式、IBM2预测模式、ORG预测模式、PM0预测模式、PM1预测模式、PM2预测模式、PM3预测模式。其中,DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式均为帧内角度预测模式;VER预测模式为帧内垂直预测模式;HOR预测模式为帧内水平预测模式;IBM0预测模式、IBM1预测模式、IBM2预测模式均为帧内块复制预测模式。以下结合具体应用场景,对这些预测模式进行说明。 对于16*2的当前块(其它尺寸的当前块类似),参见图5A所示,为普通帧内预测模式的示意图,普通帧内预测模式有7种预测模式,包括DC预测模式和6种角度预测模式。针对DC预测模式,当前块内每个位置的参考像素为D,D为当前块上边界的16个参考像素的均值。VER预测模式为角度预测模式0,图5A中示出了角度预测模式0对应的角度,当前块内每个位置的参考像素可以为A、B、C、…、D、E、F等,参见图5A所示。HOR预测模式为角度预测模式1,图5A中示出了角度预测模式1对应的角度,当前块内第一行每个位置的参考像素可以为第一行左侧参考像素A,当前块内第二行每个位置的参考像素可以为第二行左侧参考像素,参见图5A所示。DIAG0预测模式为角度预测模式2,图5A中示出了角度预测模式2对应的角度,基于这个角度可以获知当前块内每个位置的参考像素,参见图5A所示。DIAG1预测模式为角度预测模式3,图5A中示出了角度预测模式3对应的角度,基于这个角度可以获知当前块内每个位置的参考像素,参见图5A所示。DIAG2预测模式为角度预测模式4,图5A中示出了角度预测模式4对应的角度,基于这个角度可以获知当前块内每个位置的参考像素,参见图5A所示。DIAG3预测模式为角度预测模式5,图5A中示出了角度预测模式5对应的角度,基于这个角度可以获知当前块内每个位置的参考像素,参见图5A所示。在图5A中,XY表示参考像素X和参考像素Y的像素平均值。 对于16*2的当前块(其它尺寸的当前块类似),参见图5B所示,为逐点预测模式的示意图,逐点预测模式有4种预测模式,包括PM0预测模式、PM1预测模式、PM2预测模式、PM3预测模式。在图5B中,PM0预测模式为逐点预测模式0,PM1预测模式为逐点预测模式1,PM2预测模式为逐点预测模式2,PM3预测模式为逐点预测模式3。 在图5B中,≡表示采用左右两侧像素的重建值求平均得到当前像素的预测值;|||表示采用上下两侧像素的重建值求平均得到当前像素的预测值;>表示直接采用左侧像素的重建值作为当前像素的预测值;∨表示直接采用上侧像素的重建值作为当前像素的预测值。 对于16*2的当前块(其它尺寸的当前块类似),参见图5C所示,为IBC(Intra BlockCopy,帧内块复制)预测模式的示意图,帧内块复制预测模式可以有3种预测模式,包括IBM0预测模式、IBM1预测模式、IBM2预测模式。在图5C中,IBM0预测模式为帧内块复制预测模式0,对于帧内块复制预测模式0,可以将16*2的当前块划分为2个8*2的预测块,基于左侧32*2搜索区域的参考像素确定每个8*2的预测块的预测值。IBM1预测模式为帧内块复制预测模式1,对于帧内块复制预测模式1,可以将16*2的当前块划分为4个4*2的预测块,基于左侧32*2搜索区域的参考像素确定每个4*2的预测块的预测值。IBM2预测模式为帧内块复制预测模式2,对于帧内块复制预测模式2,可以将16*2的当前块划分为8个2*2的预测块,基于左侧32*2搜索区域的参考像素确定每个2*2的预测块的预测值。 对于16*2的当前块(其它尺寸的当前块类似),ORG预测模式表示使用原像素值,即不参考当前块上边界的参考像素,也不参考当前块左边界的参考像素,对此不再赘述。 在一种可能的实施方式中,对于边界无法获取预测值的情况,一般会使用一个默认值作为填充,这个填充的值一般为1<<(bitdepth-1)或(1<<(bitdepth-1)-1),当图像位宽为8时,bitdepth等于8,即默认值填充为128或127。单一的默认值填充会导致多种预测模式下的预测值都是相同的,因此,在编码过程中,有一些模式是无法被选中的,从而造成编码冗余。 针对上述发现,本申请实施例中提出一种编解码方法,对于边界上的编码单元(即当前块),可以利用已编码的重建块,在某一些预测上尽可能导出更多不一样的参考像素,增加更多参考像素填充方案,使得单一默认值填充下无法被选中的预测模式,在使用其它参考像素填充后,该预测模式可能会被选中。比如说,对于不同的预测模式,当上边界不可得但左边界可得时,上边界的参考像素由左边块的重建值导出,当上边界可得但左边界不可得时,左边界的参考像素由上边块的重建值导出,对于不同预测模式,导出方法可以不同。 以下结合几个具体实施例,对本申请实施例中的编解码方法进行详细说明。 实施例4:本申请实施例中提出一种编解码方法,该方法可以应用于解码端(也称为视频解码器),该方法也可以应用于编码端(也称为视频编码器),针对解码端来说,编解码方法可以为解码方法,针对编码端来说,编解码方法可以为编码方法。 参见图6所示,为该编解码方法的流程示意图,该方法可以包括: 步骤601、在当前块的第一边界的参考像素不可得,且当前块的第二边界的参考像素可得时,可以基于第二边界的参考像素填充第一边界的参考像素。 步骤602、基于填充后的第一边界的参考像素和第二边界的参考像素对当前块进行编解码。 比如说,对于解码端来说,可以基于填充后的第一边界的参考像素和第二边界的参考像素对当前块进行解码,对此解码过程不作限制。比如说,对于编码端来说,可以基于填充后的第一边界的参考像素和第二边界的参考像素对当前块进行编码,对此编码过程不作限制。 示例性的,第一边界可以为左边界,第二边界可以为上边界,因此,在当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得时,可以基于上边界的参考像素填充左边界的参考像素,并基于左边界的参考像素和上边界的参考像素对当前块进行编解码。 示例性的,第一边界可以为上边界,第二边界可以为左边界,因此,在当前块的上边界的参考像素不可得,且当前块的左边界的参考像素可得时,可以基于左边界的参考像素填充上边界的参考像素,并基于左边界的参考像素和上边界的参考像素对当前块进行编解码。 在一种可能的实施方式中,在当前块的第一边界的参考像素不可得,当前块的第二边界的参考像素可得时,基于第二边界的参考像素填充第一边界的参考像素,可以包括但不限于:若当前块对应的预测模式为逐点预测模式,在当前块的上边界的参考像素不可得,且当前块的左边界的参考像素可得时,可以将上边界的参考像素均填充为左边界的参考像素中的第一个值;此外,在当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得时,可以将左边界的参考像素均填充为上边界的参考像素中的第一个值。 在一种可能的实施方式中,在当前块的第一边界的参考像素不可得,当前块的第二边界的参考像素可得时,基于第二边界的参考像素填充第一边界的参考像素,可以包括但不限于:若当前块对应的预测模式为逐点预测模式,在当前块的上边界的参考像素不可得,且当前块的左边界的参考像素可得时,可以将上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值;此外,在当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得时,可以将左边界的参考像素均填充为上边界的参考像素中的第一个值。 在一种可能的实施方式中,在当前块的第一边界的参考像素不可得,当前块的第二边界的参考像素可得时,基于第二边界的参考像素填充第一边界的参考像素,可以包括但不限于:若当前块对应的预测模式为除DC预测模式之外的帧内预测模式,在当前块的上边界的参考像素不可得,当前块的左边界的参考像素可得时,将上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值;在当前块的左边界的参考像素不可得,当前块的上边界的参考像素可得时,将左边界的参考像素填充为上边界第一行对应位置的参考像素值。 在一种可能的实施方式中,在当前块的第一边界的参考像素不可得,当前块的第二边界的参考像素可得时,基于第二边界的参考像素填充第一边界的参考像素,可以包括但不限于:若当前块对应的预测模式为帧内预测模式,在上边界的参考像素不可得,左边界的参考像素可得时,将上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值;在左边界的参考像素不可得,上边界的参考像素可得时,则将左边界的参考像素均填充为默认值。 在一种可能的实施方式中,在当前块的第一边界的参考像素不可得,当前块的第二边界的参考像素不可得时,还可以对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,得到目标预测模式列表,并基于目标预测模式列表对当前块进行编解码。 示例性的,初始预测模式列表可以包括多个预测模式,该目标预测模式可以为参考像素不可得时,该初始预测模式列表中当前块不会采用的预测模式。 示例性的,对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,可以包括但不限于:确定初始预测模式列表中的候选预测模式,候选预测模式为参考像素不可得时,初始预测模式列表中当前块不会采用的预测模式;从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式;对初始预测模式列表中的第一目标预测模式进行去除处理。示例性的,从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式,可以包括:基于每个候选预测模式对应的码字长度,从所有候选预测模式中选取K个候选预测模式作为保留预测模式,K为正整数;将保留预测模式之外的候选预测模式作为第一目标预测模式。 在第一边界的参考像素不可得,第二边界的参考像素不可得时,候选预测模式包括:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式;第一目标预测模式包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。 示例性的,对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,可以包括但不限于:确定初始预测模式列表中的第二目标预测模式,第二目标预测模式为参考像素不可得时,初始预测模式列表中当前块不会采用的预测模式;对初始预测模式列表中的第二目标预测模式进行去除处理。 示例性的,当前块的第一边界的参考像素不可得、且当前块的第二边界的参考像素不可得时,就是当前块的上边界的参考像素不可得、且当前块的左边界的参考像素不可得,在该情况下,处理过程可以参见实施例1-实施例3,对此处理过程不作限制。 由以上技术方案可见,本申请实施例中,对于处于边界的当前块(即左边界的参考像素不可得或者上边界的参考像素不可得),利用已编码的重建块,尽可能导出更多不一样的参考像素,可以基于重建块导出不同预测模式无法获得的重建值,增加更多参考像素填充方案,使得单一默认值填充下无法被选中的模式,在使用其它参考像素填充后,该模式可能会被选中。能够去除编码冗余,提高编码效率,对于边界处的参考像素进行有效填充,提高边界位置预测模式的预测能力,从而提高重建图像在边界处的质量,提高编码性能和解码性能。 实施例5:针对实施例4来说,当slice边界外像素不可得时,对于边界上的编码单元(即当前块),可以利用已编码的重建块,增加更多参考像素填充方案,对于不同预测模式,当上边界不可得但左边界可得时,上边界的参考像素由左边块的重建值导出,当上边界可得但左边界不可得时,左边界的参考像素由上边块的重建值导出,如提供如下参考像素填充方案: 情况1、对于当前块对应的预测模式为逐点预测模式,若当前块的上边界的参考像素不可得,且当前块的左边界的参考像素可得,则可以将上边界的参考像素均填充为左边界的参考像素中的第一个值,参见图7A所示,当前块的上边界的参考像素均填充为左边界的参考像素中的第一个值“A”。若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则可以将左边界的参考像素均填充为上边界的参考像素中的第一个值,参见图7A所示,当前块的左边界的参考像素均填充为上边界的参考像素中的第一个值“A”。 在图7A中,小写字母“a”表示当前块的上边界的参考像素或者当前块的左边界的参考像素,大写字母“A”表示当前块的左边界的重建像素值或者当前块的上边界的重建像素值。显然,在当前块的上边界的参考像素a不可得时,就可以使用当前块的左边界的重建像素值A代替当前块的上边界的参考像素a。或者,在当前块的左边界的参考像素a不可得时,就可以使用当前块的上边界的重建像素值A代替当前块的左边界的参考像素a。 情况2、对于当前块对应的预测模式为逐点预测模式,若当前块的上边界的参考像素不可得,且当前块的左边界的参考像素可得,则可以将上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值,参见图7B所示,当前块的上边界对应16个参考像素,从左边界编码块第一行选取16个预测位置的重建值,上边界第1个参考像素a填充为左边界编码块第1个预测位置的重建值A,…,上边界第3个参考像素b填充为左边界编码块第3个预测位置的重建值B,…,上边界第5个参考像素c填充为左边界编码块第5个预测位置的重建值C,…,上边界第15个参考像素h填充为左边界编码块第15个预测位置的重建值H,…。 若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则可以将左边界的参考像素均填充为上边界的参考像素中的第一个值。参见图7A所示,当前块的左边界的参考像素均填充为上边界的参考像素中的第一个值“A”。或,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则可以将左边界的参考像素填充为上边界第一行对应位置的参考像素值。参见图7B所示,当前块的左边界的第一个参考像素填充为上边界的第一个值“A”,当前块的左边界的第二个参考像素填充为上边界的第二个值“B”。 在图7B中,小写字母“a、b”表示当前块的上边界的参考像素或者当前块的左边界的参考像素,大写字母“A、B”表示当前块的左边界的重建像素值或者当前块的上边界的重建像素值。显然,在当前块的上边界的参考像素a、b不可得时,就可以使用当前块的左边界的重建像素值A、B代替当前块的上边界的参考像素a、b。或者,在当前块的左边界的参考像素a、b不可得时,就可以使用当前块的上边界的重建像素值A、B代替当前块的左边界的参考像素a、b。当然,小写字母还存在c、d、e、f等,大写字母还存在C、D、E、F等。 情况3、对于当前块对应的预测模式为除DC预测模式之外的帧内预测模式,也就是说,对于帧内预测模式(DC预测模式除外),若当前块的上边界的参考像素不可得,且当前块的左边界的参考像素可得,则可以将上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值,参见图7C所示,当前块的上边界对应16个参考像素,可以从左边界编码块第一行选取16个预测位置的重建值,上边界第1个参考像素填充为左边界编码块第1个预测位置的重建值,上边界第2个参考像素填充为左边界编码块第2个预测位置的重建值,…,以此类推,上边界第16个参考像素填充为左边界编码块第16个预测位置的重建值。 若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则可以将左边界的参考像素填充为上边界第一行对应位置的参考像素值,参见图7D所示,当前块的左边界一共存在两个参考像素,那么,当前块的左边界的第一个参考像素填充为上边界第一行第1个位置的参考像素值,当前块的左边界的第二个参考像素填充为上边界第一行第2个位置的参考像素值。或者,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则可以将左边界的参考像素均填充为上边界的参考像素中的第一个值。 示例性的,在情况3中,可以保留(1<<(bitdepth-1))作为默认值填充的方案,因此,在当前块的上边界的参考像素不可得时,可以保留DC预测模式不变。 情况4、对于当前块对应的预测模式为帧内预测模式(DC预测模式不除外),若当前块的上边界的参考像素不可得,且当前块的左边界的参考像素可得,则将上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值,比如说,当前块的上边界对应16个参考像素,从左边界编码块第一行选取16个预测位置的重建值,上边界第1个参考像素填充为左边界编码块第1个预测位置的重建值,上边界第2个参考像素填充为左边界编码块第2个预测位置的重建值,…,上边界第16个参考像素填充为左边界编码块第16个预测位置的重建值。 若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则可以将左边界的参考像素均填充为默认值。比如说,将左边界的参考像素均填充为1<<(bitdepth-1),当然,1<<(bitdepth-1)只是默认值的一个示例,对此默认值不作限制,可以任意配置。由于需要保留(1<<(bitdepth-1))作为默认值填充的方案,因此,可以保留水平方向预测值不变。 在一种可能的实施方式中,对于边界无法获取预测值的情况,一般会使用一个默认值作为填充,这个填充的值一般为1<<(bitdepth-1)或(1<<(bitdepth-1)-1),当图像位宽为8时,bitdepth等于8,即默认值填充为128或127。单一的默认值填充会导致多种预测模式下的预测值都是相同的,因此,在编码过程中,有一些模式是无法被选中的,从而造成编码冗余。 针对上述发现,本申请实施例提出一种编解码方法,对于边界上的编码单元(当前块),在当前块采用IBC模式时,如IBM0预测模式、IBM1预测模式、IBM2预测模式,可以利用已编码的重建块,尽可能导出更多不一样的参考像素,增加更多参考像素填充方案。 以下结合几个具体实施例,对本申请实施例中的编解码方法进行详细说明。 实施例6:本申请实施例中提出一种编解码方法,该方法可以应用于解码端(也称为视频解码器),该方法也可以应用于编码端(也称为视频编码器),针对解码端来说,编解码方法可以为解码方法,针对编码端来说,编解码方法可以为编码方法。参见图8A所示,为该编解码方法的流程示意图,若当前块启用帧内块复制预测模式,该方法可以包括: 步骤801、若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则基于上边界的重建像素确定当前块的第一部分子块对应的第一搜索区域,并基于该第一搜索区域的参考像素确定当前块的第一部分子块的重建像素。 步骤802、在得到第一部分子块的重建像素之后,基于当前块的上边界的重建像素和/或当前块的第一部分子块的重建像素确定当前块的第二部分子块对应的第二搜索区域,并基于该第二搜索区域的参考像素确定当前块的第二部分子块的重建像素。 示例性的,当前块被划分为第一部分子块和第二部分子块。 示例性的,对于编码端来说,在编码过程中,可以将当前块划分为第一部分子块和第二部分子块,可以基于上边界的重建像素确定当前块的第一部分子块对应的第一搜索区域,并基于该第一搜索区域的参考像素确定当前块的第一部分子块的重建像素,基于当前块的上边界的重建像素和/或当前块的第一部分子块的重建像素确定当前块的第二部分子块对应的第二搜索区域,并基于该第二搜索区域的参考像素确定当前块的第二部分子块的重建像素。 示例性的,对于解码端来说,在解码过程中,可以将当前块划分为第一部分子块和第二部分子块,可以基于上边界的重建像素确定当前块的第一部分子块对应的第一搜索区域,并基于该第一搜索区域的参考像素确定当前块的第一部分子块的重建像素,基于当前块的上边界的重建像素和/或当前块的第一部分子块的重建像素确定当前块的第二部分子块对应的第二搜索区域,并基于该第二搜索区域的参考像素确定当前块的第二部分子块的重建像素。 在一种可能的实施方式中,基于第一搜索区域的参考像素确定第一部分子块的重建像素,可以包括但不限于:将第一部分子块划分为M个第一预测块,M为正整数,基于第一搜索区域的参考像素确定每个第一预测块的重建像素。此外,基于第二搜索区域的参考像素确定第二部分子块的重建像素,可以包括但不限于:将第二部分子块划分为N个第二预测块,N为正整数,基于第二搜索区域的参考像素确定每个第二预测块的重建像素。 示例性的,第二预测块的尺寸与第一预测块的尺寸可以相同;或者,第二预测块的尺寸与第一预测块的尺寸可以不同。比如说,若当前块的尺寸为16*2,第一部分子块和第二部分子块的尺寸均为8*2;则:第一预测块的尺寸为2*1,第二预测块的尺寸为2*1或2*2;或者,第一预测块的尺寸为4*1,第二预测块的尺寸为4*1或4*2;或者,第一预测块的尺寸为8*1,第二预测块的尺寸为8*1或8*2。当然,上述只是几个示例,对此不作限制。 在一种可能的实施方式中,基于上边界的重建像素确定当前块的第一部分子块对应的第一搜索区域,可以包括但不限于:基于上边界第一行的重建像素填充当前块左侧的第一指定区域的完整区域,将第一指定区域的完整区域确定为第一部分子块对应的第一搜索区域;或者,基于上边界第一行的重建像素填充当前块左侧的第一指定区域的部分区域,将第一指定区域的部分区域确定为第一部分子块对应的第一搜索区域。 在一种可能的实施方式中,基于上边界的重建像素确定当前块的第一部分子块对应的第一搜索区域,可以包括但不限于:将上边界的重建像素确定为第一部分子块对应的第一搜索区域。其中,上边界的重建像素可以包括:上边界第一行的重建像素;或者,上边界第一行的重建像素和上边界第二行的重建像素;其中,上边界的重建像素的长度可以等于当前块的宽度;或者,上边界的重建像素的长度可以大于当前块的宽度。 在一种可能的实施方式中,基于上边界的重建像素和/或第一部分子块的重建像素确定当前块的第二部分子块对应的第二搜索区域,可以包括但不限于:可以基于上边界第一行的重建像素和第一部分子块的重建像素填充第二部分子块左侧第二指定区域的完整区域,将第二指定区域的完整区域确定为第二部分子块对应的第二搜索区域;或者,基于上边界第一行的重建像素和第一部分子块的重建像素填充第二部分子块左侧第二指定区域的部分区域,将第二指定区域的部分区域确定为第二部分子块对应的第二搜索区域。 在一种可能的实施方式中,基于上边界的重建像素和/或第一部分子块的重建像素确定当前块的第二部分子块对应的第二搜索区域,可以包括但不限于:将上边界的重建像素确定为第二部分子块对应的第二搜索区域;或者,将第一部分子块的重建像素确定为第二部分子块对应的第二搜索区域。或者,将上边界的重建像素和第一部分子块的重建像素确定为第二部分子块对应的第二搜索区域,即第二搜索区域同时包括上边界的重建像素和第一部分子块的重建像素。其中,上边界的重建像素可以包括:上边界第一行的重建像素;或者,上边界第一行的重建像素和上边界第二行的重建像素;其中,上边界的重建像素的长度可以等于当前块的宽度;或者,上边界的重建像素的长度可以大于当前块的宽度。 在一种可能的实施方式中,在当前块的上边界的参考像素不可得,当前块的左边界的参考像素不可得时,还可以对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,得到目标预测模式列表,并基于目标预测模式列表对当前块进行编解码。 示例性的,初始预测模式列表可以包括多个预测模式,该目标预测模式可以为参考像素不可得时,该初始预测模式列表中当前块不会采用的预测模式。 示例性的,对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,可以包括但不限于:确定初始预测模式列表中的候选预测模式,候选预测模式为参考像素不可得时,初始预测模式列表中当前块不会采用的预测模式;从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式;对初始预测模式列表中的第一目标预测模式进行去除处理。 从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式,可以包括:基于每个候选预测模式对应的码字长度,从所有候选预测模式中选取K个候选预测模式作为保留预测模式,K为正整数;将保留预测模式之外的候选预测模式作为第一目标预测模式。 示例性的,当前块的上边界的参考像素不可得、且当前块的左边界的参考像素不可得,在该情况下,处理过程可以参见实施例1-实施例3,对此处理过程不作限制。 由以上技术方案可见,本申请实施例中,对于IBC模式来说,对于处于边界的当前块(即左边界的参考像素不可得),利用上边界的重建块,尽可能导出更多不一样的参考像素,增加更多参考像素填充方案,能够提高编码效率,对于边界处的参考像素进行有效填充,提高边界位置预测模式的预测能力,从而提高重建图像在边界处的质量,提高编码性能和解码性能。 实施例7:对于16*2的当前块(其它尺寸的当前块类似),参见图5C所示,为帧内块复制预测模式的示意图,帧内块复制预测模式可以有3种预测模式,分别为帧内块复制预测模式0、帧内块复制预测模式1和帧内块复制预测模式2。示例性的,对于帧内块复制预测模式0,可以将16*2的当前块垂直划分为2个8*2的预测块,可以基于左侧32*2搜索区域的参考像素确定每个8*2的预测块的预测值。对于帧内块复制预测模式1,可以将16*2的当前块垂直划分为4个4*2的预测块,可以基于左侧32*2搜索区域的参考像素确定每个4*2的预测块的预测值。对于帧内块复制预测模式2,可以将16*2的当前块垂直划分为8个2*2的预测块,可以基于左侧32*2搜索区域的参考像素确定每个2*2的预测块的预测值。 在一种可能的实施方式中,若当前块左侧32*2搜索区域的参考像素不可得,则可以为32*2搜索区域默认填充1<<(bitdepth–1),基于填充后的32*2搜索区域确定每个预测块的预测值。Slice第一列的16*2的像素块可以不执行帧内块复制预测模式,帧内块复制预测模式是三通道共享模式信息和BV(Block Vector,表示搜索区域中复制块的位置)的。 在一种可能的实施方式中,可以将当前块划分为第一部分子块和第二部分子块,若当前块的尺寸为16*2,则第一部分子块的尺寸为8*2,第二部分子块的尺寸为8*2。当然,当前块为其它尺寸时,也可以将当前块垂直平均划分为第一部分子块和第二部分子块。 对于第一部分子块,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得(如当前块的上边界不属于图像边界或者片边界),则可以基于上边界的重建像素(如上边界第一行的重建像素)填充当前块的第一部分子块对应的第一搜索区域。 示例性的,可以基于上边界第一行的重建像素填充当前块左侧的第一指定区域的完整区域,将第一指定区域的完整区域确定为第一搜索区域。假设当前块的尺寸为16*2,即当前块上边界第一行为16*1的重建像素,且第一指定区域为当前块左侧32*2的区域,基于此,可以基于上边界第一行的16*1的重建像素填充左侧32*2的第一指定区域的完整区域,即第一指定区域的完整区域作为第一搜索区域。比如说,在第一指定区域的第一行复制两次上边界第一行的16*1的重建像素,在第一指定区域的第二行复制两次上边界第一行的16*1的重建像素。又例如,在第一指定区域的第一行复制两次上边界第一行的16*1的重建像素,在第一指定区域的第二行填充32个默认值。又例如,在第一指定区域的第一行填充32个默认值,在第一指定区域的第二行复制两次上边界第一行的16*1的重建像素。又例如,在第一指定区域的第一行先填充16个默认值,然后复制上边界第一行的16*1的重建像素,在第一指定区域的第二行复制两次上边界第一行的16*1的重建像素。又例如,在第一指定区域的第一行先填充16个默认值,然后复制上边界第一行的16*1的重建像素,在第一指定区域的第二行先填充16个默认值,然后复制上边界第一行的16*1的重建像素。又例如,在第一指定区域的第一行先复制上边界第一行的16*1的重建像素,然后填充16个默认值,在第一指定区域的第二行先复制上边界第一行的16*1的重建像素,然后填充16个默认值。当然,上述只是几个示例,本实施例中对此不作限制,只要能够基于上边界第一行的重建像素填充第一指定区域的完整区域,并将第一指定区域的完整区域作为第一搜索区域即可。 示例性的,可以基于上边界第一行的重建像素填充当前块左侧的第一指定区域的部分区域,将第一指定区域的部分区域确定为第一搜索区域。假设当前块的尺寸为16*2,即当前块上边界第一行为16*1的重建像素,且第一指定区域为当前块左侧32*2的区域,基于此,可以基于上边界第一行的16*1的重建像素填充左侧32*2的第一指定区域的部分区域,即搜索区域无法满足规定搜索范围时,可以直接缩小搜索区域。 比如说,第一指定区域的部分区域可以为当前块左侧16*2的区域,在第一指定区域的第一行复制上边界第一行的16*1的重建像素,在第一指定区域的第二行复制上边界第一行的16*1的重建像素。或者,在第一指定区域的第一行复制上边界第一行的16*1的重建像素,在第一指定区域的第二行填充16个默认值。或者,在第一指定区域的第一行填充16个默认值,在第一指定区域的第二行复制上边界第一行的16*1的重建像素。或者,在第一指定区域的第一行先填充8个默认值,然后在第一指定区域的第一行复制上边界第一行的前8个重建像素,在第一指定区域的第二行先填充8个默认值,然后在第一指定区域的第二行复制上边界第一行的后8个重建像素。当然,上述只是几个示例,本实施例中对此不作限制,只要能够基于上边界第一行的重建像素填充第一指定区域的16*2的区域即可。 比如说,第一指定区域的部分区域可以为当前块左侧8*2的区域,在第一指定区域的第一行复制上边界第一行的前8个重建像素,在第一指定区域的第二行复制上边界第一行的后8个重建像素,当然,上述只是示例,本实施例中对此不作限制。 比如说,第一指定区域的部分区域可以为当前块左侧24*2的区域,在第一指定区域的第一行先填充8个默认值,然后在第一指定区域的第一行复制上边界第一行的16*1的重建像素,在第一指定区域的第二行先填充8个默认值,然后在第一指定区域的第二行复制上边界第一行的16*1的重建像素。或者,在第一指定区域的第一行先复制上边界第一行的前8个重建像素,然后在第一指定区域的第一行复制上边界第一行的16*1的重建像素,在第一指定区域的第二行先复制上边界第一行的后8个重建像素,然后在第一指定区域的第二行复制上边界第一行的16*1的重建像素。当然,上述只是几个示例,本实施例中对此不作限制,只要能够基于上边界第一行的重建像素填充第一指定区域的24*2的区域即可。 示例性的,在基于上边界的重建像素填充第一部分子块对应的第一搜索区域之后,就可以基于第一搜索区域的参考像素确定第一部分子块的重建像素。比如说,可以基于第一搜索区域(如32*2的搜索区域或24*2的搜索区域等)的参考像素确定第一部分子块的重建像素。 示例性的,可以将第一部分子块划分为M个第一预测块,M可以为正整数,可以基于第一搜索区域的参考像素确定每个第一预测块的重建像素。比如说,针对每个第一预测块,可以从第一搜索区域中找到与该第一预测块匹配的参考块,参考块的尺寸与第一预测块的尺寸相同,基于该参考块确定该第一预测块的重建像素。 示例性的,针对从第一搜索区域中找到与该第一预测块匹配的参考块的过程,也可以称为BV(Block Vector,表示搜索区域中复制块的位置)搜索过程,在搜索过程中,只需要搜索水平方向的32个位置,可以使用5bit定长码编码水平BV,无需编码垂直BV。 示例性的,第一预测块的尺寸可以为2*1,或者,第一预测块的尺寸可以为4*1,或者,第一预测块的尺寸可以为8*1。当然,上述只是示例,对此不作限制。比如说,对于帧内块复制预测模式0,可以将8*2的第一部分子块划分为2个8*1的预测块,可以基于第一搜索区域的参考像素确定每个8*1的预测块的预测值。对于帧内块复制预测模式1,可以将8*2的第一部分子块划分为4个4*1的预测块,可以基于第一搜索区域的参考像素确定每个4*1的预测块的预测值。对于帧内块复制预测模式2,可以将8*2的第一部分子块划分为8个2*1的预测块,基于第一搜索区域的参考像素确定每个2*1的预测块的预测值。 对于第二部分子块,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得(如当前块的上边界不属于图像边界或者片边界),那么,在得到第一部分子块的重建像素之后,还可以基于当前块的上边界的重建像素(如上边界第一行的重建像素)和当前块的第一部分子块的重建像素填充当前块的第二部分子块对应的第二搜索区域。 示例性的,可以基于上边界第一行的重建像素和当前块的第一部分子块的重建像素填充第二部分子块左侧第二指定区域的完整区域,将第二指定区域的完整区域确定为第二部分子块对应的第二搜索区域。假设当前块的尺寸为16*2,即当前块上边界第一行为16*1的重建像素,且第二指定区域为第二部分子块左侧32*2的区域,如第二指定区域为第一部分子块的8*2的区域和当前块左侧24*2的区域,显然,由于第一部分子块的8*2的区域已经填充第一部分子块的重建像素,因此,可以基于上边界第一行的16*1的重建像素和第一部分子块的8*2的重建像素,填充当前块左侧24*2的区域的完整区域(后续记为区域A)。比如说,在区域A的第一行先复制上边界第一行的16*1的重建像素,然后复制第一部分子块的第一行的8*1的重建像素,在区域A的第二行先复制上边界第一行的16*1的重建像素,然后复制第一部分子块的第二行的8*1的重建像素。或者,在区域A的第一行先复制第一部分子块的第一行的8*1的重建像素,然后复制上边界第一行的16*1的重建像素,在区域A的第二行先复制第一部分子块的第二行的8*1的重建像素,然后复制上边界第一行的16*1的重建像素。或者,在区域A的第一行先复制上边界第一行的16*1的重建像素,然后填充8个默认值,在区域A的第二行先复制上边界第一行的16*1的重建像素,然后填充8个默认值。或者,在区域A的第一行先填充8个默认值,然后复制上边界第一行的16*1的重建像素,在区域A的第二行先填充8个默认值,然后复制上边界第一行的16*1的重建像素。当然,上述只是几个示例,本实施例中对此不作限制。在得到区域A之后,区域A和第一部分子块的8*2的区域就组成第二指定区域的完整区域,从而得到第二部分子块对应的第二搜索区域。 示例性的,可以基于上边界第一行的重建像素和当前块的第一部分子块的重建像素填充第二部分子块左侧第二指定区域的部分区域,将第二指定区域的部分区域确定为第二部分子块对应的第二搜索区域。假设当前块的尺寸为16*2,即当前块上边界第一行为16*1的重建像素,第二指定区域为第一部分子块的8*2的区域和当前块左侧24*2的区域(记为区域A),可以基于上边界第一行的16*1的重建像素和第一部分子块的8*2的重建像素,填充区域A的部分区域,即搜索区域无法满足规定搜索范围时,直接缩小搜索区域。 比如说,区域A的部分区域可以为当前块左侧16*2的区域,在该区域的第一行复制上边界第一行的16*1的重建像素,在该区域的第二行复制上边界第一行的16*1的重建像素。或者,在该区域的第一行先复制第一部分子块的第一行的8*1的重建像素,然后复制上边界第一行的前8个重建像素,在该区域的第二行先复制第一部分子块的第二行的8*1的重建像素,然后复制上边界第一行的后8个重建像素。或者,在该区域的第一行先复制上边界第一行的前8个重建像素,然后填充8个默认值,在该区域的第二行先复制上边界第一行的后8个重建像素,然后填充8个默认值。或者,在该区域的第一行先填充8个默认值,然后复制上边界第一行的前8个重建像素,在该区域的第二行先填充8个默认值,然后复制上边界第一行的后8个重建像素。当然,上述只是几个示例,本实施例中对此不作限制。 比如说,区域A的部分区域可以为当前块左侧8*2的区域,在该区域的第一行复制上边界第一行的前8个重建像素,在该区域的第二行复制上边界第一行的后8个重建像素。 综上所述,在填充区域A的部分区域之后,区域A的部分区域和第一部分子块的重建像素就组成第二指定区域的部分区域,将第二指定区域的部分区域作为第二搜索区域。 示例性的,在基于上边界的重建像素和第一部分子块的重建像素填充第二部分子块对应的第二搜索区域之后,可以基于第二搜索区域的参考像素确定第二部分子块的重建像素。比如说,基于第二搜索区域(如32*2的搜索区域、或24*2的搜索区域、或16*2的搜索区域等)的参考像素确定第二部分子块的重建像素。 示例性的,可以将第二部分子块划分为N个第二预测块,N可以为正整数,可以基于第二搜索区域的参考像素确定每个第二预测块的重建像素。比如说,针对每个第二预测块,可以从第二搜索区域中找到与该第二预测块匹配的参考块,参考块的尺寸与第二预测块的尺寸相同,基于该参考块确定该第二预测块的重建像素。 示例性的,第二预测块的尺寸与第一预测块的尺寸可以相同;或者,第二预测块的尺寸与第一预测块的尺寸可以不同。比如说,第一预测块的尺寸为2*1,第二预测块的尺寸为2*1或2*2;或者,第一预测块的尺寸为4*1,第二预测块的尺寸为4*1或4*2;或者,第一预测块的尺寸为8*1,第二预测块的尺寸为8*1或8*2。当然,上述只是示例,对此不作限制。 比如说,对于帧内块复制预测模式0,可以将8*2的第二部分子块划分为2个8*1的预测块,可以基于第二搜索区域的参考像素确定每个8*1的预测块的预测值;或者,也可以将8*2的第二部分子块划分为1个8*2的预测块,可以基于第二搜索区域的参考像素确定每个8*2的预测块的预测值。对于帧内块复制预测模式1,可以将8*2的第二部分子块划分为4个4*1的预测块,可以基于第二搜索区域的参考像素确定每个4*1的预测块的预测值;或者,也可以将8*2的第二部分子块划分为2个4*2的预测块,可以基于第二搜索区域的参考像素确定每个4*2的预测块的预测值。对于帧内块复制预测模式2,可以将8*2的第二部分子块划分为8个2*1的预测块,可以基于第二搜索区域的参考像素确定每个2*1的预测块的预测值;或者,也可以将8*2的第二部分子块划分为4个2*4的预测块,可以基于第二搜索区域的参考像素确定每个2*2的预测块的预测值。 在一种可能的实施方式中,第一预测块的尺寸可以由位置导出,也可以由搜索区域中重建像素个数导出(即不包含填充的像素);第二预测块的尺寸可以由位置导出,也可以由搜索区域中重建像素个数导出。比如说,对于帧内块复制预测模式2来说,若左边界不可得,则第一部分子块内的预测块尺寸可以为2*1,第二部分子块内的预测块尺寸可以为2*1,或者,第一部分子块内的预测块尺寸可以为2*1,第二部分子块内的预测块尺寸可以为2*2。 若当前块左边界不可得,或当前块距离左边界较近,搜索区域无法满足规定搜索范围,则直接缩小搜索区域,可以不使用默认值填充,或可以不扩大填充范围(即使用上边界第一行重建像素填充时,填充长度为当前块宽度,其余位置不填充,搜索范围变小)。 实施例8:对于16*2的当前块(其它尺寸的当前块类似),可以将当前块划分为第一部分子块和第二部分子块,第一部分子块的尺寸为8*2,第二部分子块的尺寸为8*2。对于第一部分子块,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得(如当前块的上边界不属于图像边界或者片边界),则可以基于上边界的重建像素确定当前块的第一部分子块对应的第一搜索区域。比如说,直接将上边界的重建像素确定为第一部分子块对应的第一搜索区域。在基于上边界的重建像素确定第一部分子块对应的第一搜索区域之后,就可以基于第一搜索区域的参考像素确定第一部分子块的重建像素。比如说,可以将第一部分子块划分为M个第一预测块,M可以为正整数,可以基于第一搜索区域的参考像素确定每个第一预测块的重建像素。其中,第一预测块的尺寸可以为2*1,或者,第一预测块的尺寸可以为4*1,或者,第一预测块的尺寸可以为8*1。当然,上述只是示例,对此不作限制。 对于第二部分子块,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得(如当前块的上边界不属于图像边界或者片边界),那么,在得到第一部分子块的重建像素之后,还可以基于当前块的上边界的重建像素和/或当前块的第一部分子块的重建像素确定当前块的第二部分子块对应的第二搜索区域。比如说,直接将上边界的重建像素确定为第二部分子块对应的第二搜索区域;或者,直接将第一部分子块的重建像素确定为第二部分子块对应的第二搜索区域。在基于上边界的重建像素和/或第一部分子块的重建像素填充第二部分子块对应的第二搜索区域之后,可以基于第二搜索区域的参考像素确定第二部分子块的重建像素。比如说,可以将第二部分子块划分为N个第二预测块,N可以为正整数,可以基于第二搜索区域的参考像素确定每个第二预测块的重建像素。其中,第二预测块的尺寸与第一预测块的尺寸可以相同或不同。比如说,第一预测块的尺寸为2*1,第二预测块的尺寸为2*1或2*2;或者,第一预测块的尺寸为4*1,第二预测块的尺寸为4*1或4*2;或者,第一预测块的尺寸为8*1,第二预测块的尺寸为8*1或8*2。当然,上述只是示例,对此不作限制。 在一种可能的实施方式中,上边界的重建像素可以包括但不限于:上边界第一行的重建像素,也就是说,将上边界第一行的重建像素作为第一部分子块对应的第一搜索区域,将上边界第一行的重建像素作为第二部分子块对应的第二搜索区域。或者,上边界第一行的重建像素和上边界第二行的重建像素,也就是说,将上边界第一行的重建像素和上边界第二行的重建像素作为第一部分子块对应的第一搜索区域,将上边界第一行的重建像素和上边界第二行的重建像素作为第二部分子块对应的第二搜索区域。当然,上述只是示例,对此不做限制,比如说,还可以为上边界前P行的重建像素,P可以为1、2、3、4等等。 上边界的重建像素的长度可以等于当前块的宽度;或者,上边界的重建像素的长度可以大于当前块的宽度;或者,上边界的重建像素的长度可以小于当前块的宽度。 在一种可能的实施方式中,对于左边界不可得且上边界可得的当前块,搜索区域可以是当前块(如16*2的当前块)上边界的16*1的重建像素区域,预测块尺寸可以为4*1,参见图8B所示,搜索区域是上边界的16*1的重建像素区域。对于左边界不可得且上边界不可得的当前块,可以关闭IBC模式。对于其它位置的IBC模式,实现方案不再赘述。 在一种可能的实施方式中,对于左边界不可得且上边界可得的当前块,搜索区域可以是当前块(如16*2的当前块)上边界的32*1的重建像素区域,预测块尺寸可以为4*1,参见图8C所示,搜索区域是上边界的32*1的重建像素区域。 在一种可能的实施方式中,无损压缩是指对原始图像中的冗余信息进行压缩,重建原始图像而不引起任何失真的技术。如果重建后图像和原始图像之间存在误差,而误差被限制在一定的范围内,则可以称为近无损压缩。在压缩编码过程中,需要预测原始图像中像素之间的残差值,残差值用于指示像素之间的差异。采用半定长编码对残差值进行编码,进一步降低编码长度。但是,半定长编码技术仍然在编码长度较长,编码效率较低等问题。 比如说,对于有符号的定长编码,当定长码为N时,则待编码值的范围可以是[-(1<<(N-1)),(1<<(N-1))-1]。或者,待编码值的范围是[1-(1<<(N-1)),(1<<(N-1))]。或者,待编码值的范围是[1-(1<<(N-1)),(1<<(N-1))]或[-(1<<(N-1)),(1<<(N-1))-1],当待编码值不等于边界值,即+(1<<(N-1))或-(1<<(N-1))时,编解码方案不变,若待编码值等于边界值,再使用1bit编解码这个值的符号,这个方案适用于多个值为一组的编解码方案,如4个残差作为一组,4个残差的定长码相同,若组内有边界值,则需要编解码一个符号位,否则不需要编解码该符号位。 但是,针对有符号的定长编码方案,在编码时能表达的系数值范围是2的幂次方,由于有系数值等于0,因此,正数域与负数域无法对称,但一般来说,残差的分布满足0均值的特点,因此,使用有符号定长码编码残差时,难免偏向于正数或负数。对于多个组,通过编码一个符号位来确定当前组的符号,这个方案可以解决有符号定长码编码残差时值域偏向问题,但是,这个符号位的解析需要依赖于残差的解析,而残差的解析又依赖于定长码长的解析,这样的依赖会导致硬件实现成本过高,即编码性能和解码性能较差。 针对上述发现,本申请实施例中,对于有符号的定长编码方案,可以不依赖于残差的解析,设计一种在解析残差之前就可以知道当前组是否需要解析符号位的方式。比如说,设计一种依赖于定长码值的符号位解析方案,在使用有符号的定长码编残差时,当定长码长度小于或者等于目标数值K时,当前编码组需要解析符号位,否则不需要解析符号位。 以下结合几个具体实施例,对本申请实施例中的编解码方法进行详细说明。 实施例9:本申请实施例中提出一种解码方法,该方法可以应用于解码端(也称为视频解码器),参见图9A所示,为该解码方法的流程示意图,该方法可以包括: 步骤911、从当前块对应的码流中解码当前块内每个子块对应的定长码。 步骤912、针对当前块内每个子块,基于该子块对应的定长码,从当前块对应的码流中解码该子块内的每个位置(如像素位置)对应的残差值。 步骤913、针对当前块内每个子块,根据该子块对应的定长码的值确定是否需要解码该子块对应的符号位;若是,则从当前块对应的码流中解码该子块对应的符号位。 步骤914、针对当前块内每个子块,若该子块内的目标位置对应的残差值为残差边界值,则根据该符号位确定该残差边界值的符号,该目标位置可以是该子块内的任一位置。 在一种可能的实施方式中,根据该子块对应的定长码的值确定是否需要解码该子块对应的符号位,可以包括但不限于:若该子块对应的定长码的值小于或等于目标数值K,则确定需要解码该子块对应的符号位,否则,确定不需要解码该子块对应的符号位。 示例性的,目标数值K可以为解码端和编码端约定的固定数值;或者,目标数值K可以为解码端从图像头中解析的数值;或者,目标数值K可以为基于图像位宽导出的数值;或者,目标数值K可以为基于QP参数导出的数值。当然,上述只是几个示例,对此不作限制。 在一种可能的实施方式中,从当前块对应的码流中解码当前块内每个子块对应的定长码,可以包括但不限于:针对第一个子块,可以从码流中解码该子块对应的定长码。针对非第一个子块,可以从码流中解码该子块对应的第一指示信息,该第一指示信息可以用于指示该子块对应的定长码与该子块前面子块对应的定长码是否相同;在此基础上,若该第一指示信息指示该子块对应的定长码与该子块前面子块对应的定长码相同,则可以基于该子块前面子块对应的定长码确定该子块对应的定长码;若该第一指示信息指示该子块对应的定长码与该子块前面子块对应的定长码不同,则可以从码流中解码该子块对应的定长码。 在一种可能的实施方式中,从当前块对应的码流中解码当前块内每个子块对应的定长码,可以包括但不限于:从码流中解码当前块对应的第二指示信息,第二指示信息用于指示子块与该子块前面子块是否属于同一个合并组;同一个合并组内的各子块对应的定长码相同,不同合并组内的各子块对应的定长码不同。针对第一个子块,从码流中解码该子块对应的定长码;针对非第一个子块,若第二指示信息指示该子块与该子块前面子块属于同一个合并组,则基于该子块前面子块对应的定长码确定该子块对应的定长码;若第二指示信息指示该子块与该子块前面子块属于不同合并组,则从码流中解码该子块对应的待调整定长码,基于该子块前面子块对应的定长码对该待调整定长码进行调整,得到该子块对应的最终定长码。 类似的,本申请实施例中提出一种编码方法,该方法可以应用于编码端(也称为视频编码器),参见图9B所示,为该编码方法的流程示意图,该方法可以包括: 步骤921、在当前块对应的码流中编码当前块内每个子块对应的定长码。 步骤922、针对当前块内每个子块,基于该子块对应的定长码,在当前块对应的码流中编码该子块内的每个位置(如像素位置)对应的残差值。 步骤923、针对当前块内每个子块,根据该子块对应的定长码的值确定是否需要编码该子块对应的符号位;若是,则在当前块对应的码流中编码该子块对应的符号位。 示例性的,针对当前块内每个子块,若该子块内的目标位置对应的残差值为残差边界值,则根据该残差边界值的符号确定该子块对应的符号位,也就是说,该子块对应的符号位用于指示该残差边界值的符号,该目标位置可以是该子块内的任一位置。 在一种可能的实施方式中,根据该子块对应的定长码的值确定是否需要编码该子块对应的符号位,可以包括但不限于:若该子块对应的定长码的值小于或等于目标数值K,则确定需要编码该子块对应的符号位,否则,确定不需要编码该子块对应的符号位。 示例性的,目标数值K可以为解码端和编码端约定的固定数值;或,目标数值K可以为编码端在图像头中编码的数值;或,目标数值K可以为基于图像位宽导出的数值;或,目标数值K可以为基于QP参数导出的数值。当然,上述只是示例,对此不作限制。 在一种可能的实施方式中,在当前块对应的码流中编码当前块内每个子块对应的定长码,可以包括但不限于:针对第一个子块,在码流中编码该子块对应的定长码。针对非第一个子块,若该子块对应的定长码与该子块前面子块对应的定长码相同,则在码流中编码该子块对应的第一指示信息,且该第一指示信息可以用于指示该子块对应的定长码与该子块前面子块对应的定长码相同。若该子块对应的定长码与该子块前面子块对应的定长码不同,则在码流中编码该子块对应的第一指示信息,且该第一指示信息可以用于指示该子块对应的定长码与该子块前面子块对应的定长码不同,并在码流中编码该子块对应的定长码。 在一种可能的实施方式中,在当前块对应的码流中编码当前块内每个子块对应的定长码,可以包括但不限于:在码流中编码当前块对应的第二指示信息,第二指示信息用于指示子块与该子块前面子块是否属于同一个合并组,同一个合并组内的各子块对应的定长码相同,不同合并组内的各子块对应的定长码不同。针对第一个子块,在码流中编码该子块对应的定长码。针对非第一个子块,若第二指示信息指示该子块与该子块前面子块属于同一个合并组,则禁止在码流中编码该子块对应的定长码;若第二指示信息指示该子块与该子块前面子块属于不同合并组,则在码流中编码该子块对应的待调整定长码。示例性的,在码流中编码该子块对应的待调整定长码时,可以基于该子块前面子块对应的定长码确定该子块对应的待调整定长码,继而在码流中编码该子块对应的待调整定长码。 由以上技术方案可见,本申请实施例中,对于有符号定长码边界符号位进行优化,有利于提高压缩效率,同时降低硬件成本,使得符号位的解析不依赖于残差值本身。 实施例10:对于有符号定长编码边界值的方案,本申请实施例中提出一种解码方法和编码方法,该方法可以应用于解码端或者编码端,该方法可以包括以下步骤: 步骤S11、对于当前块,解码端解析当前块的子块分组信息。 与解码端的处理流程对应的,编码端编码当前块的子块分组信息。 比如说,编码端在当前块的码流中编码当前块的子块分组信息,解码端从当前块的码流中解码当前块的子块分组信息,对此编码过程和解码过程均不做限制。 示例性的,子块分组信息用于指示如何将当前块分成子块,比如说,假设当前块为16*2的块,则子块分组信息用于指示将当前块划分为2个8*2的子块,或者,子块分组信息用于指示将当前块划分为4个4*2的子块,或者,子块分组信息用于指示将当前块划分为8个2*2的子块,或者,子块分组信息用于指示将当前块划分为4个8*1的子块,或者,子块分组信息用于指示将当前块划分为8个4*1的子块,或者,子块分组信息用于指示将当前块划分为16个2*1的子块。关于当前块的其它尺寸,实现方式类似,在此不再重复赘述。 示例性的,也可以固定当前块的子块划分方式,即编码端和解码端约定当前块的子块划分方式,这样,编码端不需要编码当前块的子块分组信息,解码端也不需要解析当前块的子块分组信息。比如说,假设当前块为16*2的块,编码端和解码端,均直接固定将当前块划分为2个8*2的子块,或者,将当前块划分为4个4*2的子块,或者,将当前块划分为8个2*2的子块,或者,将当前块划分为4个8*1的子块,或者,将当前块划分为8个4*1的子块,或者,将当前块划分为16个2*1的子块。当然,上述只是几个示例,对此不做限制。 步骤S12、对于当前块内的每一个子块,解码端解析该子块对应的定长码。 与解码端的处理流程对应的,编码端编码该子块对应的定长码。 比如说,对于当前块内的每一个子块,编码端在当前块对应的码流中编码该子块对应的定长码,解码端从当前块对应的码流中解码该子块对应的定长码。 示例性的,子块对应的定长码用于指示子块内的每个位置(如像素位置)对应的残差值的长度,比如说,子块A对应的定长码用于指示子块A内的每个位置对应的残差值的长度,子块B对应的定长码用于指示子块B内的每个位置对应的残差值的长度,以此类推。假设子块A对应的定长码为4,那么,基于该定长码,可以将第1-4比特作为子块A的第1个位置对应的残差值,将第5-8比特作为子块A的第2个位置对应的残差值,以此类推。 示例性的,关于每个子块对应的定长码的解析,可以使用变长码进行解析。 在一种可能的实施方式中,编码端在当前块对应的码流中编码每个子块对应的定长码,解码端从当前块对应的码流中解码每个子块对应的定长码。比如说,编码端在当前块对应的码流中依次编码子块A对应的定长码、子块B对应的定长码,以此类推,解码端从当前块对应的码流中依次解码子块A对应的定长码、子块B对应的定长码,以此类推。 在一种可能的实施方式中,针对第一个子块,编码端在码流中编码该子块对应的定长码,解码端从码流中解码该子块对应的定长码。针对非第一个子块,若该子块对应的定长码与该子块前面子块对应的定长码相同,则编码端在码流中编码该子块对应的第一指示信息,且该第一指示信息用于指示该子块对应的定长码与该子块前面子块对应的定长码相同;解码端从码流中解码该子块对应的第一指示信息,若第一指示信息用于指示该子块对应的定长码与该子块前面子块对应的定长码相同,则基于该子块前面子块对应的定长码确定该子块对应的定长码。针对非第一个子块,若该子块对应的定长码与该子块前面子块对应的定长码不同,则编码端在码流中编码该子块对应的第一指示信息,且该第一指示信息用于指示该子块对应的定长码与该子块前面子块对应的定长码不同,并在码流中编码该子块对应的定长码;解码端从码流中解码该子块对应的第一指示信息,若第一指示信息用于指示该子块对应的定长码与该子块前面子块对应的定长码不同,则从码流中解码该子块对应的定长码。 其中,第一指示信息用于指示当前子块的定长码与前一个子块的定长码是否相同,可以用1bit表示,即对于第二个子块及之后的子块,用1bi解析该子块的定长码是否与前一个子块的定长码相同。例如,第一指示信息为第一取值,表示当前子块的定长码与前一个子块的定长码相同,第一指示信息为第二取值,表示当前子块的定长码与前一个子块的定长码不同。 比如说,编码端在当前块对应的码流中编码子块A对应的定长码、子块B对应的第一指示信息、子块B对应的定长码(若子块B对应的第一指示信息用于指示定长码相同,则码流不携带子块B对应的定长码,若子块B对应的第一指示信息用于指示定长码不同,则码流携带子块B对应的定长码)、子块C对应的第一指示信息、子块C对应的定长码(若子块C对应的第一指示信息用于指示定长码相同,则码流不携带子块C对应的定长码,若子块C对应的第一指示信息用于指示定长码不同,则码流携带子块C对应的定长码),以此类推。 解码端从当前块对应的码流中解码子块A对应的定长码,子块B对应的第一指示信息,若子块B对应的第一指示信息用于指示定长码相同,则将子块A对应的定长码作为子块B对应的定长码,不再从码流中解码子块B对应的定长码,若子块B对应的第一指示信息用于指示定长码不同,则从码流中解码子块B对应的定长码。然后,从当前块对应的码流中解码子块C对应的第一指示信息,若子块C对应的第一指示信息用于指示定长码相同,则将子块B对应的定长码作为子块C对应的定长码,不再从码流中解码子块C对应的定长码,若子块C对应的第一指示信息用于指示定长码不同,则从码流中解码子块C对应的定长码,以此类推。 在一种可能的实施方式中,编码端可以在码流中编码当前块对应的第二指示信息,解码端可以从码流中解码当前块对应的第二指示信息,该第二指示信息用于指示子块与该子块前面子块是否属于同一个合并组,同一个合并组内的各子块对应的定长码可以相同,不同合并组内的各子块对应的定长码可以不同。比如说,第二指示信息的第1个比特用于指示第2个子块与第1个子块是否属于同一个合并组,例如,第1个比特为第一取值时,表示属于同一个合并组,第1个比特为第二取值时,表示不属于同一个合并组,第二指示信息的第2个比特用于指示第3个子块与第2个子块是否属于同一个合并组,以此类推。 针对第一个子块,编码端在码流中编码该子块对应的定长码,解码端从码流中解码该子块对应的定长码。针对非第一个子块,若第二指示信息指示该子块与该子块前面子块属于同一个合并组,则编码端不在码流中编码该子块对应的定长码;解码端基于该子块前面子块对应的定长码确定该子块对应的定长码,而不从码流中解码该子块对应的定长码。若第二指示信息指示该子块与该子块前面子块属于不同合并组,则编码端在码流中编码该子块对应的待调整定长码,即基于该子块前面子块对应的定长码确定该子块对应的待调整定长码,在码流中编码该子块对应的待调整定长码;解码端从码流中解码该子块对应的待调整定长码,基于该子块前面子块对应的定长码对该待调整定长码进行调整,得到该子块对应的最终定长码。 综上可以看出,解码端可以解析整个当前块中每个子块(如4*1子块)的合并情况,若第二个组(即第二个子块)没有与第一个组(即第一个子块)合并,那么,第二个组的定长码不等于第一个组的定长码,在解析第二个组的定长码时,若第一个组的码字较短,还可以基于第一个组的定长码对第二个组的定长码进行调整,即将第二个组的定长码赋予另一个值。 比如说,编码端在当前块对应的码流中编码第二指示信息、子块A对应的定长码、子块B对应的待调整定长码(若第二指示信息指示子块B与子块A属于同一合并组,则码流不携带子块B对应的待调整定长码,若第二指示信息指示子块B与子块A属于不同合并组,则码流携带子块B对应的待调整定长码)、子块C对应的待调整定长码(若第二指示信息指示子块C与子块B属于同一合并组,则码流不携带子块C对应的待调整定长码,若第二指示信息指示子块C与子块B属于不同合并组,则码流携带子块C对应的待调整定长码),以此类推。 解码端从当前块对应的码流中解码第二指示信息,从当前块对应的码流中解码子块A对应的定长码。若第二指示信息指示子块B与子块A属于同一合并组,则将子块A对应的定长码作为子块B对应的定长码,解码端不再从码流中解码子块B对应的定长码,若第二指示信息指示子块B与子块A属于不同合并组,则解码端从码流中解码子块B对应的待调整定长码,基于子块A对应的定长码对该待调整定长码进行调整,得到子块B对应的最终定长码。若第二指示信息指示子块C与子块B属于同一合并组,则将子块B对应的定长码作为子块C对应的定长码,解码端不再从码流中解码子块C对应的定长码,若第二指示信息指示子块C与子块B属于不同合并组,则解码端从码流中解码子块C对应的待调整定长码,基于子块B对应的定长码对该待调整定长码进行调整,得到子块C对应的最终定长码,以此类推。 示例性的,假设定长码依次为m1、m2、m3、m4,m1的码字小于m2的码字,m2的码字小于m3的码字,m3的码字小于m4的码字,在此基础上,假设子块A对应的定长码为m1,第二指示信息指示子块B与子块A属于不同合并组,那么,若子块B对应的最终定长码为m3,则在码流中编码的子块B对应的待调整定长码可以是m2(即码字更小),解码端从码流中解码出待调整定长码m2之后,由于子块A对应的定长码为m1,即位于m2之前,因此,可以对待调整定长码m2进行调整,得到子块B对应的最终定长码为m3。或者,假设子块A对应的定长码为m4,第二指示信息指示子块B与子块A属于不同合并组,那么,若子块B对应的最终定长码为m3,则在码流中编码的子块B对应的待调整定长码可以是m3,解码端从码流中解码出待调整定长码m3之后,由于子块A对应的定长码为m4,即位于m3之后,因此,可以保持待调整定长码m3不变,得到子块B对应的最终定长码为m3。 步骤S13、对于当前块内的每一个子块,解码端使用该子块对应的定长码解析该子块内每个位置的残差值,即从当前块对应的码流中解码该子块内的每个位置对应的残差值。 与解码端的处理流程对应的,编码端使用该子块对应的定长码编码该子块内每个位置的残差值,即在当前块对应的码流中编码该子块内的每个位置对应的残差值。 步骤S14、对于当前块内的每一个子块,解码端根据该子块对应的定长码的值确定是否需要解码该子块对应的符号位;若是,则解码端从当前块对应的码流中解码该子块对应的符号位;若否,则解码端不从当前块对应的码流中解码该子块对应的符号位。 与解码端的处理流程对应的,编码端根据该子块对应的定长码的值确定是否需要编码该子块对应的符号位;若是,则编码端可以在当前块对应的码流中编码该子块对应的符号位;若否,则编码的可以不在当前块对应的码流中编码该子块对应的符号位。 在一种可能的实施方式中,对于符号位的解析,可以依赖于定长码的值,比如说,当定长码的值小于或等于目标数值K时,编码端才需要在当前块对应的码流中编码该符号位,解码端可以从当前块对应的码流中解码该符号位。当定长码的值大于目标数值K时,编码端不在当前块对应的码流中编码该符号位,解码端也不从当前块对应的码流中解码该符号位。 示例性的,目标数值K可以为解码端和编码端约定的固定数值,即目标数值K是解码端和编码端固定的数值。或者,目标数值K可以是图像头中解析的数值,比如说,目标数值K可以为编码端在图像头中编码的数值,目标数值K可以为解码端从图像头中解析的数值。或者,目标数值K可以是基于图像位宽导出的数值,比如说,目标数值K可以为编码端基于图像位宽导出的数值,且目标数值K可以为解码端基于图像位宽导出的数值。或者,目标数值K可以是基于QP参数导出的数值,比如说,目标数值K可以为编码端基于QP参数导出的数值,且目标数值K可以为解码端基于QP参数导出的数值。当然,上述只是目标数值K的几个示例,对此目标数值K不做限制,只要编码端和解码端能够得到目标数值K即可。 步骤S15、针对当前块内每个子块,若该子块内的目标位置对应的残差值为残差边界值,则解码端根据该符号位确定该残差边界值的符号,该目标位置可以是该子块内的任一位置。 与解码端的处理流程对应的,若子块内的目标位置对应的残差值为残差边界值,则编码端根据该残差边界值的符号确定该子块对应的符号位,符号位用于指示该残差边界值的符号。 比如说,若子块对应的符号位为第一取值,则表示残差边界值的符号为负数,在该情况下,该子块内所有系数值(即残差值)等于2^(coding length-1)的数(即残差边界值)均等于-2^(coding length-1),否则,若子块对应的符号位为第二取值,则表示残差边界值的符号为正数,该子块内所有系数值(即残差值)等于2^(coding length-1)的数均等于2^(coding length-1)。 综上可以看出,可以先从码流中解析coding length,子块内所有系数(即残差值)使用同一个定长码为coding length进行系数解析,因此,系数解析范围可以是[-2^(coding length–1)-1,2^(coding length-1)]。示例性的,若组内存在1或1个以上的系数值为2^(coding length-1),则解析1个符号位,所有组内系数值等于2^(coding length-1)的数,共用一个符号位。若解析符号为负数,则所有组内系数值等于2^(coding length-1)的数等于-2^(coding length-1),否则,所有组内系数值等于2^(coding length-1)的数等于2^(coding length-1)。 示例性的,上述各实施例可以单独实现,也可以组合实现,比如说,实施例1-实施例10中的每个实施例,可以单独实现,实施例1-实施例10中的至少两个实施例,可以组合实现。比如说,实施例1-实施例3可以任意组合实现,实施例4-实施例5可以任意组合实现,实施例6-实施例8可以任意组合实现,实施例9-实施例10可以任意组合实现。 示例性的,上述各实施例中,编码端的内容也可以应用到解码端,即解码端可以采用相同方式处理,解码端的内容也可以应用到编码端,即编码端可以采用相同方式处理。 基于与上述方法同样的申请构思,本申请实施例中还提出一种编解码装置,所述装置应用于解码端,所述装置包括:存储器,其经配置以存储视频数据;解码器,其经配置以实现上述实施例1-实施例10的编解码方法,即解码端的处理流程。 比如说,在一种可能的实施方式中,解码器,其经配置以实现: 在当前块的参考像素不可得时,对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,得到目标预测模式列表;基于所述目标预测模式列表对所述当前块进行编解码; 或者,在当前块的第一边界的参考像素不可得,所述当前块的第二边界的参考像素可得时,基于所述第二边界的参考像素填充所述第一边界的参考像素;基于填充后的第一边界的参考像素和第二边界的参考像素对所述当前块进行编解码; 或者,若当前块启用帧内块复制预测模式,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则基于所述上边界的重建像素确定所述当前块的第一部分子块对应的第一搜索区域,基于所述第一搜索区域的参考像素确定所述第一部分子块的重建像素;在得到所述第一部分子块的重建像素之后,基于所述上边界的重建像素和/或所述第一部分子块的重建像素确定所述当前块的第二部分子块对应的第二搜索区域,基于所述第二搜索区域的参考像素确定所述第二部分子块的重建像素;其中,所述当前块被划分为所述第一部分子块和所述第二部分子块; 或者,从当前块对应的码流中解码所述当前块内每个子块对应的定长码;针对所述当前块内每个子块,基于所述子块对应的定长码,从所述当前块对应的码流中解码所述子块内的每个位置对应的残差值;根据所述子块对应的定长码的值确定是否需要解码所述子块对应的符号位;若是,则从所述当前块对应的码流中解码所述子块对应的符号位;若所述子块内的目标位置对应的残差值为残差边界值,则根据所述符号位确定所述残差边界值的符号,所述目标位置是所述子块内的任一位置。 基于与上述方法同样的申请构思,本申请实施例中还提出一种编解码装置,所述装置应用于编码端,所述装置包括:存储器,其经配置以存储视频数据;编码器,其经配置以实现上述实施例1-实施例10的编解码方法,即编码端的处理流程。 比如说,在一种可能的实施方式中,编码器,其经配置以实现: 在当前块的参考像素不可得时,对当前块对应的初始预测模式列表中的目标预测模式进行去除处理,得到目标预测模式列表;基于所述目标预测模式列表对所述当前块进行编解码; 或者,在当前块的第一边界的参考像素不可得,所述当前块的第二边界的参考像素可得时,基于所述第二边界的参考像素填充所述第一边界的参考像素;基于填充后的第一边界的参考像素和第二边界的参考像素对所述当前块进行编解码; 或者,若当前块启用帧内块复制预测模式,若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则基于所述上边界的重建像素确定所述当前块的第一部分子块对应的第一搜索区域,基于所述第一搜索区域的参考像素确定所述第一部分子块的重建像素;在得到所述第一部分子块的重建像素之后,基于所述上边界的重建像素和/或所述第一部分子块的重建像素确定所述当前块的第二部分子块对应的第二搜索区域,基于所述第二搜索区域的参考像素确定所述第二部分子块的重建像素;其中,所述当前块被划分为所述第一部分子块和所述第二部分子块。 基于与上述方法同样的申请构思,本申请实施例提供的解码端设备(也称为视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图9C所示。包括:处理器931和机器可读存储介质932,机器可读存储介质932存储有能够被处理器931执行的机器可执行指令;处理器931用于执行机器可执行指令,以实现本申请上述实施例1-10的编解码方法。 基于与上述方法同样的申请构思,本申请实施例提供的编码端设备(也称为视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图9D所示。包括:处理器941和机器可读存储介质942,机器可读存储介质942存储有能够被处理器941执行的机器可执行指令;处理器941用于执行机器可执行指令,以实现本申请上述实施例1-10的编解码方法。 基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法,如上述上述各实施例中的编解码方法。 基于与上述方法同样的申请构思,本申请实施例还提供一种计算机应用程序,所述计算机应用程序令被处理器执行时,能够实现本申请上述示例公开的编解码方法。 基于与上述方法同样的申请构思,本申请实施例中还提出一种编解码装置,所述装置应用于解码端或者编码端,所述装置包括:处理模块,用于在当前块的参考像素不可得时,对所述当前块对应的初始预测模式列表中的目标预测模式进行去除处理,得到目标预测模式列表;编解码模块,用于基于所述目标预测模式列表对所述当前块进行编解码。 示例性的,所述初始预测模式列表包括多个预测模式,所述目标预测模式为参考像素不可得时,所述初始预测模式列表中当前块不会采用的预测模式。 示例性的,所述处理模块对所述当前块对应的初始预测模式列表中的目标预测模式进行去除处理时具体用于:确定所述初始预测模式列表中的候选预测模式,所述候选预测模式为参考像素不可得时,所述初始预测模式列表中当前块不会采用的预测模式;从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式;对所述初始预测模式列表中的所述第一目标预测模式进行去除处理。 示例性的,所述处理模块从所有候选预测模式中选取至少一个预测模式作为第一目标预测模式时具体用于:基于每个候选预测模式对应的码字长度,从所有候选预测模式中选取K个候选预测模式作为保留预测模式,所述K为正整数;将所述保留预测模式之外的候选预测模式确定为第一目标预测模式。 示例性的,所述K为1,所述保留预测模式为码字长度最小的候选预测模式。 示例性的,所述处理模块对所述当前块对应的初始预测模式列表中的目标预测模式进行去除处理时具体用于:确定所述初始预测模式列表中的第二目标预测模式,所述第二目标预测模式为参考像素不可得时,所述初始预测模式列表中当前块不会采用的预测模式;对所述初始预测模式列表中的所述第二目标预测模式进行去除处理。 示例性的,所述候选预测模式包括以下预测模式中的多种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式;所述第一目标预测模式包括以下预测模式的至少一种:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。 示例性的,若所述当前块的上边界参考像素不可得,则所述候选预测模式包括:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式;所述第一目标预测模式包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式。 示例性的,若所述当前块的左边界参考像素不可得,则所述候选预测模式包括:HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式;所述第一目标预测模式包括:IBM0预测模式、IBM1预测模式和IBM2预测模式。 示例性的,若所述当前块的上边界参考像素不可得,且所述当前块的左边界参考像素不可得,则所述候选预测模式包括:DC预测模式、DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式;所述第一目标预测模式包括:DIAG0预测模式、DIAG1预测模式、DIAG2预测模式、DIAG3预测模式、VER预测模式、HOR预测模式、IBM0预测模式、IBM1预测模式和IBM2预测模式。 基于与上述方法同样的申请构思,本申请实施例中还提出一种编解码装置,所述装置应用于解码端或者编码端,所述装置包括:处理模块,用于在当前块的第一边界的参考像素不可得,所述当前块的第二边界的参考像素可得时,基于所述第二边界的参考像素填充所述第一边界的参考像素;编解码模块,用于基于填充后的第一边界的参考像素和第二边界的参考像素对所述当前块进行编解码。示例性的,所述第一边界为左边界,所述第二边界为上边界;或者,所述第一边界为上边界,所述第二边界为左边界。 示例性的,所述处理模块在当前块的第一边界的参考像素不可得,所述当前块的第二边界的参考像素可得时,基于所述第二边界的参考像素填充所述第一边界的参考像素时具体用于:若所述当前块对应的预测模式为逐点预测模式,在上边界的参考像素不可得,左边界的参考像素可得时,将所述上边界的参考像素均填充为所述左边界的参考像素中的第一个值;在左边界的参考像素不可得,上边界的参考像素可得时,将所述左边界的参考像素均填充为所述上边界的参考像素中的第一个值。或者,若所述当前块对应的预测模式为逐点预测模式,在上边界的参考像素不可得,左边界的参考像素可得时,将所述上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值;在左边界的参考像素不可得,上边界的参考像素可得时,将所述左边界的参考像素均填充为上边界的参考像素中的第一个值。或者,若所述当前块对应的预测模式为除DC预测模式之外的帧内预测模式,在上边界的参考像素不可得,左边界的参考像素可得时,将所述上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值;在左边界的参考像素不可得,上边界的参考像素可得时,将所述左边界的参考像素填充为上边界第一行对应位置的参考像素值。或者,若所述当前块对应的预测模式为帧内预测模式,在上边界的参考像素不可得,左边界的参考像素可得时,将所述上边界的参考像素填充为左边界编码块第一行对应预测位置的重建值;在左边界的参考像素不可得,上边界的参考像素可得时,则将所述左边界的参考像素均填充为默认值。 基于与上述方法同样的申请构思,本申请实施例中还提出一种编解码装置,所述装置应用于解码端或者编码端,若当前块启用帧内块复制预测模式,所述装置包括:第一处理模块,用于若当前块的左边界的参考像素不可得,且当前块的上边界的参考像素可得,则基于所述上边界的重建像素确定所述当前块的第一部分子块对应的第一搜索区域;第一确定模块,用于基于所述第一搜索区域的参考像素确定所述第一部分子块的重建像素;第二处理模块,用于在得到所述第一部分子块的重建像素之后,基于所述上边界的重建像素和/或所述第一部分子块的重建像素确定所述当前块的第二部分子块对应的第二搜索区域;第二确定模块,用于基于所述第二搜索区域的参考像素确定所述第二部分子块的重建像素;其中,所述当前块被划分为所述第一部分子块和所述第二部分子块。 示例性的,所述第一确定模块基于所述第一搜索区域的参考像素确定所述第一部分子块的重建像素时具体用于:将所述第一部分子块划分为M个第一预测块,所述M为正整数,基于所述第一搜索区域的参考像素确定每个第一预测块的重建像素;所述第二确定模块基于所述第二搜索区域的参考像素确定所述第二部分子块的重建像素时具体用于:将所述第二部分子块划分为N个第二预测块,所述N为正整数,基于所述第二搜索区域的参考像素确定每个第二预测块的重建像素。 示例性的,所述第二预测块的尺寸与所述第一预测块的尺寸相同;或者,所述第二预测块的尺寸与所述第一预测块的尺寸不同。示例性的,若所述当前块的尺寸为16*2,所述第一部分子块和所述第二部分子块的尺寸均为8*2;则:所述第一预测块的尺寸为2*1,所述第二预测块的尺寸为2*1或2*2;或者,所述第一预测块的尺寸为4*1,所述第二预测块的尺寸为4*1或4*2;或者,所述第一预测块的尺寸为8*1,所述第二预测块的尺寸为8*1或8*2。 示例性的,所述第一处理模块基于所述上边界的重建像素确定所述当前块的第一部分子块对应的第一搜索区域时具体用于:基于所述上边界第一行的重建像素填充所述当前块左侧的第一指定区域的完整区域,将所述第一指定区域的完整区域确定为所述第一搜索区域;或者,基于所述上边界第一行的重建像素填充所述当前块左侧的第一指定区域的部分区域,将所述第一指定区域的部分区域确定为所述第一搜索区域。 示例性的,所述第一处理模块基于所述上边界的重建像素确定所述当前块的第一部分子块对应的第一搜索区域时具体用于:将所述上边界的重建像素确定为所述第一部分子块对应的第一搜索区域。 示例性的,所述第二处理模块基于所述上边界的重建像素和/或所述第一部分子块的重建像素确定所述当前块的第二部分子块对应的第二搜索区域时具体用于:基于所述上边界第一行的重建像素和所述第一部分子块的重建像素填充所述第二部分子块左侧第二指定区域的完整区域,将所述第二指定区域的完整区域确定为所述第二搜索区域;或者,基于所述上边界第一行的重建像素和所述第一部分子块的重建像素填充所述第二部分子块左侧第二指定区域的部分区域,将所述第二指定区域的部分区域确定为所述第二搜索区域。 示例性的,所述第二处理模块基于所述上边界的重建像素和/或所述第一部分子块的重建像素确定所述当前块的第二部分子块对应的第二搜索区域时具体用于:将所述上边界的重建像素确定为所述第二部分子块对应的第二搜索区域;或者,将所述第一部分子块的重建像素确定为所述第二部分子块对应的第二搜索区域。 示例性的,所述上边界的重建像素包括:所述上边界第一行的重建像素;或者,所述上边界第一行的重建像素和所述上边界第二行的重建像素;所述上边界的重建像素的长度等于所述当前块的宽度;或者,所述上边界的重建像素的长度大于所述当前块的宽度。 基于与上述方法同样的申请构思,本申请实施例中还提出一种解码装置,所述装置应用于解码端,所述装置包括:解码模块,用于从当前块对应的码流中解码所述当前块内每个子块对应的定长码;针对所述当前块内每个子块,基于所述子块对应的定长码,从所述当前块对应的码流中解码所述子块内的每个位置对应的残差值;根据所述子块对应的定长码的值确定是否需要解码所述子块对应的符号位;若是,则从所述当前块对应的码流中解码所述子块对应的符号位;确定模块,用于若所述子块内的目标位置对应的残差值为残差边界值,则根据所述符号位确定所述残差边界值的符号,所述目标位置是所述子块内的任一位置。 示例性的,所述解码模块根据所述子块对应的定长码的值确定是否需要解码所述子块对应的符号位时具体用于:若所述子块对应的定长码的值小于或等于目标数值K,则确定需要解码所述子块对应的符号位,否则,确定不需要解码所述子块对应的符号位。 示例性的,所述目标数值K为解码端和编码端约定的固定数值;或者,所述目标数值K为解码端从图像头中解析的数值;或者,所述目标数值K为基于图像位宽导出的数值;或者,所述目标数值K为基于QP参数导出的数值。示例性的,所述解码模块从当前块对应的码流中解码所述当前块内每个子块对应的定长码时具体用于:针对第一个子块,从码流中解码该子块对应的定长码;针对非第一个子块,从码流中解码该子块对应的第一指示信息,第一指示信息用于指示该子块对应的定长码与该子块前面子块对应的定长码是否相同;若第一指示信息指示该子块对应的定长码与该子块前面子块对应的定长码相同,则基于该子块前面子块对应的定长码确定该子块对应的定长码;若第一指示信息指示该子块对应的定长码与该子块前面子块对应的定长码不同,则从所述码流中解码该子块对应的定长码。 示例性的,所述解码模块从当前块对应的码流中解码所述当前块内每个子块对应的定长码时具体用于:从码流中解码当前块对应的第二指示信息,所述第二指示信息用于指示子块与该子块前面子块是否属于同一个合并组;其中,同一个合并组内的各子块对应的定长码相同,不同合并组内的各子块对应的定长码不同;针对第一个子块,从码流中解码该子块对应的定长码;针对非第一个子块,若第二指示信息指示该子块与该子块前面子块属于同一个合并组,则基于该子块前面子块对应的定长码确定该子块对应的定长码;若第二指示信息指示该子块与该子块前面子块属于不同合并组,则从码流中解码该子块对应的待调整定长码,基于该子块前面子块对应的定长码对该待调整定长码进行调整,得到该子块对应的最终定长码。 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
- 一种编解码视频数据的方法及装置
- 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
- 一种洗涤设备的电机控制方法、装置及一种洗涤设备
- 一种3D显示装置的检测方法、装置及设备
- 编解码方法、编解码装置及编解码设备
- 编解码方法、编解码装置及编解码设备