CN110771171A - 选择性混合用于视频压缩中进行熵代码化的概率分布 - Google Patents

选择性混合用于视频压缩中进行熵代码化的概率分布 Download PDF

Info

Publication number
CN110771171A
CN110771171A CN201880039455.0A CN201880039455A CN110771171A CN 110771171 A CN110771171 A CN 110771171A CN 201880039455 A CN201880039455 A CN 201880039455A CN 110771171 A CN110771171 A CN 110771171A
Authority
CN
China
Prior art keywords
probability
token
probability distribution
context
coefficient
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
CN201880039455.0A
Other languages
English (en)
Other versions
CN110771171B (zh
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN110771171A publication Critical patent/CN110771171A/zh
Application granted granted Critical
Publication of CN110771171B publication Critical patent/CN110771171B/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/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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods 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 set of transform coefficients
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • 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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • 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/96Tree coding, e.g. quad-tree coding
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]

Landscapes

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

Abstract

一种用于使用变换系数令牌的字母表解码变换系数的装置包括存储器和处理器。选择对应于第一场境的第一概率分布,并且选择对应于第二场境的第二概率分布。响应于确定第二概率分布包括变换系数令牌的概率,混合第一概率分布和第二概率分布以生成混合概率。使用混合概率来熵解码变换系数令牌。第一概率分布是针对字母表的全部令牌定义的。第二概率分布是在令牌的非平凡分区上定义的。

Description

