CN117595884A - 用于熵编码的压缩概率表 - Google Patents
用于熵编码的压缩概率表 Download PDFInfo
- Publication number
- CN117595884A CN117595884A CN202310984402.9A CN202310984402A CN117595884A CN 117595884 A CN117595884 A CN 117595884A CN 202310984402 A CN202310984402 A CN 202310984402A CN 117595884 A CN117595884 A CN 117595884A
- Authority
- CN
- China
- Prior art keywords
- probability table
- context
- encoding
- entries
- frequency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007906 compression Methods 0.000 title description 8
- 230000006835 compression Effects 0.000 title description 8
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000015654 memory Effects 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 13
- 238000013144 data compression Methods 0.000 abstract description 13
- 238000009826 distribution Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 8
- 230000007423 decrease Effects 0.000 description 7
- 239000003550 marker Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6052—Synchronisation of encoder and decoder
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3079—Context modeling
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/28—Programmable structures, i.e. where the code converter contains apparatus which is operator-changeable to modify the conversion process
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
- H03M7/4062—Coding table adaptation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6058—Saving memory space in the encoder or decoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开提供了用于数据压缩的方法、设备和系统。本实施方式更具体地涉及用于压缩用于熵编码的概率表的编码技术。在一些方面中,熵编码器可以对概率表进行编码,使得一个或多个上下文由比原本将每个符号的频率表示为与这样的上下文相关联的所有符号的总频率的比例所需要的更少的比特来表示。例如,如果概率表的给定行(在编码之前)包括多个(M个)条目,每个条目具有由多个(K个)比特表示的二进制值,则相同的条目行可由编码概率表中的少于M*K个比特来表示。
Description
技术领域
本实施方式一般涉及数据压缩,并且具体地涉及压缩用于熵编码的概率表。
背景技术
数据压缩是用于将信息编码成(通常)较小的数据单元的技术。因此,数据压缩可用于减少在通信信道(诸如有线或无线介质)上存储或传输此类信息所需的带宽或开销。例如,编码器将信息编码或压缩为编码比特序列(也称为“码字”),并且解码器随后对码字进行解码或解压缩以恢复原始信息。数据压缩技术通常可分类为“有损”或“无损”。有损数据压缩可能导致在对此类信息进行编码和解码之间的一些信息损失。相反,由于使用无损数据压缩对此类信息进行编码或解码,所以没有信息丢失。
熵编码是基于每个符号的发生概率将数据值(或“符号”)编码成不同长度的码字的无损数据压缩的形式。例如,具有较高发生概率的数据符号可以被编码为比具有较低发生概率的数据符号更短的码字。许多熵编码技术(诸如算术编码或非对称数字系统)依赖于概率表来编码和解码数据符号。概率表描述与给定熵编码方案相关联的一组或多组数据符号的概率分布。因此,熵编码器可能需要将一个或多个概率表连同编码数据一起传输到熵解码器。
发明内容
提供本发明内容是为了以简化形式介绍将在以下具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在限制所要求保护的主题的范围。
本公开的主题的一个创新方面可在由编码器执行的方法中实现。该方法包括以下步骤:基于与概率表相关联的熵编码方案将多个数据符号分别编码为多个码字,该概率表包括多个(M个)条目,每个条目具有指示与第一上下文相关联的相应符号的频率的二进制值,M个条目中的每个条目的二进制值由多个(K个)比特表示;对概率表进行编码,使得M个条目在编码概率表中由少于M*K个比特表示;以及将多个码字和编码概率表发射到解码器。
本公开的主题的另一创新方面可在包括处理系统和存储器的编码器中实现。所述存储器存储指令,所述指令在由所述处理系统执行时使得所述编码器基于与概率表相关联的熵编码方案将多个数据符号分别编码为多个码字,所述概率表包括多个(M个)条目,每个条目具有指示与第一上下文相关联的相应符号的频率的二进制值,所述M个条目中的每个条目的二进制值由多个(K个)比特表示;对所述概率表进行编码,使得所述M个条目在所述编码概率表中由少于M*K个比特表示;以及将所述多个码字和所述编码概率表发射到解码器。
附图说明
本实施方式通过示例的方式示出并且不旨在受附图中的图的限制。
图1示出了用于对数据进行编码和解码的示例通信系统。
图2示出了与熵编码方案相关联的示例概率表。
图3示出了根据一些实施方式的示例熵编码系统的框图。
图4示出了根据一些实施方式的示例概率表编码器的框图。
图5示出了根据一些实施方式的示例编码概率表。
图6示出了根据一些实施方式的示例概率表编码器的另一框图。
图7示出了根据一些实施方式的另一示例编码概率表。
图8示出了根据一些实施方式的示例概率表编码器的另一框图。
图9示出了根据一些实施方式的另一示例编码概率表。
图10示出了根据一些实施方式的编码器的框图。
图11示出了描绘根据一些实施方式的用于数据编码的示例操作的说明性流程图。
具体实施方式
在以下描述中,阐述了许多具体细节(诸如特定部件、电路和进程的示例)以提供对本公开的透彻理解。如本文中所使用,术语“耦合”意指直接连接到或通过一个或多个中间部件或电路连接。术语“电子系统”和“电子设备”可互换地使用以指代能够电子地处理信息的任何系统。此外,在以下描述中并且出于解释的目的,阐述了具体命名以提供对本公开的方面的透彻理解。然而,对于本领域技术人员显而易见的是,可能不需要这些具体细节来实践示例实施例。在其他情况下,以框图形式示出了众所周知的电路和设备,以避免模糊本公开。以下详细描述的一些部分是根据对计算机存储器内的数据位的操作的过程、逻辑块、处理和其他符号表示来呈现的。
这些描述和表示是数据处理领域技术人员用来最有效地将其工作的实质传达给本领域技术人员的手段。在本公开中,过程、逻辑块、进程等被认为是导致期望结果的步骤或指令的自洽序列。这些步骤是需要物理量的物理操纵的那些步骤。通常,尽管不是必须的,这些量采用能够在计算机系统中存储、传送、组合、比较和以其他方式操纵的电或磁信号的形式。然而,应当记住,所有这些和类似术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。
除非特别说明,否则如从以下讨论中显而易见的,应当理解,在整个本申请中,利用诸如“访问”、“接收”、“发送”、“使用”、“选择”、“确定”、“归一化”、“相乘”、“平均”、“监测”、“比较”、“应用”、“更新”、“测量”、“导出”等术语的讨论是指计算机系统或类似电子计算设备的动作和进程,该计算机系统或类似电子计算设备将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和变换为类似地表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。
在附图中,单个块可以被描述为执行一个或多个功能;然而,在实际实践中,由该块执行的一个或多个功能可以在单个部件中或跨多个部件执行,和/或可以使用硬件、使用软件或使用硬件和软件的组合来执行。为了清楚地说明硬件和软件的这种可互换性,下面已经大致上就其功能性方面描述了各种说明性部件、块、模块、电路和步骤。这种功能性是否被实现为硬件或软件取决于施加在整个系统上的特定应用和设计约束。技术人员可以针对每个特定应用以不同的方式实现所描述的功能性,但是这样的实施方式决策不应被解释为导致脱离本公开的范围。此外,示例输入设备可以包括除了所示的那些之外的部件,包括诸如处理器、存储器等的公知部件。
除非明确描述为以特定方式实施,否则本文中所描述的技术可在硬件、软件、固件或其任何组合中实施。描述为模块或部件的任何特征也可在集成逻辑设备中一起实施,或单独实施为离散但可互操作的逻辑设备。如果在软件中实施,那么所述技术可至少部分地由包括指令的非暂时性处理器可读存储介质来实现,所述指令在被执行时执行上文所描述的方法中的一个或多个。非暂时性处理器可读数据存储介质可以形成计算机程序产品的一部分,计算机程序产品可以包括封装材料。
非暂时性处理器可读存储介质可以包括随机存取存储器(RAM),诸如同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、其他已知存储介质等。另外或替代地,所述技术可至少部分地由处理器可读通信介质来实现,所述处理器可读通信介质携载或传达呈指令或数据结构形式的代码且可由计算机或其它处理器存取、读取及/或执行。
结合本文公开的实施例描述的各种说明性逻辑块、模块、电路和指令可以由一个或多个处理器(或处理系统)执行。如本文所使用的术语“处理器”可以指能够执行存储在存储器中的一个或多个软件程序的脚本或指令的任何通用处理器、专用处理器、常规处理器、控制器、微控制器和/或状态机。
如上所述,许多熵编码技术(诸如算术编码或非对称数字系统)依赖于概率表来编码和解码数据符号。概率表的每一行指示相应符号子集(也称为“上下文”)的概率分布。更具体地,概率表的给定行中的每个条目指示与对应上下文相关联的相应符号的频率。因此,行中的所有条目之和指示与特定上下文相关联的所有符号的总频率。从编码器到解码器的概率表的传输消耗一些可用的信道带宽,这可能在资源受限的环境中产生瓶颈或以其他方式限制数据通信的吞吐量。本公开的各方面认识到,可以通过概率表的压缩来放宽熵编码系统的带宽要求。
各个方面一般涉及数据压缩,并且更具体地,涉及用于压缩用于熵编码的概率表的编码技术。在一些方面中,熵编码器可以对概率表进行编码,使得一个或多个上下文由比原本将每个符号的频率表示为与这样的上下文相关联的所有符号的总频率的比例所需要的更少的比特来表示。例如,如果概率表的给定行(在编码之前)包括多个(M个)条目,每个条目具有由多个(K个)比特表示的二进制值,则相同的条目行可由编码概率表中的少于M*K个比特来表示。在一些实施方式中,如果与上下文相关联的任何符号都不匹配要被熵编码的任何数据符号,则熵编码器可以避免对给定行中的任何条目进行编码。在一些其它实施方式中,当可从已编码的条目确定剩余(未编码)条目时,熵编码器可停止编码行内的个别条目。此外,在一些实施方式中,熵编码器可基于待编码条目的最大可能值动态地减少用于编码行内的连续条目的比特的数量。
可实现本公开中描述的主题的特定实施方式以实现以下潜在优点中的一个或多个。本公开的编码技术可以用于减小概率表的大小,而不损失解码所需的信息,从而允许在带宽受限的信道上传输更多的概率表(或数据)。例如,本公开的各方面认识到,一些概率表可以包括针对对给定数据集进行编码不相关(或以其他方式未使用)的一个或多个上下文的概率分布。因此,与任何未使用的上下文相关联的条目需要被传输到解码器。本公开的各方面还认识到,与任何给定上下文相关联的所有数据符号的总频率对于编码器和解码器两者都是已知的。这样,可以根据行中的剩余条目的值来确定每行中的至少一些条目的值。此外,本公开的各方面认识到,给定行内的每个剩余条目的最大可能值随着该行内的各个条目被连续地编码而减小。如此,也可减少表示此类条目所需的比特的总数。
图1示出了用于对数据进行编码和解码的示例通信系统100。通信系统100包括编码器110和解码器120。编码器110和解码器120可以设置在相应的通信设备中,诸如例如计算机、交换机、路由器、集线器、网关、相机、显示器或能够发射或接收通信信号的其他设备。
编码器110接收要经由信道130发射或存储的输入数据102。例如,信道130可以包括促进编码器110和解码器120之间的通信的有线或无线传输介质。替代地或另外地,信道130可以包括数据存储介质。在一些方面中,编码器110可以被配置为压缩输入数据102的大小以适应与信道130相关联的带宽、存储或其他资源限制。举例来说,编码器110可将输入数据102的每一单元编码为可经由信道130(作为编码数据104)发射或存储的相应“码字”。解码器120被配置为经由信道130接收编码数据104且将编码数据104解码为输出数据106。例如,解码器120可以解压缩或以其他方式反转由编码器110执行的压缩,使得输出数据106与原始输入数据102基本上相似(如果不相同)。
数据压缩技术通常可分类为“有损”或“无损”。有损数据压缩可能导致编码和解码步骤之间的一些信息丢失。因此,输出数据106可以不同于输入数据102。相反,无损数据压缩不会导致编码和解码步骤之间的任何信息丢失,只要信道130不会将错误引入编码数据104。作为无损压缩的结果,输出数据106与输入数据102相同。熵编码是基于每个数据符号的发生概率将数据值(或“符号”)编码成不同长度的码字的无损数据压缩的形式。例如,具有较高发生概率的数据符号可以被编码为比具有较低发生概率的数据符号更短的码字。除其它示例外,示例熵编码技术包括算术编码、霍夫曼编码和哥伦布编码。
许多熵编码技术(诸如算术编码或非对称数字系统)依赖于概率表来编码和解码数据符号。概率表的每一行指示相应符号子集(也称为“上下文”)的概率分布。更具体地,概率表的给定行中的每个条目指示与对应上下文相关联的相应符号的频率。因此,行中的所有条目之和指示与特定上下文相关联的所有符号的总频率。在一些方面中,编码器110可经由信道130发射或存储与编码数据104相关联的一个或多个概率表108。概率表108指示编码数据符号的概率分布,且可由解码器120使用以从编码数据104恢复输出数据106。
图2示出了与熵编码方案相关联的示例概率表200。概率表200包括按行和列排列的多个条目。更具体地,概率表200的每一行表示相应的上下文,并且概率表200的每一列表示相应的符号。为简单起见,图2中仅描绘概率表200的两个上下文210和220以及四个符号201-204。然而,概率表200可以包括任何数量的上下文和与每个上下文相关联的任何数量的符号。
概率表200的每一行中的条目指示与相应上下文210或220相关联的符号201-204的概率分布。例如,概率表200的第一(或顶部)行中的条目指示与第一上下文210相关联的符号201-204的概率分布。在图2的示例中,与第一上下文210相关联的第一符号201被示出为以等于4/8的概率发生;与第一上下文210相关联的第二符号202被示出为以等于2/8的概率发生;与第一上下文210相关联的第三符号203被示出为以等于1/8的概率发生;并且与第一上下文210相关联的第四符号204被示出为以等于1/8的概率发生。
概率表200的第二(或底部)行中的条目指示与第二上下文220相关联的符号201-204的概率分布。在图2的示例中,与第二上下文220相关联的第一符号201被示出为以等于2/8的概率发生;与第二上下文220相关联的第二符号202被示出为以等于2/8的概率发生;与第二上下文220相关联的第三符号203被示出为以等于2/8的概率发生;并且与第二上下文220相关联的第四符号204被示出为以等于2/8的概率发生。概率表200的每一行中的条目具有等于1的总发生概率。
如图2所示,概率表200中的每个条目是由分子和分母定义的比例(或概率值)。分子表示与给定上下文相关联的相应符号的频率,并且分母表示与上下文相关联的所有符号的总频率。因此,概率表200的同一行中的条目具有相同的分母。在一些实施方式中,与概率表200的每行(或上下文)相关联的分母可以是熵编码器(诸如图1的编码器110)和熵解码器(诸如图1的解码器120)已知的。因此,熵编码器可仅向熵解码器发射与概率表200的每个条目相关联的频率值(或分子)。
如上所述,概率表200从编码器到解码器的传输消耗一些可用的信道带宽,这可能在资源受限的环境中产生瓶颈或以其他方式限制数据通信的吞吐量。然而,本公开的各方面认识到,可以通过概率表200的压缩来放宽熵编码系统的带宽要求。在一些方面中,熵编码器可以基于编码器和解码器两者已知的一个或多个属性来压缩概率表200。例如,本公开的各方面认识到,一些概率表可以包括不用于对给定数据集进行编码或解码的一个或多个上下文。例如参考图1,输入数据102可以不包含与第二上下文220相关联的符号201–204中的任何符号匹配的任何数据符号。因此,第二上下文220可以被称为“未使用上下文”。
本公开的各方面还认识到,如果上下文用于对给定数据集进行编码或解码,则与上下文相关联的每个符号必须具有大于或等于最小频率(x)的频率,其中x对于熵编码器(诸如图1的编码器110)并且对于熵解码器(诸如图1的解码器120)是已知的。换句话说,如果输入数据102包含匹配与第一上下文210相关联的符号201-204中的一个或多个的一个或多个数据符号,则与第一上下文210相关联的符号201-204中的每个必须具有大于或等于x的频率。本公开的各方面进一步认识到,可被分配给与给定上下文内相关联的任何符号的最高概率取决于分配给与相同上下文相关联的其他符号的概率。例如,因为与第一上下文210相关联的第一符号201具有等于4/8的概率,所以与第一上下文相关联的剩余符号202-204中的每个必须具有小于或等于4/8的概率。
图3示出了根据一些实施方式的示例熵编码系统300的框图。熵编码系统300包括编码器310和解码器320。在一些实施方式中,编码器310和解码器320可以分别是图1的编码器110和解码器120的示例。因此,编码器310可以经由信道(诸如图1的信道130)通信地耦合到解码器320。
编码器310被配置为将用于传输的数据符号301(作为码字303)编码到解码器320。在一些方面中,编码器310可根据一个或多个熵编码技术来编码数据符号301。除了其他示例之外,示例合适的熵编码技术包括算术编码和非对称数字系统。因此,每个码字303的长度可以取决于给定数据集中的相应数据符号301的频率(或发生概率)而变化。解码器320被配置为对码字303进行解码以恢复解码的数据符号306。更具体地,解码器320被配置为反转由编码器310执行的编码,使得解码的数据符号306与原始数据符号301基本上相似(如果不相同的话)。
在一些实施方式中,编码器310可以包括熵编码部件312和概率表编码部件314。熵编码部件312被配置为压缩数据符号301以减小从编码器310到解码器320的数据传输的大小。在一些方面中,熵编码部件312可基于与概率表302相关联的熵编码方案将数据符号301编码为相应码字303。概率表302指示数据符号301的概率分布。在一些实施方式中,概率表302可以是概率表200的一个示例。因此,概率表302可以包括多个条目,每个条目指示与给定上下文相关联的相应符号的频率(或概率)。
概率表编码部件314被配置为将概率表302编码为编码概率表304,以传输到解码器320。例如,概率表编码部件314可以将概率表302的一个或多个条目编码为可以由比特序列表示的二进制值。在一些方面中,概率表编码部件314可以压缩概率表302,使得一个或多个上下文由比原本将每个符号的频率表示为与这样的上下文相关联的所有符号的总频率的比例所需要的更少的比特来表示。例如,如果概率表302的给定行包括多个(M个)条目,每个条目具有由多个(K个)比特表示的二进制值,则相同的条目行可由编码概率表304中的少于M*K个比特来表示。
在一些实施方式中,如果与上下文相关联的符号都不匹配由熵编码部件312编码的任何数据符号301,则概率表编码部件314可以避免对概率表302的给定行(或上下文)进行编码。在一些其它实施方式中,当可根据已编码的条目确定剩余(未编码)条目时,概率表编码部件314可停止对概率表302的给定行内的个别条目进行编码。此外,在一些实施方式中,概率表编码部件314可以基于要编码的条目的最大可能值来动态地减少用于对概率表302的给定行中的连续条目进行编码的比特的数量。
在一些实施方式中,解码器320可包括熵解码部件322和概率表解码部件324。熵解码部件322被配置为将码字303解码为解码的数据符号306。更具体地,熵解码部件322可以反转由熵编码部件312执行的压缩。在一些方面中,熵解码部件322可实现与熵编码部件312相同的熵编码方案。因此,熵解码部件322可能需要知道数据符号301的概率分布。在一些实施方式中,熵解码部件322可至少部分地基于从熵编码器310接收的编码概率表304确定数据符号301的概率分布。
概率表解码部件324被配置为对编码概率表304进行解码以恢复解码概率表305。更具体地,概率表解码部件324被配置为反转由概率表编码部件314执行的编码,使得解码概率表305与原始概率表302基本上相似(如果不相同的话)。在一些实施方式中,概率表解码部件324可基于编码概率表304中包含的其它条目的值确定编码概率表304中的一个或多个遗失或省略的条目的值。在一些其它实施方式中,概率表解码部件324可基于包括在编码概率表304中的其它条目的二进制值解译与编码概率表304中的一个或多个条目相关联的比特。
图4示出了根据一些实施方式的示例概率表编码器400的框图。概率表编码器400被配置为将与概率表(诸如图2的上下文210和220)相关联的每个上下文402编码为相应的编码上下文406。在一些实施方式中,概率表编码器400可为图3的概率表编码部件314的一个示例。例如参考图3,上下文402可以表示概率表302的第n行,并且编码上下文406可以表示编码概率表304的第n行。
在一些实施方式中,概率表编码器400可以包括上下文标记器410和频率编码器420。上下文标记器410被配置为用相应的上下文指示符来标记每个上下文402,该上下文指示符指示上下文402是否被用于(或未用于)对给定的一组数据符号401进行编码。例如,上下文标记器410可以通过将上下文指示符添加或附加到相关联的上下文402来产生标记的上下文404。在一些方面中,数据符号401可以是图3的数据符号301的一个示例。在一些实施方式中,上下文标记器410可以包括未使用的上下文检测部件412,其将每个数据符号401与和给定上下文402相关联的每个符号进行比较,以确定任何数据符号401是否匹配与上下文402相关联的任何符号。
如果未使用的上下文检测部件412确定数据符号401中的至少一个匹配与上下文402相关联的符号中的至少一个,那么上下文标记器410可将上下文402标记为“已使用”。例如,标记的上下文404可以包括具有设置为1(或0)的值的上下文指示符(诸如单个比特)。另一方面,如果未使用的上下文检测部件412确定没有数据符号401匹配与上下文402相关联的任何符号,则上下文标记器410可以将上下文402标记为“未使用”。
频率编码器420被配置为将标记的上下文404编码为编码的上下文406。在一些实施方式中,频率编码器420可以至少部分地基于被包括在标记的上下文404中的上下文指示符来选择性地编码与上下文402相关联的每个符号的频率。例如,如果上下文指示符指示上下文402用于对数据符号401的编码,则频率编码器420可以将与上下文402相关联的每个符号的频率编码为相应的二进制值。另一方面,如果上下文指示符指示上下文402未被使用,则频率编码器402可以避免对与上下文402相关联的任何符号的频率进行编码。在一些实施方式中,编码上下文406可包括与标记的上下文404相关联的上下文指示符。
图5示出了根据一些实施方式的示例编码概率表500。编码概率表500的每一行表示相应上下文510或520。编码概率表500的每一行中的条目指示与相应上下文510或520相关联的一组符号501-504的概率分布。
在上下文510和520中的每个内,符号501-504具有等于8(y=8)的总频率(y),并且可以被分配给符号501-504中的任何符号的最小频率(x)等于1(x=1),其中x和y对于编码器(诸如图3的编码器310)和解码器(诸如图3的解码器320)是已知的。在一些方面中,最小频率(x=1)可由可在编码概率表500中编码的最小二进制值(“000”)表示。在一些实施方式中,编码概率表500可以是图2的概率表200的编码表示。例如参考图2,上下文510和520可以分别是上下文210和220的示例,并且符号501-504可以分别是符号201-204的示例。在一些实施方式中,编码概率表500可进一步包括与上下文510和520中的每个相关联的相应上下文指示符505。
在一些实施方式中,上下文指示符505可指示上下文510或520中的每个是否被用于对给定数据符号集合(诸如分别图3和4的数据符号301或401中的任何)进行编码(或解码)。在图5的示例中,上下文指示符值“1”指示相应上下文为“使用的”且上下文指示符值“0”指示相应上下文为“未使用的”。
例如参考图4,上下文标记器410可以将上下文指示符505附加到概率表200,并且频率编码器420可以将上下文指示符505编码到编码概率表500中。在一些实施方式中,仅当使用上下文时,频率编码器420可以进一步编码与给定上下文相关联的每个符号的频率。换句话说,频率编码器420可以不对与未使用的上下文相关联的任何符号的频率进行编码。
如图5所示,上下文指示符505指示第一上下文510用于编码而第二上下文520未使用。因此,频率编码器420可以对与第一上下文510相关联的符号501-504中的每个符号的频率进行编码,但是可以避免对与第二上下文520相关联的符号501-504中的任何符号的频率进行编码。例如,与第一上下文510相关联的第一符号501的频率(4)被编码为二进制值“011”;与第一上下文510相关联的第二符号502的频率(2)被编码为二进制值“001”;与第一上下文510相关联的第三符号503的频率(1)被编码为二进制值“000”;并且与第一上下文510相关联的第四符号504的频率(1)被编码为编码概率表500中的二进制值“000”。相比之下,编码概率表500不包括与第二上下文520相关联的任何符号501-504的频率。
在一些方面中,上下文指示符505可以向解码器(诸如图3的解码器320)发信号通知上下文510或520中的哪些具有与解码数据符号集合相关的信息。例如参考图3,概率表解码部件324可以基于与其相关联的上下文指示符505的值(1)来确定上下文510被用于解码。结果,概率表解码部件324可以继续对编码概率表500的第一行中的剩余条目进行解码,以确定与第一上下文相关联的符号501-504的概率分布。概率表解码部件324还可基于与其相关联的上下文指示符505的值(0)确定上下文420未被使用。因此,概率表解码部件324可跳到概率表500的下一行或上下文(为简单起见未示出)。
图6示出了根据一些实施方式的示例概率表编码器600的另一框图。概率表编码器600被配置为将与概率表(诸如图2的上下文210和220)的给定上下文相关联的每个频率值602编码为相应编码频率值604。在一些实施方式中,概率表编码器600可为图3的概率表编码部件314的一个示例。例如参考图3,频率值602可以表示概率表302的第n行中的条目,并且编码频率值604可以表示编码概率表304的第n行中的条目。
在一些实施方式中,概率表编码器600可以包括二进制编码器610、积分器620和最大频率计算器630。二进制编码器610被配置为将每一频率值602编码为跨越与可分配给与给定上下文相关联的相应符号的最大频率608相关联的多个(N个)比特的相应的编码频率值604(诸如二进制值)。例如参考图2,与第一上下文210相关联的符号201-204的总频率等于8,并且与第一上下文210相关联的符号201-204中的每个必须具有大于或等于1的频率。因此,可以分配给与第一上下文210相关联的符号201-204中的任何的最大频率等于5。
表1示出了可以用于表示达到最大值8(假设最小频率等于1)的任何频率值的示例二进制值。在表1的示例中,最小二进制值(“000”)被设置为可以被分配给与给定上下文相关联的符号中的任何的最小频率(1)。如表1所示,需要至少3个比特来编码等于5的二进制值(“100”)。因此,与第一上下文210相关联的编码频率值604中的至少一个可以跨越3比特(N=3)
表1
本公开的各方面认识到,随着频率值602被编码,可被分配给与给定上下文相关联的任何剩余符号的最大频率608减小。例如参考图2,在对与第一上下文210相关联的第一符号201的频率(4)进行编码之后,可以被分配给与第一上下文210相关联的剩余符号202-204中的任何的最大频率必须小于或等于4(因为总频率等于8)。更一般地,可以被分配给要针对给定上下文编码的第m个符号(zm)的最大频率(fmax)可以确定被确定为与上下文相关联的符号的总数(M)、与上下文相关联的符号的总频率(y)、以及可以被分配给与上下文相关联的任何符号的最小频率(x)(对于1≤m≤M)的函数,其中f(zi)是个i个符号的频率:
积分器620对与给定上下文相关联的编码频率值604进行积分,以产生已经针对上下文编码的频率的和606。最大频率计算器630被配置为基于由积分器620产生的和606来确定可以被分配给当前频率值602的最大频率608。例如,最大频率计算器630可以根据上述等式1计算最大频率608。在一些方面中,二进制编码器610可以至少部分地基于最大频率608来动态地减少用于对每个连续频率值602进行编码的比特的数量N。
如表1所示,频率1-4分别与二进制值000-011相关联,以支持高达8的最大频率608。本公开的各方面认识到,首位的“0”在二进制值000、001、010和011中的每个中是冗余的。换句话说,频率1-4可以仅由2个比特(诸如00、01、10和11)唯一地表示,以支持高达4的最大频率608。类似地,频率1和2可以仅由1个比特(诸如0和1)唯一地表示以支持高达2的最大频率608。在一些实施方式中,二进制编码器610可在最大频率608减半时(诸如当最大频率608从8减小到4时或当最大频率608从4减小到2时)减少比特的数量N(减少1)。更一般地,用于对与给定上下文相关联的第m个符号(zm)的频率进行编码的比特的数量N可以表示为:
图7示出了根据一些实施方式的另一示例编码概率表700。编码概率表700包括按行和列排列的多个条目。编码概率表700的每一行中的条目指示与相应上下文710或720相关联的一组符号701-704的概率分布。
在上下文710和720中的每个内,符号701-704具有等于8的总频率(y)(y=8),并且可以被分配给符号701-704中的任何符号的最小频率(x)等于1(x=1),其中x和y对于编码器(诸如图3的编码器310)并且对于解码器(诸如图3的解码器320)是已知的。在一些实施方式中,编码概率表700可以是图2的概率表200的编码表示。例如参考图2,上下文710和720可以分别是上下文210和220的示例,并且符号701-704可以分别是符号201-204的示例。如图7所示,与上下文710和720中的每个相关联的符号701-704的频率被编码有变化的比特数。在一些实施方式中,编码可以由图6的概率表编码器600执行。
例如参考图2,概率表编码器600最初可以接收与第一上下文210相关联的第一符号201的频率值(4)。因为尚未针对第一上下文210编码频率值,所以可分配给与第一上下文210相关联的符号(201-204)中的任何的最大频率608等于5(因为符号201-204中的每个必须具有大于或等于1的频率且这些频率的和必须等于8)。根据上述方程式2,需要3个比特(N=3)来编码当前频率值(4)。例如参考表1,概率表编码器600可以将二进制值“011”编码为与编码概率表700中的第一上下文710相关联的第一符号701的频率。
概率表编码器600随后接收与第一上下文210相关联的第二符号202的频率值(2)。此时,可分配给与第一上下文210相关联的剩余符号(202-204)中的任何的最大频率608等于2(因为符号202-204中的每个必须具有大于或等于1的频率且这些频率的和必须等于4)。根据上述方程式2,仅需要1个比特(N=1)来编码当前频率值(2)。例如参考表1,概率表编码器600可以将二进制值“1”编码为与编码概率表700中的第一上下文710相关联的第二符号702的频率。
概率表编码器600随后接收与第一上下文210相关联的第三符号203的频率值(1)。此时,可以被分配给与第一上下文210相关联的任何剩余符号(203和204)的最大频率608等于1(因为符号203和204中的每个必须具有大于或等于1的频率,并且这些频率的和必须等于2)。根据上述方程式2,不需要比特(N=0)来编码当前频率值(1)。在一些实施方式中,概率表编码器600可以避免对与第一上下文710相关联的第三符号703的频率进行编码(因为该频率是确定性的)。在一些其它实施方式中,概率表编码器600可使用至少一个比特(诸如图7所示)来编码与给定上下文相关联的每一符号的频率。例如参考表1,概率表编码器600可以将二进制值“0”编码为与编码概率表700中的第一上下文710相关联的第三符号703的频率。
概率表编码器600随后接收与第一上下文210相关联的第四符号204的频率值(1)。此时,可以被分配给与第一上下文210相关联的最后剩余符号(204)的最大频率608等于1。根据上述方程式2,不需要比特(N=0)来编码当前频率值(1)。在一些实施方式中,概率表编码器600可以避免对与第一上下文710相关联的第四符号704的频率进行编码(因为该频率是确定性的)。在一些其它实施方式中,概率表编码器600可使用至少一个比特(诸如图7所示)来编码与给定上下文相关联的每一符号的频率。例如参考表1,概率表编码器600可以将二进制值“0”编码为与编码概率表700中的第一上下文710相关联的第四符号704。
当编码第二上下文220时,概率表编码器600可以最初接收第一符号201的频率值(2)。因为尚未针对第二上下文220编码频率值,所以可分配给与第二上下文220相关联的符号(201-204)中的任何的最大频率608等于5(因为符号201-204中的每个必须具有大于或等于1的频率且这些频率的和必须等于8)。根据上述方程式2,需要3个比特(N=3)来编码当前频率值(2)。例如参考表1,概率表编码器600可以将二进制值“001”编码为与编码概率表700中的第二上下文720相关联的第一符号701的频率。
概率表编码器600随后接收与第二上下文220相关联的第二符号202的频率值(2)。此时,可分配给与第二上下文220相关联的剩余符号(202-204)中的任何的最大频率608等于4(因为符号202-204中的每个必须具有大于或等于1的频率且这些频率的和必须等于6)。根据上述方程式2,仅需要2个比特(N=2)来编码当前频率值(2)。例如参考表1,概率表编码器600可以将二进制值“01”编码为与编码概率表700中的第二上下文720相关联的第二符号702的频率。
概率表编码器600随后接收与第二上下文220相关联的第三符号203的频率值(2)。此时,可分配给与第二上下文220相关联的剩余符号(203和204)中的任何的最大频率608等于3(因为符号201-204中的每个必须具有大于或等于1的频率且这些频率的和必须等于4)。根据上述方程式2,仍需要2个比特(N=2)来编码当前频率值(2)。例如参考表1,概率表编码器600可以将二进制值“01”编码为与编码概率表700中的第二上下文720相关联的第三符号703的频率。
概率表编码器600随后接收与第二上下文220相关联的第四符号204的频率值(2)。此时,可以被分配给与第二上下文220相关联的最后剩余符号(204)的最大频率608等于2。根据上述方程式2,仅需要1个比特(N=1)来编码当前频率值(2)。例如参考表1,概率表编码器600可以将二进制值“1”编码为与编码概率表700中的第二上下文720相关联的第四符号704。
在一些方面中,解码器(诸如图3的解码器320)可以以其中它们被编码的相同顺序来解码与上下文710和720中的每个相关联的符号701-704。这样,解码器可以基于与概率表编码器600相同或相似的过程来确定编码概率表700中的每个条目的长度(或比特数N)。例如,解码器知道与第一上下文710相关联的符号701-704的总频率等于8,并且可以分配给与第一上下文710相关联的每个符号701-704的最小频率等于1。因此,解码器可确定可分配给与第一上下文710相关联的第一符号701的最大频率等于5。因此,第一符号701的频率必须被编码为与第一上下文710相关联的前3个比特。
在恢复第一符号701的频率(4)之后,解码器知道可以分配给第二符号702的最大频率等于2(基于由编码器600执行的相同计算)。因此,必须仅使用与第一上下文710相关联的后续比特来编码第二符号702的频率。解码器可以此方式继续解码编码概率表700,直到与上下文210和220中的每个相关联的符号201-204中的每个的频率已恢复为止。
图8示出了根据一些实施方式的示例概率表编码器800的另一框图。概率表编码器800被配置为将与概率表的给定上下文(诸如图2的上下文210和220)相关联的每一频率值802编码为相应编码频率值804。在一些实施方式中,概率表编码器800可为图3的概率表编码部件314的一个示例。例如参考图3,频率值802可以表示概率表302的第n行中的条目,并且编码频率值804可以表示编码概率表304的第n行中的条目。
在一些实施方式中,概率表编码器800可以包括二进制编码器810、积分器820和确定性频率检测器830。二进制编码器810被配置为将每个频率值802编码为相应的编码频率值804(诸如二进制值)。本公开的各方面认识到,随着频率值802被编码,可被分配给与给定上下文相关联的剩余符号的频率范围减小。例如参考图2,在对与第一上下文210相关联的第一符号201的频率(4)进行编码之后,剩余符号202-204的频率必须和为4,并且剩余符号202-204中的每个必须具有大于或等于1的频率。因此,与每个上下文相关联的符号中的至少一个符号将具有至少部分地基于已经针对上下文编码的频率的和的确定性频率。
积分器820对与给定上下文相关联的编码频率值804进行积分,以产生已经针对上下文编码的频率的和806。确定性频率检测器830被配置为基于由积分器820产生的和806来确定与当前上下文相关联的剩余(未编码的)频率值802是否是确定性的。在一些实施方式中,如果与当前上下文相关联的剩余符号的数量(L)乘以可以被分配给与上下文相关联的每个符号的最小频率(x)等于可以被分配用于上下文的剩余频率(其中剩余频率等于与上下文相关联的总频率减去已经针对上下文编码的频率的和806),则确定性频率检测器830可以确定当前频率值802是确定性的。在一些其它实施方式中,当存在与当前上下文相关联的仅一个剩余符号(L=1)时,确定性频率检测器830可确定当前频率值802是确定性的。
例如参考图2,在对与第一上下文210相关联的前两个符号201和202进行编码之后,剩余频率等于2。因为剩余符号的数量(L=2)乘以可以被分配给每个符号的最小频率(x=1)等于针对第一上下文210的剩余频率(2),所以与第一上下文210相关联的最后两个符号203和204具有确定性频率。更具体地,符号203和204中的每个必须具有等于1的频率。另一方面,在对与第二上下文220相关联的前三个符号201-203进行编码之后,剩余频率等于2。因为仅存在与第二上下文220相关联的一个剩余符号(L=1),所以剩余符号204必须具有等于2的频率。因此,确定性频率检测器830可以确定与第二上下文220相关联的最后的符号204具有确定性频率。
在一些方面中,确定性频率检测器830可以控制二进制编码器810对频率值802的编码。例如,当与上下文相关联的剩余符号被确定为具有确定性频率时,确定性频率检测器830可以断言(assert)(或解除断言(de-assert))控制信号808。在接收到断言的(或解除断言的)控制信号808时,二进制编码器810可避免对与当前上下文相关联的剩余频率值802进行编码。在一些实施方式中,二进制编码器810可以恢复从与概率表的下一上下文相关联的第一符号开始的频率值802的编码。
图9示出了根据一些实施方式的另一示例编码概率表900。编码概率表900包括按行和列排列的多个条目。编码概率表900的每一行中的条目指示与相应上下文910或920相关联的一组符号901-904的概率分布。
在上下文910和920中的每个内,符号901-904具有等于8(y=8)的总频率(y),并且可以被分配给符号901-904中的任何符号的最小频率(x)等于1(x=1),其中x和y对于编码器(诸如图3的编码器310)并且对于解码器(诸如图3的解码器320)是已知的。在一些实施方式中,编码概率表900可以是图2的概率表200的编码表示。例如参考图2,上下文910和920可以分别是上下文210和220的示例,并且符号901-904可以分别是上下文201-204的示例。如图9所示,与第一上下文910相关联的第三符号903和第四符号904的频率从编码概率表900中省略,并且与第二上下文920相关联的第四符号904的频率也从编码概率表900中省略。在一些实施方式中,编码可以由图8的概率表编码器800执行。
例如参考图2,概率表编码器800最初可以接收与第一上下文210相关联的第一符号201的频率值(4)。因为尚未针对第一上下文210编码频率值,所以概率表编码器800可至少对编码概率表900中的当前频率值(4)进行编码。例如参考表1,概率表编码器800可以将二进制值“011”编码为与编码概率表900中的第一上下文910相关联的第一符号901的频率。
概率表编码器800随后接收与第一上下文210相关联的第二符号202的频率值(2)。此时,存在多于一个与第一上下文210相关联的剩余符号(L>1),并且总剩余频率不同于剩余符号的数量(L≠4)。因此,概率表编码器800还可以对编码概率表900中的当前频率值(2)进行编码。例如参考表1,概率表编码器800可以将二进制值“001”编码为与编码概率表900中的第一上下文910相关联的第二符号902的频率。
概率表编码器800随后接收与第一上下文210相关联的第三符号203的频率值(1)。此时,仍然存在多于一个与第一上下文210相关联的剩余符号(L>1),但是总剩余频率等于剩余符号的数量(L=2)。因此,概率表编码器800可以不在编码概率表900中编码与第一上下文910相关联的当前频率值(1)或任何剩余频率值(诸如第四符号904的频率)。结果,从编码概率表900中省略了与第一上下文910相关联的第三符号903和第四符号904的频率。
当编码第二上下文220时,概率表编码器800可以最初接收第一符号201的频率值(2)。因为尚未针对第二上下文220编码频率值,所以概率表编码器800可至少对编码概率表900中的当前频率值(2)进行编码。例如参考表1,概率表编码器800可以将二进制值“001”编码为与编码概率表900中的第二上下文920相关联的第一符号901的频率。
概率表编码器800随后接收与第二上下文220相关联的第二符号202的频率值(2)。此时,存在多于一个与第二上下文220相关联的剩余符号(L>1),并且总剩余频率不同于剩余符号的数量(L≠6)。因此,概率表编码器800还可以对编码概率表900中的当前频率值(2)进行编码。例如参考表1,概率表编码器800可以将二进制值“001”编码为与编码概率表900中的第二上下文920相关联的第二符号902的频率。
概率表编码器800随后接收与第二上下文220相关联的第三符号203的频率值(2)。此时,仍然存在与第二上下文220相关联的多于一个剩余符号(L>1),并且总剩余频率仍然不同于剩余符号的数量(L≠4)。因此,概率表编码器800还可以对编码概率表900中的当前频率值(2)进行编码。例如参考表1,概率表编码器800可以将二进制值“001”编码为与编码概率表900中的第二上下文920相关联的第三符号903的频率。
概率表编码器800随后接收与第二上下文220相关联的第四符号203的频率值(2)。此时,总剩余频率仍然不同于剩余符号的数量(L≠2),但是仅存在与第一上下文210相关联的一个剩余符号(L=1)。因此,概率表编码器800可以不对编码概率表900中的当前频率值(2)进行编码。结果,从编码概率表900中省略了与第二上下文920相关联的第四符号904的频率。
在一些方面中,解码器(诸如图3的解码器320)可以以其中它们被编码的相同顺序来解码与上下文910和920中的每个相关联的符号901-904。因此,解码器可基于与概率表编码器800相同或类似的过程恢复在编码概率表900中省略的频率值。例如,解码器知道与上下文910和920中的每个相关联的总频率等于8。解码器还知道任何符号的频率必须大于或等于1。
因此,在恢复与第一上下文910相关联的前两个符号901和902的频率之后,解码器知道与第一上下文910相关联的剩余符号903和904中的每个必须具有等于1的频率。此外,在恢复与第二上下文920相关联的前三个符号901-903的频率之后,解码器知道与第二上下文920相关联的最后剩余符号904必须具有等于2的频率。
图4、图6和图8的示例概率表编码器400、600和800分别被描述为图3的概率表编码部件314的单独实施方式。然而,在实际实施方式中,概率表编码部件314可以实现概率表编码器400、600或800的任何组合以实现概率表的更大的压缩。例如,概率表编码部件314可以单独地或组合地执行概率表编码器400、600或800中的一个或多个的编码技术,以将概率表302编码为编码概率表304。
图10示出了根据一些实施方式的编码器1000的框图。编码器1000可以分别是图1和3的编码器110或310中的任何一个的一个示例。更具体地,编码器1000可以被配置为根据熵编码方案对数据符号进行编码,并且进一步压缩与熵编码方案相关联的概率表,以用于经由信道(为简单起见未示出)进行存储或传输。
在一些实施方式中,编码器1000可以包括数据接口1010、处理系统1020和存储器1030。数据接口1010被配置为接收数据符号并输出与数据符号相关联的编码码字和概率表。在一些方面中,数据接口1010可以包括数据源接口(I/F)1012和信道接口1014。数据源接口1012被配置为与耦合到编码器1000或以其他方式与编码器1000相关联的数据源进行通信。信道接口1014被配置为通过信道与解码器(为简单起见未示出)进行通信。例如,信道接口1014可以经由信道将码字和编码概率表发射到解码器。
存储器1030可包括被配置为存储数据符号并与编码操作相关联的任何中间数据的数据缓冲器1032。存储器1030还可以包括可以存储至少以下软件(SW)模块的非暂时性计算机可读介质(包括一个或多个非易失性存储器元件,诸如EPROM、EEPROM、闪存、硬盘驱动器等):
·熵编码SW模块1034,用于基于与概率表相关联的熵编码方案将多个数据符号分别编码为多个码字,所述概率表包括多个(M个)条目,每个条目具有指示与第一上下文相关联的相应符号的频率的二进制值,其中所述M个条目中的每个条目的二进制值由多个(K个)比特表示;以及
·概率表编码SW模块1036,用于编码概率表,使得M个条目在编码概率表中由少于M*K个比特表示。
每个软件模块包括在由处理系统1020执行时使编码器1000执行对应功能的指令。
处理系统1020可以包括能够执行存储在编码器1000中(诸如在存储器1030中)的一个或多个软件程序的脚本或指令的任何合适的一个或多个处理器。例如,处理系统1020可以执行熵编码SW模块1034,以基于与概率表相关联的熵编码方案将多个数据符号分别编码为多个码字,该概率表包括多个(M个)条目,每个条目具有指示与第一上下文相关联的相应符号的频率的二进制值,其中M个条目中的每个条目的二进制值由多个(K个)比特表示。处理系统1020还可以执行概率表编码SW模块1036以对概率表进行编码,使得M个条目在编码概率表中由少于M*K个比特表示。
图11示出了描绘根据一些实施方式的用于数据编码的示例操作1100的说明性流程图。在一些实施方式中,示例操作1100可以分别由诸如图1和3的编码器110或310中的任何的编码器执行。
编码器可以基于与概率表相关联的熵编码方案将多个数据符号分别编码为多个码字,该概率表包括多个(M个)条目,每个条目具有指示与第一上下文相关联的相应符号的频率的二进制值,其中M个条目中的每个的二进制值由多个(K个)比特表示(1110)。编码器还可以对概率表进行编码,使得M个条目在编码概率表中由少于M*K个比特表示(1120)。编码器还可以将多个码字和编码概率表发射到解码器(1130)。
在一些方面中,编码概率表可以包括第一上下文指示符,其指示与第一上下文相关联的符号中没有一个与多个数据符号中的任何匹配。在一些实施方式中,可以从编码概率表中省略M个条目。在一些方面中,编码概率表还可以包括多个(N)个条目,每个条目指示与第二上下文相关联的相应符号的频率。在一些实施方式中,编码概率表还可以包括第二上下文指示符,其指示与第二上下文相关联的一个或多个符号与多个数据符号中的一个或多个匹配。
在一些其它方面中,M个条目中的多个(L个)条目可从编码概率表中省略,且剩余M-L个条目包括在编码概率表中。在一些实施方式中,L个省略的条目可具有与包括在编码概率表中的M-L个条目相关联的确定性值。在一些实施方式中,L可等于M个条目之和与包括在编码概率表中的M-L个条目之和之间的差。此外,在一些方面中,所述M个条目中的第一条目可由所述编码概率表中的比所述M个条目中的在所述第一条目之前编码的每一条目少的比特来表示。在一些实施方式中,概率表的编码可以包括动态地减少用于编码M个条目中的连续条目的比特的数量。
本领域技术人员将理解,可以使用各种不同的技术和技艺中的任一种来表示信息和信号。例如,可能在整个以上描述中涉及的数据、指令、命令、信息、信号、比特、符号和码片可以由电压、电流、电磁波、磁场或粒子、光场或粒子、或其任何组合来表示。
此外,所属领域的技术人员将了解,结合本文中所公开的方面描述的各种说明性逻辑块、模块、电路及算法步骤可时限为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,上面已经总体上在其功能性方面描述了各种说明性部件、块、模块、电路和步骤。这种功能性是被实现为硬件或软件取决于施加在整个系统上的特定应用和设计约束。技术人员可以针对每个特定应用以不同的方式实现所描述的功能性,但是这样的实施方式决策不应被解释为导致脱离本公开的范围。
结合本文公开的方面描述的方法、序列或算法可以直接体现在硬件中、由处理器执行的软件模块中、或两者的组合中。软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM或本领域已知的任何其他形式的存储介质中。示例性存储介质耦合到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。在替代方案中,存储介质可以集成到处理器。
在前述说明书中,已经参考其具体示例描述了实施例。然而,显而易见的是,在不脱离如所附权利要求中阐述的本公开的更广泛范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被视为是说明性的而不是限制性的。
Claims (20)
1.一种数据编码的方法,包括:
基于与概率表相关联的熵编码方案将多个数据符号分别编码为多个码字,所述概率表包括多个(M个)条目,每个条目具有指示与第一上下文相关联的相应符号的频率的二进制值,所述M个条目中的每个条目的所述二进制值由多个(K个)比特表示;
对所述概率表进行编码,使得所述M个条目在编码概率表中由少于M*K个比特表示;以及
将所述多个码字和所述编码概率表发射到解码器。
2.根据权利要求1所述的方法,其中所述编码概率表包括第一上下文指示符,所述第一上下文指示符指示与所述第一上下文相关联的所述符号中没有一个与所述多个数据符号中的任何匹配。
3.根据权利要求2所述的方法,其中从所述编码概率表中省略所述M个条目。
4.根据权利要求2所述的方法,其中所述编码概率表还包括多个(N个)条目,每个条目指示与第二上下文相关联的相应符号的频率。
5.根据权利要求4所述的方法,其中所述编码概率表还包括第二上下文指示符,所述第二上下文指示符指示与所述第二上下文相关联的所述符号中的一个或多个符号与所述多个数据符号中的一个或多个数据符号相匹配。
6.根据权利要求1所述的方法,其中所述M个条目中的第一条目由所述编码概率表中的比所述M个条目中的在所述第一条目之前编码的每个条目少的比特来表示。
7.根据权利要求1所述的方法,其中从所述编码概率表中省略所述M个条目中的多个(L个)条目,且剩余的M-L个条目包括在所述编码概率表中。
8.根据权利要求7所述的方法,其中L个省略条目具有与包括在所述编码概率表中的所述M-L个条目相关联的确定性值。
9.根据权利要求7所述的方法,其中L乘以与所述M个条目中的每个相关联的最小频率等于所述M个条目之和与包括在所述编码概率表中的所述M-L个条目之和之间的差。
10.根据权利要求1所述的方法,其中所述概率表的编码包括:
动态地减少用于编码M个条目中的连续条目的比特数。
11.一种编码器,包括:
处理系统;以及
存储指令的存储器,所述指令在由所述处理系统执行时使所述编码器:
基于与概率表相关联的熵编码方案将多个数据符号分别编码为多个码字,所述概率表包括多个(M个)条目,每个条目具有指示与第一上下文相关联的相应符号的频率的二进制值,所述M个条目中的每个条目的所述二进制值由多个(K个)比特表示;
对所述概率表进行编码,使得所述M个条目在编码概率表中由少于M*K个比特表示;以及
将所述多个码字和所述编码概率表发射到解码器。
12.根据权利要求11所述的编码器,其中所述编码概率表包括第一上下文指示符,所述第一上下文指示符指示与所述第一上下文相关联的所述符号中没有一个与所述多个数据符号中的任何匹配。
13.根据权利要求12所述的编码器,其中从所述编码概率表中省略所述M个条目。
14.根据权利要求12所述的编码器,其中所述编码概率表包括多个(N个)条目,每个条目指示与第二上下文相关联的相应符号的频率。
15.根据权利要求14所述的编码器,其中所述编码概率表还包括第二上下文指示符,所述第二上下文指示符指示与所述第二上下文相关联的所述符号中的一个或多个符号与所述多个数据符号中的一个或多个数据符号相匹配。
16.根据权利要求11所述的编码器,其中所述M个条目中的第一条目由所述编码概率表中的比所述M个条目中的在所述第一条目之前编码的每个条目少的比特来表示。
17.根据权利要求11所述的编码器,其中从所述编码概率表中省略所述M个条目中的多个(L个)条目,且剩余的M-L个条目包括在所述编码概率表中。
18.根据权利要求17所述的编码器,其中L个省略条目具有与包括在所述编码概率表中的所述M-L个条目相关联的确定性值。
19.根据权利要求17所述的编码器,其中L乘以与所述M个条目中的每个相关联的最小频率等于所述M个条目之和与包括在所述编码概率表中的所述M-L个条目之和之间的差。
20.根据权利要求11所述的编码器,其中所述概率表的编码包括:
动态地减少用于编码所述M个条目中的连续条目的比特数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/818533 | 2022-08-09 | ||
US17/818,533 US12034462B2 (en) | 2022-08-09 | 2022-08-09 | Compressing probability tables for entropy coding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117595884A true CN117595884A (zh) | 2024-02-23 |
Family
ID=88017123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310984402.9A Pending CN117595884A (zh) | 2022-08-09 | 2023-08-07 | 用于熵编码的压缩概率表 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12034462B2 (zh) |
CN (1) | CN117595884A (zh) |
GB (1) | GB2622940A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7715480B2 (en) | 2003-10-17 | 2010-05-11 | Mitsubishi Electric Research Laboratories, Inc. | Video encoding with motion-selective wavelet transform |
GB2523347B (en) | 2014-02-20 | 2016-01-13 | Gurulogic Microsystems Oy | Encoder, decoder and method |
US11296720B2 (en) * | 2020-08-24 | 2022-04-05 | Innogrit Technologies Co., Ltd. | Data compression using reduced numbers of occurrences |
-
2022
- 2022-08-09 US US17/818,533 patent/US12034462B2/en active Active
-
2023
- 2023-08-07 GB GB2312047.0A patent/GB2622940A/en active Pending
- 2023-08-07 CN CN202310984402.9A patent/CN117595884A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US12034462B2 (en) | 2024-07-09 |
US20240056097A1 (en) | 2024-02-15 |
GB2622940A (en) | 2024-04-03 |
GB202312047D0 (en) | 2023-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11595055B2 (en) | Methods and apparatus to parallelize data decompression | |
JP4801776B2 (ja) | データ圧縮 | |
RU2630750C1 (ru) | Устройство и способ для кодирования и декодирования исходных данных | |
GB2538218A (en) | System and method for compressing data using asymmetric numeral systems with probability distributions | |
KR20120018360A (ko) | 가변 길이 코딩을 위한 방법 및 장치 | |
WO2010003574A1 (en) | Method for encoding a symbol, method for decoding a symbol, method for transmitting a symbol from a transmitter to a receiver, encoder, decoder and system for transmitting a symbol from a transmitter to a receiver | |
US20090015444A1 (en) | Data compression for communication between two or more components in a system | |
US10193579B2 (en) | Storage control device, storage system, and storage control method | |
US7528750B2 (en) | Entropy encoding and decoding apparatus and method based on tree structure | |
US20140006036A1 (en) | Method and apparatus for coding and decoding | |
EP4224856A1 (en) | Lossless compression with exponential golomb-rice coding for low-latency video transmission | |
CN117595884A (zh) | 用于熵编码的压缩概率表 | |
CN1343390A (zh) | 产生数据流的设备和方法和读取数据流的设备和方法 | |
EP3168994B1 (en) | Data compression of a sequence of binary data | |
US20240137045A1 (en) | Noniterative entropy coding | |
KR100607932B1 (ko) | 에러 정정 코드를 이용한 부호화 방법 및 이에 적합한 복호화 방법 | |
KR100686354B1 (ko) | 가변 트리를 이용한 허프만 복호화 방법 및 장치 | |
GB2360917A (en) | Run length compression encoding of runs of similar data words | |
GB2360916A (en) | Compression encoder which transmits difference between new data word and recent data word where this falls within a threshold | |
Priya et al. | Highly Compressed and Errorless Reconfigurable DAB/DAB+ Architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |