CN110754092A - 用于对视频数据进行编码和解码的方法、设备和系统 - Google Patents

用于对视频数据进行编码和解码的方法、设备和系统 Download PDF

Info

Publication number
CN110754092A
CN110754092A CN201880037989.XA CN201880037989A CN110754092A CN 110754092 A CN110754092 A CN 110754092A CN 201880037989 A CN201880037989 A CN 201880037989A CN 110754092 A CN110754092 A CN 110754092A
Authority
CN
China
Prior art keywords
partitions
encoding
partition
portions
current partition
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.)
Granted
Application number
CN201880037989.XA
Other languages
English (en)
Other versions
CN110754092B (zh
Inventor
克里斯托弗·詹姆斯·罗斯沃恩
安德鲁·J·朵莱尔
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Publication of CN110754092A publication Critical patent/CN110754092A/zh
Application granted granted Critical
Publication of CN110754092B publication Critical patent/CN110754092B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/645Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission by grouping of coefficients into blocks after the transform
    • 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/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/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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream

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

一种用于将视频数据编码到具有多个分区的视频位流中的方法。所述方法包括:通过测试多个分区中的当前分区的相应候选系数截断级别来生成当前分区的多个编码成本估计(1106),编码成本估计各自是用于在候选截断级别对当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引来确定的,其中编码成本估计各自独立于当前分区中的系数位的值。所述方法还包括:根据当前分区的预算编码成本和相应编码成本估计来选择(1110)候选截断级别其中之一,预算编码成本表示对分区进行编码的允许大小;以及使用所选择的截断级别将视频数据的当前分区编码(1113)到视频位流中,以生成视频位流。

Description

用于对视频数据进行编码和解码的方法、设备和系统
技术领域
本发明通常涉及数字视频信号处理,尤其涉及用于对视频数据进行编码和解码的方法、设备和系统。本发明还涉及包括记录有用于对视频数据进行编码和解码的计算机程序的计算机可读介质的计算机程序产品。
背景技术
当前存在包括用于传输和存储视频数据的应用的许多视频编码用的应用。还开发了许多视频编码标准并且其它视频编码标准当前正在开发中。视频压缩研究的重点针对“分发编解码器”(即,用于将压缩视频数据分发至地理上分散的受众的编解码器)。然而,新兴的研究领域针对“夹层编解码器(mezzanine codec)”。夹层编解码器用于高度本地化的分发、即在广播工作室内。夹层编解码器的特点是对超低延时的要求、通常远低于一帧,并且与传统的视频编解码器相比,大大降低了编码器和解码器这两者的复杂度。还已知为联合图像专家组(JPEG)的国际标准化组织/国际电工委员会联合技术委员会1/小组委员会29/工作组1(ISO/IEC JTC1/SC29/WG1)内的在这样的编码方面的最新进展已得到命名为“JPEG XS”的标准化工作项。JPEG XS工作项的目标是产生具有不超过32行视频数据的端到端延时以及用于在相对适度的实现技术(例如,来自诸如
Figure BDA0002307187270000011
等的厂商的中档FPGA)内实现的能力的编解码器。这样的延时要求强制使用严格的速率控制技术,以确保编码数据相对于承载压缩视频数据的通道的容量不会过度改变。
倾向于使用诸如H.264/AVC等的传统视频编解码器,使得一个编码器所产生的视频位流有可能被解码多次(例如,如在广播电视中的情况那样)。在这样的应用中,与解码器相比相对更复杂的编码器是允许的。这种复杂度的不对称性提供了在选择最佳预测模式之前测试多个不同的预测模式的可能性。相反,夹层编解码器的应用通常涉及一个编码器产生一个解码器所要消耗的位流。如此,编码器和解码器之间的允许的复杂度的不对称性大大降低。
在广播工作室,视频可以在经历数次变换之前由照相机拍摄,其中这些变换包括实时编辑、图形和覆盖插入、以及将不同的内容源混合,这样产生输出视频流。一旦对视频进行了充分处理,就使用分发编码器来对输出视频流进行编码以便(例如,经由地面广播)分发至终端消费者。在工作室内,视频数据传统上通常以未压缩格式传输,这需要使用非常高速的链路。串行数字接口(SDI)协议的变体可以传输不同的视频格式。例如,(利用3Gbps电气链路工作的)3G-SDI可以针对各样本按30fps和八(8)位传输1080p HDTV(1920×1080分辨率)。具有固定位率的接口适合于传输具有恒定位率(CBR)的数据。未压缩视频数据通常是CBR,并且压缩视频数据在超低延时编码的情况下通常预计也是CBR。信号传播所用的最大可用线缆长度在较高位率下减小,这对于通过工作室的线缆路由而言可能成为问题。UHDTV(3840×2160)与1080p HDTV相比在带宽上需要4倍增加,这意味着12Gbps接口。增加单个电气通道的数据速率使可实现的布线长度减小。在3Gbps时,线缆布设通常不能超过150m,这是许多工作室应用的最小可用长度。实现更高速率链路的一个方法是通过复制布线、例如通过使用四个3G-SDI链路、利用帧平铺或一些其它复用方案。然而,布线复制方法增加了线缆路由的复杂度,需要更多的物理空间,并且与使用单个线缆相比可能使可靠性降低。因而,按行业需要夹层编解码器,该夹层编解码器可以在保持“视觉无损”(即,与原始视频数据相比没有可感知的伪影)的性能水平的同时按相对较低的压缩比(例如,4:1)进行压缩。压缩比也可被表示为提供给压缩流的“每像素位数”(bpp),同时注意到转换回到压缩比需要了解未压缩信号的位深度以及色度格式。例如,8b4:4:4视频数据在未压缩时占用24bpp,因此以4bpp的传输意味着6:1的压缩比。
视频数据包括一个或多个颜色通道。通常,存在一个主要颜色通道和两个次要颜色通道。主要颜色通道通常被称为“亮度”通道,并且次要颜色通道通常被称为“色度”通道。使用诸如“YCbCr”或“RGB”等的颜色空间来表示视频数据。一些应用需要对计算机显卡的输出的视觉无损压缩、或者从平板电脑中的SOC向平板电脑中的LCD面板的传输。这样的内容由于使用了绘制小部件、文本、图标等因而通常具有与从照相机拍摄到的内容不同的统计特性。这样的应用可被称为“画面内容应用”。对于画面内容应用,通常使用“RGB”颜色空间,这是因为例如在驱动LCD面板时,视频通常被捕获并显示为RGB。注意,最大信号强度存在于“G”(绿色)通道中,因而通常使用主要颜色通道来对G通道进行编码,并且使用次要颜色通道来对其余通道(即,“B”和“R”)进行编码。该配置可被称为“GBR”。在“YCbCr”颜色空间处于使用中的情况下,使用主要颜色通道来对“Y”通道进行编码,并且使用次要颜色通道来对“Cb”通道和“Cr”通道进行编码。
还使用特定色度格式来表示视频数据。按在4:4:4色度格式处于使用中的情况下的相同空间密度来对主要颜色通道和次要颜色通道进行空间采样。对于画面内容,常用的色度格式是4:4:4,这是因为通常LCD面板针对各像素提供红色、绿色和蓝色的独立控制,即4:4:4色度格式。位深度定义了各个颜色通道中的样本的位宽度,这意味着可用样本值的范围。通常,所有的颜色通道都具有相同的位深度,尽管这些颜色通道可以可替代地具有不同的位深度。其它色度格式也是可以的。例如,如果(与亮度通道相比)在水平方向上按一半的速率对色度通道进行采样,则认为4:2:2色度格式处于使用中。此外,如果(与亮度通道相比)在水平方向和垂直方向上按一半的速率对色度通道进行采样,则认为4:2:0色度格式处于使用中。这些色度格式利用人类视觉系统的对强度的敏感度高于对颜色的敏感度这一特征。如此,可以在不会引起不适当的视觉影响的情况下减少颜色通道的采样。然而,该性质不太适用于多代的编码和解码常见的工作室环境。此外,对于画面内容,使用除4:4:4以外的色度格式由于向子像素绘制(或“反锯齿”)的文本和锐利的对象边缘引入了失真因而可能成为问题。
帧数据也可以包含画面内容和照相机拍摄内容的混合。例如,计算机画面可以包括各种窗口、图标和控制按钮、文本,并且还包含正播放的视频或正查看的图像。就计算机画面整体而言,这样的内容可被称为“混合内容”。此外,细节级别(或“纹理”)在帧内改变。通常,详细纹理的区域(例如,叶片、文本)或(例如,来自照相机传感器的)包含噪声的区域很难进行压缩。详细纹理仅能以低压缩比编码而不会丢失细节。相反,细节少的区域(例如,平坦区域、天空、来自计算机应用的背景)可以以高压缩比编码,而几乎不会丢失细节。
为了符合低复杂度,一个方法是跨图像以层级方式应用的“小波”变换的应用。小波变换已在JPEG2000图像编码标准的背景下进行了研究。跨图像传输的应用不同于诸如H.264/AVC等的基于块的编解码器,该基于块的编解码器应用各自被应用于各帧的小区段(section)的大量离散余弦变换(DCT)。使用各种方法其中之一来预测H.264/AVC中的各块,从而由于需要进行模式决策而以增加编码器复杂度为代价实现了高度的局部适应性。此外,编码器使用失真计算来辅助模式选择。相比之下,小波变换应用于宽空间区域,因而基于块的编解码器可用的预测模式通常不可用,这导致编码器和解码器的复杂度的差异性大大降低。不存在预测模式决策还避免了需要失真测量来辅助这样的决策,从而降低了编码器复杂度。然而,关于量化的决策仍然存在。在用于夹层编码应用的基于小波的压缩技术的背景下,期望进一步降低编码器复杂度。
发明内容
本发明的目的是大致克服或至少改进现有配置的一个或多个缺点。
本发明的一方面提供一种用于从位流中解码图像帧的方法,所述方法包括:
从所述位流中接收所述图像帧的分区的多个部分,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置在所述位流中的;
从所接收到的多个部分中解码系数,所述多个部分中的各部分的对所述系数的逆量化独立于所述多个部分中的其它部分的逆量化,所述逆量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算来针对所述小波变换的至少一个子带表示附加位平面的场景和细化,其中场景和细化指示截断级别;以及
使用解码得到的系数来形成所述图像帧。
在一些方面中,所述列的位预算是通过根据各列在当前分区内占据的相对比例在所述当前分区中的列之间分割所述当前分区的预算编码成本而确定的。
在一些方面中,所述分区的宽度是128的倍数,具有5个级别的水平分解的最深级别,并且在所述最深级别将系数分组成四个为一组的集合。
本发明的另一方面提供一种用于从位流中解码图像帧的设备,所述设备包括:
用于从所述位流中接收所述图像帧的分区的多个部分的部件,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置在所述位流中的;
用于从所接收到的多个部分中解码系数的部件,所述多个部分中的各部分的对所述系数的逆量化独立于所述多个部分中的其它部分的逆量化,所述逆量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算来针对所述小波变换的至少一个子带表示附加位平面的场景和细化,其中场景和细化指示截断级别;以及
用于使用解码得到的系数来形成所述图像帧的部件。
本发明的另一方面提供一种用于从位流中解码图像帧的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,用于执行所述计算机程序,所述计算机程序包括指令,所述指令用于:
从所述位流中接收所述图像帧的分区的多个部分,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置在所述位流中的;
从所接收到的多个部分中解码系数,所述多个部分中的各部分的对所述系数的逆量化独立于所述多个部分中的其它部分的逆量化,所述逆量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算来针对所述小波变换的至少一个子带表示附加位平面的场景和细化,其中场景和细化指示截断级别;以及
使用解码得到的系数来形成所述图像帧。
本发明的另一方面提供一种非暂时性计算机可读介质,在所述非暂时性计算机可读介质上存储有计算机程序,所述计算机程序用于从位流中解码图像帧,所述计算机程序包括:
用于从所述位流中接收所述图像帧的分区的多个部分的代码,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置在所述位流中的;
用于从所接收到的多个部分中解码系数的代码,所述多个部分中的各部分的对所述系数的逆量化独立于所述多个部分中的其它部分的逆量化,所述逆量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算来针对所述小波变换的至少一个子带表示附加位平面的场景和细化,其中场景和细化指示截断级别;以及
用于使用解码得到的系数来形成所述图像帧的代码。
本发明的另一方面提供一种用于将图像帧编码到位流中的方法,所述方法包括:
确定所述图像帧的分区的多个部分,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置的;
从所述多个部分确定系数,所述多个部分中的各部分的对所述系数的量化独立于所述多个部分中的其它部分的量化,所述量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算、针对所述小波变换的至少一个子带来确定附加位平面的场景和细化,其中场景和细化指示截断级别;以及
使用所确定的系数来形成所述图像帧的位流。
本发明的另一方面提供一种用于将图像帧编码到位流中的设备,所述设备包括:
用于确定所述图像帧的分区的多个部分的部件,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置的;
用于从所述多个部分确定系数的部件,所述多个部分中的各部分的对所述系数的量化独立于所述多个部分中的其它部分的量化,所述量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算、针对所述小波变换的至少一个子带来确定附加位平面的场景和细化,其中场景和细化指示截断级别;以及
用于使用所确定的系数来形成所述图像帧的位流的部件。
本发明的另一方面提供一种用于将图像帧编码到位流中的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,用于执行所述计算机程序,所述计算机程序包括指令,所述指令用于:
确定所述图像帧的分区的多个部分,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置的;
从所述多个部分确定系数,所述多个部分中的各部分的对所述系数的量化独立于所述多个部分中的其它部分的量化,所述量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算、针对所述小波变换的至少一个子带来确定附加位平面的场景和细化,其中场景和细化指示截断级别;以及
使用所确定的系数来形成所述图像帧的位流。
本发明的另一方面提供一种非暂时性计算机可读介质,在所述非暂时性计算机可读介质上存储有计算机程序,所述计算机程序用于将图像帧编码到位流中,所述计算机程序包括:
用于确定所述图像帧的分区的多个部分的代码,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置的;
用于从所述多个部分确定系数的代码,所述多个部分中的各部分的对所述系数的量化独立于所述多个部分中的其它部分的量化,所述量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算、针对所述小波变换的至少一个子带来确定附加位平面的场景和细化,其中场景和细化指示截断级别;以及
用于使用所确定的系数来形成所述图像帧的位流的代码。
本发明的另一方面提供一种用于将视频数据编码到具有多个分区的视频位流中的方法,所述方法包括:通过测试所述多个分区中的当前分区的相应候选系数截断级别来生成所述当前分区的多个编码成本估计,所述编码成本估计各自是用于在所述候选截断级别对所述当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引而确定的,其中所述编码成本估计各自独立于所述当前分区中的系数位的值;根据所述当前分区的预算编码成本和相应编码成本估计来选择所述候选截断级别其中之一,所述预算编码成本表示对分区进行编码的允许大小;以及使用所选择的截断级别来将视频数据的所述当前分区编码到所述视频位流中以生成所述视频位流。
在一些方面中,所述编码成本估计包括针对所述当前分区域的各编码系数的符号编码成本,各编码系数包括在所选择的截断级别已被量化为值0的编码系数。
在一些方面中,用于对所述当前分区进行编码的允许大小是根据漏桶模型、基于所述当前分区的预算和先前分区的编码大小而确定的。
在一些方面中,用于对所述当前分区进行编码的允许大小是基于考虑被量化到所选择的截断级别的系数的值的编码成本估计的重新评价而确定的。
在一些方面中,所述方法还包括:生成所述候选截断级别。
在一些方面中,所述当前分区的预算编码成本是每像素位乘以所述当前分区中的像素数。
在一些方面中,所述当前分区的预算编码成本根据各列在所述当前分区内占据的相对比例在所述当前分区中的列之间被分割。
在一些方面中,用滤波器数据填充所述视频位流。
本发明的另一方面提供一种用于将视频数据编码到具有多个分区的视频位流中的设备,所述设备包括:用于通过测试所述多个分区中的当前分区的相应候选系数截断级别来生成所述当前分区的多个编码成本估计的部件,所述编码成本估计各自是用于在所述候选截断级别对所述当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引而确定的,其中所述编码成本估计各自独立于所述当前分区中的系数位的值;用于根据所述当前分区的预算编码成本和相应编码成本估计来选择所述候选截断级别其中之一的部件,所述预算编码成本表示对分区进行编码的允许大小;以及用于使用所选择的截断级别来将视频数据的所述当前分区编码到所述视频位流中以生成所述视频位流的部件。
本发明的另一方面提供一种用于将视频数据编码到具有多个分区的视频位流中的系统,所述系统包括:存储器,用于存储数据和计算机程序;处理器,其连接至所述存储器,用于执行所述计算机程序,所述计算机程序包括指令,所述指令用于:通过测试所述多个分区中的当前分区的相应候选系数截断级别来生成所述当前分区的多个编码成本估计,所述编码成本估计各自是用于在所述候选截断级别对所述当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引而确定的,其中所述编码成本估计各自独立于所述当前分区中的系数位的值;根据所述当前分区的预算编码成本和相应编码成本估计来选择所述候选截断级别其中之一,所述预算编码成本表示对分区进行编码的允许大小;以及使用所选择的截断级别来将视频数据的所述当前分区编码到所述视频位流中以生成所述视频位流。
本发明的另一方面提供一种非暂时性计算机可读介质,在所述非暂时性计算机可读介质上存储有计算机程序,所述计算机程序用于将视频数据编码到具有多个分区的视频位流中,所述计算机程序包括:用于通过测试所述多个分区中的当前分区的相应候选系数截断级别来生成所述当前分区的多个编码成本估计的代码,所述编码成本估计各自是用于在所述候选截断级别对所述当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引而确定的,其中所述编码成本估计各自独立于所述当前分区中的系数位的值;用于根据所述当前分区的预算编码成本和相应编码成本估计来选择所述候选截断级别其中之一的代码,所述预算编码成本表示对分区进行编码的允许大小;以及用于使用所选择的截断级别来将视频数据的所述当前分区编码到所述视频位流中以生成所述视频位流的代码。
本发明的另一方面提供一种对具有按列配置的多个分区的视频位流的视频数据进行解码的方法,所述方法包括:对所述视频位流的头部进行解码,以确定各分区的列数;对当前分区进行解码,以确定所述当前分区的各列内的各数据子包的位置;基于相应确定的位置来对所述当前分区的各子包进行解码;从解码后的子包确定系数位;以及基于对所确定的系数位进行的滤波操作,从所确定的系数位来确定解码视频数据。
还公开了其它方面。
附图说明
现在将参考以下的附图和附录来说明本发明的至少一个实施例,其中:
图1是示出子帧延时视频编码和解码系统的示意框图;
图2A和2B构成可以实践图1的视频编码和解码系统的其中一个或这两者的通用计算机系统的示意框图;
图3A是示出用于分区(precinct)的小波子带分解的示意框图;
图3B是示出用于图3A的小波子带分解的小波分析滤波器组的示意框图;
图4是示出用于位流中的表示的子带系数分组的示意框图,其中示出了数个截断阈值;
图5是示出将帧分割成多个列的示意框图;
图6是示出用于具有多个列的分区的位流分解的示意框图;
图7是示出视频编码器的功能模块的示意框图;
图8是示出图7的视频编码器的速率控制模块的示意框图;
图9是示出图7的视频编码器中的基于成本估计的速率转发的示意图;
图10是示出视频解码器的功能模块的示意框图;
图11是示出利用用于设置截断偏移的最坏情况分区成本估计来对位流进行编码的方法的示意流程图;以及
图12是示出对位流进行解码的方法的示意流程图。
具体实施方式
在任一个或多个附图中参考具有相同附图标记的步骤和/或特征的情况下,除非出现相反意图,否则这些步骤和/或特征为了本说明书的目的而具有相同的功能或操作。
图1是示出子帧延时视频编码和解码系统100的功能模块的示意框图。编码和解码系统100中的速率控制和缓冲器管理机制确保了对于向着视频编码器114的传入视频数据未发生(例如,由于可能模式的编码器搜索所需的复杂度和时间的变化引起的)缓冲器欠载和由此导致的传送解码视频失败,使得根据传送视频帧所经由的接口的定时来传送来自视频解码器134的解码视频帧。速率控制机制可以在决定量化参数时利用所估计的(最坏情况)成本估计来降低编码器复杂度。此外,系统100可以利用独立的量化控制,通过将各帧分割成列来提供并发恒定位率,但其中,各列的压缩数据被打包到单个位流中。
传送视频帧所经由的接口例如可以是SDI。诸如SDI等的接口具有包括水平消隐周期和垂直消隐周期的与时钟源同步的采样定时。如此,需要根据SDI链路的帧定时来传送解码视频的样本。为了经由SDI传输而格式化的视频数据也可以经由以太网(例如,使用如SMPTE ST.2022-6中所指定的方法)来输送。在没有根据所需定时传送样本的情况下,将产生明显的视觉伪影(例如,由下游装置将无效数据解释为样本值)。因此,速率控制机制确保了没有发生将导致产生无效位流的缓冲器过载。对于向视频编码器114的传入SDI链路存在类似的约束,该约束需要根据到达定时对样本进行编码,并且可能不会(例如,由于用于对帧的不同区域进行编码的处理要求改变因而)停止向视频编码器114的传入视频数据。
如前面所述,视频编码和解码系统100具有小于一帧视频数据的延时。特别地,一些应用要求从视频编码器114的输入到视频解码器134的输出的不超过三十二(32)行视频数据的延时。延时可以包括在视频数据的输入/输出以及部分编码的视频数据在通信信道上传输之前和之后的存储所需的时间。通常,视频数据以光栅扫描顺序(例如,通过SDI链路)发送和接收。将各帧分割成“分区”,各分区的高度通常是两行亮度样本并且其宽度等于帧的宽度。可替代地,多个分区并排共存,从而整体占据帧的宽度,其中各分区属于单独“列”。然后,应用给定列中的一个或多个分区的速率平滑窗口来设置该列中的当前分区的目标速率。将位流写入缓冲器,使得在传输之前将一个压缩分区的数据聚集到缓冲器中。在正使用多个列时,将一行分区中的各压缩分区的数据在作为单个位流发送之前聚集到缓冲器中。
系统100包括源装置110和目的地装置130。通信信道120用于从源装置110向目的地装置130通信编码视频信息。在一些配置中,源装置110和目的地装置130可以包括诸如覆盖插入和实时编辑模块等的各个广播工作室设备,在这种情况下,通信信道120可以是SDI链路。通常,通信信道120是“CBR”信道。如此,通信信道120对可用带宽提供固定的限制。在不使用夹层压缩的应用中,通过通信信道120直接发送未压缩视频。对于这样的应用,要求通信信道120的带宽等于(或者可以大于)未压缩视频数据的带宽。夹层压缩解决了通信信道120缺少未压缩视频数据的足够带宽的情况。对于压缩视频数据,所需的带宽通常在时间上改变,其中允许各分区在一些确定的限制内在压缩大小上改变。视频编码器可以在传输之前缓冲数个压缩分区。由于传输以恒定位率发生,因此该缓冲在针对当前正压缩的分区设置目标压缩大小方面提供了更大程度的灵活度。通过对多个分区求平均,维持了与通信信道120的带宽匹配的固定压缩大小。在系数域(在小波变换之后但在视频编码器中的熵编码之前)和压缩域(在熵编码之后但在传输之前)这两者中都可以进行缓冲。缓冲增加了复杂度和延时,但允许“超前”操作发生。系数域中的缓冲允许超前模式,由此当前分区的目标预算被衰减以考虑当前分区相对于一个或多个即将到来的分区的相对预期压缩大小。可以使用诸如总计绝对系数幅值或跨所有子带的总计MSB位置等的测量值来确定分区的预期压缩大小。然后,在存在关于接下来的一个或多个分区的相对编码难度的一些考虑的情况下,设置第一分区目标预算。这在一定程度上减轻了速率转发不可用于第一分区这一问题。缺少速率控制超前窗口的较低复杂度实现针对视频数据的各压缩分区使用固定大小。视频数据的压缩分区通过通信信道120输送。通信信道120可以利用意图用于输送未压缩数据的接口(诸如SDI或HDMI等),尽管在系统100中输送压缩数据。
在其它配置中,源装置110和目的地装置130可以包括显卡驱动器作为(例如,在智能电话、平板电脑或膝上型计算机中找到的)片上系统(SOC)和LCD面板的一部分,其中在这种情况下,通信信道120通常是诸如PCB轨迹和关联的连接器等的有线信道。此外,源装置110和目的地装置130可以包括范围广泛的任意装置,其中这些装置包括支持空中电视广播、有线电视应用、因特网视频应用以及在一些存储介质或文件服务器上捕获编码视频数据的应用的装置。源装置110还可以是拍摄视频并以提供视觉无损压缩的压缩格式输出视频数据的数字照相机,使得系统100的性能可被视为等同于真正无损格式(例如,未压缩)。
如图1所示,源装置110包括视频源112、视频编码器114和发送器116。视频源112通常包括未压缩视频数据113的源,诸如摄像传感器、存储在非暂时性记录介质上的先前拍摄到的视频序列、或者来自远程摄像传感器的视频馈送等。按照视频数据的传送的固定定时,将未压缩视频数据113从视频源112通过CBR信道输送至视频编码器114。通常,视频数据利用用以在行(“水平同步”)和帧(“垂直同步”)之间描述的信令以光栅扫描格式传送。视频源112也可以是计算机显卡的输出(例如,显示操作系统和在计算装置(例如,平板计算机)上执行的各种应用的视频输出)。这样的内容是“画面内容”的示例。可以包括摄像传感器作为视频源112的源装置110的示例包括智能电话、视频摄录机和网络视频照相机。由于画面内容可以自身包括平滑绘制图形和各种区域中的自然内容的重放,因此该画面内容通常也是“混合内容”的形式。视频编码器114将来自视频源112的未压缩视频数据113转换成编码视频数据,并且将参考图3来进一步说明。
视频编码器114对传入的未压缩视频数据113进行编码。要求视频编码器114实时地对传入的样本数据进行处理(即,例如如果处理传入数据的速率将降至低于输入数据速率,则视频编码器114不能停止传入未压缩视频数据113)。视频编码器114以恒定位率输出压缩视频数据115(“位流”)。在视频流应用中,整个位流未存储在任一位置中。相反,压缩视频数据的分区由视频编码器114连续产生,并且例如在(CBR)通信信道120中利用中间存储由视频解码器134消耗。CBR流压缩视频数据由发送器116通过通信信道120(例如,SDI链路)发送。压缩视频数据也可以存储在诸如“闪速”存储器或硬盘驱动器等的非暂时性存储器122中,直到随后通过通信信道120发送或者作为通过通信信道120的发送的代替。
目的地装置130包括接收器132、视频解码器134和显示装置136。接收器132从通信信道120接收编码视频数据并将所接收到的视频数据133传递至视频解码器134。然后,视频解码器134将解码后的帧数据135输出至显示装置136。显示装置136的示例包括阴极射线管、液晶显示器(诸如在智能电话中等)、平板计算机、计算机监视器、或者单机型电视机。也可以将源装置110和目的地装置130各自的功能体现在单个装置中,该单个装置上的示例包括移动电话手机和平板计算机、或者包括覆盖插入单元的广播工作室内的设备。
尽管以上说明了示例装置,但源装置110和目的地装置130各自通常经由硬件组件和软件组件的组合可以配置在通用计算机系统内。图2A示出如下的这种计算机系统200,该计算机系统200包括:计算机模块201;诸如键盘202、鼠标指示器装置203、扫描器226、可被配置为视频源112的照相机227、以及麦克风280等的输入装置;以及包括打印机215、可被配置为显示装置136的显示装置214、以及扬声器217等的输出装置。计算机模块201可以使用外部调制器-解调器(调制解调器)收发器装置216来经由接线221与通信网络220进行通信。可以表示通信信道120的通信网络220可以是广域网(WAN),诸如因特网、蜂窝远程网络或私有WAN等。在接线221是电话线的情况下,调制解调器216可以是传统的“拨号上网”调制解调器。可替代地,在接线221是高容量(例如,线缆)接线的情况下,调制解调器216可以是宽带调制解调器。还可以使用无线调制解调器来进行向通信网络220的无线连接。收发器装置216可以提供发送器116和接收器132的功能,并且通信信道120可以体现在接线221中。
计算机模块201通常包括至少一个处理器单元205和存储器单元206。例如,存储器单元206可以具有半导体随机存取存储器(RAM)和半导体只读存储器(ROM)。计算机模块201还包括多个输入/输出(I/O)接口,其中这多个输入/输出(I/O)接口包括:音频-视频接口207,其连接至视频显示器214、扬声器217和麦克风280;I/O接口213,其连接至键盘202、鼠标203、扫描器226、照相机227以及可选的操纵杆或其它人机接口装置(未示出);以及外部调制解调器216和打印机215所用的接口208。从音频-视频接口207向计算机监视器214的信号通常是计算机显卡的输出并且提供“画面内容”的示例。在一些实现中,调制解调器216可以内置于计算机模块201内,例如内置于接口208内。计算机模块201还具有本地网络接口211,其中该本地网络接口211允许计算机系统200经由接线223连接至已知为局域网(LAN)的局域通信网络222。如图2A所示,局域通信网络222还可以经由接线224连接至广域网220,其中该局域通信网络222通常包括所谓的“防火墙”装置或具有相似功能的装置。本地网络接口211可以包括以太网(EthernetTM)电路卡、蓝牙(BluetoothTM)无线配置或IEEE 802.11无线配置;然而,对于接口211,可以实践多种其它类型的接口。本地网络接口211还可以提供发送器116和接收器132的功能,并且通信信道120也可以体现在局域通信网络222中。
I/O接口208和213可以提供串行连接和并行连接中的任一个或这两者,其中前者通常根据通用串行总线(USB)标准来实现并且具有相应的USB连接器(未示出)。设置有存储装置209,并且存储装置209通常包括硬盘驱动器(HDD)210。还可以使用诸如软盘驱动器和磁带驱动器(未示出)等的其它存储装置。通常设置有光盘驱动器212以用作数据的非易失性源。可以使用例如光盘(例如,CD-ROM、DVD、蓝光盘(Blu-ray DiscTM))、USB-RAM、便携式外部硬盘驱动器和软盘等的便携式存储器装置作为向计算机系统200的数据的适当源。通常,HDD 210、光盘驱动器212、网络220和222中的任意还可被配置成作为视频源112进行工作、或者作为为了经由显示器214进行再现所要存储的解码视频数据的目的地而进行工作。系统100的源装置110和目的地装置130、或者系统100的源装置110和目的地装置130可以体现在计算机系统200中。
计算机模块201的组件205~213通常经由互连总线204并且以得到相关领域技术人员已知的计算机系统200的传统操作模式的方式进行通信。例如,处理器205使用接线218连接至系统总线204。同样,存储器206和光盘驱动器212通过接线219连接至系统总线204。可以实践所述配置的计算机的示例包括IBM-PC和兼容机、Sun SPARCstation、Apple MacTM或相似的计算机系统。
在适当或期望的情况下,可以使用计算机系统200来实现视频编码器114和视频解码器134以及以下所述的方法,其中可以将视频编码器114、视频解码器134和要说明的方法作为在计算机系统200内可执行的一个或多个软件应用程序233来实现。特别地,利用在计算机系统200内执行的软件233中的指令231(参见图2B)来实现视频编码器114、视频解码器134和所述方法的步骤。可以将软件指令231形成为各自用于进行一个或多个特定任务的一个或多个代码模块。还可以将软件分割成两个单独部分,其中第一部分和相应的代码模块进行所述方法,并且第二部分和相应的代码模块管理第一部分和用户之间的用户界面。
例如,可以将软件存储在包括以下所述的存储装置的计算机可读介质中。将软件从计算机可读介质载入计算机系统200,然后由计算机系统200来执行。具有这样的软件的计算机可读介质或者该计算机可读介质上所记录的计算机程序是计算机程序产品。在计算机系统200中使用该计算机程序产品优选地实现了用于实施视频编码器114、视频解码器134和所述方法的有利设备。
通常将软件233存储在HDD 210或存储器206中。将该软件从计算机可读介质载入计算机系统200,并且由计算机系统200来执行。因而,例如,可以将软件233存储在光盘驱动器212所读取的光学可读盘存储介质(例如,CD-ROM)225上。
在一些实例中,将应用程序233以编码在一个或多个CD-ROM 225上并且经由相应的驱动器212进行读取的方式供给至用户,或者可替代地,可以由用户从网络220或222读取应用程序233。更进一步地,还可以将软件从其它计算机可读介质载入计算机系统200。计算机可读存储介质是指将所记录的指令和/或数据提供至计算机系统200以供执行和/或处理的任何非暂时性有形存储介质。这种存储介质的示例包括软盘、磁带、CD-ROM、DVD、蓝光盘(Blu-ray DiscTM)、硬盘驱动器、ROM或集成电路、USB存储器、磁光盘、或者诸如PCMCIA卡等的计算机可读卡等,而与这些装置在计算机模块201的内部还是外部无关。还可以参与将软件、应用程序、指令和/或视频数据或编码视频数据提供至计算机模块201的暂时性或非有形计算机可读传输介质的示例包括:无线电或红外线传输通道及向着其它计算机或联网装置的网络接线、以及包括电子邮件发送和网站上所记录的信息等的因特网或内联网。
可以执行上述的应用程序233的第二部分和相应的代码模块来实现要绘制或以其它方式呈现在显示器214上的一个或多个图形用户界面(GUI)。通过典型地对键盘202和鼠标203进行操作,计算机系统200的用户和应用可以以在功能上可适用的方式对界面进行操作,以将控制命令和/或输入提供至与这些GUI相关联的应用程序。还可以实现在功能上可适用的其它形式的用户界面,诸如利用经由扬声器217所输出的语音提示和经由麦克风280所输入的用户声音命令的音频界面等。
图2B是处理器205和“存储器”234的详细示意框图。存储器234表示图2A中的计算机模块201可以访问的(包括HDD 209和半导体存储器206的)所有存储器模块的逻辑聚合。
在初始对计算机模块201通电的情况下,执行上电自检(power-on self-test,POST)程序250。通常将POST程序250存储在图2A的半导体存储器206的ROM 249中。有时将诸如存储有软件的ROM 249等的硬件装置称为固件。POST程序250检查计算机模块201内的硬件以确保适当工作,并且通常检查处理器205、存储器234(209,206)和通常还存储在ROM249中的基本输入-输出系统软件(BIOS)模块251,以进行正确操作。一旦POST程序250成功运行,BIOS 251启动图2A的硬盘驱动器210。启动硬盘驱动器210使得经由处理器205执行驻留在硬盘驱动器210上的引导装入程序252。这样将操作系统253载入RAM存储器206,其中在该RAM存储器206上,操作系统253开始工作。操作系统253是处理器205可执行的系统级应用程序,以实现包括处理器管理、存储器管理、装置管理、存储管理、软件应用接口和通用用户界面等的各种高级功能。
操作系统253管理存储器234(209,206),以确保计算机模块201上运行的各处理或应用程序具有在不会与分配至其它处理的内存冲突的情况下执行的充足内存。此外,需要适当使用图2A的计算机系统200中可用的不同类型的存储器,以使得各处理可以高效地运行。因此,聚合存储器234并不意图例示如何分配存储器的特定分段(除非另外说明),而是提供计算机系统200可访问的存储器的概述图以及如何使用该存储器。
如图2B所示,处理器205包括多个功能模块,其中这多个功能模块包括控制单元239、算术逻辑单元(ALU)240和有时称为高速缓冲存储器的本地或内部存储器248。高速缓冲存储器248在寄存器区段中通常包括多个存储寄存器244~246。一个或多个内部总线241从功能上使这些功能模块相互连接。处理器205通常还具有用于使用接线218经由系统总线204与外部装置进行通信的一个或多个接口242。存储器234使用接线219连接至总线204。
应用程序233包括可以包含条件分支指令和循环指令的指令序列231。程序233还可以包括执行程序233时所使用的数据232。将指令231和数据232分别存储在存储器位置228、229、230和235、236、237中。根据指令231和存储器位置228~230的相对大小,如存储器位置230中示出的指令所描述的,可以将特定指令存储在单个存储器位置中。可选地,如存储器位置228和229中示出的指令段所描述的,可以将指令分割成各自被存储在单独的存储器位置的多个部分。
通常,向处理器205赋予一组指令,其中在该处理器205内执行该组指令。处理器205等待随后输入,其中处理器205通过执行另一组指令来对该随后输入作出反应。可以从多个源中的一个或多个源提供各输入,其中该输入包括输入装置202、203中的一个或多个所生成的数据、从外部源经由网络220、202其中之一所接收到的数据、从存储装置206、209其中之一所检索到的数据或者从插入相应的读取器212内的存储介质225所检索到的数据(所有这些均在图2A中示出)。执行一组指令在一些情况下可能会导致输出数据。执行还可能涉及将数据或变量存储至存储器234。
视频编码器114、视频解码器134和所述方法可以使用存储器234内的相应存储器位置255、256、257中所存储的输入变量254。视频编码器114、视频解码器134和所述方法产生存储器234内的相应存储器位置262、263、264中所存储的输出变量261。可以将中间变量258存储在存储器位置259、260、266和267中。
参考图2B的处理器205,寄存器244、245、246、算术逻辑单元(ALU)240和控制单元239一起工作以进行微操作序列,其中这些微操作序列是针对构成程序233的指令集中的各指令进行“提取、解码和执行”周期所需的。各提取、解码和执行周期包括:
(a)提取操作,用于从存储器位置228、229、230提取或读取指令231;
(b)解码操作,其中在该解码操作中,控制单元239判断提取了哪个指令;以及
(c)执行操作,其中在该执行操作中,控制单元239和/或ALU 240执行该指令。
之后,可以执行针对下一指令的进一步提取、解码和执行周期。同样,可以进行存储周期,其中通过该存储周期,控制单元239将值存储至或写入存储器位置232。
要说明的图11和图12的方法中的各步骤或子处理与程序233的一个或多个区段相关联,并且通常通过处理器205中的寄存器部244、245、247、ALU240和控制单元239一起工作以针对程序233的所述分段的指令集中的各指令进行提取、解码和执行周期,来进行该步骤或子处理。
图3A是示出针对视频数据113的分区300的小波子带分解的示意框图。视频数据113的各帧被分割成多个分区,各个分区通常在高度上是两个像素行,并且是帧的某部分的宽度(直到整个帧宽度为止)。该分区被分割成两个“行”,其中子带被分配给各行。小波系数在系数域中,因此两行(组)定义两组子带,而不是将分区空间分割成两行像素。如参考图6所述,将子带分组成行还影响位流结构。通过进行跨越帧中的所有水平相邻分区而应用的小波变换来对帧进行编码。对于低延时操作,小波变换从帧的顶部渐进地应用到底部。如参考图3B进一步论述的,在水平方向和垂直方向这两者上应用小波变换,其中在各维度中存在特定的分解深度。例如,可以首先在垂直方向上使用一个级别对分区进行分解,从而得到高频系数的集合和低频系数的集合。然后,可以在水平方向上对如此得到的高频系数进一步分解一次,这样得到在图3A中被标识为“LH0”和“HH0”的两个子带,从而形成“行1”。也可以在水平方向上将如此得到的低频系数进一步分解五次,这样得到在图3A中被标识为“LL4”、“HL4”、“HL3”、“HL2”、“HL1”和“HL0”的六个子带,从而形成“行0”'。在对位流进行解码时,可以通过仅处理行0子带并丢弃行1子带来获得完整图像的较低分辨率“代理”。在应用小波变换时,不论水平方向或垂直方向上的分解的配置如何,如此得到的系数的数量都等于所变换的样本的数量。然而,这些系数的分配取决于分解配置。此外,不同子带中的系数的统计明显不同。特别地,在分解层级中渐进变深的子带的低频系数形成原始分区的低通滤波版本,其中滤波程度和“分辨率”(子带维度)对应于将分区维度缩放了2~分解深度的幂。在低分辨率子带可以被上采样并且通过添加在高频子带图像中来改善质量的意义上,高频子带形成“残差”的形式。这传递了小波“合成”滤波器组的操作。
高压缩效率主要由五个级别的水平分解、以及小波变换的高频系数中存在的相对较低的残余能量产生。针对视频数据113中的各颜色通道重复该分解次数。对于夹层编解码器的应用的低延时约束使得需要对垂直分解的相对较少级别(例如,一个)的约束。通常使用5/3小波。对一个小波系数有贡献的空间支持(样本区域)取决于小波类型(例如5/3)和所选择的分解架构。在垂直方向上,五(5)的空间支持要求在视频编码器114中缓冲五(5)行样本(即,还要求来自要变换的分区的上方和下方的分区的样本)。靠近边界,空间支持延伸得超过帧边缘。为了提供满足小波变换的支持要求的值,复制边缘样本,或者“反映”帧以提供在帧的维度外部的候选值。因而,这种边界表示视觉伪影的潜在风险,该视觉伪影可能由这种人工方法产生,以满足有限大小帧的约束内的小波变换滤波器支持。如在新兴的视频格式中看到的,在支持非常大的帧大小时,出现视觉伪影的一个结果。用以支持较大视频格式(例如,UHD 8K)的常用方法是使用各自符合较小视频格式(例如,UHD 4K)的区块。区块化可以使得能够重用现有的编解码器和传输机制。此外,区块化可以使得能够对较大格式进行编码,其中编解码器架构不能扩展到较大格式。例如,在需要支持诸如UHD 8K等的格式时,诸如小波系数编码等的固有顺序操作的实现可能是不可行的。特别是对于声称提供视觉无损压缩的夹层编解码器而言,在区块边界处的可见伪影的可能性是非常不期望的,使得区块化成为对于这样的应用通常不期望的解决方案。
图3B是示出与图3A的小波分解一致的小波分析滤波器组350的示意框图。来自视频数据113的样本352被输入至在垂直方向上进行滤波的级别0垂直滤波器组354。级别0垂直滤波器组354输出高频系数(“H”)的集合和低频系数(“L”)的集合。高频系数(“H”)的集合和低频系数(“L”)的集合进一步由级别0水平滤波器组356、级别0水平滤波器组358、级别1水平滤波器组360、级别2水平滤波器组362、级别3水平滤波器组364和级别4水平滤波器组366进行滤波。如此得到的子带370与图3A所示的子带一致。
图4是示出子带400的一部分的示意框图,其中未量化小波系数402被排列成四个为一组的多组(例如,系数组404、406和408)。在图4中还示出多个候选截断级别(例如,414)。与视频数据113相比,系数的截断导致解码视频数据135的保真度降低。系数的截断使得能够以可控制的位率进行压缩。各个未量化小波系数402的二进制表示被示出为位平面403。与量化之后的各系数相关联的符号位被示出为符号位401。在特定截断级别处的量化之后,(即使相应小波系数具有非零值、也使得)特定截断级别的系数值可以变为零。例如,组406中的未量化系数值“1”在被量化到截断级别414时,具有量化值零。结果,不存在关联的符号位(参见所示出的在例如未应用截断操作的情况下可以包含符号位的占位符440)。对于系数值变为零的截断级别,不存在与系数相关联的符号位。在不存在与系数相关联的符号位时,无需将这样的位编码到位流或者从位流解码这样的位。因而,符号位的编码成本取决于未量化系数值和所应用的截断级别。在视频编码器114中将小波子带中的所有系数量化到特定位平面或“截断级别”(例如,位平面414)。量化处理具有两个步骤。首先,从未量化系数幅值(即,未量化系数402其中之一的幅值)添加量化偏移。量化舍入偏移等于1<<(n-1),其中n指示子带的最低编码位平面(即,截断级别)。量化偏移确保了在视频解码器134中重建系数时,重建值更接近于在视频编码器114中看到的值,从而考虑到通过应用截断而产生的不可避免的精度损失。
考虑(包含四个系数的)给定的系数组,内部所包含的系数在以二进制表示时形成“位平面”的列表。然后,位平面n包含四个位,其中各位对应于四个系数其中之一的位位置n。最后,特定阈值上方的位平面仅包含零值。该特定位平面索引被称为最高有效位(MSB)位置索引。在该最高有效位(MSB)平面索引处,与系数组相关联的四个位至少之一将为非零。给定系数组的MSB位置索引上方的位平面隐含地为零,并且无需编码在位流中。考虑子带中的所有系数组,MSB位置索引形成轮廓,在该轮廓之上所有位(例如,410)已知为零,因而无需被编码。然后,考虑候选截断级别(例如,414),存在需要编码的系数数据位412的区域。在添加量化偏移之后对系数位进行编码,并且量化偏移取决于候选截断级别。图4所示的用于位平面403的位值在量化之前。如此,可以看出,在下方发生截断的位平面(即,416)中可能存在非零位。在编码位流113中不对候选截断级别(即,416)下方的位平面进行编码,因此丢弃这些位平面。
在图4A中未示出这样的系数组:所有关联的未量化系数具有无需针对该系数组对位平面进行编码的足够低的幅值。对于这样的系数组,零值的位410扩展到子带的截断级别。这样的系数组可被称为“未编码系数组”。通过将系数组的MSB位置与截断级别进行比较来检测未编码系数。此外,已知未编码系数组不具有关联符号位。通过上述的比较操作容易检测到不存在这样的符号位。相反,检测到不存在诸如440等的符号位需要在各截断级别进行量化,这是计算成本更高的操作。
通常使用诸如跨越各子带的水平预测等的预测方案来对MSB位置索引进行编码。如此,对(例如,表示由420和422指示的MSB位置的改变的)增量值进行编码。还可利用垂直预测方案,由此使用来自上方分区的相应系数组的MSB位置索引来预测MSB位置索引。还可利用“RAW”模式,由此使用4位固定长度码字来对子带中的各MSB位置进行编码。RAW模式对编码MSB位置的成本施加最坏情况限制,因为如果所有其它可用模式导致较高编码成本,则要求编码器选择RAW模式。在一个或多个系数组的MSB位置低于子带的截断级别的情况下,不针对这些系数组编码位平面。此外,代替对这样的系数组的MSB位置进行编码,使用跳到MSB位置超过截断级别的下一系数组的编码模式。这降低了编码成本。
在视频编码器114测试各候选截断级别时,为了产生正确的编码成本,需要知晓符号位的存在与否。判断符号位的存在与否需要知晓量化系数是非零(存在符号位)还是零(不存在符号位)。为了确定量化系数值,应用针对量化的各截断级别的不同量化舍入偏移。应用不同的量化舍入偏移由于加法和其它中间计算而导致复杂度增加。作为测试的结果,将确定各系数的重要度,并由此确定关联符号位的存在。如参考图7和8进一步讨论的,在系统100中关于符号位处理实现了复杂度降低。
代替针对分区中的各子带具有独立的截断级别,相对于全局阈值来确定子带的截断级别,这可被称为“场景”或“分区量化”。在分区头部中表示分区量化。然后,通过将子带特定偏移应用于该场景来确定各子带的截断级别。将子带特定偏移在“权重表”表示为“增益”的列表,从而形成“增益表”,其中针对各子带表示一个增益或偏移。可以将预定权重表供给至视频编码器114。对于编码在位流中的各图片,权重表需要在图片的第一条带之前出现在位流中。增益表偏移允许改变不同子带之间的位的按比例分配以及系数的相对精度。特别地,增益使得能够补偿由于所考虑的子带分解层级的深度而产生的各子带中固有的增益。这种补偿导致跨所有子带的系数的均匀精度。均匀精度导致使解码视频的PSNR最大化。可替代地,可以向特定子带给予增加的精度。可以向被视为对主观质量贡献更大的子带给予增加的精度。可以使用视觉感知模型和主观实验中的任意或这两者来判断应当向哪些子带提供增加的精度。如此得到的偏移的集合被称为“视觉加权”。因而,该场景提供用于量化的过程控制级别,并由此提供例如整个分区的位率的过程控制级别,其中该场景的各减少在整个分区上针对各系数引入一个位。
已知为“分区细化”的附加控制允许对分区中的子带的子集的附加位平面进行编码。子带按它们对PSNR的贡献(按照贡献减少的顺序)排名,并且细化使得能够针对子带的排名列表的前n个子带来对一个额外位平面进行编码。经由优先级的列表在权重表中表示排名。如此,提供了对分区内的编码系数的量化的更精细程度的控制。因此,经由场景和细化这两个参数来控制各分区中的系数的量化。此外,在将分区分割成多个列的情况下,如参考图5所论述的,各列具有对与该列相关联的系数(即,存在于相应列中的各子带中的系数组的子集)的量化的独立控制。
考虑到将系数分组成四个为一组的集合以及各种帧宽度的可能性,一些系数组(例如,任何子带中的最右边的系数组)可以包括少于四个的系数。可以用附加值填充这样的系数组以达到所需的组大小,这以一些位率为代价。可替代地,组大小在这样的情况下可以改变。由于处理的最小单位不再始终是4位,因此改变组大小需要附加复杂度。例如,可能需要桶型移位器逻辑。如此,在可能的情况下将分区大小约束为仅使用四个为一组的系数组是有益的。需要对所有子带设置这样的约束以实现复杂度降低,因此最深级别的小波分解设置最严格的约束。该约束采用将分区大小限制为特定值的形式。例如,在以四个为单位的组和水平方向上的五个级别的分解的情况下,约束是分区宽度必须是4×25=128个样本的倍数。参考图5来进一步论述该约束。
图5是示出将帧500分割成多个列的示意框图,其可被称为“列状配置”。在使用一个列时,分区跨越帧的整个宽度。在存在多个列的情况下,多个分区在水平上排成一行(超出分区的通常的垂直排列)。在图5中示出标记为“列0”~“列3”的四个列。帧500具有“8K”分辨率(7680×4320个像素)。以给定帧速率,帧500的“8K”分辨率与4K分辨率(3840×2160个像素)相比等于像素速率的四倍。用以解码的基于区块的方法是可以的,其中使用四个“4K”区块。然而,基于区块的方法需要显著缓冲帧高度的至少一半,这违反了夹层编解码器的低延时操作要求。为了维持低延时操作,优选以“列”模式工作。例如,大小为1920×4320个像素的四个区块大小的配置是可以的。帧500还被分割成多个条带(在图5中示出标记为“条带0”~“条带4”的五个条带)。条带之间的边界用虚线(例如,514)示出。条带边界跨越帧的宽度,特别地,条带边界跨越所有的列,并且给定的条带边界跨越所有列出现在相同垂直位置处。
以上参考图5所述的列状配置允许低延时操作。可以使用夹层编解码器的四个实例来实现列状配置以及随之发生的一行分区的存在。一个考虑是需要提供四个实例的同步。此外,需要从视频编码器114的各实例向视频解码器134的各实例同步地传输如此得到的四个位流。这四个位流可被时分复用(TDM)到单个通信信道120上,其中添加一些延时以适应各位流的缓冲部分以便传递到通信信道120和从通信信道120提取。在不存在用以使四个列同步的附加开销的情况下,编码器114和解码器134这两者都需要先验地知晓关于外部信道同步(即,SDI链路上的垂直同步)的定时。TDM方法允许无修改地重用各自支持较低视频格式的现有编码器和解码器模块,以支持较高视频格式。TDM方法仅需要必要的包封逻辑来在未压缩域和压缩域中并且以增加的延时(例如,在编码器和解码器处添加一行)为代价进行时分复用,以支持时分复用和解复用。此外,TDM方法可能导致在相邻列之间的接口处引入边界。在各编码器和解码器实例内,即使在样本的位置落入相邻列中时,也应用样本扩展处理来为位于当前列外部的样本提供小波滤波器支持。样本扩展过程具有在列边界处引入视觉伪影的风险。
用以避免列边界处的视觉伪影的风险的一种减轻方法是跨帧的整个宽度进行小波变换,但对于诸如熵编码等的其它阶段,使用基于列的方法。可以跨帧的整个宽度进行小波变换,但对于其它处理阶段(即,量化和熵编码),使用基于列的方法,因为小波变换内的依赖性在空间上被限制为根据分解层级而卷积的滤波器支持。由于不存在跨越帧的顺序依赖性,因此可以按分段同时实现小波变换。然后,可以考虑得到可变长度分段的压缩域中的编码传输。如上所述,根据先验定时的时分复用压缩位流导致额外的延时,以适应在并发的固定位率信道上输送的可变长度压缩列。在一个配置中,可以构造使得能够将分区编码为列的位流句法。将顺序熵编码路径从整个帧宽度分离到整体跨越帧的较小列区域,这使得能够实现视频编码器和解码器的这些关键部分的并行性。由于各列由具有有限的最坏情况解析吞吐能力的熵编码模块进行处理,因此每一列以恒定位率工作。列的恒定位率被设置为与列宽度相对于帧宽度的比率成比例地缩放的整体压缩位率。为了实现各列的位率的独立控制,针对分区头部中的各列表示单独的场景和细化值。然后,各熵编码器和解码器的最坏情况编码和解析能力被约束为列的位率,而不是整个帧的位率,如使用仅一个熵编码器和熵解码器的情况。
在水平分解的最深级别(即,第五级别),(考虑到小波滤波器的低通部分的最大幅值系数)各系数与水平方向上的32个像素一致。然后,在系数被分组成四个为一组的集合的情况下,在第五且最高分解级处,128个像素宽的区域与一个系数组一致。为了减少在帧右边界上(在任何分解级别)可能发生的部分占用的系数组的实例,列边界被限制为相对于左帧边界的128个像素的倍数。
图6是示出用于表示具有多列编码数据以增加解析吞吐量的压缩视频数据的帧的码流句法600的示意框图。各压缩帧被称为“码流”,并且级联码流的序列形成位流。各码流包括图片头部6110,其定义包括图片大小、位深度、编码工具配置(水平方向和垂直方向上的小波变换深度、小波核)的图片级别参数。特别地,图片头部6110定义要用于该帧的列的数量和列边界。在指定了列的数量的情况下,将除最左列以外的列的列水平位置的列表编码在图片头部6110中(其隐含地对准到帧的左方)。可以以亮度样本为单位来指定该列表中的各列左方位置,从而提供位于帧内的列中的最大程度的灵活性。在一个配置中,以MSB位置组大小(即,4)乘以2~水平小波分解深度的幂(即,通常为5)为单位来指定各列左方位置。因而,图片头部600中所指定的默认配置产生128个亮度样本的单位。这种配置确保了对于除最右列以外的所有列,这些列的系数组中的各系数对应于从小波变换阶段获得的系数。仅对于最右列,才可能需要填充或截断,这是由于在直到水平分解的最深级别处未对准到系数组大小的帧大小而产生的。在又一配置中,列左方位置没有明确地编码在列表中,而是被推断出。在推断出列宽度时,将帧的宽度除以列的数量,从而获得近似宽度。从该近似列宽度导出近似列边界。然后,将各近似列边界舍入到列宽度粒度(通常为128个亮度样本)以获得最终列边界。
以下示出一些示例:
将1920分割成三列:1920/3=640列宽度。由于640/128=5,因此对于所有三列,列宽度恰好为640个像素,并且水平偏移为0、640和1280。
将2048分割成三列:2048/3=682.67列宽度。注意,682.67/128=5.33,列宽度如下:
列0:偏移0,宽度=640个像素。(5.33向下舍入为5,然后乘以128)。
列1:偏移640,宽度=1408-640=768个像素(2×5.33得出10.66,然后向上舍入为11并乘以128以求出绝对列边界边缘。然后,从列0最右边缘中减去偏移以求出列1宽度)。
列1:偏移=1408,宽度=640个像素(设置为消耗帧宽度的剩余部分)。
注意,对于HD 2K、UHD 4K和UHD 8K(分别为1920、3840、7680宽度),在列的数量小(例如,2~5)时,列是128像素宽的倍数。
这些推断的(或“隐含的”)边界具有数个有利的性质:首先,约束列边界开始位置消除了除最右列以外的列中的任何部分使用的系数组。这种消除可以简化与这些列相关联的逻辑,因为各系数组无需处理给定系数组的4个可用系数中的1、2或3个重要系数的情况。然而,由于帧宽度以及因此最右边的列宽度没有以其它方式受到约束,因此最右列需要这种逻辑。对于诸如1080p HD(1920×1080分辨率)和2160p UHD(3840×2160分辨率)等的常见格式,128个亮度样本的列宽度的默认粒度不会导致引入任何部分填充的系数组。因此,对于被约束为使用这种格式的实现,即使图片头部确实许可背离在上述通常使用的格式中指定的帧宽度的信令,也不需要最右列中的这种逻辑。
其次,在图片头部中未表示明确的列位置。由于列的数量可以变化,因此如果要表示各列的偏移,则这将导致表示可变长度的偏移列表。为了易于实现,优选图片头部具有固定长度。特别地,为了降低复杂度,优选可以在无需解析图片头部的内容的情况下知晓图片头部的长度。如果代替固定长度、在图片头部中包括可变大小的列表,则将需要这样的解析步骤。维持固定长度的图片头部例如通过允许识别图片头部并移动到码流的下一区段、而不必解析图片头部的内容来发现图片头部的长度,来为解析码流提供了一些优点。另外,隐式边界被定义为基本上使跨帧的列宽度均等。这种均等降低了各列的熵编码和解码阶段的最坏情况吞吐量要求。
在系统100的一个配置中,在UHD 8K格式在使用中时,施加四列的最小列约束。结果,各列的压缩数据的吞吐量不超过(在诸如色度格式和帧速率等的其它因素保持不变的情况下)UHD 4K格式在使用中时的压缩数据的吞吐量。此外,可以将UHD 4K所用的设计的部分(即,实现熵编码器和解码器的硬件设计)重用于UHD 8K支持。UHD 4K情况所用的这种硬件设计通常已经在定时要求方面充分利用目标技术(例如,Xilinx Artix FPGA)的能力,因此在不使用实质上更有能力的目标技术(其可能不存在或可能不经济)的情况下不能扩展到更高的格式。
权重表6114指定各子带的增益和优先级。增益指定了应用于可应用子带中的所有系数的增益。将增益应用于帧的所有分区和所有列中的可应用子带。如参考图4所论述的,优先级用于设置细化位平面的插入所用的子带的顺序。与增益一样,针对各帧最多表示一次优先级列表,并将该优先级列表应用于该帧的所有列中的所有分区。
将帧的剩余部分以压缩形式存储为条带序列,诸如条带6114、6118等。条带保持如参考图5所示分组的分区的集合。条带形成用于并行性的一个工具,从而提供用于帧内的不同条带的编码和解码的程度独立性。将(各自跨越帧宽度的)相邻分区的序列分组为条带。如此,条带在水平方向上分割帧。对于并行处理,独立的处理元件可以并发地处理不同的条带。该并发处理暗示着跨越条带的缓冲程度,并由此导致超过所需的32行端到端延时的延时。帧的列状配置还能够在不会引入附加延时的情况下实现包括针对软件实现的并行性。特别地,在各列上工作的独立处理元件能够并行地工作,从而对一行分区内的不同分区进行编码或解码。独立的处理元件需要被适当地定时成处理该行分区中的各分区的完成是同时的,从而许可独立的处理元件以同步方式行进到下一行分区。这种同步处理的结果是:与使用跨越帧宽度的单个分区相比,在使用列状配置时,不会引起附加延时。
条带(例如,6118)包括条带头部6140、一个或多个分区(例如,6142、602、6146、6148)、以及条带页脚6150。
压缩分区602包括一个或多个分区头部(诸如分区头部604等)、行0子包组606、行1子包组608、以及(可选地)填充数据610。行0子包组606和行1子包组608定义子包的分组,并因此对编码位流114中的子包施加排序约束。然而,子包组606和608不包括任何附加开销(例如,头部句法)。
针对帧500中的各列需要一个分区头部。分区头部604是四个分区头部的序列中的第一个,并且包括与分区头部604属于哪个列(即,最左列)有关的信令,其中通过场景和细化句法元素针对可应用的列来表示截断级别。当一个列在使用中时,分区头部的序列指示帧中的分区的向下扫描进程。当多个列在使用中时,对于位于帧中的给定垂直位置的列,该行进顺序在各行分区内在水平的左右方向上扩展。如此,在帧中的给定垂直位置,分区头部进一步被约束为列的左右排序,其中针对各列存在一个分区头部。使用固定大小的分区头部(针对每列存在一个实例)避免了在遍历位流时解析各分区头部的内容。这使得不必将任何显式信令引入分区头部中以识别各分区头部和各列之间的关联。图6示出与同分区相关联的其它数据相邻且在这些其它数据之前的四个分区头部(例如,604)。各列的分区中的子带被分组为“行”,其中通常从分区高度为二得到“行0”和“行1”这两行。这种分组使得能够通过仅对“行0”中所存储的数据进行解码来提取低分辨率变体。该分组跨越整个帧宽度,并且在行数据之前存储与各行内的列相关联的分区头部,以便于解析行数据。
如参考图3所述,行数据包括:行0子包组606,其包括“LL4”、“HL4”、“HL3”、“HL2”、“HL1”和“HL0”子带的系数数据;以及行1子包组608,其包括“LH0”和“HH0”子带的系数数据。
根据帧的列状配置,子包组606和608各自被进一步分割成一个或多个子包。例如,在四个列在使用中的情况下,子包组606被分割成与最左列~最右列(即,502~508)相对应的子包组620、622、624和626。对于高吞吐量实现,在视频处理系统100中并行地处理子包。如此,需要信令来使得能够在无需对子包的内容进行顺序解析的情况下在编码位流113中定位各子包的开始点。可以使用分区头部中的子包开始偏移表来定位编码位流113中的各子包的开始点,从而对分区中的各子包相对于分区头部的位置的开始偏移进行编码。可替代地,各子包组可以包括子包开始偏移表,该子包开始偏移表对子包组中的各子包相对于包含子包组的位置的开始偏移进行编码。最后,各子包可以包括对该子包的长度进行编码的子包头部(例如,640),从而允许遍历子包。
各子包(例如,620)包括MSB位置块642、数据块644和符号块646。MSB位置块642包括MSB位置块长度660、初始MSB位置值662和运行MSB位置值664。MSB位置块长度660以4位为单位对MSB位置块642的长度进行编码。初始MSB位置值662对不具有预测器的系数组的MSB位置值进行编码。例如,在使用水平MSB位置预测时,在列的最左系数组的左方不存在系数组。因此,最左系数组不具有预测器,并且代替使用增量(符号位和一元)编码而是使用4位将关联的MSB位置值编码在初始MSB位置值662中。然后,使用增量值来对子包中的剩余系数组的MSB位置值进行编码。将子带分割成多个列(各列具有包含在子包组内的关联子包),这暗示着存在潜在的多个初始值(对于水平预测情况,针对各列各子带为一个)。将子带分割成多个列(各列具有包含在子包组内的关联子包),这便于并行解析各子包组内的子包。然后,数据块644对系数组的位平面(例如,412)进行编码。最后,对于各重要系数,将一个符号位编码在符号块646中。符号块646以4位对准终止。数据块644和符号块646还包括位于各个块的开头处的固定大小头部中的长度字段。除MSB位置块长度660之外的这些长度可用于在不对子包组(例如,606)中所包含的任何熵编码数据进行解码的情况下,定位该子包组中的子包的位置。特别地,子包的组成部分(例如,数据块、符号块和MSB位置块)各自包括包含长度字段的头部。这些长度字段的存在使得能够使用指针间接和/或偏移操作来遍历各行中的子包的集合。由于在利用视频解码器134的解码之前以及在利用视频编码器114的传输之前缓冲压缩分区,因此在不存在参考尚不(或不再)可用的数据的风险的情况下,这种遍历是可能的。该性质被称为“遍历”子包组中的子包的能力。遍历子包的能力使得各子包能够被识别为供给至视频解码器134中的熵解码器的单独实例的内容,以用于列状操作。在视频编码器114中,可以使用不同的熵编码器来创建单独流,并且可以将这些单独流组装成单个位流以输送至通信信道120。
对于MSB位置垂直预测,预测器可以不横跨条带边界,从而便于并行处理(尽管延时较高)。
图7是示出视频编码器114的功能模块的示意框图。如图2A和2B所示,视频编码器114可以使用通用计算机系统200来实现,其中视频编码器114的各种功能模块可以由计算机系统200内的专用硬件来实现。可替代地,编码器114的各种功能模块可以由在计算机系统200内可执行的软件(诸如驻留在硬盘驱动器205上并且由处理器205控制其执行的软件应用程序233的一个或多个软件代码模块等)来实现。在另一替代中,编码器114的各种功能模块可以由专用硬件与在计算机系统200内可执行的软件的组合来实现。视频编码器114和所述方法可以可替代地在诸如进行所述方法的功能或子功能的一个或多个集成电路等的专用硬件中实现。这种专用硬件可以包括图形处理器、数字信号处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者一个或多个微处理器和关联存储器。特别地,视频编码器114包括各自可被实现为软件应用程序233的一个或多个软件代码模块的模块710~730、或者配置FPGA中的内部逻辑块以实现视频编码器114的FPGA“位流文件”。视频编码器114通过近似候选截断级别的评价的成本来提供速率分配功能的降低的复杂度,使得在评价期间对各候选使用最坏情况估计。然后,对于编码,仅在应用于编码的所选择的截断级别导出一次实际编码成本。
尽管图7的视频编码器114是低延时视频编码器的示例,但还可以使用其它视频编解码器来进行这里所述的处理阶段。视频编码器114接收诸如来自视频源112的一系列帧(各帧包括一个或多个颜色通道)等的帧数据113。
变换模块710从视频源112接收未压缩视频数据113,并使用一组分析滤波器组进行层级小波前向(或“分析”)变换。通常,使用5/3Le Gall小波,尽管诸如Haar小波或Cohen-Daubechies-Feauveau 9/7小波等的其它小波变换也是可以的。变换模块710产生小波系数712。如参考图3A和3B所述,根据小波分解结构将小波系数712分组成子带。由于超低延时要求,分解的级别的数量在垂直方向上受到高度约束,通常不大于两个级别。分解的级别的数量在水平方向上相对不受约束,例如使用五个级别。考虑到一个级别的垂直分解的情况,在各子带内是作为在高度上为一个系数且在宽度上为n个系数的阵列所配置的一组系数。作为在高度上为一个系数且在宽度上为n个系数的阵列的系数的配置可被视为列表,并与诸如JPEG2000等的编解码器中的典型使用形成对比,其中各子带中的系数通常是方形阵列。然后,可以扫描各子带内的系数列表。然而,首先应用分组运算,其中为了熵编码的目的而将各子带分割成一组大小相等的系数组。尽管可以使用各种组大小、并且组大小在所有子带之间不必是恒定的,但针对所有子带为4的固定组大小在各种测试数据下提供编码器114的良好性能。因而,变换模块710产生分组系数712。
其次,将各子带中的分组系数进一步分割成列。使列边界对准,使得在最深小波分解深度为五的系数组被整体包含在列内(即,25×4=128像素粒度)。如此,各系数组整体包含在一列内。
分组系数712被传递到最大编码行索引(MSB位置)提取模块714。分组系数712要被编码为一系列位平面(或“行”),其中组内的各系数的位“n”被编码为四位的单位。首先,确定包含系数组内的任何系数的非零位的高位平面的位平面索引。位平面索引被称为MSB位置。整体上(即,在所有系数组和子带之间),索引形成MSB位置716。MSB位置716被传递到速率控制模块720。在图7中还示出分组系数712,该分组系统712如参考图8进一步所述,可以可选地被传递到速率控制模块720。速率控制模块720确定各自是以列为单位确定的MSB位置预测模式719和速率控制参数722等。MSB位置716和MSB位置预测模式719被传递到MSB位置预测模块715,其中MSB位置预测模式719被应用于分区中的所有子带上的MSB位置,其中各列具有单独的预测模式。可用的预测模式包括水平、垂直和原始(无预测)。作为MSB位置预测的结果,产生MSB位置增量值717,从而使得能够从较早系数组的MSB位置预测较晚系数组的MSB位置。将不具有预测器的系数组(例如,用于水平预测的列中的最左系数组)编码为“原始”(即,使用4位码字)。MSB位置预测模式719被编码在分区头部604中的编码位流115中,并且MSB位置增量值717被传递到熵编码器模块718,以便编码到相应列的MSB位置块642中的编码位流115中。MSB位置预测模块715还产生表示对MSB位置增量值717进行编码的位成本的MSB位置编码成本727。以下参考图4来进一步说明所述的将子带内的系数组表示为位平面的集合。
可以在分区的列之间分割分区的位预算,其中各列具有经由速率参数722内的单独速率参数(例如,场景和细化)的独立量化控制。对于分区中的各列,速率控制模块720使用所考虑的列的位预算来确定场景和细化。
量化器模块724使用速率控制参数722(即,子带的场景和细化)来对来自各子带的各系数组的小波系数进行量化。子带中的系数的截断级别由场景和细化来设置,并且还可以被称为“最大截断行索引”(GTLI)。在根据最终GTLI截断系数之前,应用舍入偏移以便于视频解码器134中的重建。通常,均匀舍入以低复杂度提供良好的性能。如此,舍入偏移被定义成舍入偏向向下方向(幅值减小),从而防止增加一组系数的MSB位置的可能性。所述的MSB位置是在量化之前确定的,因而不能根据在所选择的截断级别处发生的任何舍入来改变。最后,截断系数组726被输出到位平面分组器模块730。
位平面分组器模块730组装4位字,使得将系数组内的四个系数各自的位置n处的一位分组在一起。对于各系数组,值n从该系数组的MSB位置的值向下进行到可应用的GTLI,从而产生4位字的序列。如此得到的4位字被传递到打包器模块728,以写入(或“打包”)到编码位流115中。
熵编码器模块718对MSB位置增量717和MSB位置预测模式719进行编码。如此得到的可变长度代码729被传递到打包器模块728以打包到编码位流115中。对于多列操作,可以复制熵编码器模块718,其中存在针对各列的多达一个实例。如此,熵编码器模块718的各个实例中的顺序解析要求被约束为列位率。此外,熵编码器模块718的各实例产生在被顺次传递到打包器模块115之前缓冲的可变长度代码729的独立序列,其中该打包器模块针对分区的所有列产生单个位流。可变长度代码729的每次运行以4位对准操作终止。可利用用于预测MSB位置值的多个模式,其中将所选择的模式应用于该分区内的所有子带上的所有系数组。MSB位置预测模式的示例包括预测器是子带内的左方相邻系数组的水平预测、以及预测器是上方相邻系数组(即,来自上方分区的相应子带中的系数组)的垂直预测。
在不使用预测器的情况下还可利用“原始”模式,其中对各系数的MSB位置值进行编码。对于不具有预测器的系数组(诸如在使用水平预测时的列中的最左系数组等),不具有预测器的系数组也被原始编码。由于系数组的数量从所选择的小波分解和分区维度中是已知的,因此通过使用MSB位置增量的一系列一元编码幅值并且包括用于MSB位置增量的符号的附加位来对MSB位置716进行编码。使用各值的一元码和符号位将如此得到的编码MSB位置增量717的集合写入编码位流115。
打包器模块728将包括来自各系数组的要编码的位平面的数据打包到编码位流115中。针对各系数组,将从指示的MSB位置一直到修改的GTLI的位平面打包到编码位流115中。对于修改后的GTLI已增加得超过如来自速率控制参数722的场景所示的GTLI的情况,使得系数位平面数据的编码成本降低。速率控制模块720已考虑了降低的编码成本,并且作为位率节省的结果,可能已选择了附加的子带进行细化或者选择了更高的场景。此外,打包器模块728将符号位打包,其中一位针对各重要系数被打包到符号块646中,其中针对各分区的各子包存在一个这样的块。符号位是以与打包系数数据相同的顺序(即,针对子包组中所包含的子带)打包的。最后,在写入符号位之后,进行与4位边界的对准,从而匹配打包器模块728的操作粒度。在写入各子包时,打包器模块728维护各组成数据块的长度的计数,从而产生编码成本734。编码成本734被传递到速率控制模块720。编码成本734也可以在打包操作之前确定。例如,熵编码器718可以确定对最终编码成本734的MSB位置编码成本贡献。
位平面分组器730可以确定对最终编码成本734的系数数据位成本贡献。量化器724可以确定各系数的重要度,并由此确定对最终编码成本734的符号块成本贡献。这种较早导出减少了对编码成本734的确定的定时约束,而这反之可能导致速率控制模块720所需的输入延迟行进到下一分区。最后,各列具有单独的编码成本734值。
将如此得到的编码位流115作为接收位流133经由发送器116、通信信道120和接收器132传递至视频解码器134。如此得到的编码位流115也可以存储在非暂时性存储器122中,其中该非暂时性存储器122可以除通信信道12之外、代替通信信道120或作为通信信道120的一部分而存在。
图8是示出图7的视频编码器114的速率控制模块720的示意框图。通过近似用于选择各列的速率控制参数(即,场景和细化)的编码成本来以降低的复杂度实现速率控制模块720。分区预算器803接收先前分区的编码成本734,以确定当前分区的允许预算。基于所配置的恒定位率,建立各分区预算。然而,将各分区约束为消耗不多于各分区预算是过度约束的,这导致视觉质量差。另一方面,低延时操作要求对各分区预算的使用不足或过度使用的允许程度施加约束。对于各帧,维持在对帧进行编码时到目前为止所消耗的位的累积计数、以及直到当前分区为止的分区的累积目标位消耗。据此,导出当前分区的预算。与例如利用多个可用的GTLI评价模块804其中之一从速率控制模块720导出成本相反,使用编码成本734来更新消耗位的累积计数。如此,GTLI评价模块804可以产生如将所选择的速率参数应用于对分区进行编码时所确定的、如此得到的编码成本734的近似。
GTLI评价模块804评价多个速率控制参数,从而针对所评价的参数的各集合产生候选成本估计。例如,可以评价各场景。各GTLI评价模块产生估计候选成本(例如,809)。在如此得到的多个估计候选成本中,与超过分区预算的成本相关联的所有场景都被排除在进一步考虑之外。然后,选择与最高剩余估计候选成本相关联的场景。然后,测试多个细化,其中除了所选择的场景的估计候选成本之外还有添加成本。再次地,将会导致总估计成本超过分区预算的细化值被排除在进一步考虑之外。在剩余的细化值中,选择与最高估计成本相关联的细化值(即,截断级别降低了1但对应于附加编码细化位的最大数量的子带)。因而,确定了用于分区的速率控制参数722(即,场景和细化)。为了产生有效位流,通过应用所选择的场景和细化而产生的编码成本734不超过分区预算。因此,估计候选成本是“最坏情况”估计(即,编码成本734小于或等于估计成本)。
与确定所涉及的实际成本相比,在确定速率控制参数722时使用估计候选成本(例如,809)使得能够以降低的复杂度实现速率控制模块720。特别地,GTLI评价模块804确定多个场景和细化的系数编码成本。系数编码成本包括MSB位置编码成本、系数数据成本和符号成本。MSB位置编码成本可以是将MSB位置截断至子带的截断级别之后的成本。具体地,未截断MSB位置可以包括低于截断级别的值。由于对于这样的系数组未对数据进行编码,因此无需表示MSB位置降至低于截断级别的程度。然后,MSB位置本身可被截断到该截断级别,这通常得到系数数据位未被编码的系数组的运行。MSB位置716被输入到速率控制模块720,并且对于各候选GTLI,应用截断操作以产生截断MSB位置823。随着截断级别的提高,更大比例的系数组不存在要编码的系数位平面,因而未编码系数的运行在较高的截断级别处变得更普遍。
然后,MSB位置预测模块826选择截断MSB位置823的MSB位置预测模式827,其是导致最小化MSB位置编码成本的MSB位置预测模式。MSB位置编码成本被传递到求和模块829。因而,MSB位置的编码成本是在截断到由场景和细化产生的截断级别之后确定的。使用截断MSB位置823,数据成本模块828产生系数位平面的数据成本,该数据成本也被传递到求和模块829。然后,符号成本模块830在各编码系数的一个符号位引入符号成本(而不在候选截断级别测试量化),从而作出各系数重要的隐含假设。这表示符号块646的最坏情况。这样,如此得到的估计候选成本809是编码成本734的最坏情况估计。
为了确定各个候选截断级别的编码成本(例如,734),针对各候选截断级别将需要量化器模块824。各量化器模块824将进行与量化器724相同的操作。然而,复制模块824和量化器724的功能以测试各候选截断级别对视频编码器114施加了大的复杂度增加。作为从GTLI评价模块804中省略量化器824的结果,复杂度降低,其结果是基于小于或等于编码成本的如此得到的成本的近似来决定场景和细化。从GTLI评价模块804中省略量化器824将导致位的不希望的消耗不足、以及随之发生的质量下降。然而,代替使用来自GTLI评价模块804的与所选择的场景和细化相关联的成本,分区预算器803从打包器728接收编码成本734。然后,代替来自GTLI评价模块804的相关候选成本809,通过将编码成本734添加到消耗位计数来将当前分区的未使用位率转发到下一分区。结果,下一分区能够选择比其它情况下更低的截断级别。从各个估计候选成本809省略编码句法元素的一些部分的成本应导致速率控制模块720所作出的决定产生一些改变。
如上所述,分区预算器803的速率转发行为在不可用位方面对各帧整体产生的影响很小。实验表明,所述方案对PSNR的影响非常有限,其中对于以3~14BPP的范围内的位率的各种测试图像,该影响在0.01dB内。对PSNR的有限影响是由于速率转发在分配给编码小波系数的可用位方面几乎没有导致整体减少而引起的。符号位在考虑附近的截断级别时,对消耗位提供相对不变的贡献。在低截断级别,存在许多重要系数,因此编码成本734接近估计候选成本(其中,各系数被假定是重要的)。在较高的截断级别,存在很少的重要系数,因此这样的级别的估计候选成本比编码成本低了针对各系数多达一个位。在相邻截断级别之间,重要系数的数量的变化通常不大。结合速率转发行为,速率控制模块720能够作出与在各个GTLI评价模块804中正评价正确成本的情况类似的决定。
图9是示出在图7的视频编码器114中基于成本估计的速率转发的示意图900。图9进一步示出参考图8所论述的行为。图9示出帧中的两个空间相邻分区、即分区n和分区n+1。分区n被分配预算910。速率控制模块720选择导致如图9的CostEstimate()所示的速率消耗的场景和细化。截断级别的任何进一步降低和随之发生的任何附加位平面的编码导致超过预算910。在视频编码器114根据所选择的场景和细化对分区进行编码时,Cost()位被写入编码位流115。然后,在分区预算器803中,通过将来自分区n的未使用速率与帧的各分区速率目标相加来确定分区n+1的预算912。然后,在对分区n+1进行编码时,速率控制模块720能够选择比其它情况下更低的截断级别。可以预期帧中的第一分区以与该帧中的后续分区相比质量略微降低的方式被编码,因为帧中的第一分区未受益于从任何较早分区接收转发速率。减轻帧中的第一分区的质量降低的一个方法是调整各分区预算,使得帧中的第一分区被分配比帧中的后续分区更高的预算。
尽管图9的示例说明在分区级别的操作,但图9的示例也可应用于使用列状配置以增加熵编码吞吐量的分区的各个独立列。
图10是示出视频解码器134的功能模块的示意框图。如图2A和2B所示,视频解码器134可以使用通用计算机系统200来实现,其中各种功能模块可以由计算机系统200内的专用硬件来实现。可替代地,解码器134的各种功能模块可以由在计算机系统200内可执行的软件(诸如驻留在硬盘驱动器205上并且由处理器205控制其执行的软件应用程序233的一个或多个软件代码模块等)来实现。在另一替代中,解码器134的各种功能模块可以由专用硬件与在计算机系统200内可执行的软件的组合来实现。视频解码器134和所述方法可以可替代地在诸如进行所述方法的功能或子功能的一个或多个集成电路等的专用硬件中实现。这种专用硬件可以包括图形处理器、数字信号处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者一个或多个微处理器和关联存储器。
解包器1022接收到接收位流133。首先,对帧头部进行解码,该帧头部表示包括帧维度和编码分区大小的项。然后,根据帧维度和编码分区大小来对分区进行解码。对于各分区,从接收位流133解码如由速率控制模块720所确定的场景和细化。根据所确定的场景和细化,可以确定分区的剩余编码结构。
熵解码器模块1010从MSB位置块(例如,642)和MSB位置预测模式1013来解码增量MSB位置值1012,其被传递到MSB位置重建器模块1014。MSB位置重建器模块1014根据也从接收位流133获得的分区的MSB位置预测模式1013来重建MSB位置值1016。利用MSB位置值1016,位平面解组器1018工作,以通过消耗来自解包器1022的连续4位字并重新组装量化系数1024来提取针对分区内的子带的系数组的位平面作为量化系数1024。
解量化模块1026对量化系数1024进行逆量化以产生小波系数1028。逆量化操作包括应用适当的重建偏移,该重建偏移根据用于子带的GTLI而确定,根据来自偏移表1020的相应偏移针对子带中的各系数组而修改。然后,逆变换模块1030将合成小波滤波器组应用于小波系数1028,以产生解码视频135。
图11是示出利用针对用于导出速率控制参数722的编码分区成本的成本估计来对位流进行编码的方法1100的示意流程图。方法1100得到在针对分区的编码数据的成本上与速率控制模块720中预期的成本相比有所降低的编码位流115。
如以下所述,方法1100由视频编码器114的功能模块中的一个或多个功能模块来进行。如上所述,在一个配置中,视频编码器114可被实现为驻留在硬盘驱动器205上并且由处理器205控制其执行的软件应用程序233的一个或多个软件代码模块等。通过进行方法1100使用估计编码成本的视频编码器114与计算评价中的各截断级别的正确编码成本相比,具有降低的复杂度。
方法1100开始于确定当前分区预算步骤1102。在确定当前分区预算步骤1102中,分区预算器803在处理器205的控制下确定当前分区的各列的预算。通过从先前分区的相应列中取出未使用速率并加上恒定的各分区各列预算来确定预算。对于帧的第一分区,不存在可以继承速率的先前分区。然后,除了根据视频编码器114的所配置的每像素位而分配的速率量(其可能从速率控制超前操作衰减)之外,还可以向第一分区分配恒定量的速率。由于不存在可用的先验信息以将该恒定速率设置成超出速率控制超前操作,因此应当使用预定的恒定量。
例如,与各种测试图像有关的实验结果表明:平均来说,15%的小波系数组包含截断到对于相对无噪声的视频数据而言典型的级别之后保持重要的系数。然后,对于85%的系数组(参考图4所述的“未编码系数组”),估计成本包括将不被编码的符号位。对于4K UHD帧中的分区,在6bpp,在忽略速率控制超前窗口的影响的情况下,目标压缩大小是3840(宽度)×2(分区高度)×6bpp=46080位。然后,对于采用的预算步骤,在预期仅15%的系数组将被编码时,每个编码系数将是重要的,并且在这些系数组中,25%的系数在量化之后将变得不重要。然后,对于第一分区,预算可以增加3840×2×3(具有三个颜色通道的分区中的系数的数量)×15%×25%=864位。在打包器模块728(例如,440)将不对一些符号位进行编码时,这种增加是基于速率控制模块720假定无符号位缺失。然后,预算可被设置为46080+864=46944位。该级别被设置成期望如下:由于在所选择的截断级别编码时将被量化为零的大量编码系数,因而使得用于该分区的最终消耗位量将更接近46080位,并且因此将没有关联的符号位。如在该示例中所见,符号位成本对预算处理存在一定程度的影响。特定统计是高度图像依赖的,因此在实践中,可以使用反映视频编码器114预期遇到的视频数据的系数统计的假设,来确定额外速率的上述计算,该额外速率的上述计算相对于由BPP值和分区大小产生的预算总计为约1.875%的增加。
可以计算针对第一分区的速率分配中的准确编码成本,但然后无速率可用于转发到下一分区,因此缺少转发速率的问题被简单地推到下一分区。如此,优选为第一分区提供一些额外速率。此外,(在决定处理所用的每个截断级别)计算第一分区的完整编码成本使得以不对称方式(即,仅针对第一分区)增加了成本。这种增加可以适应仅针对第一分区的额外硬件或者第一分区的较慢处理(从而在帧中稍后引入延时)。这两个解决方案都是不希望的,这否定了以其它方式将实现的对所有分区的一致复杂度降低这一益处。这种一致降低对于硬件设计是优选的,因为这也减少了必须始终提供硬件的“最坏情况”。可替代地,在速率控制超前窗口在使用中时,与接下来的n个分区相比,第一分区的预算是与第一分区的估计成本成比例地设置的,其中n是分区中的超前窗口的大小。各分区预算是每像素位乘以一个分区中的像素数。根据各列在分区内占据的相对比例来在该分区中的列之间进一步分割各分区预算。在步骤1102确定的预算可被存储在存储器206中。然后,处理器205中的控制转到生成截断级别步骤1104。
在生成截断级别的步骤1104中,速率控制模块720内的候选GTLI模块840在处理器205的控制下生成可以存储在存储器206中的多个候选截断级别842。候选截断级别可被指定为场景。可替代地,考虑到场景,候选截断级别可被指定为细化(相对于该场景)。可以生成并评价各可能的截断级别,从而使得不论输入视频数据如何都能够选择最佳截断级别。可能的截断级别的数量等于提供给系统100的小波系数的位数(通常为十六(16)位),这样得到十六(16)个可能的截断级别。然后,处理器205中的控制转到生成成本估计步骤1106。
在生成成本估计步骤1106中,GTLI评价模块804在处理器205的控制下针对各个候选截断级别842产生一个成本估计,这样产生成本估计的集合(例如,809)。成本估计的该集合可被存储在存储器206中。成本估计是从MSB位置和截断级别候选导出的。如此,对于未编码系数组,假定不对符号位进行编码。然而,对于编码系数组,假定不论截断级别如何、每个系数都是重要的。结果,将不被编码的任何符号位(例如,440)包括在所生成的成本估计中。然后,处理器205中的控制转到消减过高成本估计步骤1108。
在消减过高成本估计步骤1108中,在处理器205的执行下,比较各候选估计成本,并且丢弃超过来自步骤1102的预算的成本。针对分区中的各列独立地进行步骤1108。然后,处理器205中的控制转到选择剩余成本估计步骤1110。
在选择剩余成本估计步骤1110中,在处理器205的执行下选择在步骤1108之后剩余的成本估计中的最高成本估计。由于先前的步骤1108,步骤1110中所选择的成本估计低于预算,因此可用于在服从缓冲器约束的同时进行编码。作为最高成本(最低截断点),在视频解码器114处看到的质量对于各列被最大化。然后,选择与所选择的成本估计相关联的场景和细化以用于对分区进行编码。然后,处理器205中的控制转到编码分区头部步骤1112。
在多个列处于使用中时,针对各列独立地进行步骤1102~1110。注意,在步骤1102中确定当前分区预算时,通过将整体预算与列宽度vs帧宽度的分数成比例地分配给分区来获得各列的预算。如此,从前一行分区转发的预算可用于当前行分区中的所有列。
在编码分区头部步骤1112,在处理器205的执行下,将分区头部(例如,604)存储在编码位流115中。在视频编码器114被配置为使用多个列时,针对各列存储单独的分区头部。各分区头部包括各个列的量化参数。然后,处理器205中的控制转到编码分区数据步骤1113。
在编码分区数据步骤1113中,如参考图7所述,使用量化器724、位平面分组器730、熵编码器718和打包器728来对分区的每列的系数数据进行编码。在并行实现中,可以使用模块724、730、718和728的单独实例。结果,针对分区中的各列生成编码成本734。编码成本734仅包括在所选择的截断级别进行编码的符号位的成本。结果,从编码成本734中省略符号位440。可替代地,编码成本734可被视为表示对各分区内的所有列进行编码的总和。在处理器205的执行下,编码成本734被传递回速率控制模块720。然后,处理器205中的控制转到填充位流步骤1114。
在填充位流步骤1114中,利用额外滤波器数据填充编码位流113,以避免用于向通信信道120供给数据的漏桶模型的下溢。在对各分区的各列进行编码时,漏桶模型便于以相对于数据产生的可变速率的恒定位率向通信信道120提供数据。如果即使在非常低的截断级别(以及随之产生的大量系数数据)的情况下、也仍是打包器728产生不足数据的情况,则存在缓冲器下溢的可能性。通过插入填充数据来避免可能的缓冲器下溢。针对各分区发生一个填充插入操作,其中插入了零个或多个4位字的填充数据。如此,跨所有列的填充被合并成针对各分区的一个填充块(在存在的情况下)。方法1100不同于视频编码器134的多个实例以区块化方式在视频数据的较大帧上工作的多核方法。在这样的多核方法中,各实例具有单独的填充,这潜在地导致可用位率的较低效使用。填充由长度值超过表示存在填充的分区的编码长度的分区长度字段表示。然后,方法1100在步骤1114之后终止。
在方法1100的一个配置中,通过减少在步骤1104中候选GTLI模块840所生成的候选截断级别的数量来进一步降低视频编码器114的复杂度。代替生成每个可能截断级别,生成可能截断级别的子集。为了即使在诸如白噪声等的退化输入数据的情况下也能保证操作,需要一些非常高的截断级别。这种高截断级别导致视觉质量差,并且仅是为了确保保证的恒定位率操作而存在的。其它截断级别可以基于来自先前分区的截断级别。例如,可以测试范围高于和低于先前分区的所选择的截断级别的截断级别的有限集合。在大多数情况下,在评价了截断级别的完整集合时,所选择的截断级别将位于截断级别的范围内,因而通过搜索截断级别的缩小集合几乎看不到编码效率影响。生成可能截断级别的子集的配置通过减少GTLI评价模块804的所需量而降低了视频编码器114的复杂度。
图12是示出对具有配置在多个列中的分区的接收位流133进行解码的方法1200的示意流程图。如以下所述,方法1200由视频解码器134的功能模块中的一个或多个功能模块来进行。如上所述,在一个配置中,视频解码器134可以被实现为驻留在硬盘驱动器205上并且由处理器205控制其执行的软件应用程序233的一个或多个软件代码模块。
方法1200开始于解码帧头部步骤1202。在解码帧头部步骤1202中,解包器1022在处理器205的控制下,通过对帧头部句法元素进行解包来从接收位流133解码帧头部句法元素。帧头部句法元素包括指示各分区的列数的信令。信令可以是显式的或隐式的。
显式信令包括以按列边界的粒度(例如,在使用五(5)个水平小波分解级时为一百二十八(128)个像素)所表示的精度来指示列的数量和列边界的句法元素。
隐式信令依赖于对各熵解码器1010的处理容量的先验约束。例如,一列方法可以用于以每秒60帧进行UHD 4K的操作。如果以相同帧速率将帧分辨率指示为8K,则像素速率是4K情况的四倍。然后,列的数量被暗示为四,其中各列被约束为不超过在4K情况下看到的位率。
然后,处理器205中的控制从步骤1202转到解码分区头部步骤1204。
在解码分区头部步骤1204中,解包器1022在处理器205的控制下,通过对分区头部进行解包来解码分区头部(例如,604)。分区头部包括表示分区的各子包组内的各子包的开始位置的偏移表。偏移表使得能够开始各子包的并行解析。在多个列处于使用中时,解码分区头部步骤1204对一行分区中的各列的单独分区头部进行解码。然后,处理器205中的控制转到解码列子包步骤1206。
在解码列子包步骤1206中,熵解码器1010中的一个或多个熵解码器在处理器205的控制下分别解码与各列相关联的MSB位置块(例如,642)。对于各列,解码相应的MSB位置块。在步骤1206中进行的解码操作由于所需的高吞吐量因而通常使用硬件资源并行发生。解码操作需要解包器1022从与各列相关联的子包同时提取各MSB位置块。除了MSB位置块的并行解析之外,还可以并行解析关联的数据块和符号块,并且并行对量化系数解量化以产生解码小波系数(即,1028)。然后,处理器205中的控制转到小波合成滤波步骤1208。
在小波合成滤波步骤1208中,逆变换1030在处理器205的控制下,对解码小波系数进行小波合成滤波操作,以产生解码视频数据135。然后,方法1200在步骤1208之后终止。
在系统100的配置中,三个颜色分量各自被指派单独的子包(例如,620、622、624),其中各子包跨越整个帧。如此,如由针对可独立控制的各颜色分量的位率的需求所规定的、并且为了针对各个颜色分量实现恒定的位率操作,可以针对各颜色通道存在单独的速率控制参数。三个颜色分量各自被指派单独子包的配置通常在视频编码器114中使用三个熵编码器和三个速率控制模块并且在视频解码器134中使用三个熵解码器。视频编码器114中的三个熵编码器和三个速率控制模块以及视频解码器134中的三个熵解码器各自具有至少匹配关联颜色分量的恒定位率的容量。
在方法1100的另一配置中,速率控制模块720工作,使得在使用估计成本选择速率控制参数722(即,截断级别和细化)之后,仅针对最终选择的速率控制参数再次进行成本计算。例如,量化器824用于通过针对各子带按所选择的截断级别进行量化来辅助符号成本830。因而,获得了用于对分区进行编码的准确最终成本。结果,在步骤1113中将编码成本734供给回速率控制模块720时,不存在来自打包器模块728的反馈回路。该配置保留了如下性质:在针对所考虑的各截断级别的成本的最坏情况估计时对速率控制参数720的选择。在从打包器模块728向速率控制模块720的反馈回路可能将延迟引入设计中的一些实现中,去除反馈回路是合适的。然而,去除反馈环路的代价是需要针对一个截断级别(即,使用量化器824的一个实例)进行量化步骤,其目的是在对量化系数进行编码之前确定编码成本734。
产业上的可利用性
所述的配置可应用于计算机和数据处理行业,并且特别可用于对低延时(子帧)视频编码系统的诸如视频信号等的信号进行编码或解码的数字信号处理。
前述仅说明本发明的一些实施例,并且可以在没有背离本发明的范围和精神的情况下对本发明进行修改和/或改变,其中这些实施例仅是示例性而非限制性的。
在本说明书的上下文中,词语“包括”意味着“主要但未必仅包括”或“具有”或“包含”,而不是“仅由…组成”。词语“包括(comprising)”的诸如“comprise”和“comprises”等的词尾变化具有相应的变化含义。

Claims (24)

1.一种用于从位流中解码图像帧的方法,所述方法包括:
从所述位流中接收所述图像帧的分区的多个部分,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置在所述位流中的;
从所接收到的多个部分中解码系数,所述多个部分中的各部分的对所述系数的逆量化独立于所述多个部分中的其它部分的逆量化,所述逆量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算来针对所述小波变换的至少一个子带表示附加位平面的场景和细化,其中场景和细化指示截断级别;以及
使用解码得到的系数来形成所述图像帧。
2.根据权利要求1所述的方法,其中,所述列的位预算是通过根据各列在当前分区内占据的相对比例在所述当前分区中的列之间分割所述当前分区的预算编码成本而确定的。
3.根据权利要求1所述的方法,其中,所述分区的宽度是128的倍数,具有5个级别的水平分解的最深级别,并且在所述最深级别将系数分组成四个为一组的集合。
4.一种用于从位流中解码图像帧的设备,所述设备包括:
用于从所述位流中接收所述图像帧的分区的多个部分的部件,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置在所述位流中的;
用于从所接收到的多个部分中解码系数的部件,所述多个部分中的各部分的对所述系数的逆量化独立于所述多个部分中的其它部分的逆量化,所述逆量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算来针对所述小波变换的至少一个子带表示附加位平面的场景和细化,其中场景和细化指示截断级别;以及
用于使用解码得到的系数来形成所述图像帧的部件。
5.一种用于从位流中解码图像帧的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,用于执行所述计算机程序,所述计算机程序包括指令,所述指令用于:
从所述位流中接收所述图像帧的分区的多个部分,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置在所述位流中的;
从所接收到的多个部分中解码系数,所述多个部分中的各部分的对所述系数的逆量化独立于所述多个部分中的其它部分的逆量化,所述逆量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算来针对所述小波变换的至少一个子带表示附加位平面的场景和细化,其中场景和细化指示截断级别;以及
使用解码得到的系数来形成所述图像帧。
6.一种非暂时性计算机可读介质,在所述非暂时性计算机可读介质上存储有计算机程序,所述计算机程序用于从位流中解码图像帧,所述计算机程序包括:
用于从所述位流中接收所述图像帧的分区的多个部分的代码,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置在所述位流中的;
用于从所接收到的多个部分中解码系数的代码,所述多个部分中的各部分的对所述系数的逆量化独立于所述多个部分中的其它部分的逆量化,所述逆量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算来针对所述小波变换的至少一个子带表示附加位平面的场景和细化,其中场景和细化指示截断级别;以及
用于使用解码得到的系数来形成所述图像帧的代码。
7.一种用于将图像帧编码到位流中的方法,所述方法包括:
确定所述图像帧的分区的多个部分,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置的;
从所述多个部分确定系数,所述多个部分中的各部分的对所述系数的量化独立于所述多个部分中的其它部分的量化,所述量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算、针对所述小波变换的至少一个子带来确定附加位平面的场景和细化,其中场景和细化指示截断级别;以及
使用所确定的系数来形成所述图像帧的位流。
8.根据权利要求7所述的方法,其中,所述列的位预算是通过根据各列在当前分区内占据的相对比例在所述当前分区中的列之间分割所述当前分区的预算编码成本而确定的。
9.根据权利要求7所述的方法,其中,所述分区的宽度是128的倍数,具有5个级别的水平分解的最深级别,并且在所述最深级别将系数分组成四个为一组的集合。
10.一种用于将图像帧编码到位流中的设备,所述设备包括:
用于确定所述图像帧的分区的多个部分的部件,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置的;
用于从所述多个部分确定系数的部件,所述多个部分中的各部分的对所述系数的量化独立于所述多个部分中的其它部分的量化,所述量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算、针对所述小波变换的至少一个子带来确定附加位平面的场景和细化,其中场景和细化指示截断级别;以及
用于使用所确定的系数来形成所述图像帧的位流的部件。
11.一种用于将图像帧编码到位流中的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,用于执行所述计算机程序,所述计算机程序包括指令,所述指令用于:
确定所述图像帧的分区的多个部分,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置的;
从所述多个部分确定系数,所述多个部分中的各部分的对所述系数的量化独立于所述多个部分中的其它部分的量化,所述量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算、针对所述小波变换的至少一个子带来确定附加位平面的场景和细化,其中场景和细化指示截断级别;以及
使用所确定的系数来形成所述图像帧的位流。
12.一种非暂时性计算机可读介质,在所述非暂时性计算机可读介质上存储有计算机程序,所述计算机程序用于将图像帧编码到位流中,所述计算机程序包括:
用于确定所述图像帧的分区的多个部分的代码,所述分区是使用跨所述分区的小波变换而编码的、并且是按与所述分区的空间列相对应的多个列配置的;
用于从所述多个部分确定系数的代码,所述多个部分中的各部分的对所述系数的量化独立于所述多个部分中的其它部分的量化,所述量化被表示为能够应用于所述小波变换的所有子带的场景和细化,其中根据列的位预算、针对所述小波变换的至少一个子带来确定附加位平面的场景和细化,其中场景和细化指示截断级别;以及
用于使用所确定的系数来形成所述图像帧的位流的代码。
13.一种用于将视频数据编码到具有多个分区的视频位流中的方法,所述方法包括:
通过测试所述多个分区中的当前分区的相应候选系数截断级别来生成所述当前分区的多个编码成本估计,所述编码成本估计各自是用于在所述候选截断级别对所述当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引而确定的,其中所述编码成本估计各自独立于所述当前分区中的系数位的值;
根据所述当前分区的预算编码成本和相应编码成本估计来选择所述候选截断级别其中之一,所述预算编码成本表示对分区进行编码的允许大小;以及
使用所选择的截断级别来将视频数据的所述当前分区编码到所述视频位流中以生成所述视频位流。
14.根据权利要求13所述的方法,其中,所述编码成本估计包括针对所述当前分区域的各编码系数的符号编码成本,各编码系数包括在所选择的截断级别已被量化为值0的编码系数。
15.根据权利要求13所述的方法,其中,用于对所述当前分区进行编码的允许大小是根据漏桶模型、基于所述当前分区的预算和先前分区的编码大小而确定的。
16.根据权利要求13所述的方法,其中,用于对所述当前分区进行编码的允许大小是基于考虑被量化到所选择的截断级别的系数的值的编码成本估计的重新评价而确定的。
17.根据权利要求13所述的方法,还包括:
生成所述候选截断级别。
18.根据权利要求13所述的方法,其中,所述当前分区的预算编码成本是每像素位乘以所述当前分区中的像素数。
19.根据权利要求13所述的方法,其中,所述当前分区的预算编码成本根据各列在所述当前分区内占据的相对比例在所述当前分区中的列之间被分割。
20.根据权利要求13所述的方法,其中,用滤波器数据填充所述视频位流。
21.一种用于将视频数据编码到具有多个分区的视频位流中的设备,所述设备包括:
用于通过测试所述多个分区中的当前分区的相应候选系数截断级别来生成所述当前分区的多个编码成本估计的部件,所述编码成本估计各自是用于在所述候选截断级别对所述当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引而确定的,其中所述编码成本估计各自独立于所述当前分区中的系数位的值;
用于根据所述当前分区的预算编码成本和相应编码成本估计来选择所述候选截断级别其中之一的部件,所述预算编码成本表示对分区进行编码的允许大小;以及
用于使用所选择的截断级别来将视频数据的所述当前分区编码到所述视频位流中以生成所述视频位流的部件。
22.一种用于将视频数据编码到具有多个分区的视频位流中的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,用于执行所述计算机程序,所述计算机程序包括指令,所述指令用于:
通过测试所述多个分区中的当前分区的相应候选系数截断级别来生成所述当前分区的多个编码成本估计,所述编码成本估计各自是用于在所述候选截断级别对所述当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引而确定的,其中所述编码成本估计各自独立于所述当前分区中的系数位的值;
根据所述当前分区的预算编码成本和相应编码成本估计来选择所述候选截断级别其中之一,所述预算编码成本表示对分区进行编码的允许大小;以及
使用所选择的截断级别来将视频数据的所述当前分区编码到所述视频位流中以生成所述视频位流。
23.一种非暂时性计算机可读介质,在所述非暂时性计算机可读介质上存储有计算机程序,所述计算机程序用于将视频数据编码到具有多个分区的视频位流中,所述计算机程序包括:
用于通过测试所述多个分区中的当前分区的相应候选系数截断级别来生成所述当前分区的多个编码成本估计的代码,所述编码成本估计各自是用于在所述候选截断级别对所述当前分区进行编码的编码数据大小的过估计、并且是使用最高有效位平面索引而确定的,其中所述编码成本估计各自独立于所述当前分区中的系数位的值;
用于根据所述当前分区的预算编码成本和相应编码成本估计来选择所述候选截断级别其中之一的代码,所述预算编码成本表示对分区进行编码的允许大小;以及
用于使用所选择的截断级别来将视频数据的所述当前分区编码到所述视频位流中以生成所述视频位流的代码。
24.一种对具有按列配置的多个分区的视频位流的视频数据进行解码的方法,所述方法包括:
对所述视频位流的头部进行解码,以确定各分区的列数;
对当前分区进行解码,以确定所述当前分区的各列内的各数据子包的位置;
基于相应确定的位置来对所述当前分区的各子包进行解码;
从解码后的子包确定系数位;以及
基于对所确定的系数位进行的滤波操作,从所确定的系数位来确定解码视频数据。
CN201880037989.XA 2017-07-07 2018-07-03 用于对视频数据进行编码和解码的方法、设备和系统 Active CN110754092B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2017204643 2017-07-07
AU2017204643A AU2017204643B2 (en) 2017-07-07 2017-07-07 Method, apparatus and system for encoding and decoding video data
PCT/AU2018/000112 WO2019006488A1 (en) 2017-07-07 2018-07-03 METHOD, APPARATUS, AND SYSTEM FOR ENCODING AND DECODING VIDEO DATA

Publications (2)

Publication Number Publication Date
CN110754092A true CN110754092A (zh) 2020-02-04
CN110754092B CN110754092B (zh) 2022-03-29

Family

ID=64949501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880037989.XA Active CN110754092B (zh) 2017-07-07 2018-07-03 用于对视频数据进行编码和解码的方法、设备和系统

Country Status (7)

Country Link
US (1) US11172231B2 (zh)
EP (1) EP3632122A4 (zh)
JP (1) JP6942820B2 (zh)
CN (1) CN110754092B (zh)
AU (2) AU2017204643B2 (zh)
TW (2) TW201918074A (zh)
WO (1) WO2019006488A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201926992A (zh) 2017-11-21 2019-07-01 澳大利亞商伊門斯機器人控股有限公司 用於數位實境之影像壓縮
WO2020007848A1 (en) * 2018-07-02 2020-01-09 Telefonaktiebolaget Lm Ericsson (Publ) Bilateral high frequency boost
WO2020153506A1 (ko) * 2019-01-21 2020-07-30 엘지전자 주식회사 비디오 신호의 처리 방법 및 장치
EP3917143A4 (en) * 2019-01-23 2022-09-07 LG Electronics Inc. VIDEO SIGNAL PROCESSING METHOD AND DEVICE
JP7338992B2 (ja) * 2019-03-06 2023-09-05 日本放送協会 送信装置、受信装置、及びプログラム
US11239988B2 (en) * 2019-04-22 2022-02-01 Texas Instruments Incorporated Methods and systems for synchronization of slave device with master device
GB2589066B (en) * 2019-10-24 2023-06-28 Advanced Risc Mach Ltd Encoding data arrays
JP2023501909A (ja) * 2019-10-25 2023-01-20 カカデゥ アール アンド ディー ピーティーワイ リミテッド 高スループットjpeg2000(htj2k)符号化における複雑度制御のための方法および装置
CN114663774B (zh) * 2022-05-24 2022-12-02 之江实验室 一种轻量级的显著性物体检测系统及方法
WO2024072844A1 (en) * 2022-09-27 2024-04-04 Op Solutions, Llc System and method for adaptive decoder side padding in video region packing

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030174897A1 (en) * 2002-01-29 2003-09-18 Canon Kabushiki Kaisha Method and device for forming a reduced compressed digital signal
US20030198391A1 (en) * 2002-04-19 2003-10-23 Sony Corporation Image coding apparatus and method, image decoding apparatus and method, and recording medium
US20040264785A1 (en) * 2003-06-27 2004-12-30 Tooru Suino Image coding apparatus, program, storage medium and image coding method
CN1711552A (zh) * 2002-11-15 2005-12-21 代表亚利桑那大学的亚利桑那大学董事会 解码被破坏的jpeg2000码流的方法
US20070110163A1 (en) * 2005-11-16 2007-05-17 Taku Kodama Image processing apparatus and image processing method
US7882117B1 (en) * 2006-12-19 2011-02-01 Sprint Communications Company L.P. First normal form (1NF) data normalizer
US20110134998A1 (en) * 2009-12-08 2011-06-09 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by motion prediction using arbitrary partition, and method and apparatus for decoding video by motion prediction using arbitrary partition
CN102484708A (zh) * 2009-07-07 2012-05-30 汤姆森特许公司 将协作分区编码用于基于区域的滤波器的方法及装置
CN105637869A (zh) * 2013-10-16 2016-06-01 华为技术有限公司 用于确定视频译码块的分区的角落视频部分的方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748786A (en) 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
JP2004005272A (ja) 2002-05-31 2004-01-08 Cad Center:Kk 仮想空間移動制御装置及び制御方法並びに制御プログラム
JP4115188B2 (ja) 2002-07-19 2008-07-09 キヤノン株式会社 仮想空間描画表示装置
US8277316B2 (en) 2006-09-14 2012-10-02 Nintendo Co., Ltd. Method and apparatus for using a common pointing input to control 3D viewpoint and object targeting
JP4662495B2 (ja) 2007-11-30 2011-03-30 株式会社スクウェア・エニックス 画像生成装置、画像生成プログラム、画像生成プログラム記録媒体及び画像生成方法
EP2327010A2 (en) 2008-08-22 2011-06-01 Google, Inc. Navigation in a three dimensional environment on a mobile device
JP5201019B2 (ja) * 2009-03-11 2013-06-05 株式会社リコー 画像符号化装置及び画像符号化方法
US8212788B2 (en) 2009-05-07 2012-07-03 Microsoft Corporation Touch input to modulate changeable parameter
US8514188B2 (en) 2009-12-30 2013-08-20 Microsoft Corporation Hand posture mode constraints on touch input
US9626786B1 (en) 2010-07-19 2017-04-18 Lucasfilm Entertainment Company Ltd. Virtual-scene control device
US9332258B2 (en) 2013-03-01 2016-05-03 intoPIX SA Method and device for display stream compression
US9891712B2 (en) 2013-12-16 2018-02-13 Leap Motion, Inc. User-defined virtual interaction space and manipulation of virtual cameras with vectors
PL3556097T3 (pl) * 2016-12-19 2022-04-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Kodowanie obrazu z wykorzystaniem adaptacji predykcji zależnej od podpasma do enkodowania entropijnego gcli

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030174897A1 (en) * 2002-01-29 2003-09-18 Canon Kabushiki Kaisha Method and device for forming a reduced compressed digital signal
US20030198391A1 (en) * 2002-04-19 2003-10-23 Sony Corporation Image coding apparatus and method, image decoding apparatus and method, and recording medium
CN1711552A (zh) * 2002-11-15 2005-12-21 代表亚利桑那大学的亚利桑那大学董事会 解码被破坏的jpeg2000码流的方法
US20040264785A1 (en) * 2003-06-27 2004-12-30 Tooru Suino Image coding apparatus, program, storage medium and image coding method
US20070110163A1 (en) * 2005-11-16 2007-05-17 Taku Kodama Image processing apparatus and image processing method
US7882117B1 (en) * 2006-12-19 2011-02-01 Sprint Communications Company L.P. First normal form (1NF) data normalizer
CN102484708A (zh) * 2009-07-07 2012-05-30 汤姆森特许公司 将协作分区编码用于基于区域的滤波器的方法及装置
US20110134998A1 (en) * 2009-12-08 2011-06-09 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by motion prediction using arbitrary partition, and method and apparatus for decoding video by motion prediction using arbitrary partition
CN105637869A (zh) * 2013-10-16 2016-06-01 华为技术有限公司 用于确定视频译码块的分区的角落视频部分的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
任俊玲: "基于图像分区的大容量预测编码信息隐藏算法", 《北京信息科技大学学报:自然科学版》 *

Also Published As

Publication number Publication date
TW202141992A (zh) 2021-11-01
EP3632122A4 (en) 2020-10-14
AU2017204643B2 (en) 2020-05-14
US11172231B2 (en) 2021-11-09
AU2020210276A1 (en) 2020-08-20
AU2020210276B2 (en) 2022-02-17
JP6942820B2 (ja) 2021-09-29
CN110754092B (zh) 2022-03-29
TW201918074A (zh) 2019-05-01
WO2019006488A1 (en) 2019-01-10
EP3632122A1 (en) 2020-04-08
JP2020526947A (ja) 2020-08-31
US20200128274A1 (en) 2020-04-23
TWI811706B (zh) 2023-08-11
AU2017204643A1 (en) 2019-01-24

Similar Documents

Publication Publication Date Title
CN110754092B (zh) 用于对视频数据进行编码和解码的方法、设备和系统
US10666948B2 (en) Method, apparatus and system for encoding and decoding video data
US9838715B2 (en) Image processing apparatus and method
JP6979075B2 (ja) ビデオデータを符号化及び復号するための方法、装置及びシステム
CN107846601B (zh) 视频图片编码方法及装置、解码方法及装置、和介质
US8923613B2 (en) Image compression device, image compression method, integrated circuit, program, and picture display apparatus
EP3632114B1 (en) Substream multiplexing for display stream compression
EP3284253B1 (en) Rate-constrained fallback mode for display stream compression
CN113228650B (zh) 基于块的表面的视频编码或解码的量化
WO2008060732A2 (en) Techniques for variable resolution encoding and decoding of digital video
TWI686078B (zh) 用於在顯示串流壓縮(dsc)中計算失真之系統及方法
AU2017201933A1 (en) Method, apparatus and system for encoding and decoding video data
AU2017204642A1 (en) Method, apparatus and system for encoding and decoding video data
WO2022098727A1 (en) Learned video compression framework for multiple machine tasks
AU2017225027A1 (en) Method, apparatus and system for encoding and decoding video data

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
GR01 Patent grant
GR01 Patent grant