本技术涉及图像编解码领域,尤其涉及一种图像编解码方法、装置及存储介质
背景技术:
1、高速视频传输接口场景下,硬件资源有限,无法使用过于复杂的码控算法,但是过于简单的码控算法又很难实现无损压缩。
2、为了解决这一问题,可以利用历史块的相关信息来对当前块的码率进行控制。例如,以编码端为例,可以根据t时刻之前的t-3时刻的编码块编码结束后的码流缓冲区状态和无损编码比特数信息,确定t时刻的编码块的码率控制信息。
3、但是,利用历史块的相关信息对当前块的码率进行控制可能会导致当前码流缓冲区的状态不明确,从而导致码流缓冲区上溢。
技术实现思路
1、基于上述技术问题,本技术提供了一种图像编解码方法,可以在码流缓冲区剩余的比特数较少的情况下通过减少预估比特数或者增加目标量化参数来降低编码的码率。
2、第一方面,本技术提供一种图像编码方法,该方法包括:获取码流缓冲区的状态;码流缓冲区用于存储待编码块编码后得到的码流;码流缓冲区的状态为码流缓冲区在当前待编码块之前的第m个待编码块编码后的比特数;m为正整数;当码流缓冲区的状态满足预设条件时,对当前待编码块的预估比特数执行第一操作;预估比特数为在码流缓冲区的状态下预测的编码当前待编码块所需的比特数;第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数;基于执行第一操作后的预估比特数,对当前待编码块进行编码。
3、可选地,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
4、一种可能的实现方式中,当码流缓冲区的状态满足预设条件时,对当前待编码块的预估比特数执行第一操作,包括:基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待编码块编码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区大小小于额外缓冲区阈值时,对当前待编码块的预估比特数执行第一操作。
5、一种可能的实现方式中,惩罚参数包括第一惩罚参数;获取额外缓冲区阈值,包括:当当前待编码块为当前待编码块所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待编码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待编码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待编码块时,额外缓冲区阈值变小的数值。
6、另一种可能的实现方式中,当当前待编码块为结尾块之外的待编码块时,额外缓冲区阈值为额外缓冲区的初始大小。
7、可选地,在获取额外缓冲区阈值之前,该方法还包括:获取结尾块的数量;根据额外缓冲区的初始大小与结尾块的数量,确定第一惩罚参数。
8、应理解,结尾块通常为一个条带中编码顺序靠后的若干个待编码块(图像块),一个条带越接近编码完成时,当前待编码块在结尾块中的参考排名越大,参考乘积越大,额外缓冲区阈值越小,当前待编码块的预估比特数越不容易被执行第一操作,将更多的编码块填入额外缓冲区,充分利用编码资源。
9、一种可能的实现方式中,获取额外缓冲区阈值,包括:将额外缓冲区的初始大小确定为额外缓冲区阈值。
10、一种可能的实现方式中,基于码流缓冲区的状态、当前待编码块的预估比特数、以及当前待编码块之前m个待编码块各自的预估比特数,确定可用缓冲区大小,包括:获取在当前待编码块之前m个待编码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区m+1个块的固定流出比特数和码流缓冲区m+1个块的预估流入比特数的差;码流缓冲区m+1个块的固定流出比特数为每个待编码块的像素点的个数、预设像素深度、以及m+1的乘积;码流缓冲区m+1个块的预估流入比特数为当前待编码块的预估比特数与当前待编码块之前m个待编码块各自的预估比特数之和。
11、可选地,针对历史块,历史块为当前待编码块之前m个待编码块中的任意一个待编码块,获取当前待编码块之前m个待编码块的预估比特数,包括:获取历史块的复杂度等级和当前待编码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待编码块的复杂度等级和当前待编码块的预估比特数的乘积。
12、一种可能的实现方式中,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待编码块的数量;在对当前待编码块的预估比特数执行第一操作之前,该方法还包括:获取当前待编码块所在的条带中,剩余的待编码块的数量;若剩余的待编码块的数量小于第二惩罚参数,则对当前待编码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为当前剩余的待编码块的数量和预设像素深度的乘积。
13、另一种可能的实现方式中,若当前剩余的待编码块的数量大于第二惩罚参数,则对当前待编码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
14、本技术提供的图像编码方法中,当码流缓冲区的状态满足预设条件时,可以对当前待编码块的预估比特数执行第一操作,以减小预测的编码当前待编码块的预估比特数,预估比特数与量化参数呈反比,量化参数又与编码的码率呈反比,因此,预估比特数减小,编码当前待编码块时的码率也同时减小,从而避免在高速视频传输接口利用历史块的码流缓冲区状态来控制当前待编码块的编码码率时导致的码流缓冲区上溢。
15、第二方面,本技术提供一种图像编码装置,该装置包括用于之上第一方面所述方法的各个功能模块。
16、第三方面,本技术提供一种图像解码方法,该方法包括:获取码流缓冲区的状态;码流缓冲区用于存储待解码块解码后的码流;码流缓冲区的状态为码流缓冲区在当前待解码块之前的第m个待解码块解码后的比特数;m为正整数;当码流缓冲区的状态满足预设条件时,对当前待解码块的预估比特数执行第一操作;预估比特数为在码流缓冲区的状态下预测的解码当前待解码块所需的比特数;第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数;基于执行第一操作后得到的预估比特数,对当前待解码块进行解码。
17、可选地,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
18、一种可能的实现方式中,当码流缓冲区的状态满足预设条件时,对当前待解码块的预估比特数执行第一操作,包括:基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待解码块解码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区大小小于额外缓冲区阈值时,对当前待解码块的预估比特数执行第一操作。
19、一种可能的实现方式中,惩罚参数包括第一惩罚参数;获取额外缓冲区阈值,包括;当当前待解码块为当前待解码块所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为填充了预设的占位比特的待解码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待解码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待解码块时,额外缓冲区的大小变小的数值。
20、另一种可能的实现方式中,当当前待解码块为结尾块之外的解码块时,额外缓冲区阈值为额外缓冲区的初始大小。
21、可选地,在获取额外缓冲区阈值之前,该方法还包括:从码流缓冲区中存储的码流中解析出第一惩罚参数。
22、一种可能的实现方式中,获取额外缓冲区阈值,包括:将额外缓冲区的初始大小确定为额外缓冲区阈值。
23、一种可能的实现方式中,基于码流缓冲区的状态,确定可用缓冲区大小,包括:获取在当前待解码块之前m个待解码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区m+1个块的固定流入比特数和码流缓冲区m+1个块的预估流出比特数的差;码流缓冲区m+1个块的固定流出比特数为每个待解码块的像素点的个数、预设像素深度、以及m+1的乘积;码流缓冲区m+1个块的预估流入比特数为当前待解码块的预估比特数与当前待解码块之前m个待解码块各自的预估比特数之和。
24、可选地,在根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小之前,该方法还包括:获取历史块的复杂度等级和当前待解码块的复杂度等级;历史块为当前待解码块之前m个待解码块中的任意一个待解码块;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待解码块的复杂度等级和当前待解码块的预估比特数的乘积。
25、一种可能的实现方式中,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待解码块的数量;在对当前待解码块的预估比特数执行第一操作之前,该方法还包括:从码流缓冲区中存储的码流中解析出第二惩罚参数;获取当前待解码块所在的条带中,剩余的待解码块的数量;若剩余的待解码块的数量小于第二惩罚参数,则对当前待解码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为当前剩余的待解码块的数量和预设像素深度的乘积。
26、另一种可能的实现方式中,若当前剩余的待解码块的数量大于第二惩罚参数,则对当前待解码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
27、第四方面,本技术提供一种图像解码装置,该装置包括用于之上第三方面所述方法的各个功能模块。
28、第五方面,本技术提供一种图像编码方法,该方法包括:获取码流缓冲区的状态;码流缓冲区用于存储待编码块编码后得到的码流;码流缓冲区的状态为码流缓冲区在当前待编码块之前的第m个待编码块编码后的比特数;m为正整数;当码流缓冲区的状态满足预设条件时,对当前待编码块的预估量化参数执行第二操作,以得到当前待编码块的目标量化参数;预估量化参数是基于预估比特数得到的;预估比特数为在码流缓冲区的状态下预测的编码当前待编码块所需的比特数;第二操作是指将预估量化参数增加参考量化参数;参考量化参数是基于惩罚参数指示的惩罚比特数确定的;基于执行第二操作后得到的目标量化参数,对当前待编码块进行编码。
29、可选地,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
30、可选地,当码流缓冲区的状态满足预设条件时,对当前待编码块的预估量化参数执行第二操作,包括:基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待编码块编码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区的大小小于额外缓冲区阈值时,对当前待编码块的预估量化参数执行第二操作。
31、可选地,惩罚参数包括第一惩罚参数;获取额外缓冲区阈值,包括:当当前待编码块为当前待编码所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待编码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待编码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待编码块时,额外缓冲区阈值变小的数值。
32、可选地,当当前待编码块为结尾块之外的待编码块时,额外缓冲区阈值为额外缓冲区的初始大小。
33、可选地,在获取额外缓冲区阈值之前,该方法还包括:获取结尾块的数量;根据额外缓冲区的初始大小与结尾块的数量,确定第一惩罚参数。
34、可选地,获取额外缓冲区阈值,包括:将额外缓冲区的初始大小确定为额外缓冲区阈值。
35、可选地,基于码流缓冲区的状态、当前待编码块的预估比特数、以及当前待编码块之前m个待编码块各自的预估比特数,确定可用缓冲区大小,包括:获取在当前待编码块之前m个待编码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区m+1个块的固定流出比特数和码流缓冲区m+1个块的预估流入比特数的差;码流缓冲区m+1个块的固定流出比特数为每个待编码块的像素点的个数、预设像素深度、以及m+1的乘积;码流缓冲区m+1个块的预估流入比特数为当前待编码块的预估比特数与当前待编码块之前m个待编码块各自的预估比特数之和。
36、可选地,针对历史块,历史块为当前待编码块之前m个待编码块中的任意一个待编码块,获取当前待编码块之前m个待编码块的预估比特数,包括:获取历史块的复杂度等级和当前待编码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待编码块的复杂度等级和当前待编码块的预估比特数的乘积。
37、可选地,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待编码块的数量;在对当前待编码块的预估量化参数执行第二操作之前,方法还包括:获取当前待编码块所在的条带中,剩余的待编码块的数量;若剩余的待编码块的数量小于第二惩罚参数,则对当前待编码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为当前剩余的待编码块的数量和预设像素深度的乘积。
38、可选地,若当前剩余的待编码块的数量大于第二惩罚参数,则对当前待编码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
39、本技术实施例提供的图像编码方法中,当码流缓冲区的状态满足预设条件时,编码端可以对当前待编码块的预估量化参数执行第二操作,以得到增加了参考量化参数之后的目标量化参数,量化参数与编码的码率呈反比,因此,量化参数增加,编码当前待编码块时的码率也同时减小,从而避免在高速视频传输接口利用历史块的码流缓冲区状态来控制当前待编码块的编码码率时导致的码流缓冲区上溢。
40、第六方面,本技术提供一种图像编码装置,该装置包括用于之上第五方面所述方法的各个功能模块。
41、第七方面,本技术提供一种图像解码方法,该方法包括:获取码流缓冲区的状态;码流缓冲区用于存储待解码块解码后的码流;码流缓冲区的状态为码流缓冲区在当前待解码块之前的第m个待解码块解码后的比特数;m为正整数;当码流缓冲区的状态满足预设条件时,对当前待解码块的预估量化参数执行第二操作,以得到当前待解码块的目标量化参数;预估量化参数是基于预估比特数得到的;预估比特数为在码流缓冲区的状态下预测的解码当前待解码块所需的比特数;第二操作是指将预估量化参数增加参考量化参数;参考量化参数是基于惩罚参数指示的惩罚比特数确定的;基于执行第二操作后得到的目标量化参数,对当前待解码块进行解码。
42、可选地,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
43、可选地,当码流缓冲区的状态满足预设条件时,对当前待解码块的预估量化参数执行第二操作,包括:基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待解码块解码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区的大小小于额外缓冲区阈值时,对当前待解码块的预估量化参数执行第二操作。
44、可选地,惩罚参数包括第一惩罚参数;获取额外缓冲区阈值,包括:当当前待解码块为当前待解码所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待解码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待解码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待解码块时,额外缓冲区阈值变小的数值。
45、可选地,当当前待解码块为结尾块之外的待解码块时,额外缓冲区阈值为额外缓冲区的初始大小。
46、可选地,在获取额外缓冲区阈值之前,该方法还包括:从码流缓冲区中存储的码流中解析出第一惩罚参数。
47、可选地,获取额外缓冲区阈值,包括:将额外缓冲区的初始大小确定为额外缓冲区阈值。
48、可选地,基于码流缓冲区的状态、当前待解码块的预估比特数、以及当前待解码块之前m个待解码块各自的预估比特数,确定可用缓冲区大小,包括:获取在当前待解码块之前m个待解码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区m+1个块的固定流入比特数和码流缓冲区m+1个块的预估流出比特数的差;码流缓冲区m+1个块的固定流出比特数为每个待解码块的像素点的个数、预设像素深度、以及m+1的乘积;码流缓冲区m+1个块的预估流入比特数为当前待解码块的预估比特数与当前待解码块之前m个待解码块各自的预估比特数之和。
49、可选地,针对历史块,历史块为当前待解码块之前m个待解码块中的任意一个待解码块,获取当前待解码块之前m个待解码块的预估比特数,包括:获取历史块的复杂度等级和当前待解码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待解码块的复杂度等级和当前待解码块的预估比特数的乘积。
50、可选地,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待解码块的数量;在对当前待解码块的预估量化参数执行第二操作之前,该方法还包括:从码流缓冲区中存储的码流中解析出第二惩罚参数;获取当前待解码块所在的条带中,剩余的待解码块的数量;若剩余的待解码块的数量小于第二惩罚参数,则对当前待解码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为当前剩余的待解码块的数量和预设像素深度的乘积。
51、可选地,若当前剩余的待解码块的数量大于第二惩罚参数,则对当前待解码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
52、第八方面,本技术提供一种图像解码装置,该装置包括用于之上第七方面所述方法的各个功能模块。
53、第九方面,本技术提供一种图像编码装置,该装置包括处理器和存储器;存储器存储有处理器可执行的指令;处理器被配置为执行指令时,使得图像编码装置实现上述第一方面和第五方面所述的图像编码方法。
54、第十方面,本技术提供一种图像解码装置,该装置包括处理器和存储器;存储器存储有处理器可执行的指令;处理器被配置为执行指令时,使得图像解码装置实现上述第三方面和第七方面所述的图像解码方法。
55、第十一方面,本技术提供一种计算机程序产品,当该计算机程序产品在图像编解码装置上运行时,使得图像编解码装置执行上述第一方面、第三方面、第五方面、以及第七方面任意一个方面所述相关方法的步骤,以实现第一方面、第三方面、第五方面、以及第七方面任意一个方面所述相关方法。
56、第十二方面,本技术提供一种可读存储介质,该可读存储介质包括:计算机程序指令;当计算机程序指令在图像编解码装置中运行时,使得图像编解码装置实现上述第一方面、第三方面、第五方面、以及第七方面任意一个方面所述的方法。