CN116095319A - 一种视频译码方法、装置及存储介质 - Google Patents

一种视频译码方法、装置及存储介质 Download PDF

Info

Publication number
CN116095319A
CN116095319A CN202210887907.9A CN202210887907A CN116095319A CN 116095319 A CN116095319 A CN 116095319A CN 202210887907 A CN202210887907 A CN 202210887907A CN 116095319 A CN116095319 A CN 116095319A
Authority
CN
China
Prior art keywords
level
current block
complexity
channel
block
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
CN202210887907.9A
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 CN202210887907.9A priority Critical patent/CN116095319A/zh
Priority to CN202310452692.2A priority patent/CN116366847A/zh
Publication of CN116095319A publication Critical patent/CN116095319A/zh
Priority to PCT/CN2023/105398 priority patent/WO2024022039A1/zh
Priority to TW112127156A priority patent/TWI847806B/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/182Methods 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 pixel
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请实施例提供一种视频译码方法、装置及存储介质,涉及视频译码技术领域,有助于提升图像质量。该方法包括:获取待处理图像中当前块的至少两个通道级复杂度等级,根据上述至少两个通道级复杂度等级确定当前块的块级复杂度等级,上述通道级复杂度等级用于表征当前块的通道级纹理的复杂程度;根据码控参数确定当前块的目标比特数,上述码控参数包括当前块的块级复杂度等级;基于目标比特数确定当前块的量化参数;基于量化参数对当前块进行译码。

Description

