编码方法及编码器与流程


编码方法及编码器
1.本技术是分案申请,原申请的申请号是201911409778.7,原申请日是2019年12月31日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及图像处理领域,尤其涉及一种编码方法及编码器。


背景技术:



3.近年来,视频图像应用在多个维度(如分辨率、帧率等)的提升,使得视频处理系统的处理数据量大幅增长。视频处理系统的带宽、功耗及成本均大幅增加。为了有效降低视频处理系统的带宽、功耗与成本,压缩技术被应用于视频处理系统中。
4.压缩技术能够有效地减少视频处理系统的内存与带宽的占用,降低视频处理系统的成本。相比于无损压缩,视觉无损的有损压缩通常有着更高的压缩率,能够节省更多的内存与带宽占用。码率控制作为有损压缩的重要环节,必须保证编码码率满足系统内存和带宽限制。在编码码率即将到达系统上限的极限条件下,现有技术中通常通过强制手段压缩码率,使得编码码率满足系统内存和带宽限制。而此时在解码图像中往往会引入较大的视觉失真。因此,现有的强制码率控制手段还存在优化的空间。


技术实现要素:



5.本技术实施例提供了一种编码方法及编码器,可以在保证编码码率满足系统内存和带宽限制的前提下,提高解码图像质量。
6.第一方面,本技术实施例提供了一种编码方法,包括:在满足强制码率控制条件时,对待编码块进行比特截取;计算上述比特截取对应的第一代价值;在满足上述强制码率控制条件时,还对上述待编码块进行预测,确定上述待编码块的预测残差;根据上述预测残差计算上述预测对应的第二代价值;对比上述第一代价值与上述第二代价值,确定编码比特。
7.在一种可能的实施方式中,上述编码比特携带上述编码比特的编码方式,上述编码方式为比特截取或预测。
8.具体地,上述比特截取可以是对待编码块的当前编码像素的像素值进行比特截取,也可以是对待编码块进行预测后,对预测残差进行比特截取。本技术中将比特截取的方式称为空域支路的强制码率控制方式。其中,空域支路的预测可以是点级预测,也可以是块级预测。
9.其中,块级预测以编码块为预测单元,当前编码块内的像素不可作为当前编码块内后续像素的参考像素。点级预测以点为预测单元,当前编码块内的像素可作为当前编码块内后续像素的参考像素。
10.在一种可能的实现方式中,可以将对待编码块的当前编码像素的像素值进行比特截取称为空域支路的强制码率控制方式一,将对待编码像素的预测残差进行比特截取的方
式称为空域支路的强制码率控制方式二。当执行空域支路的强制码率控制时,可以对比上述方式一与方式二的编码代价,选择编码代价较小的方式作为空域支路的强制码率控制方式。
11.具体地,上述在满足上述强制码率控制条件时,还对上述待编码块进行预测,可以看作是频域支路的强制码率控制方式。其中,频域支路的预测可以是块级预测。
12.具体地,确定编码比特后,还可以在编码码流中标记编码比特的编码方式,以使解码端根据编码比特的编码方式进行解码。
13.可能地,计算代价值的方式可以包括以下任意一项:编码码率(rate,r)、率失真代价(rate-distortion cost,rdcost)、编码失真大小等。
14.其中,编码失真大小可以采用绝对误差和(sum of absolute difference,sad)、平均绝对差(mean absolute differences,mad)、平方误差和(sum of squared difference,ssd)、差值平方和(sum of squared error,sse)、均方误差(mean squared error,mse)等测度进行衡量。
15.本技术实施例在系统需要强制控制码率时,预估分别采用空域支路及频域支路提供的两种不同方式控制码率后可能造成的编码代价,选择编码代价较小的方式来控制码率,最终输出编码比特,使输出的有限的编码比特尽可能多的携带有用信息(即人眼容易感知的信息),在保证编码码率满足系统内存和带宽限制的前提下,提高解码图像质量。
16.在一种可能的实现方式中,上述在满足强制码率控制条件时,对待编码块进行比特截取之前,上述方法还包括:判断是否满足上述强制码率控制条件;在不满足上述强制码率控制条件时,确定第一编码量化参数qp;分别在多种预测模式下采用上述第一编码qp对上述待编码块进行预编码,得到各个预测模式各自对应的预编码结果信息;从上述多种预测模式中选择最佳预测模式;采用上述最佳预测模式对应的编码结果信息调整上述第一编码qp,得到第二编码qp;在上述最佳预测模式下采用上述第二编码qp对上述待编码块进行实编码。
17.可能地,上述预编码结果信息包括以下至少一项:上述待编码块在上述第一编码qp下的编码比特数、上述待编码块在上述第一编码qp下的编码失真大小、上述待编码块在上述第一编码qp下的编码率失真代价、上述待编码块的预测残差及上述待编码块的纹理复杂度。
18.本技术实施例可以在系统不需要强制控制码率时,采用多种预测模式对待编码块进行预编码,从而确定最佳的预测模式,再采用该最佳的预测模式对应的预编码结果信息对第一编码qp进行调整,在该最佳的预测模式下采用调整后的编码qp对待编码块进行实编码,可以合理利用码率传递质量更好的图像数据,从而提升图像压缩的性能。
19.在一种可能的实现方式中,上述确定编码比特后,上述方法还包括:输出上述编码比特至码流缓冲区;上述判断是否满足强制码率控制条件,包括:根据上述码流缓冲区的充盈状态判断是否满足上述强制码率控制条件;上述采用上述最佳预测模式对应的编码结果信息调整上述第一编码qp,包括:根据上述码流缓冲区的充盈状态及上述最佳预测模式对应的编码结果信息调整上述第一编码qp。
20.本技术实施例可以根据码流缓冲区的充盈状态来判断是否需要强制控制码率。当码流缓冲区快要溢出时强制控制码率可以减小待编码块的输出码率,从而防止码流缓冲区
上溢,保证实际编码码率小于目标码率。此外,在不需要强制控制码率时,码流缓冲区的充盈状态还可以用于调节编码qp。若码流缓冲区较满,则增大qp以防码流缓冲区溢出;若码流缓冲区较空,则减小qp,以使编码后的图像携带更多的图像信息,保证图像压缩质量。
21.在一种可能的实现方式中,上述对比上述第一代价值与上述第二代价值,确定编码比特,具体包括:在上述第一代价值小于上述第二代价值的情况下,确定上述编码比特为上述比特截取后的编码比特。
22.当第一代价值小于第二代价值时,表明通过空域支路的比特截取的方式来控制码率带来的图像损失较小,则优先选择空域支路的比特截取的方式来控制码率,输出的编码比特即为比特截取后的编码比特。
23.在一种可能的实现方式中,上述对比上述第一代价值与上述第二代价值,确定编码比特,具体包括:在上述第一代价值大于上述第二代价值的情况下,确定上述编码比特为对上述预测残差进行熵编码后的编码比特。
24.当第二代价值小于第一代价值时,表明通过频域支路的块级预测的方式来控制码率带来的图像损失较小,则优先选择频域支路的块级预测的方式来控制码率,输出的编码比特即为对频域支路的块级预测输出的残差信息进行熵编码后的编码比特。上述对待编码块进行块级预测后,直接对待编码块的残差信息进行熵编码的方式可以看作是对预测残差进行频域变换,得到预测残差的n个频域变换系数后,将n个频域变换系数全部置零,即将变换系数全部丢弃。本技术实施例将这种方式称为频域支路的变换系数全丢弃。
25.不限于将变换系数全丢弃,在频域支路中还可以有变换系数部分丢弃的方式来强制控制码率。以下将变换系数全丢弃以及变换系数部分丢弃统称为频域支路的系数丢弃。
26.在另外一种可能的实现方式中,上述根据上述预测残差计算上述预测对应的第二代价值,包括:对上述预测残差进行频域变换,得到上述预测残差的n个频域变换系数,上述n为正整数;将上述n个频域变换系数中的m个频域变换系数置零,得到置零后的n个频域变换系数,上述m为小于n的正整数;计算将m个频域变换系数置零对应的第二代价值;上述对比上述第一代价值与上述第二代价值,确定编码比特,具体包括:在上述第一代价值大于上述第二代价值的情况下,确定上述编码比特为对上述置零后的n个频域变换系数进行熵编码后的编码比特。上述将n个频域变换系数中的m个频域变换系数置零的方式即可看作频域支路的变换系数部分丢弃。
27.具体地,第二代价值的计算方式可以是编码码率、rdcost、编码失真大小等。其中,编码失真大小可以采用sad、mad、ssd、sse、mse等测度进行衡量。编码失真大小,具体可以是变换之前的残差信息与反变换之后的残差信息的差值。
28.当第一代价值等于第二代价值时,可以任意选择比特截取的方式或者变换系数丢弃的方式来控制码率,输出的编码比特即为比特截取后的编码比特或者为对预测输出的残差信息进行熵编码后的编码比特。本技术实施例对代价值相等的情况下选择的强制码率控制方式不做限定。
29.本技术实施例,频域支路的系数丢弃仅对残差信息的频域变换系数进行操作,即使丢弃较多的变换系数,待编码块的预测信息仍能保留图像的部分纹理信息,通过将部分变换系数进行丢弃(即将变换系数置零),既可以达到降低码率的效果,又可以保证解码图像质量。
30.在另外一种可能的实现方式中,上述对上述预测残差进行频域变换,得到上述预测残差的n个频域变换系数之后,上述将上述n个频域变换系数中的m个频域变换系数置零之前,上述方法还包括:对上述n个频域变换系数进行量化,得到n个量化后的频域变换系数;上述将上述n个频域变换系数中的m个频域变换系数置零,包括:将上述n个量化后频域变换系数中的m个频域变换系数置零。
31.在另外一种可能的实现方式中,上述将上述n个频域变换系数中的m个频域变换系数置零之后,上述计算将m个频域变换系数置零对应的第二代价值之前,上述方法还包括:对上述置零后的n个频域变换系数进行量化;上述计算将m个频域变换系数置零对应的第二代价值,包括:计算将上述置零后的n个频域变换系数进行量化后的第二代价值。本技术实施例将变换系数置零后再进行量化,可以减少参与量化的变换系数。
32.对比上述对量化后的变换系数置零(丢弃)以及将变换系数置零(丢弃)后再量化这两种方式,前者可以保留更多的频率成分(量化在系数置零之前置零的系数的数量可小于或等于量化在置零之后置零的系数的数量),有利于提高特定图像内容的图像质量。
33.在另外一种可能的实现方式中,可以将先对变换系数量化再丢弃部分系数的方式称为频域支路的强制码率控制方式一,将丢弃部分系数后再量化的方式称为频域支路的强制码率控制方式二。当执行频域支路的强制码率控制时,可以对比上述方式一与方式二的编码代价,选择编码代价较小的方式作为频域支路的强制码率控制方式。
34.在另外一种可能的实现方式中,上述在满足上述强制码率控制条件时,还对上述待编码块进行预测,确定上述待编码块的预测残差之前,上述方法还包括:基于预设代价计算规则从多个预测模式中选择目标预测模式;上述目标预测模式为上述多个预测模式中代价值最小的预测模式,不同的预测模式对应不同的预测方向和/或不同的预测值计算方法;上述在满足上述强制码率控制条件时,还对上述待编码块进行预测,确定上述待编码块的预测残差,包括:在满足上述强制码率控制条件时,还在上述目标预测模式下对上述待编码块进行上述块级预测,确定上述待编码块的预测残差。
35.本技术实施例还可以对多种预测模式进行分析,选择编码代价最小的预测模式对待编码块进行块级预测,以减小编码的失真,保证图像编码的质量。
36.第二方面,本技术实施例提供了一种编码器,包括:比特截取模块,用于在满足强制码率控制条件时,对待编码块进行比特截取;第一代价计算模块,用于计算上述比特截取对应的第一代价值;预测模块,用于在满足上述强制码率控制条件时,对上述待编码块进行预测,确定上述待编码块的预测残差;第二代价计算模块,用于根据上述预测残差计算上述预测对应的第二代价值;对比确定模块,用于对比上述第一代价值与上述第二代价值,确定编码比特。
37.在一种可能的实施方式中,上述编码比特携带上述编码比特的编码方式,上述编码方式为比特截取或预测。
38.可能地,确定编码比特后,还可以在编码码流中标记编码比特的编码方式,以使解码端根据编码比特的编码方式进行解码。
39.可能地,计算代价值的方式可以包括以下任意一项:编码码率、rdcost、编码失真大小等。其中,编码失真大小可以采用sad、mad、ssd、sse、mse等测度进行衡量。
40.在一种可能的实现方式中,上述编码器还包括:判断模块,用于判断是否满足上述
强制码率控制条件;第一码率控制模块,用于在不满足上述强制码率控制条件时,确定第一编码量化参数qp;预编码模块,用于分别在多种预测模式下采用上述第一编码qp对上述待编码块进行预编码,得到各个预测模式各自对应的预编码结果信息;选择模块,用于从上述多种预测模式中选择最佳预测模式;第二码率控制模块,用于采用上述最佳预测模式对应的编码结果信息调整上述第一编码qp,得到第二编码qp;实编码模块,用于在上述最佳预测模式下采用上述第二编码qp对上述待编码块进行实编码。
41.在一种可能的实现方式中,上述编码器还包括:输出模块,用于输出上述编码比特至码流缓冲区;上述判断模块,具体用于:根据上述码流缓冲区的充盈状态判断是否满足上述强制码率控制条件;上述第二码率控制模块,具体用于:根据上述码流缓冲区的充盈状态及上述最佳预测模式对应的编码结果信息调整上述第一编码qp。
42.在一种可能的实现方式中,上述对比确定模块,具体用于:在上述第一代价值小于上述第二代价值的情况下,确定上述编码比特为上述比特截取后的编码比特。
43.在另外一种可能的实现方式中,上述对比确定模块,具体用于:在上述第一代价值大于上述第二代价值的情况下,确定上述编码比特为对上述预测残差进行熵编码后的编码比特。
44.在另外一种可能的实现方式中,上述第二代价计算模块,包括:变换单元,用于对上述预测残差进行频域变换,得到上述预测残差的n个频域变换系数,上述n为正整数;置零单元,用于将上述n个频域变换系数中的m个频域变换系数置零,得到置零后的n个频域变换系数,上述m为小于n的正整数;代价计算单元,用于计算将m个频域变换系数置零对应的第二代价值;上述对比确定模块,具体用于:在上述第一代价值大于上述第二代价值的情况下,确定上述编码比特为对上述置零后的n个频域变换系数进行熵编码后的编码比特。
45.具体地,第二代价值的计算方式可以是计算编码失真大小,具体可以是变换之前的残差信息与反变换之后的残差信息的差值。
46.在另外一种可能的实现方式中,上述第二代价计算模块还包括:量化单元,用于在上述变换单元对上述预测残差进行频域变换,得到上述预测残差的n个频域变换系数之后,上述置零单元将上述n个频域变换系数中的m个频域变换系数置零之前,对上述n个频域变换系数进行量化,得到n个量化后的频域变换系数;上述置零单元,具体用于:将上述n个量化后频域变换系数中的m个频域变换系数置零。
47.在另外一种可能的实现方式中,上述第二代价计算模块还包括:量化单元,用于在上述置零单元将上述n个频域变换系数中的m个频域变换系数置零之后,上述代价计算单元计算将m个频域变换系数置零对应的第二代价值之前,对上述置零后的n个频域变换系数进行量化;上述代价计算单元,具体用于:计算将上述置零后的n个频域变换系数进行量化后的第二代价值。
48.在另外一种可能的实现方式中,上述编码器还包括:预分析模块,用于基于预设代价计算规则从多个预测模式中选择目标预测模式;上述目标预测模式为上述多个预测模式中代价值最小的预测模式,不同的预测模式对应不同的预测方向和/或不同的预测值计算方法;上述块级预测模块,具体用于:在满足上述强制码率控制条件时,在上述目标预测模式下对上述待编码块进行上述块级预测,确定上述待编码块的预测残差。
49.第三方面,本技术实施例提供了一种编码器,包括:处理器和传输接口;上述处理
器用于调用存储器中存储的软件指令,以执行本技术实施例第一方面或第一方面的任意一种可能的实现方式提供的编码方法。
50.在一种可能的实现方式中,上述编码器还包括:上述存储器。
51.第四方面,本技术实施例提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得上述计算机或处理器执行本技术实施例第一方面或第一方面的任意一种可能的实现方式提供的编码方法。
52.第五方面,本技术实施例提供了一种包含指令的计算机程序产品,当其在计算机或处理器上运行时,使得上述计算机或处理器执行本技术实施例第一方面或第一方面的任意一种可能的实现方式提供的编码方法。
53.可以理解地,上述提供的第二方面提供的编码器、第三方面提供的编码器、第四方面提供的计算机存储介质,以及第五方面提供的计算机程序产品均用于执行第一方面所提供的编码方法。因此,其所能达到的有益效果可参考第一方面所提供的编码方法中的有益效果,此处不再赘述。
附图说明
54.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍。
55.图1为本技术适用的视频编码及解码系统框图;
56.图2为本技术适用的视频译码系统框图;
57.图3为本技术实施例提供的视频译码设备的结构示意图;
58.图4为申请实施例提供的块级预测模式示意图;
59.图5为本技术实施例提供的几种点级预测模式示意图;
60.图6为本技术实施例提供的一种编码方法的流程示意图;
61.图7为本技术实施例提供的另外一种编码方法的流程示意图;
62.图8为本技术实施例适用的空频域编码架构示意图;
63.图9为本技术实施例适用的另一种空频域编码架构示意图;
64.图10为本技术实施例适用的一种空域编码架构示意图;
65.图11为本技术实施例适用的频域编码架构示意图;
66.图12为本技术实施例适用的另一种频域编码架构示意图;
67.图13为本技术实施例提供的一种编码器的结构示意图。
具体实施方式
68.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
69.本技术实施例所涉及的技术方案不仅可能应用于现有的视频编码标准中(如h.264、hevc等标准),还可能应用于未来的视频编码标准中(如h.266标准)。本技术的实施方式部分使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。下面先对本技术实施例可能涉及的一些概念进行简单介绍。
70.视频编码通常是指处理形成视频或视频序列的图片序列。在视频编码领域,术语“图片(picture)”、“帧(frame)”或“图像(image)”可以用作同义词。视频编码在源侧执行,通常包括处理(例如,通过压缩)原始视频图片以减少表示该视频图片所需的数据量,从而更高效地存储和/或传输。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重建视频图片。
71.视频序列包括一系列图像(picture),图像被进一步划分为切片(slice),切片再被划分为块(block)。视频编码以块为单位进行编码处理,在一些新的视频编码标准中,块的概念被进一步扩展。比如,在h.264标准中有宏块(macroblock,mb),宏块可进一步划分成多个可用于预测编码的预测块(partition)。在高性能视频编码(high efficiency video coding,hevc)标准中,采用编码单元(coding unit,cu),预测单元(prediction unit,pu)和变换单元(transform unit,tu)等基本概念。
72.本文中,为了便于描述和理解,可将当前图像中待处理的编码块称为当前编码块或者待处理编码块,例如在编码中,指当前正在编码的块;在解码中,指当前正在解码的块。将参考图像中用于对当前块进行预测的已解码的编码块称为参考块,即参考块是为当前块提供参考信号的块,其中,参考信号表示编码块内的像素值。可将参考图像中为当前块提供预测信号的块为预测块,其中,预测信号表示预测块内的像素值或者采样值或者采样信号。例如,在遍历多个参考块以后,到了最佳参考块,此最佳参考块将为当前块提供预测,此块称为预测块。
73.无损视频编码情况下,可以重建原始视频图片,即经重建视频图片具有与原始视频图片相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)。在有损视频编码情况下,通过例如量化执行进一步压缩,来减少表示视频图片所需的数据量,而解码器侧无法完全重建视频图片,即经重建视频图片的质量相比原始视频图片的质量较低或较差。
74.下面描述本技术实施例所应用的系统架构。参见图1,图1示例性地给出了本技术实施例所应用的视频编码及解码系统10的示意性框图。如图1所示,视频编码及解码系统10可包括源设备12和目的地设备14,源设备12产生经过编码的视频数据,因此,源设备12可被称为视频编码装置。目的地设备14可对由源设备12所产生的经过编码的视频数据进行解码,因此,目的地设备14可被称为视频解码装置。源设备12、目的地设备14或两个的各种实施方案可包含一或多个处理器以及耦合到所述一或多个处理器的存储器。所述存储器可包含但不限于随机存储记忆体(random access memory,ram)、只读存储记忆体(read-only memory,rom)、电可擦可编程只读存储器(electrically erasable programmable read only memory,eeprom)、快闪存储器或可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体,如本文所描述。源设备12和目的地设备14可以包括各种装置,包含桌上型计算机、移动计算装置、笔记型(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机、无线通信设备或其类似者。
75.虽然图1将源设备12和目的地设备14绘示为单独的设备,但设备实施例也可以同时包括源设备12和目的地设备14或同时包括两者的功能性,即源设备12或对应的功能性以及目的地设备14或对应的功能性。在此类实施例中,可以使用相同硬件和/或软件,或使用单独的硬件和/或软件,或其任何组合来实施源设备12或对应的功能性以及目的地设备14或对应的功能性。
76.源设备12和目的地设备14之间可通过链路13进行通信连接,目的地设备14可经由链路13从源设备12接收经过编码的视频数据。链路13可包括能够将经过编码的视频数据从源设备12移动到目的地设备14的一或多个媒体或装置。在一个实例中,链路13可包括使得源设备12能够实时将经过编码的视频数据直接发射到目的地设备14的一或多个通信媒体。在此实例中,源设备12可根据通信标准(例如无线通信协议)来调制经过编码的视频数据,且可将经调制的视频数据发射到目的地设备14。所述一或多个通信媒体可包含无线和/或有线通信媒体,例如射频(rf)频谱或一或多个物理传输线。所述一或多个通信媒体可形成基于分组的网络的一部分,基于分组的网络例如为局域网、广域网或全球网络(例如,因特网)。所述一或多个通信媒体可包含路由器、交换器、或促进从源设备12到目的地设备14的通信的其它设备。
77.源设备12包括编码器20,另外可选地,源设备12还可以包括图片源16、图片预处理器18、以及通信接口22。具体实现形态中,所述编码器20、图片源16、图片预处理器18、以及通信接口22可能是源设备12中的硬件部件,也可能是源设备12中的软件程序。分别描述如下:
78.图片源16,可以包括或可以为任何类别的图片捕获设备,用于例如捕获现实世界图片,和/或任何类别的图片或评论(对于屏幕内容编码,屏幕上的一些文字也认为是待编码的图片或图像的一部分)生成设备,例如,用于生成计算机动画图片的计算机图形处理器,或用于获取和/或提供现实世界图片、计算机动画图片(例如,屏幕内容、虚拟现实(virtual reality,vr)图片)的任何类别设备,和/或其任何组合(例如,实景(augmented reality,ar)图片)。图片源16可以为用于捕获图片的相机或者用于存储图片的存储器,图片源16还可以包括存储先前捕获或产生的图片和/或获取或接收图片的任何类别的(内部或外部)接口。当图片源16为相机时,图片源16可例如为本地的或集成在源设备中的集成相机;当图片源16为存储器时,图片源16可为本地的或例如集成在源设备中的集成存储器。当所述图片源16包括接口时,接口可例如为从外部视频源接收图片的外部接口,外部视频源例如为外部图片捕获设备,比如相机、外部存储器或外部图片生成设备,外部图片生成设备例如为外部计算机图形处理器、计算机或服务器。接口可以为根据任何专有或标准化接口协议的任何类别的接口,例如有线或无线接口、光接口。
79.其中,图片可以视为像素点(picture element)的二维阵列或矩阵。本技术实施例中,由图片源16传输至图片处理器的图片也可称为原始图片数据17。
80.图片预处理器18,用于接收原始图片数据17并对原始图片数据17执行预处理,以获取经预处理的图片19或经预处理的图片数据19。例如,图片预处理器18执行的预处理可以包括整修、彩格式转换、调或去噪。
81.编码器20(或称视频编码器20),用于接收经预处理的图片数据19,采用相关预测模式(如本文各个实施例中的预测模式)对经预处理的图片数据19进行处理,从而提供经过编码的图片数据21(下文将进一步基于图3描述编码器20的结构细节)。在一些实施例中,编码器20可以用于执行后文所描述的各个实施例,以实现本技术所描述的编码方法。
82.通信接口22,可用于接收经编码图片数据21,并可通过链路13将经编码图片数据21传输至目的地设备14或任何其它设备(如存储器),以用于存储或直接重建,所述其它设备可为任何用于解码或存储的设备。通信接口22可例如用于将经过编码的图片数据21封装
programmable gate array,fpga)、离散逻辑、硬件或其任何组合。如果部分地以软件实施所述技术,则设备可将软件的指令存储于合适的非暂时性计算机可读存储介质中,且可使用一或多个处理器以硬件执行指令从而执行本公开的技术。前述内容(包含硬件、软件、硬件与软件的组合等)中的任一者可视为一或多个处理器。
92.在一些情况下,图1中所示视频编码及解码系统10仅为示例,本技术的技术可以适用于不必包含编码和解码设备之间的任何数据通信的视频编码设置(例如,视频编码或视频解码)。在其它实例中,数据可从本地存储器检索、在网络上流式传输等。视频编码设备可以对数据进行编码并且将数据存储到存储器,和/或视频解码设备可以从存储器检索数据并且对数据进行解码。在一些实例中,由并不彼此通信而是仅编码数据到存储器和/或从存储器检索数据且解码数据的设备执行编码和解码。
93.参见图2,图2是根据一示例性实施例的包含编码器和/或解码器的视频译码系统40的实例的说明图。视频译码系统40可以实现本技术实施例的各种技术的组合。在所说明的实施方式中,视频译码系统40可以包含成像设备41、编码器20、解码器30(和/或藉由处理电路46实施的视频编/解码器)、天线42、一个或多个处理器43、一个或多个存储器44和/或显示设备45。
94.如图2所示,成像设备41、天线42、处理电路46、编码器20、解码器30、处理器43、存储器44和/或显示设备45能够互相通信。如所论述,虽然用编码器20和解码器30绘示视频译码系统40,但在不同实例中,视频译码系统40可以只包含编码器20或只包含解码器30。
95.在一些实例中,天线42可以用于传输或接收视频数据的经编码比特流。另外,在一些实例中,显示设备45可以用于呈现视频数据。处理电路46可以包含专用集成电路(application-specific integrated circuit,asic)逻辑、图形处理器、通用处理器等。视频译码系统40也可以包含可选的处理器43,该可选处理器43类似地可以包含专用集成电路(application-specific integrated circuit,asic)逻辑、图形处理器、通用处理器等。在一些实例中,处理器43可以通过通用软件、操作系统等实施。另外,存储器44可以是任何类型的存储器,例如易失性存储器(例如,静态随机存取存储器(static random access memory,sram)、动态随机存储器(dynamic random access memory,dram)等)或非易失性存储器(例如,闪存等)等。在非限制性实例中,存储器44可以由超速缓存内存实施。
96.在一些实例中,天线42可以用于接收视频数据的经编码比特流。如所论述,经编码比特流可以包含本文所论述的与编码视频帧相关的数据、指示符、索引值、模式选择数据等,例如与编码分割相关的数据(例如,变换系数或经量化变换系数,(如所论述的)可选指示符,和/或定义编码分割的数据)。视频译码系统40还可包含耦合至天线42并用于解码经编码比特流的解码器30。显示设备45用于呈现视频帧。
97.应理解,本技术实施例中对于参考编码器20所描述的实例,解码器30可以用于执行相反过程。关于信令语法元素,解码器30可以用于接收并解析这种语法元素,相应地解码相关视频数据。在一些例子中,编码器20可以将语法元素熵编码成经编码视频比特流。在此类实例中,解码器30可以解析这种语法元素,并相应地解码相关视频数据。
98.需要说明的是,本技术实施例描述的视频图像编码方法发生在编码器20处,本技术实施例描述的视频图像解码方法发生在解码器30处,本技术实施例中的编码器20和解码器30可以是例如h.263、h.264、hevv、mpeg-2、mpeg-4、vp8、vp9等视频标准协议或者下一代
视频标准协议(如h.266等)对应的编/解码器。
99.参见图3,图3是本技术实施例提供的视频译码设备300(例如视频编码设备300或视频解码设备300)的结构示意图。视频译码设备300适于实施本文所描述的实施例。在一个实施例中,视频译码设备300可以是视频解码器(例如图1的解码器30)或视频编码器(例如图1的编码器20)。在另一个实施例中,视频译码设备300可以是上述图1的解码器30或图1的编码器20中的一个或多个组件。
100.视频译码设备300包括:用于接收数据的入口端口310和接收单元320,用于处理数据的处理器、逻辑单元或中央处理器330,用于传输数据的发射器单元340(或者简称为发射器340)和出口端口350,以及,用于存储数据的存储器360(比如内存360)。视频译码设备300还可以包括与入口端口310、接收器单元320(或者简称为接收器320)、发射器单元340和出口端口350耦合的光电转换组件和电光组件,用于光信号或电信号的出口或入口。
101.处理器330通过硬件和软件实现。处理器330可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器330与入口端口310、接收器单元320、发射器单元340、出口端口350和存储器360通信。处理器330包括译码模块370(例如编码模块370)。编码模块370实现本文中所公开的实施例,以实现本技术实施例所提供的编码方法。例如,编码模块370实现、处理或提供各种编码操作。因此,通过编码模块370为视频译码设备300的功能提供了实质性的改进,并影响了视频译码设备300到不同状态的转换。或者,以存储在存储器360中并由处理器330执行的指令来实现编码模块370。
102.存储器360包括一个或多个磁盘、磁带机和固态硬盘,可以用作溢出数据存储设备,用于在选择性地执行这些程序时存储程序,并存储在程序执行过程中读取的指令和数据。存储器360可以是易失性和/或非易失性的,可以是只读存储器、随机存取存储器、随机存取存储器(ternary content-addressable memory,tcam)和/或静态随机存取存储器。
103.接下来介绍本技术实施例中涉及的两类预测模式:块级预测、点级预测。
104.块级预测:以编码块为预测单元,当前编码块内的像素不可作为当前编码块内后续像素的参考像素。
105.点级预测:以点为预测单元,当前编码块内的像素可作为当前编码块内后续像素的参考像素。
106.以上的块级预测或点级预测中提到的参考像素的像素值可以作为当前编码块中某个像素的参考值,用于计算当前编码块中某个像素的预测值。上述参考像素的像素值可以是该参考像素的重建值。
107.以下结合图4提供的块级预测模式的示意图来进一步解释上述块级预测,并结合图5提供的几种预测模式的示意图来进一步解释上述点级预测。
108.首先,假设将待编码图像按块划分为若干个大小相等的编码块,每个编码块包含10个像素。图4和图5中的a0、a1、a2、a3、a4为编码块a中包含的5个像素(另外5个像素未示出),b1和b2为编码块b中包含的2个像素另外8个像素未示出),0、1、2、3、4、5、6、7、8、9为当前编码块包含的10个像素。图中的箭头用于表示预测方向,即箭头的起点为预测参考像素,箭头经过的像素以及箭头的终点为待预测的像素。图中箭头的方向可表征该预测模式的预测方向。
109.如图4所示,像素b1为像素5的参考像素,像素b2为像素0及6的参考像素,像素a0为
像素1和7的参考像素,像素a1为像素2和8的参考像素,像素a2为像素3和9的参考像素,像素a3为像素4的参考像素等。可以看出,当前编码块内的像素不可作为当前编码块内后续像素的参考像素。例如像素0不可作为像素6的参考像素,像素1不可作为像素7的参考像素等。此为块级预测。
110.如图5中的a所示,像素0为像素5的参考像素,像素1为像素6的参考像素,像素2为像素7的参考像素,像素3为像素8的参考像素,像素4为像素9的参考像素。可以看出,当前编码块内的像素可作为当前编码块内后续像素的参考像素,此为点级预测。
111.如图5中的b所示,像素0为像素1的参考像素,像素1为像素2的参考像素,像素7为像素8的参考像素等。可以看出,当前编码块内的像素可作为当前编码块内后续像素的参考像素,此为点级预测。
112.通过箭头的方向可以看出,图5中的a和b这两种点级预测的预测方向不同。a的预测方向为竖直方向,b的预测方向为水平方向。而图4中块级预测的预测方向为右下对角方向。
113.当然,不限于图5中示出的几种预测模式,在具体实现中还可以由其他的预测模式,不同的预测模式有不同的预测方向和/或不同的预测值计算方法。其中,预测值计算方法是指如何根据参考像素的值计算出当前编码像素的预测值。例如可以是直接将参考像素的值作为当前编码像素的预测值,也可以是将参考像素的值与该参考像素周围的其他像素的值的平均值作为当前编码像素的预测值。本技术实施例对预测模式的具体预测方向和预测值计算方法不作限定。
114.接下来结合图6介绍本技术实施例提供的一种编码方法。图6示出了本技术实施例提供的一种编码方法的流程示意图。如图6所示,编码方法至少可以包括以下几个步骤:
115.s601:在满足强制码率控制条件时,对待编码块进行比特截取。
116.可能地,强制码率控制条件可以是码流缓冲区的充盈状态达到一定程度。例如当码流缓冲区的充盈状态达到90%时,需要进行强制码率控制,强制码率控制条件即为码流缓冲区的充盈状态大于或等于90%。码流缓冲区的充盈状态通过百分比来表示。该百分比为码流缓冲区的当前已用容量与总容量的比值。不限于通过百分比来表示码流缓冲区的充盈状态,在具体实现中还可以通过数值来表示码流缓冲区的充盈状态,本技术实施例对此不限定。
117.其中,码流缓冲区可以是缓冲存储器,用来缓存编码数据,使编码数据以稳定的码率输出。可知,码流缓冲区在不同的标准中还可以有其他称呼,例如视频缓冲检验器、编码图像缓冲区等。本技术实施例对码流缓冲区的具体称呼不作限定。
118.可能地,强制码率控制条件还可以是码流缓冲区的充盈状态与预测残差大小的综合影响结果,比如当码流缓冲区的充盈状态达到一定程度(例如大于或等于90%),但预测残差均小于某一阈值(比如全0),此时仍判定为不满足强制码率控制条件。此时强制码率控制条件可以是码流缓冲区的充盈状态达到一定程度且预测存在残差大于某阈值。
119.可能地,比特截取可以是对待编码块的当前编码像素的像素值进行比特截取。以rgb颜空间为例,若每个分量均为256阶亮度,则每个分量需要8个比特来传输。比特截取可以是截取这8个比特中的部分比特。被截取的比特为被保留并传输的比特。被截取的比特位数可以由码流缓冲区的充盈状态决定。当前码流缓冲区越充盈,表明当前系统越迫切的
需要降低码率,则被截取的比特位数则越少。
120.在一些可能的实现方式中,可以截取高位比特,即将低位比特置零,保留高位比特进行传输,从而达到降低码率的效果。
121.具体地,对于幅值较高的像素而言,可以将低位比特置零,保留高位比特。假设某像素的r、g、b分量分别为240、248、241,则r分量的比特为11110000、g分量的比特为11111000、b分量的比特为11110001。以r分量为例,若根据码流缓冲区当前的充盈状态确定需要截取4位比特数,则可以截取r分量的高4位比特,即将低4位比特置零,此时对于r分量而言截取之后的亮度值并没有发生变化,依然是240。对于g分量而言,低4位比特被置零后,比特从11111000变成了11110000,即从248变成了240,亮度值并没有发生明显的变化。同理可知b分量被截取高4位比特后亮度值也不会发生明显的变化。可以看出,对于特定图像内容而言,截取高位比特可以有效降低码率,且保证图像编码质量。
122.在另外一些可能的实现方式中,可以截取低位比特,即将高位比特置零,保留低位比特进行传输。
123.具体地,对于幅值较低的像素而言,可以将高位比特置零,保留低位比特。假设某像素的r、g、b分量分别为13、6、1,则r分量的比特为00001101、g分量的比特为00000110、b分量的比特为00000001。以r分量为例,若根据码流缓冲区当前的充盈状态确定需要截取4位比特数,则可以截取r分量的低4位比特,即将高4位比特置零,此时对于r分量而言截取之后的亮度值并没有发生变化,依然是13。g分量和b分量也一样。可以看出,对于特定图像内容而言,截取低位比特可以有效降低码率,且保证图像编码质量。
124.可能地,比特截取可以是对待编码块的当前编码像素的预测残差进行比特截取。具体可以采用点级预测或者块级预测对待编码块中的每个像素进行预测,分别输出每个像素的预测残差。再对预测残差进行比特截取。其中,预测残差为原始值与预测值的差值。原始值即为当前编码像素的像素值,预测值即为当前编码像素的预测值。对预测残差的比特截取方式与对当前编码像素的像素值进行比特截取的方式类似,可以参考前述关于对当前编码像素的像素值进行比特截取的相关描述,此处不再赘述。
125.本技术实施例中可以将上述比特截取称为空域支路的强制码率控制。本技术后续实施例中将对待编码像素的像素值进行比特截取的方式称为空域支路的强制码率控制方式一,将对待编码像素的预测残差进行比特截取的方式称为空域支路的强制码率控制方式二。
126.s602:计算比特截取对应的第一代价值。
127.具体地,代价计算的方式可以包括以下任意一种:编码码率(rate,r)、编码率失真代价(rate-distortion cost,rdcost)、编码失真大小等。其中,编码失真大小可以采用sad、mad、ssd、sse、mse等测度进行衡量。本技术实施例对于代价计算方式不做限定。
128.具体地,若比特截取是对待编码块的当前编码像素的像素值进行比特截取,则第一代价值为对当前编码像素的像素值进行比特截取对应的代价值。若比特截取是对待编码块的当前编码像素的预测残差进行比特截取,则第一代价值为对待编码块的当前编码像素的预测残差进行比特截取对应的代价值。
129.s603:在满足强制码率控制条件时,还对待编码块进行预测,确定待编码块的预测残差。
130.具体地,强制码率控制条件如s601中的描述,此处不再赘述。
131.具体地,在满足上述强制码率控制条件时,还对待编码块进行预测,可以看作是频域支路的强制码率控制方式。其中,频域支路的预测可以是块级预测。具体可以采用目标预测模式对待编码块进行预测,确定原始值与预测值的差值,即为预测残差。其中,目标预测模式可以是块级预测。
132.s604:根据预测残差计算预测对应的第二代价值。
133.可能地,对待编码块进行块级预测后,可以对预测残差进行频域变换,得到预测残差的n个频域变换系数,然后将n个频域变换系数中的m1个频域变换系数置零,得到置零后的n个频域变换系数,再将置零后的n个频域变换系数进行量化。第二代价值即为将置零后的n个频域变换系数进行量化后的编码代价值。本技术实施例将变换系数置零后再进行量化,可以减少参与量化的变换系数。其中,n和m1均为正整数,且m1小于n。
134.可能地,对待编码块进行块级预测后,可以对预测残差进行频域变换,得到预测残差的n个频域变换系数,再对n个频域变换系数进行量化,将量化后的n个频域变换系数中的m2个频域变换系数置零,得到置零后的n个频域变换系数。第二代价值即为将m2个频域变换系数置零对应的编码代价值。其中,n和m2均为正整数,且m2小于n。
135.本技术实施例对量化后的变换系数置零,与将变换系数置零后再量化相比,可以保留更多的变换系数,即可以保留更多频率成分(m2可小于等于m1),有利于提高特定图像内容的图像质量。
136.可能地,对待编码块进行块级预测后,可以对预测残差进行频域变换,得到预测残差的n个频域变换系数,然后将n个频域变换系数中的m3个频域变换系数置零,而不再对变换系数进行量化。第二代价值即为将m3个频域变换系数置零对应的编码代价值。其中,将m3个频域变换系数置零可以通过量化的方式来实现。本技术实施例只需将变换系数置零,而不再额外对变换系数进行量化,可以简化计算方式,简化编码架构。本技术实施例中可以将m1、m2、m3统称为m。
137.上述被置零的变换系数的数量m可以由码流缓冲区的充盈状态决定。当前码流缓冲区越充盈,表明当前系统越迫切的需要降低码率,则被置零的变换系数的数量m越大。因为人眼对高频信号不敏感,因此被置零的系数可以是高频分量对应的变换系数,这样可以保证系数被丢弃后图像的损失不被人眼察觉。
138.以上列举的两种第二代价值对应的代价计算方式如s602中的描述,可以是编码码率、rdcost、编码失真大小等。其中,编码失真大小可以采用sad、mad、ssd、sse、mse等测度进行衡量。编码失真大小,具体可以是变换之前的残差信息与反变换之后的残差信息的差值。
139.以上将n个频域变换系数中的m(或m1或m2或m3)个频域变换系数置零的方式可以看作是频域支路的变换系数部分丢弃。
140.可能地,对待编码块进行块级预测后,直接计算编码代价值,即第二代价值即为块级预测后丢弃预测残差对应的编码代价值。这种情况下可看作对预测残差进行频域变换,得到预测残差的n个频域变换系数后,将n个频域变换系数均置零。这种方式可以看作是频域支路的变换系数全丢弃。本技术中可以将变换系数全丢弃以及变换系数部分丢弃统称为频域支路的系数丢弃。
141.以上列举的一种第二代价值对应的代价计算方式可参考s602中的描述,此处不再
赘述。
142.本技术实施例中可以将上述对变换系数置零(系数丢弃)称为频域支路的强制码率控制。本技术后续实施例可中将先对变换系数量化再丢弃部分系数的方式称为频域支路的强制码率控制方式一,将丢弃部分系数后再量化的方式称为频域支路的强制码率控制方式二,将变换系数全部丢弃的方式称为频域支路的强制码率控制方式三。
143.s605:对比第一代价值和第二代价值,确定编码比特。
144.具体地,对比第一代价值和第二代价值确定最佳的强制码率控制方式,进一步根据最佳的强制码率控制方式对待编码块进行编码,得到最终的编码比特。
145.可能地,编码比特还可以携带其编码方式,编码方式可以是上述空域支路的强制码率控制方式一、空域支路的强制码率控制方式二、频域支路的强制码率控制方式一、频域支路的强制码率控制方式二或频域支路的强制码率控制方式三等,以使解码器可以根据该编码比特的编码方式对其进行解码。
146.若确定最佳的强制码率控制方式为空域支路的强制码率控制方式一,则确定编码比特为对当前编码像素进行比特截取后的编码比特。若确定最佳的强制码率控制方式为空域支路的强制码率控制方式二,则确定编码比特为对当前编码像素的预测残差进行比特截取后的编码比特。若最佳的强制码率控制方式为频域支路的强制码率控制方式一,则确定编码比特为对置零后的变换系数进行熵编码后的编码比特。若最佳的强制码率控制方式为频域支路的强制码率控制方式二,则确定编码比特为对量化后的变换系数进行熵编码后的编码比特。若最佳的强制码率控制方式为频域支路的强制码率控制方式三,则确定编码比特为对块级预测后丢弃预测残差信息的全部为0的变换系数进行熵编码后的编码比特。可知,最终确定的编码比特必定小于码流缓冲区的输出比特,从而保证码流缓冲区不溢出。
147.具体地,根据上述编码的代价规则可以计算出第一代价值和第二代价值。通常情况下编码代价值与编码代价成正比。但不排除在某些计算规则中编码代价值与编码代价成反比,例如编码代价值为各个像素点的预测残差绝对值的倒数之和。在这种与预测残差成反比的计算规则中编码代价值与编码代价成反比。
148.本技术实施例对编码代价规则不作限定,但无论采用何种编码代价的计算规则,最佳的强制码率控制方式始终是编码代价最小的预测模式。
149.当第一代价值等于第二代价值时,可以任意选择空域比特截取的方式或者频域系数丢弃方式来控制码率,输出的编码比特即为比特截取后的编码比特或者为对变换系数进行熵编码后的编码比特。本技术实施例对代价值相等的情况下选择的强制码率控制方式不做限定。
150.本技术实施例在系统需要强制控制码率时,预估分别采用空域支路的比特截取及频域支路的系数丢弃这两种不同方式控制码率后可能的编码代价,选择编码代价较小的方式来控制码率,最终输出编码比特,使输出的有限的编码比特尽可能多的携带有用信息(即人眼容易感知的信息),在保证编码码率满足系统内存和带宽限制的前提下,提高解码图像质量。
151.接下来介绍本技术实施例提供的一种详细的编码方法。如图7所示,编码方法可以包括以下几个步骤:
152.s701:基于预设代价规则从多个预测模式中选择目标预测模式。
153.具体地,可以从多个空域预测模式中选择至少一个最佳空域预测模式,并从多个频域预测模式中选择至少一个最佳频域预测模式。具体地,空域预测模式可以是点级预测,也可以是块级预测。不同的空域预测模式对应不同的预测方向和/或不同的预测值计算方法。频域预测模式可以是块级预测。不同的频域预测模式对应不同的预测方向和/或不同的预测值计算方法。
154.具体地,至少一个最佳空域预测模式为多个空域预测模式中编码代价偏小的至少一个空域预测模式,至少一个最佳频域预测模式为多个频域预测模式中编码代价偏小的至少一个频域预测模式。应当理解,多个空域预测模式(或频域预测模式)中编码代价偏小的至少一个空域预测模式(或频域预测模式)可以为多个空域预测模式(或频域预测模式)按照编码代价从小到大排序靠前的至少一个空域预测模式(或频域预测模式),或者多个空域预测模式(或频域预测模式)按照编码代价从大到小排序靠后的至少一个空域预测模式(或频域预测模式)。本技术实施例可将s701的过程称为预分析。
155.预分析阶段的编码代价的计算规则可以是以下任意一种:残差信息的sad、残差信息的mad、残差信息的sse、残差信息的mse、编码码率r、rdcost、编码失真大小等。其中,编码失真大小可以采用sad、mad、sse、mse等测度进行衡量,残差信息为原始值与预测值的差值。
156.根据上述编码的代价规则可以计算出空域预编码及频域预编码的编码代价值。通常情况下编码代价值与编码代价成正比。但不排除在某些计算规则中编码代价值与编码代价成反比,例如编码代价值为各个像素点的预测残差绝对值的倒数之和。在这种与预测残差成反比的计算规则中编码代价值与编码代价成反比。
157.本技术实施例对预分析阶段的编码代价计算规则不作限定,但无论采用何种编码代价的计算规则,最佳预测模式始终是编码代价最小的预测模式。
158.s702:判断是否满足强制码率控制条件,若是,执行s703,若否,执行s708。
159.具体地,强制码率控制条件可以是码流缓冲区的充盈状态达到一定程度,还可以是码流缓冲区的充盈状态与预测残差大小的综合影响结果,比如当码流缓冲区的充盈状态达到一定程度(》90%),但预测残差均小于某一阈值(比如全0),此时仍判定为不满足强制码率控制条件。此时强制码率控制条件可以是码流缓冲区的充盈状态达到一定程度且预测存在残差大于某阈值。具体可参考s601中关于强制码率控制条件的描述,此处不赘述。
160.s703:对待编码块进行比特截取。
161.具体地,s703与s601一致,此处不再赘述。
162.可知,比特截取是对待编码块的当前编码像素的预测残差进行比特截取,则可以先采用s701中确定的至少一个最佳空域预测模式对待编码块进行预测,再对预测残差进行比特截取。
163.s704:计算比特截取对应的第一代价值。
164.具体地,s704与s602一致,此处不再赘述。
165.s705:对待编码块进行预测,确定待编码块的预测残差。
166.具体地,块级预测的模式可以是s701中确定的至少一个最佳频域预测模式。分别在这至少一个最佳预测模式下对待编码块进行预测,确定待编码块的至少一个预测残差。
167.s706:根据预测残差计算预测对应的第二代价值。
168.具体地,可以分别根据每个预测残差计算每个最佳频域预测模式对应的第二代价
值。每个第二代价值的计算方式与s604中的相关描述一致,此处不再赘述。
169.即每个最佳频域预测模式可以对应执行一遍s705-s706,最终得到至少一个第二代价值。
170.以上s703-s704,s705-s706可同步进行,本技术实施例对其执行顺序不作限定。
171.s707:对比第一代价值与第二代价值,确定编码比特。
172.可能地,编码比特还可以携带其编码方式,编码方式可以是上述空域支路的强制码率控制方式一、空域支路的强制码率控制方式二、频域支路的强制码率控制方式一、频域支路的强制码率控制方式二或频域支路的强制码率控制方式三等,以使解码器可以根据该编码比特的编码方式对其进行解码。
173.具体地,若存在多个第二代价值,可以将第一代价值与多个第二代价值对比,确定编码代价最小的强制码率控制方式。若编码代价最小的强制码率控制方式为比特截取,则编码比特为比特截取后的编码比特;若编码代价最小的强制码率控制方式为在某个最佳频域预测模式下对待编码块进行块级预测,则编码比特为待编码块在该最佳频域预测模式下的预测残差进行熵编码后的编码比特。
174.s708:确定第一编码量化参数qp。
175.具体地,可以根据待编码块的纹理复杂度和/或码流缓冲区的充盈状态确定第一编码qp。
176.具体地,第一编码qp可以与待编码块的纹理复杂度成正比。待编码块的纹理越复杂,第一编码qp越大;待编码块的纹理越简单,第一编码qp越小。
177.可知,待编码块的纹理复杂度越高,量化导致的图像失真越不明显,人眼越不容易感知,可以使用较大的第一编码qp降低待编码块编码后可能占用的码率。待编码块的纹理越简单,量化导致的图像失真越明显,人眼越容易感知,可以减小第一编码qp来减少失真,从而保证图像失真不被人眼感知。
178.具体地,第一编码qp可以与码流缓冲区的充盈状态成正比。码流缓冲区越充盈,第一编码qp越大;码流缓冲区越空闲,第一编码qp越小。
179.可知,码流缓冲区越充盈,为了防止码流缓冲区溢出,则需降低待编码块可能占用的码率,具体可以通过使用较大的第一编码qp来实现。码流缓冲区越空闲,表明当前码率存在盈余,可以增大待编码块可能占用的码率来增加待编码块编码后携带的图像信息,从而使解码后的图像还原度更高,具体可以通过使用较小的第一编码qp来实现。
180.在具体实现中,可以将纹理复杂度量化,并设置不同程度的纹理复杂度对应的第一编码qp。也可以将码流缓冲区的充盈状态量化,并设置不同程度的充盈状态对应的第一编码qp。
181.若第一编码qp可以由待编码块的纹理复杂度以及码流缓冲区的充盈状态共同决定,则可以将两者各自对应的第一编码qp进行整合,得到最终的第一编码qp。具体可以将两者各自对应的第一编码qp求平均,或者加权求和,得到最终的第一编码qp。两者各自占用的权重可以是根据先验信息得到的默认的权重。
182.可能地,可以根据当前已完成编码的编码块的信息统计得到编码块的纹理复杂度及第一编码qp与编码码率的对应关系。对于待编码块而言,可以根据待编码块的纹理复杂度及编码码率查上述对应关系,确定第一编码qp。其中,待编码块的编码码率可以根据码
流缓冲区当前的充盈状态确定。
183.以上列举的确定第一编码qp的方式仅为示例性说明,在具体实现中还可以由其他的确定方式,本技术实施例对此不作限定。
184.s709:分别在多种预测模式下采用第一编码qp对待编码块进行预编码,得到各个预测模式各自对应的预编码结果信息。
185.具体地,预编码可以是根据先验信息(或历史统计信息)预估待编码块编码后的结果。其中,先验信息或历史统计信息可以是当前已编码完成的编码块的信息。预编码还可以是预先对待编码块进行编码,以获取待编码块编码后的结果。
186.预编码可以包括空域预编码和频域预编码。其中,空域预编码可以包括预测、量化及代价计算。频域预编码可以包括预测、变换、量化及代价计算。最佳空域预测模式决定了待编码块的预测值,进而决定了待编码块的残差信息。最佳频域模式也决定了待编码块的预测值,进而决定了待编码块的残差信息。
187.其中,预测可以是根据预测模式对应的预测参考方向以及预测值计算方法,确定待编码块的预测值以及预测残差。
188.变换可以是对预测残差进行频域变换,以在变换域中获取变换系数。
189.空域预编码中的量化可以是以第一编码qp对预测残差进行量化。频域预编码中的量化可以是以第一编码qp对变换系数进行量化。
190.空域预编码中的代价计算可以是计算将预测残差进行量化对应的编码代价。频域预编码中代价计算可以是计算将变换系数进行量化对应的编码代价。
191.其中,预编码阶段的代价计算的方式可以包括以下任意一种:编码码率、编码率失真代价(rate-distortion cost,rdcost)、编码失真大小等。其中,编码失真大小可以采用绝对误差和(sum of absolute difference,sad)、平均绝对差(mean absolute differences,mad)、平方误差和(sum of squared difference,ssd)、差值平方和(sum of squared error,sse)、均方误差(mean squared error,mse)等测度进行衡量。
192.具体地,预编码结果信息可以包括以下至少一项:待编码块在第一编码qp下的编码比特数、待编码块在第一编码qp下的编码失真大小、待编码块在第一编码qp下的rdcost、待编码块的预测残差及待编码块的纹理复杂度。
193.对于空域预编码来说,编码失真大小可以是量化之前的残差信息与反量化之后的残差信息的差值。对于频域预编码来说,编码失真大小可以是变换之前的残差信息与反变换之后的残差信息的差值,也可以是变换之后量化之前的残差信息与反量化之后反变换之前的残差信息的差值。
194.可知,待编码块可以包括多个像素,每个像素分别对应一个残差信息的差值(量化之前与反量化之后,或者变换前与反变换之后),即待编码块可以包括多个上述残差信息的差值。编码失真大小可以是采用某种计算规则(如sad、mad、sse、mse等)将上述多个差值计算成一个值,最终得到的值即为编码失真大小。
195.率失真代价估计的目标是选择合适的编码方法,保证在码率较小的情况下得到较小的失真。率失真代价可以综合编码码率和失真大小,用来衡量图像编码的结果。率失真代价越小,表征图像编码的性能越好。rdcost=d+λ*r;其中,d为失真大小,r为码率,λ为拉格朗日优化因子,λ的取值可与第一编码qp及码流缓冲区的充盈程度正相关。
196.s710:从多个预测模式中选择最佳预测模式。
197.具体地,最佳预测模式为至少一个最佳空域预测模式及至少一个最佳频域预测模式中编码代价最小的预测模式。
198.s711:采用最佳预测模式对应的编码结果信息调整第一编码qp,得到第二编码qp。
199.具体地,不同的预测模式在预编码阶段各自对应不同的预编码结果信息。确定最佳预测模式后,可以采用最佳预测模式对应的预编码结果信息调整第一编码qp,得到第二qp。
200.可能地,编码结果信息包括待编码块在第一编码qp下的编码比特数。在编码比特数小于目标比特数的情况下,减小第一编码qp;在编码比特数大于目标比特数的情况下,增大第一编码qp。
201.其中,待编码块的目标比特数由码流缓冲区的充盈状态及码流缓冲区的输出比特数决定。码流缓冲区的充盈状态越满,待编码块的目标比特数在码流缓冲区的输出比特数的基础上减小的越多。码流缓冲区的充盈状态越空闲,待编码块的目标比特数在码流缓冲区的输出比特数的基础上增加的越多。
202.可知,码流缓冲区的输出比特数可以由编码器当前的目标码率决定。示例性地,若编码器当前的目标码率为1兆比特每秒(mbps),当前帧率为30帧每秒,每帧图像被划分为30个编码块。若为每个编码块均分码率,则当码流缓冲区的输出比特数可以是1兆比特/(30*30)。以上通过编码器的目标码率计算码率缓冲区的输出比特数的方式仅为示例性说明,在具体实现中还可以有其他的计算方式(如每个编码块并非均分码率),本技术实施例对此不做限定。
203.示例性地,码流缓冲区的输出比特数为100比特(bit),当码流缓冲区的充盈状态为50%时,目标比特数与输出比特数相等。当码流缓冲区的当前充盈状态为60%时,目标比特数为90bit;当码流缓冲区的当前充盈状态为80%时,目标比特数为70bit;当码流缓冲区的当前充盈状态为30%时,目标比特数为120bit。上述码流缓冲区的充盈状态通过百分比来表示。该百分比为码流缓冲区的当前已用容量与总容量的比值。
204.以上输出比特数、码流缓冲区的充盈状态与目标比特数的对应关系仅为示例性说明,在具体实现中还可以有其他,本技术实施例对此不作限定。
205.若预估编码后输出的编码比特数小于待编码块的目标比特数,可以减小第一编码qp来待编码块的提高码率,从而提高压缩图像的质量。若预估编码后输出的编码比特数大于待编码块的目标比特数,且码流缓冲区较充盈,说明码流缓冲区存在溢出的可能,可增大第一编码qp来降低码率,从而保证码流缓冲区不溢出。
206.可能地,编码结果信息包括待编码块在第一编码qp下的编码失真大小。在编码失真小于第一阈值的情况下,增大第一编码qp;在编码失真大于第二阈值的情况下,减小第一编码qp。
207.具体地,对于空域编码来说,编码失真大小可以是量化之前的残差信息与反量化之后的残差信息的差值。对于频域编码来说,编码失真大小可以是变换之前的残差信息与反变换之后的残差信息的差值,也可以是变换之后量化之前的残差信息与反量化之后反变换之前的残差信息的差值。
208.当编码失真小于某个阈值时,表明编码后的图像质量可观,可以增大第一编码qp
来节约编码比特数。当编码失真大于某个阈值时,表明编码后的图像质量较低,需减小第一编码qp来提升图像质量。
209.可能地,编码结果信息包括待编码块的纹理复杂度。待编码块的纹理越简单,越减小第一编码qp;预待编码块的纹理越复杂,越增大第一编码qp。
210.待编码块的纹理越简单,量化导致的图像失真越明显,人眼越容易感知,可以减小第一编码qp来提高码率,从而保证图像失真不被人眼感知。待编码块的纹理越复杂,量化导致的图像失真越不明显,人眼越不容易感知,可增大第一编码qp来降低码率。
211.可知,在以待编码块的纹理复杂度调整第一编码qp时,待编码块的纹理复杂度可以根据s701中各个预测模式对应的预测残差确定。具体地,预测残差较小的预测模式的预测方向可以在一定程度上表征待编码块的纹理信息。不限于预测残差,在具体实现中还可以由其他的方式确定待编码块的纹理复杂度,本技术实施例对此不作限定。
212.可能地,编码结果信息包括待编码块的预测残差。在预测残差绝对值均小于第三阈值的情况下,减小第一编码qp;在预测残差绝对值均大于第四阈值的情况下,增大第一编码qp。
213.预测残差可以反映待编码块的纹理复杂度。预测残差越小,表明待编码块的纹理越简单,预测残差越大,表明待编码块的纹理越复杂。而待编码块的纹理越简单,量化导致的图像失真越明显,人眼越容易感知,可以减小第一编码qp减小失真,从而保证图像失真不被人眼感知。待编码块的纹理越复杂,量化导致的图像失真越不明显,人眼越不容易感知,可增大第一编码qp来降低码率。
214.可能地,编码结果信息可以包括以上任意两项或多项。具体可以确定每一项各自对应的第一编码qp的调节量,再根据各项占的权重计算第一编码qp的最终调节量,从而获得第二qp。
215.s712:在最佳预测模式下采用第二编码qp对待编码块进行实编码。
216.具体地,若最佳预测模式为最佳空域预测模式,则采用最佳空域模式对待编码块进行预测,输出预测值及预测残差,再对该预测残差进行量化、熵编码等。
217.若最佳预测模式为最佳频域预测模式,则采用最佳频域模式对待编码块进行预测,输出预测值及预测残差,再对该预测残差进行变换、量化、熵编码等。
218.具体地,预测可以是根据预测模式对应的预测参考方向以及预测值计算方法,确定待编码块的预测值以及预测残差。
219.变换可以是对预测残差进行频域变换,以在变换域中获取变换系数。
220.空域预编码中的量化可以是以第一编码qp对预测残差进行量化。频域预编码中的量化可以是以第一编码qp对变换系数进行量化。
221.熵编码可以是按照熵原理不丢失任何信息的编码,通常采用香农编码、哈夫曼编码或算数编码等方式对量化后的预测残差(空域实编码)或量化后的变换系数(频域实编码)进行编码。
222.s713:输出编码比特至码流缓冲区。
223.具体地,s707或s712后,均可输出编码比特至码流缓冲区。此时码流缓冲区的充盈状态可能发生变化。码流缓冲区的充盈状态可进一步影响s702及s711。码流缓冲区的充盈状态与s702的关系在s601及s702中均有说明,此处不再赘述。码流缓冲区的充盈状态与
s711的关系在s711中也有说明,此处不再赘述。
224.本技术实施例可以在系统需要强制控制码率时,预估分别采用空域支路的比特截取及频域支路的系数丢弃这两种不同方式控制码率后可能的编码代价,选择编码代价较小的方式来控制码率,最终输出编码比特,使输出的有限的编码比特尽可能多的携带有用信息(即人眼容易感知的信息),在保证编码码率满足系统内存和带宽限制的前提下,提高解码图像质量。本技术实施例还可以在系统不需要强制控制码率时,通过预分析分别对空域和频域支路提供多种预测模式,可以使无需采用以块为单位的预测操作(即空域编码中的预测操作)实现更加精细的点级预测(即当前预测块内的重建值可以作为当前预测块内后续像素点的预测参考值),进而可以通过更精细的点级预测提升图像压缩性能。进一步地,本技术实施例还可以通过两级码率控制实现更加精细的码率控制,合理利用码率传递质量更好的图像数据,提升图像压缩的性能。
225.接下来结合图7提供的编码方法,介绍本技术实施例提供的两种空频域编码架构。图8介绍了一种空频域编码架构,均可用于执行图7提供的编码方法。
226.如图8所示,空频域编码架构可以包括以下几个部分:
227.预分析801,可以基于预设代价规则从多个预测模式中选择目标预测模式。具体可以从多个空域预测模式中选择至少一个最佳空域预测模式,并从多个频域预测模式中选择至少一个最佳频域预测模式。具体可参考s701的描述,此处不再赘述。
228.强制码控条件判断802,用于判断当前是否满足强制码率控制条件。具体可参考s702的描述,此处不再赘述。若满足强制码率控制条件,则同时通过一条空域支路及一条频域支路来强制控制码率。以下分别介绍两条空域支路以及两条频域支路。在具体实现中,该空频域编码架构可以从两条空域支路中选择一条空域支路,并从两条频域支路中选择一条频域支路来强制控制码率。
229.空域支路一可以包括以下几个部分:比特截取803、代价计算1 804。空域支路二可以包括以下几个部分:预测1 803a、比特截取803、代价计算1 804。
230.对于空域支路一而言:比特截取803,可以用于在满足强制码率控制条件的情况下对待编码块中的当前编码像素的像素值进行比特截取。具体可以参考s601中的相关描述,此处不赘述。
231.代价计算1 804,可以用于计算比特截取对应的第一代价值。具体可参考s602中的相关描述,此处不赘述。
232.对于空域支路二而言:
233.预测1 803a,可以用于采用预分析801中确定的至少一个最佳空域预测模式对待编码块进行预测,得到预测残差。其中,最佳空域预测模式可以是点级预测,也可以是块级预测。
234.比特截取803,可以用于对预测残差进行比特截取。具体可参考s601中的相关描述,此处不赘述。
235.代价计算1 804,可以用于计算对预测残差进行比特截取对应的第一代价值。具体可参考s602中的相关描述,此处不赘述。
236.可能地,当执行空域支路的强制码率控制时,可以对比上述空域支路一与空域支路二的编码代价,选择编码代价较小的支路执行空域支路的强制码率控制。
237.频域支路一可以包括以下几个部分:预测2 805、变换806、量化807a、系数丢弃808a、代价计算2 809。频域支路二可以包括以下几个部分:预测2 805、变换806、系数丢弃807b、量化808b、代价计算2 809。
238.对于频域支路一而言:
239.预测2 805,可以用于在满足强制码率控制条件的情况下执行频域支路的强制码率控制。具体可以对待编码块进行块级预测,确定待编码块的预测残差。其中,块级预测的预测模式可以是预分析801中确定的最佳频域预测模式。具体可参考s603的描述,此处不赘述。
240.变换806,可以用于对待编码块的预测残差进行频域变换,得到预测残差的n个频域变换系数。
241.量化807a,可以用于对预测残差的n个频域变换系数进行量化。
242.系数丢弃808a,可以用于对量化后的n个频域变换系数中的m个频域变换系数置零,得到置零后的n个频域变换系数。其中,n和m均为正整数,且m小于n。
243.代价计算2 809,可以用于计算将m个频域变换系数置零对应的第二代价值。
244.上述被置零的变换系数的数量m可以由码流缓冲区的充盈状态决定。当前码流缓冲区越充盈,表明当前系统越迫切的需要降低码率,则被置零的变换系数的数量m越大。因为人眼对高频信号不敏感,因此被置零的系数可以是高频分量对应的变换系数,这样可以保证系数被丢弃后图像的损失不被人眼察觉。
245.对于频域支路二而言:预测2 805,可以用于在满足强制码率控制条件的情况下执行频域支路的强制码率控制。具体可以对待编码块进行块级预测,确定待编码块的预测残差。其中,块级预测的预测模式可以是预分析801中确定的最佳频域预测模式。具体可参考s603的描述,此处不赘述。
246.变换806,可以用于对待编码块的预测残差进行频域变换,得到预测残差的n个频域变换系数。
247.系数丢弃807b,可以用于对预测残差的n个频域变换系数中的m个频域变换系数置零,得到置零后的n个频域变换系数。其中,n和m均为正整数,且m小于n。
248.量化808b,可以用于对置零后的n个频域变换系数进行量化。
249.代价计算2 809,则可以用于计算将置零后的n个频域变换系数进行量化后的编码代价值,即第二编码代价值。本技术实施例将变换系数置零后再进行量化,可以减少参与量化的变换系数。
250.频域支路一与频率支路二相比,由于先对变换系数进行量化后再丢弃,可以保留更多的频率成分,有利于提高特定图像内容的图像质量。
251.可能地,当执行频域支路的强制码率控制时,可以对比上述频域支路一与频域支路二的编码代价,选择编码代价较小的支路执行频域支路的强制码率控制。
252.以上代价计算1和代价计算2采用的代价计算方式可参考s602中的相关描述,此处不再赘述。
253.代价比较810,可以用于对比第一代价值和第二代价值。若是,就输出比特截取后的剩余比特至码流缓冲区;若否,就对置零后的n个频域变换系数(频域支路一)或者对量化后的n个频域变换系数(频域支路二)进行熵编码。具体可参考s605的相关描述,此处不赘
述。
254.熵编码811,可以用于对置零后的n个频域变换系数(频域支路一)或者对量化后的n个频域变换系数(频域支路二)进行熵编码,输出编码后的比特至码流缓冲区819。
255.码率控制1 812,可以用于在不满足强制码率控制条件的情况下,确定第一编码qp。具体可参考s708的描述,此处不再赘述。
256.空域预编码813,可以用于在预分析801中确定的至少一个最佳空域预测模式下采用第一编码qp对待编码块进行空域预编码。空域预编码可以包括预测、量化及代价计算。具体可参考s709中的相关描述,此处不再赘述。
257.频域预编码814,可以用于在预分析801中确定的至少一个最佳频域预测模式下采用第一编码qp对待编码块进行频域预编码。频域预编码可以包括预测、变换、量化及代价计算。具体可参考s709中的相关描述,此处不再赘述。
258.压缩域决策815,可以用于上述至少一个最佳空域预测模式及至少一个最佳频域预测模式中选择编码代价最小的预测模式。具体可参考s710中的描述,此处不再赘述。
259.码率控制2 816,可以用于采用最佳预测模式对应的编码结果信息调整第一编码qp,得到第二编码qp。具体可参考s711中的描述,此处不再赘述。
260.空域实编码817,用于在压缩域决策815中确定最佳预测模式为空域预测模式后,在该最佳预测模式下采用第二编码qp进行空域实编码,输出空域实编码后的编码比特至码流缓冲区819。具体可参考s712中的描述,此处不再赘述。
261.频域实编码818,用于在压缩域决策815中确定最佳预测模式为频域预测模式后,在该最佳预测模式下采用第二编码qp进行频域实编码,输出频域实编码后的编码比特至码流缓冲区819。具体可参考s712中的描述,此处不再赘述。
262.码流缓冲区819,可以用于接收空域实编码817或频域实编码818输出的编码比特,还可以用于接收比特截取后输出的剩余比特或对置零后的n个频域变换系数进行熵编码得到的编码比特。此外,码流缓冲区819还可以作用于802及816,码流缓冲区819与802的关系在s601及s702中均有说明,此处不再赘述。码流缓冲区819与802的关系在s711中也有说明,此处不再赘述。
263.可能地,不限于上述频域支路一或频域支路二提供的频域支路的强制码率控制方式,在具体实现中还可以通过如下方式实现频域支路的强制码率控制:
264.对待编码块进行块级预测后,可以对预测残差进行频域变换,得到预测残差的n个频域变换系数,然后将n个频域变换系数中的m个频域变换系数置零,而不再对变换系数进行量化。第二代价值即为将m个频域变换系数置零对应的编码代价值。其中,将个频域变换系数置零可以通过量化的方式来实现。本技术实施例只需将变换系数置零,而不再额外对变换系数进行量化,可以简化计算方式,简化编码架构。
265.图9提供了另外一种空频域编码架构。如图9所示,空频域编码架构与图8提供的空频域编码架构除了强制码率控制的频域支路(频域支路三)不同,其他部分均一致。以下仅介绍不同之处,相同之处可参考图8的描述,此处均不赘述。
266.频域支路三可以包括以下几个部分:预测2 905、代价计算2 906。
267.预测2 905,可以用于对待编码块进行块级预测,输出预测残差。
268.代价计算2 906,可以用于计算块级预测后丢弃预测残差对应的第二代价值。
269.也即是说,图9示出的空频域编码架构在频域支路的强制码率控制中将变换系数全部丢弃(即全0系数),后续可直接对量化后的预测残差(全0系数)进行熵编码,输出编码比特至码流缓冲区916。这样可以简化编码架构,减小计算量,提升编码效率。
270.在这种编码架构下,代价计算2的代价计算方式可参考s602中的描述,此处不再赘述。
271.不限于空频域编码架构,本技术实施例提供的编码方法还可以适用于空域编架构。接下来结合图10介绍本技术实施例提供的空域编码架构。
272.如图10所示,空域编码架构可以包括以下几个部分:
273.强制码控条件判断1001,用于判断当前是否满足强制码率控制条件。具体可参考s702的描述,此处不再赘述。若满足强制码率控制条件,则同时通过一条空域支路及一条频域支路来强制控制码率。以下介绍两条空域支路以及一条频域支路。在具体实现中,该空域编码架构可以从两条空域支路中选择一条空域支路来强制控制码率。
274.空域支路一可以包括以下几个部分:比特截取1002、代价计算1 1003。空域支路二可以包括以下几个部分:预测1 1002a、比特截取1002、代价计算1 1003。
275.空域支路一与图8中涉及的空域支路一类似,空域支路二与图8中涉及的空域支路二类似,此处均不再赘述。
276.可能地,当执行空域支路的强制码率控制时,可以对比上述空域支路一与空域支路二的编码代价,选择编码代价较小的支路执行空域支路的强制码率控制。
277.频域支路可以包括以下几个部分:预测2 1004、代价计算2 1005。频域支路与图9中涉及的频域支路三类似,此处不再赘述。
278.代价比较1006,与代价比较810一致,此处不再赘述。
279.熵编码1007,可以用于对预测残差(全0系数)进行熵编码,输出编码比特至码流缓冲区1012。
280.预测1008,可以用于在不满足在强制码率控制条件的情况下,对待编码块进行点级预测或者块级预测,得到预测残差。
281.码率控制1009,可以用于根据待编码块的纹理复杂度和/或码流缓冲区的充盈状态确定编码qp。具体可参考s708中的相关描述,此处不再赘述。
282.量化1010,可以用于采用码率控制1009确定的编码qp对预测1008输出的预测残差进行量化。
283.熵编码1011,可以用于对量化1010输出的量化后的预测残差进行熵编码,输出编码比特至码流缓冲区1012。
284.码流缓冲区1012,可以进一步影响1001和码率控制1009。码流缓冲区1012与1001的关系在s601及s702中均有说明,此处不再赘述。码流缓冲区1012与码率控制1009的关系可参考s708中关于码流缓冲区的充盈状态与第一编码qp的关系的相关描述,此处不再赘述。
285.不限于空频域编码架构及空域编码架构,本技术实施例提供的编码方法还可以适用于频域编架构。图11及图12提供了几种频域编码架构。
286.如图11所示,频域编码架构可以包括以下几个部分:
287.强制码控条件判断1101,与强制码控条件判断802一致,若满足强制码率控制条
件,则同时通过一条空域支路及一条频域支路来强制控制码率。以下分别介绍两条空域支路以及两条频域支路。在具体实现中,该空频域编码架构可以从两条空域支路中选择一条空域支路,并从两条频域支路中选择一条频域支路来强制控制码率。
288.空域支路一可以包括以下几个部分:比特截取1102、代价计算1 1103。空域支路二可以包括以下几个部分:预测1 1102a、比特截取1102、代价计算1 1103。
289.空域支路一与图8中涉及的空域支路一类似,空域支路二与图8中涉及的空域支路二类似,此处均不再赘述。
290.可能地,当执行空域支路的强制码率控制时,可以对比上述空域支路一与空域支路二的编码代价,选择编码代价较小的支路执行空域支路的强制码率控制。
291.频域支路一可以包括以下几个部分:预测2 1104、变换1105、量化1106a、系数丢弃1107a、代价计算2 1108。频域支路二可以包括以下几个部分:预测2 1104、变换1105、系数丢弃1106b、量化1107b、代价计算2 1108。
292.频域支路一与图8中涉及的频域支路一类似,频域支路二与图8中涉及的空域支路二类似,此处均不再赘述。
293.可能地,当执行频域支路的强制码率控制时,可以对比上述频域支路一与频域支路二的编码代价,选择编码代价较小的支路执行频域支路的强制码率控制。
294.代价计算2 1108,与代价计算2 809一致,此处不再赘述。
295.代价比较1109,与代价比较810一致,此处不再赘述。
296.熵编码1110,与熵编码811一致,此处不再赘述。
297.预测1111,可以用于在不满足在强制码率控制条件的情况下,对待编码块进行块级预测,得到预测残差。
298.变换1112,可以用于对待编码块的预测残差进行频域变换,输出变换后的预测残差。
299.码率控制1113,与码率控制1009一致,此处不再赘述。
300.量化1114,可以用于采用码率控制1113确定的编码qp对变换1112输出的变换后的预测残差进行量化。
301.熵编码1115,与熵编码1007一致,此处不再赘述。
302.码流缓冲区1116,与码流缓冲区1012一致,此处不再赘述。
303.可能地,不限于上述频域支路一或频域支路二提供的频域支路的强制码率控制方式,在具体实现中还可以通过如下方式实现频域支路的强制码率控制:
304.对待编码块进行块级预测后,可以对预测残差进行频域变换,得到预测残差的n个频域变换系数,然后将n个频域变换系数中的m个频域变换系数置零,而不再对变换系数进行量化。第二代价值即为将m个频域变换系数置零对应的编码代价值。其中,将m个频域变换系数置零可以通过量化的方式来实现。本技术实施例只需将变换系数置零,而不再额外对变换系数进行量化,可以简化计算方式,简化编码架构。
305.图12提供了另外一种频域编码架构。如图12所示,频域编码架构与图11提供的频域编码架构除了强制码率控制的频域支路(频域支路三)不同,其他部分均一致。以下仅介绍不同之处,相同之处可参考图11的描述,此处均不赘述。
306.频域支路三可以包括以下几个部分:预测2 1204、代价计算2 1205。频域支路三与
图9中涉及的频域支路三类似,此处不再赘述。
307.也即是说,图12示出的频域编码架构在频域支路的强制码率控制中将变换系数全部丢弃(即全0系数),后续可直接对量化后的预测残差(全0系数)进行熵编码,输出编码比特至码流缓冲区1213。这样可以简化编码架构,减小计算量,提升编码效率。
308.本技术实施例还提供了一种编码器,如图13所示,编码器130至少可以包括:比特截取模块1301、第一代价计算模块1302、预测模块1303、第二代价计算模块1304及对比确定模块1305。其中:
309.比特截取模块1301,可以用于在满足强制码率控制条件时,对待编码块进行比特截取。具体可参考s601的描述,此处不赘述。
310.第一代价计算模块1302,可以用于计算比特截取对应的第一代价值。具体可参考s602的描述,此处不赘述。
311.预测模块1303,可以用于在满足强制码率控制条件时,对待编码块进行块级预测,确定所述待编码块的预测残差。具体可参考s603的描述,此处不赘述。
312.第二代价计算模块1304,可以用于根据预测残差计算块级预测对应的第二代价值。具体可参考s604的描述,此处不赘述。
313.对比确定模块1305,可以用于对比第一代价值与第二代价值,确定编码比特。具体可参考s605的描述,此处不赘述。
314.在一种可能的实施例中,编码器130还可以包括:判断模块1306、第一码率控制模块1307、预编码模块1308、编码域决策模块1309、第二码率控制模块1310及实编码模块1311。其中:
315.判断模块1306,可以用于判断是否满足强制码率控制条件。具体可参考s702的描述,此处不赘述。
316.第一码率控制模块1307,可以用于在不满足强制码率控制条件时,确定第一编码量化参数qp。具体可参考s708的描述,此处不赘述。
317.预编码模块1308,可以用于分别在多种预测模式下采用第一编码qp对所述待编码块进行预编码,得到各个预测模式各自对应的预编码结果信息。具体可参考s709的描述,此处不赘述。
318.编码域决策模块1309,可以用于从多个预测模式中选择最佳预测模式。具体可参考s710的描述,此处不赘述。
319.第二码率控制模块1310,可以用于采用最佳预测模式对应的编码结果信息调整第一编码qp,得到第二编码qp。具体可参考s711的描述,此处不赘述。
320.实编码模块1311,可以用于在最佳预测模式下采用第二编码qp对待编码块进行实编码。具体可参考s712的描述,此处不赘述。
321.在一种可能的实施例中,编码器130还包括:输出模块1312,可以用于输出编码比特至码流缓冲区。具体可参考s713的描述,此处不赘述。
322.判断模块1306,具体可以用于:根据码流缓冲区的充盈状态判断是否满足强制码率控制条件。具体可参考s702的描述,此处不赘述。
323.第二码率控制模块1310,具体可以用于:根据码流缓冲区的充盈状态及最佳预测模式对应的编码结果信息调整第一编码qp。具体可参考s711的描述,此处不赘述。
324.在一种可能的实施例中,对比确定模块1305,具体可以用于:在第一代价值小于第二代价值的情况下,确定编码比特为所述比特截取后的编码比特。
325.在一种可能的实施例中,对比确定模块1305,具体可以用于:在比第一代价值大于第二代价值的情况下,确定编码比特为对预测残差进行熵编码后的编码比特。
326.在一种可能的实施例中,第二代价计算模块1304,可以包括:变换单元、置零单元、代价计算单元。其中:
327.变换单元,可以用于对预测残差进行频域变换,得到预测残差的n个频域变换系数,n为正整数。
328.置零单元,可以用于将n个频域变换系数中的m个频域变换系数置零,得到置零后的n个频域变换系数,m为小于n的正整数。
329.代价计算单元,可以用于计算将m个频域变换系数置零对应的第二代价值。
330.对比确定模块1305,具体可以用于:在第一代价值大于第二代价值的情况下,确定编码比特为对置零后的n个频域变换系数进行熵编码后的编码比特。
331.在一种可能的实施例中,第二代价计算模块1304,还可以包括:量化单元,用于在变换单元对预测残差进行频域变换,得到预测残差的n个频域变换系数之后,置零单元将n个频域变换系数中的m个频域变换系数置零之前,对n个频域变换系数进行量化,得到n个量化后的频域变换系数。
332.置零单元,具体可以用于:将n个量化后频域变换系数中的m个频域变换系数置零。
333.在一种可能的实施例中,第二代价计算模块1304还可以包括:量化单元,用于在置零单元将n个频域变换系数中的m个频域变换系数置零之后,代价计算单元计算将m个频域变换系数置零对应的第二代价值,对置零后的n个频域变换系数进行量化。
334.代价计算单元,具体可以用于:计算将置零后的n个频域变换系数进行量化后的第二代价值。
335.在一种可能的实施例中,编码器还包括:预分析模块1313,可以用于基于预设代价计算规则从多个预测模式中选择目标预测模式。目标预测模式为多个预测模式中代价值最小的预测模式,不同的预测模式对应不同的预测方向及不同的预测值计算方法。
336.预测模块1303,具体可以用于:在满足强制码率控制条件时,在目标预测模式下对待编码块进行预测,确定待编码块的预测残差。
337.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述信号处理装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
338.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红
外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
339.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、rom或随机存储记忆ram等。
340.本技术实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
341.本技术实施例装置中的模块可以根据实际需要进行合并、划分和删减。
342.以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。

