CN116760987A - 图像编解码方法、装置及存储介质 - Google Patents

图像编解码方法、装置及存储介质 Download PDF

Info

Publication number
CN116760987A
CN116760987A CN202310453429.5A CN202310453429A CN116760987A CN 116760987 A CN116760987 A CN 116760987A CN 202310453429 A CN202310453429 A CN 202310453429A CN 116760987 A CN116760987 A CN 116760987A
Authority
CN
China
Prior art keywords
current block
decoded
block
bit number
code stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310453429.5A
Other languages
English (en)
Inventor
王岩
孙煜程
潘冬萍
陈方栋
武晓阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN202310453429.5A priority Critical patent/CN116760987A/zh
Publication of CN116760987A publication Critical patent/CN116760987A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements

Landscapes

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

Abstract

本申请提供一种图像编解码方法、装置及存储介质,涉及图像编解码领域,该方法包括:获取码流缓冲区的状态;当码流缓冲区的状态满足预设条件时,对当前待编码块的预估比特数执行第一操作,或者,对当前待编码块的预估量化参数执行第二操作;第一操作是指将预估比特数减小惩罚比特数;预估量化参数是基于预估比特数得到的;第二操作是指将预估量化参数增加参考量化参数;参考量化参数是基于惩罚比特数得到的;基于执行第一操作后的预估比特数,或者,执行第二操作后的预估量化参数,对当前待编码块进行编码。该方法适用于图像编解码过程中,用于解决码流缓冲区上溢的问题。

Description