选择性混合用于视频压缩中进行熵代码化的概率分布
背景技术
数字视频流可以使用帧或静止图像的序列来表示视频。数字视频能够用于各种应用,例如包括视频会议、高清视频娱乐、视频广告或共享用户生成的视频。数字视频流能够包含大量数据并且消耗计算设备的大量计算或通信资源来进行对视频数据的处理、传输或存储。已经提出了减少视频流中的数据量的各种方法,包括压缩和其他编码技术。
可以通过将帧或图像分成基于参考帧的一个或多个预测块所预测的块来执行基于运动估计和补偿的编码。将块与预测块之间的差异(即残余误差)压缩并编码在比特流中。解码器使用差异和参考帧来重构帧或图像。
发明内容
一个方面是一种用于使用变换系数令牌的字母表解码变换系数的装置,其包括存储器和处理器。所述处理器被配置成执行存储在所述存储器中的指令,以:选择对应于第一场境(context)的第一概率分布,选择对应于第二场境的第二概率分布,并且响应于确定所述第二概率分布包括变换系数令牌的概率,混合所述第一概率分布和所述第二概率分布以生成混合概率,以及使用所述混合概率从编码比特流熵解码所述变换系数令牌。第一概率分布是针对字母表的全部令牌定义的。第二概率分布是在令牌的非平凡分区上定义的。对于非空集合X,本文可以使用集合X的“非平凡分区(non-trivial partition)”来指代除集合{X}之外的任何X分区。也就是说,集合{X}的“非平凡分区”可以是集合{X}的真子集。
另一方面是一种用于使用令牌的字母表代码化变换系数的方法。所述方法包括:选择对应于第一场境的第一概率分布,所述第一概率分布是针对所述字母表的一些令牌定义的,选择对应于第二场境的第二概率分布,所述第二概率分布是在所述令牌的非平凡分区上定义的,以及响应于确定所述第一概率分布包括令牌的概率并且所述第二概率分布包括所述令牌的第二概率,混合所述第一概率分布和所述第二概率分布以生成混合概率,以及使用所述混合概率代码化所述令牌。
又一方面是一种用于使用组织成系数令牌树的令牌字母表解码变换系数的装置,其包括存储器和处理器。所述处理器被配置成执行存储在所述存储器中的指令,以:选择对应于第一场境的第一概率分布,所述第一概率分布是针对所述系数令牌数的内部节点定义的,选择对应于第二场境的第二概率分布,所述第二概率分布是针对所述系数令牌树的内部节点中的一些但非全部内部节点定义的,以及通过以下操作来解码令牌:使用混合概率解码与所述系数令牌树的第一内部节点相关的第一决策。所述混合概率是通过混合所述第一概率分布与所述第二概率分布来生成的。
在下文对实施例的详细描述、所附权利要求书和附图中公开了本公开的这些和其他方面。
附图说明
本文的描述参照附图,其中,在贯穿若干视图,相似的附图标记表示相似的部分。
图1是视频编码和解码系统的示意图。
图2是能够实施发送站或接收站的计算设备的示例的框图。
图3是要编码并随后解码的视频流的图。
图4是根据本公开实施方式的编码器的框图。
图5是根据本公开实施方式的解码器的框图。
图6是图示出根据本公开实施方式的量化变换系数的图。
图7是根据本公开实施方式的、能够用于将代码块熵代码化成视频比特流的系数令牌树的图。
图8是根据本公开实施方式的、用于将量化变换系数二值化的树的示例的图。
图9是根据本公开实施方式的、用于将符号序列编码的过程的流程图。
图10是根据本公开实施方式的、用于将符号序列解码的过程的流程图。
图11是根据本公开实施方式的条件概率的二元树的示例的图。
图12是根据本公开实施方式的、用于熵代码化的过程的流程图。
图13是根据本公开实施方式的、用于使用变换系数令牌的字母表将变换系数代码化的过程的流程图。
图14是根据本公开实施方式的、用于导出场境的邻域模板的图。
具体实施方式
如上所述,与代码化视频流有关的压缩方案可以包括使用一种或多种技术将图像分解成块并生成数字视频输出比特流,以限制输出中所包括的信息。接收到的编码比特流能够被解码,以根据有限的信息重建块和源图像。将视频流或其一部分——诸如帧或块——进行编码能够包括使用视频流中的时间或空间相似性来提高代码化效率。例如,视频流的当前块可以基于识别先前代码化的像素值与当前块中的那些像素值之差(残差)而被编码。通过这种方式,仅残差和用于生成残差的参数需要被添加到编码比特流。残差可以使用有损量化步骤来编码。
如下文进一步描述,残差块能够位于像素域中。残差块能够被变换到频域中,从而产生变换系数的变换块。变换系数能够被量化,从而产生量化变换系数的量化变换块。量化系数能够被熵编码并添加到编码比特流。解码器能够接收编码比特流,将量化变换系数熵解码,以重构原始视频帧。
熵代码化是一种依赖于概率模型的“无损”代码化技术,这些概率模型对编码视频比特流中出现的值分布进行建模。通过使用基于测量或估计的值分布的概率模型,熵代码化能够将表示视频数据所需的比特数减少到接近理论最小值。实际上,表示视频数据所需的比特数的实际减少可能取决于概率模型精度、进行代码化的比特数以及用于进行代码化的定点算法的计算精度。
在编码的视频比特流中,许多比特用于以下两种情况之一:内容预测(例如,帧间模式/运动矢量代码化、帧内预测模式代码化等)或者残差代码化(例如,变换系数)。编码器可以使用一些技术来减少系数代码化中所费的比特数。例如,系数令牌树(其可以又称为二进制令牌树)指定值的范围,并且该令牌树中的每个分支具有前向自适应概率。从要代码化的值中减去令牌基值,以形成残差,然后以固定的概率将块代码化。也可能存在具有微小变化的类似方案,包括后向自适应性。自适应技术能够随着对视频流进行编码而更改概率模型,以适应于数据的变化特性。在任何情况下,解码器都被告知(或可获知)对熵代码化的视频比特流进行编码所用的概率模型,以便解码视频比特流。
如上所述,通常对符号序列进行熵代码化,这是通过使用概率模型确定序列的概率p,然后在编码器处使用二进制算术代码化将序列映射到二进制码字并且在解码器处从二进制码字中解码该序列。由-log(p)给出码字的长度(即,比特数)。熵代码化的效率可能与概率模型直接相关。在本文中,log表示以2为底的对数函数,除非另作具体说明。
如本文所使用的模型能够是无损(熵)代码化或者能够是无损(熵)代码化中的参数。模型能够是影响熵代码化的概率估计的任何参数或方法。例如,模型能够定义令牌树中的内部节点处用来编码和解码决策的概率(诸如下文关于图7所述)。在这种情况下,通过混合如本文所述的多个模型,可以将学习当前帧的概率的两遍(two-pass)过程简化为一遍(single-pass)过程。在另一示例中,模型可以定义某种场境推导方法。在这种情况下,根据本公开的实施方式能够用于自动混合由许多这样的方法所生成的代码化概率。在又一示例中,模型可以定义全新的无损代码化算法。
场境建模的目的是获得用于诸如算术代码化、霍夫曼代码化和其他变长到变长代码化引擎的后续熵代码化引擎的概率分布。为了获得良好的压缩性能,可能需要大量场境。例如,一些视频代码化系统可能仅针对变换系数代码化就包括数百或甚至数千个场境。每个场境能够对应于概率分布。
概率分布能够被解码器学习和/或被包括在要解码的帧报头中。
学习能够表示解码器的熵代码化引擎能够基于解码帧来适应于场境模型的概率分布(即,概率模型)。例如,解码器能够得到初始概率分布,随着解码器(例如,解码器的熵代码化引擎)解码其他帧,该解码器能够持续更新该初始概率分布。更新概率模型能够确保更新初始概率分布以反映解码帧中的实际分布。
鉴于对应的场境,在报头中包括概率分布能够指令解码器使用所包括的概率分布来解码下一帧。成本(以比特为单位)与在报头中包括每个概率分布相关联。例如,在包括3000个场境并使用8个比特编码概率分布(代码化为1至255之间的整数值)的代码化系统中,将24000个比特添加到编码比特流。这些比特是开销比特。能够使用一些技术来减少开销比特的数目。例如,能够包括场境中的一些而非全部的概率分布。例如,也能够使用预测方案来减少开销比特。即使通过这些开销减少技术,开销也为非零。
场境建模中的主要设计挑战或问题是如何在两个相互冲突的目标之间取得平衡,下面将对此作进一步描述,即:1)通过添加更多场境来提高压缩性能,以及2)减少与场境相关联的开销成本。这个问题在关于涉及多符号、非二进制字母表的情况下尤其有意义,其部分原因是与场境相关联的开销随字母表大小的增大而增加。
根据本公开的实施方式使用选择性混合,以便能够添加场境,同时限制与所添加的场境相关联的开销。场境能够定义例如在用于编码变换系数的令牌的字母表上的概率分布。在选择性混合中,第一场境模型能够用于确定针对全部令牌定义的第一概率分布,而第二场境能够用于确定更高频令牌的第二概率分布。更高频令牌的数目小于全部令牌的数目。在对系数进行代码化时,选择性混合针对更高频令牌混合第一概率分布和第二概率分布并且针对其余的令牌使用第一概率分布。
根据本公开的实施方式能够使用对概率模型的选择性混合。混合模型能够用于编码使用熵代码化所编码的任何值。例如,能够混合两个或更多个概率模型,以便对量化变换系数进行熵代码化。根据本公开的实施方式的益处包括:减少与场境相关联的开销并改善压缩性能。另外,通过使用选择性混合,在代码化系统中进行场境建模能够被设计成:一些场境能够从影响整个字母表E上的总体分布的场境信息中导出,同时其他场境能够从仅影响字母表E上的分布的一部分的场境信息中导出,从而与不使用选择性混合的代码化系统相比,减少与场境相关联的开销。
本文首先参照可以结合所述教导的系统来描述在视频压缩中进行熵代码化的混合。
图1是视频编码与解码系统100的示意图。发送站102能够例如是具有诸如图2中所描述的那个硬件的内部配置的计算机。然而,发送站102的其他合适实施方式是可能的。例如,发送站102的处理能够分布在多个设备之间。
网络104能够连接发送站102与接收站106,以对视频流进行编码和解码。具体地,能够在发送站102中编码视频流,并且能够在接收站106中解码编码的视频流。网络104能够例如是互联网。网络104也能够是局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、蜂窝电话网或将视频流从发送站102传输到本示例中的接收站106的任何其他装置。
在一示例中,接收站106能够是具有诸如图2中所描述的那个硬件的内部配置的计算机。然而,接收站106的其他合适实施方式是可能的。例如,接收站106的处理能够分布在多个设备之间。
视频编码和解码系统100的其他实施方式是可能的。例如,一种实施方式能够省略网络104。在另一实施方式中,视频流能够被编码然后存储以便稍后传输到接收站106或具有存储器的任何其他设备。在一实施方式中,接收站106(例如,经由网络104、计算机总线和/或某个通信路径)接收编码的视频流并存储该视频流以供稍后解码。在一示例实施方式中,实时传输协议(RTP)用于通过网络104传输编码的视频。在另一实施方式中,能够使用除RTP之外的传输协议,例如,基于超文本传输协议(HTTP)的视频流送协议。
例如,当在视频会议系统中使用时,发送站102和/或接收站106能够包括如下所述的编码和解码视频流的能力。例如,接收站106能够是视频会议参与者,其从视频会议服务器(例如,发送站102)接收编码的视频比特流以解码和查看,并进一步编码其自己的视频比特流并将其发送到视频会议服务器,以用于解码和由其他参与者查看。
图2是能够实施发送站或接收站的计算设备200的示例的框图。例如,计算设备200能够实施图1的发送站102和接收站106中的一个或这两者。计算设备200能够具有包括多个计算设备的计算系统的形式,或者具有单个计算设备的形式,单个计算设备例如是移动电话、平板计算机、膝上型计算机、笔记本计算机和台式计算机等。
计算设备200中的CPU 202能够是中央处理单元。替选地,CPU202能够是能够操纵或处理现在存在或以后开发的信息的任何其他类型的设备或多个设备。虽然能够用所示的单个处理器(例如CPU 202)来实施所公开的实施方式,但是能够使用多于一个处理器来实施速度和效率的优点。
计算设备200中的存储器204在一实施方式中能够是只读存储器(ROM)设备或随机存取存储器(RAM)设备。任何其他合适类型的存储设备能够用作存储器204。存储器204能够包括由CPU 202使用总线212访问的代码和数据206。存储器204能够进一步包括操作系统208和应用程序210,应用程序210包括允许CPU 202执行这里描述的方法的至少一个程序。例如,应用程序210能够包括应用1到N,其进一步包括执行这里描述的方法的视频代码化应用。计算设备200也能够包括辅助储存器214,其能够例如是与是移动的计算设备200使用的存储卡。因为视频通信会话可能包含大量信息,所以它们能够全部或部分地存储在辅助储存器214中并且根据需要被加载到存储器204中以用于处理。
计算设备200也能够包括一个或多个输出设备,例如显示器218。在一示例中,显示器218可以是触敏显示器,其将显示器与可操作以感测触摸输入的触敏元件组合。显示器218能够经由总线212耦合到CPU 202。除了显示器218之外或者作为显示器218的替选,能够提供允许用户编程或以其他方式使用计算设备200的其他输出设备。当输出设备是显示器或包括显示器时,能够以各种方式实施显示器,包括通过液晶显示器(LCD)、阴极射线管(CRT)显示器或发光二极管(LED)显示器——例如有机LED(OLED)显示器——实施。
计算设备200也能够包括图像感测设备220,或者与图像感测设备220进行通信,图像感测设备220例如是相机或现在存在或以后开发的任何其他图像感测设备220,该任何其他图像感测设备220能够感测图像,诸如操作计算设备200的用户的图像。能够定位图像感测设备220,使得其指向操作计算设备200的用户。在一示例中,图像感测设备220的位置和光轴能够被配置为使得视野包括与显示器218直接相邻并且从其能够看到显示器218的区域。
计算设备200也能够包括声音感测设备222或者与声音感测设备222通信,声音感测设备222例如是麦克风或者现在存在或以后开发的能够感测计算设备200附近的声音的任何其他声音感测设备。声音感测设备222能够被定位成使得其指向操作计算设备200的用户,并且能够被配置为接收在用户操作计算设备200时由用户做出的声音,例如,语音或其他话语。
虽然图2描绘了计算设备200的CPU 202和存储器204被集成到单个单元中,但是能够使用其他配置。CPU 202的操作能够分布在多个机器(每个机器具有一个或多个处理器)上,这些机器能够直接耦合或跨局域网或其他网络耦合。存储器204能够跨多个机器分布,例如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器。虽然这里被描述为单条总线,但是计算设备200的总线212能够由多条总线组成。此外,辅助储存器214能够直接耦合到计算设备200的其他组件,或者能够经由网络被访问,并且能够包括诸如存储卡的单个集成单元或诸如多个存储卡的多个单元。因此,能够以各种各样的配置实施计算设备200。
图3是要编码并随后解码的视频流300的示例的图。视频流300包括视频序列302。在下一层级,视频序列302包括多个相邻帧304。虽然三个帧被描绘为相邻帧304,但视频序列302可包括任意数目的相邻帧304。然后,相邻帧304能够进一步细分为个体帧,例如帧306。在下一层级,帧306能够被分成一系列分段308或平面。例如,分段308能够是允许并行处理的帧的子集。分段308也能够是能够将视频数据分离成分开的颜色的帧的子集。例如,彩色视频数据的帧306能够包括亮度平面和两个色度平面。可以以不同的分辨率对分段308进行采样。
无论帧306是否被分成分段308,帧306可以进一步细分为块310,块310能够包含与帧306中的例如16×16像素相对应的数据。块310也能够被布置为包括来自像素数据的一个或多个分段308的数据。块310也能够是任何其他合适的大小,例如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素或更大。
图4是根据本公开的实施方式的编码器400的框图。如上所述,能够例如通过提供存储在诸如存储器204的存储器中的计算机软件程序在发送站102中实施编码器400。计算机软件程序能够包括机器指令,其当由诸如CPU 202的处理器执行时,使发送站102以这里描述的方式编码视频数据。编码器400也能够实施为包括在例如发送站102中的专用硬件。编码器400具有用于在(由实线连接线示出的)前向路径中执行各种功能以使用视频流300作为输入产生编码或压缩的比特流420的以下级:帧内/帧间预测级402、变换级404、量化级406和熵编码级408。编码器400也可以包括(由点连接线示出的)重构路径以重构用于编码未来块的帧。在图4中,编码器400具有用于在重构路径中执行各种功能的以下级:去量化级410、逆变换级412、重构级414和环路滤波级416。编码器400的其他结构变化能够用于编码视频流300。
当呈现视频流300用于编码时,能够以块为单位处理帧306。在帧内/帧间预测级402,能够使用帧内预测(又称为帧内(intra)预测)或帧间预测(又称为帧间(inter)预测)或两者的组合来编码块。在任何情况下,都能够形成预测块。在帧内预测的情况下,可以由当前帧中的先前已编码和重构的样本形成预测块的全部或一部分。在帧间预测的情况下,可以由使用运动向量确定的一个或多个先前构建的参考帧中的样本形成预测块的全部或一部分。
接下来,仍然参照图4,能够在帧内/帧间预测级402处从当前块中减去预测块以产生残差块(又称为残差)。变换级404使用基于块的变换将残差变换为例如频域中的变换系数。这种基于块的变换包括例如离散余弦变换(DCT)和非对称离散正弦变换(ADST)。其他基于块的变换也是可能的。此外,可以将不同变换的组合应用于单个残差。在应用变换的一示例中,DCT将残差块变换到频域,其中,变换系数值基于空间频率。最低频率(DC)系数在矩阵左上角,并且最高频率系数在矩阵右下角。值得注意的是,预测块的大小以及由此产生的残差块的大小可以与变换块的大小不同。例如,预测块可以被分成被应用了单独变换的更小块。
量化级406使用量化器值或量化水平将变换系数转换为离散量子值,其称为量化变换系数。例如,变换系数可以除以量化器值并被截断。然后,由熵编码级408对量化变换系数进行熵编码。可以使用包括令牌和二元树的任何数目的技术来执行熵代码化。然后,将熵编码的系数与用于解码块的其他信息(其可以包括例如所使用的预测的类型、变换类型、运动向量和量化器值)一起输出到压缩比特流420。可以将用于解码块的信息熵编码成在压缩比特流420内的块、帧、切片和/或区段报头。压缩比特流420也能够称为编码的视频流或编码的视频比特流,并且在本文中可互换地使用这些术语。
图4中的(由虚线连接线示出的)重构路径可用于确保(下面描述的)编码器400和解码器500使用相同的参考帧和块来解码压缩比特流420。重构路径执行与将在下面更详细地讨论的在解码过程期间发生的功能类似的功能,包括在去量化级410对量化变换系数进行去量化,并且在逆变换级412对去量化变换系数进行逆变换以产生推导残差块(又称为推导残差)。在重构级414,能够将在帧内/帧间预测级402预测的预测块添加到推导残差以创建重构块。环路滤波级416能够应用于重构块以减少诸如块伪像之类的失真。
编码器400的其他变型方案能够用于编码压缩比特流420。例如,基于非变换的编码器400能够对于某些块或帧在没有变换级404的情况下直接量化残差信号。在另一实施方式中,编码器400能够具有组合成单个级的量化级406和去量化级410。
图5是根据本发明的实施方式的解码器500的框图。解码器500能够例如通过提供存储在存储器204中的计算机软件程序在接收站106中实施。计算机软件程序能够包括机器指令,其当由诸如CPU 202的处理器执行时,使得接收站106以下面的图8和图9中描述的方式解码视频数据。解码器500也能够以包括在例如发送站102或接收站106中的硬件来实施。类似于上面讨论的编码器400的重构路径,解码器500在一示例中包括执行各种功能以从压缩比特流420产生输出视频流516的以下级:熵解码级502、去量化级504、逆变换级506、帧内/帧间预测级508、重构级510、环路滤波级512和去块滤波级514。解码器500的其他结构变型可用于解码压缩比特流420。
当呈现压缩比特流420用于解码时,压缩比特流420内的数据元素可由熵解码级502解码以产生一组量化变换系数。去量化级504对量化变换系数进行去量化(例如,通过将量化变换系数乘以量化器值),并且逆变换级506使用所选择的变换类型对去量化变换系数进行逆变换以产生能够与由在编码器400中的逆变换级412创建的推导残差相同的推导残差。使用从压缩比特流420解码的报头信息,解码器500能够使用帧内/帧间预测级508来创建与在编码器400中例如在帧内/帧间预测级402处创建的相同的预测块。在重构级510,能够将预测块添加到推导残差以创建重构块。环路滤波级512能够被应用于重构块以减少成块伪像。能够将其他滤波应用于重构块。在一示例中,去块滤波级514被应用于重构块以减少成块失真,并且结果被输出为输出视频流516。输出视频流516也能够称为解码视频流,并且在本文中可互换使用这些术语。
解码器500的其他变型方案能够用于解码压缩比特流420。例如,解码器500能够在无去块滤波级514的情况下产生输出视频流516。在解码器500的一些实施方式中,在环路滤波级512之前应用去块滤波级514。补充地或替选地,除了环路滤波级416之外,编码器400还包括去块滤波级。
图6是图示出根据本公开实施方式的量化变换系数的图600。图600描绘了当前块620、扫描顺序602、量化变换块604、非零图606、块结束(end-of-block)图622和符标(sign)图626。当前块620被图示为4×4块。然而,任何块大小都是可能的。例如,当前块能够具有4×4、8×8、16×16、32×32的大小(即尺寸)或任何其他正方形或矩形的块大小。当前块620能够是当前帧的块。在另一示例中,当前帧可以被划分为分段(诸如图3的分段308)、区块等,每个包括块的集合,其中当前块是该分区的块。
量化变换块604能够是大小与当前块620的大小相似的块。量化变换块604包括非零系数(例如,系数608)和零系数(例如,系数610)。如上所述,量化变换块604包含与当前块620相对应的残差块的量化变换系数。还如上所述,通过熵代码化级——诸如图4的熵代码化级408——对量化变换系数进行熵代码化。
对量化变换系数进行熵代码化能够涉及选择场境模型(又称为概率场境模型、概率模型、模型和场境),该场境模型提供用于代码化二值化变换系数的二进制符号的条件概率的估计,如下关于图7所述。当对量化变换系数进行熵代码化时,附加信息可以用作用于选择场境模型的场境。例如,先前代码化的变换系数的量值可以至少部分地用于确定概率模型。
为了对变换块进行编码,视频代码化系统可以按扫描顺序遍历变换块,并且随着遍历(即,访问)量化变换系数而相应地对该量化变换系数进行编码(例如,熵编码)。在锯齿形扫描顺序(诸如扫描顺序602)中,首先遍历并编码变换块的左上角(又称为DC系数),遍历并编码扫描顺序中的下一个系数(即,与标记为“1”的位置相对应的变换系数),依此类推。在锯齿形扫描顺序(即,扫描顺序602)中,首先遍历当前量化变换系数(例如,要编码的变换系数)左上方的一些量化变换系数。其他扫描顺序也是可能的。量化变换系数的一维结构(例如,数组)能够得自使用扫描顺序遍历二维的量化变换块。
在一些示例中,对量化变换块604进行编码能够包括确定非零图606,其指示量化变换块604中的哪些量化变换系数为零而哪些为非零。在非零图中能够分别用值一(1)和零(0)表示非零系数和零系数。例如,非零图606包括对应于系数608的笛卡尔位置(0,0)处的非零607和对应于系数610的笛卡尔位置(2,0)处的零608。
在一些示例中,对量化变换块604进行编码能够包括生成并编码块结束图622。块结束图指示量化变换块604的非零量化变换系数是否是针对给定扫描顺序的最后非零系数。如果非零系数不是变换块中的最后非零系数,则它能够在块结束图中用二进制位0(零)来指示。另一方面,如果非零系数是变换块中的最后的非零系数,则它可以在块结束图中用二进制值1(一)来指示。例如,由于对应于扫描位置11的量化变换系数(即,最后的非零量化变换系数628)是量化变换块604的最后的非零系数,因此它用为1(一)的块结束值624来指示;所有其他非零变换系数都用零来指示。
在一些示例中,对量化变换块604进行编码能够包括生成并编码符标图626。符标图626指示量化变换块604中的哪些非零量化变换系数具有正值而哪些量化变换系数具有负值。无需在符标图中指示为零的变换系数。符标图626示出量化变换块604的符标图。在符标图中,能够用零(0)指示负量化变换系数,而能够用一(1)指示正量化变换系数。
图7是根据本公开实施方式的、能够用于将代码块熵代码化成视频比特流的系数令牌树700的图。系数令牌树700称为二元树,因为在树的每个节点处必须采取两个分支之一(即,遍历)。系数令牌树700包括分别与标记为A和B的节点相对应的根节点701和节点703。
如上关于图6所述,当针对块检测到块结束(EOB)令牌时,当前块中的系数的代码化能够终止,并且该块中的其余系数能够被推断为零。这样,EOB位置的代码化能够是视频代码化系统中系数的必要部分。
在一些视频代码化系统中,紧接在解码非零系数之后或在第一扫描位置(DC)处,对确定当前令牌是(否)等于当前块的EOB令牌的二元决策进行代码化。在一示例中,针对大小为M×N的变换块(其中M表示变换块中的列数,N表示变换块中的行数)当前令牌是否等于EOB令牌的最大代码化次数等于M×N。M和N能够取诸如值2、4、8、16、32和64的值。如下所述,二元决策对应于“1”比特的代码化,该“1”比特对应于在系数令牌树700中从根节点701移动到节点703的决策。这里,“代码化一比特(coding a bit)”能够表示输出或生成码字中表示被编码的变换系数的比特。类似地,“解码一比特(decodinga bit)”能够表示(诸如从编码比特流中)读取码字中与被解码的量化变换系数相对应的比特,使得该比特对应于在系数令牌树中遍历的分支。
使用系数令牌树700,针对量化变换块(例如,图6的量化变换块604)的量化系数(例如,图6的系数608、610)生成二进制数字串。
在一示例中,N×N块(例如,量化变换块604)中的量化系数u遵循规定的扫描顺序(例如,图6的扫描顺序602)被组织为1D(一维)数组(本例为数组u)。N能够是4、8、16、32或任何其他值。1D数组的ith位置处的量化系数能够称为u[i],其中,i=0,…,N*N-1。u[i],…,u[N*N-1]中最后一批零的起始位置能够被表示为eob。在u[N*N-1]非零的情况下,eob能够被置为值N*N。也就是说,如果1D数组的最后一个系数u非零,则eob能够被置为值N*N。使用图6的示例,1D数组u能够具有条目u[]=[-6,0,-1,0,2,4,1,0,0,1,0,-1,0,0,0,0]。u[i]中每个的值是量化变换系数。在本文中,1D数组u中的量化变换系数u也可以简称为“系数”或“变换系数”。位置i=0处的系数(即,u[0]=-6)对应于DC系数。在本示例中,eob等于12,因为1D数组的位置12处的零系数之后不具有非零系数。
为了编码并解码系数u[i],…,u[N*N-1],对于i=0toN*N-1,在每个位置i<=eob处生成令牌t[i]。对于i<eob,,令牌t[i]能够指示u[i]处对应的量化变换系数的大小和/或大小范围。eob处的量化变换系数的令牌能够是EOB_TOKEN,这是指示1D数组u在eob位置之后(含该位置)不包含任何非零系数的令牌。也就是说,t[eob]=BOB_TOKEN指示当前块的EOB位置。下表I提供了根据本公开的实施方式的、除EOB_TOKEN之外的令牌值的示例及它们对应名称的列表。
令牌 令牌名
0 ZERO_TOKEN
1 ONE_TOKEN
2 TWO_TOKEN
3 THREE_TOKEN
4 FOUR_TOKEN
5 DCT_VAL_CAT1(5,6)
6 DCT_VAL_CAT2(7-10)
7 DCT_VAL_CAT3(11-18)
8 DCT_VAL_CAT4(19-34)
9 DCT_VAL_CAT5(35-66)
10 DCT_VAL_CAT6(67-2048)
在一示例中,量化系数值取为带符号的12位整数。为了表示量化系数值,能够将12位带符号值的范围分为11个令牌(表I中的令牌0-10)加上块结束令牌(EOB_TOKEN)。为了生成表示量化系数值的令牌,能够遍历系数令牌树700。然后,如关于图4的熵编码级408所述,能够由编码器将遍历树的结果(即,比特串)编码为比特流(诸如,图4的比特流420)。
系数令牌树700包括令牌EOB_TOKEN(令牌702)、ZERO_TOKEN(令牌704)、ONE_TOKEN(令牌706)、TWO_TOKEN(令牌708)、THREE_TOKEN(令牌710)、FOUR_TOKEN(令牌712)、CAT1(令牌714,即表I中的DCT_VAL_CAT1)、CAT2(令牌716,即表I中的DCT_VAL_CAT2)、CAT3(令牌718,即表I中的DCT_VAL_CAT3)、CAT4(令牌720,即表I中的DCT_VAL_CAT4)、CAT5(令牌722,即表I中的DCT_VAL_CAT5)和CAT6(令牌724,即表I中的DCT_VAL_CAT6)。可以看出,系数令牌树将单个量化系数值映射到单个令牌,诸如令牌704、706、708、710和712中的一个。诸如令牌714、716、718、720、722和724的其他令牌表示量化系数值的范围。例如,能够用令牌DCT_VAL_CAT5(图7中的令牌722)表示值为37的量化变换系数。
令牌的基值被定义为其范围内的最小数字。例如,令牌720的基值为19。熵代码化识别每个量化系数的令牌,并且如果令牌表示范围,则能够通过从量化系数中减去基值而形成残差。例如,能够通过在编码的视频比特流中包括令牌720和残差值1(即,20减19)来表示值为20的量化变换系数,以允许解码器重构原始的量化变换系数。块结束令牌(即,令牌702)用信号表示变换的块数据中未余留其他非零量化系数。
在用于系数代码块的令牌值的另一示例中,表1分成两部分,其中第一(报头)集包括ZERO_TOKEN、ONE_NOEOB、ONE_EOB、TWO_NOEOB和TWO_EOB;第二(报尾)集包括TWO_TOKEN、THREE_TOKEN、FOUR_TOKEN、DCT_VAL_CAT1、DCT_VAL_CAT2、DCT_VAL_CAT3、DCT_VAL_CAT4、DCT_VAL_CAT5和DCT_VAL_CAT6。仅在对第一(报头)集中的TWO_EOB或TWO_NOEOB进行编码或解码的情况下,才使用第二(报尾)集。当系数令牌树700的遍历从节点703开始时(即,当checkEob=0时),令牌ONE_NOEOB和TWO_NOEOB分别对应于ONE_TOKEN和TWO_TOKEN。令牌ONE_EOB和TWO_EOB能够分别是或能够分别对应于ONE_TOKEN和TWO_TOKEN(即,从根节点701开始遍历系数令牌树700)。下面进一步描述系数令牌树700的树遍历和checkEob。
为了通过使用二进制算术代码化引擎(诸如通过图4的熵编码级408)来编码或解码令牌t[i],能够使用系数令牌树700。从根节点701(即,标记为A的节点)开始遍历系数令牌树700。遍历系数令牌树生成比特串(码字),其将使用例如二进制算术代码化而被编码为比特流。该比特串表示当前系数(即,正编码的量化变换系数)。
如果当前系数为零,并且其余的变换系数不再有非零值,则将令牌702(即,EOB_TOKEN)添加到比特流中。例如,图6的扫描顺序位置12处的变换系数就是这种情况。另一方面,如果当前系数为非零,或者如果当前块的任何其余系数当中存在非零值,则将“1”比特添加到码字,并且遍历前进到节点703(即,标记为B的节点)。在节点B处,测试当前系数以查看其是否等于零。如果等于零,则采取左侧分支,即将表示值ZERO_TOKEN的令牌704和比特“0”添加到码字。如果不等于零,则将比特“1”添加到码字,并且遍历前进到节点C。在节点C处,测试当前系数以查看其是否大于1。如果当前系数等于1,则采取左侧分支,并且将表示值ONE_TOKEN的令牌706添加到比特流(即,将“0”比特添加到码字)。如果当前系数大于1,则遍历前进到节点D,以检查当前系数的值与值4的比较。如果当前系数小于或等于4,则遍历前进到节点E,并且将比特“0”添加到码字。在节点E处,可以进行等于值“2”的测试。如果为真,则将表示值“2”的令牌706添加到比特流(即,将比特“0”添加到码字)。否则,在节点F处,比照值“3”或值“4”测试当前系数,并且酌情将令牌710添加到比特流(即,将比特“0”添加到码字)或将令牌712添加到比特流(即,将比特“1”添加到码字);依此类推。
实质上,在遍历到左子节点时,将比特“0”添加到码字,而在遍历到右子节点后,将比特“1”添加到码字。当从压缩比特流中解码码字时,解码器进行类似的过程。解码器从比特流中读取一比特。如果该比特为“1”,则向右遍历系数令牌树,如果该比特为“0”,则向左遍历树。然后解码器读取下一个比特并重复该过程,直到树的遍历到达叶节点(即,令牌)。举例而言,为了编码令牌t[i]=THREE_,从根节点(即,根节点701)开始,编码二进制串111010。另举一例,解码码字11100产生令牌TWO_TOKEN。
应当指出,向左子节点和右子节点的“0”比特与“1”比特之间的对应仅为用于描述编码和解码过程的约定。在一些实施方式中,能够使用不同的约定,例如,“1”对应于左子节点而“0”对应于右子节点的约定。只要编码器和解码器都采用相同的约定,就适用本文描述的过程。
当u[i-1]为零(即当1D数组i的位置i-1处的量化变换系数等于零时),EOB_TOKEN只能在非零系数之后,因此解码器能够推断出第一比特必为1。第一比特必为1的原因是,在遍历树时,变换系数(例如,图6的锯齿形扫描顺序的位置2处的变换系数)跟随零变换系数(例如,图6的锯齿形扫描顺序的位置1处的变换系数),遍历必然从根节点701移动到节点703。
这样,二进制标志checkEob能够用于指令编码器和解码器跳过从系数令牌树700中的根节点开始编码并解码第一比特。实际上,当二进制标志checkEob为0时(即,指示不应检查根节点),跳过系数令牌树700的根节点701,并且节点703成为要访问遍历的系数令牌树700的第一节点。也就是说,当跳过根节点701时,编码器能够跳过编码,并且解码器能够跳过解码,并且能够推断出编码串的第一比特(即,二进制比特“1”)。
在开始编码或解码块时,二进制标志checkEob能够被初始化为1(即,指示应当检查根节点)。以下步骤说明用于解码N×N块中的量化变换系数的示例过程。
在步骤1,将二进制标志checkEob置为零(即,checkEob=0),并且将脚标i也置为零(即,i=0)。
在步骤2,(1)如果二进制标志checkEob等于1,则使用全系数令牌树(即,从系数令牌树700的根节点701开始)解码令牌t[i];或者(2)如果checkEob等于0,则使用跳过EOB_TOKEN的部分树(例如,从节点703开始)解码令牌t[i]。
在步骤3,如果令牌t[i]=EOB_TOKEN,则量化变换系数u[i],…,u[N*N-1]全部为零,并且解码过程终止;否则,如有必要(即,当t[i]不等于ZERO_TOKEN时),能够解码额外的比特,并且重构u[i]。
在步骤4,如果u[i]等于零,将二进制标志checkEob置为1,否则将checkEob置为0。也就是说,能够将checkEob置为值(u[i]!=0)。
在步骤5,脚标i递增(即,i=i+1)。
在步骤6,重复步骤2至5,直到所有量化变换系数都已被解码(即,直到脚标i=N*N)或者直到EOB_TOKEN被解码。
在上述步骤2,解码令牌t[i]能够包括以下步骤:确定场境ctx,从场境ctx中确定二进制概率分布(即,模型),并且通过使用所确定的概率分布,使用布尔算术代码来解码从系数令牌树700的根节点到叶节点的路径。场境ctx能够使用场境推导方法来确定。场境推导方法能够使用以下中的一个或多个来确定场境ctx:块大小、平面类型(即亮度或色度)、位置i和先前解码的令牌t[0],…,t[i-1]。能够使用其他准则来确定场境ctx。当checkEOB=1时,从根节点701开始,或者当checkEOB=0时,从节点703开始,能够针对系数令牌树700的任何内部节点确定二进制概率分布。
在一些编码系统中,给定场境ctx,用于编码或解码令牌t[i]的概率可能是固定的并且不适应于一图片(即,帧)。例如,概率可以是针对给定场境ctx定义的默认值,或者概率可以作为该帧的帧报头的一部分而被代码化(即,用信号指示)。在代码化帧时对每个场境的概率进行代码化可能成本高昂。这样,编码器可以针对每个场境分析其是否有益于代码化帧报头中的场境相关概率并且通过使用二进制标志将其决策用信号指示给解码器。此外,对场境的概率进行编码可以使用预测来降低成本(例如,以比特率为单位),其中可以从先前解码的帧中的相同场境的概率导出预测。
图8是根据本公开实施方式的用于将量化变换系数二值化的树800的示例的图。树800是在一些视频代码化系统中能够用于对量化变换系数进行二值化的二元树。树800能够供视频代码化系统使用,该视频代码化系统使用二值化、场境建模和二进制算术代码化的步骤来编码并解码量化变换系数。该过程可以称为场境自适应二进制算术代码化(CABAC)。例如,为了代码化量化变换系数x,代码化系统可以执行以下步骤。量化变换系数x能够是图6的量化变换块604的任何系数(例如,系数608)。
在二值化步骤中,首先通过使用树800将系数x二值化为二进制串。二值化过程可以二值化系数x的无符号值。例如,对系数628(即,值-1)进行二值化将值1二值化。这导致遍历树800并生成二进制串10。二进制串10中的每个比特称为仓(bin)。
在场境导出步骤中,针对每个要代码化的仓,导出场境。能够从诸如以下中的一个或多个的信息中导出场境:块大小、平面类型(即,亮度或色度)、系数x的块位置和先前解码的系数(例如,如果可用,左方和/或上方的相邻系数)。能够使用其他信息来导出场境。
在二进制算术代码化步骤中,给定一场境,通过使用例如二进制算术代码化引擎来将仓与场境相关联的概率值一起代码化为二进制码字。
代码化变换系数的步骤能够包括称为场境更新的步骤。在场境更新步骤中,在对仓进行代码化之后,更新与场境相关联的概率,以反映仓值。
现在描述用来代码化(即,编码或解码)长度为n的序列xn的概率模型混合。为简明起见,使用两(2)个模型。然而,本公开不限于此并且能够混合任何数目的模型。
给定符号序列xn的概率p(xn),良好的熵代码化引擎——诸如良好设计的二进制算术代码化引擎——能够根据概率p(xn)产生长度为-log(p(xn))的二进制串。该串的长度为整数,因此“长度为-log(p(xn))的二进制串”是指长度为大于-log(p(xn))的最小整数的二进制串。这里,当指代符号序列时,上标i指代长度为i个符号的序列,而下标i指代序列中位置i处的符号。例如,x5指代五(5)个符号的序列,诸如11010;而x5指代第5个位置的符号,诸如序列11010中最后的0。这样,序列xn能够被表示为xn=x1x2…xn
如本文所使用,诸如子序列xi的概率p(xi)的概率值能够具有浮点或定点表示。相应地,应用于这些值的运算可以使用浮点算术或定点算术。
给定两个概率p1(xn)和p2(xn)以使得p1(xn)<p2(xn),概率p1(xn)导致长度不短于概率p2(xn)的码字。也就是说,更小的概率通常比更大的概率产生更长的码字。
在视频代码化时发放符号的潜在概率模型通常是未知的和/或可能过于复杂或成本过高而无法全面描述。这样,设计用于熵代码化的良好模型可能是视频代码化中的挑战性问题。例如,对于一个序列工作良好的模型可能对于另一个序列表现不佳。也就是说,给定第一模型和第二模型,一些序列可能使用第一模型压缩得更好,而其他序列可能使用第二模型压缩得更好。
在一些视频系统中,可能将用于编码序列的最佳模型进行代码化(即,在编码比特流中用信号指示)。例如,给定要编码的序列,视频系统可以根据可用模型的全部或其子集对序列进行编码,然后选择产生最佳压缩结果的模型。也就是说,可能在针对序列的多于一个模型的集合当中的特定的模型的选择进行代码化。在这样的系统中,可以隐式地或显式地执行两遍过程:第一遍确定最优模型,而第二遍使用该最优模型进行编码。在例如实时应用和其他延迟敏感的应用中,两遍过程可能不可行。
如上所述,多个模型(即,模型1,...,M)可用于进行熵代码化。为了在不丢失信息的情况下压缩符号序列,将有限数目的模型混合以进行算术代码化可能与渐进地选择最佳的一个模型一样良好。这是基于以下事实:log函数是凹函数,而-log函数是凸函数。
根据前述并针对长度为n的有限序列xn=x1x2…xn,不等式(1)如下:
在不等式(1)中,wk表示kth第k模型的加权因子,并且pk(xn)表示模型k给出的xn的联合概率。如上所述,给定概率pk(xn)(即序列xn的模型k给出的概率)和xn作为输入,熵代码化引擎能够将xn映射到长度约等于-logpk(xn)的二进制码字。
根据不等式(1)可以得出,取概率的线性(即加权)和(即,
Figure BDA0002316482510000242
),然后取线性和的对数始终小于或等于取模型1,...,M的概率的对数(logpk(xn)),然后使用相同的加权因子{wk}执行线性求和。也就是说,不等式的左侧始终小于或等于不等式的右侧。
根据不等式(1)还可得出,给定M个模型,更有利的是在熵代码化符号之前混合模型1,...,M的概率。也就是说,在熵代码化之前混合多个模型的概率可能比根据概率选择模型并使用每个模型单独代码化比特序列更为有利。混合不同的模型有可能提高压缩性能(即,降低压缩率),并且不劣于选择并代码化最佳模型然后使用所选择的模型代码化序列。
概率pk(xn)是序列xn的联合概率。联合代码化xn可能导致处理过程发生显著延迟并提高计算复杂性,而混合在视频代码化中的使用(即使有用也)受到限制。
针对序列xn中长度为i的任何子序列,其中,1≤i≤n,概率pk(xi)表示通过模型k估计的子序列xi的概率,其中,k=1,2。针对每个模型,使用对应的加权因子wk,能够使用以下等式(2)混合两个模型:
对于每个
Figure BDA0002316482510000251
在等式(2)中,是子序列xi的混合概率。这样,混合能够针对每个子序列xi产生部分(或中间)结果。子序列xi是xi=x1x2x3...xi。第一模型(即,k=1)产生子序列概率p1(xi);而第二模型(即,k=2)产生子序列概率p2(xi)。
在一示例中,并且由于可能先验上未知哪个模型应具有优先级,因此能够使用简单的混合。例如,能够使用统一加权。也就是说,能够将权重因子wk选取成wk=1/2。这样,等式(2)能够被改写为:
对于每个i,
Figure BDA0002316482510000253
混合概率
Figure BDA0002316482510000254
是子序列的概率。然而,以逐符号(即,不以符号序列)的方式执行算术代码化。这样,混合概率
Figure BDA0002316482510000255
无法直接用于进行熵代码化。这能够通过将混合概率
Figure BDA0002316482510000256
转化为如下所述的条件概率之积来解决。还应指出,混合概率
Figure BDA0002316482510000261
本身是一种条件概率:它是位置i处的符号鉴于前面符号产生子序列xi-1而具有某一值的概率。也就是说,混合概率
Figure BDA0002316482510000262
能够由以下等式(4)给出:
Figure BDA0002316482510000263
使用基本条件概率公式P(A|B)=P(A∩B)/p(B),其中,P(A∩B)是事件A和事件B都发生的概率,能够将等式(4)改写为以下等式(5):
Figure BDA0002316482510000264
应当指出,xiand xi-1两者都发生的混合概率与xi单独的混合概率相同,因为子序列xi包含子序列xi-1并具有符号xi
能够使用等式(3)来改写等式(5)。也就是说,能够根据模型概率来改写等式(5)的每个子序列混合概率(即,分子和分母)。能够将等式(5)改写为以下等式(6):
Figure BDA0002316482510000265
将等式(6)的第一量和第二量均乘以等于一(1)的因子(即,分别
Figure BDA0002316482510000266
Figure BDA0002316482510000267
),得出等式(7):
Figure BDA0002316482510000268
能够将等式(7)写为以下等式(8):
Figure BDA0002316482510000269
值得注意的是,p1(xi|xi-1)和p2(xi|xi-1)的条件概率可作为编码直到第i符号的序列的结果。这些条件概率是可用的,因为熵编码一次编码一个符号并且用每个符号生成码字(直到并包含xi)的概率。在根据本公开的实施方式中,混合条件概率,然后使用混合的概率(即,
Figure BDA00023164825100002610
)编码(或解码)序列。
在等式(8)中,wi,1和wi,2为分别等于
Figure BDA0002316482510000271
的权重,并且p1(xi|xi-1)和p2(xi|xi-1)分别等于
Figure BDA0002316482510000273
Figure BDA0002316482510000274
这样,混合概率
Figure BDA0002316482510000275
现在表示为第一模型的条件概率(即,p1(xi|xi-1))和第二模型的条件概率(即,p2(xi|xi-1))的线性组合,其中每个条件概率乘以相应的加权因子。
当使用等式(3)混合联合分布时,使用统一加权因子(即,1/2)。然而,当混合使用条件概率时(如等式(8)中),加权(即,第一模型的wi,1,第二模型的wi,2)可能不再统一。第一模型的条件概率的权重wi,1等于第一模型给出的xi-1联合概率除以第一模型给出的xi-1联合概率与第二模型给出的xi-1联合概率之和。针对权重wi,2是类似的。在等式(8)中,对于子序列xi-1中,第一模型提供第一概率,并且第二模型提供第二概率,并且给定xi的条件概率的加权因子xi-1等于第一模型和第二模型中的每一个给出的概率除以这两个模型给出的联合概率之和。也就是说,在条件概率的混合中,例如,如果第一模型为子序列xi-1提供更高的概率,则第一模型最终比第二模型具有更高的加权因子(即,权重wi,1)。
联合概率是实数,权重wi,1和wi,2的计算涉及实数除法。这样,权重wi,1和wi,2的计算可能十分复杂且成本很高。期望的是,用定点表示近似权重wi,1和wi,2,以便例如能够获知表示每个权重的确切比特数,并且能够免于除法运算。
如上所述,在码字的概率与使用该概率生成的码字的长度(以比特为单位)之间存在相关性和/或关系。换言之,码字长度(即,比特数)由下式给出:-log2(p)。每个模型生成的码字的长度能够用于近似权重wi,1和wi,2。也就是说,能够通过使用模型k来编码xi-1,k=1,2所产生的、以比特为单位的码字长度lk(xi-1)来近似-log(pk(xi-1))。这样,权重wi,1(以及对于权重wi,2))能够使用以下等式(9)来近似:
Figure BDA0002316482510000281
当l2(i-1)等于l1(i-1)时,则由此wi,1=wi,2=0.5。在不失去一般性的前提下,假设l1(i-1)小于l2(i-1),则能够通过扩展分母然后消去分母和分子中的得出等式(9)。
为了根据长度为i的子序列的模型k确定长度lk(xi),能够使用假想编码过程。假想编码过程是一种执行代码化步骤但不生成实际码字或将比特输出到编码比特流中的过程。其目的在于估计lk(xi),这在一些应用中被解释为比特率(或简单的率),可以将假想编码过程视为或称为率估计过程。假想编码过程使用概率模型来计算或估计序列的码字长度。可以在生成码字或不生成码字的情况下确定(即,测定)码字长度。例如,在时间实例i处,使用第一模型将序列xi-1代码化生成长度为l1(i-1)的码字,而使用第二模型生成长度为l2(i-1)的码字。在一示例中,多个假想编码器能够是可用的并且并行执行。例如,算术编码器的标准率估计器能够可用于每个模型。每个率估计器能够提供(或能够用于提供)对编码器在给定模型的情况下针对子序列所产生的码字长度的估计。
在时间实例i处给定两个竞争模型,如果第一模型提供的比特数少于第二模型,则针对直到位置xi-1处符号的序列,指派给第一模型的权重(使用等式9)将大于指派给第二模型的权重。最终(即,当使用混合概率完成对序列xn的编码时),获胜的模型(即权重更高的模型)是产生更少比特的模型,这是期望的压缩结果。
使用2的幂来近似权重wi,1(在等式(9)中),并且由此能有效率地计算该权重。
能够进一步简化权重wi,1。等式(9)右侧的形式为1/(1-r),其中,
Figure BDA0002316482510000291
这能够被认为是由1+r+r2+…给出的几何级数,其公比为
Figure BDA0002316482510000292
这样,权重wi,1能够使用以下等式(10)来近似:
Figure BDA0002316482510000293
这样,能够将等式(8)的wi,1*p1(xi|xi-1)改写为等式(11):
Figure BDA0002316482510000294
在等式(11)中,在p1(xi|xi-1)具有定点表示的情况下,能够通过使用移位来有效率地计算
Figure BDA0002316482510000295
而且,当p1(xi|xi-1)具有定点表示时,能够将等式(11)中的无穷和截成有限数目的项之和。例如,当p1(xi|xi-1)具有8比特表示时,则能够将和截成仅保留前八(8)个项
Figure BDA0002316482510000296
因为对于任何j≥8,当l1(xi -1)-l2(xi-1)≤-1时(即,当它们相差至少一个比特时),
Figure BDA0002316482510000297
当l1(xi-1)-l2(xi-1)<-1,时(即,当它们相差多于一个比特时),对于任何j≥j*
Figure BDA0002316482510000298
Figure BDA0002316482510000299
其中j*<8。这样,只有前j*个项需要计算wi,1p1(xi|xi-1)。
权重wi,2能够使用以下等式(12)来计算:
Figure BDA00023164825100002910
等式(8)的量wi,2*p2(xi|xi-1)能够使用以下等式(13)来计算:
Figure BDA00023164825100002911
如在等式(11)中,当p2(xi|xi-1)具有定点表示时,通过将无限和截成有限和,能够简化等式(13)的右侧。
如上所述,混合模型的联合概率能够使用简单的统一混合,因为可能先验上未知哪个模型提供更好的压缩。统一混合联合概率使用条件概率,并且导致选择获胜的模型(即权重更高的模型)。
图9是根据本公开实施方式的、用于将符号序列编码的过程900的流程图。过程900能够接收大小为n的符号序列。该序列能够用xn来表示。接收能够表示生成、确定或以任何方式接收。在一示例中,符号序列能够表示量化变换系数,诸如在熵编码级408处从图4的量化级406接收的量化变换系数。在一示例中,符号序列能够是令牌,诸如关于图7描述的令牌。在一示例中,符号序列能够是二值化值,诸如关于图8描述的二值化值。符号序列能够是基于概率模型编码的任何符号序列。
能够在诸如图4的编码器400的编码器中实施过程900。过程900能够被例如实施为能够由诸如发送站102的计算设备执行的软件程序。软件程序可以包括机器可读指令,这些机器可读指令能够存储在诸如存储器204或辅助储存器214的存储器中,并且能够由诸如CPU 202的处理器执行,以使计算设备执行过程900。在至少一些实施方式中,图4的编码器400的熵编码级408能够全部或部分地执行过程900。
过程900使用至少两个概率模型来编码符号序列xn。过程900能够使用任何数目的概率模型。然而,为简明起见,仅使用两(2)个模型(即,第一模型和第二模型)来说明过程900。过程900通过混合第一模型与第二模型的概率对符号序列中的每个符号进行编码。
在902,过程900将计数器i初始化为0,将第一子序列长度(即,第一长度l1)初始化为0,并且将第二子序列长度(即,第二长度l2)初始化为0。计数器i用于序列xn中的每个符号。第一长度l1和第二长度l2如上所述。也就是说,第一长度l1和第二长度l2能够分别对应于通过使用第一模型和第二模型的算术代码化引擎所生成的码字的长度。
在904,过程900确定如上所述的条件概率p1(xi|xi-1)和p2(xi|xi-1)。条件概率p1(xi|xi-1)是给定子序列xi-1(即,直到并不包括符号xi的子序列)的概率的情况下,符号序列的位置i处的符号的条件概率。这同样适用于p2(xi|xi-1)。
在906,过程900针对符号xi计算混合概率
Figure BDA0002316482510000311
过程900能够确定以上等式(4)中描述的混合概率。过程900能够使用等式8、11和13来计算混合概率。在908,过程900使用计算出的混合条件概率对符号xi进行编码。
在910,过程900更新第一长度l1和第二长度l2。如上所述,在910,能够使用假想算术编码器。第一长度l1被更新为包括当对符号xi进行编码时添加到由第一模型添加的假想码字的附加码字长度(即,比特)。第二长度l2被更新为包括当对符号xi进行编码时添加到由第二模型添加的假想码字的附加码字长度(即,比特)。过程900分别使用l1=l1-log(p1(xi|xi-1))和l2=l2-log(p2(xi|xi-1))来更新第一长度l1和第二长度l2。在一实施方式中,能够计算值-log(p1(xi|xi-1))和-log(p2(xi|xi-1))和/或使用查找表来对其进行估计。应当指出,概率p1(xi|xi-1)和p2(xi|xi-1)是介于零(0)与一(1)之间的概率。如果p1(xi|xi-1)和p2(xi|xi -1)均使用8位整数来表示和/或估计(例如,它们具有定点表示),则-log(p1(xi|xi-1))和-log(p2(xi|xi-1))能够通过使用取8位整数作为输入的查找表来估计,其中每个输入对应于一个概率值。通常,查找表的大小取决于p1(xi|xi-1)和p2(xi|xi-1)的定点表示的宽度。也就是说,宽度越大,估计-log(p1(xi|xi-1))和-log(p2(xi|xi-1))的精度越高。
在912,计数器i递增,以便处理下一个符号xi+1。在914,如果已处理全部符号(即,i=n+1),则该过程终止。否则,过程返回到904以处理下一个符号。
图10是根据本公开实施方式的、用于将符号序列解码的过程1000的流程图。可以在诸如解码器500的解码器中实现过程1000。能够由接收站实施过程1000。过程900能够被例如实施为能够由计算设备执行的软件程序。软件程序可以包括机器可读指令,这些机器可读指令能够存储在诸如存储器204或辅助储存器214的存储器中,并且能够由诸如CPU202的处理器执行,以使计算设备执行过程900。能够使用专用硬件或固件来实施过程900。一些计算设备能够具有多个存储器、多个处理器或这两者。能够使用不同的处理器、存储器或这两者来分布过程1000的步骤或操作。使用单数形式的术语“处理器”或“存储器”包括具有一个处理器或一个存储器的计算设备以及具有能够用于执行一些或全部所述步骤的多个处理器或多个存储器的设备。
过程1000能够用于从编码比特流中解码符号序列。例如,过程1000能够接收编码比特流,诸如图5的压缩比特流420。过程1000能够包括与过程900的步骤902至906和910至914类似的步骤。省略类似的步骤的描述。代替步骤908,过程1000包括步骤1002。在步骤1002,过程1000使用计算出的混合条件概率(即,
Figure BDA0002316482510000321
)从编码比特流中解码符号xi
在过程900或1000的一些实施方式中,步骤906可以每隔k>1个步骤执行一次,以进一步节省(例如,减少)计算复杂度或提高吞吐量。能够以一个时钟周期内处理(代码化或解码)的符号数来衡量吞吐量。例如,当k=2时,仅当i为奇数或偶数而非这两者时,才执行步骤906。在过程900或1000的另一实施方式中,可以在i的全部可能指数的预定义子集处执行步骤906。
上文描述了使用模型的统一加权。然而,根据本公开的实施方式能够使用不统一的先验权重。在使用M个模型的不统一加权中,至少一些权重wk能够被置为不等于1/M的值(即,wk≠1/M)。
为简明起见,上述内容(例如,过程900和1000)描述了使用两个模型:第一模型和第二模型。然而,根据本公开的实施方式能够扩展为任何数目的模型。例如,对于模型数目M≥2,并且假设统一的加权因子wk(即,wk=1/M),则能够使用公式(14)来近似权重wi,k
Figure BDA0002316482510000331
在公式14中,lk(xi-1)表示使用模型k(1≤k≤M)对子序列xi-1进行编码产生的码字长度(以比特为单位)。
在混合多于两(2)个模型的情况下,能够使用二元树来计算(即,确定、生成等)条件概率。也就是说,能够使用上述过程来递归计算等式(8)的因子wi,kpk(xi|xi-1)。递归计算表示一次组合两(2)个模型的概率以产生中间条件概率。然后一次组合两个中间条件概率。在模型数M为2的幂(即,M=2m)的情况下,能够通过对诸如关于图11所描述的满二元树应用上述过程来递归计算等式(8)的因子wi,kpk(xi|xi-1)。
图11是根据本公开实施方式的、条件概率的二元树1100的示例的图。在二元树1100中,混合八(8)个模型。八个模型的概率为p_1至p_8。首先混合每两个概率。例如,如上所述,混合概率1102和1104以生成中间条件概率1106,然后将其与中间条件概率1108组合以产生中间条件概率1110,依此类推,直到计算出最终条件概率1112。最终条件概率1112能够用于进行编码和/或解码。例如,能够在过程900的908处和/或过程1000的1002处使用最终条件概率1112。
关于图11描述的过程能够在例如已知一些模型比其他模型更有用的情况下使用。在已知一些模型比其他模型更有用的情况下,可能不希望采用统一加权。为了给一个模型指派更多权重,能够在树中复制该模型。
以图11为例,模型p_1至p_6和p_8可以不同,并且已知p_6比其他模型更有用。由于p_6更有用,能够在树中复制p_6:p_7是p_6的副本。这样,混合中给概率为p_6的模型指派两倍权重来进行熵编码。
另举一例,例如假设存在两个模型,模型A和模型B,并且这两个模型的先验权重为
Figure BDA0002316482510000341
根据本公开的实施方式,能够将模型集扩展到4个模型的集合,其中,第一模型对应于模型A,其余三个模型对应于模型B,并且这四个模型的先验是
Figure BDA0002316482510000342
在上文中描述了固定源。固定源是指符号xi的混合使用子序列xi-1的全部历史来确定wi,k。这样,统计数据不会在代码化过程的源上发生变化。然而,在源可能非固定的情况下,根据本公开的实施方式能够适应局部统计数据,以使用滑动窗口来获得更好的压缩性能。作为比特长度L的滑动窗口指示混合过程中要使用的先前比特数(即,先前比特数的概率)。也就是说,滑动窗口表示要记忆的在序列中的距离:仅滑动窗口内的符号用于估计加权因子。更具体地,仅将滑动窗口内的那些符号的概率用于估计加权因子。
这样,代替使用
Figure BDA0002316482510000343
将xi代码化,使用
Figure BDA0002316482510000344
其中,长度L≥1是滑动窗口的长度,且其中,xi-L…xi-1是从比特i-L开始并在比特i-1结束的子序列。当长度L已知时,根据本公开的过程能够针对两个模型执行以下步骤:
在步骤1,初始化i=1,l1=0,l2=0。步骤1能够如关于图9的902所述。在步骤1,该过程也初始化l1,-L=0和l2,-L=0。
在步骤2,该过程根据第一模型和第二模型来计算p1(xi|xi-L…xi-1)和p2(xi|xi-L…xi-1)。
在步骤3,该过程根据以下等式15和16来计算混合概率
Figure BDA0002316482510000351
Figure BDA0002316482510000352
Figure BDA0002316482510000353
在步骤4,该过程通过使用
Figure BDA0002316482510000354
编码(当由编码器实施时)xi或解码(当由解码器实施时)xi
在步骤5,该过程将l1更新为l1=l1-logp1(xi|xi-L…xi-1)并将l2更新为l2=l2-logp2(xi|xi-L…xi-1)。如果该过程在窗口之外进行编码/解码(即i>L),则该过程更新l1,-L=l1,-L-logp1(xi-L|xi-2L…xi-L-1)和l2,-L=l2,-L-logp2(xi-L|xi-2L…xi-L-1)。
在步骤6,i增加1(即,i=i+1)。
在步骤7,该过程重复步骤2-6,直到处理了序列xn的全部比特(即,i=n+1)。
在上述滑动窗口中,l1(xi-1)-l1(xi-L-1)=l1-l1,-L和l2(xi-1)-l2(xi-L-1)=l2-l2,-L。这样,l1(xi-1)-l1(xi-L-1)能够被视为通过使用第一模型将xi-L…xi-1代码化所产生的码字长度,并且l2(xi-1)-l2(xi-L-1)能够被视为使用第二模型将xi-L…xi-1代码化所产生的码字长度。
图12是根据本公开实施方式的、用于对符号序列进行熵代码化的过程1200的流程图。该序列能够如上针对序列xn所述。过程1200能够由编码器或解码器来实施。当由编码器来实施时,“代码化”是指编码为诸如图4的压缩比特流420的编码比特流。当由解码器来实施时,“代码化”是指从诸如图5的压缩比特流420的编码比特流中解码。
当由编码器来编码时,过程1200能够从诸如图4的量化级406的量化步骤接收符号序列。在另一示例中,过程1200能够接收将要编码的值(例如,量化变换系数)并且从接收到的值生成符号序列。
在1202,过程1200选择要混合的模型。这些模型能够包括第一模型和第二模型。如本公开中所使用,“选择”表示识别、构造、确定、指定或其他任何方式的选择。
针对至少一个符号(例如,xi),在符号的位置(例如,i)处,过程1200执行包括步骤1204至1208的步骤,以使用第一模型和第二模型来确定混合概率。能够针对符号序列中的全部符号执行步骤1204至1208。
在1204,过程1200使用第一模型确定用于编码符号的第一条件概率。第一条件概率是给定序列的子序列情况下的符号的条件概率。在一示例中,序列的子序列能够表示子序列xi-1。在其中正在使用滑动窗口的另一示例中,序列的子序列由序列在该位置前的预定数目的符号组成。预定数目的符号能够如关于滑动窗口长度L所述。这样,序列的子序列能够是子序列xi-L…xi-1。在1206,过程1200使用第二模型确定用于编码符号的第二条件概率。第二条件概率是给定子序列的符号的条件概率,如关于1204所述。
在1208,过程1200使用第一条件概率和第二条件概率来确定用于编码符号的混合概率。混合概率能够如关于图9的906所述。使用使用第一权重和第二权重的线性组合,能够组合第一条件概率与第二条件概率。在一实施方式中,能够使用假想算术代码化来确定(即,近似)至少第一权重,以确定用于编码序列中直到该符号的子序列的长度。能够使用长度来确定第一权重。在一示例中,确定权重(例如,第一权重和/或第二权重)能够包括:确定从对序列中直到符号的子序列进行编码所得的率,并且使用所确定的率来确定第一权重。在一示例中,能够使用率估计器来确定率。在一示例中,率估计器能够是假想算术编码器。在一示例中,确定率能够包括使用输入作为概率值来查找表(例如,查找表)。
在1210,过程1200使用混合概率将符号代码化,例如关于908(当由编码器实施时)和1002(当由解码器实施时)所述。
在过程1200的实施方式中,模型能够包括第三模型和第四模型,并且使用第一模型和第二模型来确定混合概率能够包括:混合第一模型和第二模型以生成第一中间条件概率,混合第三模型和第四模型以生成第二中间条件概率,以及混合第一中间条件概率和第二中间条件概率以生成用于对符号进行编码的条件概率。在一实施方式中,第一模型和第四模型是相同的模型。
一种称为场境树加权(CTW)的技术是使用混合的无损数据压缩算法。为了将长度为n的二进制序列xn代码化,CTW将概率函数p(xn)估计为2K个概率函数pi(xn)的线性混合,其中每个概率函数都通过假设有限记忆二进制树源来估计并且具有相同的加权因子。相比之下,根据本公开的实施方式能够与任何模型配合工作。此外,本文描述的逐符号加权因子计算能够使用长度函数来近似子序列的概率,这与维持并计算联合概率的现有解决方案相比得以大幅简化。
如上所述,场境建模中的一个关键设计挑战或问题是以下两个冲突目标之间的平衡:(1)通过添加更多场境提高压缩性能与(2)降低与场境相关联的开销成本。
使用系数令牌树700作为非限制性说明,现在给出对代码化系统中的场境数目的影响以及场境数目与代码化性能之间的关系的数学分析。
对于场境c,令Pc=(pc,0,...,pc,11)表示从该场境获得的概率分布,其中,pc,i表示令牌i的概率,i=0,...,10(即,表I中列出的令牌),并且pc,11表示EOB_TOKEN的概率。为方便起见,将EOB_TOKEN称为令牌11。现在假设,在一帧中,场境c出现并使用了nc次。场境例如在满足与该场境相关联的条件和/或这些条件可用于该帧时“出现”。场境例如在对帧的至少一个块的代码化中使用与该场境相关联的概率分布时被“使用”。令Qc=(qc,0,...,qc,11)表示场境c下的系数令牌的经验(即,观察到的)分布。也就是说,qc,i表示令牌i在场境c下出现在帧中的次数,并且能够由
Figure BDA0002316482510000381
给出(即,令牌i在场境c下出现在帧中的次数除以场境c出现的次数)。概率分布Pc和Qc能够分别称为用于将令牌代码化的代码化分布和实际分布。
给定代码化分布Pc,能够由
Figure BDA0002316482510000382
给出可通过使用算术代码化获得的压缩性能。使用实际分布Qc
Figure BDA0002316482510000383
以及对数定律log(分数)=log(分子)-log(分母),能够如以下等式(17)化简可获得的压缩性能:
Figure BDA0002316482510000384
等式(17)右侧的第一项
Figure BDA0002316482510000385
能够被识别为实际分布Qc的熵H(Qc)。等式(1)右侧的第二项
Figure BDA0002316482510000386
能够被识别为分布Pc与Qc之间的相对熵或Kullback-Leibler(KL)散度,该散度定义在同一字母表(例如系数令牌树700的令牌)上。KL散度能够被表示为D(Qc||Pc)。这样,能够使用以下等式(18)来改写通过使用算术代码化可获得的压缩性能:
Figure BDA0002316482510000391
第二项(即D(Qc||Pc))指示作为使用最佳概率分布(即,实际分布Qc)的替代而使用另一次最佳概率分布(即,代码化分布Pc)时导致的压缩性能损失。当实际概率分布与代码化概率分布之间存在差异时,导致压缩性能损失。损失随编码的序列长度线性增长。
等式(18)能够用作设计压缩算法的基础。也就是说,使用等式(18)来分析压缩算法。场境建模的设计直接影响压缩性能。这样,设计良好的场境建模(即,最佳选择场境)导致良好的压缩算法。借助最佳场境建模,使第一项H(Qc)和第二项D(Qc||Pc)最小化。
等式(18)的两个项(即,ncH(Qc)和ncD(Qc||Pc))随场境c出现的次数nc线性增长。可以领会,为了提高熵代码化的压缩性能,应使等式(18)的两项H(Qc)和D(Qc||Pc)尽可能最小。
作为第二项,D(Qc||Pc)始终为非负值,并且当且仅当实际分布与代码化分布相等(即,Qc≡Pc)时,D(Qc||Pc)=0,第一项(即,ncH(Qc))是任何压缩算法的绝对理论下限。换言之,给定具有概率分布Qc的序列nc,由ncH(Qc)给出最佳可能压缩,并且其他概率分布无法提供更佳的压缩。
相应地,为了获得良好的压缩性能,期望代码化分布Pc尽量接近实际分布Qc。对于相同的场境,实际分布从一帧到另一帧而变化。这样,代码化分布Pc应当适应于要解码的给定帧的实际分布Qc。因该帧尚未解码,所以解码器无法获知如何调整代码化分布Pc
反而,能够由编码器用信号指示经调整的代码化分布Pc。例如,编码器能够在要解码的帧的帧报头中对经调整的代码化分布Pc进行编码。编码经调整的代码化分布Pc可能表示编码器对代码化分布Pc的令牌概率进行编码pc,i
假设以比特为单位(或更准确来说以部分比特为单位)对令牌概率pc,i进行编码的成本的下限为比特成本ε>0。也就是说,比特成本ε是编码令牌概率pc,i所需的最少比特数。
对于场境c,能够由11ε/nc给出将代码化分布Pc代码化的总比特成本(在帧中摊销),其中包括表I12个令牌和EOB_TOKEN的的概率。总比特成本与nc成反比并随字母表大小(例如,令牌数)线性增长。因代码化分布Pc是概率分布(即,
Figure BDA0002316482510000401
),其自由度等于字母表大小(例如,12个令牌)减一(1)。因此,比特成本11ε/nc中为11,而不是12(对应于令牌数)。
令C表示变换系数代码化中使用的全部场境的集合。为了将针对该集合C中的场境c的代码化概率分布传送到解码器(该解码器能够用于解码与例如图7的系数令牌树700的节点相对应的令牌),可以将与系数令牌树700和EOB_TOKEN中的每个令牌的概率编码。因存在12个令牌,由以下等式(19)给出从集合C中的场境获得(在帧上摊销)的代码化概率分布的总比特成本:
Figure BDA0002316482510000402
在等式(19)中,|C|为集合C的基数,n为帧中的令牌数。等式(19)表示,每个附加场境能够添加每令牌至少11ε/n个比特的归一化成本。等式(19)的右侧表达式随场境的数目(即,集合C的大小)线性增长。因此,减少场境的数目(即,更小的集合C)能够减少开销。然而,仍然存在以下情况:对于每个场境,要对11个概率进行编码:11个概率对应于令牌数(12)减一(1)。如下所述,使用选择性混合来进行熵代码化,能够减少要针对一些场境编码概率的数目。例如,给定系数令牌树700,代替对11个概率进行编码,而是对少于11个的概率进行代码化,从而减少帧报头中与代码化分布相关联的开销比特。
如上所述,减少场境的数目(即,更小的集合C)能够减少开销。然而,分析等式(18)的第一项,即熵H(Qc),指示减少场境的数目是不期望的。
熵H(Qc)是凹函数。这进而意指,如不等式(20)给出,采取两个分布M和M'的线性组合,则两个分布M和M'的线性组合的熵(即,不等式的左侧)大于或等于各个分布的熵的线性和(即不等式的右侧)。当两个分布M和M'不同时,不等式(20)变成严格的不等式。
H(λM+(1-λ)M′)≥λH(M)+(1-λ)H(M′) (20)
给定不等式(20),可以得出的结论是,为使等式(18)的第一项最小化,期望的是增加不同分布的数目,这进而意指增加不同场境的数目。这是因为通过增加场境的数目,能够将不等式(20)的左侧分解成右侧。分解能够改善整体压缩性能。
总而言之,为了改善压缩性能,分析等式(18)和等式(19)的第二项得出的结论是,优选减少场境的数目;另一方面,分析等式(18)和不等式(20)的第一项得出的结论是,期望增加场境的数目以改善压缩性能。如下所述,使用用于熵代码化的选择性混合,能够增加场境的数目,并且能够减少或限制与每个附加场境相关联的开销。例如,参照图7的系数令牌树700,添加场境不会导致添加11个概率值。
能够观察到以下几点:
1)在代码化变换系数中,当确定场境c时,使用与场境c相关联的代码化分布Pc来代码化用于变换系数的令牌,
2)等式(19)中的乘积因子11等于系数令牌的字母表的大小减一(1),
3)如果要将场境c分成两个不同的场境c0和c1,则场境c0出现的次数和场境c1出现的次数等于场境c出现的次数(即,nc=nc0+nc1)。
4)如果要将场境c分成两个不同的场境c0和c1,则对应的实际分布Qc0和Qc1应当充分不同,并且
5)针对给定场境c,对于所有i,令牌i在场境c下出现在帧中的次数nc,i应当多到足以确保足够的概率估计准确度。
给定仅在一些脚标处不同但在其他脚标处相似或相同的两个分布Qc0和Qc1,根据本公开的实施方式,仅对于Qc0和Qc1不同的那些令牌脚标,才能将场境c分成例如两个场境c0和c1。换而言之,引入的每个新场境的成本能够低于11ε/nc比特/令牌。例如,如果场境适于4个令牌,则成本为3ε/nc
图13是根据本公开实施方式的、用于使用变换系数令牌的字母表将变换系数代码化的过程1300的流程图。过程1300使用两个或更多个概率分布来代码化(即,编码或解码)当前变换系数。过程1300能够代码化指示当前变换系数的令牌。能够使用诸如图7的系数令牌树700的系数树来确定或选择令牌。这样,字母表包括系数树的叶节点(即,令牌)。
过程1300能够供按扫描顺序代码化变换块的系数的过程使用,或者与之结合。当前变换系数按扫描顺序能够位于扫描位置i处,并且在变换块中能够位于系数位置(ri,ci)处。
过程1300选择对应于第一场境的第一概率分布,选择对应于第二场境的第二概率分布,并且针对一些变换系数令牌,能够混合第一概率分布和第二概率分布,以生成用于代码化一些变换系数令牌中的变换系数令牌的混合概率。
能够在诸如图4的编码器400的编码器中实施过程1300。过程1300能够被例如实施为能够由诸如发送站102的计算设备执行的软件程序。软件程序可以包括机器可读指令,这些机器可读指令能够存储在诸如存储器204或辅助储存器214的存储器中,并且能够由诸如CPU202的处理器执行,以使计算设备执行过程1300。在至少一些实施方式中,图4的编码器400的熵编码级408能够全部或部分地执行过程1300。
可以在诸如图5的解码器500的解码器中实施过程1300。过程1300能够被例如实施为能够由诸如接收站106的计算设备执行的软件程序。软件程序可以包括机器可读指令,这些机器可读指令能够存储在诸如存储器204或辅助储存器214的存储器中,并且能够由诸如CPU202的处理器执行,以使计算设备执行过程1300。在至少一些实施方式中,图5的解码器500的熵解码级502能够全部或部分地执行过程1300。
当由编码器来实施过程1300时,“代码化”是指编码在诸如图4的压缩比特流420的编码比特流中。当由解码器来实施时,“代码化”是指从诸如图5的压缩比特流420的编码比特流中解码。
在1302,过程1300选择第一概率分布。如本公开中所使用,“选择”表示以任何方式获得、识别、构造、确定、指定或其他任何方式的选择。
在一示例中,过程1300能够首先导出第一场境并选择对应于第一场境的第一概率分布。例如,能够使用以下中的一个或多个来导出场境:变换块大小、变换块形状(例如,正方形或矩形)、颜色分量或平面类型(即,亮度或色度)、当前变换系数的扫描位置i和先前代码化的令牌。例如,在图6的扫描顺序602情况下,先前代码化的系数能够是当前变换系数的左相邻系数和上相邻系数。能够使用其他信息来导出第一场境。
在一示例中,能够在字母表的全部令牌上定义第一概率分布。也就是说,概率分布包括字母表中的每个令牌的概率值。使用系数令牌树700的令牌,令字母表集E表示系数令牌的字母表。这样,由E={EOB_TOKEN,ZERO_TOKEN,ONE_TOKEN,TWO_TOKEN,THREE_TOKEN,FOUR_TOKEN,DCT_VAL_CAT1,DCT_VAL_CAT2,DCT_VAL_CAT3,DCT_VAL_CAT4,DCT_VAL_CAT5,DCT_VAL_CAT6}给出字母表集E。第一概率分布能够包括字母表集E中的每个令牌的概率值。在另一示例中,概率分布能够包括字母表中的一些令牌的概率值。在一示例中,第一概率分布能够是如上关于代码化分布Pc所述的代码化分布。
在1304,过程1300选择第二概率分布。在一示例中,过程1300能够导出第二场境并选择对应于第二场境的第二概率分布。
能够在令牌的分区上定义第二概率分布。以图7的系数令牌树700的令牌为例,分区能够对应于字母表集E的非平凡分区FE。例如,非平凡分区FE能够是E={{EOB_TOKEN},{ZERO_TOKEN},{ONE_TOKEN,TWO_TOKEN,THREE_TOKEN,FOUR_TOKEN,DCT_VAL_CAT1,DCT_VAL_CAT2,DCT_VAL_CAT3,DCT_VAL_CAT4,DCT_VAL_CAT5,DCT_VAL_CAT6}}。也就是说,非平凡分区FE将字母表集E划分为三个非重叠子集:{EOB_TOKEN},{ZERO_TOKEN},以及包含所有其他令牌的集合。这样,第二概率分布包括分区的元素的概率值。
在非平凡分区FE的示例中,第二概率分布能够包括三(3)个概率值。因非平凡分区FE仅包括三(3)个元素,第二场境添加开销的2ε/n比特/令牌,这明显少于通过确定字母表E上的概率分布的新场境(即,诸如第一场境的场境)添加的约11ε/n比特/令牌。
因第二场境是针对字母表E的令牌子集,限制了与添加的第二场境相关联的开销量。与添加的第一场境相比,添加的第二场境导致的开销要少得多。
在一示例中,第二场境能够是以比其他节点更频繁使用的字母表集E的令牌为目标的场境。以更频繁使用的令牌为目标能够提高那些令牌的代码化(例如,压缩)性能。例如,再次参照图7的系数令牌树700,当代码化变换系数时,内部节点(例如,节点A-K)中根节点701和节点703是最频繁使用的节点。在遍历树以编码变换系数时,内部节点越在树下方,遍历该节点的频率越低。也就是说,内部节点越在树下方,则内部节点用于代码化变换系数的次数越少。这样,添加场境(如上所述,这是期望的,对于开销除外)能够被限制为针对最频繁使用的令牌添加场境。
在一示例中,第二场境能够是如关于实际分布Qc所述的实际分布。在一示例中,能够通过利用以下公知事实导出第二场境:用于当前系数(即,系数位置(ri,ci)处并对应于扫描位置i的系数)的令牌为零(即,ti=ZERO_TOKEN)的概率与系数位置(ri,ci)的直接2D(二维)邻域中的零个数密切相关。在一示例中,能够使用锚定在系数位置(ri,ci)处的邻域模板来导出第二场境。邻域模板能够指示、包括、指定等构成邻域的系数位置。邻域模板能够是基于扫描顺序。
图14是根据本公开实施方式的、用于导出场境的邻域模板1400和1450的图。邻域模板包括在当前系数之前代码化的系数的位置(即,相邻位置)。这样,那些系数的值可用于代码化当前系数。邻域模板能够包括任何数目的位置。邻域模板能够具有任何形状。例如,邻域模板无需包括连续或毗邻的位置。
邻域模板1400示出能够与前向扫描顺序一起使用的邻域模板。前向扫描顺序是从变换块的左上角到右下角的扫描顺序,诸如图6的扫描顺序602。邻域模板1400示出当前系数1402和邻域模板1404,其包括标记为a-e的五个阴影系数的位置。邻域模板能够包括更多或更少的系数位置。在一示例中,值a-e能够指示各个系数为零还是为非零。这样,值a-e能够是二进制值。
邻域模板1450示出能够与后向扫描顺序一起使用的邻域模板。后向扫描顺序例如是从变换块的右下角到左上角进行的扫描顺序。邻域模板1450示出当前系数1452和邻域模板1454,其包括标记为a-i的九个阴影系数的位置。然而,如上所述,邻域模板能够包括更多或更少的系数位置。
在一示例中,能够基于邻域模板中零系数的数目来导出第二场境。例如,使用邻域模板1400,能够基于公式(a+b+c+d+e+1)>>1从场境值的集合{0、1、2、3}中选择场境值,其中,值a-e中的每个为零(0)或一(1)的值,而“>>1”是将总和(a+b+c+d+e+1)比特移位一个比特。在一示例中,值零(0)能够指示该位置处的系数为零系数,而值一(1)能够指示该系数为非零。例如,如果全部邻域模板系数均为零,则能够选择编号为0的场境;如果正好一个或正好两个邻域模板系数为非零,则选择编号为1的场境;依此类推。其他值和语义也是可能的。
再次参照图13,在1306,响应于确定第二概率分布包括变换系数令牌的概率,过程1300进行到1308。在一实施方式中,过程1300能够包括:如果第二概率分布不包括变换系数令牌的概率,则过程1300进行到1312。
在一示例中,第二概率分布包括当变换系数令牌被包括在分区的单集(singleton)元素中时变换系数令牌的概率。例如,上述非平凡分区FE被确定包括EOB_TOKEN令牌的概率,因为EOB_TOKEN被包括在非平凡分区FE的单集元素{EOB_TOKEN}中。在此提醒,单集元素是仅包含一个元素的字母表集E的子集。这样,第二概率分布没有被确定包括例如FOUR_TOKEN的概率,因为FOUR_TOKEN未被包括在非平凡分区FE的单集元素中。
如上所述,第一场境能够用于获得第一概率分布,该第一概率分布能够是字母表集E上的概率分布,第二场境能够用于获得非平凡分区FE上定义的第二概率分布。参照系数令牌树700,在一示例中,第一场境能够用于确定用于代码化(即,编码或解码)每个内部节点处的二元决策的二进制概率分布,并且第二场境能够用于确定仅以下两个内部节点处的二进制分布:根节点701及其右子节点(即,节点703)。
在1308,过程1300混合第一概率分布和第二概率分布以生成混合概率。在1310,过程1300使用混合概率将变换系数令牌熵代码化。
给定非平凡分区FE,通过混合从第一场境获得的分布(即,第一概率分布)和从第二场境获得的分布(即,第二概率分布),可以获得两个内部节点(即,根节点701和节点703)的代码化分布。这样,无需先验地选择用于代码化令牌的概率分布;而是如上所述,混合能够产生最佳组合。
混合能够如上关于图9至图12所述。在一示例中,过程1300能够通过以下操作来生成混合概率:使用第一概率分布确定用于解码变换系数令牌的第一条件概率,使用第二概率分布确定用于编码变换系数令牌的第二条件概率,并且使用第一条件概率和第二条件概率确定混合概率。
作为示例,使用令牌树——诸如图7的系数令牌树700,第一条件概率分布能够是内部节点处的条件概率分布。内部节点处的条件概率分布是给定从代码化历史记录(即,先前代码化的系数)和边信息所确定的第一场境的情况下选择内部节点的子节点(即,左子节点或右子节点)的概率分布。边信息的示例包括平面类型(例如,亮度、色度等)、变换大小(即,变换块大小)和变换类型(例如,DCT、ADST等)。其他边信息也能够是可用的。第二条件概率分布是给定从代码化历史和边信息所确定的第二场境的情况下在同一内部节点处的条件概率分布。能够使用代码化历史中的不同信息和不同边信息导出第一场境和第二场境。
以非平凡分区FE为例,第一条件概率分布能够是给定从代码化历史和边信息所确定的第一场境的情况下在非平凡分区FE上的条件概率分布;并且第二条件概率分布能够是给定从代码化历史和其他或相同边信息所确定的第二场境的情况下在FE上的条件概率分布。
如果第一场境确定在字母表集E中的概率分布P,则能够确定FE中的概率分布Q,以便对于FE中的任何元素e,能够由元素e(令牌集e)中的全部令牌的概率之和给出元素e的概率Q(e):Q(e)=∑t∈eP(t)。因FE是字母表集E的非平凡分区,实质上针对字母表集E中的元素e进行概率值的选择性混合。
在1312,在第二概率分布不包括变换系数令牌的概率的条件下,过程1300使用第一概率分布将当前变换系数令牌熵代码化。也就是说,对于其余的内部节点(即,未包括在分区E的单集中的节点),可以从第一场境获得代码化分布。也就是说,第一概率分布能够用于将其余的系数熵代码化。
总而言之,选择性混合第一概率分布和第二概率分布能够被使用于代码化变换系数所使用的令牌子集。在一示例中,令牌对应于系数令牌树的内部节点。例如,选择性混合只能用于比其他内部节点(即,不频繁使用的节点)更频繁使用的内部节点(即,频繁使用的节点)。在一示例中,能够将更频繁使用的内部节点作为对应于那些内部节点的令牌的列表给出。在另一示例中,更频繁使用的内部节点能够是非平凡分区FE的单集。如果未对内部节点使用混合,则第一概率分布能够用作代码化分布。这样,选择性对一些节点应用混合:对于一些内部节点(例如,频繁使用的节点)混合第一分布和第二分布,并且第一分布用于代码化其他内部节点(例如,不频繁使用的节点)。
在上述示例中,字母表集E被分区成非平凡分区FE。这样,字母表集E的令牌被认为是不相关且不同的。也就是说,即使使用系数令牌树700的令牌来说明过程1300,该分区也将令牌视为不相关且不同的令牌。也就是说,分区E不利用树结构并且能够与任何字母表集一起使用。
在另一示例中,令牌的树结构(如果可用)能够用于选择第二概率分布。树结构(诸如系数令牌树700)能够凭借其层级结构将一个令牌与另一个令牌相关。这样,第二概率分布能够是在系数令牌树的一些内部节点处定义的概率分布。
在一示例中,更频繁使用的内部节点能够是比其他内部节点更靠近根节点的节点。例如,在系数令牌树700中,标记为C的节点比标记为K的节点更靠近根节点701,这是因为从根节点遍历到标记为C的节点比遍历到标记为K的节点所需的跳更少。
在一示例中,选择性混合能够用于距根节点预定跳数之内(或不超过预定调数)的内部节点。例如,如果预定跳数为二(2),则选择性混合能够用于标记为A的内部节点(即根节点701)、节点703和标记为C的节点。这样,能够基于内部节点与根节点的接近度来确定一内部是否“频繁使用”。与一令牌相对应的内部节点在例如在代码化另一个令牌的过程中也代码化与该令牌相关的决策时被“使用”。
如关于图9所述,通过混合第一概率分布和第二概率分布,能够确定代码化一些内部节点的令牌(即,通过遍历树生成的序列xn)的概率。也就是说,对于具有第一概率分布和第二概率分布这两个分布的内部节点,能够获得用于将当前系数熵代码化的混合概率。对于所有其他内部节点,第一概率分布用于将当前系数熵代码化。
如果k是受第二场境影响的内部节点的数目,则第二场境近似地添加kε/n比特/令牌,而第一场境为系数令牌树700的令牌添加11ε/n比特/令牌。
通过使用选择性混合,可以将代码化系统中的可用场境C的集合划分为第一集合C0和第二集合C1。以系数令牌的字母表E为例,能够从影响字母表E上整体分布的场境信息导出第一集合C0,并且从仅影响字母表E上的分布的一部分的场境信息导出集合C1中的场境。集合C1中的不同场境能够以字母表E的不同分区为目标。在系数树可用的情况下,集合C1中的不同场境能够以树的不同内部节点为目标。例如,集合C1中的一些场境能够以系数令牌树中的根节点为目标。例如,集合C1中的一些场境能够以从其他令牌中拆分出ZERO_TOKEN的内部节点为目标。例如,集合C1中的一些场境能够以从其他令牌中拆分出ONE_TOKEN的内部节点为目标。相应地,代替在代码化系统中为字母表中的全部令牌维护数百或数千个场境,能够为全部令牌维护更小的子集,并且另一场境集合能够针对可能视为重要、重大或更频繁使用的令牌。
上述编码和解码的方面示出了一些编码和解码技术。然而,应当理解,编码并解码(正如权利要求中使用的那些术语)能够表示对数据进行压缩、解压缩、变换或者任何其他处理或改变。
本文使用词语“示例”或“实施方式”来表示用作示例、实例或说明。本文中描述为“示例”或“实施方式”的任何方面或设计未必解释为比其他方面或设计更优选或更具优势。相反,使用词语“示例”或“实施方式”旨在以具体方式呈现概念。如本申请中所使用,术语“或”旨在表示包含性“或”而不是排他性“或”。也就是说,除非另作说明或上下文清楚可知,否则“X包括A或B”旨在表示任何自然的包含性排列。也就是说,在任意前述实例中,如果X包括A;X包括B;或者X包括A和B,则满足“X包括A或B”。另外,本申请和所附权利要求书中使用的冠词“一”通常应理解为表示“一个或多个”,除非另作说明或上下文清楚指向单数形式。此外,除非如此描述,否则贯穿使用术语“实施方式”或“一个实施方式”并非旨在表示同一个实施例或实施方式。
能够以硬件、软件或其任何组合来实现发送站102和/或接收站106的实施方式(以及存储于其上和/或由其(包括由编码器400和解码器500)执行的算法、方法、指令等)。硬件能够例如包括计算机、知识产权(IP)核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路。在权利要求中,术语“处理器”应当理解为单独地或组合地包含任何前述硬件。术语“信号”与“数据”可互换使用。此外,不必以相同的方式实施发送站102和接收站106的部分。
此外,在一方面,例如,发送站102或接收站106能够使用具有计算机程序的通用计算机或通用处理器来实施,该计算机程序当被执行时执行本文描述的任何相应的方法、算法和/或指令。附加地或替选地,例如,能够利用专用计算机/处理器,其能够包含用于执行本文描述的任何方法、算法或指令的其他硬件。
能够例如在视频会议系统中的计算机上实施发送站102和接收站106。替选地,能够在服务器上实施发送站102,能够在诸如手持通信设备的与服务器分立的设备上实施接收站106。在本实例中,发送站102能够使用编码器400将内容编码为编码视频信号,并将编码视频信号发送到通信设备。接着,通信设备能够再使用解码器500对编码视频信号进行解码。替选地,通信设备能够解码在通信设备上本地存储的内容,例如,未由发送站102发送的内容。其他发送站102和接收站106的实施方案是可用的。例如,接收站106可以是通常固定的个人计算机而不是便携式通信设备,并且/或者包括编码器400的设备也可以包括解码器500。
此外,本公开的全部或部分实施方式能够采用可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是能够例如有形地包含、存储、通信或传输程序以供任何处理器使用或与之结合使用的任何设备。介质可以例如是电、磁、光、电磁或半导体器件。其他合适的介质也是可用的。
已经描述了上述实施例、实施方式和方面,以便容易理解本公开,并且上述实施例、实施方式和方面并不限制本公开。相反,本公开旨在涵盖包含在所附权利要求书范围内的各种修改和等同布置,该范围应被赋予最广泛的解释,以包含法律允许的所有这些修改和等同结构。

