数据压缩的制作方法_5

文档序号:9691361阅读:来源:国知局
后缀比特。进位输出比特允许合并单元1312组合解码单元1310的 输出,以确定如下的数据值,这些数据值的比特已经被传递到多于一个解码单元1310。
[0139] 通过示例的方式,如果解码单元1310接收到四个前缀比特[0100],则从左到右读 取,能够确定前两个前缀比特是一个数据值的最后两个前缀比特(但不必然是仅有的两个 前缀比特),并且接着的两个前缀比特是下一数据值的开始(但不是结束)。在解码单元 1310处接收的四个后缀比特可以被标示为[S。,Sd S2, S3]。解码单元1310输出候选的经解 码的符号值作为[S。,SJ以及指示符,该指示符能够被后续的合并单元1213使用,其指示了 该候选的经解码的符号值的长度(例如,在这个示例中为2比特)。[S。,SJ将是经解码的 数据值的最后两个比特,但是合并单元1312、1314和1316仍然需要确定经解码的数据值的 其余比特(例如,在使用8比特数据值的示例中是其他六个比特)。比特&和S 3不是数据 值的最后的后缀比特(因为在这个示例中最后的前缀比特均为零)。因此,来自解码单元 1310的进位输出比特包括SjP S 3,并且从解码单元1310向后续的合并单元1312输出指示 符,其指示进位输出比特的长度(例如,在这个示例中为2比特)。合并单元1312然后能够 将后缀比特&和S 3与另一解码单元1310的输出进行组合,以便确定经解码的数据值。
[0140] 合并单元1312、1314和1316组合各段的分析的结果,以确定对于一行的所有经解 码的数据值。特别地,合并单元1312。从两个解码单元1310。和1310 i接收候选的经解码的 符号和/或进位输出比特,并且组合它们以然后向合并单元1314。输出进一步的候选的经 解码的符号和/或进位输出比特。例如,将来自解码单元1310。的进位输出比特与来自解码 单元131(^的第一输出比特组合,以由此确定用于如下符号的候选的经解码的值,该符号的 经编码的比特部分地落入由解码单元1310。处理的段中并且部分地落入由解码单元1310 i 处理的段中。
[0141] 接着,根据上文给出的示例,合并单元1312。可以从解码单元1310。接收候选的经 解码的符号,其具有两个比特(例如['SJ)以及两个进位输出比特[s 2,s3],以及候选的 经解码的符号和进位输出比特的长度的指示。合并单元还可以从解码单元131〇di收两个 候选的经解码的符号,它们分别具有一个和三个比特,[S 4]和[S5,S6,S7]。合并单元1312。 将对来自解码单元1310。的进位输出比特[S 2, S3]与从解码单元131(^输出的第一候选的经 解码的符号的比特&进行组合。因此,在这个示例中,合并单元1312。已经确定了分别具有 最后比特[S。,SJ、[S 2, S3, SJ和[S5, S6, S7]的三个候选的经解码的符号。经解码的数据符号 在这个示例中具有八个比特,所以合并单元1312。将需要向候选的经解码的符号添加比特, 使得它们具有八个比特。从图10能够看出,经解码的符号的比特包括多个后缀比特(标示 为S)以及(8-S)个其他比特。其他比特中的前(8-S-1)个比特为零。如果所有后缀比特 为1,则其他比特中的最后比特(即,符号的其他比特中的最右侧的比特)是0,并且如果情 况不是所有后缀比特为1,则其他比特中的最后比特为1。以这种方式,合并单元1312。能 够通过对来自解码单元1310。的进位输出比特与来自解码单元1310 i的第一候选的经解码 的符号的比特进行组合来确定经解码的符号。
[0142] 按照如上文所描述的由合并单元1312。对来自解码单元1310。和1310 4勺输出进 行处理的对应方式,合并单元1312i处理来自解码单元1310 2和1310 3的输出,并且合并单 元13122处理来自解码单元13104和1310 5的输出。
[0143] 可能存在一些数据值,它们的比特部分地落入多于一个合并单元1312中。因此, 更多层的合并单元1314和1316被用于将该行的所有比特组合在一起,以确保比特被正确 地解码。例如,合并单元1314。对合并单元1312。和1312 4勺输出进行组合,并且输出2个和 8个之间的经解码的符号以及可选地输出一些进位输出比特。同样类似地,合并单元1311 对合并单元131?和解码单元1310 6的输出进行组合,并且输出多至6个经解码的符号。合 并单元131七可以输出或者可以不输出任何进位输出比特,因为对于这样的进位输出比特, 在当前行中不存在将被组合的后续比特,但是这样的进位输出比特对于处理后续行的数据 值可能是有用的。
[0144] 合并单元1316然后对合并单元1314。和1314 i的输出与来自引导熵单元1310 4的 引导熵比特进行组合,以确定并输出该行的8个经解码的数据值(或"符号")。
[0145] 注意,对所接收的经熵编码的数据值之间的比特边界的确定不包括分析后缀比 特。在确定比特边界时需要考虑的比特数目被减少(例如,减半),因为不考虑后缀比特。 对于一行的不同数据值,对经熵编码的数据值之间的比特边界的确定能够(例如,在解码 单元1310中)并行地加以执行,因为:(i)为了这个目的,仅考虑前缀比特;以及(ii)前缀 比特的格式意味着前缀比特中的任何"1"指示了比特边界。因此,为了找到比特边界,解码 单元1310简单地找到前缀比特中的"1"。因此,通过从比特边界的确定中移除后缀比特,避 免了经可变长度熵编码的数据值的处理的有序性质。这允许多个经熵编码的数据值在每次 迭代时(例如,在多个连续时钟周期中的每个时钟周期时)被解码。
[0146] 上文参考图14的流程图所描述的方法步骤在多个连续时钟周期中的每个时钟周 期时迭代进行。例如,在这些时钟周期中的每个时钟周期时,解码一行经熵编码的数据值 (例如,八个经熵编码的数据值)。
[0147] 在上文描述的示例中,对于任何给出的经熵编码的数据值,前缀比特的数目为N+1 并且后缀比特的数目为N。在更为一般的示例中,对于任何给出的经熵编码的数据值的前缀 比特数目与后缀比特数目之间的关系为,使得前缀比特的数目为(N+a)并且后缀比特的数 目为kN,其中a为描述引导比特数目的常量,引导比特相比其他剩余的前缀比特将被区别 对待,这正如在上文示例中详细描述的,其中a = 1 ;并且k是描述被包括用于每个剩余前 缀比特的后缀比特数目的常量。在上文详细描述的示例中,k= 1。
[0148] 例如,可以使用a = 0并且k = 1的编码方案,从而经熵编码的数据值具有偶数长 度,并且前缀比特的数目等于后缀比特的数目。在a = 0的情况下,不存在引导前缀比特, 并且所有的前缀比特以相同的方式加以对待。表格1中给出了在这种情况下可以被用于编 码不同符号的前缀比特和后缀比特的示例。

[0150] 表格 1
[0151] 在表格1中所示出的示例中,N个后缀比特匹配于符号的二进制表示的N个LSB, 正如上文关于图10中示出的表格所描述的,这可以提供优点。然而,在其他示例中,后缀比 特可能不匹配于符号的二进制表示的LSB,并且例如,对于每个N值,可以替代地从零递增 到(2 N-1)。
[0152] 作为另一示例,可以使用a = 0并且k = 2的编码方案,从而经熵编码的数据值具 有偶数长度,并且前缀比特数目为后缀比特数目的一半。表格2中给出了在这种情况下可 以被用于编码不同符号的前缀比特和后缀比特的示例。
[0153]

[0154] 表格 2
[0155] 在表格2中所示出的示例中,2N个后缀比特匹配于符号的二进制表示的2N个 LSB,正如上文关于图10中示出的表格所描述的,这可以提供优点。然而,在其他示例中,后 缀比特可能不匹配于符号的二进制表示的LSB,并且例如,对于每个N值,可以替代地从零 递增到(2 2N-1)。
[0156] 能够基于数据的类型来作出使用哪种熵编码方案的选择,数据的类型将会基于不 同符号/数据值的概率来加以选择。例如,可以使用不同的熵编码方案将图像数据编码为 其他类型的数据。理想地,具有概率Pi的符号s i将会具有使得
[0157] 在上文所示出的示例中,前缀具有根据一元编码的格式并且包括一个" 1"以及可 变数目的"〇"。注意,在其他示例中,前缀值的" 1"和"〇"可以互换,从而前缀包括一个"〇" 以及可变数目的"1"。此外,前缀和后缀比特的字节顺序(endianness)/比特顺序可以被变 更为上文示例中所描述的那样。
[0158] 来自熵解码模块406的经解码的数据值被提供至对应的空间重相关模块404。空 间重相关模块404执行上文关于图6到9所描述的空间解相关的逆转。参考图18和19描 述了空间重相关模块404的操作示例的细节。
[0159] 图18示出了包括八个处理管线1802$」1802 s的空间重相关模块404,在每次迭 代(例如,每个时钟周期)时,每个处理管线从一行数据值(在图18中标示为"A"到"H") 接收经熵解码的数据值中的一个经熵解码的数据值。为了空间重相关模块的目的,经熵解 码的数据值被考虑为是经空间解相关的数据值,将对它们应用空间重相关以确定经空间重 相关的数据值。每个处理管线1802包括第一级1804和第二级1806。每个第一级1804包 括处理单元1808和存储1810,用于在垂直维度中(例如,在列上)执行空间重相关。每个 第二级1806包括处理单元1812,用于在水平维度中(例如,在行上)执行空间重相关。与 图6中所示出的编码管线604相对照地,在解码管线1802的第二级1806中存在依赖链,由 此正如下文更详细描述的,一些管线1802的第二级1806使用其他管线1802的第二级1806 的结果。
[0160] 图19图示了处理管线1802之一的第一级1804在八次迭代上的的操作,以由此针 对传入的经空间解相关的数据值的8X8块,向相应的第二级1806输出第一系数。空间重 相关模块404的第一级1804执行由对应的空间解相关204的第二级608所执行的操作的 逆转。经空间解相关的数据值的块的行按一种顺序被输入到并行的处理管线1802,使得在 这些行中的第一行已经被第一级1804接收并且存储在寄存器1810中之后,在第一级1804 处接收的该块的每个后续行的第一系数能够基于寄存器1810中所存储的第一系数来加以 确定。例如,如下文更详细描述的,经空间解相关的数据值的8X8块的行可以按如下顺序 被供应给处理管线1802 :行0、行4、行6、行7、行5、行2、行3并且然后行1。
[0161] 能够看出,在图19中处理单元1808具有被标记为"输入"、"左"和"右"的三个输 入,由此经空间解相关的数据值在输入线路上被接收,而左输入和右输入被耦合到寄存器 1810的输出。在第一时钟周期(时钟周期C0)时,管线1802的第一级1804接收用于行0 的经空间解相关的数据值(在图19中通过双撇:0"来指示输入到第二级1804的经空间解 相关的数据值),并且输出用于行〇的第一系数(在图19中通过单撇:例如0'来指示从第 二级1804输出的值),其中存储单元1810存储用于行0的第一系数(即,在时钟周期C0之 后,寄存器1810存储用于行0的第一系数,标示为0')。
[0162] 在第二时钟周期(时钟周期C1)时,管线1802的第一级1804接收用于行4的经 空间解相关的数据值(输入到第一级1804的经空间解相关的数据值是4"),并且输出用于 行4的第一系数(从第二级608输出的值是4')。也就是说,处理单元1808在输入线路上 接收4",并且在左输入和右输入上接收0',从而用于行4的第一系数(标示为4')由处理 单元1808基于所接收的用于行4的经空间解相关的数据值(标示为4")以及所存储的用 于行〇的第一系数(标示为〇',从寄存器1810取回)来加以确定。如上文所描述的,在空 间解相关中,用于行4的经空间解相关的值被确定为4" =4' -0' mod 28,因此重新布置 它,我们得到:4' = 4" +0' mod 2s。
[0163] 处理单元1808使用这个等式,基于输入值4"以及所存储的第一系数0'来确定标 示为4'的值。在时钟周期C1之后,存储单元存储用于行0和4的第一系数(标示为0'和 4')。
[0164] 在第三时钟周期(时钟周期C2)时,管线1802的第一级1804接收用于行6的经空 间解相关的数据值(输入到第二级1804的值是6"),并且输出用于行6的第一系数(从第 二级1804输出的值是6')。也就是说,处理单元1808在输入线路上接收6"并且在左输入 和右输入上接收4',从而用于行6的第一系数(标示为6')由处理单元1808基于所接收 的用于行6的经空间解相关的数据值(标示为6")以及所存储的用于行4的第一系数(标 示为4',从寄存器1810取回)来加以确定。如将是明显的,根据等式:6' =6" +4' mod 2s来确定值6'。在时钟周期C2之后,寄存器1810存储用于行0、4和6的第一系数(标示 为 0'、4' 和 6')。
[0165] 如将是明显的,在第四时钟周期(时钟周期C3)时,管线1802的第一级1804接收 用于行7的经空间解相关的数据值(标示为7"),并且输出用于行7的第一系数(标示为 7')。也就是说,处理单元1808在输入线路上接收7"并且在左输入和右输入上接收6'。根 据等式穴=7" +6' mod 2s来确定值7'。在时钟周期C3之后,寄存器1810存储用于行 〇、4和6的第一系数(标示为0'、4'和6')。
[0166] 如将是明显的,在第五时钟周期(时钟周期C4)时,管线1802的第一级1804接收 用于行5的经空间解相关的数据值(标示为5"),并且输出用于行5的第一系数(标示为 5')。也就是说,处理单元1808在输入线路上接收5"、在左输入上接收4'并且在右输入上 接收6'。根据等式Y =5" +LPredict(4',6< )mod 2s来确定值5'。在时钟周期C4之 后,寄存器1810存储用于行0和4的第一系数(标示为0'和4')。用于行6的第一系数 (标示为6')可以被丢弃,因为它不需要用于后续行,但是将6'留在寄存器1810中直到它 被覆写可能会更加简单。
[0167] 第一级1804在第六、第七和第八时钟周期时的操作从图19来看将是明显的,并且 将遵循与上文针对前五个时钟周期所描述的相同的原理,并且所以为了简洁,我们在这里 将不详细地解释这些时钟周期中的操作。注意,处理管线1802的第一级1804中的每个第 一级的存储单元1810被配置为存储多至三个第一系数,并且这对于第一级1804中的所有 行的处理是足够的,这归因于这些行被输入到空间重相关模块404的顺序。如上文所指出 的,一般而言,寄存器1810中的每个寄存器在任何给定时间将具有存储多至log 2(r)个第 一系数的容量,其中r是经空间解相关的数据值的块中的行数。
[0168] 因此,在每次迭代中,一行第一系数(在图18中标记为A'到H')被提供至处理管 线1802的相应的第二级1806。空间重相关模块404的第二级1806执行由对应的空间解相 关模块204的第一级606所执行的操作的逆转。
[0169] 如上文描述的,在空间解相关中,列A的数据值与用于列A的第一系数是相同的, 即A' =A。因此,在对应的空间重相关中,在处理管线1802s的第二级1806处接收的用于 列A的第一系数在第二级1806的输出上不被改变,即A = A'。
[0170] 然而,如上文描述的,在空间解相关中,对于列E,由等式P =E_A mod 2s来给出 第一系数E,,该等式能够被写为纪=mod#(E 以更加清楚地示出mod函数的操 作。因为A = A',所以我们能够布置该等式以给出E = mod28(ty + A7)。因此,处理管 线18027中的处理单元1812使用输入A'和E'根据这一等式,输出用于列E的经空间解相 关的数据值。
[0171] 此外,如上文描述的,在空间解相关中,对于列G,由等式:G^ = m〇d2M;G - E): 来给出第一系数G'。该等式能够被重新布置以给出:G = mod28(G' + E)。因此,处理管 线18026中的处理单元1812使用输入E和G'根据这个等式输出用于列G的经空间解相关 的数据值,其中E的值从处理管线18027的处理单元1812的输出来加以提供。在其他实施 例中,在处理管线1802 6的处理单元1812中(以及在处理管线1802 7中)可以重复E的计 算,从而处理管线18026不依赖于处理管线1802 7的输出。在这些其他实施例中,处理管线 18026的处理单元1812可以接收A和E'值作为输入以及G'值。
[0172] 此外,如上文描述的,在空间解相关中,对于列C,由等式: G' = mod2s(C - LPredict(A,E))来给出第一系数c'。使用上文给出的iPredict的定义,该 等式能够被重新布置以给出
因此,处理管线18025中的处理单元1812使用输入A、C'和E根据这个等式输出用于列C的 经空间解相关的数据值,其中A的值从处理管线180?的第一级1804的输出来加以提供, 并且E的值从处理管线18027中的处理单元1812的输出来加以提供。在其他实施例中,在 处理管线1802 5的处理单元1812中(以及在处理管线1802 7中)可以重复E的计算,从而 处理管线18025不依赖于处理管线1802 7的输出,在该情况下,处理管线1802 5的处理单元 1812可以接收E'值作为输入以及A和C'值。
[0173] 此外,如上文描述的,在空间解相关中,对于列B,由等式:B' = mod28(B - LPredict(A, C)) 来给出第一系数B'。该等式^多被重新布置以给出
因此,处理管线1802i中的处理单元1812使用输入A、B'和C根据这个等式输出用于列B的 经空间解相关的数据值。A的值从处理管线180?的第一级1804的输出来加以提供,并且 C的值从处理管线18025中的处理单元1812的输出来加以提供。在其他实施例中,在处理 管线1802i的处理单元1812中(以及在处理管线1802 5中)可以重复C的计算,从而处理 管线ISOSi不依赖于处理管线1802 5的输出,在该情况下,处理管线1802 i的处理单元1812 可以接收C'和E'值作为输入以及A和B'值。
[0174] 此外,如上文描述的,在空间解相关中,对于列D,由等式:D' = ffi〇d28 (D - LP_ct(C, E))来给出 第一系数D'。该等式能够被重新布置以给出
因此,处理
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1