一种视频译码方法、装置及存储介质
技术领域
本申请涉及视频译码技术领域,尤其涉及一种视频译码方法、装置及存储介质。
背景技术
视频译码技术在视频处理领域发挥着重要的作用。视频译码技术是一种通过对视频进行编解码减少视频数据量的技术。其中,量化是上述视频编解码过程中的重要步骤,主要通过量化参数替代码流中部分原始数据,实现减少码流中原始数据的冗余,用于进行量化的量化参数在视频编码阶段写入码流,视频解码端通过解析码流中的量化参数,实现解码。但量化同时也会带来图像失真的风险,选择适当的量化参数可以起到改善图像质量的效果。因此,如何选择量化参数也就成为了视频译码技术的关键。
发明内容
本申请实施例提供一种视频译码方法、装置及存储介质,有助于提高视频译码的图像质量,改善视觉体验。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供一种视频译码方法,该方法应用于视频编码设备或视频解码设备或视频编解码设备的芯片中,该方法包括:获取待处理图像中当前块的至少两个通道级复杂度等级,根据上述至少两个通道级复杂度等级确定当前块的块级复杂度等级,上述通道级复杂度等级用于表征当前块的通道级纹理的复杂程度;确定当前块的码控参数,并根据码控参数确定当前块的目标比特数;基于目标比特数确定当前块的量化参数;基于量化参数对当前块进行译码。
上述量化参数在视频编解码过程中具有重要的作用。采用本申请提出的视频译码方法,视频译码装置获取待处理图像中当前块的至少两个通道级复杂度等级,并据此确定当前块的块级复杂度等级,依据包括该块级复杂度等级在内的码控参数确定当前块的目标比特数,进一步基于该目标比特数确定当前块的量化参数。基于上述过程,本申请所提供的视频译码方法可以优化量化参数的选择,提高视频译码的图像质量,改善视觉体验。
在一种可能的实现方式中,上述码控参数包括同等级平均无损编码比特数、平均无损编码比特数以及码流缓冲区满度;
根据所述码控参数确定当前块的目标比特数,包括:确定同等级平均无损编码比特数及平均无损编码比特数;基于同等级平均无损编码比特数及平均无损编码比特数确定初始目标比特数;基于码流缓冲区满度,当前块的块级复杂度等级以及初始目标比特数确定当前块的目标比特数;其中,上述同等级平均无损编码比特数为当前块与多个已译码图像块无损编码时所需比特数预测值的平均值,且上述多个已译码图像块与当前块的复杂度等级相同;平均无损编码比特数为当前块与所有已译码图像块无损编码时所需的比特数预测值的平均值;码流缓冲区满度用于表征缓冲区的满度,上述缓冲区用于存储待处理图像的码流。
该种可能的实现方式中,提供了一种确定当前块的目标比特数的方法。通过引入同等级平均无损编码比特数及平均无损编码比特数确定初始目标比特数,并基于该初始目标比特数、码流缓冲区满度和块级复杂度等级确定当前块的目标比特数,可以使得量化参数的确定更加准确,进而达到在保证译码效率的同时改善图像质量的效果。
在一种可能的实现方式中,确定同等级平均无损编码比特数及平均无损编码比特数,包括:确定当前块的无损编码比特数,无损编码比特数为当前块无损编码时所需比特数的预测值;依据当前块的无损编码比特数以及多个历史同等级平均无损编码比特数更新当前块的同等级平均无损编码比特数;历史同等级平均无损编码比特数为与当前块块复杂度等级相同的已译码图像块的同等级平均无损比特数;依据当前块的无损编码比特数以及全部历史平均无损编码比特数更新当前块的平均无损编码比特数;历史平均无损编码比特数为已译码图像块的平均无损比特数。
该种可能的实现方式中,提供了一种通过当前块的无损编码比特数、历史同等级平均无损编码比特数及历史平均无损编码比特数确定上述同等级平均无损编码比特数及平均无损编码比特数的方法,有助于提升方案的可实施性。通过将同等级平均无损编码比特数与块级复杂度等级相对应,可以优化量化参数的选择,进而得到改善图像质量的效果。
在一种可能的实现方式中,上述当前块为待处理图像的首行块,上述码控参数包括首行质量提升参数;根据码控参数确定当前块的目标比特数还包括:依据首行质量提升参数调整当前块的目标比特数,以调小当前块的量化参数。
该种可能的实现方式中,提供了另一种确定当前块目标比特数的方法,适用于当前块为首行块的场景。当前块为首行块时预测难度较大,因预测误差具有传递性,本实现方式通过引入首行质量提升参数调小首行块的量化参数来减少上述影响,以达到提高视频译码的图像质量的效果。
在一种可能的实现方式中,上述当前块为待处理图像的首列块,上述码控参数包括首列质量提升参数;根据码控参数确定当前块的目标比特数还包括:依据首行质量提升参数调整当前块的目标比特数,以调小当前块的量化参数。
该种可能的实现方式中,提供了另一种确定当前块目标比特数的方法,适用于当前块为首列块的场景。当前块为首列块时预测难度较大,因预测误差具有传递性,本实现方式通过引入首列质量提升参数调小首列块的量化参数来减少上述影响,以达到提高视频译码的图像质量的效果。
在一种可能的实现方式中,获取待处理图像中当前块的至少两个通道级复杂度等级,包括:获取当前块的通道级纹理信息,并基于通道级纹理信息确定当前块的通道级复杂度等级;或者从码流中获取通道级复杂度等级,上述码流为当前块的编码码流。
该种可能的实现方式中,提供了获取当前块的通道级复杂度等级的方法。在编码端,基于当前块的通道级纹理信息确定当前块的通道级复杂度等级,在解码端,从接收到的已编码码流中获取当前块的通道级复杂度等级。通过给出编解码中获取当前块通道级复杂度等级的方法,提升了方案的可实施性,便于后续基于得到的通道级复杂度等级确定其他码控参数及目标比特数,从而优化量化参数。
在一种可能的实现方式中,从码流中获取通道级复杂度等级,包括:从码流中获取当前块的复杂度信息位,该复杂度信息位用于表示当前块的通道级复杂度等级;依据复杂度信息位确定通道级复杂度等级。
该种可能的实现方式中,提供了一种解码端获取上述通道级复杂度等级的方法。通过解析已编码码流中用于表示当前块通道级复杂度等级的信息位获取上述通道级复杂度等级。在一种可能的场景中,该复杂度信息位可以为1比特位或3比特位,且该复杂度信息位的第一位用于表示当前通道级复杂度等级与当前块的前一个图像块的相同通道复杂度等级是否相同以及两者之间的变化值。以YUV图像为例,若当前通道级复杂度等级为当前块的U通道的复杂度等级,则前一个图像块的相同通道复杂度表示在当前块之前进行译码的图像块的U通道的复杂度等级。若根据第一位判断相同,则复杂度信息位为1位;若不同,则复杂度信息位为3位,且后两位表示当前块的通道级复杂度与当前块的前一个图像块的相同通道的复杂度等级的变化值,基于该变化值与前一个图像块的相同通道的通道复杂度等级可以确定当前所求的通道级复杂度等级。可以理解的是,上述场景只是示例性说明,该种可能的实现方式的保护范围并不以此为限,且通过提出解码端获取通道级复杂度等级的具体方法提升了方案的可实施性。
在一种可能的实现方式中,获取当前块的通道级纹理信息,并基于通道级纹理信息确定当前块的通道级复杂度等级,包括:以当前块中至少一个通道图像块为处理单元,将处理单元划分为至少两个子单元,并确定各子单元的纹理信息;在处理单元中,基于各子单元的纹理信息确定当前块的块级复杂度等级。
该种可能的实现方式中,提供了一种适用于编码端的确定当前块的通道级复杂度等级的方法,提升了方案的可实施性。其中,将当前块的至少一个通道图像块作为一个处理单元,并进一步将各处理单元划分为至少两个子单元,有助于提升复杂度信息的准确性。
在一种可能的实现方式中,确定各子单元的纹理信息,包括:获取子单元的原始像素值、子单元的左侧相邻列的原始像素值或重建值,以及子单元的上方相邻行的重建值,并对应计算子单元的水平纹理信息及垂直纹理信息;在水平纹理信息及垂直纹理信息中选择最小值作为对应子单元的纹理信息。
该种可能的实现方式中,提供了一种确定子单元的纹理信息的实现方式,提升了方案的可实施性。
在一种可能的实现方式中,在处理单元中,基于各子单元的纹理信息确定当前块的块级复杂度等级,包括:在处理单元中,基于多个阈值将各子单元的纹理信息划分至对应的子单元复杂度等级,上述多个阈值是预先设定的;基于各子单元复杂度等级确定当前块的块复杂度等级。
该种可能的实现方式中,提出了通过设置多个阈值将各子单元的纹理信息划分至对应的子单元复杂度等级,并基于各子单元复杂度等级确定当前块的块复杂度等级,有助于提升方案的可实施性。
在一种可能的实现方式中,基于各子单元复杂度等级确定当前块的块复杂度等级,包括:依据预设规则将各子单元复杂度等级映射为对应的通道级复杂度等级;基于各通道级复杂度等级确定当前块的块级复杂度等级。
该种可能的实现方式中,提出了将各子单元的复杂度等级映射为对应的通道级复杂度等级,并进一步通过当前块的通道级复杂度等级确定当前块的块级复杂度等级的方法,有助于提升方案的可实施性。
在一种可能的实现方式中,依据预设规则将各子单元复杂度等级映射为对应的通道级复杂度等级,包括:基于多个阈值以及各子单元复杂度等级之和确定通道级复杂度等级,上述多个阈值是预先设定的。
该种可能的实现方式中,提供了一种基于多个阈值以及各子单元复杂度等级之和确定通道级复杂度等级的方法,有助于提升方案的可实施性。
在一种可能的实现方式中,依据预设规则将各子单元复杂度等级映射为对应的通道级复杂度等级,包括:确定子单元复杂度等级的级别构成,并依据级别构成确定对应的通道级复杂度等级。
该种可能的实现方式中,提供了一种基于子单元复杂度等级的级别构成确定对应的通道级复杂度等级的方法,有助于提升方案的可实施性。
在一种可能的实现方式中,基于各通道级复杂度等级确定当前块的块级复杂度等级,包括:取各通道级复杂度等级的最大值、最小值或加权值作为当前块的块级复杂度等级;或者基于多个阈值以及各通道级复杂度等级之和确定当前块的块级复杂度等级,上述多个阈值是预先设定的。
该种可能的实现方式中,提供了两种基于各通道级复杂度等级确定当前块的块级复杂度等级的方法,有助于提升方案的可实施性。
在一种可能的实现方式中,上述当前块为多通道图像块;该多通道图像块的各通道分量共同或独立确定上述同等级无损编码比特数与目标比特数。
该种可能的实现方式中,提出了多通道图像块的各通道分量共同或独立确定上述同等级无损编码比特数与目标比特数,有助于提升方案的可实施性。
在一种可能的实现方式中,上述当前块为多通道图像块;该多通道图像块的各通道分量共同或独立确定上述通道级复杂度等级。
该种可能的实现方式中,提出了多通道图像块的各通道分量共同或独立确定上述通道级复杂度等级,有助于提升方案的可实施性。
第二方面,本申请实施例提供一种视频译码装置,该装置具有实现上述第一方面中任一项的视频译码方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,提供一种视频编码器,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该视频编码器运行时,该处理器执行该存储器存储的该计算机执行指令,以使该视频编码器执行如上述第一方面中任一项的视频译码方法。
第四方面,提供一种视频解码器,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该视频解码器运行时,该处理器执行该存储器存储的该计算机执行指令,以使该视频解码器执行如上述第一方面中任一项的视频译码方法。
第五方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项的视频译码方法。
第六方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项的视频解译方法。
第七方面,提供一种电子设备,电子设备包括视频译码装置,处理电路被配置为执行如上述第一方面中任一项的视频译码方法。
第八方面,提供一种芯片,芯片包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第一方面中任意一项的视频译码方法。
第九方面,提供一种视频编解码系统,该系统包括视频编码器和视频解码器,视频编码器被配置为执行如上述第一方面中任一项的视频译码方法,视频解码器被配置为执行如上述第一方面中任一项的视频译码方法。
第二方面至第九方面中的任一种实现方式所带来的技术效果可参见第一方面中对应实现方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的编解码系统的系统架构图;
图2为本申请实施例提供的视频编码器的结构示意图;
图3为本申请实施例提供的视频解码器的结构示意图;
图4为本申请实施例提供的一种视频解码的流程示意图;
图5为本申请实施例提供的视频解码器结构示意图;
图6为本申请实施例提供的一种视频译码方法的流程图;
图7为本申请实施例提供的一种视频译码方法的具体实施例的流程图;
图8为本申请实施例提供的一种视频译码方法确定块级复杂度等级的流程图;
图9为本申请实施例提供的一种视频译码方法的具体实施例的子块纹理信息示意图;
图10为本申请实施例提供的一种视频译码方法中初始延迟传输机制的示意图;
图11为本申请实施例提供的一种视频译码装置的示意图。
具体实施方式
在本申请的描述中,除非另有说明,“/”表示“或”的意思,例如,A/B可以表示A或B。本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。此外,“至少一个”是指一个或多个,“多个”是指两个或两个以上。“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
首先,对本申请实施例涉及的技术术语进行介绍:
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 Coding standard,HEVC))。
需要说明的是,在基于混合编码架构的编码算法中,上述压缩编码方式可以被混合使用。
视频编解码过程中的基本处理单位是图像块,该图像块是编码端将一帧/幅图像进行划分得到的。针对划分后的图像块,通常采用逐行逐个的方式进行处理。其中,将正在处理的图像块称为当前块,已处理的图像块称为已编码图像块,或已解码图像块,或已译码图像块。以HEVC为例,HEVC定义了编码树单元(Coding Tree Unit,CTU)、编码单元(CodingUnit,CU)、预测单元(Prediction Unit,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采样格式采样后的色度编码单元块大小为
Figure BDA0003766416700000061
类似地,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采样格式采样后的色度编码单元块大小为
Figure BDA0003766416700000062
上述经采样得到的亮度编码单元、第一色度编码单元和第二色度编码单元作为后续针对当前块进行处理的各通道的数据单元。
本申请提供的译码方法适用于视频编解码系统。该视频编解码系统也可以称为视频译码系统。图1示出了视频编解码系统的结构。
如图1所示,视频编解码系统包含源装置10和目的装置11。源装置10产生经过编码后的视频数据,源装置10也可以被称为视频编码装置或视频编码设备,目的装置11可以对源装置10产生的经过编码后的视频数据进行解码,目的装置11也可以被称为视频解码装置或视频解码设备。源装置10和/或目的装置11可包含至少一个处理器以及耦合到所述至少一个处理器的存储器。所述存储器可包含但不限于只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、带电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、快闪存储器或可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体,本申请对此不作具体限定。
源装置10和目的装置11可以包括各种装置,包含桌上型计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者等电子设备。
目的装置11可经由链路12从源装置10接收经编码视频数据。链路12可包括能够将经编码视频数据从源装置10移动到目的装置11的一个或多个媒体和/或装置。在一个实例中,链路12可包括使得源装置10能够实时地将编码后的视频数据直接发射到目的装置11的一个或多个通信媒体。在此实例中,源装置10可根据通信标准(例如:无线通信协议)来调制编码后的视频数据,并且可以将调制后的视频数据发射到目的装置11。上述一个或多个通信媒体可包含无线和/或有线通信媒体,例如:射频(Radio Frequency,RF)频谱、一个或多个物理传输线。上述一个或多个通信媒体可形成基于分组的网络的一部分,基于分组的网络例如为局域网、广域网或全球网络(例如,因特网)等。上述一个或多个通信媒体可以包含路由器、交换器、基站,或者实现从源装置10到目的装置11的通信的其它设备。
在另一实例中,可将编码后的视频数据从输出接口103输出到存储装置13。类似地,可通过输入接口113从存储装置13存取编码后的视频数据。存储装置13可包含多种本地存取式数据存储媒体,例如蓝光光盘、高密度数字视频光盘(Digital Video Disc,DVD)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、快闪存储器,或用于存储经编码视频数据的其它合适数字存储媒体。
在另一实例中,存储装置13可对应于文件服务器或存储由源装置10产生的编码后的视频数据的另一中间存储装置。在此实例中,目的装置11可经由流式传输或下载从存储装置13获取其存储的视频数据。文件服务器可为任何类型的能够存储经编码的视频数据并且将经编码的视频数据发射到目的装置11的服务器。例如,文件服务器可以包含全球广域网(World Wide Web,Web)服务器(例如,用于网站)、文件传送协议(File TransferProtocol,FTP)服务器、网络附加存储(Network Attached Storage,NAS)装置以及本地磁盘驱动器。
目的装置11可通过任何标准数据连接(例如,因特网连接)存取编码后的视频数据。数据连接的实例类型包含适合于存取存储于文件服务器上的编码后的视频数据的无线信道、有线连接(例如,缆线调制解调器等),或两者的组合。编码后的视频数据从文件服务器发射的方式可为流式传输、下载传输或两者的组合。
本申请的译码方法不限于无线应用场景,示例性的,本申请的译码方法可以应用于支持以下多种多媒体应用的视频编解码:空中电视广播、有线电视发射、卫星电视发射、流式传输视频发射(例如,经由因特网)、存储于数据存储媒体上的视频数据的编码、存储于数据存储媒体上的视频数据的解码,或其它应用。在一些实例中,视频编解码系统可经配置,以支持单向或双向视频发射,以支持例如视频流式传输、视频播放、视频广播及/或视频电话等应用。
需要说明的是,图1示出的视频编解码系统仅仅是视频编解码系统的示例,并不是对本申请中视频编解码系统的限定。本申请提供的译码方法还可适用于编码装置与解码装置之间无数据通信的场景。在其它实例中,待编码视频数据或编码后的视频数据可以从本地存储器检索,也可以在网络上流式传输等。视频编码装置可对待编码视频数据进行编码并且将编码后的视频数据存储到存储器,视频解码装置也可从存储器中获取编码后的视频数据并且对该编码后的视频数据进行解码。
在图1中,源装置10包含视频源101、视频编码器102和输出接口103。在一些实例中,输出接口103可包含调制器/解调器(调制解调器)和/或发射器。视频源101可包括视频捕获装置(例如,摄像机)、含有先前捕获的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频输入接口,和/或用于产生视频数据的计算机图形系统,或视频数据的此些来源的组合。
视频编码器102可对来自视频源101的视频数据进行编码。在一些实例中,源装置10经由输出接口103将编码后的视频数据直接发射到目的装置11。在其它实例中,编码后的视频数据还可存储到存储装置13上,供目的装置11稍后存取来用于解码和/或播放。
在图1的实例中,目的装置11包含显示装置111、视频解码器112以及输入接口113。在一些实例中,输入接口113包含接收器和/或调制解调器。输入接口113可经由链路12和/或从存储装置13接收编码后的视频数据。显示装置111可与目的装置11集成或可在目的装置11外部。一般来说,显示装置111显示解码后的视频数据。显示装置111可包括多种显示装置,例如,液晶显示器、等离子显示器、有机发光二极管显示器或其它类型的显示装置。
可选的,视频编码器102和视频解码器112可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器单元或其它硬件和软件,以处理共同数据流或单独数据流中的音频和视频两者的编码。
视频编码器102和视频解码器112可以包括至少一个微处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application-Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、离散逻辑、硬件或其任何组合。若本申请提供的译码方法采用软件实现,则可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用至少一个处理器执行所述指令从而实施本申请。
本申请中的视频编码器102和视频解码器112可以根据视频压缩标准(例如HEVC)操作,也可根据其它业界标准操作,本申请对此不作具体限定。
图2是本申请实施例中视频编码器102的一种示意性框图。视频编码器102可以在预测模块21、变换模块22、量化模块23以及熵编码模块24分别进行预测、变换、量化以及熵编码的过程。视频编码器102中还包括预处理模块20和求和器202,其中预处理模块20包括分割模块和码率控制模块。对于视频块重构建,视频编码器102也包括反量化模块25、反变换模块26、求和器201和参考图像存储器27。
如图2中所展示,视频编码器102接收视频数据,预处理模块20视频数据的输入参数。其中,该输入参数包括该视频数据中图像的分辨率、图像的采样格式、像素深度(bitsper pixel,bpp)、位宽等信息。其中,bpp是指单位像素中一个像素分量所占用的比特数。位宽是指单位像素所占用的比特数。例如,以RGB三个像素分量的值表示一个像素,若每个像素分量占用8比特(bits),则该像素的像素深度为8,并且该像素的位宽为3×8=24bits。
预处理模块20中的分割模块将图像分割成原始块。此分割也可包含分割成条带(slice)、图像块或其它较大单元,以及(例如)根据最大编码单元(Largest Coding Unit,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)将残差块经变换得到变换系数。变换模块32可将所得变换系数发送到量化模块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进行熵编码之后得到码流,可将码流传输到视频解码器112或存档以供稍后传输或由视频解码器112检索。
反量化模块25及反变换模块26分别应用反量化与反变换,求和器201将反变换后的残差块得和预测的残差块相加以产生重建块,该重建块用作后续原始块进行预测的参考像素。该重建块存储于参考图像存储器27中。
图3是本申请实施例中视频解码器112的结构示意图。如图3所示,视频解码器112包含熵解码模块30、预测模块31、反量化模块32、反变换模块33、求和器301和参考图像存储器34。其中,熵解码模块30包括解析模块和码率控制模块。在一些可行的实施方式中,视频解码器112可执行与关于来自图2的视频编码器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中,作为后续进行预测的参考像素。
本申请提供一种可能的视频编/解码实现方式,如图4所示,图4为本申请提供的一种视频编/解码的流程示意图,该视频编/解码实现方式包括过程①至过程⑤,过程①至过程⑤可以由上述的源装置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也可以通过另外一种实现形态来实现,例如,采用通用的数字处理器系统实现,如图5所示的编解码装置50,该编解码装置50可以为上述视频编码器102中的部分装置,也可以为上述视频解码器112中的部分装置。
该编解码装置50可以是应用于编码侧,也可以是应用于解码侧。编解码装置50包括处理器501以及存储器502。所述处理器501与存储器502相连接(如通过总线504相互连接)。可选的,编解码装置50还可包括通信接口503,通信接口503连接处理器501和存储器502,用于接收/发送数据。
存储器502可以为随机存储记忆体(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM)或便携式只读存储器(Compact Disc Read-Only Memory,CD-ROM)。该存储器502用于存储相关程序代码及视频数据。
处理器501可以是一个或多个中央处理器(Central Processing Unit,CPU),例如图5中所示的CPU 0和CPU 1。在处理器501是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该处理器501用于读取所存储器502中存储的程序代码,执行图6所对应的任意一个实施方案及其各种可行的实施方式的操作。
以下,结合上述图1示出的视频编解码系统、图2示出的视频编码器102以及图3示出的视频解码器112对本申请提供的译码方法进行详细描述。
如图6所示,为本申请提供的一种视频译码方法的流程图。该方法包括:
S601、获取待处理图像中当前块的至少两个通道级复杂度等级,根据至少两个通道级复杂度等级确定当前块的块级复杂度等级;该通道级复杂度等级用于表征当前块的通道级纹理的复杂程度。
本申请所提供的视频译码方法应用于对视频数据的编解码场景,视频数据是由一帧帧图像组成的,一帧是一幅静态的图像,将时间上连续的帧序列合成到一起便形成动态视频。上述待处理图像即为视频数据中待译码的图像。在视频译码时,将该待处理图像划分为多个图像块,并将图像块作为基本处理单位,采用逐行逐个的方式进行处理。其中,将正在处理的图像块称为当前块。
在本示例实施方式中,上述待处理图像可以为多通道图像,上述获取待处理图像中当前块的至少两个通道级复杂度等级,根据至少两个通道级复杂度等级确定当前块的块级复杂度等级,也即获取当前多通道图像块的至少两个通道的复杂度等级,并据此确定当前块的块级复杂度等级。例如,该待处理图像可以为YUV格式的图像,则可以获取Y通道和U通道的复杂度等级,并据此确定当前块的块级复杂度等级。可以理解的是,获取YV或UV或YUV的复杂度等级也可以确定当前块的块级复杂度等级。
本申请的多通道不限于前述的YUV三通道,也可以有更多通道,比如当图像传感器为四通道传感器时,对应的待处理图像包括四通道的图像信息,比如当图像传感器为五通道传感器时,对应的待处理图像包括五通道的图像信息。
本申请中的多个通道可以包括如下通道中的至少一种或几种:Y通道、U通道、V通道、Co通道、Cg通道、R通道、G通道、B通道、alpha通道、IR通道、D通道、W通道。比如说,多个通道包括Y通道、U通道、V通道,或者,多个通道包括R通道、G通道、B通道,或者,多个通道包括、R通道、G通道、B通道、alpha通道,或者,多个通道可以包括R通道、G通道、B通道、IR通道,或者,多个通道包括R通道、G通道、B通道、W通道,或者,多个通道包括R通道、G通道、B通道、IR通道、W通道,或者,多个通道包括R通道、G通道、B通道、D通道,或者,多个通道可以包括R通道、G通道、B通道、D通道、W通道。其中,除了RGB彩色感光通道,也可能有IR通道(红外或近红外感光通道),D通道(暗光通道,主要通过红外光或近红外光),W通道(全色感光通道),针对不同的传感器有不同的通道,比如说,传感器类型可以是RGB传感器,RGBIR传感器,RGBW传感器,RGBIRW传感器,RGBD传感器,RGBDW传感器等。
纹理是一种反映图像中同质现象的视觉特征,用于表示物体表面的具有缓慢变化或者周期性变化的表面结构组织排列属性,上述通道级复杂度等级即用于表征当前块的通道级别的纹理的复杂程度。当前块的通道级纹理信息越复杂,通道级复杂度等级越高。类似地,上述通道级纹理信息越简单,则通道级复杂度等级越低。
上述获取待处理图像中当前块的至少两个通道级复杂度等级,根据至少两个通道级复杂度等级确定当前块的块级复杂度等级,在视频译码的编码端和解码端有不同的实现方式,可选地:
在编码端,可实现如下:获取当前块的通道级纹理信息,基于通道级纹理信息确定当前块的块级复杂度等级。具体地,该过程可实现为:以当前块中至少一个通道图像块为处理单元,并将各处理单元划分为至少两个子单元,确定各子单元的纹理信息;在每个处理单元中,基于各子单元的纹理信息确定当前块的块级复杂度等级。
其中,上述以当前块中的至少一个通道图像块为处理单元,并将各处理单元划分为至少两个子单元。以待处理图像为YUV图像为例,在一种可能的场景中,该过程可实现为:将当前块的Y通道作为一个处理单元,并将该处理单元进一步划分为四个子单元。在另一种可能的场景中,该过程也可实现为:将Y通道和U通道这两个通道作为一个处理单元,并将该处理单元进一步划分为两个子单元。可以理解的是,上述场景只是示例性说明,本示例实施方式的保护范畴并不以此为限,例如,也可将U通道、V通道、YU通道、YV通道、UV通道、YUV通道作为一个处理单元,上述子单元的数目也可以为大于等于二的任意整数。
在一种可能的实现方式中,上述确定各子单元的纹理信息可实现如下:获取子单元的原始像素值、子单元的左侧相邻列的原始像素值或重建值,以及子单元的上方相邻行的重建值,并对应计算子单元的水平纹理信息及垂直纹理信息;在水平纹理信息及垂直纹理信息中选择最小值作为对应子单元的纹理信息。
具体地,上述纹理信息可以为像素点信息,以待处理图像为YUV图像,将Y、U、V通道分别作为一个处理单元为例,在将处理单元划分为至少两个子单元后,上述确定子单元纹理信息可以为基于子单元的原始像素值、子单元的左侧相邻列的原始像素值或重建值,以及子单元的上方相邻行的重建值计算子单元的水平复杂度及垂直复杂度,在水平复杂度和垂直复杂度中选择最小值作为对应子单元的纹理信息。上述水平复杂度及垂直复杂度可以基于子单元在水平方向和垂直方向上像素点的差异程度计算得到。可以理解的是,上述场景只是一种示例性说明,上述纹理信息也可以由其他方式获得,例如,可以通过像素点之外的图像信息确定,也可以选上述水平复杂度和垂直复杂度的加权值作为对应子单元的纹理信息,还可以是其他可达到同样效果的方式,本示例实施方式并不对此做特殊限定。
在一种可能的实现方式中,上述在每个处理单元中,基于各子单元的纹理信息确定当前块的块级复杂度等级可通过以下方式实现:在上述处理单元中,基于多个阈值将各子单元的纹理信息划分至对应的子单元复杂度等级,上述多个阈值是预先设定的;基于各子单元复杂度等级确定当前块的块级复杂度等级。
具体地,上述过程可以为:设置阈值1和阈值2两个阈值,基于所设置的阈值将子单元复杂度等级划分为0至2三个等级。若确定得到的子单元的纹理信息的复杂度小于等于阈值1,则将该子单元的纹理信息划分等级0;若确定得到的子单元的纹理信息的复杂度大于阈值1小于阈值2,则将该子单元的纹理信息划分等级1;若确定得到的子单元的纹理信息的复杂度大于等于阈值2,则将该子单元的纹理信息划分等级2。可以理解的是,上述场景只是一种示例性场景,本申请的保护范畴并不以此为限。
在一种可能的实现方式中,上述基于各子单元复杂度等级确定当前块的块级复杂度等级可实现如下:依据预设规则将各子单元复杂度等级映射为对应的通道级复杂度等级;基于各通道级复杂度等级确定当前块的块级复杂度等级。
上述依据预设规则将各子单元复杂度等级映射为对应的通道级复杂度等级可通过以下方式实现:
实现方式1:基于多个阈值以及各子单元复杂度等级之和确定通道级复杂度等级,上述多个阈值是预先设定的。
可选地,上述过程可实现为:基于上述多个阈值确定多个通道级复杂度等级,将上述各子单元复杂度等级进行求和运算,并将求得的和划分至对应的通道级复杂度等级。具体地,上述阈值可以为2,4,7三个阈值,这三个阈值可以将通道级复杂度等级划分为等级0至等级4五个等级,上述计算得到的子单元复杂度等级为0至2三个级别,通过对各子单元复杂度等级求和,若子单元复杂度等级和小于2,则对应的通道级复杂度等级为0;若子单元复杂度等级和大于等于2小于4,则对应的通道等级为1;若子单元复杂度等级和等于4,则对应的通道级复杂度等级为2;若子单元复杂度等级和大于4小于7,则对应的通道级复杂度等级为3;若子单元复杂度等级和大于等于7,则对应的通道级复杂度等级为4。可以理解的是,上述场景只是一种示例性场景,本申请的保护范畴并不以此为限。
实现方式2:确定子单元复杂度等级的级别构成,并依据该级别构成确定对应的通道级复杂度等级。
可选地,在一种具体场景中,上述过程可以实现如下:例如,上述子单元复杂度等级为多个级别,依据各子单元所属的等级级别以及排列方式确定对应的通道级复杂度等级。例如,当上述处理单元被划分为4个子单元,且4个子单元复杂度级别分别为1,2,2,2时,若预设规则包括决策方式:各子单元复杂度等级有3个2,则通道级复杂度等级为2,那么对应的通道级复杂度等级为2。可以理解的是,上述场景只是一种示例性说明,其他子单元划分方法以及决策方式也属于本申请的保护范畴。
在一种可能的实现方式中,上述基于各通道级复杂度等级确定当前块的块级复杂度等级有多种方式,示例性地:
实现方式1:取各通道级复杂度等级的最大值、最小值或加权值作为当前块的块级复杂度等级。
实现方式2:基于多个阈值以及各通道级复杂度等级之和确定当前块的块级复杂度等级,上述多个阈值是预先设定的。
此外,在本申请中,上述多通道图像块,也即当前块的各通道分量可共同或独立确定通道级复杂度等级。例如,当待处理图像为YUV图像时,U通道和V通道可以共用一个通道级复杂度等级,也可分别确定各自的通道级复杂度等级。
在解码端,可实现为:从码流中获取当前块的通道级复杂度等级其中,上述码流为当前块的编码码流。具体地,解码端可接收编码端传来的当前块的已编码码流,该编码码流中有用于表示通道级复杂度等级的复杂度信息位,基于该信息位可以得到编码端基于通道级的纹理信息确定的通道级复杂度等级,并基于通道级复杂度等级确定块级复杂度等级。其中,通过至少两个通道级复杂度等级确定块级复杂度等级的实现与编码端相同,此处不再赘述。
上述通过复杂度信息位确定通道级复杂度等级的实现可如下:从上述已编码码流中获取上述当前块的复杂度信息位;依据复杂度信息位确定通道级复杂度等级。其中,上述复杂度信息位可以为1比特位或3比特位,且该复杂度信息位的第一位用于表示当前通道级复杂度等级与当前块的前一个图像块的相同通道复杂度等级是否相同以及两者之间的变化值。以YUV图像为例,若当前通道级复杂度等级为当前块的U通道的复杂度等级,则前一个图像块的相同通道复杂度表示在当前块之前进行译码的图像块的U通道的复杂度等级。若根据第一位判断相同,则复杂度信息位为1位;若不同,则复杂度信息位为3位,且后两位表示当前块的通道级复杂度与当前块的前一个图像块的相同通道的复杂度等级的变化值,基于该变化值与前一个图像块的相同通道的通道复杂度等级可以确定当前所求的通道级复杂度等级。可以理解的是,上述场景只是一种示例性说明,本申请的保护范畴并不以此为限。例如,上述复杂度信息位也可以表示当前块的U通道与当前块的Y通道复杂度是否相同以及在不相同时的变化值,本申请对此不做特殊限定。
S602、根据码控参数确定当前块的目标比特数,该码控参数包括当前块的块级复杂度等级。
在一种可能实现的方式中,码控参数包括上述步骤S601计算得到的当前块的块级复杂度等级,用于确定当前块的目标比特数,目标比特数为预测当前块编码所需的比特数。上述码控参数还可包括以下参数中的至少一种:图像位宽bpc、目标每像素比特数bpp、图像格式、同等级平均无损编码比特数、平均无损编码比特数、码流缓冲区满度、首行质量提升参数、首列质量提升参数,通过上述码控参数中的一种或多种都可确定当前块的目标比特数。
其中,上述同等级平均无损编码比特数为当前块与多个已译码图像块无损编码时所需比特数预测值的平均值,且多个已译码图像块与当前块的复杂度等级相同;上述平均无损编码比特数为当前块与所有已译码图像块无损编码时所需的比特数预测值的平均值;上述码流缓冲区满度用于表征缓冲区的满度,上述缓冲区用于存储待处理图像的码流;上述首行质量提升参数用于在当前块为待处理图像中的首行块时,调低首行块的量化参数,以减轻因首行块预测难度较大且预测误差具有传递性而带来的影响。
在一种可能的实现方式中,上述码控参数可包括同等级平均无损编码比特数、平均无损编码比特数以及码流缓冲区满度,根据码控参数确定当前块的目标比特数可实现为:确定上述同等级平均无损编码比特数及平均无损编码比特数;基于同等级平均无损编码比特数及平均无损编码比特数确定初始目标比特数;基于上述码流缓冲区满度,当前块的块级复杂度等级以及初始目标比特数确定当前块的目标比特数。其中,上述码流缓冲区满度的计算会受到初始传输延迟机制的影响,该初始传输延迟机制指缓冲区在当前块的编码码流存储前存在的一些无效位对缓存区满度的影响。
可选地,上述确定同等级平均无损编码比特数及平均编码比特数可实现为:确定当前块的无损编码比特数,该无损编码比特数为当前块无损编码时所需比特数的预测值;依据当前块的无损编码比特数以及多个历史同等级平均无损编码比特数更新当前块的同等级平均无损编码比特数;依据当前块的无损编码比特数以及全部历史平均无损编码比特数更新当前块的平均无损编码比特数。其中,上述历史同等级平均无损编码比特数为与当前块块复杂度等级相同的已译码图像块的同等级平均无损比特数,上述历史平均无损编码比特数为已译码图像块的平均无损比特数。
在一种可能的实现方式中,当前块为待处理图像中的首行块时,上述码控参数还包括首行质量提升参数,上述根据码控参数确定当前块的目标比特数可实现为:基于同等级平均无损编码比特数及平均无损编码比特数确定初始目标比特数;基于码流缓冲区满度,当前块的块级复杂度等级、首行质量提升参数以及初始目标比特数确定当前块的目标比特数。其中,上述首行质量提升参数主要通过调小当前块的量化参数来提升当前块的图像质量。
在一种可能的实现方式中,当前块为待处理图像中的首列块时,上述码控参数还包括首列质量提升参数,上述根据码控参数确定当前块的目标比特数可实现为:基于同等级平均无损编码比特数及平均无损编码比特数确定初始目标比特数;基于码流缓冲区满度,当前块的块级复杂度等级、首列质量提升参数以及初始目标比特数确定当前块的目标比特数。其中,上述首列质量提升参数主要通过调小当前块的量化参数来提升当前块的图像质量。
此外,在上述过程中,上述多通道图像块,也即当前块的通道分量可共同或独立确定上述同等级无损编码比特数与目标比特数。
S603、基于目标比特数确定当前块的量化参数。
在一种可能的实现方式中,上述基于目标比特数确定当前块的量化参数可以实现为:基于上述同等级平均无损编码比特数、目标比特数、上述待处理图像的图像格式对应的采样率计算得到当前块的参考量化参数,进一步的还可基于该参考量化参数计算当前块的各通道对应的各分量量化参数。
S604、基于量化参数对当前块进行译码。
在该步骤中,视频译码器基于当前块的量化参数对当前块进行译码。可选的,在编码时,视频编码器将当前块的通道级复杂度等级编入码流,即上述复杂度信息位。或者将当前块的量化参数编入码流。相应地,解码端获取码流中的复杂度信息位计算量化参数进行解码,或者解码端获取码流中的量化参数进行解码。当然,视频编码器也可以将上述两种信息均编入码流中。
接下来,以上述待处理图像为YUV图像为应用场景,结合如图7所示的流程,通过一系列具体实施例对上述视频译码方法进行详细地阐述:
步骤S701、确定当前块的块级复杂度等级。
该步骤用于确定当前块的复杂度等级,且在视频编码端与视频解码端的实施过程存在区别。
在视频编码端,该过程主要由如图8所示的流程实现:
S801、确定当前块的纹理信息的复杂度。
该步骤可实现为:通过将当前块中至少一个通道图像块作为处理单元,并将各处理单元划分为至少两个子单元,并确定各子单元的纹理信息的复杂度。
具体地,以YUV444格式为例,每个16x2的通道都可以划分为4个4x2的子块,如图9所示。
上述当前块的纹理信息为当前块的像素信息。对于当前块复杂度的计算需要用到如下三个部分的像素点,如图9所示:(1)当前块的原始像素值;(2)当前块左边一列,也即子块1左侧相邻列的原始像素值,需注意的是,当获取不到原始像素值时,也可使用重建值;(3)与当前块相邻的上一行的重建值,也即图9中的灰色方格区域。
接下来,以图9中的子块1为例,解释子块复杂度的计算过程,也即上述确定各子单元的纹理信息的过程,该通常可以通过计算各子块的水平复杂度和垂直复杂度得到,可以实现如下:水平复杂度计算方式为:当前列的像素值和与其左侧相邻列的像素值绝对值之和;垂直复杂度计算方式为:当前行的像素值以及与其上侧相邻行的像素值的绝对值之和。
可选地,当前块为当前视频切片的左边界时,上述水平复杂度计算使用左边界的填充值,该填充值为当前列的像素值;相应地,当前块为当前视频切片的上边界时,上述垂直复杂度计算使用上边界的填充值,该填充值为当前行的像素值。
具体地,上述过程可以实现为:
首先计算子块1的水平复杂度sub_comp_hor。具体地,可通过构成子块1的像素值、子块1相邻左侧一列的像素值或重建值以及相邻上方一行构成的集合ori_pix[i][j]来计算。其中,i,j代表像素值所处的行列,子块1的第一行第一列的像素值表示为ori_pix[0][0],其他像素值的表示以此类推。子块1的水平复杂度sub_comp_hor指子块1在水平方向上像素点间的差异程度,具体计算如下:
sub_comp_hor 1+=ori_pix[0][-1]-ori_pix[0][0]
取上述表达式的绝对值,作为子块1第一行第一列的像素值与其左侧相邻的像素值之间的水平复杂度。
sub_comp_hor 2+=ori_pix[0][i]-ori_pix[0][i+1]
取上述表达式的绝对值,作为子块1第一行各像素值之间的水平复杂度。
sub_comp_hor 3+=ori_pix[1][-1]-ori_pix[1][0]
取上述表达式的绝对值,作为子块1第二行第一列的像素值与其左侧相邻的像素值之间的水平复杂度。
sub_comp_hor4+=ori_pix[1][i]-ori_pix[1][i+1]
取上述表达式的绝对值,作为子块1第二行各像素值之间的水平复杂度。
子块1的垂直复杂度sub_comp_ver指子块1在垂直方向上像素点间的差异程度,类似地,垂直复杂度sub_comp_ver可具体计算如下:
sub_comp_ver 1+=rec_pix[-1][i]-ori_pix[0][i]
取上述表达式的绝对值,作为子块1第一行与上方相邻行像素值之间的垂直复杂度。
sub_comp_hor 2+=ori_pix[0][i]-ori_pix[1][i]
取上述表达式的绝对值,作为子块1第二行与第一行的像素值之间的垂直复杂度。
在得到子块1的多个水平复杂度及多个垂直复杂度后,将其中的最小值作为子块1的纹理信息的复杂度comp,也即子块1的复杂度为:
sub_comp=min(sub_comp_hor,sub_comp_ver)
上述子块2,3,4的纹理信息的复杂度的计算方式与子块1一致,且通道U与通道V纹理划分为子块并计算子块纹理信息复杂度的方式与通道Y相同,故在此均不再赘述。
此外,若多个通道需要合并一同计算复杂度,例如,当U通道及V通道需要合并计算复杂度时,可通过如下公式实现:
sub_comp=sub_comp1*a+sub_comp2*b,其中0<=a,b<=1,a+b=1
步骤S802、基于各通道子块纹理信息的复杂度确定当前块的块级复杂度等级。
可选地,该步骤可分三步实现为:
S8021:通过各通道子块纹理信息的复杂度确定各通道子块的复杂度等级。
该过程可通过设置多个阈值实现,可选地,具体实现可以如下:
实现方式1:设定thres1和thres2两个阈值:
thres1=2*(1<<(bpc–8));thres2=6*(1<<(bpc–8)),其中,bpc>=8,bpc为图像位宽。
当bpc小于8的时候,上述两个阈值默认为2和6。
通过上述两个阈值将各子块的纹理信息复杂度sub_comp划分为级别0、级别1和级别2三个复杂度等级,具体划分为:
若sub_comp<=thres1,则sub_comp_level=0;若thres1<sub_comp<thres2,则sub_comp_level=1;若sub_comp>=thres2,则sub_comp_level=2。
实现方式2:设定thres1、thres2、thres3和thres4四个阈值:thres1=2*(1<<(bpc–8)),thres2=4*(1<<(bpc–8)),thres3=6*(1<<(bpc–8)),thres4=8*(1<<(bpc–8))。且其中bpc>=8。
通过上述四个阈值,将各子块的纹理信息复杂度sub_comp_level划分为0,1,2,3,4等级,具体划分为:
若sub_comp<=thres1,则sub_comp_level=0;若thres1<sub_comp<thres2,则sub_comp_level=1;若thres2<sub_comp<thres3,则sub_comp_level=2;若thres3<sub_comp<thres4,则sub_comp_level=3;若sub_comp>=thres4,则sub_comp_level=4。
S8022:将各通道子块的复杂度等级映射为通道级复杂度等级。
上述将各通道子块的复杂度等级映射为通道级复杂度等级可通过预设多个阈值并基于阈值映射或者基于预设映射策略实现。可选地,有以下3种实现方式:
实现方式1:设置多个阈值,在对应通道内计算各子块的阈值之和sub_comp_level,并根据上述多个阈值将各子块的纹理信息复杂度映射为对应通道的通道级复杂度等级。以上述图9所示的通道子块为例,该过程具体可以如下:
设置三个阈值2,4,7,计算子块1至子块4的复杂度等级之和sum_sub_comp_level,依据上述三个阈值将4个3级别各子块的纹理信息复杂度sub_comp_level(0,1,2)映射为1个5级别通道级复杂度等级comp_level(0,1,2,3,4)。
上述根据阈值将各子块的纹理信息复杂度映射为得到通道级复杂度等级comp_level(0,1,2,3,4)的过程为:若sum_sub_comp_level<2,则comp_level=0;若2<=sum_sub_comp_level<4,则comp_level=1;若sum_sub_comp_level==4,则comp_level=2;若4<sum_sub_comp_level<7,则comp_level=3;若7<=sum_sub_comp_level,则comp_level=4。
实现方式2:预设4个阈值5、7、10、12,对所有sub_comp_level求和,然后根据上述4个阈值得到comp_level,其中comp_level可能的值为(0,1,2,3,4)。在该实现方式中,不同于实现方式1,可以将从4个5级别sub_comp_level映射为1个5级别comp_level。
实现方式3:根据预设的逻辑规则得到comp_level。可选地,以当前块的亮度通道为例,该逻辑规则的决策方式可以如下:
对于上述确定的4个子块的sub_comp_level组成的复杂度等级的级别构成:
当复杂度等级的级别构成为包含2个0,或1个0和3个1时:
若有2个连续0且2的个数小于2,comp_level=0;否则comp_level=1。
当复杂度等级的级别构成为包含3个2,或有2个连续2时:
若有3个2,comp_level=4;否则comp_level=3。
在其他情况下,comp_level=2。
以当前块的16x2色度通道为例,上述逻辑规则的决策方式可以为:
当复杂度等级的级别构成为包含2个0且2的个数小于2时:
若有3个0,或有2个连续0且0个2,comp_level=0;否则comp_level=1。
当复杂度等级的级别构成为包含2个2,或有1个2和3个1时:
若有3个2,或有2个连续2且0个0,comp_level=4;否则comp_level=3。
在其他情况下,comp_level=2。
此外,在另一种可能的实现方式中,以当前块的8x2或8x1色度通道为例,上述逻辑规则的决策方式也可以为:comp_level=sub_comp_level1+sub_comp_level2,其中,sub_comp_level1、sub_comp_level2分别为色度通道的两个子块的复杂度等级。
S8023:基于各通道级复杂度等级确定当前块的块级复杂度等级。
以上述待处理图像为YUV图像为例,经过上述步骤S8021和步骤S8022,可以确定Y、U、V三个通道的通道级复杂度等级,则可选地,上述基于各通道级复杂度等级确定当前块的块级复杂度等级的实现可以如下:
实现方式1:基于上述各通道级复杂度等级之和确定当前块的块级复杂度等级blk_comp_level:
chroma_comp_level=(u_comp_level+v_comp_level)/2
blk_comp_level=(luma_comp_level+chroma_comp_level*sample_rate)/(1+sample_rate)其中,sample_rate为待处理图像的采样率,由待处理图像的图像格式确定。sample_rate的一种设置方式可以参见下表1:
表1:
图像格式 YUV400 YUV420 YUV422 RGB444 YUV444
sample_rate 0 0.5 1 2 2
format_bias 0 8/9 2/3 1 4/9
在上表1中,sample_rate为待处理图像的采样率,format_bias为计算量化参数时设置的偏置量。
在上述步骤S8021至步骤8023中,通道级复杂度等级可以被多个通道公用也可独立。例如,若是YUV或者YCoCg格式图像,亮度使用一个复杂度,色度公用一个复杂度,或三个通道单独确定通道复杂度等级。
其中,当第一色度和第二色度共用一个复杂度等级时,则该复杂度等级计算方式为:
实现方式1:取两个色度通道级复杂度等级的最小值、最大值或加权值。
实现方式2:取两个色度通道纹理信息复杂度的最小值、最大值或加权值作为色度的纹理复杂度,再根据上述步骤S8021至步骤8023的方法获取色度的通道级复杂度等级。
在视频解码端,从经过编码端编码的码流中获取上述各通道级复杂度等级,可实现为:从上述已编码码流中获取上述当前块的复杂度信息位;依据复杂度信息位确定通道级复杂度等级。其中,上述复杂度信息位可以为1比特位或3比特位,且该复杂度信息位的第一位用于表示当前通道级复杂度等级与当前块的前一个图像块的相同通道复杂度等级是否相同以及两者之间的变化值。
具体地,以待处理图像为YUV图像为例,解码端获取通道级复杂度等级可实现为:若当前通道级复杂度等级为当前块的U通道的复杂度等级,则前一个图像块的相同通道复杂度表示在当前块之前进行译码的图像块的U通道的复杂度等级。若根据第一位判断相同,则复杂度信息位为1位;若不同,则复杂度信息位为3位,且后两位表示当前块的通道级复杂度与当前块的前一个图像块的相同通道的复杂度等级的变化值,基于该变化值与前一个图像块的相同通道的通道复杂度等级可以确定当前所求的通道级复杂度等级。可以理解的是,上述场景只是一种示例性说明,本申请的保护范畴并不以此为限。例如,上述复杂度信息位也可以表示当前块的U通道与当前块的Y通道复杂度是否相同以及在不相同时的变化值。
步骤S702、确定当前块的同等级平均无损编码比特数与平均无损编码比特数。
当上述YUV图像的第一色度和第二色度共用一个通道级复杂度等级时,上述确定当前块的同等级平均无损编码比特数与平均无损编码比特数的实现可以如下:
S7021、确定无损编码比特数pred_lossless_bits。
pred_lossless_bits=(cu_bits/(width x height)+luma_qp/a+sample_rate*chroma_qp/b)/(1+sample_rate)
其中,cu_bits表示当前块的实际编码比特数,可基于已译码图像的编码比特数确定;width和height分别表示编码块的宽高,luma_qp表示已译码图像的亮度通道的量化参数,chroam_qp表示已译码图像的色度通道的量化参数;a和b为权重值,其设置与预测模式相关,默认值均为8:对于IBC模式,a,b>=8;对于点预测模式,a,b>=8;对于调色板模式、原始值模式以及残差跳过模式,因量化参数失效,故a,b==0。
此外,当缓冲区buffer过满且为残差跳过模式时:
pred_lossless_bits=bpc+c
其中,参数c与图像格式有关,且只有在RGB模式时为0.67,其它格式均为0。
S7022、确定同等级平均无损编码比特数lossless_bits[blk_comp_level]。
同等级平均无损编码比特数lossless_bits[blk_comp_level]与当前块的块级复杂度等级相对应,在当前块的块级复杂度等级与已译码图像块的块级复杂度等级相同时,通过以下公式更新:
lossless_bits[blk_comp_level]=lossless_bits[blk_comp_level]*(1–d)+pred_lossless_bits*d
其中,d为更新率,且0<=d<=1。
可选地,上述更新率d的一种具体设置方式可以为:对于任意复杂度的前4个图像块,将更新率d分别设置为3/4,5/8,1/2,3/8,其余情况均为1/4。
S7023、确定平均无损编码比特数avg_lossless_bits。
不同于同等级平均无损编码比特数,平均无损编码比特数avg_lossless_bits在每个块都会更新,具体更新方式可以为:
avg_lossless_bits=avg_lossless_bits*(1-e)+pred_lossless_bits*e
其中e是更新率,0<=e<=1。可选地,e的一种设置可以为e=0.01。
步骤S703、确定当前块的目标比特数。
可选地,上述确定当前块的目标比特数可以通过以下步骤实现:
S7031、确定初始目标比特数。
该初始目标比特数为不考虑缓冲区满度时计算得到的目标比特数,可以通过以下方式计算得到:
(1)计算质量比率quality_ratio:
quality_ratio=bpp/(ave_lossless_bits–comp_offset)*(1+sample_rate)
其中,comp_offset是预设值,一种设置方式见参见下表2:
表2:
Figure BDA0003766416700000201
Figure BDA0003766416700000211
上述bpp的计算方式为:
bpp=target_bpp/16+(end_target_fullness–(cur_total_bits–((target_bpp<<1)×(cur_blocks–1))))/max(16,slice_width_in_cu×slice_height_in_cu–cur_blocks)/32
其中,end_target_fullness为预设值,可选地,end_target_fullness的一种具体设置值可以为(delay_bits–1533)*3/4。
其中,delay_bits为预设值,与初始传输延迟机制有关,delay_bits是延迟bits数。
上述初始传输延迟机制的特征包括:a)视频切片slice在开始传输时,延迟delay_blks个图像块后再进行传输,且这些图像块不进行下溢处理。b)视频切片结尾缓冲区的buffer状态恒为delay_bits延迟比特数(若不足,则填零)。如图10所示,图10为初始传输延迟机制的示意图,视频切片中的一个或多个图像块在初始位置与第二位置之间,对应缓冲区的最大值基于所处位置在初始位置与第二位置而增加,且在切片的阈值位置与最终位置之间的位置的图像块,对应缓冲区的最大值基于所处位置在阈值位置与最终位置之间减少,在第二位置和阈值位置之间,图像块对应的缓冲区大小不变。
上述delay_bits可以通过以下计算确定:delay_bits=delay_blks*bpp*blk_size;其中,blk_size表示块大小。delay_blks是预设值。
此外,若待处理图像为YUV444或RGB图像,上述quality_ratio需要限制取值范围到0-0.6之间。
可选地,在确定得到质量比率后,还可以通过计算之前所有图像块的平均复杂度等级ave_comp_level来更新质量比率,具体可实现如下:
avg_comp_level=avg_comp_level*(1-k)+blk_comp_level*k
如果avg_comp_level>blk_comp_level,quality_ratio-=0.05;
如果avg_comp_level<blk_comp_level,quality_ratio+=0.05。
(2)确定初始目标比特数。
上述初始目标比特数pre_target_bits可以通过以下公式确定:
pre_target_bits=quality_ratio*(lossless_bits[blk_comp_level]-comp_offset)*(1+sample_rate);其中,comp_offset为预设值,一种设置方式可以参见上表2,sample_rate可以参见上表1。
S7032、根据缓冲区状态和当前块的块级复杂度等级对初始目标比特数进行限制,确定最终的当前块的目标比特数,具体可实现如下:
(1)上述缓冲区状态可由缓冲区满度表示,缓冲区满度fullness可基于以下公式确定:
fullness=(cur_total_bits–((target_bpp<<1)×(cur_blocks–1))/available_buffer_size
其中,cur_total_bits表示当前消耗的比特数,target_bpp表示目标每像素比特数bpp,cur_blocks表示当前处理的图像块的块数,available_buffer_size表示可用缓冲区的大小。
此外,在上述过程中,确定available_buffer_size时,若考虑到初始传输延迟功能的影响,则依据当前块在视频切片中所处位置的不同,该available_buffer_size也不同,如图10所示:
视频切片开始的delay_blks个块,也即初始位置到第二位置,上述available_buffer_size可从delay_bits线性增加到max_buffer_size。增加的步长start_step为:start_step=(max_buffer_size–delay_bits)/delay_blks;其中,max_buffer_size表示最大的可用缓冲区大小,是一个预设固定值。
第二位置到阈值位置available_buffer_size保持不变,且恒等于max_buffer_size。
阈值位置到最终位置available_buffer_size从max_buffer_size线性下降到delay_bits。降低的步长end_step为:end_step=-(max_buffer_size–delay_bits)/(end_blks–thres_blks);其中,end_blks表示最终位置的块数目,thres_blks表示阈值位置的块数目。
其中,上述delay_blks的计算在计算质量比率已详细说明,故在此不再赘述。
(2)在确定缓冲区满度后,进一步确定用于限制目标比特数的上界与下界,具体可实现如下:
计算下界min_bits:
min_bits=max((1.5–10*fullness)*bpp,0.9*bpp/max_lossless_bits*min(lossless_bits[blk_comp_level],max_lossless_bits))
min_rate=max(min_rate,bpp-(1+sample_rate)*k-2*(fullness-0.85)))
其中,k=Clip3(0,2.5,max_lossless_bits–lossless_bits[blk_comp_level]);max_lossless_bits是预设值,一种具体设置方式请见表2。
计算上界max_bits:
bpp_offset=min(max_bpp_offset–k,14.29*(0.85-fullness))
bpp_offset=min(bpp_offset,-8.46*fullness+8.76-(1+sample_rate)*k)
max_bits=max(bpp+bpp_offset,min_rate)
其中,max_bpp_offset=12–bpp<4?4:12–bpp
若考虑到初始传输延迟机制,则上述确定上下界的过程也需考虑初始传输延迟机制对缓冲区满度fullness的影响。
(3)基于确定的上下界对初始目标比特数进行限制,得到当前块的目标比特数,具体可实现为:target_bits=Clip3(min_bits,max_bits,target_bits)。
此外,若当前块为待处理图像的首行块,因首行块的参数预测难度较大,且预测误差具有传递性。因此,在当前块为首行块时,可通过引入首行质量提升参数来对当前块的质量进行提升,该过程主要通过调小首行块的量化参数来实现。
具体地,在上述确定目标比特数的过程中,可实现如下:
若当前块为首行块,则将bpp增加2。
对于待处理图像中的全部首行块,bpp参数的调整可实现为:设首行的图像块bpp增加的量为bpp_delta_row,首行从第一个块到最后一个块,bpp_delta_row从2.5逐渐降低为0.5。
当前块为首行块时,在根据缓冲区状态和块级复杂度等级对初始目标比特数进行限定,以确定目标比特数的过程中,可通过以下方式提升当前块的图像质量:在根据buffer状态和复杂度对目标比特数进行限制之后,若当前块是slice首行块且target_bits<7,其中,7为预设经验阈值,则增大target_bits,且增大后的target_bits必须在给定范围内。具体实现可为:target_bits+=Clip3(0,2,7-target_bits)。
当前块为首行块时,还可通过以下公式确定上界来提升当前块质量:max_bits=max(bpp+bpp_offset,min_rate),bpp_offset=max(bpp_offset,-1),其中,1是预设经验参数。
可以理解的是,上述当前块为首行块时,通过首行质量提升参数提升当前块的质量也可在满足一定条件时才执行。例如,当前块的复杂度等级较低时才进行首行质量提升。
此外,当前块为待处理图像的首列块时,也可通过引入首列质量提升参数来对当前块的质量进行提升,该过程主要通过调小首列块的量化参数来实现。
若当前块为首列块,则将bpp增加2。
对于待处理图像中的全部首列块,bpp参数的调整可实现为:设首列的图像块bpp增加的量为bpp_delta_col,首行从第一个块到最后一个块,bpp_delta_col从2.5逐渐降低为0.5。
当前块为首列块时,在根据缓冲区状态和块级复杂度等级对初始目标比特数进行限定,以确定目标比特数的过程中,可通过以下方式提升当前块的图像质量:在根据buffer状态和复杂度对目标比特数进行限制之后,若当前块是slice首列块且target_bits<7,其中,7为预设经验阈值,则增大target_bits,且增大后的target_bits必须在给定范围内。具体实现可为:target_bits+=Clip3(0,2,7-target_bits)。
当前块为首列块时,还可通过以下公式确定上界来提升当前块质量:max_bits=max(bpp+bpp_offset,min_rate),bpp_offset=max(bpp_offset,-1),其中,1是预设经验参数。
可以理解的是,上述当前块为首列块时,通过首列质量提升参数提升当前块的质量也可在满足一定条件时才执行。例如,当前块的复杂度等级较高时才进行首行质量提升。
步骤S704、确定当前块的量化参数。
在该步骤中,上述确定当前块的量化参数实现如下:
(1)计算参考量化参数ref_qp:
ref_qp=(lossless_bits[blk_comp_level]–target_bits/(1+sample_rate))*p
其中,p的默认值为8。
(2)计算各分量量化参数,以待处理图像为YUV图像为例,该过程为计算YUV各通道的量化参数,具体可实现为:
计算偏移量:bias=bias_init*format_bias;其中,bias_init和format_bias为预设值,其中bias_init参见下表3,format_bias见上表1。
计算亮度通道量化参数:luma_qp=Clip3(0,luma_max_qp,ref_qp–sample_rate*bias)
计算色度通道量化参数:chroma_qp=Clip3(0,chroma_max_qp,ref_qp+bias)
其中bias_init请见表3,format_bias请见表2。
表3:
Figure BDA0003766416700000231
在上表3中,comp_level[0]表示亮度分量,comp_level[1]表示色度分量。
此外,对于YUV420格式图像,两张YUV420可以拼成1张YUV444的图像进行处理。此时,上述亮度分量复杂度等级可由两者的加权值确定:
comp_level[0]=m*y1_comp_level+(1-m)*y2_comp_level,其中,0<=m<=1。
可以理解的是,上述亮度分量复杂度等级也可以取两者的最大值或最小值,本申请对此不做特殊限定。
步骤S705、基于量化参数对当前块进行视频译码。
可选地,视频译码器基于当前块的量化参数对当前块进行译码,可以理解的是,在编码过时,视频编码器可将当前块的通道级复杂度等级编入码流,或者将当前块的量化参数编入码流。相应地,解码端获取码流中的通道级复杂度等级计算量化参数进行解码,或者解码端获取码流中的量化参数进行解码。当然,视频编码器也可以将上述两种信息均编入码流中。
此外,在确定量化参数的过程中,当前块的各通道分量也可独立确定上述同等级平均无损编码比特数、平均无损编码比特数及目标比特数等参数,则上述过程可实现如下:
确定当前块各通道分量的同等级平均无损编码比特数及平均无损编码比特数,具体地:
(1)确定当前块各通道分量的无损编码比特数pred_lossless_bits[i]:
pred_lossless_bits[i]=(cu_bits[i]/(width[i]x height[i])+qp[i]/a[i]
当缓冲区过满且为残差跳过模式时,pred_lossless_bits[i]=bpc[i]+c[i];
其中,i为当前块的通道数目,表示当前通道的实际编码比特数;width和height分别表示当前通道编码单元的宽和高,qp表示当前通道的量化参数。
(2)确定各通道分量的同等级平均无损编码比特数:lossless_bits[i][comp_level[i]]:
lossless_bits[i][comp_level[i]]=lossless_bits[i][comp_level[i]]*(1–d[i])+pred_lossless_bits[i]*d[i]
其中,lossless_bits[i][comp_level[i]]为与当前通道同复杂度等级的已编码通道的同等级平均无损编码比特数,d[i]为更新率。
(3)确定平均无损编码比特数avg_lossless_bits:
avg_lossless_bits[i]=avg_lossless_bits[i]*(1–e[i])+pred_lossless_bits[i]*e[i]
确定当前块各通道分量的目标比特数,可通过以下方式实现:
(1)确定质量比率quality_ratio:
实现方式1:确定当前块的各通道分量的质量比率quality_ratio[i]:
quality_ratio[i]=bpp[i]/(ave_lossless_bits[i]–comp_offset[i])
实现方式2:quality_ratio的计算仍采用cu(Coding Unit,编码单元)级别,计算过程同上述步骤S7031,但需将上述ave_lossless_bits[i]合并成cu级别变量。
(2)确定目标比特数target_bits:
实现方式1:target_bits[i]=quality_ratio[i]*(lossless_bits[i][comp_level[i]]-comp_offset[i])
其中,为了后续步骤(3),需要将target_bits和lossless_bits从cb级别(通道级别)合成cu级别。
实现方式2,对应步骤(1)里面的实现方式2,此时,目标比特数target_bits的计算方式和上述步骤S703中相同,得到的target_bits已是cu级别变量。为了后续步骤(3),同样需要将cb级别的lossless_bits[i]合并成cu级别。
(3)根据buffer状态和复杂度对目标比特数进行限制,同上述步骤S703,此处不再赘述。
确定当前块的各通道分量的量化参数,可实现如下:
实现方式1:确定各通道分量的量化参数:
qp[i]=(lossless_bits[i][comp_level[i]]–target_bits[i])*p[i]
若步骤(3)生效,即上限和下限起了限制作用,target_bits的值被修改为上限或下限,则按照步骤(1)至(2)求得的target_bits[i]的比例,重新分配target_bits得到新的target_bits[i];若target_bits未被步骤(3)修改,此时target_bits[i]的值不会发生变化。
实现方式2:若之前未对target_bits进行分离,此时根据复杂度等级分离target_bits。
实现方式3:该步骤之前的所有变量都为cu级别,此时根据复杂度对参考量化参数ref_qp进行分离,分离后得到的qp作为最终的亮度和色度qp。
在上述过程中,设需要拆分的cu变量为temp,则从cu级别变量拆分为cb级别的实现可以为:
temp[i]=temp*k[i],其中0<=k[i]<=1且∑k[i]=1。
其中,k的值和复杂度相关,k的一种实现方式为k[i]=comp_level[i]/∑comp_level[i];另一种实现方式为预设表格,表格索引值为复杂度等级。
此外,还需要将cb级别变量合成为cu级别变量,设需要合并的cu变量为temp[i],则合并过程具体为,
temp=(temp[0]+temp[1]*sample_rate)/(1+sample_rate)
在本申请的另一个具体实施例中,还可对上述视频译码方法的码控参数定点化,具体可通过如下过程实现:
S1:码控初始化
在解码每个视频切片前初始化码控参数:WarmUp,EndControlLine,EndControlBlocks,EndControlBegin,EndTargetFullness以及MaxBufferSize,具体可初始化如下:
Figure BDA0003766416700000251
上述参数均为码控初始化过程的中间参数,用于实现码控参数的定点化。其中WarmUp[i](0<=i<=4)表示开始若干个块更新率参数,用于更新同等级无损编码比特数AdjComplexity;ComplexityShift表示复杂度相关运算定点化进行的移位位数;InfoRatioShift表示质量比率相关运算定点化进行的移位位数;BppShift表示bpp相关运算定点化进行的移位位数;FullnessShift表示满度相关运算定点化进行的移位位数;AvgComplexityShift表示平均无损编码比特数相关运算定点化进行的移位位数;ChromaSampleRateShift表示采样率相关运算定点化进行的移位位数;K1Shift表示k1(见表4)相关运算定点化进行的移位位数;K2Shift表示k2相关运算定点化进行的移位位数;K3Shift表示k3相关运算定点化进行的移位位数;K4Shift表示k4相关运算定点化进行的移位位数;BiasShift表示Bias相关运算定点化进行的移位位数;K2,K3,K4为码控算法中用到的固定经验值;DelayBits表示延迟比特数;TargetBpp表示目标bpp,由外部配置;TransmissionDelayCu表示初始传输延迟的cu个数;EndDecreaseBits表示由于初始延迟功能slice结尾需要减少的比特数;RcBufferSize表示码控所认为的缓冲区大小;MuxWordSize表示子流并行功能所需的头信息所占比特数;EndControlBlocks表示由于初始传输延迟slice结尾需要对缓冲区最大值操作的块的数目;DecreaseStepLog2表示规定码率控制模块使用的MaxBufferSize在slice结尾每个控制块下降的步长的对数值,其值在码流头中;EndControlBegin表示slice结尾开始进行控制的块的索引;SliceWidthInCu表示slice宽度中有多少个cu的宽度;SliceHeightInCu表示slice高度中有多少个cu的高度;EndTargetFullness表示slice结尾的目标满度;RemainBlksLog2表示一个条带中编码单元总数量的二进制最高位数;MaxBufferSize表示缓冲区的最大值。
根据BitDepth[0](表示Y通道的bpc),ImageFormat查表1得到AdjComplexity(同等级无损编码比特数),AvgComplexity(平均无损编码比特数),ComplexityOffset(复杂度计算的偏置值),MaxComp(最大无损编码比特数)以及K1(经验值)的初始化值。
表4:
Figure BDA0003766416700000261
上表4表示AdjComplexity,AvgComplexity,ComplexityOffset,MaxComp以及K1与BitDepth[0],ImageFormat的对应关系
根据ImageFormat(图像格式)可从下表5得到ChromaSampleRate(采样率),InvElem(去除和采样率有关除法需要的乘数),InvElemShift(去除和采样率有关除法需要的移位数值)以及FormatBias(不同图像格式对于qp的偏置值)的初始化值。
表5:
Figure BDA0003766416700000262
Figure BDA0003766416700000271
上述表5表示ChromaSampleRate,InvElem,InvElemShift以及FormatBias与ImageFormat的对应关系。
S2:确定量化参数,该步骤可实现如下:
S21:根据当前编码单元的亮度复杂度等级ComplexityLevel[0]与色度复杂度等级ComplexityLevel[1]计算编码单元的量化参数MasterQp。
S22:根据MasterQp计算当前编码单元亮度编码块和色度编码块的量化参数Qp[0]和Qp[1]。
其中,上述根据当前编码单元的亮度复杂度等级ComplexityLevel[0]与色度复杂度等级ComplexityLevel[1]计算编码单元的量化参数MasterQp可实现如下:
Figure BDA0003766416700000272
Figure BDA0003766416700000281
Figure BDA0003766416700000291
其中,bppAdj表示bpp的调整值;BitsRecord表示目前已译码的总比特数;CurrBlocks表示当前已译码的块数目;maxComp表示MaxComp进行码控定点化需要进行变换值;complexityOffset表示ComplexityOffset进行码控定点化需要进行变换值;RcBufferSizeMaxBit表示码流缓存大小。RcBufferSize的值等于rc_buffer_size的值,RcBufferSizeMaxBit的值表示RcBufferSize的二进制的最高位数;shiftCur表示当前的移位数值;tmp表示进行码控定点化过程中产生的中间变量;fullness表示满度;infoRatio表示质量比率;relativeComplexity表示相对无损编码比特数;minRate1和minRate2和minRate13表示计算minRate的中间变量;minRate表示targetRate的下限;targetRate表示目标比特数;bppOffset1和bppOffset2和bppOffset3计算bppOffset的中间变量;bppOffset表示bpp的偏置值;maxRate表示targetRate的上限;InverseTable是一个预设表格其的定义为: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}
上述根据MasterQp计算当前编码单元亮度编码块和色度编码块的量化参数Qp[0]和Qp[1]可实现如下:
根据前编码单元的亮度复杂度等级ComplexityLevel[0]与色度复杂度等级ComplexityLevel[1]从下查表6中得到BiasInit;
表6:BiasInit的定义
Figure BDA0003766416700000292
计算亮度量化参数Qp[0]以及色度量化参数Qp[1],Qp[2]可具体实现如下:
Figure BDA0003766416700000293
Figure BDA0003766416700000301
S3:码控参数更新
输入当前编码单元的实际比特数CuBits、亮度量化参数Qp[0]、色度量化参数Qp[1]和当前编码单元复杂度CuComplexityLevel,根据实际编码开销和量化参数计算当前块的实际无损编码比特数compCur,可实现如下:
Figure BDA0003766416700000302
根据当前块的实际无损编码比特数compCur更新码控参数AvgComplexity,AdjComplexity,可实现如下:
Figure BDA0003766416700000303
更新码控参数MaxBufferSize,可实现如下:
Figure BDA0003766416700000304
需要说明的是,上述方案中未进行特殊说明的方案,均可在解码侧或编码侧进行。
需要说明的是,在不冲突的情况下是,上文中任意多个实施例中的部分或全部内容可以构成新的实施例。
本申请实施例提供一种视频译码装置,该视频译码装置可以为视频译码器或视频编码器或视频解码器。具体的,视频译码装置用于执行以上视频译码方法中的视频译码器所执行的步骤。本申请实施例提供的视频译码装置可以包括相应步骤所对应的模块。
本申请实施例可以根据上述方法示例对视频译码装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图11示出上述实施例中所涉及的视频译码装置的一种可能的结构示意图。如图11所示,视频译码装置1100包括复杂度等级确定模块1101、码控参数确定模块1102、量化参数确定模块1103及译码模块1104。
复杂度等级确定模块1101,用于获取待处理图像中当前块的至少两个通道级复杂度等级,根据至少两个通道级复杂度等级确定当前块的块级复杂度等级;上述通道级复杂度等级用于表征当前块的通道级纹理的复杂程度。
码控参数确定模块1102,用于根据码控参数确定当前块的目标比特数,上述码控参数包括当前块的块级复杂度等级。
量化参数确定模块1103,用于基于目标比特数确定当前块的量化参数。
译码模块1104,用于基于量化参数对当前块进行译码。
在一种示例中,上述码控参数包括同等级平均无损编码比特数、平均无损编码比特数以及码流缓冲区满度;上述码控参数确定模块具体用于:确定同等级平均无损编码比特数及平均无损编码比特数;基于同等级平均无损编码比特数及平均无损编码比特数确定初始目标比特数;基于码流缓冲区满度,当前块的块级复杂度等级以及初始目标比特数确定当前块的目标比特数;其中,上述同等级平均无损编码比特数为当前块与多个已译码图像块无损编码时所需比特数预测值的平均值,且上述多个已译码图像块与当前块的复杂度等级相同;平均无损编码比特数为当前块与所有已译码图像块无损编码时所需的比特数预测值的平均值;码流缓冲区满度用于表征缓冲区的满度,上述缓冲区用于存储待处理图像的码流。
在一种示例中,上述码控参数确定模块具体用于确定同等级平均无损编码比特数及平均无损编码比特数:确定当前块的无损编码比特数,无损编码比特数为当前块无损编码时所需比特数的预测值;依据当前块的无损编码比特数以及多个历史同等级平均无损编码比特数更新当前块的同等级平均无损编码比特数;历史同等级平均无损编码比特数为与当前块块复杂度等级相同的已译码图像块的同等级平均无损比特数;依据当前块的无损编码比特数以及全部历史平均无损编码比特数更新当前块的平均无损编码比特数;历史平均无损编码比特数为已译码图像块的平均无损比特数。
在一种可能的实现方式中,上述当前块为待处理图像的首行块,上述码控参数包括首行质量提升参数;上述码控参数确定模块具体用于根据码控参数确定当前块的目标比特数还包括:依据首行质量提升参数调整当前块的目标比特数,以调小当前块的量化参数。
在一种可能的实现方式中,上述当前块为待处理图像的首列块,上述码控参数包括首列质量提升参数;上述码控参数确定模块具体用于根据码控参数确定当前块的目标比特数还包括:依据首行质量提升参数调整当前块的目标比特数,以调小当前块的量化参数。
在一种示例中,上述复杂度等级确定模块具体用于:获取待处理图像中当前块的至少两个通道级复杂度等级,在编码端,获取当前块的通道级纹理信息,并基于通道级纹理信息确定当前块的通道级复杂度等级;或者在解码端,从码流中获取通道级复杂度等级,上述码流为当前块的编码码流。
在一种示例中,上述复杂度等级确定模块具体用于从码流中获取通道级复杂度等级:从码流中获取当前块的复杂度信息位,该复杂度信息位用于表示当前块的通道级复杂度等级;依据复杂度信息位确定通道级复杂度等级。
在一种示例中,上述复杂度等级确定模块具体用于获取当前块的通道级纹理信息,并基于通道级纹理信息确定当前块的通道级复杂度等级:以当前块中至少一个通道图像块为处理单元,将处理单元划分为至少两个子单元,并确定各子单元的纹理信息;在处理单元中,基于各子单元的纹理信息确定当前块的块级复杂度等级。
在一种示例中,上述复杂度等级确定模块具体用于确定各子单元的纹理信息:获取子单元的原始像素值、子单元的左侧相邻列的原始像素值或重建值,以及子单元的上方相邻行的重建值,并对应计算子单元的水平纹理信息及垂直纹理信息;在水平纹理信息及垂直纹理信息中选择最小值作为对应子单元的纹理信息。
在一种示例中,上述复杂度等级确定模块具体用于在处理单元中,基于各子单元的纹理信息确定当前块的块级复杂度等级:在处理单元中,基于多个阈值将各子单元的纹理信息划分至对应的子单元复杂度等级,上述多个阈值是预先设定的;基于各子单元复杂度等级确定当前块的块复杂度等级。
在一种示例中,上述复杂度等级确定模块具体用于基于各子单元复杂度等级确定当前块的块复杂度等级:依据预设规则将各子单元复杂度等级映射为对应的通道级复杂度等级;基于各通道级复杂度等级确定当前块的块级复杂度等级。
在一种示例中,上述复杂度等级确定模块具体用于依据预设规则将各子单元复杂度等级映射为对应的通道级复杂度等级:基于多个阈值以及各子单元复杂度等级之和确定通道级复杂度等级,上述多个阈值是预先设定的。
在一种示例中,上述复杂度等级确定模块具体用于依据预设规则将各子单元复杂度等级映射为对应的通道级复杂度等级:确定子单元复杂度等级的级别构成,并依据级别构成确定对应的通道级复杂度等级。
在一种示例中,上述复杂度等级确定模块具体用于基于各通道级复杂度等级确定当前块的块级复杂度等级:取各通道级复杂度等级的最大值、最小值或加权值作为当前块的块级复杂度等级;或者基于多个阈值以及各通道级复杂度等级之和确定当前块的块级复杂度等级,上述多个阈值是预先设定的。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
当然,本申请实施例提供的视频译码装置包括但不限于上述模块,例如:视频译码装置还可以包括存储模块。
存储模块可以用于存储该视频译码装置的程序代码和数据。
本申请实施例还提供了一种电子设备,该电子设备包括上述视频译码装置1100,该视频译码装置1100执行上文提供的任意一种视频译码器所执行的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上文提供的任意一种视频解码器所执行的方法。
关于上述提供的任一种计算机可读存储介质中相关内容的解释及有益效果的描述,均可以参考上述对应的实施例,此处不再赘述。
本申请实施例还提供了一种芯片。该芯片中集成了用于实现上述视频译码装置100的功能的控制电路和一个或者多个端口。可选的,该芯片支持的功能可以参考上文,此处不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成。所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述处理单元或处理器可以是中央处理器,通用处理器、特定集成电路(application specific integrated circuit,ASIC)、微处理器(digital signal processor,DSP),现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
本申请实施例还提供了一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行上述实施例中的任意一种方法。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如SSD)等。
应注意,本申请实施例提供的上述用于存储计算机指令或者计算机程序的器件,例如但不限于,上述存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (21)