图像编解码方法、装置及存储介质
本发明专利申请是申请日为2022年11月18日、申请号为202211448399.0,名称为“图像编解码方法、装置及存储介质”的中国发明专利申请的分案申请。
技术领域
本申请涉及图像编解码领域,尤其涉及一种图像编解码方法、装置及存储介质
背景技术
高速视频传输接口场景下,硬件资源有限,无法使用过于复杂的码控算法,但是过于简单的码控算法又很难实现无损压缩。
为了解决这一问题,可以利用历史块的相关信息来对当前块的码率进行控制。例如,以编码端为例,可以根据t时刻之前的t-3时刻的编码块编码结束后的码流缓冲区状态和无损编码比特数信息,确定t时刻的编码块的码率控制信息。
但是,利用历史块的相关信息对当前块的码率进行控制可能会导致当前码流缓冲区的状态不明确,从而导致码流缓冲区上溢。
发明内容
基于上述技术问题,本申请提供了一种图像编解码方法,可以在码流缓冲区剩余的比特数较少的情况下通过减少预估比特数或者增加目标量化参数来降低编码的码率。
第一方面,本申请提供一种图像编码方法,该方法包括:获取码流缓冲区的状态;码流缓冲区用于存储待编码块编码后得到的码流;码流缓冲区的状态为码流缓冲区在当前待编码块之前的第M个待编码块编码后的比特数;M为正整数;当码流缓冲区的状态满足预设条件时,对当前待编码块的预估比特数执行第一操作;预估比特数为在码流缓冲区的状态下预测的编码当前待编码块所需的比特数;第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数;基于执行第一操作后的预估比特数,对当前待编码块进行编码。
可选地,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
一种可能的实现方式中,当码流缓冲区的状态满足预设条件时,对当前待编码块的预估比特数执行第一操作,包括:基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待编码块编码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区大小小于额外缓冲区阈值时,对当前待编码块的预估比特数执行第一操作。
一种可能的实现方式中,惩罚参数包括第一惩罚参数;获取额外缓冲区阈值,包括:当当前待编码块为当前待编码块所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待编码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待编码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待编码块时,额外缓冲区阈值变小的数值。
另一种可能的实现方式中,当当前待编码块为结尾块之外的待编码块时,额外缓冲区阈值为额外缓冲区的初始大小。
可选地,在获取额外缓冲区阈值之前,该方法还包括:获取结尾块的数量;根据额外缓冲区的初始大小与结尾块的数量,确定第一惩罚参数。
应理解,结尾块通常为一个条带中编码顺序靠后的若干个待编码块(图像块),一个条带越接近编码完成时,当前待编码块在结尾块中的参考排名越大,参考乘积越大,额外缓冲区阈值越小,当前待编码块的预估比特数越不容易被执行第一操作,将更多的编码块填入额外缓冲区,充分利用编码资源。
一种可能的实现方式中,获取额外缓冲区阈值,包括:将额外缓冲区的初始大小确定为额外缓冲区阈值。
一种可能的实现方式中,基于码流缓冲区的状态、当前待编码块的预估比特数、以及当前待编码块之前M个待编码块各自的预估比特数,确定可用缓冲区大小,包括:获取在当前待编码块之前M个待编码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区M+1个块的固定流出比特数和码流缓冲区M+1个块的预估流入比特数的差;码流缓冲区M+1个块的固定流出比特数为每个待编码块的像素点的个数、预设像素深度、以及M+1的乘积;码流缓冲区M+1个块的预估流入比特数为当前待编码块的预估比特数与当前待编码块之前M个待编码块各自的预估比特数之和。
可选地,针对历史块,历史块为当前待编码块之前M个待编码块中的任意一个待编码块,获取当前待编码块之前M个待编码块的预估比特数,包括:获取历史块的复杂度等级和当前待编码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待编码块的复杂度等级和当前待编码块的预估比特数的乘积。
一种可能的实现方式中,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待编码块的数量;在对当前待编码块的预估比特数执行第一操作之前,该方法还包括:获取当前待编码块所在的条带中,剩余的待编码块的数量;若剩余的待编码块的数量小于第二惩罚参数,则对当前待编码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为当前剩余的待编码块的数量和预设像素深度的乘积。
另一种可能的实现方式中,若当前剩余的待编码块的数量大于第二惩罚参数,则对当前待编码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
本申请提供的图像编码方法中,当码流缓冲区的状态满足预设条件时,可以对当前待编码块的预估比特数执行第一操作,以减小预测的编码当前待编码块的预估比特数,预估比特数与量化参数呈反比,量化参数又与编码的码率呈反比,因此,预估比特数减小,编码当前待编码块时的码率也同时减小,从而避免在高速视频传输接口利用历史块的码流缓冲区状态来控制当前待编码块的编码码率时导致的码流缓冲区上溢。
第二方面,本申请提供一种图像编码装置,该装置包括用于之上第一方面所述方法的各个功能模块。
第三方面,本申请提供一种图像解码方法,该方法包括:获取码流缓冲区的状态;码流缓冲区用于存储待解码块解码后的码流;码流缓冲区的状态为码流缓冲区在当前待解码块之前的第M个待解码块解码后的比特数;M为正整数;当码流缓冲区的状态满足预设条件时,对当前待解码块的预估比特数执行第一操作;预估比特数为在码流缓冲区的状态下预测的解码当前待解码块所需的比特数;第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数;基于执行第一操作后得到的预估比特数,对当前待解码块进行解码。
可选地,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
一种可能的实现方式中,当码流缓冲区的状态满足预设条件时,对当前待解码块的预估比特数执行第一操作,包括:基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待解码块解码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区大小小于额外缓冲区阈值时,对当前待解码块的预估比特数执行第一操作。
一种可能的实现方式中,惩罚参数包括第一惩罚参数;获取额外缓冲区阈值,包括;当当前待解码块为当前待解码块所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为填充了预设的占位比特的待解码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待解码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待解码块时,额外缓冲区的大小变小的数值。
另一种可能的实现方式中,当当前待解码块为结尾块之外的解码块时,额外缓冲区阈值为额外缓冲区的初始大小。
可选地,在获取额外缓冲区阈值之前,该方法还包括:从码流缓冲区中存储的码流中解析出第一惩罚参数。
一种可能的实现方式中,获取额外缓冲区阈值,包括:将额外缓冲区的初始大小确定为额外缓冲区阈值。
一种可能的实现方式中,基于码流缓冲区的状态,确定可用缓冲区大小,包括:获取在当前待解码块之前M个待解码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区M+1个块的固定流入比特数和码流缓冲区M+1个块的预估流出比特数的差;码流缓冲区M+1个块的固定流出比特数为每个待解码块的像素点的个数、预设像素深度、以及M+1的乘积;码流缓冲区M+1个块的预估流入比特数为当前待解码块的预估比特数与当前待解码块之前M个待解码块各自的预估比特数之和。
可选地,在根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小之前,该方法还包括:获取历史块的复杂度等级和当前待解码块的复杂度等级;历史块为当前待解码块之前M个待解码块中的任意一个待解码块;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待解码块的复杂度等级和当前待解码块的预估比特数的乘积。
一种可能的实现方式中,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待解码块的数量;在对当前待解码块的预估比特数执行第一操作之前,该方法还包括:从码流缓冲区中存储的码流中解析出第二惩罚参数;获取当前待解码块所在的条带中,剩余的待解码块的数量;若剩余的待解码块的数量小于第二惩罚参数,则对当前待解码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为当前剩余的待解码块的数量和预设像素深度的乘积。
另一种可能的实现方式中,若当前剩余的待解码块的数量大于第二惩罚参数,则对当前待解码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
第四方面,本申请提供一种图像解码装置,该装置包括用于之上第三方面所述方法的各个功能模块。
第五方面,本申请提供一种图像编码方法,该方法包括:获取码流缓冲区的状态;码流缓冲区用于存储待编码块编码后得到的码流;码流缓冲区的状态为码流缓冲区在当前待编码块之前的第M个待编码块编码后的比特数;M为正整数;当码流缓冲区的状态满足预设条件时,对当前待编码块的预估量化参数执行第二操作,以得到当前待编码块的目标量化参数;预估量化参数是基于预估比特数得到的;预估比特数为在码流缓冲区的状态下预测的编码当前待编码块所需的比特数;第二操作是指将预估量化参数增加参考量化参数;参考量化参数是基于惩罚参数指示的惩罚比特数确定的;基于执行第二操作后得到的目标量化参数,对当前待编码块进行编码。
可选地,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
可选地,当码流缓冲区的状态满足预设条件时,对当前待编码块的预估量化参数执行第二操作,包括:基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待编码块编码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区的大小小于额外缓冲区阈值时,对当前待编码块的预估量化参数执行第二操作。
可选地,惩罚参数包括第一惩罚参数;获取额外缓冲区阈值,包括:当当前待编码块为当前待编码所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待编码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待编码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待编码块时,额外缓冲区阈值变小的数值。
可选地,当当前待编码块为结尾块之外的待编码块时,额外缓冲区阈值为额外缓冲区的初始大小。
可选地,在获取额外缓冲区阈值之前,该方法还包括:获取结尾块的数量;根据额外缓冲区的初始大小与结尾块的数量,确定第一惩罚参数。
可选地,获取额外缓冲区阈值,包括:将额外缓冲区的初始大小确定为额外缓冲区阈值。
可选地,基于码流缓冲区的状态、当前待编码块的预估比特数、以及当前待编码块之前M个待编码块各自的预估比特数,确定可用缓冲区大小,包括:获取在当前待编码块之前M个待编码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区M+1个块的固定流出比特数和码流缓冲区M+1个块的预估流入比特数的差;码流缓冲区M+1个块的固定流出比特数为每个待编码块的像素点的个数、预设像素深度、以及M+1的乘积;码流缓冲区M+1个块的预估流入比特数为当前待编码块的预估比特数与当前待编码块之前M个待编码块各自的预估比特数之和。
可选地,针对历史块,历史块为当前待编码块之前M个待编码块中的任意一个待编码块,获取当前待编码块之前M个待编码块的预估比特数,包括:获取历史块的复杂度等级和当前待编码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待编码块的复杂度等级和当前待编码块的预估比特数的乘积。
可选地,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待编码块的数量;在对当前待编码块的预估量化参数执行第二操作之前,方法还包括:获取当前待编码块所在的条带中,剩余的待编码块的数量;若剩余的待编码块的数量小于第二惩罚参数,则对当前待编码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为当前剩余的待编码块的数量和预设像素深度的乘积。
可选地,若当前剩余的待编码块的数量大于第二惩罚参数,则对当前待编码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
本申请实施例提供的图像编码方法中,当码流缓冲区的状态满足预设条件时,编码端可以对当前待编码块的预估量化参数执行第二操作,以得到增加了参考量化参数之后的目标量化参数,量化参数与编码的码率呈反比,因此,量化参数增加,编码当前待编码块时的码率也同时减小,从而避免在高速视频传输接口利用历史块的码流缓冲区状态来控制当前待编码块的编码码率时导致的码流缓冲区上溢。
第六方面,本申请提供一种图像编码装置,该装置包括用于之上第五方面所述方法的各个功能模块。
第七方面,本申请提供一种图像解码方法,该方法包括:获取码流缓冲区的状态;码流缓冲区用于存储待解码块解码后的码流;码流缓冲区的状态为码流缓冲区在当前待解码块之前的第M个待解码块解码后的比特数;M为正整数;当码流缓冲区的状态满足预设条件时,对当前待解码块的预估量化参数执行第二操作,以得到当前待解码块的目标量化参数;预估量化参数是基于预估比特数得到的;预估比特数为在码流缓冲区的状态下预测的解码当前待解码块所需的比特数;第二操作是指将预估量化参数增加参考量化参数;参考量化参数是基于惩罚参数指示的惩罚比特数确定的;基于执行第二操作后得到的目标量化参数,对当前待解码块进行解码。
可选地,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
可选地,当码流缓冲区的状态满足预设条件时,对当前待解码块的预估量化参数执行第二操作,包括:基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待解码块解码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区的大小小于额外缓冲区阈值时,对当前待解码块的预估量化参数执行第二操作。
可选地,惩罚参数包括第一惩罚参数;获取额外缓冲区阈值,包括:当当前待解码块为当前待解码所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待解码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待解码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待解码块时,额外缓冲区阈值变小的数值。
可选地,当当前待解码块为结尾块之外的待解码块时,额外缓冲区阈值为额外缓冲区的初始大小。
可选地,在获取额外缓冲区阈值之前,该方法还包括:从码流缓冲区中存储的码流中解析出第一惩罚参数。
可选地,获取额外缓冲区阈值,包括:将额外缓冲区的初始大小确定为额外缓冲区阈值。
可选地,基于码流缓冲区的状态、当前待解码块的预估比特数、以及当前待解码块之前M个待解码块各自的预估比特数,确定可用缓冲区大小,包括:获取在当前待解码块之前M个待解码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区M+1个块的固定流入比特数和码流缓冲区M+1个块的预估流出比特数的差;码流缓冲区M+1个块的固定流出比特数为每个待解码块的像素点的个数、预设像素深度、以及M+1的乘积;码流缓冲区M+1个块的预估流入比特数为当前待解码块的预估比特数与当前待解码块之前M个待解码块各自的预估比特数之和。
可选地,针对历史块,历史块为当前待解码块之前M个待解码块中的任意一个待解码块,获取当前待解码块之前M个待解码块的预估比特数,包括:获取历史块的复杂度等级和当前待解码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待解码块的复杂度等级和当前待解码块的预估比特数的乘积。
可选地,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待解码块的数量;在对当前待解码块的预估量化参数执行第二操作之前,该方法还包括:从码流缓冲区中存储的码流中解析出第二惩罚参数;获取当前待解码块所在的条带中,剩余的待解码块的数量;若剩余的待解码块的数量小于第二惩罚参数,则对当前待解码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为当前剩余的待解码块的数量和预设像素深度的乘积。
可选地,若当前剩余的待解码块的数量大于第二惩罚参数,则对当前待解码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
第八方面,本申请提供一种图像解码装置,该装置包括用于之上第七方面所述方法的各个功能模块。
第九方面,本申请提供一种图像编码装置,该装置包括处理器和存储器;存储器存储有处理器可执行的指令;处理器被配置为执行指令时,使得图像编码装置实现上述第一方面和第五方面所述的图像编码方法。
第十方面,本申请提供一种图像解码装置,该装置包括处理器和存储器;存储器存储有处理器可执行的指令;处理器被配置为执行指令时,使得图像解码装置实现上述第三方面和第七方面所述的图像解码方法。
第十一方面,本申请提供一种计算机程序产品,当该计算机程序产品在图像编解码装置上运行时,使得图像编解码装置执行上述第一方面、第三方面、第五方面、以及第七方面任意一个方面所述相关方法的步骤,以实现第一方面、第三方面、第五方面、以及第七方面任意一个方面所述相关方法。
第十二方面,本申请提供一种可读存储介质,该可读存储介质包括:计算机程序指令;当计算机程序指令在图像编解码装置中运行时,使得图像编解码装置实现上述第一方面、第三方面、第五方面、以及第七方面任意一个方面所述的方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为码控方案的流程示意图;
图2为本申请实施例提供的视频编解码系统的组成示意图;
图3为本申请实施例提供的视频编码器102的组成示意图;
图4为本申请实施例提供的视频解码器112的结构示意图;
图5为本申请实施例提供的一种视频编解码的流程示意图;
图6为本申请实施例提供的图像编解码装置的组成示意图;
图7为本申请实施例提供的一种图像编码方法的流程示意图;
图8为本申请实施例提供的一种图像解码方法的流程示意图;
图9为本申请实施例提供的另一种图像编码方法的流程示意图;
图10为本申请实施例提供的另一种图像解码方法的流程示意图;
图11为本申请实施例提供的图像编码装置的组成示意图;
图12为本申请实施例提供的图像解码装置的组成示意图;
图13为本申请实施例提供的另一种图像编码装置的组成示意图;
图14为本申请实施例提供的另一种图像解码装置的组成示意图。
具体实施方式
首先对本申请实施例涉及的术语进行介绍。
1、视频译码技术:
视频译码技术包括视频编码技术和视频解码技术,也可以统称为视频编解码技术。视频序列存在空间冗余、时间冗余、视觉冗余、信息熵冗余、结构冗余、知识冗余、重要性冗余等一系列的冗余信息。为了尽可能地去除视频序列中的冗余信息,减少表征视频的数据量,提出了视频编码技术,以达到减小存储空间和节省传输带宽的效果。视频编码技术也称为视频压缩技术。
为了获取基于上述视频压缩技术的存储或传输的数据,相应地,需要视频解码技术来实现。
在国际通用范围内,视频压缩编码标准用于规范视频编解码方法,例如:由运动图像专家组(Motion Picture Experts Group,MPEG)制定的MPEG-2和MPEG-4标准中第10部分的高级视频编解码(Advanced Video Coding,AVC),由国际电信联盟电信标准化部门(International Telecommunication Uion-Telecommunication StandardizationSector,ITU-T)制定的H.263、H.264和H.265(又称高效率视频编解码(High EfficiencyVideo Codingstandard,HEVC))。
需要说明的是,在基于混合编码架构的编码算法中,上述压缩编码方式可以被混合使用。
视频编解码过程中的基本处理单位是图像块,该图像块是编码端将一帧/幅图像进行划分得到的。针对划分后的图像块,通常采用逐行逐个的方式进行处理。以HEVC为例,HEVC定义了编码树单元(Coding Tree Unit,CTU)、编码单元(Coding Unit,CU)、预测单元(PredictionUnit,PU)和变换单元(Transform Unit,TU)。CTU、CU、PU和TU均可作为划分后得到的图像块。其中PU和TU均基于CU进行划分。
2、视频采样:
像素为视频或图像最小的完整采样,因此,对图像块进行数据处理是以像素为单位。其中,每个像素记录颜色信息。一种采样方式为通过RGB表示颜色,其中,包括三个图像通道,R表示红色red,G表示绿色green,B表示蓝色blue。另一种采样方式为通过YUV表示颜色,其中,包括三个图像通道,Y表示亮度(luminance),U表示第一色度Cb,V表示第二色度Cr。由于人们对亮度的敏感程度强于对色度的敏感程度,因此,可以通过多存储亮度,少存储色度实现减少存储空间。具体地,在视频编解码中,通常采用YUV格式进行视频采样,包括420采样格式、422采样格式等。该采样格式基于亮度的取样数量,确定两个色度的取样数量,例如,假设一个CU有4×2个像素,格式如下:
[Y0,U0,V0][Y1,U1,V1][Y2,U2,V2][Y3,U3,V3];
[Y4,U4,V4][Y5,U5,V5][Y6,U6,V6][Y7,U7,V7];
420采样格式表示YUV以4:2:0的格式进行采样,即亮度与第一色度或第二色度以4:2的比例进行选取,其中第一色度与第二色度隔行选取。则上述CU采样选取第一行的亮度Y0-Y3,以及第一色度U0和U2,选取第二行的亮度Y4-Y7,以及第二色度V4和V6。该CU经采样由亮度编码单元及色度编码单元构成,其中,亮度编码单元为:
[Y0][Y1][Y2][Y3];
[Y4][Y5][Y6][Y7];
第一色度编码单元为:
[U0][U2];
第二色度编码单元为:
[V4][V6];
可以看出,经上述采样格式采样后的图像块大小发生了变化。其中亮度编码单元块大小不变,仍为4×2,而第一色度编码单元块大小变为2×1,第二色度编码单元块大小也变为2×1。因此,若假设CU大小为X×Y,则基于420采样格式采样后的色度编码单元块大小为X/2×Y/2。
类似地,422采样格式表示YUV以4:2:2的格式进行采样,即亮度与第一色度和第二色度以4:2:2的比例进行选取。则上述CU经采样的亮度编码单元为:
[Y0][Y1][Y2][Y3];
[Y4][Y5][Y6][Y7];
第一色度编码单元为:
[U0][U2];
[U4][U6];
第二色度编码单元为:
[V1][V3];
[V5][V7];
其中,亮度编码单元块大小不变,仍为4×2,而第一色度编码单元块大小变为2×2,第二色度编码单元块大小也变为2×2。因此,若假设CU大小为X×Y,则基于422采样格式采样后的色度编码单元块大小为X/2×Y。
上述经采样得到的亮度编码单元、第一色度编码单元和第二色度编码单元作为后续针对当前块进行处理的各通道的数据单元。
3、子流并行(或者又可以称作子流交织):
对于编码端来说,子流并行是指编码端将编码单元(CU)的不同通道(例如亮度通道、第一色度通道、以及第二色度通道等)的编码块(coding block,CB)的语法元素使用多个熵编码器编码得到多个子流,并以固定大小的数据包将多个子流交织成压缩位流。相对应地,对于解码端来说,子流并行是指解码端使用不同的熵解码器并行解码不同的子流。
4、其他术语:
以下,术语“第一”和“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”或“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。
高速视频传输接口场景下,硬件资源有限,无法使用过于复杂的码控算法,但是过于简单的码控算法又很难实现无损压缩。
为了解决这一问题,可以利用历史块的相关信息来对当前块的码率进行控制。例如,以编码端为例,可以根据t时刻之前的t-3时刻的编码块编码结束后的码流缓冲区状态和无损编码比特数信息,确定t时刻的编码块的码率控制信息。
示例性地,图1为码控方案的流程示意图。如图1所示,编码端可以获取缓冲区的状态、当前待编码块的复杂度等级,根据当前待编码块的复杂度等级确定无损编码比特数,根据无损编码比特数确定预估比特数,根据缓冲区的状态和复杂度等级对预估比特数进行钳位,根据预估比特数确定当前待编码块的主量化参数、亮度量化参数、以及色度量化参数,根据主量化参数、亮度量化参数、以及色度量化参数对当前待编码块进行编码,然后根据亮度量化参数、色度量化参数、以及实际编码的比特数估计无损编码比特数,更新无损编码比特数。
但是,利用历史块的相关信息对当前块的码率进行控制可能会导致当前码流缓冲区的状态不明确,从而导致码流缓冲区上溢。
在这种情况下,本申请实施例提供一种图像编解码方法、装置及存储介质,可以在码流缓冲区的状态满足预设条件时减小预估比特数或者增加量化参数,以降低编码的码率。
以下结合附图进行介绍。
图2为本申请实施例提供的视频编解码系统的组成示意图。如图2所示,视频编解码系统包括源装置10和目的装置11。
源装置10产生经过编码后的视频数据,源装置10也可以被称为编码端、视频编码端、视频编码装置、或视频编码设备等,目的装置11可以对源装置10产生的经过编码后的视频数据进行解码,目的装置11也可以被称为解码端、视频解码端、视频解码装置、或视频解码设备等。源装置10和/或目的装置11可包含至少一个处理器以及耦合到所述至少一个处理器的存储器。该存储器可包含但不限于只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、带电可擦可编程只读存储器(electricallyerasableprogrammable read-only memory,EEPROM)、快闪存储器或可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体,本申请实施例对此不作具体限定。
源装置10和目的装置11可以包括各种装置,包含桌上型计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者等电子设备。
目的装置11可经由链路12从源装置10接收经编码视频数据。链路12可包括能够将经编码视频数据从源装置10移动到目的装置11的一个或多个媒体和/或装置。在一个实例中,链路12可包括使得源装置10能够实时地将编码后的视频数据直接发射到目的装置11的一个或多个通信媒体。在此实例中,源装置10可根据通信标准(例如:无线通信协议)来调制编码后的视频数据,并且可以将调制后的视频数据发射到目的装置11。上述一个或多个通信媒体可包含无线和/或有线通信媒体,例如:射频(Radio Frequency,RF)频谱、一个或多个物理传输线。上述一个或多个通信媒体可形成基于分组的网络的一部分,基于分组的网络例如为局域网、广域网或全球网络(例如,因特网)等。上述一个或多个通信媒体可以包含路由器、交换器、基站,或者实现从源装置10到目的装置11的通信的其它设备。
在另一实例中,源装置10可将编码后的视频数据从输出接口103输出到存储装置13。类似地,目的装置11可通过输入接口113从存储装置13存取编码后的视频数据。存储装置13可包含多种本地存取式数据存储媒体,例如蓝光光盘、高密度数字视频光盘(DigitalVideoDisc,DVD)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、快闪存储器,或用于存储经编码视频数据的其它合适数字存储媒体。
在另一实例中,存储装置13可对应于文件服务器或存储由源装置10产生的编码后的视频数据的另一中间存储装置。在此实例中,目的装置11可经由流式传输或下载从存储装置13获取其存储的视频数据。文件服务器可为任何类型的能够存储经编码的视频数据并且将经编码的视频数据发射到目的装置11的服务器。例如,文件服务器可以包含全球广域网(WorldWide Web,Web)服务器(例如,用于网站)、文件传送协议(File TransferProtocol,FTP)服务器、网络附加存储(Network Attached Storage,NAS)装置以及本地磁盘驱动器。
目的装置11可通过任何标准数据连接(例如,因特网连接)存取编码后的视频数据。数据连接的实例类型包含适合于存取存储于文件服务器上的编码后的视频数据的无线信道、有线连接(例如,缆线调制解调器等),或两者的组合。编码后的视频数据从文件服务器发射的方式可为流式传输、下载传输或两者的组合。
需要说明的是,本申请实施例提供的图像编解码方法不限于无线应用场景。
示例性地,本申请实施例提供的图像编解码方法可以应用于支持以下多种多媒体应用的视频编解码:空中电视广播、有线电视发射、卫星电视发射、流式传输视频发射(例如,经由因特网)、存储于数据存储媒体上的视频数据的编码、存储于数据存储媒体上的视频数据的解码,或其它应用。在一些实例中,视频编解码系统可经配置,以支持单向或双向视频发射,以支持例如视频流式传输、视频播放、视频广播及/或视频电话等应用。
需要说明的是,图2示出的视频编解码系统仅仅是视频编解码系统的示例,并不是对本申请中视频编解码系统的限定。本申请提供的图像编解码方法还可以适用于编码装置与解码装置之间无线数据通信的场景。在其它实施例中,待解码视频数据或编码后的视频数据可以从本地存储器检索,也可以在网络上流式传输等。视频编码装置可以对待编码视频数据进行编码并且将编码后的视频数据存储到存储器,视频解码装置也可以从存储器中获取编码后的视频数据并且对该编码后的视频数据进行解码。
在图2的实施例中,源装置10包含视频源101、视频编码器102和输出接口103。在一些实施例中,输出接口103可包含调制器/解调器(调制解调器)和/或发射器。视频源101可包括视频捕获装置(例如,摄像机)、含有先前捕获的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频输入接口,和/或用于产生视频数据的计算机图形系统,或视频数据的此些来源的组合。
视频编码器102可对来自视频源101的视频数据进行编码。在一些实施例中,源装置10经由输出接口103将编码后的视频数据直接发射到目的装置11。在其它实施例中,编码后的视频数据还可存储到存储装置13上,供目的装置11稍后存取来用于解码和/或播放。
在图2的实施例中,目的装置11包含显示装置111、视频解码器112以及输入接口113。在一些实施例中,输入接口113包含接收器和/或调制解调器。输入接口113可经由链路12和/或从存储装置13接收编码后的视频数据。显示装置111可与目的装置11集成或可在目的装置11外部。一般来说,显示装置111显示解码后的视频数据。显示装置111可包括多种显示装置,例如,液晶显示器、等离子显示器、有机发光二极管显示器或其它类型的显示装置。
可选地,视频编码器102和视频解码器112可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器单元或其它硬件和软件,以处理共同数据流或单独数据流中的音频和视频两者的编码。
视频编码器102和视频解码器112可以包括至少一个微处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application-specific integratedcircuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、离散逻辑、硬件或其任何组合。若本申请提供的译码方法采用软件实现,则可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用至少一个处理器执行所述指令从而实施本申请。
本申请中的视频编码器102和视频解码器112可以根据视频压缩标准(例如HEVC)操作,也可根据其它业界标准操作,本申请对此不作具体限定。
图3为本申请实施例提供的视频编码器102的组成示意图。如图3所示,视频编码器102可以在预测模块21、变换模块22、量化模块23、以及熵编码模块24分别进行预测、变换、量化、以及熵编码的过程。视频编码器102中还包括预处理模块20和求和器202,其中预处理模块20包括分割模块和码率控制模块。对于视频块重构建,视频编码器102也可以包括反量化模块25、反变换模块26、求和器201以及参考图像存储器27。
如图3所示,视频编码器102接收视频数据,预处理模块20视频数据的输入参数。其中,该输入参数包括该视频数据中图像的分辨率、图像的采样格式、像素深度(bits perpixel,BPP)、位宽(或者也可以称作图像位宽)等信息。其中,BPP是指单位像素所占用的比特数。位宽是指单位像素中一个像素通道所占用的比特数。例如,以YUV三个像素通道的值表示一个像素,若每个像素通道占用8比特(bits),则该像素的位宽为8,并且该像素的BPP为3×8=24bits。
预处理模块20中的分割模块将图像分割成原始块(或者也可以称作编码单元(CU))。该原始块(或者也可以称作编码单元(CU))可以包括多个通道的编码块。例如该多个通道可以是RGB通道或者YUV通道等。本申请实施例对此不作限制。可选地,此分割也可包含分割成条带(slice)、图像块或其它较大单元,以及根据最大编码单元(Largest CodingUnit,LCU)及CU的四叉树结构进行视频块分割。示例性的,视频编码器102编码在待编码的视频条带内的视频块的组件。一般的,条带可划分成多个原始块(且可能划分成称作图像块的原始块的集合)。通常在分割模块中确定CU、PU以及TU的尺寸。此外,分割模块还用于确定码率控制单元的尺寸。该码率控制单元是指码率控制模块中的基本处理单元,例如在码率控制模块基于码率控制单元,为原始块计算复杂度信息,再根据复杂度信息计算原始块的量化参数。其中,分割模块的分割策略可以是预设的,也可以是编码过程中基于图像不断调整的。当分割策略是预设策略时,相应地,解码端中也预设相同的分割策略,从而获取相同的图像处理单元。该图像处理单元为上述任意一种图像块,且与编码侧一一对应。当分割策略在编码过程中基于图像不断调整时,该分割策略可以直接或间接地编入码流,相应地,解码端从码流中获取相应参数,得到相同的分割策略,获取相同的图像处理单元。
预处理模块20中的码率控制模块用于生成量化参数以使得量化模块23和反量化模块25进行相关计算。其中,码率控制模块在计算量化参数过程中,可以获取原始块的图像信息进行计算,例如上述输入信息;还可以获取求和器201经重构得到的重建值进行计算,本申请对此不作限制。
预测模块21可将预测块提供到求和器202以产生残差块,且将该预测块提供到求和器201经重构得到重建块,该重建块用于后续进行预测的参考像素。其中,视频编码器102通过原始块的像素值减去预测块的像素值来形成像素差值,该像素差值即为残差块,该残差块中的数据可包含亮度差及色度差。求和器201表示执行此减法运算的一个或多个组件。预测模块21还可将相关的语法元素发送至熵编码模块24用于合并至码流。
变换模块22可将残差块划分为一个或多个TU进行变换。变换模块22可将残差块从像素域转换到变换域(例如,频域)。例如,使用离散余弦变换(discrete cosinetransform,DCT)或离散正弦变换(discrete sine transform,DST)将残差块经变换得到变换系数。变换模块22可将所得变换系数发送到量化模块23。
量化模块23可基于量化单元进行量化。其中,量化单元可以与上述CU、TU、PU相同,也可以在分割模块中进一步地划分。量化模块23对变换系数进行量化以进一步减小码率得到量化系数。其中,量化过程可减少与系数中的一些或全部相关联的比特深度。可通过调整量化参数来修改量化的程度。在一些可行的实施方式中,量化模块23可接着执行包含经量化变换系数的矩阵的扫描。替代的,熵编码模块24可执行扫描。
在量化之后,熵编码模块24可熵编码量化系数。例如,熵编码模块24可执行上下文自适应性可变长度编码(context-adaptive variable-length coding,CAVLC)、上下文自适应性二进制算术编码(context-based adaptive binary arithmetic coding,CABAC)、基于语法的上下文自适应性二进制算术解码(SBAC)、概率区间分割熵(PIPE)解码或另一熵编码方法或技术。在通过熵编码模块24进行熵编码之后得到子流,通过多个熵编码模块24进行熵编码后可以得到码流,该码流传输到视频解码器112或存档以供稍后传输或由视频解码器112检索。
反量化模块25及反变换模块26分别应用反量化与反变换,求和器201将反变换后的残差块得和预测的残差块相加以产生重建块,该重建块用作后续原始块进行预测的参考像素。该重建块存储于参考图像存储器27中。
图4为本申请实施例提供的视频解码器112的结构示意图。如图4所示,视频解码器112包括熵解码模块30、预测模块31、反量化模块32、反变换模块33、求和器301和参考图像存储器34。
其中,熵解码模块32包括解析模块和码率控制模块。在一些可行的实施方式中,视频解码器112可执行与关于来自图3的视频编码器102描述的编码流程的示例性地互逆的解码流程。
在解码过程期间,视频解码器112从视频编码器102接收经编码的视频的码流。视频解码器112的熵解码模块30中的解析模块可以对码流进行熵解码,以产生量化系数和语法元素。熵解码模块30可以将语法元素传递到预测模块31。视频解码器112可以在视频条带层和/或视频块层级出接收语法元素。
熵解码模块30中的码率控制模块根据解析模块得到的待解码图像的信息,生成量化参数以使得反量化模块32进行相关计算。码率控制模块还可以根据求和器301经重构得到的重建块,以计算量化参数。
反量化模块32对码流中所提供且通过熵解码模块30所解码的量化系数以及所生成的量化参数进行反量化(例如,解量化)。反量化过程可包含使用通过视频编码器102针对视频条带中的每一视频块所计算的量化参数确定量化的程度,且同样地确定应用的反量化的程度。反变换模块33将反变换(例如,DCT、DST等变换方法)应用于反量化后的变换系数,将反量化后的变换系数按照反变换单元在像素域中产生反变换后的残差块。其中,反变换单元的尺寸与TU的尺寸相同,反变换方法与变换方法采用同样的变换方法中相应的正变换与反变换,例如,DCT、DST的反变换为反DCT、反DST或概念上类似的反变换过程。
预测模块31生成预测块后,视频解码器112通过将来自反变换模块33的反变换后的残差块与通过与预测块求和来形成经解码视频块。求和器301表示执行此求和运算的一个或多个组件。在需要时,也可应用解块滤波器来对经解码块进行滤波以便去除块效应伪影。给定帧或图像中的经解码的图像块存储于参考图像存储器34中,作为后续进行预测的参考像素。
本申请实施例提供一种可能的视频(图像)编解码的实现方式,参见图5,图5为本申请实施例提供的一种视频编解码的流程示意图,该视频编解码实现方式包括过程①至过程⑤,过程①至过程⑤可以由上述的源装置10、视频编码器102、目的装置11或视频解码器112中的任意一个或多个执行。
过程①:将一帧图像分成一个或多个互相不重叠的并行编码单元。该一个或多个并行编码单元间无依赖关系,可完全并行/独立编码和解码,如图4所示出的并行编码单元1和并行编码单元2。
过程②:对于每个并行编码单元,可再将其分成一个或多个互相不重叠的独立编码单元,各个独立编码单元间可相互不依赖,但可以共用一些并行编码单元头信息。
独立编码单元既可以是包括亮度Y、第一色度Cb、第二色度Cr三个通道,或RGB三个通道,也可以仅包含其中的某一个通道。若独立编码单元包含三个通道,则这三个通道的尺寸可以完全一样,也可以不一样,具体与图像的输入格式相关。该独立编码单元也可以理解为每个并行编码单元所包含N个通道形成的一个或多个处理单元。例如上述Y、Cb、Cr三个通道即为构成该并行编码单元的三个通道,其分别可以为一个独立编码单元,或者Cb和Cr可以统称为色度通道,则该并行编码单元包括亮度通道构成的独立编码单元,以及色度通道构成的独立编码单元。
过程③:对于每个独立编码单元,可再将其分成一个或多个互相不重叠的编码单元,独立编码单元内的各个编码单元可相互依赖,如多个编码单元可以进行相互参考预编解码。
若编码单元与独立编码单元尺寸相同(即独立编码单元仅分成一个编码单元),则其尺寸可为过程②所述的所有尺寸。
编码单元既可以是包括亮度Y、第一色度Cb、第二色度Cr三个通道(或RGB三通道),也可以仅包含其中的某一个通道。若包含三个通道,几个通道的尺寸可以完全一样,也可以不一样,具体与图像输入格式相关。
值得注意的是,过程③是视频编解码方法中一个可选的步骤,视频编/解码器可以对过程②获得的独立编码单元进行残差系数(或残差值)进行编/解码。
过程④:对于编码单元,可以将其可再将其分成一个或多个互相不重叠的预测组(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块的关键限值(critical limit,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位。
另外,对于某些特殊的情况,视频编码器也可以直接编码图像的原始值,而不是残差值。
上述视频编码器102以及视频解码器112也可以通过另外一种实现形态来实现,例如,采用通用的数字处理系统实现,参见图6,图6为本申请实施例提供的图像编解码装置的组成示意图,该图像编解码装置可以应用于编码侧(或者说编码端),也可以应用于解码侧(或者说解码端)。如图6所示,该图像编解码装置包括处理器41和存储器42。处理器41与存储器42相连接(例如通过总线43互相连接)。可选地,该编解码装置还可以包括通信接口44,通信接口44连接处理器41和存存储器42,用于接收/发送数据。
处理器41,用于执行存储器42中存储的指令,以实现本申请下述实施例提供的图像编解码方法。处理器41可以是中央处理器(central processing unit,CPU)、通用处理器网络处理器(network processor,NP)、数字信号处理器(digital signal processing,DSP)、微处理器、微控制器、可编程逻辑器件(programmable logic device,PLD)或它们的任意组合。处理器41还可以是其它任意具有处理功能的装置,例如电路、器件或软件模块,本申请实施例对此不作限制。在一种示例中,处理器41可以包括一个或多个CPU,例如图6中的CPU0和CPU1。作为一种可选的实现方式,电子设备可以包括多个处理器,例如,除处理器41之外,还可以包括处理器45(图6中以虚线为例示出)。
存储器42,用于存储指令。例如,指令可以是计算机程序。可选地,存储器42可以是只读存储器(read-only memory,ROM)或可存储静态信息和/或指令的其他类型的静态存储设备,也可以是存取存储器(random access memory,RAM)或者可存储信息和/或指令的其他类型的动态存储设备,还可以是电可擦可编程只读存储器(electricallyerasableprogrammable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备等,本申请实施例对此不作限制。
需要说明的是,存储器42可以独立于处理器41存在,也可以和处理器41集成在一起。存储器42可以位于图像编解码装置内,也可以位于图像编解码装置外,本申请实施例对此不作限制。
总线43,用于在编解码装置所包括的各个部件之间传送信息。总线43可以是工业标准体系结构(industry standard architecture,ISA)线路、外部设备互连(peripheralcomponent interconnect,PCI)线路或扩展工业标准体系结构(extendedindustry standardarchitecture,EISA)线路等。总线43可以分为地址线路、数据线路、控制线路等。为便于表示,图6中仅用一条实线表示,但并不表示仅有一根线路或一种类型的线路。
通信接口44,用于与其他设备或其它通信网络进行通信。该其它通信网络可以为以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。通信接口44可以是模块、电路、收发器或者任何能够实现通信的装置。本申请实施例对此不作限制。
需要说明的是,图6中示出的结构并不构成对图像编解码装置的限定,除图6所示的部件之外,图像编解码装置可以包括比图示更多或更少的部件,或者某些部件的组合,或者不同的部件布置。
本申请实施例提供的图像编解码方法的执行主体可以是上述图像编解码装置,或者,图像编解码装置中安装的提供图像编解码功能的应用程序(application,APP);或者,图像编解码装置中的CPU;又或者,图像编解码装置中用于执行图像编解码方法的功能模块。本申请实施例对此不作限制。为了描述简单,以下统一以图像编解码装置为编码端或解码端为例进行描述。
下面结合附图对本申请实施例提供的图像编解码方法进行介绍。
图7为本申请实施例提供的一种图像编码方法的流程示意图。如图7所示,该图像编码方法包括S101至S203。
S101、编码端获取码流缓冲区的状态。
其中,码流缓冲区用于存储待编码块编码后得到的码流。码流缓冲区的状态为码流缓冲区在当前待编码块之前的第M个待编码块编码后的比特数,M也即上述的延迟块数,M为正整数。某一时刻的码流缓冲区的比特数是指截止到该时刻流入码流缓冲区的比特数与流出码流缓冲区的比特数之差。
例如,假设截止到当前待编码块之前第M个待编码块编码完成的时刻,流入码流缓冲区100bit,流出码流缓冲区80bit,则当前时刻获取到的当前待编码块之前第M个待编码块编码完成的时刻的码流缓冲区的状态变化量即为100-80=20bit,假设该第M个块之前码流缓冲区的状态累积量为20bit,则该第M个待编码块编码完成的时刻的码流缓冲区的状态即为累积量和变化量之和20+20=40bit。
一种可能的实现方式中,码流缓冲区可以包括主缓冲区和额外缓冲区。主缓冲区和额外缓冲区均用于存储待编码块编码后得到的码流。
可选地,主缓冲区和额外缓冲区可以是不同的物理存储分区。
例如,主缓冲区可以设置于存储设备1中,额外缓冲区可以设置于存储设备2中。
可选地,主缓冲区和额外缓冲区也可以是不同的逻辑存储分区。
例如,主缓冲区和额外缓冲区均可以设置于存储设备1中,也即主缓冲区和额外缓冲区为存储设备1中的不同的逻辑存储分区。
S102、当码流缓冲区的状态满足预设条件时,编码端对当前待编码块的预估比特数执行第一操作。
其中,预估比特数为在码流缓冲区的状态下预测的编码当前待编码块所需的比特数。第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数。惩罚参数指示的惩罚比特数可以参照下述具体实现过程中所述,此处不再赘述。
可选地,预设条件可以是基于码流缓冲区的状态确定的可用缓冲区大小小于额外缓冲区的可用空间,也即编码过程使用到了额外缓冲区的空间。在这种情况下,上述S102可以具体包括如下三个步骤:
步骤1、编码端基于码流缓冲区的状态,确定可用缓冲区大小。
其中,可用缓冲区大小用于表征预测的采用预估比特数对当前待编码块编码后,码流缓冲区的可用大小。
例如,编码端可以基于码流缓冲区的状态、当前待编码块的预估比特数、以及当前待编码块之前M个待编码块各自的预估比特数,确定可用缓冲区大小。
一种可能的实现方式中,上述步骤1可以具体包括:编码端获取在当前待编码块之前M个待编码块的预估比特数;编码端根据码流缓冲区和参考变化值之和,确定可用缓冲区大小。
其中,参考变化值为码流缓冲区M+1个块的固定流出比特数和码流缓冲区M+1个块的预估流入比特数的差。码流缓冲区M+1个块的固定流出比特数为每个待编码块的像素点的个数、预设像素深度、以及M+1的乘积。码流缓冲区M+1个块的预估流入比特数为当前待编码块的预估比特数与当前待编码块之前M个待编码块各自的预估比特数之和。
可选地,对于任意一个历史块,该历史块为待编码块之前M个待编码块中的任意一个,编码端可以直接获取编码该历史块时获取的预估比特数。
可选地,对于该任意一个历史块,编码端还可以获取该历史块的复杂度等级和当前待编码块的复杂度等级,并基于该历史块的复杂度等级和参考值之商,确定该历史块的预估比特数。
其中,参考值为当前待编码块的复杂度等级和当前待编码块的预估比特数的乘积。
可选地,编码端可以按照下述公式(1)计算得到历史块的预估比特数:
TargetRatet-i = complexityt-i / complexity * TargetRate 公式(1)
公式(1)中,TargetRatet-i表示历史块的预估比特数。complexityt-i表示历史块的复杂度等级。complexity表示当前待编码块的复杂度等级。TargetRate表示当前待编码块的预估比特数。
步骤2、编码端获取额外缓冲区阈值。
其中,额外缓冲区阈值用于表征额外缓冲区的可用空间。
一种可能的实现方式中,惩罚参数可以包括第一惩罚参数。在这种情况下,上述步骤2可以具体包括:当当前待编码块为当前待编码块所在的条带的结尾块时,编码端根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值。
其中,结尾块为需要填充预设占位比特的待编码块。该结尾块为初始传输延迟功能开启时需要填充占位比特的待编码块,初始传输延迟功能可以参照相关技术所述,此处不再赘述。结尾块可以包括多个。额外缓冲区的初始大小可以由管理人员预设在编码端中,其值和待编码块所在的图像的数据类型、预设BPP、以及延迟的块数相关,例如针对10bit的图像延迟2个块,该额外缓冲区的初始大小可以设置为8192bit。本申请实施例对额外缓冲区的初始大小的具体数值不作限制。参考乘积为参考排名和第一惩罚参数的乘积,参考排名为当前待编码块在结尾块中的排名。第一惩罚参数为参考排名每增加一个待编码块时,额外缓冲区阈值变小的数值,或者参考排名每增加一个待编码块时,额外缓冲区阈值的下降步长。
示例性地,以额外缓冲区的初始大小为1000bit为例,假设第一惩罚参数表示的下降步长为50bit,则当当前待编码块为第一个结尾块时,此时的额外缓冲区阈值即为1000-50×1=950bit,当当前待编码块为第二个结尾块时,此时的额外缓冲区阈值即为1000-50×2=900bit,当当前待编码块为第三个结尾块时,此时额外缓冲区阈值即为1000-50×3=850bit,…,以此类推,直至额外缓冲区阈值为0。
可选地,额外缓冲区阈值可以按照下述公式(1)计算得到:
ExtraBufferThreshold=Max(0,ExtraBufferThreshold-(1<<ExtraDecreaseStepLog2)))公式(2)
公式(2)中,ExtraBufferThreshold表示额外缓冲区阈值,初始化为额外缓冲区的初始大小(ExtraBufferSize)。ExtraDecreaseStepLog2表示第一惩罚参数以2为底的对数。ExtraDecreaseStepLog2用于控制额外缓冲区的覆盖范围,其值越大额外缓冲区的覆盖范围越小,且该值只影响编解码至结尾块时的额外缓冲区的覆盖范围。
可选地,当当前待编码块为结尾块之外的待编码块时,额外缓冲区为额外缓冲区的初始大小。
可选地,在上述步骤1之前,该方法还可以包括:编码端获取结尾块的数量;编码端根据额外缓冲区的初始大小与结尾块的数量,确定第一惩罚参数。
可选地,第一惩罚参数可以按照下述公式(2)计算得到:
/>
公式(3)中,EndControlBlocks表示结尾块的数量。
可选地,上述ExtraBufferDecreaseStepLog2的值可以是小于或等于DecreaseStepLog2的值,DecreaseStepLog2表示在条带的结尾处填充的预设占位比特在每个待编码块中增加的步长,以2为底的对数。
例如,假设在第一个结尾块中填充的占位比特为50bit,且该步长为50bit,则在第二个结尾块中填充的占位比特即为50+50=100bit,在第三个结尾块中填充的占位比特即为50+50+50=150bit,…,以此类推。
当ExtraBufferDecreaseStepLog2=DecreaseStepLog2时,也即在条带的结尾块先向额外缓冲区中填充占位比特,填满后额外缓冲区消失,此时不再对预估比特数执行第一操作。
可选地,上述ExtraBufferDecreaseStepLog2的值也可以是大于DecreaseStepLog2的值,当ExtraBufferDecreaseStepLog2过大,例如大于预设的惩罚阈值时,从条带的第一个结尾块开始就不存在额外缓冲区,此处也不再对预估比特数执行第一操作。
其中,惩罚阈值与额外缓冲区的大小相关。例如,以额外缓冲区的大小为8192bit为例,则该惩罚阈值可以为1408bit。
应理解,结尾块通常为一个条带中编码顺序靠后的若干个待编码块(图像块),一个条带越接近编码完成时,当前待编码块在结尾块中的参考排名越大,参考乘积越大,额外缓冲区阈值越小,当前待编码块的预估比特数越不容易被执行第一操作,将更多的编码块填入额外缓冲区,充分利用编码资源。
另一种可能的实现方式中,编码端可以直接将额外缓冲区的初始大小确定为额外缓冲区阈值。在这种可能的实施例中,能够充分确保缓冲机制的存在。
步骤3、当可用缓冲区大小小于额外缓冲区阈值时,编码端对当前待编码块的预估比特数执行第一操作。
一种可能的实现方式中,惩罚参数还包括第二惩罚参数,该第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待编码块的数量。在这种情况下,在编码端对当前待编码块的预估比特数执行第一操作之前,该方法还包括:编码端获取当前待编码块所在的条带中,剩余的待编码块的数量;若剩余的待编码块的数量小于第二惩罚参数,则对当前待编码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为当前剩余的待编码块的数量和预设像素深度的乘积。
另一种可能的实现方式中,若当前剩余的待编码块的数量大于第二惩罚参数,则对当前待编码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
可选地,编码端可以根据下述公式(4)至公式(6)计算得到执行第一操作后的预估比特数:
ExtraBufferPenaltyLog2=MIN(RemainBlksLog2,ExtraBufferPenaltyLog2)公式(4)
公式(4)中,ExtraBufferPenaltyLog2表示第二惩罚参数以2为底的对数,该值为3时表示期望消耗额外缓冲区中的比特数所需的待编码块的数量为8,ExtraBufferPenaltyLog2用于调节惩罚力度,其值越大惩罚力度越小,影响全部块的惩罚比特数。RemainBlksLog2表示当前剩余的待编码块的数量以2为底的对数,其值最小为0。
当ExtraBufferPenaltyLog2等于2时,
TargetRate=Max(0,TargetRate–((ExtraBufferThreshold-availableBuffer))公式(5)
当ExtraBufferPenaltyLog2小于2时,
TargetRate=Max(0,TargetRate–((ExtraBufferThreshold-availableBuffer)<<ExtraBufferPenaltyLog2))公式(6)
S103、编码端基于执行第一操作后的预估比特数,对当前待编码块进行编码。
例如,编码端可以根据执行第一操作后的预估比特数,确定当前待编码块的量化参数,并根据该量化参数对当前待编码块进行编码,具体过程可以参照上述编解码系统处所述,此处不再赘述。
一些可能的实施例中,若LosslessFlag等于1,当前编码单元(也即前述当前待编码块)亮度编码块和色度编码块的量化参数Qp[0]和Qp[1]均为0;否则,先根据当前编码单元的亮度复杂度等级ComplexityLevel[0]与色度复杂度等级ComplexityLevel[1]计算编码单元的量化参数MasterQp,再根据MasterQp计算当前编码单元亮度编码块和色度编码块的量化参数Qp[0]和Qp[1]。
根据当前编码单元的亮度复杂度等级ComplexityLevel[0]与色度复杂度等级ComplexityLevel[1]计算编码单元的量化参数MasterQp的具体过程如下:
physicalBufferLevelPrev=PhysicalBufferLevelRecord[CurrPos]
rcBufferLevelPrev=physicalBufferLevelPrev+(VirtualEndStuff<ExtraBufferSize?0:VirtualEndStuff–ExtraBufferSize)
avgLosslessBits=AvgLosslessBitsRecord[CurrPos]
bppAdj=(EndTargetFullness–physicalBufferLevelPrev)<<7
bppAdj=bppAdj>=0?bppAdj>>(5+RemainBlksLog2):–((–bppAdj)>>(5+RemainBlksLog2))
bppAdj=Clip3((–512,1536,bppAdj)
bpp=(bpp<<3)+bppAdj
shiftCurr=FullnessCalcShift–7
Fullness=(rcBufferLevelPrev×FullnessCalcMultiplier+((1<<shiftCurr)>>1))>>shiftCurr
bitsOffset=BitsOffset+(341–((43×bpp)>>7)
bitsOffset=Max(bitsOffset,0)
tmp=(avgLosslessBits>>7)–bitsOffset
tmp=Clip3(1,32,((tmp>>5)+1)>>1)
infoRatio=(bpp×InverseTable[tmp–1]+256)>>9
if(image_format==‘000’){/*YUV400*/
CuComplexityLevel=ComplexityLevel[0]
}else if(image_format==‘001’){/*YUV420*/
CuComplexityLevel=ComplexityDivide3Table[ComplexityLevel[1]+(ComplexityLevel[0]<<1)]
}else if(image_format==‘010’){/*YUV422*/
CuComplexityLevel=(ComplexityLevel[0]+ComplexityLevel[1])>>1
}else if(image_format==‘011’||image_format==‘100’){/*YUV444orRGB444*/
infoRatio=infoRatio>((77×(2+ChromaSampleRate))>>1)?(77×(2+ChromaSampleRate))>>1:infoRatio
CuComplexityLevel=ComplexityDivide3Table[ComplexityLevel[0]+(ComplexityLevel[1]<<1)]
}
losslessBits=LosslessBitsRecord[CurrPos][CuComplexityLevel]
relativeLosslessBits=Clip3(0,320,MaxLosslessBits–losslessBits)
tmp=(BppParam×bpp+512))>>10
minRate1=(tmp×Min(MaxLosslessBits,losslessBits)+64)>>7
tmp=160×Fullness
tmp=((tmp<<7)+1024)>>11
tmp=(192–tmp)×bpp
minRate2=((minRate2<<7)+8192)>>14
tmp=((Fullness–109)×32+8)>>4
tmp=bpp–tmp
minRate3=tmp–(relativeLosslessBits×(2+ChromaSampleRate))>>1
minRate=Max(Max(minRate1,minRate2),minRate3)
tmp=1121–((((Fullness×1083)<<7)+8192)>>14)
bppOffset1=tmp–(((ChromaSampleRate+2)×relativeLosslessBits+1)>>1)
bppOffset2=Max(1536–bpp,512)–relativeLosslessBits
bppOffset3=1554–((((457×Fullness)<<7)+2048)>>12)
bppOffset=Min(Min(bppOffset1,bppOffset2),bppOffset3)
if(CbPosY[0]==CurrSlicePosY){
bppOffset=Max(bppOffset,–128)
}
maxRate=Max(bpp+bppOffset,minRate)
TargetRate=(infoRatio×Max(0,losslessBits–bitsOffset)+64)>>7
TargetRate=Clip3(minRate,maxRate,TargetRate)
availableBuffer=MaxBufferSize–rcBufferLevelPrev+((bpp<<4)+(bpp<<3)–TargetRate–TargetRateRecord[(CurrPos+1)%3]–TargetRateRecord[(CurrPos+2)%3])>>2;
if(VirtualEndStuff>0){
ExtraBufferThreshold=Max(0,ExtraBufferThreshold–(1<<ExtraBufferDecreaseStepLog2))
}
if(available_buffer<ExtraBufferThreshold){
TargetRate=Max(0,TargetRate–((ExtraBufferThreshold–availableBuffer)>>(ExtraBufferPenaltyLog2–2)));
}
tmp=(TargetRate×InvElem+((1<<InvElemShift)>>1))>>InvElemShift
MasterQp=(losslessBits–tmp)<<3
其中,InverseTable以及ComplexityDivide3Table的定义为:InverseTable={1024,512,341,256,205,171,146,128,114,102,93,85,79,73,68,64,60,57,54,51,49,47,45,43,41,39,38,37,35,34,33,32},ComplexityDivide3Table={0,0,0,1,1,1,2,2,2,3,3,3,4}。
根据当前编码单元的亮度复杂度等级ComplexityLevel[0]与色度复杂度等级ComplexityLevel[1]查表1得到BiasInit,然后计算亮度量化参数Qp[0]以及色度量化参数Qp[1],Qp[2]。
Bias=(BiasInit×FormatBias)>>1
tmp=ChromaSampleRate×Bias
tmp=((tmp<<7)+128)>>8
Qp[0]=Clip3(0,MaxQp[0],(MasterQp–tmp)>>7)
Qp[1]=Clip3(0,MaxQp[1],(MasterQp+Bias)>>7)
Qp[2]=Qp[1]
表1
另一些可能的实施例中,在编码每个条带之前,还需要初始化码控的WarmUp数组、EndTargetFullness参数、以及ExtraBufferThreshold参数,具体过程如下:
for(j=0;j<5;j++){
WarmUp[j]=4
}
EndTargetFullness=((DelayBits–(3×(SubstreamSegmentSize–1)))×3)>>2
ExtraBufferThreshold=ExtraBufferSize
然后根据当前待编码块所在的图像的比特深度BitDepth[0]和图像格式ImageFormat查表2得到LosslessBits[i],AvgLosslessBits,BitsOffset,MaxLosslessBits以及BppParam的初始化值。
表2
根据ImageFormat查表3得到ChromaSampleRate,InvElem,InvElemShift以及FormatBias的初始化值。
表3
初始化参数LosslessBitsRecord[i][j],AvgLosslessBitsRecord[i],PhysicalBufferLevelRecord[i]以及CurrPos,具体过程如下:
for(i=0;i<3;i++){
for(j=0;i<5;j++){
LosslessBitsRecord[i][j]=LosslessBits[j]
}
AvgLosslessBitsRecord[i]=AvgLosslessBits
PhysicalBufferLevelRecord[i]=DelayBits
}
CurrPos=0
一些实施例中,该方法还可以包括:编码端将第一惩罚参数和第二惩罚参数编码入编码块的码流中。
本申请实施例提供的图像编码方法中,当码流缓冲区的状态满足预设条件时,编码端可以对当前待编码块的预估比特数执行第一操作,以减小预测的编码当前待编码块的预估比特数,预估比特数与量化参数呈反比,量化参数又与编码的码率呈反比,因此,预估比特数减小,编码当前待编码块时的码率也同时减小,从而避免在高速视频传输接口利用历史块的码流缓冲区状态来控制当前待编码块的编码码率时导致的码流缓冲区上溢。
相对应地,本申请实施例还提供一种图像解码方法。图8为本申请实施例提供的一种图像解码方法的流程示意图。如图8所示,该图像解码方法包括S201至S203。
S201、解码端获取码流缓冲区的状态。
其中,码流缓冲区用于存储待解码块解码后的码流。码流缓冲区的状态为码流缓冲区在当前待解码块之前的第M个待解码块解码后的比特数。
可选地,码流缓冲区可以包括主缓冲区和额外缓冲区。主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
S202、当码流缓冲区的状态满足预设条件时,解码端对当前待解码块的预估比特数执行第一操作。
其中,预估比特数为在码流缓冲区的状态下预测的解码当前待解码块所需的比特数。第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数。
可选地,预设条件可以是基于码流缓冲区的状态确定的可用缓冲区大小小于额外缓冲区的可用空间,在这种情况下,上述S202可以具体包括如下三个步骤:
步骤1、解码端基于码流缓冲区的状态,确定可用缓冲区大小。
其中,可用缓冲区大小用于表征预测的采用预估比特数对当前待解码块解码后,码流缓冲区的可用大小。
例如,解码端可以基于码流缓冲区的状态、当前待解码块的预估比特数、以及当前待解码块之前M个待解码块各自的预估比特数,确定可用缓冲区大小。
一种可能的实现方式中,上述步骤1可以具体包括:解码端获取在当前待解码块之前M个待解码块的预估比特数;解码端根据码流缓冲区和参考变化值之和,确定可用缓冲区大小。
其中,参考变化值为码流缓冲区M+1个块的固定流入比特数和码流缓冲区M+1个块的预估流出比特数的差。码流缓冲区M+1个块的固定流出比特数为每个待解码块的像素点的个数、预设像素深度、以及M+1的乘积。码流缓冲区M+1个块的预估流入比特数为当前待解码块的预估比特数与当前待解码块之前M个待解码块各自的预估比特数之和。
可选地,对于任意一个历史块,该历史块为待解码块之前M个待解码块中的任意一个,解码端可以直接获取解码该历史块时获取的预估比特数。
可选地,对于该任意一个历史块,解码端还可以获取该历史块的复杂度等级和当前待解码块的复杂度等级,并基于该历史块的复杂度等级和参考值之商,确定该历史块的预估比特数。
其中,参考值为当前待解码块的复杂度等级和当前待解码块的预估比特数的乘积。
步骤2、解码端获取额外缓冲区阈值。
其中,额外缓冲区阈值用于表征额外缓冲区的可用空间。
一种可能的实现方式中,惩罚参数可以包括第一惩罚参数。在这种情况下,上述步骤2可以具体包括:当当前待解码块为当前待解码块所在的条带的结尾块时,解码端根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值。
其中,结尾块为需要填充预设占位比特的待解码块。
可选地,当当前待解码块为结尾块之外的解码块时,额外缓冲区为额外缓冲区的初始大小。
可选地,在上述步骤1之前,该方法还可以包括:解码端从码流缓冲区存储的码流中解析出第一惩罚参数。
另一种可能的实现方式中,解码端可以直接将额外缓冲区的初始大小确定为额外缓冲区阈值。
步骤3、当可用缓冲区大小小于额外缓冲区阈值时,解码端对当前待解码块的预估比特数执行第一操作。
一种可能的实现方式中,惩罚参数还包括第二惩罚参数,该第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待解码块的数量。在这种情况下,在解码端对当前待解码块的预估比特数执行第一操作之前,该方法还包括:解码端从码流缓冲区中存储的码流中解析出第二惩罚参数;解码端获取当前待解码块所在的条带中,剩余的待解码块的数量;若剩余的待解码块的数量小于第二惩罚参数,则对当前待解码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为当前剩余的待解码块的数量和预设像素深度的乘积。
另一种可能的实现方式中,若当前剩余的待解码块的数量大于第二惩罚参数,则对当前待解码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
S203、解码端基于执行第一操作后得到的预估比特数,对当前待解码块进行解码。
例如,解码端可以根据执行第一操作后的预估比特数,确定当前待解码块的量化参数,并根据该量化参数对当前待解码块进行解码,具体过程可以参照上述解解码系统处所述,此处不再赘述。
基于上述图8的理解,本申请实施例提供的一种图像解码方法可以具体包括以下几个步骤:
a)解码端解析码流缓冲区的状态(或者说额外缓冲区的相关信息);
b)解码端解码复杂度信息
c)解码端计算量化参数
步骤a)-c)可以参照上述一种解码方法中所述,不再赘述。
d)解码端介于预测模式和量化参数解析残差系数;
e)解码端基于预测模式,得到当前待解码块(或者说解码单元)各个像素点的预测值;
f)解码端基于残差系数解码获得当前待解码块(或者说解码单元)各个像素点的残差值;
g)解码端基于当前待解码块(或者说解码单元)各个像素点的预测值和残差值获得其重建值。
一些可能的实施例中,还可以通过对量化参数进行修正来降低码率。图9为本申请实施例提供的另一种图像编码方法的流程示意图。如图9所示,该图像编码方法包括S301至S303。
S301、编码端获取码流缓冲区的状态。
其中,码流缓冲区用于存储待编码块编码后得到的码流;所述码流缓冲区的状态为所述码流缓冲区在所述当前待编码块之前的第M个待编码块编码后的比特数。
一种可能的实现方式中,码流缓冲区可以包括主缓冲区和额外缓冲区。主缓冲区和额外缓冲区均用于存储待编码块编码后得到的码流。主缓冲区和额外缓冲区可以是不同的物理存储分区,或者,不同的逻辑存储分区。
S302、当码流缓冲区的装填满足预设条件时,编码端对当前待编码块的预估量化参数执行第二操作,以得到当前待编码块的目标量化参数。
其中,预估量化参数是基于预估比特数得到的,预估比特数为在码流缓冲区的状态下预测的编码当前待编码块所需的比特数。第二操作是指将预估量化参数增加参考量化参数,参考量化参数是基于惩罚参数指示的惩罚比特数确定的。
可选地,S302可以具体包括如下三个步骤:
步骤1、编码端基于码流缓冲区的状态,确定可用缓冲区大小。
步骤2、编码端获取额外缓冲区阈值。
需要说明的是,S302具体包括的步骤1和步骤2可以参照上述S101具体包括的步骤1和步骤2处所述,此处不再赘述。
步骤3、当可用缓冲区大小小于额外缓冲区阈值时,编码端对当前待编码块的预估量化参数执行第二操作。
一种可能的实现方式中,惩罚参数还包括第二惩罚参数,该第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待编码块的数量。在这种情况下,在编码端对当前待编码块的预估量化参数执行第二操作之前,该方法还包括:编码端获取当前待编码块所在的条带中,剩余的待编码块的数量;若剩余的待编码块的数量小于第二惩罚参数,则对当前待编码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为当前剩余的待编码块的数量和预设像素深度的乘积。
另一种可能的实现方式中,若当前剩余的待编码块的数量大于第二惩罚参数,则对当前待编码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
可选地,编码端对当前待编码块的预估量化参数执行第二操作,可以包括:编码端根据第二惩罚参数和预设像素深度的乘积,确定惩罚比特数;编码端根据惩罚比特数,确定参考量化参数;编码端根据预估量化参数和参考量化参数的和,确定当前待编码块的目标量量化参数。
其中,编码端根据惩罚比特数确定参考量化参数的过程可以参照上述S103处一些可能的实施例中确定量化参数的过程所述,此处不再赘述。
可选地,编码端可以按照下述公式(7)计算得到惩罚比特数:
DeltaRate=(ExtraBufferThreshold-availableBuffer)>>(ExtraBufferPenaltyLog2-2)公式(7)
公式(7)中,DeltaRate表示惩罚比特数。
可选地,编码端根据惩罚比特数计算得到参考量化参数的过程具体如下:
tmp=(DeltaRate×InvElem+((1<<InvElemShift)>>1))>>InvElemShift
MasterQp=(losslessBits–tmp)<<3
其中,InverseTable以及ComplexityDivide3Table的定义为:InverseTable={1024,512,341,256,205,171,146,128,114,102,93,85,79,73,68,64,60,57,54,51,49,47,45,43,41,39,38,37,35,34,33,32},ComplexityDivide3Table={0,0,0,1,1,1,2,2,2,3,3,3,4}。
根据当前编码单元的亮度复杂度等级ComplexityLevel[0]与色度复杂度等级ComplexityLevel[1]查表1得到BiasInit,然后计算参考亮度量化参数AdjQp[0]以及参考色度量化参数AdjQp[1],AdjQp[2]。
Bias=(BiasInit×FormatBias)>>1
tmp=ChromaSampleRate×Bias
tmp=((tmp<<7)+128)>>8
AdjQp[0]=Clip3(0,MaxQp[0],(MasterQp–tmp)>>7)
AdjQp[1]=Clip3(0,MaxQp[1],(MasterQp+Bias)>>7)
AdjQp[2]=Qp[1]
可选地,编码端可以按照下述公式(8)计算得到当前待编码块的目标量化参数。
QP[i]=Clip3(0,MaxQp[i],BaseQP[i]+AdjQP[i]) 公式(8)
公式(8)中,QP[i]表示当前待编码块的目标量化参数。BaseQP[i]表示当前待编码块的预估量化参数。AdjQP[i]表示参考量化参数,i取0、1、或2。
S303、编码端基于执行第二操作后得到的目标量化参数,对当前待编码块进行编码。
S303的具体过程可以参照上述编解码系统处所述,此处不再赘述。
本申请实施例提供的图像编码方法中,当码流缓冲区的状态满足预设条件时,编码端可以对当前待编码块的预估量化参数执行第二操作,以得到增加了参考量化参数之后的目标量化参数,量化参数与编码的码率呈反比,因此,量化参数增加,编码当前待编码块时的码率也同时减小,从而避免在高速视频传输接口利用历史块的码流缓冲区状态来控制当前待编码块的编码码率时导致的码流缓冲区上溢。
相对应地,本申请实施例还提供一种图像解码方法。图10为本申请实施例提供的另一种图像解码方法的流程示意图。如图10所示,该图像解码方法包括S401至S403。
S401、解码端获取码流缓冲区的状态。
其中,码流缓冲区用于存储待解码块的码流。码流缓冲区的状态为码流缓冲区在当前待解码块之前的第M个待解码块解码后的比特数。
可选地,码流缓冲区可以包括主缓冲区和额外缓冲区。主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
S402、当码流缓冲区的状态满足预设条件时,解码端对当前待解码块的预估量化参数执行第二操作,以得到当前待解码块的目标量化参数。
其中,预估比特数为在码流缓冲区的状态下预测的解码当前待解码块所需的比特数。第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数。
可选地,上述S402可以具体包括如下三个步骤:
步骤1、解码端基于码流缓冲区的状态,确定可用缓冲区大小。
步骤2、解码端获取额外缓冲区阈值。
需要说明的是,S402具体包括的步骤1和步骤2可以参照上述S202具体包括的步骤1和步骤2处所述,此处不再赘述。
步骤3、当可用缓冲区大小小于额外缓冲区阈值时,解码端对当前待解码块的预估量化参数执行第二操作,以得到当前待解码块的目标量化参数。
一种可能的实现方式中,惩罚参数还包括第二惩罚参数,该第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待解码块的数量。在这种情况下,在解码端对当前待解码块的预估量化参数执行第二操作之前,该方法还包括:解码端从码流缓冲区中存储的码流中解析处第二惩罚参数;解码端获取当前待解码块所在的条带中,剩余的待解码块的数量;若剩余的待解码块的数量小于第二惩罚参数,则对当前待解码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为当前剩余的待解码块的数量和预设像素深度的乘积。
另一种可能的实现方式中,若当前剩余的待解码块的数量大于第二惩罚参数,则对当前待解码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
可选地,解码端对当前待解码块的预估量化参数执行第二操作,可以包括:解码端根据第二惩罚参数和预设像素深度的乘积,确定惩罚比特数;解码端根据惩罚比特数,确定参考量化参数;解码端根据预估量化参数和参考量化参数的和,确定当前待解码块的目标量化参数。
其中,解码端根据第二惩罚参数和预设像素深度的乘积,确定惩罚比特数的过程可以参照上述公式(7)所示,此处不再赘述。解码端根据惩罚比特数,确定参考量化参数的过程可以参照上述S103处一些可能的实施例中确定量化参数的过程所述,此处不再赘述。解码端根据惩罚比特数,确定参考量化参数的过程可以参照上述S302中的步骤3处的代码所示,此处不再赘述。解码端根据预估量化参数和参考量化参数的和,确定当前待解码块的目标量化参数可以参照上述公式(8)所示,此处不再赘述。
S403、解码端基于执行第二操作后得到的目标量化参数,对当前待解码块进行解码。
S403的具体过程可以参照上述解解码系统处所述,此处不再赘述。
一些可能的实施例中,编码端可以开启子流并行功能,在子流并行功能开启的情况下,编码端可以利用多个熵编码器(模块)将当前待编码块的不同通道进行编码得到多个子流,并将多个子流填充如各自对应的子流缓冲区,并按照预设的交织规则将子流缓冲区中的子流交织成码流。
需要说明的是,考虑到子流之间的依赖性,不同的子流缓冲区中填充子流的速度不同,同一时间填充速度较快的子流缓冲区比填充速度较慢的子流缓冲区中填充的子流位数多,为了保证填充数据的完整性,需要将所有的子流缓冲区设置得较大,增加了硬件成本。为了节约硬件成本,提出了一种防膨胀模式,防膨胀模式表示所有预测模式中比特代价最大的模式,通常比特代价最大的模式是指直接编码当前待编码块的原始像素值的编码模式。
可选地,针对一种N通道的图像,N通道各自的比特深度(bitDepth)可以不同,当对该N通道的图像进行编码时,如果某个待编码块经过率失真优化选中了防膨胀模式(防膨胀模式参与率失真优化),或者某个待编码块经过率失真优化选中的最优模式的比特代价比防膨胀模式的比特代价高(防膨胀模式不参与率失真优化)时,为了节约硬件成本,防止子流缓冲区膨胀,此时编码端会选中防膨胀模式,此时防膨胀模式的比特代价是按照N通道中比特深度最小的通道的比特深度对N个通道进行编码得到的代价,也即部分通道的编码是有损的。
基于上述理解,本申请实施例还提供了又一种图像编码方法,该方法包括:编码端根据亮度通道的比特深度对亮度通道、第一色度通道、以及第二色度通道,按照防膨胀模式对亮度通道的待编码块、第一色度通道的待编码块、以及第二色度通道的待编码块进行编码。
应理解,将RGB转换为YCoCg格式会导致Co通道和Cg通道的比特深度比Y通道多1比特,本申请实施例此时规定防膨胀模式以Y通道的比特深度对Y通道的待编码块、Co通道的待编码块、以及Cg通道的待编码块进行编码,三个通道的编码块整体的预估比特数较小,从而减少在高速视频传输接口利用历史块的码流缓冲区状态来控制当前待编码块的编码码率时导致的码流缓冲区上溢。
相对应地,本申请实施例还提供又一种图像解码方法,该方法包括:解码端从待解码块的码流中解析模式标志;模式标志用于指示编码待编码块时所采用的编码模式;当该模式标志指示的编码模式为防膨胀模式时,解码端按照亮度通道的比特深度、以及防膨胀模式对当前待解码块进行解码。
可选地,同样在子流并行功能开启的情况下,各通道的子流通过不同的子流缓冲区传输,且量化参数是推导得出无需传输。在这种情况下,亮度通道传输亮度的复杂度信息,第一色度通道传输第一色度和亮度的复杂度信息的第一关系标记,第一关系标记用于表示第一色度通道的复杂度信息和亮度的复杂度信息之间的大小关系,第二色度通道传输第二色度和亮度的复杂度信息的第二关系标记,第二关系标记用于表示第二色度的复杂度信息和亮度的复杂度信息之间的大小关系。
例如,亮度的复杂度信息包括5类:0、1、2、3、或4。则第一色度通道中传输的第一关系标记可以包括0、1、或2,其中0表示第一色度的复杂度信息和亮度的复杂度信息一致,1表示第一色度的复杂度信息比亮度的复杂度信息小,2表示第一色度的复杂度信息比亮度的复杂度信息大。第二色度通道中传输的第二关系标记可以包括0、1、或2,其中0表示第二色度的复杂度信息和亮度的复杂度信息一致,1表示第二色度的复杂度信息比亮度的复杂度信息小,2表示第二色度的复杂度信息比亮度的复杂度信息大。
复杂度信息的变化会从两方面影响码率控制:
1、确定当前待编码块(或者又可以称作编码单元)的复杂度等级。
2、确定各通道的量化参数。
基于上述理解,本申请实施例还提供了又一种图像编码方法,该方法包括以下几个步骤:
步骤1、编码端获取当前待编码块。
其中,当前待编码块又可以理解为编码单元,编码单元包括YUV三个个通道的编码块。
步骤2、编码端获取三个通道中每个通道的编码块的复杂度信息。
其中,复杂度信息用于表征每个通道的编码块的像素值的差异程度。例如,亮度通道的编码块的复杂度信息用于表征亮度通道的编码块的像素值的差异程度;第一色度通道的编码块的复杂度信息用于表征第一色度通道的编码块的像素值的差异程度;第二色度通道的编码块的复杂度信息用于表征第二色度通道的编码块的像素值的差异程度;
步骤3、编码端根据每个通道的编码块的复杂度等级确定当前待编码块的复杂度等级。
一种可能的实现方式中,编码端可以直接将亮度通道的编码块的复杂度等级作为编码单元的复杂度等级,也即CuComplexityLevel==ComplexityLevel[0]。
另一种可能的实现方式中,若亮度通道的编码块的复杂度等级为1,则第一色度通道的编码块的复杂度等级为1-1=0;否则,亮度通道的编码块的复杂度等级为2,则第一色度通道的编码块的复杂度等级为2+1=3;否则,第一色度通道的编码块的复杂度等级等于亮度通道的编码块的复杂度等级。第二色度通道的编码块的复杂度等级可以参照上述第一色度通道的编码块的复杂度等级所述,不再赘述。编码端获取了三个通道的复杂度等级后加权平均得到编码单元的复杂度等级,第一色度和第二色度的复杂度等级的均值作为色度的复杂度等级。
一些可能的实施例中,该方法还可以包括:编码端根据第一通道的复杂度信息修正YUV三个个通道的量化参数。
其中,第一通道为YUV三个通道中的任意一个通道。
例如,若亮度通道的复杂度信息为1,则第一色度通道的量化参数为亮度通道的量化参数和经验值之差;否则亮度通道的复杂度信息为2,则第一色度通道的量化参数为亮度通道的量化参数和经验值之和。第二色度通道的量化参数可以参照上述第一色度通道的量化参数的确定过程,不再赘述。
例如,经验值可以取1。
相对应地,本申请实施例还提供又一种图像解码方法,该方法包括以下几个步骤:
步骤1、解码端亮度通道中解析亮度通道的复杂度信息。
步骤2、解码端从第一色度通道解析第一关系标记。
步骤3、解码端从第二色度通道解析第二关系标记。
步骤4、解码端基于亮度通道的复杂度信息、第一关系标记、以及第二关系标记,确定亮度通道的复杂度等级、第一色度通道的复杂度等级、以及第二色度通道的复杂度等级。
步骤5、解码端基于亮度通道的复杂度等级、第一色度通道的复杂度等级、以及第二色度通道的复杂度等级,确定当前待解码块的复杂度等级。
可选地,该方法还可以包括:解码端基于亮度通道的复杂度信息、第一关系标记、以及第二关系标记,确定第一色度通道的复杂度信息和第二色度通道的复杂度信息,并基于亮度通道的复杂度信息、第一色度通道的复杂度信息、以及第二色度通道的复杂度信息,确定亮度通道的量化参数、第一色度通道的量化参数、以及第二色度通道的量化参数。
在一些实施例中,本申请实施例还提供了一种位移量化方法,以降低硬件成本,提升可编程逻辑控制器(programmable logic controller,PLC)标准竞争力。
PLC标准的现有量化方案为8点分数量化,量化步长为Qstep=2^(QP/8),QP的取值范围是0-8×bitdepth-1。
8点分数量化主要包括以下三个改动:
改动1、将码控导出的QP对齐到8的倍数。
改动1的具体过程为:
luma_qp=((luma_qp+3)>>3)<<3;
chroma_qp=((chroma_qp+3)>>3)<<3;
其中,luma_qp和chroma_qp是码控导出的亮色度QP,luma_qp也即lumaQP和Qp[0],chroma_qp也即chromaQP、Qp[1]、以及Qp[2],舍入偏移量为3表示对齐的方式是按照Qstep进行四舍五入,具体参见表4。
表4
改动2、适应性修改驻点量化技术的参数。
逐点量化技术对QP的调整方式包括以下两个部分:
a)根据BitDepth[component]确定参数jndQp、adjustMaxQp和resiThresjndQp的值,具体过程如下:
bdIdx=Clip3(0,8,BitDepth[component]–8)
jndQp=(bdIdx<<2)+16((bdIdx>>1)<<3)+16
adjustMaxQp=((bdIdx>>1)<<3)+32
resiThres=10<<(bdIdx>>1)
b)确定残差样本的量化参数PixelQp,具体过程如下:
1)如果Qp[component]大于jndQp且Qp[component]小于或等于adjustMaxQp,且PredResiTmp小于或等于resiThres,则:
PixelQp=Max(Qp[component]–4 8,jndQp)
2)否则,令PixelQp等于Qp[component]。
改动3、masterQP导出亮色度QP时的舍入操作由floor改为round。
改动3的具体过程如下:
Bias=(BiasInit×FormatBias)>>1
tmp=ChromaSampleRate×Bias
tmp=((tmp<<7)+128)>>8
Qp[0]=Clip3(0,MaxQp[0],(MasterQp–tmp+64)>>7)
Qp[1]=Clip3(0,MaxQp[1],(MasterQp+Bias+64)>>7)
Qp[2]=Qp[1]
在此基础上,本申请实施例提供了两种位移量化的改进方案:
改进方案一:允许使用以下两种方式将亮色度QP对齐到8的倍数。
方式1:按照Qstep四舍五入的方法,具体可以参照上述8点分数量化中所述,此处不再赘述。
方式2:将亮度QP向下对齐,色度QP向上对齐。该方式仅用于替换方式1中亮色度QP都要向上对齐的情况。
其中,方式1或方式2的选择原则为:保证总的QP变化量的绝对值最小;若绝对值相等,则选择变化量为负数的方式(失真优先);若还相等,则选择方式1。具体选择过程如表5所示。
表5
改进方案二:先对色度QP进行舍入操作,然后将色度QP的舍入误差补偿到亮度QP上,再对亮度QP进行舍入,从而降低整个待编码块(或者说编码单元)的舍入误差,具体过程如下述表6所示。
表6
lumaQP=masteQP-sampleRate*bias 公式(9)
chromaQP=masterQP+bias 公式(10)
lumaQP+sampleRate*chromaQP=(1+sampleRate)*masteQP 公式(11)
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术目标应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术目标可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在示例性的实施例中,本申请实施例还提供一种图像编码装置。图11为本申请实施例提供的图像编码装置的组成示意图。如图11所示,该装置包括:获取模块1101和处理模块1102。
获取模块1101,用于获取码流缓冲区的状态;码流缓冲区用于存储待编码块编码后得到的码流;码流缓冲区的状态为码流缓冲区在当前待编码块之前的第M个待编码块编码后的比特数;M为正整数。
处理模块1102,用于当码流缓冲区的状态满足预设条件时,对当前待编码块的预估比特数执行第一操作;预估比特数为在码流缓冲区的状态下预测的编码当前待编码块所需的比特数;第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数;基于执行第一操作后的预估比特数,对当前待编码块进行编码。
一些可能的实施例中,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
另一些可能的实施例中,处理模块1102,具体用于基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待编码块编码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区大小小于额外缓冲区阈值时,对当前待编码块的预估比特数执行第一操作。
又一些可能的实施例中,处理模块1102,具体用于当当前待编码块为当前待编码块所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待编码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待编码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待编码块时,额外缓冲区阈值变小的数值。
又一些可能的实施例中,当当前待编码块为结尾块之外的待编码块时,额外缓冲区阈值为额外缓冲区的初始大小。
又一些可能的实施例中,在获取额外缓冲区阈值之前,获取模块1101,还用于获取结尾块的数量;处理模块1102,还用于根据额外缓冲区的初始大小与结尾块的数量,确定第一惩罚参数。
又一些可能的实施例中,处理模块1102,具体用于将额外缓冲区的初始大小确定为额外缓冲区阈值。
又一些可能的实施例中,处理模块1102,具体用于获取在当前待编码块之前M个待编码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区M+1个块的固定流出比特数和码流缓冲区M+1个块的预估流入比特数的差;码流缓冲区M+1个块的固定流出比特数为每个待编码块的像素点的个数、预设像素深度、以及M+1的乘积;码流缓冲区M+1个块的预估流入比特数为当前待编码块的预估比特数与当前待编码块之前M个待编码块各自的预估比特数之和。
又一些可能的实施例中,处理模块1102,具体用于获取历史块的复杂度等级和当前待编码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待编码块的复杂度等级和当前待编码块的预估比特数的乘积。
又一些可能的实施例中,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待编码块的数量;在对当前待编码块的预估比特数执行第一操作之前,获取模块1101,还用于获取当前待编码块所在的条带中,剩余的待编码块的数量;若剩余的待编码块的数量小于第二惩罚参数,则对当前待编码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为当前剩余的待编码块的数量和预设像素深度的乘积。
又一些可能的实施例中,若当前剩余的待编码块的数量大于第二惩罚参数,则对当前待编码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
在示例性的实施例中,本申请实施例还提供一种图像解码装置。图12为本申请实施例提供的图像解码装置的组成示意图。如图12所示,该装置包括:获取模块1201和处理模块1202。
获取模块1201,用于获取码流缓冲区的状态;码流缓冲区用于存储待解码块解码后的码流;码流缓冲区的状态为码流缓冲区在当前待解码块之前的第M个待解码块解码后的比特数;M为正整数。
处理模块12021,用于当码流缓冲区的状态满足预设条件时,对当前待解码块的预估比特数执行第一操作;预估比特数为在码流缓冲区的状态下预测的解码当前待解码块所需的比特数;第一操作是指将预估比特数减小惩罚参数指示的惩罚比特数;基于执行第一操作后得到的预估比特数,对当前待解码块进行解码。
一些可能的实施例中,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
另一些可能的实施例中,处理模块12021,具体用于基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待解码块解码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区大小小于额外缓冲区阈值时,对当前待解码块的预估比特数执行第一操作。
又一些可能的实施例中,处理模块12021,具体用于当当前待解码块为当前待解码块所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为填充了预设的占位比特的待解码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待解码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待解码块时,额外缓冲区的大小变小的数值。
又一些可能的实施例中,当当前待解码块为结尾块之外的解码块时,额外缓冲区阈值为额外缓冲区的初始大小。
又一些可能的实施例中,在获取额外缓冲区阈值之前,处理模块12021,还用于从码流缓冲区中存储的码流中解析出第一惩罚参数。
又一些可能的实施例中,处理模块12021,具体用于将额外缓冲区的初始大小确定为额外缓冲区阈值。
又一些可能的实施例中,处理模块12021,具体用于获取在当前待解码块之前M个待解码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区M+1个块的固定流入比特数和码流缓冲区M+1个块的预估流出比特数的差;码流缓冲区M+1个块的固定流出比特数为每个待解码块的像素点的个数、预设像素深度、以及M+1的乘积;码流缓冲区M+1个块的预估流入比特数为当前待解码块的预估比特数与当前待解码块之前M个待解码块各自的预估比特数之和。
又一些可能的实施例中,在根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小之前,获取模块1201,还用于获取历史块的复杂度等级和当前待解码块的复杂度等级;历史块为当前待解码块之前M个待解码块中的任意一个待解码块;处理模块1202,还用于基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待解码块的复杂度等级和当前待解码块的预估比特数的乘积。
又一些可能的实施例中,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待解码块的数量;在对当前待解码块的预估比特数执行第一操作之前,处理模块1202,还用于从码流缓冲区中存储的码流中解析出第二惩罚参数;获取当前待解码块所在的条带中,剩余的待解码块的数量;若剩余的待解码块的数量小于第二惩罚参数,则对当前待解码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为当前剩余的待解码块的数量和预设像素深度的乘积。
又一些可能的实施例中,若当前剩余的待解码块的数量大于第二惩罚参数,则对当前待解码块的预估比特数执行的第一操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
在示例性的实施例中,本申请实施例还提供另一种图像编码装置。图13为本申请实施例提供的另一种图像编码装置的组成示意图。如图13所示,该装置包括:获取模块1301和处理模块1302。
获取模块1301,用于获取码流缓冲区的状态;码流缓冲区用于存储待编码块编码后得到的码流;码流缓冲区的状态为码流缓冲区在当前待编码块之前的第M个待编码块编码后的比特数;M为正整数;
处理模块1302,用于当码流缓冲区的状态满足预设条件时,对当前待编码块的预估量化参数执行第二操作,以得到当前待编码块的目标量化参数;预估量化参数是基于预估比特数得到的;预估比特数为在码流缓冲区的状态下预测的编码当前待编码块所需的比特数;第二操作是指将预估量化参数增加参考量化参数;参考量化参数是基于惩罚参数指示的惩罚比特数确定的;基于执行第二操作后得到的目标量化参数,对当前待编码块进行编码。
一些可能的实施例中,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
另一些可能的实施例中,处理模块1302,具体用于基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待编码块编码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区的大小小于额外缓冲区阈值时,对当前待编码块的预估量化参数执行第二操作。
又一些可能的实施例中,惩罚参数包括第一惩罚参数;处理模块1302,具体用于当当前待编码块为当前待编码所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待编码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待编码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待编码块时,额外缓冲区阈值变小的数值。
又一些可能的实施例中,当当前待编码块为结尾块之外的待编码块时,额外缓冲区阈值为额外缓冲区的初始大小。
又一些可能的实施例中,在获取额外缓冲区阈值之前,获取模块1301还用于获取结尾块的数量;处理模块1302,还用于根据额外缓冲区的初始大小与结尾块的数量,确定第一惩罚参数。
又一些可能的实施例中,处理模块1302,具体用于将额外缓冲区的初始大小确定为额外缓冲区阈值。
又一些可能的实施例中,处理模块1302,具体用于获取在当前待编码块之前M个待编码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区M+1个块的固定流出比特数和码流缓冲区M+1个块的预估流入比特数的差;码流缓冲区M+1个块的固定流出比特数为每个待编码块的像素点的个数、预设像素深度、以及M+1的乘积;码流缓冲区M+1个块的预估流入比特数为当前待编码块的预估比特数与当前待编码块之前M个待编码块各自的预估比特数之和。
又一些可能的实施例中,针对历史块,历史块为当前待编码块之前M个待编码块中的任意一个待编码块,处理模块1302,具体用于获取历史块的复杂度等级和当前待编码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待编码块的复杂度等级和当前待编码块的预估比特数的乘积。
又一些可能的实施例中,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待编码块的数量;在对当前待编码块的预估量化参数执行第二操作之前,获取模块1301,还用于获取当前待编码块所在的条带中,剩余的待编码块的数量;若剩余的待编码块的数量小于第二惩罚参数,则对当前待编码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为当前剩余的待编码块的数量和预设像素深度的乘积。
又一些可能的实施例中,其特征在于,若当前剩余的待编码块的数量大于第二惩罚参数,则对当前待编码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
在示例性的实施例中,本申请实施例还提供另一种图像解码装置。图14为本申请实施例提供的另一种图像解码装置的组成示意图。如图14所示,该装置包括:获取模块1401和处理模块1402。
获取模块1401,用于获取码流缓冲区的状态;码流缓冲区用于存储待解码块解码后的码流;码流缓冲区的状态为码流缓冲区在当前待解码块之前的第M个待解码块解码后的比特数;M为正整数。
处理模块1402,用于当码流缓冲区的状态满足预设条件时,对当前待解码块的预估量化参数执行第二操作,以得到当前待解码块的目标量化参数;预估量化参数是基于预估比特数得到的;预估比特数为在码流缓冲区的状态下预测的解码当前待解码块所需的比特数;第二操作是指将预估量化参数增加参考量化参数;参考量化参数是基于惩罚参数指示的惩罚比特数确定的;基于执行第二操作后得到的目标量化参数,对当前待解码块进行解码。
一些可能的实施例中,码流缓冲区包括主缓冲区和额外缓冲区;主缓冲区和额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
另一些可能的实施例中,处理模块1402,具体用于基于码流缓冲区的状态,确定可用缓冲区大小;可用缓冲区大小用于表征预测的采用预估比特数对当前待解码块解码后,码流缓冲区的可用大小;获取额外缓冲区阈值;额外缓冲区阈值用于表征额外缓冲区的可用空间;当可用缓冲区的大小小于额外缓冲区阈值时,对当前待解码块的预估量化参数执行第二操作。
又一些可能的实施例中,处理模块1402,具体用于当当前待解码块为当前待解码所在的条带的结尾块时,根据额外缓冲区的初始大小与参考乘积之差,确定额外缓冲区阈值;结尾块为需要填充预设占位比特的待解码块;参考乘积为参考排名和第一惩罚参数的乘积;参考排名为当前待解码块在结尾块中的排名;第一惩罚参数为参考排名每增加一个待解码块时,额外缓冲区阈值变小的数值。
又一些可能的实施例中,当当前待解码块为结尾块之外的待解码块时,额外缓冲区阈值为额外缓冲区的初始大小。
又一些可能的实施例中,在获取额外缓冲区阈值之前,处理模块1402,还用于从码流缓冲区中存储的码流中解析出第一惩罚参数。
又一些可能的实施例中,处理模块1402,具体用于将额外缓冲区的初始大小确定为额外缓冲区阈值。
又一些可能的实施例中,处理模块1402,具体用于获取在当前待解码块之前M个待解码块的预估比特数;根据码流缓冲区的状态和参考变化值之和,确定可用缓冲区大小;参考变化值为码流缓冲区M+1个块的固定流入比特数和码流缓冲区M+1个块的固定流出比特数的差;码流缓冲区M+1个块的固定流出比特数为每个待解码块的像素点的个数、预设像素深度、以及M+1的乘积;码流缓冲区M+1个块的预估流入比特数为当前待解码块的预估比特数与当前待解码块之前M个待解码块各自的预估比特数之和。
又一些可能的实施例中,针对历史块,历史块为当前待解码块之前M个待解码块中的任意一个待解码块,处理模块1402,具体用于获取历史块的复杂度等级和当前待解码块的复杂度等级;基于历史块的复杂度等级和参考值之商,确定历史块的预估比特数;参考值为当前待解码块的复杂度等级和当前待解码块的预估比特数的乘积。
又一些可能的实施例中,惩罚参数还包括第二惩罚参数;第二惩罚参数为期望消耗额外缓冲区中的比特数所需的待解码块的数量;在对当前待解码块的预估量化参数执行第二操作之前,处理模块1402,还用于从码流缓冲区中存储的码流中解析出第二惩罚参数;获取当前待解码块所在的条带中,剩余的待解码块的数量;若剩余的待解码块的数量小于第二惩罚参数,则对当前待解码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为当前剩余的待解码块的数量和预设像素深度的乘积。
又一些可能的实施例中,若当前剩余的待解码块的数量大于第二惩罚参数,则对当前待解码块的预估量化参数执行的第二操作中,惩罚参数指示的惩罚比特数为第二惩罚参数和预设像素深度的乘积。
需要说明的是,图11、图12、图13、以及图14中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,还可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
在示例性的实施例中,本申请实施例还提供了一种可读存储介质,包括执行指令,当其在图像编解码装置上运行时,使得图像编解码装置执行上述实施例提供的任意一种方法。
在示例性的实施例中,本申请实施例还提供了一种包含执行指令的计算机程序产品,当其在图像编解码装置上运行时,使得图像编解码装置执行上述实施例提供的任意一种方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机执行指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机执行指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机执行指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(Comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

Claims (25)

1.一种图像编码方法,其特征在于,所述方法包括:
获取码流缓冲区的状态;所述码流缓冲区用于存储待编码块编码后得到的码流;所述码流缓冲区的状态为所述码流缓冲区在当前待编码块之前的第M个待编码块编码后的比特数;M为正整数;
当所述码流缓冲区的状态满足预设条件时,对当前待编码块的预估比特数执行第一操作;所述预估比特数为在所述码流缓冲区的状态下预测的编码所述当前待编码块所需的比特数;所述第一操作是指将所述预估比特数减小惩罚比特数;所述惩罚比特数是基于惩罚参数得到的;所述预估量化参数是基于所述预估比特数得到的;
基于执行所述第一操作后的预估比特数,确定当前待编码块的量化参数,并根据所述量化参数对所述当前待编码块进行编码。
2.根据权利要求1所述的方法,其特征在于,所述码流缓冲区包括主缓冲区和额外缓冲区;所述主缓冲区和所述额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
3.根据权利要求2所述的方法,其特征在于,所述当所述码流缓冲区的状态满足预设条件时,对当前待编码块的预估比特数执行第一操作,包括:
基于所述码流缓冲区的状态,确定可用缓冲区大小;所述可用缓冲区大小用于表征预测的采用所述预估比特数对所述当前待编码块编码后,所述码流缓冲区的可用大小;
获取额外缓冲区阈值;所述额外缓冲区阈值用于表征所述额外缓冲区的可用空间;
当所述可用缓冲区大小小于所述额外缓冲区阈值时,对所述当前待编码块的预估比特数执行所述第一操作。
4.根据权利要求3所述的方法,其特征在于,所述基于所述码流缓冲区的状态,确定可用缓冲区大小,包括:
获取在当前待编码块之前M个待编码块的预估比特数;
根据所述码流缓冲区的状态和参考变化值之和,确定所述可用缓冲区大小;所述参考变化值为码流缓冲区M+1个块的固定流出比特数和码流缓冲区M+1个块的预估流入比特数的差;所述码流缓冲区M+1个块的固定流出比特数为每个待编码块的像素点的个数、预设像素深度、以及M+1的乘积;所述码流缓冲区M+1个块的预估流入比特数为所述当前待编码块的预估比特数与所述当前待编码块之前M个待编码块各自的预估比特数之和。
5.根据权利要求4所述的方法,其特征在于,针对历史块,所述历史块为所述当前待编码块之前M个待编码块中的任意一个待编码块,所述获取当前待编码块之前M个待编码块的预估比特数,包括:
获取所述历史块的复杂度等级和所述当前待编码块的复杂度等级;
基于所述历史块的复杂度等级和参考值之商,确定所述历史块的预估比特数;所述参考值为所述当前待编码块的复杂度等级和所述当前待编码块的预估比特数的乘积。
6.根据权利要求5所述的方法,其特征在于,所述获取所述当前待编码块的复杂度等级,包括:
获取当前待编码块;所述当前待编码块中包括三个通道;
获取三个通道中每个通道的编码块的复杂度信息;所述复杂度信息用于表征每个通道的编码块的像素值的差异程度;
根据每个通道的编码块的复杂度等级确定当前待编码块的复杂度等级。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
根据第一通道的复杂度信息修正所述三个通道的量化参数;第一通道为所述三个通道中的任意一个通道。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述根据所述量化参数对所述当前待编码块进行编码,包括:
基于预测模式和量化参数解析残差系数;
基于预测模式得到当前待解码块各个像素点的预测值;
基于残差系数编码获得当前待编码块各个像素点的残差值;
基于当前待编码块各个像素点的预测值和残差值对所述当前待编码块进行编码。
9.根据权利要求8所述的方法,其特征在于,所述预测模式为防膨胀模式,所述防膨胀模式为所有预测模式中比特代价最大的模式。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
根据亮度通道的比特深度对亮度通道、第一色度通道、以及第二色度通道,按照防膨胀模式对亮度通道的待编码块、第一色度通道的待编码块、以及第二色度通道的待编码块进行编码。
11.根据权利要求1-6任一项所述的方法,其特征在于,基于防膨胀模式对所述当前待编码块进行编码,包括:
在编码所述当前待编码块所在的条带之前,初始化码控的热启动数组、结尾处目标满度参数、以及额外缓存阈值参数。
12.一种图像解码方法,其特征在于,所述方法包括:
获取码流缓冲区的状态;所述码流缓冲区用于存储待解码块解码后的码流;所述码流缓冲区的状态为所述码流缓冲区在当前待解码块之前的第M个待解码块解码后的比特数;M为正整数;
当所述码流缓冲区的状态满足预设条件时,对当前待解码块的预估比特数执行第一操作;所述预估比特数为在所述码流缓冲区的状态下预测的解码所述当前待解码块所需的比特数;所述第一操作是指将所述预估比特数减小惩罚比特数;所述惩罚比特数是基于惩罚参数得到的;所述预估量化参数是基于所述预估比特数得到的;
基于执行所述第一操作后得到的预估比特数,确定当前待解码块的量化参数,并根据所述量化参数对对所述当前待解码块进行解码。
13.根据权利要求12所述的方法,其特征在于,所述码流缓冲区包括主缓冲区和额外缓冲区;所述主缓冲区和所述额外缓冲区为不同的物理存储分区,或者,不同的逻辑存储分区。
14.根据权利要求13所述的方法,其特征在于,当所述码流缓冲区的状态满足预设条件时,对当前待解码块的预估比特数执行第一操作,包括:
基于所述码流缓冲区的状态,确定可用缓冲区大小;所述可用缓冲区大小用于表征预测的采用所述预估比特数对所述当前待解码块解码后,所述码流缓冲区的可用大小;
获取所述额外缓冲区阈值;所述额外缓冲区阈值用于表征所述额外缓冲区的可用空间;
当所述可用缓冲区大小小于所述额外缓冲区阈值时,对所述当前待解码块的预估比特数执行所述第一操作。
15.根据权利要求14所述的方法,其特征在于,所述基于所述码流缓冲区的状态,确定可用缓冲区大小,包括:
获取在当前待解码块之前M个待解码块的预估比特数;
根据所述码流缓冲区的状态和参考变化值之和,确定所述可用缓冲区大小;所述参考变化值为码流缓冲区M+1个块的固定流入比特数和码流缓冲区M+1个块的预估流出比特数的差;所述码流缓冲区M+1个块的固定流出比特数为每个待解码块的像素点的个数、预设像素深度、以及M+1的乘积;所述码流缓冲区M+1个块的预估流入比特数为所述当前待解码块的预估比特数与所述当前待解码块之前M个待解码块各自的预估比特数之和。
16.根据权利要求15所述的方法,其特征在于,针对历史块,所述历史块为所述当前待解码块之前M个待解码块中的任意一个待解码块,所述获取在当前待解码块之前M个待解码块的预估比特数,包括:
获取历史块的复杂度等级和所述当前待解码块的复杂度等级;
基于所述历史块的复杂度等级和参考值之商,确定所述历史块的预估比特数;所述参考值为所述当前待解码块的复杂度等级和所述当前待解码块的预估比特数的乘积。
17.根据权利要求16所述的方法,其特征在于,所述获取所述当前待解码块的复杂度等级,包括:
获取当前待解码块;所述当前待解码块中包括三个通道;
获取三个通道中每个通道的解码块的复杂度信息;所述复杂度信息用于表征每个通道的解码块的像素值的差异程度;
根据每个通道的解码块的复杂度等级确定当前待解码块的复杂度等级。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
根据第一通道的复杂度信息修正所述三个通道的量化参数;第一通道为所述三个通道中的任意一个通道。
19.根据权利要求12-18任一项所述的方法,其特征在于,所述根据所述量化参数对所述当前待解码块进行解码,包括:
基于预测模式和量化参数解析残差系数;
基于预测模式得到当前待解码块各个像素点的预测值;
基于残差系数解码获得当前待解码块各个像素点的残差值;
基于当前待解码块各个像素点的预测值和残差值对所述当前待解码块进行解码。
20.根据权利要求19所述的方法,其特征在于,所述预测模式为防膨胀模式,所述防膨胀模式为所有预测模式中比特代价最大的模式。
21.根据权利要求20所述的方法,其特征在于,所述方法包括:
根据亮度通道的比特深度对亮度通道、第一色度通道、以及第二色度通道,按照防膨胀模式对亮度通道的待解码块、第一色度通道的待解码块、以及第二色度通道的待解码块进行解码。
22.根据权利要求12-18任一项所述的方法,其特征在于,基于防膨胀模式对所述当前待解码块进行解码,包括:
在解码所述当前待解码块所在的条带之前,初始化码控的热启动数组、结尾处目标满度参数、以及额外缓存阈值参数。
23.一种图像编码装置,其特征在于,所述装置包括:处理器和存储器;
所述存储器存储有所述处理器可执行的指令;
所述处理器被配置为执行所述指令时,使得所述图像编码装置实现如权利要求1-11任一项所述的方法。
24.一种图像解码装置,其特征在于,所述装置包括:处理器和存储器;
所述存储器存储有所述处理器可执行的指令;
所述处理器被配置为执行所述指令时,使得所述图像解码装置实现如权利要求12-22任一项所述的方法。
25.一种可读存储介质,其特征在于,所述可读存储介质包括:计算机程序指令;
当所述计算机程序指令在图像编解码装置中运行时,使得所述图像编解码装置实现如权利要求1-22任一项所述的方法。
CN202310453429.5A 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质 Pending CN116760987A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310453429.5A CN116760987A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202310453429.5A CN116760987A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质
CN202211448399.0A CN116132679A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202211448399.0A Division CN116132679A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN116760987A true CN116760987A (zh) 2023-09-15

Family

ID=86303386

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202310453429.5A Pending CN116760987A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质
CN202310457556.2A Pending CN116684609A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质
CN202211448399.0A Pending CN116132679A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202310457556.2A Pending CN116684609A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质
CN202211448399.0A Pending CN116132679A (zh) 2022-11-18 2022-11-18 图像编解码方法、装置及存储介质

Country Status (2)

Country Link
CN (3) CN116760987A (zh)
WO (1) WO2024104382A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024104382A1 (zh) * 2022-11-18 2024-05-23 杭州海康威视数字技术股份有限公司 图像编解码方法、装置及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117412062A (zh) * 2023-09-28 2024-01-16 协创芯片(上海)有限公司 一种支持h265编码的多媒体芯片

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2346282B (en) * 1999-01-28 2003-02-19 Snell & Wilcox Ltd Bit rate control in compression encoding
US11019339B2 (en) * 2017-07-12 2021-05-25 Futurewei Technologies, Inc. Fractional quantization parameter offset in video compression
CN108200431B (zh) * 2017-12-08 2021-11-16 重庆邮电大学 一种视频编码码率控制帧层比特分配方法
EP3857883A1 (en) * 2018-09-24 2021-08-04 InterDigital VC Holdings, Inc. Method and apparatus for determining chroma quantization parameters when using separate coding trees for luma and chroma
EP3987810A4 (en) * 2019-06-23 2023-04-19 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR DERIVING QUANTIZATION PARAMETERS FOR VIDEO BLOCKS IN VIDEO ENCODING
CN115348450A (zh) * 2019-12-31 2022-11-15 上海海思技术有限公司 编码方法及编码器
CN116760987A (zh) * 2022-11-18 2023-09-15 杭州海康威视数字技术股份有限公司 图像编解码方法、装置及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024104382A1 (zh) * 2022-11-18 2024-05-23 杭州海康威视数字技术股份有限公司 图像编解码方法、装置及存储介质

Also Published As

Publication number Publication date
CN116684609A (zh) 2023-09-01
CN116132679A (zh) 2023-05-16
WO2024104382A1 (zh) 2024-05-23

Similar Documents

Publication Publication Date Title
KR102229045B1 (ko) 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
KR102120571B1 (ko) 넌-4:4:4 크로마 서브-샘플링의 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
EA035121B1 (ru) Декодирование видеоданных для пикселей вне палитры в блоках, кодируемых в режиме на основе палитры
CN116760987A (zh) 图像编解码方法、装置及存储介质
WO2023231866A1 (zh) 一种视频译码方法、装置及存储介质
WO2024022039A1 (zh) 一种视频图像解码方法、编码方法、装置及存储介质
WO2024061055A1 (zh) 图像编码方法和图像解码方法、装置及存储介质
WO2024022367A1 (zh) 图像解码方法、编码方法及装置
CN118101967A (zh) 用于视频编解码的位置相关空间变化变换
TWI847806B (zh) 視訊圖像解碼方法、編碼方法、裝置及存儲介質
WO2023138532A1 (zh) 一种视频解码方法、装置、视频解码器及存储介质
TW202423113A (zh) 圖像編解碼方法、裝置及存儲介質
TWI821013B (zh) 視頻編解碼方法及裝置
WO2023083245A1 (zh) 解码方法、编码方法及装置
WO2022193389A1 (zh) 视频编解码方法与系统、及视频编解码器
WO2022217447A1 (zh) 视频编解码方法与系统、及视频编解码器
WO2023138562A1 (zh) 图像解码方法、图像编码方法及相应的装置
WO2022174475A1 (zh) 视频编解码方法与系统、及视频编码器与视频解码器
WO2022193390A1 (zh) 视频编解码方法与系统、及视频编解码器

Legal Events

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