Claims (21)

1.一种用于使用变换系数令牌的字母表解码变换系数的装置,所述装置包括:
存储器;以及
处理器,所述处理器被配置成执行存储在所述存储器中的指令以:
选择与第一场境相对应的第一概率分布,所述第一概率分布是针对所述字母表中的全部令牌定义的;
选择与第二场境相对应的第二概率分布,所述第二概率分布是在所述令牌的非平凡分区上定义的;以及
响应于确定所述第二概率分布包括变换系数令牌的概率,
混合所述第一概率分布和所述第二概率分布以生成混合概率,以及
使用所述混合概率来从编码比特流熵解码所述变换系数令牌。
2.根据权利要求1所述的装置,其中,所述指令进一步包括指令以:
在所述第二概率分布不包括所述变换系数令牌的概率的条件下,使用所述第一概率分布来从所述编码比特流熵解码所述变换系数令牌。
3.根据权利要求1或2所述的装置,其中,所述第一概率分布是从所述第一场境所获得的概率分布。
4.根据权利要求1至3中任一项所述的装置,其中,所述第二概率分布是实际分布。
5.根据权利要求1至4中任一项所述的装置,其中,确定所述第二概率分布包括所述变换系数令牌的概率包括:
确定所述变换系数令牌被包括在所述非平凡分区的单集元素中。
6.根据权利要求5所述的装置,其中,混合所述第一概率分布和所述第二概率分布以从所述编码比特流熵解码所述变换系数令牌包括:
使用所述第一概率分布,确定解码所述变换系数令牌的第一条件概率,所述第一条件概率是所述变换系数令牌在给定所述字母表中的其他变换系数令牌情况下的条件概率;
使用所述第二概率分布,确定编码所述变换系数令牌的第二条件概率,所述第二条件概率是所述非平凡分区的所述单集元素在给定所述非平凡分区中的其他元素情况下的条件概率;以及
使用所述第一条件概率和所述第二条件概率,确定解码所述变换系数令牌的所述混合概率。
7.根据权利要求1至6中任一项所述的装置,其中,与所述变换系数令牌相对应的变换系数位于变换块的位置处,并且其中,所述第二场境是使用与所述位置相邻的位置处的零系数的数目来确定的。
8.根据权利要求7所述的装置,其中,与所述位置相邻的位置是基于扫描顺序。
9.根据权利要求1至8中任一项所述的装置,其中,
令牌的所述字母表被组织成系数令牌树;
所述第一概率分布是针对所述系数令牌树的内部节点定义的;
所述第二概率分布是针对所述系数令牌树的内部节点中的一些但非全部内部节点定义的;以及
从所述编码比特流熵解码所述变换系数令牌包括:使用所述混合概率来解码与所述系数令牌树的第一内部节点相关的第一决策。
10.一种用于使用令牌的字母表代码化变换系数的方法,包括:
选择与第一场境相对应的第一概率分布,所述第一概率分布是针对所述字母表中的一些令牌定义的;
选择与第二场境相对应的第二概率分布,所述第二概率分布是在所述令牌的非平凡分区上定义的;以及
响应于确定所述第一概率分布包括与变换系数相对应的令牌的概率并且所述第二概率分布包括所述令牌的第二概率,
混合所述第一概率分布和所述第二概率分布以生成混合概率,以及
使用所述混合概率来代码化所述令牌。
11.根据权利要求10所述的方法,进一步包括:
在所述第二概率分布不包括所述令牌的概率的条件下,使用所述第一概率分布来熵代码化所述令牌。
12.根据权利要求10或11所述的方法,其中,所述第一概率分布是代码化分布。
13.根据权利要求10至12中任一项所述的方法,其中,所述第二概率分布是实际分布。
14.根据权利要求10至13中任一项所述的方法,其中,确定所述第二概率分布包括所述令牌的概率包括:
确定所述令牌被包括在所述非平凡分区的单集元素中。
15.根据权利要求14所述的方法,其中,混合所述第一概率分布和所述第二概率分布以熵代码化所述令牌包括:
使用所述第一概率分布,确定解码所述令牌的第一条件概率,所述第一条件概率是所述令牌关于所述字母表中的其他令牌的条件概率;
使用所述第二概率分布,确定编码所述令牌的第二条件概率,所述第二条件概率是所述非平凡分区中的所述单集元素关于所述非平凡分区中的其他元素的条件概率;以及
使用所述第一条件概率和所述第二条件概率,确定解码所述令牌的所述混合概率。
16.根据权利要求10至15中任一项所述的方法,其中,所述变换系数位于一位置处,并且其中,所述第二场境是使用相邻位置处的零系数的数目来确定的。
17.根据权利要求16所述的方法,其中,所述相邻位置是基于扫描顺序。
18.一种用于使用组织成系数令牌树的令牌字母表解码变换系数的装置,所述装置包括:
存储器;以及
处理器,所述处理器被配置成执行存储在所述存储器中的指令以:
选择与第一场境相对应的第一概率分布,所述第一概率分布是针对所述系数令牌数的内部节点定义的;
选择与第二场境相对应的第二概率分布,所述第二概率分布是针对所述系数令牌树的内部节点中的一些但非全部内部节点定义的;以及
通过以下操作来解码令牌:使用混合概率来解码与所述系数令牌树的第一内部节点相关的第一决策,所述混合概率是通过将所述第一概率分布和所述第二概率分布混合来生成的。
19.根据权利要求18所述的装置,其中,解码令牌的指令进一步包括指令以:
使用所述第一概率分布来解码与所述系数令牌树的第二内部节点相关的第二决策。
20.根据权利要求19所述的装置,其中,所述第一内部节点是比所述第二内部节点更频繁使用的节点。
21.根据权利要求18至20中任一项所述的装置,其中,所述第一内部节点指示块结束。
CN201880039455.0A 2017-08-29 2018-05-01 选择性混合用于视频压缩中进行熵代码化的概率分布 Active CN110771171B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762551341P 2017-08-29 2017-08-29
US62/551,341 2017-08-29
US15/707,278 US10735736B2 (en) 2017-08-29 2017-09-18 Selective mixing for entropy coding in video compression
US15/707,278 2017-09-18
PCT/US2018/030357 WO2019045798A1 (en) 2017-08-29 2018-05-01 SELECTIVE MIXING OF PROBABILITY DISTRIBUTIONS ENABLING ENTROPY CODING IN VIDEO COMPRESSION

Publications (2)

Publication Number Publication Date
CN110771171A true CN110771171A (zh) 2020-02-07
CN110771171B CN110771171B (zh) 2022-09-06

Family

ID=65436426

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201880039455.0A Active CN110771171B (zh) 2017-08-29 2018-05-01 选择性混合用于视频压缩中进行熵代码化的概率分布
CN201880035871.3A Active CN110692243B (zh) 2017-08-29 2018-05-01 用于在视频压缩中的熵代码化的概率的混合
CN202210979148.9A Active CN115514978B (zh) 2017-08-29 2018-05-01 用于在视频压缩中的熵代码化的概率的混合的方法和装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201880035871.3A Active CN110692243B (zh) 2017-08-29 2018-05-01 用于在视频压缩中的熵代码化的概率的混合
CN202210979148.9A Active CN115514978B (zh) 2017-08-29 2018-05-01 用于在视频压缩中的熵代码化的概率的混合的方法和装置

Country Status (6)

Country Link
US (5) US10735736B2 (zh)
EP (2) EP3677035A1 (zh)
JP (1) JP6923677B2 (zh)
KR (1) KR102314801B1 (zh)
CN (3) CN110771171B (zh)
WO (2) WO2019045797A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10735736B2 (en) * 2017-08-29 2020-08-04 Google Llc Selective mixing for entropy coding in video compression
WO2019074744A1 (en) * 2017-10-09 2019-04-18 Fovia Inc. METHOD AND SYSTEM FOR PREDICTING BITS USING A STATISTICAL MODEL
CN109788290A (zh) * 2017-11-13 2019-05-21 慧荣科技股份有限公司 影像处理装置及利用帧内预测的无损影像压缩方法
WO2019140083A1 (en) * 2018-01-12 2019-07-18 Futurewei Technologies, Inc. Adaptive multi-hypothesis context-adaptive binary arithmetic coding (mcabac)
US20230042018A1 (en) * 2020-02-12 2023-02-09 Google Llc Multi-context entropy coding for compression of graphs
EP4173292A4 (en) * 2020-06-25 2024-03-27 Ericsson Telefon Ab L M METHOD AND SYSTEM FOR IMAGE COMPRESSION AND CODING WITH DEEP LEARNING
US11681508B2 (en) * 2020-08-24 2023-06-20 Cisco Technology, Inc. Source code analysis to map analysis perspectives to events
EP4307683A1 (en) * 2021-03-17 2024-01-17 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Coefficient coding/decoding method, encoder, decoder, and computer storage medium
CN114039718B (zh) * 2021-10-18 2023-12-19 湖南遥昇通信技术有限公司 自适应加权概率模型的Hash编码方法以及系统
US11669281B1 (en) 2021-11-19 2023-06-06 Meta Platforms, Inc. Count circuit for symbol statistics
WO2023131250A1 (en) * 2022-01-08 2023-07-13 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2492394A (en) * 2011-06-30 2013-01-02 Canon Kk Image block encoding and decoding methods using symbol alphabet probabilistic distributions
US20130027230A1 (en) * 2010-04-13 2013-01-31 Detlev Marpe Entropy coding
EP3182705A2 (en) * 2015-12-18 2017-06-21 BlackBerry Limited Binarizer selection for image and video coding
CN106899848A (zh) * 2015-12-18 2017-06-27 黑莓有限公司 用于图像和视频编码的自适应二进制化器选择

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5357250A (en) * 1992-11-20 1994-10-18 International Business Machines Corporation Adaptive computation of symbol probabilities in n-ary strings
JP2840589B2 (ja) * 1996-02-09 1998-12-24 富士通株式会社 データ圧縮装置及びデータ復元装置
KR20020064786A (ko) * 2000-07-25 2002-08-09 코닌클리케 필립스 일렉트로닉스 엔.브이. 웨이블릿 분해를 사용하는 비디오 인코딩 방법
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7397973B2 (en) * 2004-02-27 2008-07-08 Mediatek Inc. Method for controlling interpolation direction and related device
US20070071090A1 (en) * 2005-06-21 2007-03-29 National Chiao Tung University Method for performing context adaptive binary arithmetic coding with stochastic bit reshuffling for fine granularity scalability
US7599840B2 (en) 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
GB0600141D0 (en) * 2006-01-05 2006-02-15 British Broadcasting Corp Scalable coding of video signals
KR100834757B1 (ko) * 2006-03-28 2008-06-05 삼성전자주식회사 엔트로피 부호화 효율을 향상시키는 방법 및 그 방법을이용한 비디오 인코더 및 비디오 디코더
US20070233477A1 (en) 2006-03-30 2007-10-04 Infima Ltd. Lossless Data Compression Using Adaptive Context Modeling
US8184712B2 (en) * 2006-04-30 2012-05-22 Hewlett-Packard Development Company, L.P. Robust and efficient compression/decompression providing for adjustable division of computational complexity between encoding/compression and decoding/decompression
US7233269B1 (en) * 2006-06-30 2007-06-19 International Business Machines Corporation Method and apparatus for constructing efficient codes for Wyner-Ziv video compression systems
KR100809301B1 (ko) * 2006-07-20 2008-03-04 삼성전자주식회사 엔트로피 부호화/복호화 방법 및 장치
CN102098517B (zh) * 2006-08-28 2014-05-07 汤姆森许可贸易公司 用于确定解码视频块中的期望失真的方法及设备
US7783123B2 (en) * 2006-09-25 2010-08-24 Hewlett-Packard Development Company, L.P. Method and system for denoising a noisy signal generated by an impulse channel
JP2008242034A (ja) * 2007-03-27 2008-10-09 Japan Aerospace Exploration Agency データ圧縮/伸張と暗号化/復号と誤り制御とを行う統合符号化及び復号装置、並びに方法
CN101282121B (zh) * 2007-04-05 2010-10-06 安凯(广州)微电子技术有限公司 一种基于条件概率的哈夫曼解码的方法
US8798137B2 (en) * 2008-02-29 2014-08-05 City University Of Hong Kong Bit rate estimation in data or video compression
US20110002554A1 (en) * 2009-06-11 2011-01-06 Motorola, Inc. Digital image compression by residual decimation
KR20120092095A (ko) * 2009-07-02 2012-08-20 톰슨 라이센싱 적응적 트리 선택을 사용한 이진 집합의 비디오 인코딩 및 디코딩을 위한 방법 및 장치
US8699565B2 (en) * 2009-08-27 2014-04-15 Hewlett-Packard Development Company, L.P. Method and system for mixed-resolution low-complexity information coding and a corresponding method and system for decoding coded information
US8942493B2 (en) 2009-11-02 2015-01-27 Panasonic Intellectual Property Corporation Of America Image coding method, image decoding method, image coding apparatus, and image decoding apparatus
US8487791B2 (en) 2010-02-18 2013-07-16 Research In Motion Limited Parallel entropy coding and decoding methods and devices
EP2362657B1 (en) * 2010-02-18 2013-04-24 Research In Motion Limited Parallel entropy coding and decoding methods and devices
US20110280314A1 (en) * 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
KR101682207B1 (ko) * 2010-08-23 2016-12-12 에스케이플래닛 주식회사 토큰 분리 및 번역 과정을 통합한 통합 디코딩 장치 및 그 방법
US8768080B2 (en) 2011-01-04 2014-07-01 Blackberry Limited Coding of residual data in predictive compression
CN102176750B (zh) * 2011-03-10 2012-12-26 西安电子科技大学 高性能自适应二进制算术编码器
US9164983B2 (en) * 2011-05-27 2015-10-20 Robert Bosch Gmbh Broad-coverage normalization system for social media language
CN102186087B (zh) * 2011-06-24 2013-06-12 哈尔滨工业大学 用于二进制算术编码可并行的非零系数上下文建模方法
US10390046B2 (en) * 2011-11-07 2019-08-20 Qualcomm Incorporated Coding significant coefficient information in transform skip mode
US9088796B2 (en) * 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
US20130121410A1 (en) * 2011-11-14 2013-05-16 Mediatek Inc. Method and Apparatus of Video Encoding with Partitioned Bitstream
US10085024B2 (en) * 2012-04-13 2018-09-25 Qualcomm Incorporated Lookup table for rate distortion optimized quantization
US9351003B2 (en) * 2013-09-27 2016-05-24 Apple Inc. Context re-mapping in CABAC encoder
US9179151B2 (en) * 2013-10-18 2015-11-03 Google Inc. Spatial proximity context entropy coding
JP6312312B2 (ja) * 2014-04-15 2018-04-18 日本放送協会 コンテキストモデル生成装置、符号化装置、および復号装置
US20150334425A1 (en) 2014-05-14 2015-11-19 Blackberry Limited Adaptive context initialization
US9641854B2 (en) * 2014-05-19 2017-05-02 Mediatek Inc. Count table maintenance apparatus for maintaining count table during processing of frame and related count table maintenance method
US10827178B2 (en) * 2014-05-28 2020-11-03 Arris Enterprises Llc Content aware scheduling in a HEVC decoder operating on a multi-core processor platform
US9918105B2 (en) * 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
CN106713935B (zh) * 2017-01-09 2019-06-11 杭州电子科技大学 一种基于贝叶斯决策的hevc块划分快速方法
US10735736B2 (en) * 2017-08-29 2020-08-04 Google Llc Selective mixing for entropy coding in video compression

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130027230A1 (en) * 2010-04-13 2013-01-31 Detlev Marpe Entropy coding
CN103119849A (zh) * 2010-04-13 2013-05-22 弗兰霍菲尔运输应用研究公司 概率区间分割编码器和译码器
GB2492394A (en) * 2011-06-30 2013-01-02 Canon Kk Image block encoding and decoding methods using symbol alphabet probabilistic distributions
EP3182705A2 (en) * 2015-12-18 2017-06-21 BlackBerry Limited Binarizer selection for image and video coding
CN106899848A (zh) * 2015-12-18 2017-06-27 黑莓有限公司 用于图像和视频编码的自适应二进制化器选择