1.一种视频译码方法,其特征在于,包括:
获取待处理图像中当前块的至少两个通道级复杂度等级,根据所述至少两个通道级复杂度等级确定所述当前块的块级复杂度等级;所述通道级复杂度等级用于表征所述当前块的通道级纹理的复杂程度;
根据码控参数确定所述当前块的目标比特数,所述码控参数包括所述当前块的所述块级复杂度等级;
基于所述目标比特数确定所述当前块的量化参数;
基于所述量化参数对所述当前块进行译码。
2.根据权利要求1所述的视频译码方法,其特征在于,所述码控参数包括同等级平均无损编码比特数、平均无损编码比特数以及码流缓冲区满度;
所述根据码控参数确定所述当前块的目标比特数,包括:
确定所述同等级平均无损编码比特数及所述平均无损编码比特数;
基于所述同等级平均无损编码比特数及所述平均无损编码比特数确定初始目标比特数;
基于所述码流缓冲区满度,所述当前块的所述块级复杂度等级以及所述初始目标比特数确定所述当前块的目标比特数;
其中,所述同等级平均无损编码比特数为所述当前块与多个已译码图像块无损编码时所需比特数预测值的平均值,且所述多个已译码图像块与所述当前块的复杂度等级相同;所述平均无损编码比特数为所述当前块与所有已译码图像块无损编码时所需的比特数预测值的平均值;所述码流缓冲区满度用于表征缓冲区的满度,所述缓冲区用于存储所述待处理图像的码流。
3.根据权利要求2所述的视频译码方法,其特征在于,所述确定所述同等级平均无损编码比特数及所述平均无损编码比特数,包括:
确定所述当前块的无损编码比特数,所述无损编码比特数为所述当前块无损编码时所需比特数的预测值;
依据所述当前块的所述无损编码比特数以及多个历史同等级平均无损编码比特数更新所述当前块的所述同等级平均无损编码比特数;所述历史同等级平均无损编码比特数为与所述当前块块复杂度等级相同的已译码图像块的同等级平均无损比特数;
依据所述当前块的所述无损编码比特数以及全部历史平均无损编码比特数更新所述当前块的所述平均无损编码比特数;所述历史平均无损编码比特数为已译码图像块的平均无损比特数。
4.根据权利要求1所述的视频译码方法,其特征在于,所述当前块为所述待处理图像的首行块,所述码控参数包括首行质量提升参数;
在所述根据码控参数确定所述当前块的目标比特数时,所述方法还包括:
依据所述首行质量提升参数调整所述当前块的所述目标比特数,以调小所述当前块的量化参数。
5.根据权利要求1所述的视频译码方法,其特征在于,所述当前块为所述待处理图像的首列块,所述码控参数包括首列质量提升参数;
在所述根据码控参数确定所述当前块的目标比特数时,所述方法还包括:
依据所述首列质量提升参数调整所述当前块的所述目标比特数,以调小所述当前块的量化参数。
6.根据权利要求1所述的视频译码方法,其特征在于,所述获取待处理图像中当前块的至少两个通道级复杂度等级,包括:
获取所述当前块的通道级纹理信息,并基于所述通道级纹理信息确定所述当前块的所述通道级复杂度等级;或者
从码流中获取所述通道级复杂度等级,所述码流为所述当前块的编码码流。
7.根据权利要求6所述的视频译码方法,应用于解码端,其特征在于,所述从码流中获取所述通道级复杂度等级,包括:
从所述码流中获取所述当前块的复杂度信息位,所述复杂度信息位用于表示所述当前块的所述通道级复杂度等级;
依据所述复杂度信息位确定所述通道级复杂度等级。
8.根据权利要求6所述的视频译码方法,应用于编码端,其特征在于,所述获取所述当前块的通道级纹理信息,并基于所述通道级纹理信息确定所述当前块的所述通道级复杂度等级,包括:
以所述当前块中至少一个通道图像块为处理单元,将所述处理单元划分为至少两个子单元,并确定各所述子单元的纹理信息;
在所述处理单元中,基于各所述子单元的纹理信息确定所述当前块的所述块级复杂度等级。
9.根据权利要求8所述的视频译码方法,其特征在于,所述确定各所述子单元的纹理信息,包括:
获取所述子单元的原始像素值、所述子单元的左侧相邻列的原始像素值或重建值,以及所述子单元的上方相邻行的重建值,并对应计算所述子单元的水平纹理信息及垂直纹理信息;
在所述水平纹理信息及所述垂直纹理信息中选择最小值作为对应的所述子单元的所述纹理信息。
10.根据权利要求8所述的视频译码方法,其特征在于,所述在所述处理单元中,基于各所述子单元的纹理信息确定所述当前块的块级复杂度等级,包括:
在所述处理单元中,基于多个阈值将各所述子单元的纹理信息划分至对应的子单元复杂度等级,所述多个阈值是预先设定的;
基于各所述子单元复杂度等级确定所述当前块的所述块级复杂度等级。
11.根据权利要求10所述的视频译码方法,其特征在于,所述基于各所述子单元复杂度等级确定所述当前块的块复杂度等级,包括:
依据预设规则将各所述子单元复杂度等级映射为对应的所述通道级复杂度等级;
基于各所述通道级复杂度等级确定所述当前块的所述块级复杂度等级。
12.根据权利要求11所述的视频译码方法,其特征在于,所述依据预设规则将各所述子单元复杂度等级映射为对应的所述通道级复杂度等级,包括:
基于多个阈值以及各所述子单元复杂度等级之和确定通道级复杂度等级,所述多个阈值是预先设定的。
13.根据权利要求11所述的视频译码方法,其特征在于,所述依据预设规则将各所述子单元复杂度等级映射为对应的所述通道级复杂度等级,包括:
确定所述子单元复杂度等级的级别构成,并依据所述级别构成确定对应的所述通道级复杂度等级。
14.根据权利要求11-13任一项所述的视频译码方法,其特征在于,所述基于各所述通道级复杂度等级确定所述当前块的块级复杂度等级,包括:
取各所述通道级复杂度等级的最大值、最小值或加权值作为所述当前块的块级复杂度等级;或者
基于多个阈值以及各所述通道级复杂度等级之和确定所述当前块的所述块级复杂度等级,所述多个阈值是预先设定的。
15.根据权利要求2-5任一项所述的视频译码方法,其特征在于,所述当前块为多通道图像块;所述多通道图像块的各通道分量共同或独立确定所述同等级无损编码比特数与所述目标比特数。
16.根据权利要求6-13任一项所述的视频译码方法,其特征在于,所述当前块为多通道图像块;所述多通道图像块的各通道分量共同或独立确定所述通道级复杂度等级。
17.一种视频译码装置,其特征在于,包括:
复杂度等级确定模块,用于获取待处理图像中当前块的至少两个通道级复杂度等级,根据所述至少两个通道级复杂度等级确定所述当前块的块级复杂度等级;所述通道级复杂度等级用于表征所述当前块的通道级纹理的复杂程度;
码控参数确定模块,用于根据码控参数确定所述当前块的目标比特数,所述码控参数包括所述当前块的所述块级复杂度等级;
量化参数确定模块,用于基于所述目标比特数确定所述当前块的量化参数;
译码模块,用于基于所述量化参数对所述当前块进行译码。
18.一种解码器,其特征在于,所述视频解码器用于执行如权利要求1-6中任一项所述的方法。
19.一种编码器,其特征在于,所述视频编码器用于执行如权利要求1-14中任一项所述的方法。
20.一种视频编解码系统,其特征在于,包括视频编码器和/或视频解码器,所述视频编码器用于执行如权利要求1-14任一项所述的方法,所述视频解码器用于执行如权利要求1-6任一项所述的方法。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序,当所述程序在所述计算机上运行时,使得所述计算机执行如权利要求1-16中任一项所述的方法。
CN202210887907.9A 2022-07-26 2022-07-26 一种视频译码方法、装置及存储介质 Pending CN116095319A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202210887907.9A CN116095319A (zh) 2022-07-26 2022-07-26 一种视频译码方法、装置及存储介质
CN202310452692.2A CN116366847A (zh) 2022-07-26 2022-07-26 一种视频图像解码方法、装置及存储介质
PCT/CN2023/105398 WO2024022039A1 (zh) 2022-07-26 2023-06-30 一种视频图像解码方法、编码方法、装置及存储介质
TW112127156A TWI847806B (zh) 2022-07-26 2023-07-20 視訊圖像解碼方法、編碼方法、裝置及存儲介質

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210887907.9A CN116095319A (zh) 2022-07-26 2022-07-26 一种视频译码方法、装置及存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310452692.2A Division CN116366847A (zh) 2022-07-26 2022-07-26 一种视频图像解码方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN116095319A true CN116095319A (zh) 2023-05-09