技术特征:


1.一种编码方法,其特征在于,包括:在满足强制码率控制条件时,对待编码块进行比特截取;计算所述比特截取对应的第一代价值;根据所述第一代价值确定编码比特。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在满足所述强制码率控制条件时,还对所述待编码块进行预测,确定所述待编码块的预测残差;根据所述预测残差计算所述预测对应的第二代价值;所述根据所述第一代价值确定编码比特包括:对比所述第一代价值与所述第二代价值,确定编码比特。3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:在不满足所述强制码率控制条件时,确定第一编码量化参数qp;分别在多种预测模式下采用所述第一编码qp对所述待编码块进行预编码,得到各个预测模式各自对应的预编码结果信息;从所述多种预测模式中选择最佳预测模式;采用所述最佳预测模式对应的编码结果信息调整所述第一编码qp,得到第二编码qp;在所述最佳预测模式下采用所述第二编码qp对所述待编码块进行实编码。4.如权利要求3所述的方法,其特征在于,所述确定编码比特后,所述方法还包括:输出所述编码比特至码流缓冲区;所述判断是否满足强制码率控制条件,包括:根据所述码流缓冲区的充盈状态判断是否满足所述强制码率控制条件;所述采用所述最佳预测模式对应的编码结果信息调整所述第一编码qp,包括:根据所述码流缓冲区的充盈状态及所述最佳预测模式对应的编码结果信息调整所述第一编码qp。5.如权利要求1-4任一项所述的方法,其特征在于,所述对比所述第一代价值与所述第二代价值,确定编码比特,具体包括:在所述第一代价值小于所述第二代价值的情况下,确定所述编码比特为所述比特截取后的编码比特。6.如权利要求1-5任一项所述的方法,其特征在于,所述对比所述第一代价值与所述第二代价值,确定编码比特,具体包括:在所述第一代价值大于所述第二代价值的情况下,确定所述编码比特为对所述预测残差进行熵编码后的编码比特。7.如权利要求1-6任一项所述的方法,其特征在于,所述根据所述预测残差计算所述预测对应的第二代价值,包括:对所述预测残差进行频域变换,得到所述预测残差的n个频域变换系数,所述n为正整数;将所述n个频域变换系数中的m个频域变换系数置零,得到置零后的n个频域变换系数,所述m为小于n的正整数;计算将m个频域变换系数置零对应的第二代价值;所述对比所述第一代价值与所述第二代价值,确定编码比特,具体包括:在所述第一代价值大于所述第二代价值的情况下,确定所述编码比特为对所述置零后
的n个频域变换系数进行熵编码后的编码比特。8.如权利要求7所述的方法,其特征在于,所述对所述预测残差进行频域变换,得到所述预测残差的n个频域变换系数之后,所述将所述n个频域变换系数中的m个频域变换系数置零之前,所述方法还包括:对所述n个频域变换系数进行量化,得到n个量化后的频域变换系数;所述将所述n个频域变换系数中的m个频域变换系数置零,包括:将所述n个量化后频域变换系数中的m个频域变换系数置零。9.如权利要求7所述的方法,其特征在于,所述将所述n个频域变换系数中的m个频域变换系数置零之后,所述计算将m个频域变换系数置零对应的第二代价值之前,所述方法还包括:对所述置零后的n个频域变换系数进行量化;所述计算将m个频域变换系数置零对应的第二代价值,包括:计算将所述置零后的n个频域变换系数进行量化后的第二代价值。10.如权利要求1-9任一项所述的方法,其特征在于,所述在满足所述强制码率控制条件时,还对所述待编码块进行预测,确定所述待编码块的预测残差之前,所述方法还包括:基于预设代价计算规则从多个预测模式中选择目标预测模式;所述目标预测模式为所述多个预测模式中代价值最小的预测模式,不同的预测模式对应不同的预测方向和/或不同的预测值计算方法;所述在满足所述强制码率控制条件时,还对所述待编码块进行预测,确定所述待编码块的预测残差,包括:在满足所述强制码率控制条件时,还在所述目标预测模式下对所述待编码块进行预测,确定所述待编码块的预测残差。11.一种强制码率控制方法,其特征在于,确定编码方式,所述编码方式包括以下任意一种:对待编码块的当前编码像素的像素值进行比特截取,对待编码像素的预测残差进行比特截取,先对频域变换系数量化再丢弃部分系数;丢弃部分频域变换系数后再量化;根据所述编码方式确定编码比特。12.根据权利要求11所述的方法,其特征在于,若编码方式为对待编码块的当前编码像素的像素值进行比特截取,所述编码比特为所述比特截取后的编码比特。13.根据权利要求11所述的方法,其特征在于,若编码方式为对待编码块的当前编码像素的像素值进行比特截取,所述编码比特为对所述预测残差进行熵编码后的编码比特。14.根据权利要求11所述的方法,其特征在于,所述先对频域变换系数量化再丢弃部分系数,包括:对所述预测残差进行频域变换,得到所述预测残差的n个频域变换系数,所述n为正整数;对上述n个频域变换系数进行量化,得到n个量化后的频域变换系数;将上述n个量化后频域变换系数中的m个频域变换系数置零,所述m为小于n的正整数。15.根据权利要求11所述的方法,其特征在于,所述丢弃部分频域变换系数后再量化,包括:对所述预测残差进行频域变换,得到所述预测残差的n个频域变换系;将所述n个频域变换系数中的m个频域变换系数置零;对上述置零后的n个频域变换系数进行量化。16.根据权利要求14或15所述的方法,其特征在于,若所述编码方式为先对频域变换系
数量化再丢弃部分系数,或为丢弃部分频域变换系数后再量化,所述编码比特为对上述置零后的n个频域变换系数进行熵编码后的编码比特。17.一种编码器,其特征在于,包括:比特截取模块,用于在满足强制码率控制条件时,对待编码块进行比特截取;第一代价计算模块,用于计算所述比特截取对应的第一代价值;对比确定模块,用于根据所述第一代价值确定编码比特。18.根据权利要求17所述的编码器,特征在于,所述编码器还包括:块级预测模块,用于在满足所述强制码率控制条件时,对所述待编码块进行预测,确定所述待编码块的预测残差;第二代价计算模块,用于根据所述预测残差计算所述预测对应的第二代价值;所述对比确定模块,用于对比所述第一代价值和所述第二代价值,确定编码比特。19.如权利要求17或18所述的编码器,其特征在于,所述编码器还包括:判断模块,用于判断是否满足所述强制码率控制条件;第一码率控制模块,用于在不满足所述强制码率控制条件时,确定第一编码量化参数qp;预编码模块,用于分别在多种预测模式下采用所述第一编码qp对所述待编码块进行预编码,得到各个预测模式各自对应的预编码结果信息;选择模块,用于从所述多种预测模式中选择最佳预测模式;第二码率控制模块,用于采用所述最佳预测模式对应的编码结果信息调整所述第一编码qp,得到第二编码qp;实编码模块,用于在所述最佳预测模式下采用所述第二编码qp对所述待编码块进行实编码。20.如权利要求19所述的编码器,其特征在于,所述编码器还包括:输出模块,用于输出所述编码比特至码流缓冲区;所述判断模块,具体用于:根据所述码流缓冲区的充盈状态判断是否满足所述强制码率控制条件;所述第二码率控制模块,具体用于:根据所述码流缓冲区的充盈状态及所述最佳预测模式对应的编码结果信息调整所述第一编码qp。21.如权利要求17-19任一项所述的编码器,其特征在于,所述对比确定模块,具体用于:在所述第一代价值小于所述第二代价值的情况下,确定所述编码比特为所述比特截取后的编码比特。22.如权利要求17-21任一项所述的编码器,其特征在于,所述对比确定模块,具体用于:在所述第一代价值大于所述第二代价值的情况下,确定所述编码比特为对所述预测残差进行熵编码后的编码比特。23.如权利要求17-22任一项所述的编码器,其特征在于,所述第二代价计算模块,包括:变换单元,用于对所述预测残差进行频域变换,得到所述预测残差的n个频域变换系数,所述n为正整数;置零单元,用于将所述n个频域变换系数中的m个频域变换系数置零,得到置零后的n个
频域变换系数,所述m为小于n的正整数;代价计算单元,用于计算将m个频域变换系数置零对应的第二代价值;所述对比确定模块,具体用于:在所述第一代价值大于所述第二代价值的情况下,确定所述编码比特为对所述置零后的n个频域变换系数进行熵编码后的编码比特。24.如权利要求23所述的编码器,其特征在于,所述第二代价计算模块还包括:量化单元,用于在所述变换单元对所述预测残差进行频域变换,得到所述预测残差的n个频域变换系数之后,所述置零单元将所述n个频域变换系数中的m个频域变换系数置零之前,对所述n个频域变换系数进行量化,得到n个量化后的频域变换系数;所述置零单元,具体用于:将所述n个量化后频域变换系数中的m个频域变换系数置零。25.如权利要求23所述的编码器,其特征在于,所述第二代价计算模块还包括:量化单元,用于在所述置零单元将所述n个频域变换系数中的m个频域变换系数置零之后,所述代价计算单元计算将m个频域变换系数置零对应的第二代价值之前,对所述置零后的n个频域变换系数进行量化;所述代价计算单元,具体用于:计算将所述置零后的n个频域变换系数进行量化后的第二代价值。26.如权利要求17-25任一项所述的编码器,其特征在于,所述编码器还包括:预分析模块,用于基于预设代价计算规则从多个预测模式中选择目标预测模式;所述目标预测模式为所述多个预测模式中代价值最小的预测模式,不同的预测模式对应不同的预测方向和/或不同的预测值计算方法;所述预测模块,具体用于:在满足所述强制码率控制条件时,在所述目标预测模式下对所述待编码块进行预测,确定所述待编码块的预测残差。27.一种编码器,其特征在于,包括:处理器和传输接口;所述处理器用于调用存储器中存储的软件指令,以执行如权利要求1-9任一项所述的编码方法。28.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求1至10任一项所述的方法,或使得所述计算机或处理器执行如权利要求11至16任一项所述的方法。29.一种包含指令的计算机程序产品,当其在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求1至10任一项所述的方法,或使得所述计算机或处理器执行如权利要求11至16任一项所述的方法。

技术总结


本申请涉及图像处理领域,提供了一种编码方法及编码器。该方法包括:在满足强制码率控制条件时,同时对待编码块进行空域支路的比特截取及频域支路的系数丢弃,并计算比特截取和系数丢弃分别对应的代价值,根据两者的代价值确定最终的编码比特,在防止码流缓冲区溢出的前提下尽可能地提高解码图像质量。前提下尽可能地提高解码图像质量。前提下尽可能地提高解码图像质量。


技术研发人员:

冯俊凯 曲波 王丽萍

受保护的技术使用者:

上海海思技术有限公司

技术研发日:

2019.12.31

技术公布日:

2022/11/15

本文发布于:2024-09-20 13:42:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/3535.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系数   所述   支路   空域
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议