Also Published As

Publication number Publication date
EP3677035A1 (en) 2020-07-08
JP2020522182A (ja) 2020-07-27
US10645389B2 (en) 2020-05-05
US20200228804A1 (en) 2020-07-16
CN110692243B (zh) 2022-08-23
EP3677027B1 (en) 2023-11-08
US20190068994A1 (en) 2019-02-28
EP3677027A1 (en) 2020-07-08
US11405618B2 (en) 2022-08-02
CN110771171B (zh) 2022-09-06
KR102314801B1 (ko) 2021-10-18
CN110692243A (zh) 2020-01-14
KR20200003888A (ko) 2020-01-10
US10735736B2 (en) 2020-08-04
US10887595B2 (en) 2021-01-05
US20210120249A1 (en) 2021-04-22
CN115514978B (zh) 2024-03-26
WO2019045798A1 (en) 2019-03-07
JP6923677B2 (ja) 2021-08-25
CN115514978A (zh) 2022-12-23
US10448019B2 (en) 2019-10-15
US20190068970A1 (en) 2019-02-28
US20190394467A1 (en) 2019-12-26
WO2019045797A1 (en) 2019-03-07

Similar Documents

Publication Publication Date Title
CN110771171B (zh) 选择性混合用于视频压缩中进行熵代码化的概率分布
US10834410B2 (en) Context modeling for intra-prediction modes
US11558619B2 (en) Adaptation of scan order for entropy coding
CN110710208B (zh) 嵌入关于eob位置的信息
CN110710219B (zh) 用于系数代码化的上下文推导的方法和设备
CN114556790A (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
GR01 Patent grant
GR01 Patent grant