Family

ID=86210844

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310452692.2A Pending CN116366847A (zh) 2022-07-26 2022-07-26 一种视频图像解码方法、装置及存储介质
CN202210887907.9A Pending CN116095319A (zh) 2022-07-26 2022-07-26 一种视频译码方法、装置及存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202310452692.2A Pending CN116366847A (zh) 2022-07-26 2022-07-26 一种视频图像解码方法、装置及存储介质

Country Status (2)

Country Link
CN (2) CN116366847A (zh)
WO (1) WO2024022039A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024022039A1 (zh) * 2022-07-26 2024-02-01 杭州海康威视数字技术股份有限公司 一种视频图像解码方法、编码方法、装置及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019191983A1 (zh) * 2018-04-04 2019-10-10 深圳市大疆创新科技有限公司 编码方法、装置、图像处理系统和计算机可读存储介质
CN110740324B (zh) * 2019-09-11 2023-03-31 浙江大华技术股份有限公司 编码控制方法及相关装置
CN111866504B (zh) * 2020-07-17 2022-06-21 Oppo广东移动通信有限公司 一种编码方法、编码器及计算机可读存储介质
CN113784126A (zh) * 2021-09-17 2021-12-10 Oppo广东移动通信有限公司 图像编码方法、装置、设备及存储介质
CN114466189B (zh) * 2021-12-27 2024-05-28 浙江大华技术股份有限公司 码率控制方法、电子设备及存储介质
CN116366847A (zh) * 2022-07-26 2023-06-30 杭州海康威视数字技术股份有限公司 一种视频图像解码方法、装置及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024022039A1 (zh) * 2022-07-26 2024-02-01 杭州海康威视数字技术股份有限公司 一种视频图像解码方法、编码方法、装置及存储介质

Also Published As

Publication number Publication date
WO2024022039A1 (zh) 2024-02-01
TW202406339A (zh) 2024-02-01
CN116366847A (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
TWI666920B (zh) 用於視訊寫碼之具有執行長度碼之調色盤預測器信令
TWI624172B (zh) 基於調色板之視訊寫碼
RU2678490C2 (ru) Определение размера палитры, записей палитры и фильтрование блоков, кодированных на основе палитры, при кодировании видео
CN107211138B (zh) 编码、解码视频数据的方法、装置和计算机可读存储媒体
KR102120571B1 (ko) 넌-4:4:4 크로마 서브-샘플링의 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
KR102229045B1 (ko) 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
US20160234494A1 (en) Restriction on palette block size in video coding
CN110999299A (zh) 在视频译码中跨分量动态范围调整(cc-dra)的系统及方法
CN115152223A (zh) 对用于视频编解码的高级语法的输出层集数据和一致性窗口数据进行编解码
JP2018531556A6 (ja) 非4:4:4クロマサブサンプリングのディスプレイストリーム圧縮(dsc)のためのエントロピーコーディング技法
WO2023231866A1 (zh) 一种视频译码方法、装置及存储介质
CN116684609A (zh) 图像编解码方法、装置及存储介质
WO2024022039A1 (zh) 一种视频图像解码方法、编码方法、装置及存储介质
WO2024022359A1 (zh) 一种图像编解码方法及装置
WO2024022367A1 (zh) 图像解码方法、编码方法及装置
CN116132685A (zh) 图像编解码方法、装置及存储介质
TWI847806B (zh) 視訊圖像解碼方法、編碼方法、裝置及存儲介質
WO2023138532A1 (zh) 一种视频解码方法、装置、视频解码器及存储介质
TWI821013B (zh) 視頻編解碼方法及裝置
TWI838089B (zh) 一種視頻解碼方法、裝置、視頻解碼器及存儲介質
WO2023083245A1 (zh) 解码方法、编码方法及装置
WO2023138562A1 (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40092612

Country of ref document: HK