CN117544793A - 用于对字节流进行编码和解码的方法和设备 - Google Patents
用于对字节流进行编码和解码的方法和设备 Download PDFInfo
- Publication number
- CN117544793A CN117544793A CN202311512007.7A CN202311512007A CN117544793A CN 117544793 A CN117544793 A CN 117544793A CN 202311512007 A CN202311512007 A CN 202311512007A CN 117544793 A CN117544793 A CN 117544793A
- Authority
- CN
- China
- Prior art keywords
- data
- symbol
- symbols
- node
- tree
- 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
- 238000000034 method Methods 0.000 title claims abstract description 348
- 238000012545 processing Methods 0.000 claims abstract description 41
- 238000005315 distribution function Methods 0.000 claims description 37
- 230000001186 cumulative effect Effects 0.000 claims description 33
- 230000008569 process Effects 0.000 description 97
- 230000000875 corresponding effect Effects 0.000 description 51
- 238000013507 mapping Methods 0.000 description 25
- 238000007906 compression Methods 0.000 description 19
- 230000006835 compression Effects 0.000 description 19
- 239000011159 matrix material Substances 0.000 description 15
- 230000011664 signaling Effects 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000004088 simulation Methods 0.000 description 8
- 238000003860 storage Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000000873 masking effect Effects 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000003247 decreasing effect Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 238000004883 computer application Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000007480 spreading Effects 0.000 description 2
- 238000003892 spreading Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- 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/42—Methods 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
- H04N19/436—Methods 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 using parallelised computational arrangements
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/167—Position within a video image, e.g. region of interest [ROI]
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- 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/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- 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/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- 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/46—Embedding additional information in the video signal during the compression process
-
- 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
-
- 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/96—Tree coding, e.g. quad-tree coding
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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及对字节流进行编码和解码的方法和设备。方法包括:接收表示已经压缩的信息的经编码数据集;从经编码数据集识别散布的节点符号和数据符号的有序集;从所识别的节点符号和数据符号的有序集处理具有预定数量的层的有序树,每个节点符号包括指示符元素集,指示符元素集指示稍后是否会在数据集中针对树中的分支期望另一个符号,使得所识别的节点符号的有序集确定树,使得数据符号基于指示符元素布置在树中的数据定位中,每个数据符号表示与已经压缩的信息相关联的一个或多个值;及基于数据符号在有序树中的定位而使用由数据符号表示的值并且在节点符号指示在数据集中未包括对应于有序树中的定位的数据符号时使用预定值来重构已经压缩的信息。
Description
本申请是国际申请号为PCT/GB2018/053546、国际申请日为2018年12月6日、发明名称为“用于对字节流进行编码和解码的方法和设备”的国际申请的中国国家阶段申请201880088752.4的分案申请,其全部内容结合于此作为参考。
技术领域
本发明涉及用于对诸如字节流等数据流的序列进行编码和/或解码的方法、设备、计算机程序和计算机可读介质。
背景技术
当传输或存储图像和视频数据时,减小数据的大小特别有利。用于对这种数据进行编码和解码的技术是多种多样的并且是众所周知的。当代技术在处理效率、数据质量与数据压缩之间作出折衷。
通常通过由各自具有值的分量集表示图像颜色来用数字表示图像。例如,可以使用RGB颜色模型或YCbCr颜色空间来表示图像的颜色,其中图像的每个像素由三个不同的值表示。
为了压缩数据,通常首先将图像的平面分成数据元素块,诸如8×8个像素的块,且然后对每个块进行域变换。实例包括离散余弦变换和小波变换。如本领域中众所周知的,变换译码用于捕获数据中的相关结构。
然后,变换后的数据经过量化以使用较小的值集来表示较大的值集,并且然后通常经历另一压缩步骤,诸如熵译码。熵译码利用数据集内频繁出现的值或值序列,以便减少数据量。例如,熵译码技术通过用极少位表示频繁出现的模式而用许多位表示很少出现的模式来压缩数字数据。
每个步骤的功效取决于前一步的结果。也就是说,变换和量化过程被设计成使过程的下一步更加有效。例如,如果变换和量化过程用频繁出现的符号或符号组来表示图像的值,以使得熵译码步骤更加有效,则可以使整体压缩更加有效。
为了使熵编码步骤更有效,一些当代的变换过程(在熵编码之前出现)产生大量的零值数据元素。具有分组在一起或者以其他方式分组的大量零值元素的这种数据集可以称为稀疏数据集。
先前已经提出以分级方式对数据进行编码,以减小信号的总体数据大小。在这种编码技术中,残差数据(即纠正基础层中存在的低质量信息所需的数据)将以逐渐提高的质量级别使用。在WO 2013/171173中描述了此分级技术,其提出信号的再现的分层层级体系。在此提出的技术中,质量的基本层表示第一分辨率的图像,而分层层级体系中的后续层是解码侧以更高的分辨率重构图像所需的残差数据或调整层。在此WO 2013/171173中提出了技术,所述技术构建化各层中的数据以利用残差层中的相关性,以通过将值的块变换为方向分量集来减少信息熵。此分级技术中的每个层,特别是每个残差层,通常是具有许多零值元素的相对稀疏的数据集。
在较早提交的专利申请GB1812407.3中还公开了分级的、分层的数据结构的概念。GB1812407.3和WO2013/171173均通过引用整体并入。
产生稀疏数据集的其他技术包括增量编码或差分编码。
先前已经提出使用四叉树来存储稀疏矩阵以将矩阵划分为多个象限。例如,Nidhal K.El Abbadi和Elaf J.Al Taee于2014年11月13日在《国际计算机应用杂志》(International Journal of Computer Applications)(0975-8887)第105卷中提出了存储两个矢量的技术——第一矢量是矩阵中的一系列数据值,而第二矢量是数据在矩阵中的定位的编码表示。尽管作者示出了压缩增益,但由于实施和集成困难,实际上尚未实现类似技术。
另外,作者具体陈述:“为了压缩此矩阵,我们建议使矩阵成为具有相等的尺寸大小(尺寸为2的幂)的正方形,这将简化工作,并且在行或列中添加零,以使尺寸相等且2的幂将不会影响矩阵,并且易于在解压缩后消除。”这种压缩可能是无效的。
例如在I.Simecek、D.Langr、P.Tvrdik的论文“用于压缩稀疏矩阵存储的最小四叉树格式(Minimal Quadtree Format for Compression of Sparse Matrices Storage)”,2012年第14届科学计算符号和数字算法国际研讨会,DOI 10.1109/SYNASC.2012.30中还提出了一种类似的格式,被称为最小四叉树格式,用于存储稀疏矩阵的空间结构。以这种格式,四叉树的所有节点都存储在一个数组中。每个节点仅包含四个标记(即四个位),它们指示给定的子树是否为非空。无需讨论,使用广度优先遍历。
在J.Saira Banu、M.Rajasekhara Babu、I.Sumaiya Thaseen和P.Balamurugan于2017年在《国际纯数学与应用数学杂志》(International Journal of Pure and AppliedMathematics)第117卷,第15期,2017年513-526中发表的论文“图像压缩技术中使用稀疏矩阵存储格式的分析(Analysis of Using Sparse Matrix Storage Formats in ImageCompression Techniques)”中综述了此格式。在此论文中,据称“当前的作者在最近的一篇论文中使用基准矩阵来分析各种格式的空间效率,并发现最小四叉树格式是最好的格式。然而,由于这仅是位串,因此不可能进行矩阵的重构。”在进一步分析格式时,他们指出“这种存储格式用于有效存储。对于使用四叉树方法划分的矩阵的每个象限,将产生一个位。如果象限为空,则输出0,否则为1。这种格式可以用于仅需要排列非零元素的情况,因为并不存储非零元素本身的值。”最后,作者指出“尽管最小四叉树[格式]提供了一定压缩级别,如前所述,但是使用这种技术将无法重构图像。”
当考虑用于使用稀疏矩阵重构图像的已知格式的任何可能实现时,每种格式都需要大量的内存使用。展示效率增益的每种已知格式都需要将大量数据存储在存储器中,以正确地重构矩阵中数据的定位和值。
行业目标仍然是减小存储或传输的数据的大小,并减少图像重构中对稀疏数据集进行编码或解码的处理时间和内存利用率。
发明内容
根据本发明的第一方面,提供了一种用于对接收到的经编码数据集进行解码的方法。所述方法包括:接收表示已经压缩的信息的所述经编码数据集;从所述经编码数据集识别散布的节点符号和数据符号的有序集;从所识别的节点符号和数据符号的所述有序集处理具有预定数量的层的有序树,其中每个节点符号包括指示符元素集,所述指示符元素集指示稍后是否会在所述数据集中针对所述树中的分支期望另一个符号,使得所识别的节点符号的所述有序集确定所述树,并且使得数据符号基于所述指示符元素布置在所述树中的数据定位中,并且其中每个数据符号表示与所述已经压缩的信息相关联的一个或多个值;以及基于所述数据符号在所述有序树中的位置而使用由数据符号表示的值并且在所述节点符号指示没有数据符号在与所述有序树中的定位相对应地包括在所述数据集中时使用预定值来重构所述已经压缩的信息。
以这种方式,所述方法能够隐式地识别数字信息中的重复预定值的定位,而无需将所述信息包括在经编码数据集中。所述信息可能已由解码器固定为常量或算法的结果,所述算法的一些输入能够在字节流的不同部分中提供给所述经编码数据集(例如,报头),且所述算法的一些输入是硬线连接的。
重构仅用表示信息所需的少量位进行压缩的所述信息成为可能,其中原始信息中的一个值经常被重复并分组或聚类在一起。结构和数据信息的散步实现了改进的重构和存储器使用。本发明在压缩残差信息和图像信息方面具有显著的压缩增益,其中所述信息经常聚类并且通常是稀疏的。
另外,根据本发明,即使这些数据符号对应于所述预定值,也能够选择性地在所述数据集内包括数据符号并用信号通知那些数据符号。这能够实现在后续编码级中进行更有效的编码。
在某些实施例中,一旦所述树已经完成,则能够删除或以其他方式忽略所述节点符号。
优选地,处理所述有序树的步骤包括根据每个节点符号的指示符元素遍历所述树,以及基于每个被访问节点在所述树中的定位使节点符号或数据符号与所述被访问节点相关联。因此,相应的使用有序树结构来定位从所述数据集检索到的符号,以便利用所述树中的所述空间信息。
如果被访问节点位于所述树的最终层中,则数据符号能够与所述树相关联;如果被访问节点位于所述树的倒数第二层中,则没有符号能够与所述树相关联并且对于所述树的其他层,节点符号能够与所述树相关联。因此,所述树结构本身通知所述数据集内的所述符号的排序。此类技术通过减少元数据来在元数据与数据之间提供最佳平衡。在某些用途中,所述平衡可能所不同。无代码层的数量能够是可更改的。
处理所述有序树的步骤包括使第一节点符号与所述有序树的根节点相关联;以及根据所述第一节点符号的与所述根节点相关联的指示符元素遍历所述树。
如果指示符元素指示稍后在所述数据集中针对所述树中的分支不期望数据符号,则所述方法能够包括终止针对所述分支遍历所述树,使得遍历继续到后续分支。因此,当所述树中没有要填充的数据时,所述树的所述分支将保留为空的。应注意,在此实例中,所述树的遍历没有终止,而是所述遍历的下一部分在其他地方。换句话说,所述遍历到达所述遍历中的分支已在叶上结束的级。
任选地,所述方法还包括在终止所述遍历之后针对所述分支模拟子树,其中所述子树包括具有预定值的数据符号。由于所述分支保留为空并填充有预定值,因此所述值无需包括在所述数据集中,且因此与替代压缩技术相比,能够显著压缩所述信息。
优选地,遍历所述树是深度优先前序遍历。编码和解码过程优选地使用相同的遍历来维持原始信息的空间信息。深度优先前序遍历允许在解码器实施方式中改进存储器处理,允许解码器实施方式快速重构所述压缩信息,在实施方式中实现并行性(例如,通过所述保存树并且接着每当达到一定深度时重新开始后续熵编码级),并且在对残差数据进行解码时提供有益的处理。在一个实例中,能够绕过后续熵编码级,但是产生的过程不采用绕过。
所述有序树优选地是四叉树,每个节点符号优选地包括四个指示符元素。以这种方式,所述树的每个分支表示网格的象限,并且能够保持所述已经压缩的信息的空间信息。
优选地,重构所述信息包括:将所述有序树的至少一部分映射到数组,使得每个数据符号表示所述数组中的元素。能够使用所提出技术来压缩和重构任何信息数组,例如,能够通过将所述树的所述数据符号映射到所述网格并且使用所述有序树结构固有的空间信息来重构二维网格。在某些实例中,所述数组是表示数字图像的通道的值的数组,其中每个值表示所述数字图像的像素的分量。
映射能够优选地是z序映射或Morton顺序映射,以便有效地将存储在所述树中的值映射到所述网格中的适当定位中。与所述遍历非常相似,优选地,映射顺序与编码和解码过程中使用的顺序相同。
所述映射能够包括在没有数据符号已与所述有序树的数据定位相关联的情况下***预定值。因此,能够在重构时而不是在处理所述树时执行隐式地用信号通知的值(即不包括在所述经编码数据集中的值)的***。
每个节点符号能够与应在所述树中具有孙节点的节点相关联。因此,节点符号不与所述树的指向所述数据符号的层相关联。处理所述树的步骤能够包括将数据符号布置到所布置数据符号的所有兄弟节点,并且因此能够在将待构建的数组的中的数据符号聚类在一起的情况下实现效率节省。例如,能够通过在块中显式地用信号通知所述数据符号来代替指向所述数据符号层的所述节点符号,这在整个平面上提供了效率节省。
在将数据符号布置在树中的数据定位处之后,所述方法还能够包括删除与树的所述分支相关联的节点符号。因此,由于不需要知晓所述树的整个结构以便将数据准确地放置在数组中并且恢复特定数据片断的空间信息,因此所述实施方式实现了增加的存储器利用率。
任选地,所述方法还包括使用差分译码操作对每个数据符号进行解码,使得在第一数据符号之后接收到的每个数据符号是相对于前一数据符号的值。以这种方式进行差分编码将增加所述数据集中稀疏值的量,也就是说,差异为零。换句话说,在某些情况下能够增加所述数据集的稀疏性。通过增加稀疏性,当在所述数据集中不包括数据符号时假设的所述预定值为零时,能够提高压缩增益。在某些情况下,不需要显式地用信号通知零值。类似地,差分编码将增加小值的频率,这将改善结合本发明的压缩技术使用的任何熵编码操作或其他编码操作。
考虑能够显式地用信号通知所述预定值,或者能够取决于待压缩信息的性质而采用信息的稀疏编码与显式信令的组合。例如,在某些情况下,能够通过传输更少的符号来节省,但是能够使得后续熵译码操作对其余符号的效率降低,并且因此组合的方法将产生有效的结果。
另外,所述方法能够包括接收待重构数据的维度的指示,其中未接收到在重构所述数据集时将位于这些维度之外的数据符号。以这种方式,能够对不同维度的数据进行编码。任选地,能够发送部分节点符号,其中未发送对应于位于维度之外的定位的指示符元素。
另外,所述方法能够包括接收待重构数据的维度的指示;以及忽略收到的任何数据符号,所述数据符号在重构所述数据集时将位于所述维度之外。以这种方式,能够对不同维度的数据进行编码。能够发送原始数据之外的数据,以改善后续编码级。
任选地,所述方法还包括在构建所述有序树之前使用熵译码操作(例如,熵解码操作)对所述经编码数据集进行解码。在此实施例中,优选地,所述熵解码操作是范围解码操作。所述操作能够是从重新初始化的冉伟解码器状态/例子开始的操作,或者是从现有例子的最后状态开始的操作。在优选的实施方式中,初始化在开始时是每有序树一次初始化。
根据本发明的另一方面,能够提供一种对检索到的表示已经压缩的信息的经熵编码数据集进行解码的方法,所述方法包括:检索与相应符号类型相关联的多个熵解码参数;将熵解码操作应用于所述经编码数据集以使用与第一符号类型相关联的参数对第一符号类型的符号进行解码,其中所述第一符号类型包括指示符元素集,所述指示符元素集指示在所述数据集中的不同定位中期望的符号的类型;通过分析所述第一符号类型的至少一个先前解码的符号来确定期望符号类型,以识别所述经编码数据集中期望的符号类型;以及更新所述熵解码操作以使用与所述期望符号类型相关联的参数。
以这种方式,本发明实现了改善的熵译码。能够使用不同的参数对不同类型的符号进行解码,而不是针对整个数据集使用参数集。因此,能够在整个数据集上提供显著的压缩增益。即使在所述数据集内的符号散布的可能没有规则模式,但也能够提供此类压缩增益。通过分析所述第一符号类型,能够将后续符号的位置准确地空间定位在所述数据集内,以便使用不同参数对所述符号进行解码。
能够通过一个熵编码模块或针对每种符号类型通过多个不同模块执行所述熵解码操作。所述熵编码操作能够使用固定长度或可变长度的码字。
优选地,所述经编码数据集包括所述第一类型的符号和表示与所述已经压缩的信息相关联的一个或多个值的第二类型的符号。因此,所述第一符号类型稍后在所述数据集中指示所述数据符号的空间信息。
所述方法能够包括:通过分析所述第一符号类型的至少一个先前解码的符号来迭代地确定所述期望符号类型以及更新所述熵解码操作以使用与所述期望符号类型相关联的参数。
优选地,所述熵编码操作是范围解码操作,并且所述熵解码参数包括概率信息,例如累积分布函数。替代性熵编码操作包括算术或霍夫曼编码操作。
更新所述熵解码操作包括:从存储器删除所述经编码数据的不再需要用于所述期望符号类型进行解码的一部分,经编码数据的所述部分先前读入存储器以用于所述熵解码操作。因此,本发明实现解码器处的改善的存储器利用,同时仍然能够准确地在所述数据集中定位所述第二符号类型,以使得参数能够用于所述符号。
根据本发明的实施方式,所述第一类型的符号是所述节点符号并且所述第二符号类型是所述数据符号,其中识别散布的节点符号和数据符号的有序集的步骤包括应用以及更新所述熵解码操作的步骤,并且确定期望符号类型的步骤包括处理所述有序树使得所述期望符号类型是基于树遍历期间的所述树的被访问节点而确定的步骤。因此,一起提供本发明每个方面的益处。也就是说,所述节点符号能够在空间上以及在所述数据集内准确地定位所述数据符号,使得不仅数所述据符号能够定位在重构的数组中而不显式地用信号通知位置数据,不仅能够隐式地用信号通知所述预定值,而且能够针对每个信号使用不同的参数来所述执行熵编码操作,以使得能够显著地压缩所述数据集,因为能够将不同符号准确地定位在所述经编码数据集中。
因此,根据本发明的方面,能够提供一种对检索到的表示已经压缩的信息的经熵编码数据集进行解码的方法,所述方法包括:检索与相应符号类型相关联的多个熵解码参数;将熵解码操作应用于所述经编码数据集,以使用与所述相应符号类型相关联的参数对多个符号进行解码,其中,所述经编码数据集包括散布的节点符号和数据符号的有序集,每个散布的节点符号和数据符号各自是不同的相应符号类型;从所述经解码符号处理具有预定数量的层的有序树,并从所述有序树确定期望符号类型;更新所述熵解码操作以使用与所述期望符号类型关联的参数,其中每个节点符号包括指示符元素集,所述指示符元素集指示稍后是否会在所述数据集中针对所述树中的分支期望另一个符号,使得所识别的节点符号的所述有序集确定所述树,并且数据符号基于所述指示符元素布置在所述树中的数据定位中,并且其中每个数据符号表示与所述已经压缩的信息相关联的一个或多个值;以及基于所述数据符号在所述有序树中的定位而使用由所述数据符号表示的值并且在所述节点符号指示在所述数据集中未包括对应于所述有序树中的定位的数据符号时使用预定值来重构所述已经压缩的信息。
根据本发明的另一方面,能够提供一种用于对接收到的经编码数据集进行解码的设备,所述设备包括被配置成执行本发明的以上方面中任一项的方法的处理器。
根据本发明的方面,能够提供一种用于对接收到的经编码数据集进行解码的设备,所述设备包括:接收模块,所述接收模块被配置成表示已经压缩的信息的所述经编码数据集;解码模块,所述解码模块被配置成从所述经编码数据集识别散布的节点符号和数据符号的有序集;以及去稀疏化模块,所述去稀疏化模块被配置成从所识别的节点符号和数据符号的所述有序集处理具有预定数量的层的有序树,其中每个节点符号包括指示符元素集,所述指示符元素集指示稍后是否会在所述数据集中针对所述树中的分支期望另一个符号,使得所识别的节点符号的所述有序集确定所述树,并且数据符号基于所述指示符元素布置在所述树中的数据定位中,并且其中每个数据符号表示与所述已经压缩的信息相关联的一个或多个值;以及基于所述数据符号在所述有序树中的定位而使用由所述数据符号表示的值并且在所述节点符号指示在所述数据集中未包括对应于所述有序树中的定位的数据符号时使用预定值来重构所述已经压缩的信息。
根据本发明的方面,能够提供一种用于对接收到的表示已经压缩的信息的经熵编码数据集进行解码的设备,所述设备包括:解码模块,所述解码模块被配置成检索与相应符号类型相关联的多个熵解码参数;并且将熵解码操作应用于所述经编码数据集,以使用与所述相应符号类型相关联的参数对多个符号进行解码,以及去稀疏化模块,所述去稀疏化模块被配置成通过分析所述第一符号类型的至少一个先前解码的符号来确定期望符号类型,以识别所述经编码数据集中期望的符号类型;以及更新所述熵解码操作以使用与所述期望符号类型相关联的参数,其中所述第一符号类型包括指示符元素集,所述指示符元素集指示在所述数据集中的不同定位中期望的符号的类型。
根据本发明的方面,能够提供一种对表示待压缩信息的数据数组进行编码的方法,所述方法包括:从所述数据数组处理具有预定数量的层的有序树,包括在所述树中的数据位置处布置数据符号,以及在所述树中的所述数组的区部对应于预定值的数据定位处不布置数据符号;以及生成散布的节点符号和数据符号的有序集,其中每个节点符号包括指示符元素集,所述指示符元素集指示稍后是否会在所述数据集中针对所述树中的分支期望另一个符号,使得所识别的节点符号的所述有序集确定所述树,并且数据符号基于所述指示符元素布置在所述树中的数据定位中,并且其中每个数据符号表示与所述已经压缩的信息相关联的一个或多个值。
对数据数组进行编码的方法能够是对所述经编码数据集进行解码的方法的基本镜像方法。
处理所述有序树的步骤能够包括:分析所述数组的区部以确定所述区部的节点符号,其中所述节点符号指示所述区部是否包括与所述预定值不同的值;以及根据每个节点符号的指示符元素遍历所述树,以及基于每个被访问节点在所述树中的定位使节点符号或数据符号与所述被访问节点相关联,其中所述树的每个节点对应于所述数组的区部。如果被访问节点位于所述树的最终层中,则数据符号能够与所述树相关联;如果被访问节点位于所述树的倒数第二层中,则没有符号能够与所述树相关联并且对于所述树的其他层,节点符号能够与所述树相关联。处理所述有序树的步骤包括使第一节点符号与所述有序树的根节点相关联;以及根据所述第一节点符号的与所述根节点相关联的指示符元素遍历所述树。如果指示符元素指示稍后在所述数据集中针对所述树中的分支不期望数据符号,则终止针对所述分支遍历所述树,使得遍历继续到后续分支。所述遍历树能够是深度优先前序遍历。所述有序树能够是四叉树,每个节点符号能够包括四个指示符元素,并且所述数组的每个区部能够是象限。
所述数组能够是表示数字图像的通道的值的数组,其中每个值表示所述数字图像的像素的分量。所述布置能够是z序映射。每个节点符号能够与应在所述树中具有孙节点的节点相关联。处理所述树的步骤能够包括将数据符号布置到所布置数据符号的所有兄弟节点。
在将数据符号布置在树中的数据定位处之后,所述方法还能够包括输出并删除与树的所述分支相关联的节点符号。所述方法还能够包括使用差分译码操作对每个数据符号进行编码,使得在第一数据符号之后输出的每个数据符号是相对于前一数据符号的值。所述方法还能够包括检索待重构数据的维度;以及对伪数据符号进行编码,所述伪数据符号在重构所述数据集时将位于所述维度之外。
所述方法还能够包括使用熵译码操作对所输出节点符号和数据符号进行编码。所述熵译码操作能够是范围译码操作。
根据本发明的方面,能够提供一种对表示待压缩信息的数据集进行熵编码的方法,所述方法包括:检索与相应符号类型相关联的多个熵编码参数;将熵编码操作应用于所述数据集,以使用与第一符号类型相关联的参数对第一符号类型的符号进行编码;通过分析所述第一符号类型的至少一个先前编码的符号来确定期望符号类型,以识别所述经编码数据集中期望的符号类型;以及更新所述熵编码操作以使用与所述期望符号类型相关联的参数,其中所述第一符号类型包括指示符元素集,所述指示符元素集指示在所述数据集中的不同定位中期望的符号类型。
所述数据集能够包括所述第一类型的符号和与所述待压缩信息相关联的一个或多个值的第二类型的符号。所述方法能够包括:通过分析所述第一符号类型的至少一个先前编码的符号来迭代地确定所述期望符号类型以及更新所述熵编码操作以使用与所述期望符号类型相关联的参数。所述熵编码操作是范围解码操作,并且所述熵解码参数包括累积分布函数。
根据本发明的实施方式,在所述编码方法中,所述第一类型的符号能够是所述节点符号并且所述第二类型的符号能够是所述数据符号,其中生成散布的节点符号和数据符号的有序集的步骤能够包括应用以及更新所述熵编码操作的步骤,并且确定期望符号类型的步骤能够包括处理所述有序树使得所述期望符号类型是基于树遍历期间的所述树的被访问节点而确定的步骤。
区部对应于预定值的数据定位处不布置数据符号;生成散布的节点符号和数据符号的有序集,每个散布的节点符号和数据符号各自是不同的相应符号类型,其中每个节点符号包括指示符元素集,所述指示符元素集指示稍后是否会在所述数据集中针对所述树中的分支期望另一个符号,使得所识别的节点符号的所述有序集确定所述树,并且数据符号基于所述指示符元素布置在所述树中的数据定位中,并且其中每个数据符号表示与所述已经压缩的信息相关联的一个或多个值;检索与相应符号类型相关联的多个熵编码参数;使用与所述相应符号类型相关联的参数来将熵解码操作应用于散布的节点符号和数据符号的所述有序集。
根据本发明的另一方面,能够提供一种对表示待压缩信息的数据数组进行编码的设备,所述设备包括被配置成执行以上方面的方法的处理器。
根据本发明的另一方面,能够提供一种用于对表示待压缩信息的数据数组进行编码的设备,所述设备包括:稀疏化模块,所述稀疏化模块被配置成从所述数据数组处理具有预定数量的层的有序树,包括在所述树中的数据位置处布置数据符号,以及在所述树中的所述数组的区部对应于预定值的数据定位处不布置数据符号;以及输出模块,所述输出模块被配置成生成散布的节点符号和数据符号的有序集,其中每个节点符号包括指示符元素集,所述指示符元素集指示稍后是否会在所述数据集中针对所述树中的分支期望另一个符号,使得所识别的节点符号的所述有序集确定所述树,并且数据符号基于所述指示符元素布置在所述树中的数据定位中,并且其中每个数据符号表示与所述已经压缩的信息相关联的一个或多个值。
根据本发明的另一方面,能够提供一种用于对表示待压缩信息的数据集进行熵编码的设备,所述设备包括:编码模块,所述编码模块被配置成检索与相应符号类型相关联的多个熵解码参数;并且将熵解码操作应用于所述数据集,以使用与所述相应符号类型相关联的参数对多个符号进行编码,以及稀疏化模块,所述稀疏化模块被配置成通过分析所述第一符号类型的至少一个先前编码的符号来确定期望符号类型,以识别所述经编码数据集中期望的符号类型;以及更新所述熵解码操作以使用与所述期望符号类型相关联的参数,其中所述第一符号类型包括指示符元素集,所述指示符元素集指示在所述数据集中的不同定位中期望的符号的类型。
根据本发明的另一方面,提供一种使用算术和/或范围解码操作来从经编码数据集对符号进行解码的方法,所述符号各自由所定义整数范围内的最终整数表示。所述方法包括:检索所述经编码数据集的样本;检索第一统计元数据的数组,其中所述第一统计元数据表示组指示符集中的每个组指示符出现在所述经编码数据集中的相应概率,并且其中所述数组的大小小于所定义的范围的大小;基于统计元数据的数组对所述样本执行算术解码操作以识别组指示符;根据整数集到可能的组指示符的预定映射,从所述组指示符识别可能整数集;如果在所述可能整数集中存在多个整数,则使用与第一统计元数据的所述数组不同的第二统计元数据预定集对所述样本执行所述算术解码操作的另一级,以识别整数指示符;根据整数到可能整数指示符的预定映射,从所述可能整数集识别最终整数。最终整数和整数范围可能不引用原始范围解码器输入,而是引用范围编码器的输入数据范围。
所述第一统计元数据能够表示组指示符集中的每一个在所述经编码数据集中出现的相应概率,组中的每个整数在待编码信息中出现的概率或这两个选项。
因此,所述方法提供了一种技术,所述技术用于通过减少所述数据集中所需的符号量并且减小传输所述元数据所需的数据大小来从所述经编码数据集对整数进行解码。本发明特别适用于在原始信息中大量使用具有固定大小的元素使得能够通过较少的步骤重新创建那些符号的场景。本发明实现能够使用一个或两个(或多个)算术解码级对符号进行解码,以显著减小总体数据大小并且还降低解码过程的计算效率。
本发明提供将若干整数组合在一起的多个区间。每个组中的这些整数具有相同的初始概率,因为经编码数据集包括所述组而非整数本身的指示符或标志(概率组内的概率可能会发生变化,以使总概率不同于???符号)。当与本文所述的本发明的其他方面结合使用时,将统计数据从所述整数本身错位以及引入信息级特别有益,例如,所述有序树处理提供相似元数据符号和相似元素的聚类的高可能性以及规则地出现诸如[1111]或15等少数符号的高可能性。因此,当与已知技术相比时,减小对这些符号进行解码所需的计算数据大小和并利用此聚类是非常有利的。
优选地,所述算术解码操作是范围解码操作。因此,所述熵解码操作是空间有效的,并且能够以任何基数的数字进行操作。
在某些实施例中,统计元数据表示概率分布函数。因此,所述组指示符由组中的整数将出现在所述待压缩信息中的概率表示。
优选地,所述概率分布函数是分段线性函数。
更优选地,所述概率分布函数是累积分布函数。
甚至更优选地,所述累积分布函数是小于1.0的非递减函数,使得1.0是隐式的。这使得仅使用数个位就能够识别所述统计元数据以供利用用。能够仅用信号通知直方图的连接点,这在保持灵活性并促进解码的同时显著减少了开销。
所述数组的大小能够比由可能组指示符的对应数量指示的可能整数集的数量少一个,并且其中所述累积分布函数的极限是隐式的。因此,减少了元数据开销。
在某些实例中,所述数组的大小能够是6,并且所述累积分布函数的0和1.0能够是隐式的,使得由7个可能组指示符指示7个可能整数集。当与本发明的其他方面结合使用以对所述有序树的节点符号进行解码时,这种配置特别适用。
在某些实施例中,所定义的范围能够是0至15,使得表示16个可能整数。当与本发明的其他方面结合使用以对所述有序树的节点符号进行解码时,这种配置特别适用。每个整数能够表示或等于以2为基数的值,以表示数据结构的特征。
所述最终整数能够表示位无符号数字。不同基数中的实施方式是可能的。
优选地,能够将所述位无符号数字用作数据结构中的元数据,以指示所述数据结构的结构或指示所述数据结构中的数据元素的存在或两者。例如,所述数字能够是如本公开的其他方面中概述的节点符号。
所述可能整数集能够一起分组为集:[7,11,13,14]、[1,2,4,8]、[5,10]、[3,12]、[6,9]、[0]和[15],每个集被映射到对应组指示符。此选择特别适用于减少具有出现的高可能性和聚类在一起的高可能性的整数的级数和计算。在替代性实施例中,能够动态分配分组以便改变组。这些组能够单独地用信号通知或者是预定的
能够基于所识别的可能整数集而选择所述第二统计元数据预定集。也就是说,所述组指示符能够暗示将使用统计元数据的特定集来从所述经编码数据集对所述组的整数进行解码。这允许灵活性、解码效率并且允许组具有不同的组成和大小。
优选地,所述第二统计元数据预定集包括对应于所识别的可能整数集内的整数的数量的值的数量。例如,能够为4个整数的组(其中1.0是隐式的)检索3个累积分布值。
第二统计元数据的所述预定集所述第二统计元数据预定集能够包括表示0.25、0.5、0.75和1.0的累积分布值,其中在所述可能整数集中存在四个整数,并且所述第二统计元数据预定集能够包括0.5和1.0,其中在所述可能整数集中存在两个整数。当与本公开的其他方面一起使用时,这种配置特别适用于提高计算效率。
所述方法还能够包括基于所述经解码最终整数执行后续解码操作以推导数据元素集,以及从所述数据元素集重构所述已经压缩的信息。因此,例如,能够从所述经编码数据集的信息重新创建数据平面。
在优选实施例中,所述方法还能够包括:如果所述可能整数集中不存在多个整数,则选择所述可能整数集中的整数作为所述最终整数。因此,对于某些符号可能仅需要一个解码级,从而在不影响***灵活性的同时大大减少数据开销。
因此,为这个方面提供了灵活***,所述灵活***实现数据大小减小并且提高对某一类型的符号进行解码的计算效率以及传输和聚类的可能性。所述技术实现了实施方式,所述实施方式被配置以便利用符号可能在聚类中或以可能的频率出现的特定方式,以使得能够调整所提出的两级过程来适合于待压缩信息的特定集,并且在使用所述算术或范围译码操作来进行编码之前在原始数据集中利用符号的那种可能出现和扩散。
根据本发明的另一方面,能够提供一种使用算术解码操作来从经编码数据集对符号进行解码的设备,所述设备包括被配置成执行以上方面的方法的处理器。
根据本发明的另一方面,能够提供一种使用算术解码操作来将符号编码成经编码数据集的方法,所述符号各自由所定义的整数范围的初始整数表示,所述方法包括:检索待编码的初始整数;从多个可能整数集识别对应于包含所述初始整数的可能整数集的组指示符;检索第一统计元数据的数组,其中所述第一统计元数据表示所述可能整数集中的每个可能整数具有经检索以在所述经编码数据集中被编码的整数的相应概率,并且其中所述数组的大小小于所定义的范围的大小;基于统计元数据的数组对所述组指示符执行算术编码操作以创建所述经编码数据集;如果在所述可能整数集中存在多个整数,则识别指示所述初始整数在所述可能整数集中的定位的整数指示符,以及使用与第一统计元数据的所述数组不同的第二统计元数据预定集来基于所述整数指示符执行所述算术解码操作的另一级。
检索统计元数据数组的步骤包括:识别整数出现在待编码数据集中的概率,以及基于所述集中的每个整数出现在所述待编码数据集中的所述概率将概率分配到所述可能整数集。所述算术解码操作是范围解码操作。统计元数据可以表示概率分布函数。所述概率分布函数能够是分段线性函数。所述概率分布函数能够是累积分布函数。所述累积分布函数是小于1.0的非递减函数,使得1.0是隐式的。所述数组的大小能够比由可能组指示符的对应数量指示的可能整数集的数量少一个,并且其中所述累积分布函数的极限是隐式的。所述数组的大小能够是6,并且所述累积分布函数的0和1.0是隐式的,使得由7个可能组指示符指示7个可能整数集。所定义的范围能够是0至15,使得表示16个可能整数。所述初始整数能够表示位无符号数字。能够将所述位无符号数字用作数据结构中的元数据,以指示所述数据结构的结构或指示所述数据结构中的数据元素的存在或两者。所述可能整数集能够一起分组为集:[7,11,13,14]、[1,2,4,8]、[5,10]、[3,12]、[6,9]、[0]和[15],每个集被映射到对应组指示符。能够基于所识别的可能整数集而选择所述第二统计元数据预定集。所述第二统计元数据预定集能够包括对应于所识别的可能整数集内的整数的数量的值的数量。所述第二统计元数据预定集能够包括表示0.25、0.5、0.75和1.0的累积分布值,其中在所述可能整数集中存在四个整数,并且其中所述第二统计元数据预定集能够包括0.5和1.0,其中在所述可能整数集中存在两个整数。所述方法还能够包括:如果所述可能整数集中不存在多个整数,则执行新的解码操作。
根据本发明的另一方面,能够提供一种使用算术解码操作来将符号编码为经编码数据集的设备,所述设备包括被配置成执行以上方面的方法的处理器。
根据本发明的另一方面,能够提供一种计算机可读介质,所述计算机可读介质在由处理器执行时使所述处理器执行以上方面的方法中的任一个。
附图说明
现在将参考附图描述根据本发明的***和方法的实例,在附图中:
图1示出了在解码之前和重构之后值的网格;
图2a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图2b说明了在图2a所说明的过程的级处重新创建的网格;
图3a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图3b说明了在图3a所说明的过程的级处重新创建的网格;
图4a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图4b说明了在图4a所说明的过程的级处重新创建的网格;
图5a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图5b说明了在图5a所说明的过程的级处重新创建的网格;
图6示出了有序树到网格的Morton顺序映射的表示。
图7a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图7b说明了在图7a所说明的过程的级处重新创建的网格;
图8a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图8b说明了在图8a所说明的过程的级处重新创建的网格;
图9a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图9b说明了在图9a所说明的过程的级处重新创建的网格;
图10a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图10b说明了在图10a所说明的过程的级处重新创建的网格;
图11a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图11b说明了在图11a所说明的过程的级处重新创建的网格;
图12a说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的中间级;
图12b说明了在图12a所说明的过程的级处重新创建的网格;
图13说明了根据本发明的实施例的字节流的逻辑表示和处理有序树的概述;
图14说明了具有非活动区的矩形2D网格;
图15说明了根据本发明的实施例的字节流的逻辑表示和处理的示意性流程;
图16说明了在图15所说明的处理之后的有序树;
图17说明了耦合的去稀疏化和解码模块的概述;
图18说明了耦合的去稀疏化和解码步骤的概述;且
图19示意性地说明了范围解码器;
图20示意性地说明了过程;且
图21示意性地说明了字节流。
具体实施方式
本发明提供了一种用于对数据,具体地图像和视频数据进行编码和解码的技术和设备。本发明具体地提出了一种用于将稀疏2D数组编码为数据流并从编码的数据流重新创建稀疏2D数组的技术。
本发明技术利用了待解码和/或编码的2D数据数组的稀疏性。也就是说,期望的数组中零的相对数量以及这些零值在数组中的分组方式。类似地,所述技术在频繁出现的值具有任何预定值(而不是零)而不是相同且分组在一起的情况下是有益的。
通常,数据可以具有任何性质,只要可以将值映射到2D数组中即可,尽管这些技术也适用于线性数据,并且最有利于图像重构。在图片或视频的情况下,数据可以是与色彩空间相关联的值(例如,RGB色彩空间中的红色分量的值,或YUV色彩空间中的Y分量的值,等),或替代地数据可以是残差数据(无论是否变换)或用于对字节流进行解码的元数据。在本申请中进一步定义了残差,但是一般而言,残差是指参考数组的值与实际数据数组之间的差。
应注意,以下描述中描述的技术与经解码数组的含义或用途无关。实际上,例如讨论了从经编码字节流或位流中解码稀疏数组的概念。当然,可以使用数据集来通过组合多个经解码数据集重构更大的数据集。重新创建后,数据可以表示已压缩的任何信息,诸如图像或声波图。
多个个别数据集可以组合以重构更大的数据集,并且可以根据用于并行处理每个数据集的最佳大小来选择更大数组内的个别数据集的维度。例如,使用OpenCL术语,可以通过限制子数据集的维度使每个数据集的工作项目效率更高。
以下描述涉及对具体稀疏数组进行去稀疏化和解码的说明性实例。具体地,描述示出了去稀疏化和解码的过程可以如何彼此交互。尽管描述涉及具体实例,但是本领域技术人员将容易理解其背后的一般原理以及可以如何将过程更普遍地应用于对数据进行去稀疏化和解码。
图1说明将贯穿整个本说明书中使用的重新创建的稀疏2D数组100的实例。此数组是在实例字节流中编码的重新创建的数组。可以看出,数组包含大量零和少量非零值簇,作为符号。
本发明技术通过不发送或隐式地用信号通知数组稀疏(或一致)的象限(或块)来利用数据的稀疏性或一致性,并因此实现压缩增益。此外,由于解码器不需要在内存中存储大量数据或监视所定义的符号,因此可以提高解码器效率。
如果没有针对数组中的象限发送任何数据,则在解码器中当然会带来重大挑战。下文提出了一种技术,通过所述技术,解码器可以有效地重新创建稀疏数据的2D数组,其中许多稀疏数据尚未收到,而任何非零值都准确地位于所述数组内。具体地,用于对数据进行编码和/或解码的特定结构以及用于对所述结构进行解码的顺序使得所述技术能够最小化解码器需要接收的信息量,从而优化解码并减少待传输的数据量。此外,数据结构和实施方式在处理能力、速度和内存使用方面均提供了有效的实施方式。
在解码过程期间,建立有序树。将来自字节流的代码符号转换成经解码符号,并附加到树的节点上。本发明引入了特殊符号,解码器使用所述特殊符号来建立树。在此将此特殊符号称为节点符号。节点符号向解码器指示如何建立树。节点符号中包含信息,所述信息告诉解码器如何将信息从字节流映射到树,以及可以在字节流中期望什么。使用具体的遍历顺序,解码器将节点符号映射到树,并且随后可以将字节流中接收到的数据映射到树中正确定位的叶。然后将空间信息或原始信息的顺序包含在树内。节点符号和遍历的映射在树中留出了空白空间,可以对其进行模拟或推断,以指示预定值位于原始信息中的所述定位但未在字节流中发送。
在字节流内,节点符号被散布。也就是说,节点符号和数据符号出现在字节流内彼此之间或彼此当中,并且不同的符号也可以视为在字节流内彼此分布或分散。字节流的特征在于解码器在解码过程之前无法知道节点符号和数据符号的顺序。因此,符号的散布没有设定或预定的排序。数据符号的定位是从节点符号内包含的信息中推断出的。节点符号和数据符号可能不会在字节流中一个接一个或规则地出现,而是会不规则地出现在字节流中,但不是随机出现。
以下更详细说明了过程。参考图2a,技术首先读取流200以识别第一符号。通常,这些图以及例如图2a示出了接收到的字节流200的表示。可以理解,表示200不是真正的字节流,而是逻辑表示。出于描述的目的,假设解码器知道或以其他方式已经从更宽的字节流中识别出了流长度以及其他元数据,并且仅考虑一个具体的简单的经编码数据集。将逻辑表示分为字节或半字节。逻辑表示是一系列的四位值或半字节,每个表示T节点符号204(节点符号),以及一系列的四个符号205(数据符号),每个表示顶层或层0中的一个值和节点。当解释对数据进行解码的过程时,这将从下文变得清楚。
解码器通过建立树201开始。树是计算机科学中众所周知的数据结构。具体地,树是有序树,即,树是有根树,其中子树的顺序很重要。示例性树201是由节点和连接节点202的边缘组成的四叉树,然而,取决于待压缩信息,可以利用二叉树、八叉树和其他树。父节点通过边缘连接到子节点。在四叉树中,每个父节点正好有四个子节点。四叉树可以包含许多叶节点。叶节点定义为不包含任何子节点的节点,并且替代地可以称为外节点或终端节点。根节点定义为无父节点的节点。包含父节点和子节点两者的节点称为内节点。
本发明技术定义了一种称为稀疏四叉树的数据结构。在稀疏四叉树中,每个父节点具有正好四个子节点,或者没有子节点。
如上所提及,在建立树后,树的顶层210或最后一层包含数组100的数据值。树中包含数据值的顺序表示数组的空间信息。在本实例中,由于说明了使用四叉树重新创建16×16数据网格的概念,因此树中有四个层和一个根,提供256个可能的叶,每个叶表示16×16网格中的值。如所提及,其他大小的网格可以利用不同的有序树。
在解码期间,以通常从下到上的定义遍历树201;也就是说,通常从最低级别到最高级别遍历树201。通常尽可能贪婪地从低到高遍历树,并交织以最小的回溯来在整个广度上进行扫描。在一个实施例中,以深度优先前序的方式遍历树。这允许将空间信息用作编码和解码过程的一部分。它还确保以与对元素进行编码的顺序相同的顺序对元素进行解码。在其他实施例中,可以采用其他遍历方法来利用图块结构的其他方面,诸如广度优先、中序或后序。重要的是在解码中使用与编码相同的遍历,以确保保留空间信息。因此,稀疏四叉树数据结构定义了数据的例子和定位。
字节流200中的数据可以是节点符号204或数据符号205。节点符号204是一系列二进制值或标志,它们向解码器指示树201中的特定分支是否具有期望的子节点,其中如果所述分支的顶层后代的数据集中包含数据节点,则分支具有期望的子节点。也就是说,字节流包含有关是否存在子节点的信息。如果不是,则可以假定来自所述节点的所有后代叶都是相同的预定值(在实例中,值为零)。当解码器遍历树以到达叶(顶层中的节点)时,字节流200包含一系列四个数据符号205,每个数据符号表示树的叶的值。随后可以使用定义的顺序将树映射到网格,其中树上的每个叶对应于网格中的定位。以这种方式,网格的空间信息是固有的或是由树的结构预定的,并且不会用信号通知所述信息。
如上所述,节点符号和数据符号散布在字节流内。当解码器解析字节流并建立树时,它可以将识别的数据符号分配到树内的数据定位。通过以预定的遍历建立树,解码器可以预期流中的下一符号将是数据符号还是节点符号。
如果表面小于16×16(对于具有5层的树),则解码器可以在一些级预期已从字节流中省略“为16×16表面预期作为下一符号的内容”,因此可以预期不同的下一节点或数据符号。例如,仅可以传输在用信号通知的区域中的节点符号和数据符号,由此防止某些节点符号和数据符号的发送和接收。类似地,节点符号的某些位可以被设定为任何值,但是在解码期间可以不被视为对应于数组的面积的实值。用信号通知的区/体积也可以包括每个节点,其节点符号具有掩蔽位和非掩蔽位的混合,如下所述。
当到达顶层时,字节流将优选地包括用于分支的所有四个数据符号,即使所述数据符号对应于预定值,即对于稀疏树为零。也就是说,针对外层或最低抽象级别中的所有节点对数据符号进行显式编码。当在网格表示中考虑到这一点时,当块中的至少一个值不为零时,发送最小块中的所有值。可选地,不发送对应于树中倒数第二层的节点符号,而是由解码器隐式假定所述节点符号。由于在这种情况下显式发送数据符号,因此将理解,此层中的节点符号应理解为包括正标志集(或[1111],如从下文的描述中变得清楚)。请注意,值可以不是正值,但可以是掩蔽值。
查看此隐式信号通知特征的另一种方法是,仅在树的被访问节点存在孙节点的情况下,才发送节点符号或将节点符号包括在字节流中。换句话说,节点符号应具有孙节点。无代码层的数量(当前为1)可以是可更改的。
在解码器处,因为它知道不要期望此层的节点符号,所以当在遍历中访问此节点时,解码器可以假定待检索的符号是数据符号,并可以相应地建立树的分支。
已经发现,隐式节点符号信号通知和显式数据符号信号通知的这种组合在最小化内存存储的同时实现了最佳效率。由于未在字节流中发送层的节点符号,而是发送了外层中的所有数据符号,因此总体上,这在实践中实现了效率增益,其中在统计上很可能在整个数据集中将非零值聚类或分组在一起。
在现有技术中,没有考虑对稀疏化之后的后续编码级的影响。根据本公开,在有助于熵编码器避免对稀有符号进行编码的情况下,可以忽略稀疏性。同样,如果稀疏性不足以证明节点符号正当(这将成为隐式[1111]),则本发明可选地允许通过布置来实现密集的四叉树。
在附图中,在标记为a的图中说明了建立树的级,而在标记为b的图中说明了网格处理的知识。因此,在图2a中,过程知道树201具有根202,并且由于它是四叉树,因此它具有四个分支203。此过程尚不能推断出任何信息以映射到2b的网格100。
如图2a所示,重构的树结构具有层集。层被视为与根具有相同距离的节点的子集。距离是两个节点之间的最小分支(或边)数。层数由待重构的数组的大小设定。此大小可以是预定的,也可以在字节流中用信号通知。
在组合多个数据集的情况下,层数对应于网格的维度,因此可以设定成优化并行处理,也就是说,使每个工作项都达到最佳效率。
实例考虑了四叉树,但是节点可以具有任何数量的子节点。树因此可以被称为n-树,即没有节点具有多于n个子节点的树。也就是说,四叉树是n-树,其中n为4。四叉树在本领域中是众所周知的,且是一种树数据结构,其中每个内节点正好有四个子节点(叶节点除外),并且所有叶都在同一级别上,所述级别对应于网格中的定位。数据可以紧凑地存储在作为隐式数据结构的数组中。
在所描述的实例中,树具有四个层207、208、209、210和根206,所述层和根重构树以形成16×16网格。也就是说,上升值为4。上升值是n-树的根的海拔的绝对值。它对应于除根外的n-树中的层数。海拔是一个索引-j,它随到根的距离增加,在到根的最大距离处达到0。注:-j始终≤0。换句话说,n-树中的层数对应于上升值加1。
为了完整起见,海拔-j-1处的节点是海拔-j处的节点的父节点,其中两个节点仅通过一个分支链接在一起,且海拔-j+1处的节点是海拔-j处的节点的子节点,其中两个节点仅通过一个分支(或边缘)链接在一起。海拔-j+x处的节点是海拔-j处节点的后代,其中x是两个节点之间的距离,且海拔-j-x处的节点是海拔-j处节点的祖先,其中x是两个节点之间的距离。
在解码器已经读取字节流后,解码器开始建立树201。在此级处,如图所示,网格100是空的。解码器知道树201必须具有根节点202,并从所述根节点202模拟四个分支203,因为解码器知道树201是四叉树(或4叉树)。因此,根202和前四个分支203是已知的或假定的。
在描述模拟的步骤的情况下,对本领域技术人员显而易见的是,这些步骤仅用于说明,并且可以由本领域技术人员以不同的方式或顺序来实施。
可以以任何已知的方式遍历树。此处的实例使用深度优先的方法,特别是深度优先前序遍历。深度优先前序遍历可以被视为从最小海拔到最大海拔遍历有序树的策略。如果到达叶,则策略将在遍历同一树的其他部分之前回溯所述叶的祖先。
换句话说,在进入下一兄弟节点之前,在每个子节点上尽可能加深树。在上下文中,解码器将从树的根206开始,并在退回到前一层中的下一兄弟节点之前,尽可能远地朝向层0 210(即顶层)行进。在已经访问所述层中的所有兄弟节点之后,解码器将重复退回,直到完成所述网格的深度优先前序遍历为止。
返回到图2a的实例,取流200的第一4位值204。在此实例中,值为1000。此值可以被称为T节点符号。标签是附加到树中节点上的数据,而不是树的结构和节点顺序中隐含的数据。T节点符号通知解码器流中的数据,并告知解码器如何重构树201。
在流的4位值(T节点符号)中,“1”指示节点的子节点是期望的子节点,也就是说,将在流中发送表示所述节点的子节点的数据,或替代地,“1”指示子节点将具有自身的子节点,因此其将存在。另一方面,“0”指示不期望节点的子节点,也就是说,不会在流中针对这些节点发送任何数据,并且不期望针对所述分支接收到任何子节点,或替代地,“0”指示子节点将不会有自身的子节点,因此其将不存在。解码器可以假定来自那些后面的分支的所有叶都是零值。这将可选地进行模拟,并在下文中予以描述。
在根节点201的分支203的末尾处,解码器现在知道存在具有将在流中接收数据的其他子节点的节点和不再发送或将不发送其他数据的三个节点。
以深度优先前序遍历顺序并参考图3a,过程移至最左边的节点302。在T节点符号204中,在流中针对此分支接收到1。应记起,T节点符号204指示将接收到其他数据,取流的下一4位值304。在此实例中,值为1010。如图所示,解码器模拟所述节点302的4个分支。再次,不能推断出3b的网格100中的信息。
箭头311示出了遍历,如将在下面更详细地解释。遍历最左边的分支303,并且由于T节点符号302的第一值是‘1’,所以解码器寻找下一4位值。解码器现在位于层-2 208,如图4a所示。如图所示,在紧接着404中检索到的数据是1000,表示对于最左边的分支403,将接收其他数据,但是对于剩余的三个分支,将不发送其他数据。再次,不能推断出图4b的网格100中的信息,并且箭头411说明了遍历。
解码器现在已从层-2 208的最左边节点填充层-3 207和层-2 208的根和最左边部分,如图4a所示。移到图5a,由于解码器已经到达层-1,因此它现在期望4个数据符号。应注意,如果解码器达到所述级别,即使实际值为零(对于稀疏数组或替代地与预定值相同),也将发送层0中的所有值,因此对于层-1 209,不会用信号通知任何符号,因为这将始终是已知的,并且没有任何符号附加到此层的节点512。
现在,解码器从流中获取数据符号,以在顶层的节点513中填充树。在实例中,符号或值为‘2’、‘3’、‘1’和‘0’,并且解码器填充树,如图所示。在示例遍历顺序中,从左到右用符号填充树,并且层0(顶层)中的每个叶是已知的。可以将这四个数据符号视为标签的一部分,应记起标签是附加到树的节点的数据。511再次示出了遍历顺序。
由于此象限中的第四个数据符号为0,因此,并不发送层-1的节点符号,其在此实例中为[1110](仅当选择隐式发送第4个符号的预定值时),优选的实施方式而是直接将针对此象限的所有数据值包括在字节流中,即使值是零(或预定值)。换句话说,所有兄弟节点数据值都在至少一个兄弟节点非零的情况下发送。以这种方式,无需发送层-1节点符号。已经示出,层-1的节点符号的隐式信号通知和每个包含非零值的2×2块的所有值的显式信号通知比仅发送非零值并用信号通知其在字节流中的定位更有效。
如果例如树是二叉树,则代替对倒数第二层编码和发送倒数第二层,字节流而是包括两个数据值,其中两个相邻数据值中的至少一个是非零的。
在检索到数据符号后,在优选的实施方式中,可以将所述数据符号下面的树丢弃到不再需要的程度。以这种方式,由于散布的数据符号导致不需要网格的整个结构以便准确地识别或放置数据值,因此可以实现对内存资源的有效利用。
以下是本实例的概述:
1)字节流(1000)的第一T节点符号对应于根层的T节点符号。
2)字节流(1010)的第二T节点符号对应于层-3的T节点符号。
3)字节流(1000)的第三T节点符号对应于层-2的T节点符号。
4)不存在针对层-1发送的T节点,因为层-1的T节点将始终为(1111),因此,在层-2的T节点符号指示针对所述分支存在子节点和数据符号后,则所述节点隐式存在。
5)标签中的值对应于层0,并“附加”到层-1的分支。
为了进一步澄清,从根层到层0,数据结构中共有五层(其中一层是节点集)。每个层都与数据集相关联。在根层、层-3和层-2的情况下,此数据集称为‘T节点符号’或节点符号(这些术语可以互换使用),并有效地指示来自具体层的四个子节点将具有子节点(在这种情况下,其逻辑值为“1”)还是不具有子节点(在这种情况下,其逻辑值为“0”)。在不存在子节点的情况下,这指示在树的所述分支的顶层中不存在任何数据符号。层0是一个特殊的层,因为它包含叶,即不具有子节点的节点,具体地在那些叶中包括数据符号。
在字节流中,将存在针对根层、层-3和层-2的节点符号。由于节点符号的工作方式及其含义(如本申请中所述),并且由于层0是“最终”层的事实,因此隐式发送层-1的节点符号,因为层-2中的节点符号已经隐式指示了层-2的子节点(即层-1)是否具有子节点。假设子节点只能是层0中的数据符号(例如,残差或元数据),则字节流将仅直接指示层0数据符号。应注意,每个数据结构最多有21个节点符号(根一个,层-3最多四个,层-2最多16个)。
从命名的角度来看,术语“标签”可以是指:(a)根层或层-3的节点符号(例如,在当前图中,它们将是数据块[1000]和[1010]);(b)层-2的“组”和层0的数据符号(例如,在当前图中,它们将是字节流中的第三和第四数据块,即[1000]和{2,3,1,0}或字节流中的最后四个数据块,即[1110]、{1,2,1,0}、{2,2,1,0}和{0,2,0,1});且(c)层0中的每个个别数据符号(例如,在当前图中,数据块{2,3,1,0}、{1,2,1,0}、{2,2,1,0}和{0,2,0,1}中的每一个)。
现在,具有可以映射到网格100的值,如图5b所示。在填充树时填充网格还是在填充树之后填充网格并不重要,但是出于说明目的,此处当将数据放入树中时填充网格。如上所述,可以使用数据结构固有的空间信息来映射树。在实践中,过程可能要等到整个树都被填充为止。
在实例中,每个数据符号或值被称为离散值,然而在优选实施例中,数组中的值是相对于数据集中的另一个符号的差分编码值。换句话说,除了网格的第一未稀疏化元素中的绝对值之外,差可能是相对于先前未稀疏化元素的值。例如,如果第一值为4,且第二值为5,则检索到的第一值为4,且第二值为1,这是第一值和第二值之间的差。如将理解,可以在映射之前或作为映射的一部分将差值转化成实值。
如图5b所示,经解码值的16×16网格100可以由接收到的符号来填充。网格是完全填充的密集矩形2D数组。四个符号表示网格左上方的2×2块。
在实例中,2×2块排序为:左上、右上、左下、右下。如将理解,在实践中,此顺序可以是任何顺序,前提是编码器和解码器是一致的。
在实例中,流中的值应以深度优先顺序进行交织,所述深度优先顺序对应于图像空间中的z序。在实例中递归地定义了z序,但是如可以理解的,当然可以是任何顺序。z序是重叠的二维对象的排序。在实例中,树的数据以Morton排序映射到网格。Morton排序将多维数据映射成一维,同时保留数据点的位置。它是由G.M.Morton在1966年引入。将实例的Morton顺序细分为2×2的块。在本领域中使用术语z序、Lebesgue曲线、Morton顺序或Morton代码。
Morton排序在本领域中是众所周知的并且应被理解。还将理解,可以利用从树到网格的数据的任何合适映射。
在实践中,使用2×2块的Morton排序意指对于8×8网格,树的符号以如下示例顺序映射到网格:
当考虑将树映射到网格时,可以认为z序映射导致树的每个分支都是网格的象限。层-1分支各自是2×2块,层2分支各自是4×4块,而层-3分支各自是8×8块(根表示16×16网格)。Morton排序和深度优先前序遍历如图6象征性地说明。
尽管Morton排序是优选的排序,但也可以考虑使用其他顺序,诸如Hilbert空间填充曲线,也称为Hilbert模式或Hilbert曲线,这些顺序可以取决于待压缩的数据和非零元素在数组中的可能定位来提供实施方式或效率增益。在某些情况下,Hilbert曲线排序也将具有更好的位置保留特性。
参考图5a和图5b,可以看出前四个符号已经被解码和映射。遵循遍历顺序,解码器对树进行解码,如图7a所示。箭头711示出了遍历顺序。由于先前针对层-2接收到的数据指示此节点的值为0,因此解码器能够模拟或推断树的稀疏部分并将零值映射到网格。在T节点符号中接收到0的情况下,0指示不针对所述节点发送任何数据。如果没有数据待发送,则解码器假定值为零。
当前上下文假定网格是稀疏的,因此假定在不发送数据的情况下值为零。当然,应容易理解,任何值都可以用作未发送的值。例如,未发送的值可以是任何值或1。
如图7a所示,过程假定顶层210中的值713为零,并模拟树。然后,还可以遵循z序映射将零值映射到网格100上,如图7b所示。将四个零值映射到先前映射的2×2块右边的2×2块。
虽然在此处描述了模拟过程,但是将理解,可以针对所述分支终止遍历,并使用推断的值填充网格,而不必模拟树,因为这些值将通过遍历终止来指示。然而,在此处将模拟描述为一种实施选项,所述实施选项可以使技术概念的表达更加清晰。
模拟过程如图8a所示继续。在此图中,为清楚起见,删除了树的最左边分支。先前解析的节点符号指示遍历811中的下一节点终止。因此,解码器可以模拟此节点的叶813在层0中是稀疏的。可以根据z序映射将零符号映射到网格。如图8b所示,将2×2零值的块输入到放置的第一块的下方,即4×4象限的左下方。
网格100中的象限是通过模拟所述节点的最终叶913来完成的。由于所述节点的节点符号指示为1000,因此可以模拟稀疏值,如图9a所示。零值根据z序映射到4×4象限的最终2×2块,如图9b所示。输入零值的2×2块作为象限的右下块。现在,过程具有完整的象限。在实践中,可以针对每一层在一个单一步骤中进行模拟(例如,同时模拟与所述层中的零节点符号相关联的所有节点,并且将对应的零映射在网格中)。模拟可以是概念上的过程,即隐式而非显式地进行。
图10a说明了深度优先前序遍历。箭头1011指示过程如何遍历树以考虑下一节点。现在,过程沿树下降,所述树已经填充了来自上一个节点的所有分支。然后过程继续到兄弟节点。兄弟节点是具有相同海拔和相同父节点的节点。由于所有叶均已填充,因此要考虑的下一节点是层-2中的兄弟节点。
参考图11a,应记起父节点的节点符号是1010。因此,由于与第二分支相关联的节点符号为零,因此过程期望不会在此分支(即兄弟节点)的流中接收到任何数据。因此,来自此节点的所有叶都可以模拟为零值,也就是说,来自此节点的层0中的所有值均为零值。换句话说,此象限中的所有值均为零。在模拟树后,可以将值映射在网格上。如图11b所示,遵循z序,象限右上方的4×4块都可以映射为零值。
通过遍历树,下一兄弟节点由节点符号指示为在流中具有数据(对应的节点符号为1)。因此,过程从流中检索下一节点符号1204。如图12a所示并如图12b中重构,在此实例中,下一节点符号为1110。此节点符号指示层-1中的三个节点(即,来自层-2中的节点的三个子节点)具有包含非零值的节点。最终节点仅包含零值。在图12a中,某些节点和分支已被删除,并且箭头1211指示遍历。
过程以类似的方式继续进行,并且从字节流中检索符号,使用这些符号作为层0中的叶来建立树,并根据z序映射将这些符号映射到网格。为简洁起见,未说明后续步骤。对于此节点的最终兄弟节点,由于在T节点符号中指示为0,因此从流中未检索出任何数据。过程将利用作为来自此节点的层0中的叶的零值来模拟树。将零映射到网格以完成象限。使用节点符号将层-2中的节点的最终兄弟节点指示为稀疏,并且过程使用来自所述节点的后代的所有叶的零值填充树。将零映射到网格,其中零值针对象限中的所述4×4块。
现在,遍历将遵循遍历顺序追溯到层-3中的下一父节点。由于从流中检索到根节点的第一节点符号指示此分支在流中没有节点符号,因此可以推断出,层0中来自此分支(从根开始的第二个分支)后代的所有叶均为零值。因此,过程重构密集树,同时为此子树中的所有叶模拟零值。将零映射到网格。8×8象限全部由零表示。此8×8象限可以称为稀疏化区域。稀疏化区域是包含零的网格区域,所述零在流中未编码,但默认情况下已知为零。稀疏化区域外的零以与非零相同的方式从节点符号中解码。
可以模拟树的每个分支,并且每个叶依次用零填充。然而,线性步骤不是必需的,并且过程可以智能地识别所有叶均为零,并在一个步骤中将零映射到网格。
根的所有兄弟节点都遵循相同的过程,如原始根节点符号所示。现在,用最终两个8×8象限完成网格,所述象限与来自树的零值映射。
在过程终止并且进行了所有模拟后,解码过程已经有效地重构了接收到的稀疏树的密集对应物。也就是说,树,其中原始n-树的根层上方的每个节点都有n个子节点,并且每个层都是密集的。
图13说明了概述,并且应记起图1是重新创建的数组。示出了16个叶以及对应的T节点符号。字节流中已接收到16个符号(或标签)。已将240个零“隐式”编码为节点的T节点符号,并且解码和去稀疏化过程指示对区域进行了稀疏化。在从字节流推导出的接收到的树中,存在7个节点,而没有后代节点。在过程中可选地模拟这些节点的子节点,以推导出密集树。将树映射到在2D数组中准确定位16个非零值的网格,同时稀疏的零区域放置在网格内,而没有在字节流中发送数据。
通过使用树结构、节点符号(其告诉过程哪个分支将具有子节点,和哪个分支将不具有子节点)以及深度遍历顺序,过程可以通过仅发送少量信息来重构完全稀疏化的网格。如上所述,由于可以提高解码器的效率,因此可以提高其性能。过程将已构建的树映射到网格上。网格可以包含稀疏化区域,即包含零的网格区域,所述零在流中未编码,但默认情况下已知为零。稀疏化区域外的零以与非零相同的方式从节点符号中解码。
上面的实例考虑了正方形网格,具体地是16×16网格,其中存在5个树层,因此具有256个节点。如图14所说明,在具有虚线示出16×16正方形网格的矩形网格1400的情况下,可能存在掩蔽位,其指示树的各部分是不相关的并且未被考虑。树仍是有序的,但可能不再是完整的四叉树,因为树的一部分可能没有完成。树的用信号通知的部分被视为活动体积。如果存在0或4个子节点,则树可能是完整的,可选地,树可能是不完整的。
如果树的用信号通知的部分是环形空间,并且已将解码器设置为对环形视频(例如,从在太阳方向看不到任何东西的太空飞船)进行解码,则四叉树将具有特定且可预期的活动体积来确定掩蔽。所提出的技术在解码器中的实施可以在预定算法的控制下使环形空间成直线地逐帧来回移动。另一实例仍然是矩形,但是相机中的像素损坏,这是一个非常普遍的问题。在另一实例中,在一段时间的退化之后,可能存在无用像素的区域。
图14的实例示出了包含在16×16的网格内的5×10的活动体积1416。网格1415的掩蔽部分用‘x’用信号通知。可以使用字节流中的元数据来用信号通知活动体积的大小。解码器将忽略节点符号的对应于在用信号通知的活动体积外的块的任何部分。因此,节点符号的那些位可以是任何值,并且通常由解码器选择以优化熵。可选地,可以不传输节点符号的位。例如,在图14中,右上方的8×8块和右下方的8×8块两者都在活动体积之外。因此,字节流的第一个节点符号(与树的根相关联)将为1x1x。也就是说,节点符号的第二和第四位可以是任何值。在建立树时,解码器将忽略第二和第四位,因为解码器知道第二和第四位存在于已被单独告知的活动体积之外。当遇到掩蔽位或对应于未用信号通知的或掩蔽的区域的节点符号的位时,针对所述分支的树的处理将终止,即针对所述分支的遍历将终止,并继续按顺序进行到下一节点。
上面已经描述了节点符号可以如何表示稀疏或包含公共预定值的数组的部分。可选地,为了改善先前或后续编码级的编码,还认为可以将公共或预定值作为数据符号显式地用信号通知,并且在节点符号中设定对应的正标记。也就是说,尽管区域是稀疏的,但是仍可以在字节流中显式地用信号通知值,并且在字节流(和树)中对应地设定节点符号,以使解码器对所述值进行正确地解码并空间定位所述值。当稀疏值或公共值是表示成本低廉的值时,或者在数据流的这种人为修改可以在编码链中的后续熵编码级中提供改进的熵编码的情况下,这种选择性稀疏化可以提供益处。选择性稀疏化可以通过分析预测的字节流、机器学习、统计分析或通过反复试验和错误来自动设定。
上面的描述给出了如何在二维网格的压缩中使用本发明的稀疏树的实例,然而,下面还提及本发明还可以适用于线性网格或一维数组的压缩。给出的实例是一维或二维的。实际上,技术可以应用于任意数量的维度,并且可以使用非4-树的n-树。例如,将Morton顺序的3D变体与八叉树而不是四叉树结合使用将允许进行体积成像。作为另一实例,可以用四叉树示出一维去稀疏化,但是用二叉树(即2-树)可以进行很多相同的操作。
待解码的示例1D数组具有50个元素,从0开始编号。假定此维度信息是预先给出的。预先知道,在算法末尾未显式解码的每个元素的默认值为0。预先不知道待显式解码的元素数量,但期望保证至少为1。显式解码的元素可以为非零或0。
预先知道数据的描述具有五个层,如图15所示。检索到的符号中的值指示如何导航树的层。通过遵循图上的标注0、1或x,得到层0中待显式解码的那些元素。这些选择的含义是:
1意指“跳至+1更深层中的第一节点”(更深意指是在层0的方向上)
0意指“继续到当前层中的下一箭头。如果没有其他箭头,则回溯到-1更浅层。”
x意指“不在乎是0还是1,而是执行1动作”
图15中的节点符号的一些数字已用“x”掩蔽。这与小于(16,16)的(4,3)有关。掩蔽数字指示对应的子节点本身处于非活动状态,并自动具有零个子节点。这些掩蔽数字的值在解码中不起作用,并且可以由编码器进行优化以最小化熵。
因此,从根或层-4开始,并遵循逻辑字节流1500,第一符号是1,这意指跳到更深层中的第一节点(步骤1501)。检索下一符号。在此,第一位是1,因此跳到更深层中的第一节点(步骤1502)。检索下一符号。第一位是0,因此沿着同一层继续(步骤1503)。由于位于指示数据值的层中,因此未显示地用信号通知1D数组的前四个元素,并将所述前四个元素假定为预定值。
再次,接下来读取0,因此沿着同一层继续(步骤1504)。下一位是1,这指示应移至更深层(步骤1505)。现在,到达应在其中检索数据值的层。检索数据值并将其放置在树中的此定位(步骤1506)。然后,遵循遍历顺序,再次追溯树,并读取符号的最后一位(在这种情况下为0),因此继续操作(步骤1507)。由于已到达符号的末尾,因此在遍历顺序之后再次沿树上升,并继续执行过程。
在已遵循字节流后,如图16所示,对树进行了填充。树是有序的4-树,因此兄弟节点是有序的(在此图中,顺序是从左到右),并且只有层0中的节点可以具有标签。顶层包括在字节流中用信号通知的显式元素值。层-3中的三个右手节点处于非活动状态,因为50个元素的数组长度小于65。层-3符号中的x标注指示此位的值是不相关的,并且可以是任何值,因为其被忽略。过程仅与前50个符号有关,因为知道这是数组的长度。即使所有50个元素都是显式的,这些节点也将保持无子节点。例如,此实例对1D数组的位置8、9、10、11中的元素进行显式译码。显式元素分别具有显式值2、3、1、7和4、0、8、12,如相关节点上的标签所示。
解码顺序从三个节点符号开始,然后是4个数据值,接着是另一节点符号。并不知道后面的符号是节点符号还是数据符号或值,直到先前的节点符号已被解码为止。
一般来说,对字节流进行编码的过程基本上与解码的过程成镜像。也就是说,编码过程分析数组,建立有序树并将数组的值映射到所述有序树。编码过程输出散布的节点符号和数据符号的集合,其中节点符号表示数据符号在数组中的定位,并隐式地用信号通知数组的稀疏区域。在过程期间,将生成节点符号并将其与树的节点相关联,所述节点符号表示在网格的不断减小的象限中是否存在正值。遵循预定顺序,编码器分析不断减小的象限,直到其达到网格中存在的值,然后将其输出为止。
以下提供了示例性编码技术的简短概述。与上面的解码技术一样,编码技术可以应用于任何尺寸的数据,但为简单起见,将引用16×16网格,如图1所说明。
首先,编码器假定待编码的信息中至少存在一个非零值。如果网格是完全稀疏的,则可以单独用信号通知以实现压缩增益。同样,在我们引用非零值的地方,它可以是任何一致的值。
编码器首先建立有序四叉树的根。再次,此处使用四叉树,但是可以适当地使用任何树。由于使用的是四叉树,因此编码器知道将存在四个子节点。
然后,编码器分析网格的每个象限,以识别象限是否稀疏。在图1的实例中,左上象限包含值,而其他所有象限是稀疏的。因此,编码器可以识别出根节点的节点符号将为[1,0,0,0],表示三个象限稀疏,而一个象限包含值。
应记起,优选地,Morton顺序用于所述过程。因此,象限根据所述顺序映射到节点符号。Morton顺序继续并将左上象限分析为四个子象限。
可选地,编码器可以在将符号***字节流之前建立整个树,或者可以查看整个网格并将符号***层的字节流中。对于此实例,编码器将渐进地(也就是说,随着其前进)将每个符号***到字节流中。
因此,编码器将节点符号[1,0,0,0]发送到字节流,并将节点符号与树的根相关联。这在图2中示意性地说明,其中将开始建立树并且第一符号204已经被***到字节流中。
从上面将理解,四个子象限中的每一个对应于下一层中的一个节点。这当然是遵循Morton顺序。因此,树的根对应于16×16网格,其中节点符号的每个元素与根相关联,对应于四个8×8象限。下一层(层-3)对应于四个8×8象限,并且与层-3的四个节点相关联的每个节点符号对应于四个4×4象限。下一层(层-2)对应于十六个4×4象限,并且与层-1中的节点相关联的每个节点符号对应于四个2×2块等。然而,如先前所解释的,针对层-1,不存在用信号通知的任何节点符号,因此可以假定此节点符号不存在。实际上,它不是节点符号,因为节点符号应具有孙节点。因此,尽管层-1对应于2×2块,但它不具有相关联的节点符号。编码器和解码器两者知道不期望或用信号通知此层。
参考图6,将理解象限的抽象级别。
因此,返回图1,并且由于与根相关联的节点符号指示左上象限中存在值,因此遵循深度优先前序遍历,进一步分析8×8象限。可以看出,网格的左上8×8象限仅包含左上和左下4×4子象限中的值。遵循Morton顺序,可以在不存在值的地方放置0,在存在值的地方放置1。因此,树的此节点的节点符号为[1010]。遵循深度优先前序遍历,节点符号[1010]与层-3中的根的第一个节点相关联,如所说明的图3a的树所示。
继续进行深度优先前序遍历,由于在左上4×4象限中存在值,并且节点符号以1指示,所以遍历继续查看左上4×4象限的子象限。
返回图1,可以看出在这四个2×2块中,仅左上块中存在值。因此,遵循Morton顺序,此象限的节点符号为[1000]。为简单起见,我们将2×2象限称为块,将较大的正方形称为象限以指示差异。术语块和象限可以互换使用,但是使用术语块来表示2×2象限,因为2×2块包含数据符号。
编码器现在已达到数据级别(因为它知道它将以此抽象级别用信号通知所有四个数据值,并且实际上跳过了层-1),因此根据预定顺序对网格中的符号进行编码。实际上,树遍历采用倒数第二层中访问节点的值。因此,对符号{2,3,1,0}进行编码,并且树结构看起来如图5a所示一般。符号各自映射到树的最后一层中的定位。应注意,尽管2×2块的最后值是零并且可以被认为有助于稀疏性,但是在示例实施方式中,最终层的所有值都被编码和映射。
继续遍历树,编码过程返回到前一层。在下一个象限中不存在值,因此不进行编码。这由与所述节点相关联的节点符号中的0表示。遍历继续进行,直到在节点符号中找到下一个正指示为止。应记起,在左下4×4象限中找到了对应于层-2的值。现在分析此象限的四个2×2块。三个块包括值,一个块则不包括值。根据预定排序,节点符号对应地是[1,1,1,0],它与层-2中的被访问节点相关联。
现在,可以理解接下来的步骤。遵循遍历过程,对每个2×2块的数据符号进行顺序编码。字节流200的对应逻辑表示与在此级处已建立的树一起在图13中示出。在此级处,网格中的所有值均已编码,并且过程结束。
在实施方式中,可以理解,树本身一旦被绘制即可能消失,即历史丢失。用信号通知树结构内的数据符号的过程允许这种有效的内存使用。
上面已经描述了可以如何构建和解码字节流以合并散布的节点符号和数据符号的集合。在已经输出符号,可以随后对其进行熵编码。可以在处理符号集之前对经编码流进行熵解码。例如,可以将符号划分为代码,然后使用Huffman编码和解码操作对其进行编码。替代地,可以使用算术译码操作(诸如范围编码和解码操作)对符号流进行编码和决策。这些和其他类似的熵译码技术在本领域中是众所周知的。
熵译码是一种无损译码,其通过表示具有很少位的频繁出现的模式和具有许多位的很少出现的模式来压缩数字数据。广义上,熵译码技术采用输入码字并使用输入码字出现在数据集中的概率来输出可变长度码字。因此,最常见的符号使用最短的代码。概率信息通常存储在解码器使用的元数据中,以根据输出代码字重新创建输入信息。
下面描述了用对字节流熵译码的改进的且创新的技术。紧接上文,描述了解码过程在执行后可以如何应用于去稀疏化过程,以识别数组的稀疏区域并在数组中准确地定位值。所描述的操作将去稀疏化和解码步骤耦合在一起。
在图17中示出了高级别概述1700。在解码操作1701中对字节流进行解码之后,数据的输出平面经历去量化1702级和组成变换1703级。组成变换级1703和去量化级1702是本领域已知的。例如,组成变换级1703可以包括如WO2013/171173中所述的平面的方向变换或小波或离散余弦变换。
在此描述,解码操作1701可以包括两个级,即,熵解码级1704和去稀疏化级1705。解码器的级耦合在一起并相互相关,以便有效地识别压缩信息。熵解码级用于从数据流中解码符号。去稀疏化级用于分析符号并告知熵解码器接下来待解码什么类型的符号。
在优选的实施例中,去稀疏化级或模块1705建立树,如以上在图1至图16的上下文中所述。去稀疏化级从熵解码器接收符号并建立树。然后,根据建立树的过程,去稀疏化级告知熵解码器接下来期望什么类型的符号,即节点符号或数据符号。通过以所述方式分析节点符号,去稀疏化级可以通过遵循树遍历并识别对于树的分支没有期望数据符号来识别下一符号将是节点符号或数据符号,在所述书的分支中节点符号包括如此指示的标记。
贯穿整个本说明书中,去稀疏化级、去稀疏化模块和去稀疏化器可以互换使用,以指模块的功能性。类似地,术语熵解码级、熵解码模块和熵解码器可以互换使用,以指所述模块的功能性。当然将理解,功能性可以由组合模块或多个子模块提供。
在熵解码级,模块可以访问多个元数据集,所述元数据集用于使用熵解码操作对不同类型的符号进行解码。首先,熵解码级将首先使用第一元数据集对符号进行解码。然后,熵解码级将把所述符号发送到去稀疏化级。然后,熵解码级将等待以接收接下来将要期望的符号类型的指示。基于接收到的指示,熵解码级将根据期望的符号的类型来使用相应的元数据集,以便使用熵解码对下一符号进行解码。以这种方式,即使当数据集中的数据不遵循预定模式并且不同符号类型被不规则地散布在待编码或重构的原始数据内,也可以使用不同的元数据对数据集进行解码。
当然将理解,代替使用一个熵编码器和多个元数据集,***可以代替地对于待解码的每种类型的符号利用多个熵编码器模块。例如,去稀疏化模块可以指示不同的模块基于其在数据集中接下来期望的符号的类型来执行熵解码操作。
现在将在图18的上下文中详细描述过程。首先假设流中的第一符号是第一类型。在优选的示例实施方式中,将从上文记起,第一类型是节点符号。在实施方式中,如果去稀疏化级1805指示第一符号是熵解码器的第一类型的熵解码级1804固有地具有一定程度的智能或预定来识别第一期望类型,则这是不相关的。
熵解码级将从对应于第一符号类型的元数据的存储中检索元数据。元数据例如可以包括解码参数,并且可以包括概率的指示。例如,如果解码操作是范围解码器,则元数据可以包括概率分布或累积分布函数。下面将在图19的上下文中描述在本公开的上下文中范围解码器的操作。
在识别第一符号之后(步骤1801),进行到去稀疏化级(步骤1802)。去稀疏化级使用第一符号来确定流中稍后期望的符号类型。
在优选的实施方式中,去稀疏化级遵循上述过程。也就是说,去稀疏化级将接收到的符号分配给树的根,并分析符号的位以遍历树。例如,如果如在图2a的所描述的实例中一般,符号是[1000],则遍历树并且去稀疏化级将识别下一符号将是节点符号。
去稀疏化级将接下来期望的符号类型返回到熵解码级(步骤1803)。基于此信息,熵解码级能够根据接收到的符号类型的元数据从数据流中解码下一符号。
遵循上述实例,下一符号将是节点符号,并且如果使用范围解码器,则熵解码级可以利用用于前一节点符号的累积分布函数(步骤1804)。再次,进行到去稀疏化级(步骤1805)。遵循实例,下一符号将是节点符号,所述节点符号使用相同的累积分布函数进行熵解码。在此,已经达到了图4a的级。树已建立有三个被访问节点。遵循实例,去稀疏化级假定未在字节流中发送下一层,且现在期望数据符号。
因此,去稀疏化级现在用信号通知熵解码模块期望的符号是不同的第二类型(步骤1806)。熵译码级因此检索第二符号类型的元数据。再次,如果熵译码操作是范围译码操作,则元数据的存储将包括第二相应的累积分布函数。熵译码操作因此使用此第二参数集,即此第二累积分布函数,从流中检索下一符号(步骤1807、1808)。
返回图5a的实例,接下来的三个符号当然将是数据符号,当然,接下来的三个符号将是数据符号,因为在示例过程中,显式地用信号通知了块的所有四个兄弟节点数据符号。因此,去稀疏化级将用信号通知熵解码级接下来的三个符号具有第二类型(步骤1809)。当然,如上所述,可能会有一定程度的智能或预定期望被译码到熵解码级或模块中。例如,当它知道要检索数据符号时,它可能知道检索四个。取决于实施方式,熵解码级当然可以在每次尝试从流中识别符号时等待符号类型的指示。
在实例中,过程将根据树的遍历继续进行。也就是说,在图7a至图12a的实例中,期望的下一符号将是节点符号,并且去稀疏化级将指示解码器使用第一参数或元数据集来识别下一符号。
既然已经理解了过程,应记起,不是熵解码级在元数据集之间切换,而是可以有多个熵解码模块,每个熵解码模块使用元数据集,并且每个熵解码模块根据接下来要期望的符号类型从不同类型的散布符号流中检索符号。
上面已经描述了熵解码级可以是任何类型的熵解码模块。例如,熵解码模块可以是Huffman解码模块,其中流中的符号具有固定长度。然而优选地,熵解码器是范围解码器,现在将在图19的上下文中描述其操作。如果使用多个解码模块,则可以使用第一类型的熵解码器对第一类型的符号进行解码,并且可以使用第二类型的熵解码器对第二类型的符号进行解码。例如,可以使用Huffman解码器对固定长度的节点符号进行解码,并且可以使用算术解码器对数据符号进行解码,如果符号的类型具有不同的长度,或者如果一种类型适合于固定长度操作而另一种适合于可变长度操作,则这可能是有益的。
图19说明了用于在本***中实施的可以执行增量解码的范围解码模块。图19说明了位的序列200。范围解码器1900采用此序列的一部分,并更新内部状态寄存器1901。
为了开始解码过程,解码器必须具有足够的信息以对第一符号明确地解码。解码器控制器将从元数据存储器1904中检索第一元数据集,所述元数据包括第一累积分布函数。根据元数据,范围解码器可以从流中识别出它需要的较少数量的位,以便以明确的概率来识别节点符号,如此处在序列200中用虚线所示。
范围解码器顺序分析流中逐渐增大的部分,直到可以确定已编码符号的概率为止。也就是说,解码器通过在分析了数据的每个部分的情况下使可能的符号变窄,将逐渐增大的数据部分与累积分布函数进行比较。在明确识别符号后,输出符号1905。
范围解码器的控制器1902现在将等待,直到它接收到触发器1903以对下一符号进行解码为止。触发器1903将包括待解码的符号的类型。根据此信息,解码器将从元数据存储器1904中检索相应的元数据,所述元数据将包括针对接下来待检索的符号的累积分布函数。
根据累积分布函数,解码器将识别它是否应更新其状态(或标签),并从序列200中读入更多位或移出位1906(即以其他方式将位丢弃到回收站)。例如,解码器将识别状态(或标签值)的最高有效位在可能值的上限和下限之间是相同的还是不同的,以及在其状态下保存的位的量是否足以识别分布函数中最小值或最不频繁的值。如果最高有效位在潜在符号的上限与下限之间是相同的,则可以丢弃所述最高有效位。
示意性地,图19的图像示出了状态可以如何示出可以从经编码数据流的较后部分检索流中的数据,以及下一经识别符号可能不是数据流的初始位,但可以从数据流的较后检索。对于熟悉范围编码技术的技术人员来说,这种不确定性是众所周知的。图19仅试图展示范围解码技术以增量方式读取位的序列,并基于概率函数(优选地累积分布函数)从所述序列中识别符号。符号可能不以严格顺序的方式包括在位的序列中。
虽然为了简洁起见并未描述范围解码器的功能性,但相信它在本领域中是众所周知的。然而,***的功能性是清楚的。本公开的范围解码器被配置成根据字节流中接下来期望的符号的类型使用相应的累积分布函数,其中字节流包括多个散布的不同类型的符号。
例如,假定可以从先前解码的散布符号中辨识最终符号,则范围解码器可能仅能对流的起始而非末尾的定位起作用。可以根据与先前流的起始的偏移量来定义起始。然而,存在范围解码器的某些实施方式,其中从字节流读取数据在推断出(根本没有推断出,或者没有完全推断出)一个或多个最终符号之前停止,并且执行一系列最终计算。在这种情况下,可能有必要知道流末尾的位置,以便可以在解码的恰当级处完成向最终计算的切换。因此可以用信号通知流长度。
如上所指示,在优选实施例中,可以通过将第一类型的符号映射到有序树来确定数据中期望的符号的类型,在树中,第一类型的符号是如上所述的节点符号。第二类型的符号可以是如上所述的数据符号。在范围编码实例中,数据符号可以不具有固定宽度。将理解,将去稀疏化算法和熵解码算法耦合的过程可以应用于其他去稀疏化算法或替代地包括不同类型的散布符号的其他算法。
对字节流编码的过程基本上成镜像。也就是说,如上所述的稀疏化算法将符号与可选地通过的符号的类型的指示一起输出到熵编码器。然后,熵编码器基于用于所述类型的符号的参数或元数据对所述符号进行编码。符号的类型可以根据符号本身或基于来自稀疏化模块的显式信号确定。编码的第一类型的符号表示对数据集中稍后期望的符号的指示。
上面已经描述了可以如何将元数据符号作为经编码数据集的一部分,以用信号通知数据结构的特征及其数据结构的数据元素。还提出了使用提前范围解码技术对符号不同地编码和解码的有利方法。取决于数据的子集,不同的累积分布函数(cdf,即统计元数据)可以用于对相同类型的符号进行解码,并且不同的元数据或元数据的类型可以用于对不同类型的符号进行解码。以下是用于对统计元数据进行编码和解码以改善元数据符号的范围解码的创新技术。此概念在以上提出的***中具有特定效用,但不限于此。所述技术可用于任何熵解码方法中,优选地算术或范围解码方法中。
应注意,以上数据结构的元数据元素,即节点符号具有固定大小。关于它们的期望的分布和使用所固有的聚类,也具有可预测性。提出的技术旨在利用此优点来减少数据集的总体大小。尽管符号的长度通常可以是4位长,但是他们在流中出现的频率意指即使相对较小的大小改变也可能在整个流中带来显著的增益。与上述***一样,过程的可复制性也是减少总体计算负担的重要设计考虑因素。
本发明提出了一种多级算术译码技术,以对每个节点符号进行编码和解码。在第一级中,使用累积分布函数的直方图来确定节点符号可能位于符号组中的哪一组。从所述组中,基于第二统计数据集选择符号。考虑了此第二集的多种实施方式,但是在优选的实施方式中,第二集是预定的简化集,所述预定的简化集用于快速且容易地确定组中的哪一个是隐藏在经编码数据集中所需的最有可能的整数。因此,通过以新的和应用的方式使用已知范围解码的原理,可以将4位代码减少到经编码数据集中的更少位。
与当代技术相反,未提供或利用所有16种可能性的统计数据。当将所述技术结合到更宽范围的解码操作中并且在本文所述的数据结构和其他方面的上下文下时,与已知的固定熵编码技术相比提供了其他益处。
取决于节点符号的值,可能仅需要一个级。这允许使用其他位并使用其他计算步骤来发送最常出现的符号以进行解码。从节点符号的以上描述中,可以直观地注意到,例如,最常发送的节点符号将是[0000]和[1111],因为待编码的平面的元素可能会聚类在一起。仅在待编码的平面中的过渡点处,其他节点符号才可能出现。因此,整数允许最常出现的符号在其自身的组中,从而从根本上降低了处理速度和压缩效率。
总而言之,提出了一种直方图格式,所述直方图格式使范围解码处理器能够以1或2级对符号进行解码。第一级的结果应确定第二级是否适用。
以下是实施方式的完整详细实例。当然将理解,此实例是非限制性实例,其说明了本发明的若干原理,并且此实施方式可以如何应用于本文所述类型的节点符号的个别细节不是必需的。
过程开始于检索节点符号的统计元数据。此处,统计元数据是7个未命名和排序符号的累积分布函数。cdf可以替代地是概率分布函数或统计参数的其他格式。元数据可以存储在解码器中,在字节流中用信号通知,或者通过检索索引或关键字来用信号通知解码器为此目的应使用不同的元数据集中的哪一个。
优选地,例如在数组或尾数8[6]数组中检索或用信号通知前6个值。cdf的第7个值或最终值可以是1.0,并且这可能不需要用信号通知或显式检索。在此实例中,具体地选择数字7来改善节点符号的实施。正如将在下面看到,在此实施方式中,将符号选择成组是有益的,因为它可以基于相似特征和平面中的期望分组提供分组。然而,cdf值的数量可以是任何量,只要它小于待编码的值的量即可。
在优选的实施方式中,字节流的报头用信号通知cdf的连接点,实施为从零≤1.0的非递减分段直方图,其中直方图的零和1.0是隐式的,并且没有显示地用信号通知字节流的报头。如果动态地选择整数组,则可能需要比如本实施方式中所示的连接点用信号通知的更多的信息。
使用这些cdf值,范围解码器将从字节流返回第一整数。此整数不是符号或值,而是组指示符或位置值,从而将方法引向下一步。此指示符将过程引导到一系列指示符组,所述指示符组获得待解码的正确整数。因此,此步骤可以作为范围解码过程的一部分,使用7个CDF的表应返回未命名符号中的一个的正pos,其中零≤pos≤7。
如图所指示,根据未命名符号的位置pos,7个未命名符号(即指示器)将十进制的节点符号的选择范围缩小到整数组或集的成员。在此实例中,组是预定的,并且顺序如下:
[7,11,13,14]
[1,2,4,8]
[5,10]
[3,12]
[6,9]
[0]
[15]
在此,通过使用上述实施方式,可以根据使用中的可能的聚类来预先选择分组。在此实例中,每个整数响应一个4位无符号二进制成员,具体地在以上实例中使用。例如,7表示节点符号[0111],11表示[1011]。因此,可以看出此组包括具有4个正标记和1个负标记的所有四个符号。因此,这些组很可能在一个平面中出现类似的情况(在上下文中很有可能发生类似的可能性,也就是说,四叉树的一个分支没有子节点。在替代实施方式中,必须动态地选择这些分组中的每一个并且单独地用信号通知,以优化效率,然而在此实例中,预先选择符号分组以最小化信号通知并减小字节流的大小。总之,在这些实例中,根据树中的相似性对整数进行分组。
在此实例之后,如果从范围解码器中检索到组指示符pos的值为4,则整数应为十进制的6或9,表示二进制的节点符号应为[0110]或[1001]。
接下来,解码过程必须从组指示符中识别一个整数(例如,在指示符为4的上述实例中为6或9)。
如果选择上述集的最后一对中的任何一成员,则无需第二级,并且0或15应是最终范围解码的整数。因此,在组指示符指示仅包括一个整数的组的情况下,选择所述整数。当如上所指示选择组时,这允许仅使用一级并且从经编码数据集中的6个可能的符号中选择公共节点符号[1111]。
在上述节点符号的示例实施方式中,[0000]是保留字符,并且将不会出现在这些实例的字节流中。然而,15应意指二进制的节点符号应为[1111],这是最可能的节点符号,其中四个标记指示在数据层中存在与所述节点符号相关联的有序树的分支的数据元素。
遵循实例,如果组指示符指向其他组中的一个,则存在第二级。在此第二级中,在实例中,可以使用预定的cdf而不用信号通知预定的cdf,以提高计算效率,然而在实践中,当然将理解,第二cdf可以在字节流中用信号通知或独立地用信号通知,并通过索引用信号通知。
在此实例中,在组包含4个整数的情况下,cdf值应为0.25、0.5、0.75和1.0。在存在2个整数的情况下,cdf值应为0.5和1.0。
因此,在已经识别出组指示符后,过程可以利用针对所识别的组的预定cdf值来从字节流返回另一符号。从字节流返回的下一整数指示整数集中的哪个整数是最终解码的整数。
为完整起见,在此实例中,从字节流解码的可能的整数指示符(pos2,pos3)为零≤pos2<4,其中组中存在四个整数;且零≤pos3<2,其中每组中存在两个整数。
因此,需要从流中解码两个符号以识别大多数节点符号,然而需要对[1111]节点符号解码,即需要对仅一个符号解码(6)。也就是说,6指向组6,所述组仅包含整数15,所述整数转化为以2为基数的[1111]。
为了完整起见,下面完成实施实例以选择一个整数:
如果选择上述集的第一对中的任一成员,则应存在第二级,使用表示0.25、0.5、0.75和1.0的CDF值。在这种情况下,范围解码过程应返回此直方图中的另一位置pos2,其中零≤pos2<4。最终解码的节点符号应返回s[pos2],其中s是所选的整数集。
如果选择上述集的第二对中的任一成员,则应存在第二级,使用表示0.5和1.0的cdf值。范围解码过程应返回此直方图中的另一位置pos3,其中零≤pos3<2。最终解码的节点符号应返回为s[pos3],其中s是所选的整数集。
现在将描述编码节点符号和创建元数据的过程。应注意,编码过程与解码过程基本上成镜像。
为了生成统计元数据,也就是说此处的累积分布函数,过程可以计算每个符号落入每个组中的数量,然后将此总数除以总符号数。然后,累积分布函数是所有区间(或组总数)以及此区间(即组总数)的总和。
因此,假设在组[7,11,13,14]中存在5个符号,1个11符号和0个13或14符号。因此,总概率为6除以总符号。此处,14的概率与7的概率相同,但实际上它们相差很大。这就是K-L散度。因此,同一组中的每个整数具有相同的概率,即使所述概率可能不反映概率也是如此。
编码过程将接收待编码的符号。将以已知方式基于符号和概率来执行范围编码的运算符。如果整数在多个整数的组中,则将根据组的预定概率(即0.25、0.5、0.75、1或0.5、1.0)将第二整数编码到直方图中。编码器将在报头中用信号通知上面生成的直方图的连接点,以使解码器能够识别累积分布函数的直方图。仅在此实例中,显式值应为非递减累积概率,并且应小于1.0。
由于直方图的单调曲线性质,与直方图相比,累积分布函数可能更有效,使得每个位也不需要单独地进行编码。连接点可以是差分编码的形式,也就是说与先前值的差异,以减小发送的直方图数据的大小。
总之,统计的节点符号数组可以与tessara(即此应用的数据结构)的节点符号相关联。节点符号可以取至多16个值(为4位代码),并使用七个位来传达统计数据,在所述七个位中对节点符号的概率进行编码。这是对这些值进行编码的有效方法,否则这些值将以未压缩的方式发送。
本领域技术人员将清楚如何本文所述的技术在包括编码器和解码器的***内体现。在解码器处,可以从数据存储中检索经编码数据集或从流服务器接收经编码数据集。在这种另一实施例中,一个或多个流服务器可以连接到多个客户端装置。在流服务器处,编码器可以接收视频或图像流并对其进行编码,并将流(例如,可互换使用的字节流或位流)传递到客户端装置。因此,流可以被解码器解码以重新创建已经包括的信息。如本领域技术人员所熟知,可以使用任何合适的传递流的机制,诸如单播或多播。
此处描述的技术可能适合于任何维度的数据数组的编码、解码和重构。然而,尽管技术也适用于线性数据,但它们对于图像或视频重构最为有益。在图片或视频的情况下,数据可以是与色彩空间相关联的值(例如,RGB色彩空间中的红色分量的值,或YUV色彩空间中的Y分量的值,等),或替代地数据可以是残差数据(无论是否变换)或用于对字节流或位流进行解码的元数据。在本申请中进一步定义了残差,但是一般而言,残差是指参考数组的值与实际数据数组之间的差。因此,这些技术最适合于任何数据平面。
应注意,以上实例中描述的技术与经解码数组的含义或用途无关。当然,可以使用数据集来通过组合多个经解码数据重构更大的数据集。重新创建后,数据可以表示已压缩的任何信息,诸如图像或声波图。如从以下描述的实例中将理解,编码和解码技术特别适合与本发明一起使用,其中将借助于涉及对数据结构的层级体系中的数据进行编码的方案压缩和传输或存储的一些数据,可以从所述经稀疏化数重构原始数据。
在例如在流服务器或客户端装置或从数据存储器中解码的客户端装置中实施的编码器和解码器两者处,本文所述的方法和过程可以体现为代码(例如,软件代码)和/或数据。编码器和解码器可以以数据压缩领域中众所周知的硬件或软件来实施。例如,使用专门编程的GPU或专门设计的FPGA进行硬件加速可以提供一定的效率。为了完整性,可以将这种代码和数据存储在一个或多个计算机可读介质上,所述计算机可读介质可以包括可以存储供计算机***使用的代码和/或数据的任何装置或介质。当计算机***读取并执行存储在计算机可读介质上的代码和/或数据时,计算机***执行体现为存储在计算机可读存储介质内的数据结构和代码的方法和过程。在某些实施例中,本文所述的方法和过程的一个或多个步骤可以由处理器(例如,计算机***或数据存储***的处理器)执行。
通常,可以使用软件、固件(例如,固定逻辑电路)、可编程或非可编程硬件或这些实施方式的组合来实施本文中所描述或附图中所说明的任何功能性。如本文所使用的术语“部件”或“功能”通常表示软件、固件、硬件或它们的组合。例如,在软件实施方式的情况下,术语“部件”或“功能”可以是指当在一个或多个处理装置上执行时执行指定任务的程序代码。所说明的将部件和功能分离成不同的单元可以反映出这种软件和/或硬件和任务的任何实际或概念上的物理分组和定位。
下面提出一个实例,其中上文所述技术可以具有特定的用途。可以提供一种重构接收到的经编码数据集的方法,其中所述经编码数据集包括第一和第二分量集,所述第一分量集对应于比所述第二分量集更低的图像分辨率,所述方法包括:对于第一和第二分量集中的每一个:对分量集进行解码以获得经解码集,所述方法还包括:放大经解码的第一分量集,以便将经解码的第一分量集的对应图像分辨率提高到等于经解码的第二分量集的对应图像分辨率,并将经解码的第一分量集和第二分量集组合在一起,以便产生重构集。
有利地,所述方法提供了一种有效技术,所述技术用于重构在接收到的数据集中编码的图像,所述数据集可以借助于数据流,例如借助于个别地对与不同图像大小或分辨率级别对应的不同分量集解码来接收,并将来自一个经解码分量集的图像细节与来自较低分辨率分量集的放大的经解码图像数据进行组合。因此,通过对两个或更多个分量集执行此过程,可以重构其中的结构或细节处的数字图像以得到逐渐更高的分辨率或更多数量的像素,而无需接收最高分辨率分量集的全部或完整图像细节。实际上,所述方法有利于逐渐地添加越来越高分辨率的细节,同时以分级方式从较低分辨率分量集重构图像。
此外,每个分量集的解码分别有助于对接收到的分量集的并行处理,从而在其中多个过程可用的实施方式中提高重构速度和效率。
每个分辨率级别对应于质量级别(LoQ)。这是一个集合术语,与其他处定义的平面相关联,描述了所有新的输入或接收到的分量集,以及索引为m的循环的输出重构图像。例如,LoQ零中的重构图像是金字塔重构的最终循环的输出。
金字塔重构可以是从初始LoQ开始并通过新残差使用循环以推导更高LoQ(至多为最大质量,质量零,在LoQ零下)来重构倒金字塔的过程。循环可被认为是这种金字塔重构中的步骤,所述步骤由索引m识别。所述步骤通常包括对从可能的先前步骤输出的数据进行上采样,例如,放大经解码的第一分量集,并且将从新表面集中解码的新残差表面(也如本公开中所定义)作为进一步的输入,以获得输出数据,将在可能的后续步骤中对所述输出数据进行上采样。在仅接收到第一和第二分量集的情况下,LoQ的数量将为两个,并且不存在可能的后续步骤。然而,在其中分量集或LoQ的数量为三个或更多的实施例中,则可以在以下步骤中逐步对输出数据进行上采样。
第一分量集通常对应于初始LoQ,其可以用LoQ 1-N表示,其中N是平面中LoQ的数量。N的值通常在字节集报头中给出。
典型地,经解码的第一分量集的放大包括将上采样器应用于初始LoQ的解码程序的输出。在优选的实施例中,这涉及使从初始LoQ分量集的解码输出的重构图片的分辨率与第二分量集的分辨率(对应于2-N)一致。通常,来自较低LoQ分量集的经放大的输出对应于较高LoQ分辨率的预测图像。由于较低分辨率的初始LoQ图像和上采样过程,预测图像通常对应于平滑或模糊的图片。
通过上述LoQ,将更高分辨率细节添加到此预测图片中提供了组合的重构图像集。有利地,在一个或多个较高LoQ分量集的接收到的分量集包括残差图像数据或指示放大的预测图片与原始未压缩或预编码图像之间的像素值差的数据的实施例中,重构具有给定分辨率或质量的图像或数据集所需的接收到的数据量可能大大小于使用现有技术接收相同质量图像所需的数据量或速率。因此,根据所述方法,通过将以较低的分辨率接收的低细节图像数据与以越来越高的分辨率接收的逐渐变大细节图像数据进行组合,降低了数据速率要求。
通常,所述经编码数据集包括一个或多个其他分量集,其中所述一个或多个其他分量集的每一个比所述第二分量集对应于更高的图像分辨率,并且其中所述一个或多个其他分量集的每一个对应于逐渐提高的图像分辨率,所述方法包括针对所述一个或多个其他分量集中的每一个而对所述分量集进行解码,以便获得经解码集,所述方法还包括针对所述一个或多个其他分量集中的每一个而以对应图像分辨率的升序:放大具有最高对应图像分辨率的所述经重构集,以便增加所述经重构集的对应图像分辨率来等于所述其他分量集的对应图像分辨率,以及将所述经重构集与所述其他分量集组合在一起,以便产生另一经重构集。
以这种方式,所述方法能够包括:获取给定分量集水平或LoQ的重构图像输出,放大所述经重构集,并且将其与以上分量集或LoQ的解码输出组合,以产生新的、更高分辨率的经重构图片。应理解,对于逐渐升高的LoQ,这能够重复地执行,取决于接收到的集中的分量集的总数量。
在典型实施例中,每个分量集对应于逐渐提高的图像分辨率,其中每个逐渐提高的图像分辨率对应于对应图像中像素数量的四分之一增加。因此,通常,对应于给定分量集的图像大小是像素的大小或数量的四倍,或者是对应于以下分量集(即,具有比相关LoQ少一个的LoQ的分量集)的图像的高度和宽度的两倍。例如,其中每个对应图像的线性大小相对于以下图像大小为两倍的分量集的接收到的集能够促进更简单的放大操作。
在一些实施例中,其他分量集的数量为两个。因此,在此类实施例中,接收到的集中的分量集的总数是四个。这对应于为LoQ-3的初始LoQ。
所述第一分量集能够对应于图像数据,并且所述第二分量集和任何其他分量集对应于残差图像数据。如上所述,在给定图像尺寸的最低LoQ(即所述第一分量集)包含所传输图像的低分辨率或降采样版本的情况下,所述方法针对给定图像大小提供特别有利的数据速率要求降低。以这种方式,在每个重构周期中,从低分辨率图像开始,放大所述图像以生成高分辨率(尽管平滑)的版本,并接着通过添加所述放大的预测图片与待在所述分辨率下传输的实际图像之间的差异来改善所述图像,并且能够针对每个周期重复进行这种累加改进。因此,初始LoQ的分量集上方的每个分量仅需要包含残差数据,以便重新引入在将原始图像降采样到最低LoQ时可能已经丢失的信息。
还能够提供一种对数据集进行解码的方法,所述方法包括:对所述集进行去稀疏化,包括在所述集的其中未接收到稀疏数据的一个或多个部分中重新创建稀疏数据,并且在所述集内保持接收到的数据的定位;以及在所述集内保持接收到的数据的定位;以及将熵解码操作应用于所述去稀疏化集;其中根据所述熵解码操作执行对所述集进行去稀疏化的步骤。
还能够提供一种用于对接收到的数据集进行解码以便获得经解码集的方法,所述方法包括:对所述集进行去稀疏化,包括在所述集的其中未接收到稀疏数据的一个或多个部分中重新创建稀疏数据,并且在所述集内保持接收到的数据的定位;以及在所述集内保持接收到的数据的定位;以及将熵解码操作应用于所述去稀疏化集;其中根据所述熵解码操作执行对所述集进行去稀疏化的步骤;对经熵解码集进行去量化;以及将方向组成变换应用于所述经去量化集以获得经解码集。
所述方法提供了在接收到包含例如通过分解、量化、熵编码和稀疏化等方式压缩的数据的集时获得图像数据的方法,所述图像数据能够是残差数据。
当与能够通常对应于残差图像数据的原始或预传输数据稀疏的集结合使用时,稀疏步骤特别有利。残差能够是通常位于共置的第一图像的元素与第二图像的元素之间的差异。此类残差图像数据通常能够具有高度稀疏性。能够认为这对应于其中细节区域稀疏分布在其中细节最小、可忽略或不存在的区域之间的图像。能够将此类稀疏数据描述为数据数组,其中数据以至少二维结构(例如网格)进行组织,并且其中如此组织的数据的很大一部分为零(以逻辑或数字方式)或被视为低于某一阈值。残差数据仅仅是一个实例。另外,元数据能够是稀疏的,并且因此通过此过程在很大程度上减小大小。发送已稀疏化的数据允许通过省略发送此类稀疏区域并且替代地在解码器处在接收到的字节集内的适当定位处重新引入稀疏区域来实现所需数据速率的显著降低。
通常,根据由编码器或从其发送所述接收到的经编码数据集的节点定义的参数执行熵解码、去量化和定向组成变换步骤。对于每个LoQ或分量集,所述步骤用于对图像数据进行解码,以达到能够根据上文公开的技术与不同LoQ组合的集,同时允许所述集针对每个级别以数据有效的方式传输。
还能够提供一种根据上文公开的方法而重构经编码数据集的方法,其中根据上文公开的方法执行对所述第一和第二分量集中的每一个的解码。因此,本公开的有利解码方法能够用于接受到的图像数据集中的每个分量集或LoQ,并且对应地重构。
参考图20,现在描述实例。接收编码数据集A101,其中所述集包括四个LoQ:从LoQ0(最高分辨率或质量级别)到LoQ-3(初始LoQ)。LoQ-3分量集中承载的图像数据对应于图像数据,且其他分量集包含所述所传输图像的残差数据。尽管每个级别都能够输出能够被视为残差的数据,但初始LoQ级别(即LoQ-3)中的残差实际上对应于实际的经重构图像。在级A103处,并行地处理所述分量集中的每一个,以便对所述编码集进行解码。
参考初始LoQ,针对每个分量集LoQ-3至LoQ0执行以下解码步骤。
在步骤A107处,对分量集进行去稀疏化。以这种方式,去稀疏化使得从在每个LoQ处接收到的编码字节集重新创建稀疏的二维数组。通过此过程重新填充二维数组内的定位处分组的未被接收到(由于从所传输字节集省略以便减少传输的数据量)的零值。数组中的非零值会在重新创建的二维数组内保留其正确值和位置,去稀疏化步骤会在适当定位或适当定位之间的定位组处重新填充所传输零值。
在步骤A109处,将范围解码器(其所配置参数对应于在传输之前对所传输数据进行编码所使用的所配置参数)应用于每个LoQ处的去稀疏化集,以便用像素值替换数组内的经编码符号。根据图像的像素值分布的近似值,将接收到的集中的经编码符号替换为像素值。使用分布(即图像中所有像素值上的每个值的相对频率)而不是真实分布的近似值允许减少对所述集进行解码所需的数据量,因为范围解码器需要分布信息以便执行此步骤。如本公开中所述,去稀疏化和范围解码的步骤是相互依赖的,而不是依序的。这由流程图中的框107与109之间的箭头所形成的循环表示。
在步骤A111处,对值数组进行去量化。再次根据在传输之前对分解图像进行量化的参数执行此过程。
在去量化之后,在步骤A113处通过组成变换来变换所述集,所述组成变换包括将逆方向分解操作应用于去量化的数组。根据包括平均、水平、垂直和对角线运算符的2×2运算符,这将导致方向滤波反转,使得所得数组是LoQ-3的图像数据和LoQ-2LoQ0的残差数据。
级A105说明利用针对每个LoQ分量集A101的组成变换的输出的重构中涉及的几个周期。
A115指示从用于初始LoQ的解码器A103输出的经重构图像数据。在本实例中,经重构图片A115具有64×64的分辨率。在A116处,对此经重构图片进行上采样以便将其组成像素数增加四倍,由此产生分辨率为128×128的预测图片A117。在级A120处,将预测图片A117从LoQ-2处的解码器的输出添加到经解码残差A118。将这两个128×128大小的图像相加会产生128×128大小的经重构图像,包含来自初始LoQ的平滑图像细节,所述平滑图像细节由来自LoQ-2的残差的更高分辨率细节增强。如果所需输出分辨率是对应于LoQ-2的输出分辨率,则能够输出或显示此所得经重构图片A119。在本实例中,经重构图片A119用于另一周期。
在步骤A112处,以与步骤A116处相同的方式对经重构图像A119进行上采样,以产生256×256大小的预测图片A124。这接着在步骤A128处与经解码LoQ-1输出A126组合,由此产生256×256大小的经重构图片A127,所述经重构图片是用残差A126的更高分辨率细节增强的放大预测版本A119。在A130处,此过程被重复最后一次,并且经重构图片A127被放大呈512×512的分辨率,以与级A132处的LoQ0残差组合。由此,获得512×512的经重构图片A131。
图21示出了去稀疏化和解码过程的示意图。在行A中,示意性地示出了在接收到第一类型的数据符号时经由字节流接收到的典型符号集。所述第一类型能够是非零值,且所述第二类型能够是零值。替代地,所述第一类型能够是高于阈值的值,且所述第二类型能够是低于所述阈值的值,并且其中取决于所选实施方式,等于所述阈值的值能够属于所述第一类型或者属于所述第二类型。具体地,存在三组符号(也称为元数据符号),后跟多个第一类型的数据符号(通常多达四个)。
通常,提供一种对稀疏数据集进行解码的方法,所述方法包括:获得经编码数据集,所述编码数据包含信息,所述信息在被解码时将使得能够重构所述稀疏数据集;对所述经编码数据集的第一部分进行解码以获得第一经解码数据集;以及基于所述第一经解码数据集而确定如何重构所述稀疏数据集的第一部分。所述第一经解码数据集能够对应于一个或多个元数据符号,这些元数据符号指示是基于第二经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。如果所述一个或多个元数据符号能够指示所述稀疏数据集的所述第一部分的重构应基于第二经解码数据集,则所述方法还包括:对所述经编码数据集的第二部分进行解码以获得所述第二经解码数据集;以及通过从所述第二经解码数据集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。解码和重构的步骤包括:对所述第二部分的第一子部分进行解码以获得第一经解码数据子集;基于与所述第一经解码数据集相关联的信息,确定所述第一经解码数据子集包含一个或多个元数据符号还是第一类型的数据符号。在行B至行D中,虚线括号表示所述第一经解码数据集,且实线表示所述第二经解码数据集。
参考行B,其中如果确定第一经解码数据子集(J02)包含一个或多个元数据符号,则所述方法还包括:对所述第二部分的第二子部分进行解码以获得第二经解码数据子集(J03);以及至少基于与所述第一经解码数据子集相关联的信息,确定所述第二经解码数据子集包含一个或多个元数据符号还是第一类型的数据符号。如果确定第二经解码数据子集包含一个或多个元数据符号,则所述方法还包括:对所述第二部分的第三子部分进行解码以获得第三经解码数据子集(J04至J0N);以及通过从所述第三经解码数据子集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
参考行C,其中如果确定第一经解码数据子集(J03)包含一个或多个元数据符号,则所述方法还包括:对所述第二部分的第二子部分进行解码以获得第二经解码数据子集(J04-J0N);以及至少基于与所述第一经解码数据子集相关联的信息,确定所述第二经解码数据子集包含一个或多个元数据符号还是第一类型的数据符号。如果确定所述第二经解码数据子集包含第一类型的数据符号,则所述方法还包括:对所述第二部分的第二子部分进行解码以获得第二经解码数据子集;以及通过从所述第三经解码数据子集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
参考行D,如果确定所述第一经解码数据子集(J04至J0N)包含第一类型的数据符号,则所述方法还包括:通过从所述第一经解码数据子集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
行E至H示出字节流的以下实例:解码器需要重构第二类型的数据符号,或换句话说,隐式地将第二类型的数据符号发送给解码器。所述图示出带有虚线边界的一系列框。如果所述数据集未如本申请中所述而稀疏化,而是发送了包括其稀疏部分在内的整个数据集,则虚线边界试图显现应被发送给解码器的数据块。然而,从解码器的角度来看,虚线框是通过称为“模拟”的过程以某种方式重构的,换句话说,出于对第二类型的数据符号进行解码并且获得第二类型的数据符号,“模拟”了虚线框的存在,以便重构完整的稀疏数据集。
具体地,参考行E,提供一种对稀疏数据集进行解码的方法,所述方法包括:获得经编码数据集,所述编码数据包含信息,所述信息在被解码时将使得能够重构所述稀疏数据集;对所述经编码数据集的第一部分进行解码以获得第一经解码数据集(J41、J51、J61、J71);以及基于所述第一经解码数据集而确定如何重构所述稀疏数据集的第一部分。所述第一经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第二经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于模拟所述稀疏数据集的所述第一部分,则所述方法还包括:通过生成第二类型的数据符号来模拟所述稀疏数据集的所述第一部分。
参考行F,如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第二经解码数据集,则所述方法还包括:对所述经编码数据集的第二部分进行解码以获得所述第二经解码数据集(J52),其中所述第二经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第三经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。如果所述第二经解码数据集中的所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于模拟所述稀疏数据集的所述第一部分,则所述方法还包括:通过生成第二类型的数据符号来模拟所述稀疏数据集的所述第一部分。
参考图行G,如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第二经解码数据集,则所述方法还包括:对所述经编码数据集的第二部分进行解码以获得所述第二经解码数据集(J62),其中所述第二经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第三经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第三经解码数据集,则所述方法还包括:对所述经编码数据集的第三部分进行解码以获得所述第三经解码数据集(J63),其中所述第三经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第四经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。如果所述第三经解码数据集中的所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于模拟所述稀疏数据集的所述第一部分,则所述方法还包括:通过生成第二类型的数据符号来模拟所述稀疏数据集的所述第一部分。
参考行H,其中如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第二经解码数据集,则所述方法还包括:对所述经编码数据集的第二部分进行解码以获得所述第二经解码数据集(J72),其中所述第二经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第三经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第三经解码数据集,则所述方法还包括:对所述经编码数据集的第三部分进行解码以获得所述第三经解码数据集(J73),其中所述第三经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第四经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。如果所述第三经解码数据集中的所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第四经解码数据集(J74至J7N),则所述方法还包括:对所述经编码数据集的第四部分进行解码以获得所述第四经解码数据集;通过从所述第四经解码数据集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
本文档中描述的实例的进一步编号的陈述包括以下陈述。
B-1.一种对经编码数据流进行解码的方法,所述方法包括:
接收经编码数据;
从所述数据集识别节点符号和数据符号的有序集,其中节点符号是预定数量的元素,其中每个元素指示在所述数据集中是否需要后续节点符号或数据符号,而数据符号表示将编码值的预定数量的位;
通过执行以下操作来从所识别的节点符号和数据符号构建具有预定数量的层的有序树:
从所述集检索第一节点符号;
使所述第一节点符号与所述树的根相关联,并且使所述第一节点符号的每个元素与所述根的分支节点相关联;以及
遍历所述树,
其中如果分支节点的相关联元素指示所述集中存在后续节点符号,则遍历所述树包括:
从所述有序集检索后续节点符号;
使所述后续节点符号与所述节点相关联;以及
使所述节点符号的每个元素与所述节点的相应分支节点相关联;
其中如果分支节点的相关联位指示所述集中不存在后续节点符号,则针对所述子树终止所述遍历;且
其中如果所述节点是层中的最远离所述根的叶,则从所述集检索数据符号。
B-2.根据陈述B.1所述的方法,还包括:
在终止所述遍历之后模拟所述树,其中所述子树中的每个叶表示预定值。
B-3.根据陈述B.1或B.2所述的方法,其中所述元素是位。
B.4.根据陈述B.1至B.3中任一项所述的方法,还包括:
将所述有序树映射到二维数组。
C.1.一种重构接收到的经编码数据集的方法,其中所述经编码数据集包括第一和第二分量集,所述第一分量集比所述第二分量集对应于更低的图像分辨率,所述方法包括:
对于所述第一和第二分量集中的每一个:
对所述分量集进行解码以获得经解码集,
所述方法还包括:
放大所述经解码第一分量集,以便增加所述经解码第一分量集的对应图像分辨率来等于所述经解码第二分量集的对应图像分辨率,以及
将所述经解码第一分量集与第二分量集组合在一起,以便产生经重构集。
C.2根据陈述C.1所述的方法,其中所述经编码数据集包括一个或多个其他分量集,其中所述一个或多个其他分量集的每一个比所述第二分量集对应于更高的图像分辨率,并且其中所述一个或多个其他分量集的每一个对应于逐渐提高的图像分辨率,
所述方法包括针对所述一个或多个其他分量集中的每一个而对所述分量集进行解码,以便获得经解码集,
所述方法还包括针对所述一个或多个其他分量集中的每一个而以对应图像分辨率的升序:
放大具有最高对应图像分辨率的所述经重构集,以便增加所述经重构集的对应图像分辨率来等于所述其他分量集的对应图像分辨率,以及
将所述经重构集与所述其他分量集组合在一起,以便产生另一经重构集。
C.3根据陈述C.1或陈述C.2所述的方法,其中每个分量集对应于逐渐提高的图像分辨率,其中每个逐渐提高的图像分辨率对应于对应图像中像素数量的四分之一增加。
C.4根据陈述C.1至C.3中任一项所述的方法,其中其他分量集的数量为两个。
C.5根据陈述C.1至C.4中任一项所述的方法,其中所述第一分量集对应于图像数据,并且所述第二分量集和任何其他分量集对应于残差图像数据。
C.6一种对数据集进行解码的方法,所述方法包括:
对所述集进行去稀疏化,包括在所述集的其中未接收到稀疏数据的一个或多个部分中重新创建稀疏数据,并且在所述集内保持接收到的数据的定位;以及
将熵解码操作应用于所述去稀疏化集;
其中根据所述熵解码操作执行对所述集进行去稀疏化的步骤。
C.7一种用于对接收到的数据集进行解码以获得经解码集的方法,所述方法包括:
根据陈述C.6所述的方法而对所述集进行解码;
对经熵解码集进行去量化;以及
将方向组成变换应用于所述经去量化集以获得经解码集。
C.8一种重构根据陈述C.1至C.5中任一项所述的经编码数据集的方法,其中根据根据陈述C.7所述的方法执行对所述第一和第二分量集中的每一个的解码。
C.9一种对稀疏数据集进行解码的方法,所述方法包括:
获得经编码数据集,所述编码数据包含信息,所述信息在被解码时将使得能够重构所述稀疏数据集;
对所述经编码数据集的第一部分进行解码以获得第一经解码数据集;以及基于所述第一经解码数据集而确定如何重构所述稀疏数据集的第一部分。
C.10根据陈述C.9所述的方法,其中所述第一经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第二经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。
C.11根据陈述C.10所述的方法,其中如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第二经解码数据集,则所述方法还包括:
对所述经编码数据集的第二部分进行解码以获得所述第二经解码数据集;以及
通过从所述第二经解码数据集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
C.12根据陈述C.9或C.10所述的方法,其中如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于模拟所述稀疏数据集的所述第一部分,则所述方法还包括:
通过生成第二类型的数据符号来模拟所述稀疏数据集的所述第一部分。
C.13根据陈述C.11或C.12所述的方法,其中解码和重构的步骤包括:
对所述第二部分的第一子部分进行解码以获得第一经解码数据子集;
基于与所述第一经解码数据集相关联的信息,确定所述第一经解码数据子集包含一个或多个元数据符号还是第一类型的数据符号。
C.14根据陈述C.13所述的方法,其中如果确定第一经解码数据子集包含一个或多个元数据符号,则所述方法还包括:
对所述第二部分的第二子部分进行解码以获得第二经解码数据子集;以及
至少基于与所述第一经解码数据子集相关联的信息,确定所述第二经解码数据子集包含一个或多个元数据符号还是第一类型的数据符号。
C.15根据陈述C.14所述的方法,其中如果确定所述第二经解码数据子集包含一个或多个元数据符号,则所述方法还包括:
对所述第二部分的第三子部分进行解码以获得第三经解码数据子集;以及
通过从所述第三经解码数据子集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
C.16根据陈述C.13所述的方法,其中如果确定所述第二经解码数据子集包含第一类型的数据符号,则所述方法还包括:
对所述第二部分的第二子部分进行解码以获得第二经解码数据子集;以及
通过从所述第二经解码数据子集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
C.17根据陈述C.13所述的方法,其中如果确定所述第一经解码数据子集包含第一类型的数据符号,则所述方法还包括:
通过从所述第一经解码数据子集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
C.18根据陈述C.10所述的方法,其中如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第二经解码数据集,则所述方法还包括:
对所述经编码数据集的第二部分进行解码以获得所述第二经解码数据集,其中所述第二经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第三经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。
C.19根据陈述C.18所述的方法,其中如果所述第二经解码数据集中的所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于模拟所述稀疏数据集的所述第一部分,则所述方法还包括:
通过生成第二类型的数据符号来模拟所述稀疏数据集的所述第一部分。
C.20根据陈述C.19所述的方法,其中如果所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第三经解码数据集,则所述方法还包括:
对所述经编码数据集的第三部分进行解码以获得所述第三经解码数据集,其中所述第三经解码数据集对应于一个或多个元数据符号,这些元数据符号指示是基于第四经解码数据集还是基于模拟所述稀疏数据集的所述第一部分而重构所述稀疏数据集的所述第一部分。
C.21根据陈述C.20所述的方法,其中如果所述第三经解码数据集中的所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于模拟所述稀疏数据集的所述第一部分,则所述方法还包括:
通过生成第二类型的数据符号来模拟所述稀疏数据集的所述第一部分。
C.22根据陈述C.20所述的方法,其中如果所述第三经解码数据集中的所述一个或多个元数据符号指示所述稀疏数据集的所述第一部分的重构应基于第四经解码数据集,则所述方法还包括:
对所述经编码数据集的第四部分进行解码以获得所述第四经解码数据集;
通过从所述第四经解码数据集提取第一类型的数据符号来重构所述稀疏数据集的所述第一部分。
C.23根据陈述C.11至C.22中任一项所述的方法,其中所述第一类型是非零值,且所述第二类型是零值。
C.24根据陈述C.11至C.22中任一项所述的方法,其中所述第一类型是高于阈值的值,且所述第二类型是低于所述阈值的值,并且其中取决于所选实施方式,等于所述阈值的值能够属于所述第一类型或者属于所述第二类型。
D.1一种用于对接收到的表示已经压缩的信息的经编码数据集进行解码的方法,所述经编码数据集包括多个子集,每个子集表示所述已经压缩的信息的区,所述方法包括:
接收所述经编码数据集;
检索所述已经压缩的信息的用信号通知的大小维度;
基于所述用信号通知的大小维度,识别所述数据集中期望的最大子集量,所述子集包括预定最大量的经编码数据元素,并且识别待由每个子集表示的期望数据元素量;
基于由每个子集表示的所述期望数据元素量而对所述经编码数据集进行解码,以推导数据元素集;以及
使用推导出的数据元素集来重构所述已经压缩的信息。
D.2根据陈述D.1所述的方法,其中识别每个子集内的期望数据元素量的步骤基于从所述经编码数据集检索所述子集的顺序。
D.3根据陈述D.1或D.2所述的方法,其中识别每个子集内的期望数据元素量的步骤基于将所述子集映射到所述已经压缩的信息的对应区的所定义映射顺序。
D.4根据陈述D.3所述的方法,其中对所述经编码数据集进行解码的步骤包括对所述经编码数据集中的任何数据或元数据进行掩蔽,所述数据或元数据对应于所述已经压缩的信息基于所述子集的所定义映射顺序而在所述用信号通知的大小维度之外的定位。
D.5根据陈述D.1至D.4中任一项所述的方法,其中每个子集是包括元数据元素和数据符号的数据结构。
D.6根据陈述D.5所述的方法,还包括:
基于用信号通知的大小维度,识别哪些元数据元素包括相关元数据,且哪些元数据包含伪元数据。
D.7根据陈述D.6所述的方法,忽略伪元数据。
D.8根据陈述D.5至D.7中任一项所述的方法,还包括:
基于所述用信号通知的维度而识别所述数据结构的结构。
D.9根据陈述D.5至D.8中任一项所述的方法,其中每个数据结构与数据元素的正方形数组相关联,并且其中每个元数据元素对应于所述正方形数组的正方形子数组。
D.10根据陈述D.5至D.9中任一项所述的方法,其中基于所述数据符号到映射到所述已经压缩的信息的所定义映射顺序,所述数据结构仅包括所述已经压缩的信息的出于所述大小维度内的数据符号。
D.11根据陈述D.5至D.10中任一项所述的方法,其中所述用信号通知的维度指示所述数据结构部分不包含数据元素。
D.12根据陈述D.1至D.11中任一项所述的方法,其中重构的步骤包括:
基于所定义顺序和所述用信号通知的大小维度而将推导出的数据元素映射到数组中的定位,使得推导出的数据元素仅放置在所述用信号通知的大小维度内的位置处。
D.13一种用于对接收到的表示已经压缩的信息的经编码数据集进行解码的设备,所述设备包括被配置成执行根据陈述D.1至D.12任一项所述的方法的处理器。
D.14一种将待压缩信息编码为经编码数据集的方法,所述经编码数据集包括多个子集,每个子集表示所述已经压缩的信息的区,所述方法包括:
识别所述待压缩信息的大小维度;
用信号通知所述已经压缩的信息的所述大小维度;
将所述待压缩信息的数据元素编码成所述多个子集,所述子集包括预定最大量的经编码数据元素。
D.15根据陈述D.14所述的方法,其中对所述数据元素进行编码的步骤包括***所述经编码数据集中的任何数据或元数据,所述数据或元数据对应于所述已经压缩的信息在所述用信号通知的大小维度之外的定位。
D.16根据陈述D.14或D.15所述的方法,其中每个子集是包括元数据元素和数据符号的数据结构。
D.17根据陈述D.16所述的方法,还包括:
在所述数据结构中***伪虚拟元数据元素。
D.18根据陈述D.16或D.17所述的方法,其中每个数据结构与数据元素的正方形数组相关联,并且其中每个元数据元素对应于所述正方形数组的正方形子数组。
D.19根据陈述D.16至D.18中任一项所述的方法,其中基于所述数据符号到映射到所述已经压缩的信息的所定义映射顺序,所述数据结构仅包括所述已经压缩的信息的出于所述大小维度内的数据符号。
D.20根据陈述D.14至D.19中任一项所述的方法,其中编码的步骤包括:
基于所定义顺序和所述用信号通知的大小维度而将数组中的每个定位映射到子集,使得从所述经编码数据集推导出的数据元素仅放置在所述用信号通知的大小维度内的位置处。
D.21一种用于将待压缩信息编码为经编码数据集的设备,所述设备包括被配置成执行根据陈述D.14至D.20中任一项所述的方法的处理器。
Claims (15)
1.一种对检索到的表示已经压缩的信息的经熵编码数据集进行解码的方法,所述方法包括:
检索与相应符号类型相关联的多个熵解码参数;
将熵解码操作应用于所述经编码数据集以使用与第一符号类型相关联的参数对所述第一符号类型的符号进行解码,
其中,所述第一类型的符号包括指示符元素集,所述指示符元素集指示在所述数据集中的不同定位中期望的符号的类型;
通过分析所述第一符号类型的至少一个先前解码的符号来确定期望符号类型,以识别所述经编码数据集中期望的符号类型;以及
更新所述熵解码操作以使用与所述期望符号类型相关联的参数。
2.根据权利要求1所述的方法,其中,所述经编码数据集包括所述第一类型的符号和表示与所述已经压缩的信息相关联的一个或多个值的第二类型的符号。
3.根据权利要求1或2所述的方法,其中,所述方法包括:通过分析所述第一符号类型的至少一个先前解码的符号来迭代地确定所述期望符号类型以及更新所述熵解码操作以使用与所述期望符号类型相关联的参数。
4.根据权利要求1至3中任一项所述的方法,其中,所述熵解码操作是范围解码操作,并且所述熵解码参数包括概率信息。
5.根据权利要求1至4中任一项所述的方法,其中,更新所述熵解码操作包括:从存储器删除所述经编码数据的不再需要用于所述期望符号类型进行解码的一部分,经编码数据的所述部分先前读入存储器以用于所述熵解码操作。
6.根据权利要求1至4中任一项所述的方法,其中,所述第一类型的符号是所述节点符号并且所述第二类型的符号是所述数据符号,其中,识别散布的节点符号和数据符号的有序集的步骤包括应用以及更新所述熵解码操作的步骤,并且确定期望符号类型的步骤包括处理所述有序树使得所述期望符号类型是基于树遍历期间的所述树的被访问节点而确定的步骤。
7.一种计算机可读介质,包括使处理器执行根据权利要求1至6中任一项所述的方法的指令。
8.一种用于对接收到的经编码数据集进行解码的设备,所述设备包括被配置成执行根据权利要求1至6中任一项所述的方法的处理器。
9.一种对表示待压缩信息的数据集进行熵编码的方法,所述方法包括:
检索与相应符号类型相关联的多个熵编码参数;
将熵编码操作应用于所述数据集,以使用与第一符号类型相关联的参数对所述第一符号类型的符号进行编码;
通过分析所述第一符号类型的至少一个先前编码的符号来确定期望符号类型,以识别所述经编码数据集中期望的符号类型;以及
更新所述熵编码操作以使用与所述期望符号类型相关联的参数,
其中,所述第一符号类型包括指示符元素集,所述指示符元素集指示在所述数据集中的不同定位中期望的符号类型。
10.根据权利要求9所述的方法,其中,所述数据集包括所述第一类型的符号和表示与所述待压缩信息相关联的一个或多个值的第二类型的符号。
11.根据权利要求9或10所述的方法,其中,所述方法包括:通过分析所述第一符号类型的至少一个先前编码的符号来迭代地确定所述期望符号类型以及更新所述熵编码操作以使用与所述期望符号类型相关联的参数。
12.根据权利要求9至11中任一项所述的方法,其中,所述熵编码操作是范围编码操作,并且所述熵编码参数包括累积分布函数。
13.根据权利要求9至12中任一项所述的方法,其中,所述第一类型的符号是所述节点符号并且所述第二符号类型是所述数据符号,其中,生成散布的节点符号和数据符号的有序集的步骤包括应用以及更新所述熵编码码操作的步骤,并且确定期望符号类型的步骤包括处理所述有序树使得所述期望符号类型是基于树遍历期间的所述树的被访问节点而确定的步骤。
14.一种计算机可读介质,包括使处理器执行根据权利要求9至13中任一项所述的方法的指令。
15.一种对表示待压缩信息的数据数组进行编码的设备,所述设备包括被配置成执行根据权利要求9至13中任一项所述的方法的处理器。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17386046.1 | 2017-12-06 | ||
EP17386046.1A EP3496403A1 (en) | 2017-12-06 | 2017-12-06 | Hierarchical data structure |
EP18386002.2 | 2018-02-08 | ||
EP18386002 | 2018-02-08 | ||
GB1812407.3 | 2018-07-30 | ||
GBGB1812407.3A GB201812407D0 (en) | 2018-07-30 | 2018-07-30 | Methods and apparatuses for encoding and decoding a bytestream |
GBGB1815437.7A GB201815437D0 (en) | 2018-09-21 | 2018-09-21 | Hierarchical data structure |
GB1815437.7 | 2018-09-21 | ||
CN201880088752.4A CN111699696B (zh) | 2017-12-06 | 2018-12-06 | 用于对字节流进行编码和解码的方法和设备 |
PCT/GB2018/053546 WO2019111004A1 (en) | 2017-12-06 | 2018-12-06 | Methods and apparatuses for encoding and decoding a bytestream |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880088752.4A Division CN111699696B (zh) | 2017-12-06 | 2018-12-06 | 用于对字节流进行编码和解码的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117544793A true CN117544793A (zh) | 2024-02-09 |
Family
ID=64607029
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880088752.4A Active CN111699696B (zh) | 2017-12-06 | 2018-12-06 | 用于对字节流进行编码和解码的方法和设备 |
CN202311652468.4A Pending CN117676138A (zh) | 2017-12-06 | 2018-12-06 | 编码信号的方法、编码器、解码数据流的方法以及解码器 |
CN201880088739.9A Active CN111699695B (zh) | 2017-12-06 | 2018-12-06 | 用于对经编码数据集进行解码的方法、设备和存储介质 |
CN202311512007.7A Pending CN117544793A (zh) | 2017-12-06 | 2018-12-06 | 用于对字节流进行编码和解码的方法和设备 |
CN202311713269.XA Pending CN117811585A (zh) | 2017-12-06 | 2018-12-06 | 字节流及对其进行分级编码和解码的方法和设备、介质 |
CN201880088756.2A Active CN111684812B (zh) | 2017-12-06 | 2018-12-06 | 解码经编码二维数据流的方法及解码器 |
CN201880088741.6A Active CN111684802B (zh) | 2017-12-06 | 2018-12-06 | 用于对字节流进行分级编码和解码的方法和设备 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880088752.4A Active CN111699696B (zh) | 2017-12-06 | 2018-12-06 | 用于对字节流进行编码和解码的方法和设备 |
CN202311652468.4A Pending CN117676138A (zh) | 2017-12-06 | 2018-12-06 | 编码信号的方法、编码器、解码数据流的方法以及解码器 |
CN201880088739.9A Active CN111699695B (zh) | 2017-12-06 | 2018-12-06 | 用于对经编码数据集进行解码的方法、设备和存储介质 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311713269.XA Pending CN117811585A (zh) | 2017-12-06 | 2018-12-06 | 字节流及对其进行分级编码和解码的方法和设备、介质 |
CN201880088756.2A Active CN111684812B (zh) | 2017-12-06 | 2018-12-06 | 解码经编码二维数据流的方法及解码器 |
CN201880088741.6A Active CN111684802B (zh) | 2017-12-06 | 2018-12-06 | 用于对字节流进行分级编码和解码的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (10) | US11089316B2 (zh) |
EP (6) | EP3721625A1 (zh) |
CN (7) | CN111699696B (zh) |
WO (6) | WO2019111013A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108280365B (zh) * | 2017-09-19 | 2019-04-12 | 平安科技(深圳)有限公司 | 数据访问权限管理方法、装置、终端设备及存储介质 |
GB2596002B (en) * | 2019-02-13 | 2023-11-22 | V Nova Int Ltd | Object analysis |
CN109982086B (zh) * | 2019-04-10 | 2020-12-08 | 上海兆芯集成电路有限公司 | 图像压缩方法及其装置 |
GB201905400D0 (en) | 2019-04-16 | 2019-05-29 | V Nova Int Ltd | Video coding technology |
CN113906681B (zh) * | 2019-09-12 | 2022-10-18 | 深圳市大疆创新科技有限公司 | 点云数据的编解码方法、***和存储介质 |
CN114788283A (zh) | 2019-10-02 | 2022-07-22 | 威诺瓦国际有限公司 | 用于向后兼容的分级改进的嵌入式信令以及超分辨率信令的用途 |
GB202001839D0 (en) | 2020-02-11 | 2020-03-25 | V Nova Int Ltd | Use of tiered hierarchical coding for point cloud compression |
GB2608962A (en) * | 2020-04-14 | 2023-01-18 | V Nova Int Ltd | Transformed coefficient ordering for entropy coding |
CN111787323B (zh) * | 2020-05-23 | 2021-09-03 | 清华大学 | 一种基于对抗学习的可变比特率生成式压缩方法 |
GB2598701B (en) | 2020-05-25 | 2023-01-25 | V Nova Int Ltd | Wireless data communication system and method |
KR102356037B1 (ko) * | 2020-10-14 | 2022-02-07 | 성균관대학교산학협력단 | 다시점 360도 영상 스트리밍 방법 및 장치 |
CN112261023A (zh) * | 2020-10-15 | 2021-01-22 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的数据传输方法和装置 |
GB2601990B (en) | 2020-10-16 | 2024-06-19 | V Nova Int Ltd | Distributed analysis of a multi-layer signal encoding |
WO2022103171A1 (en) * | 2020-11-13 | 2022-05-19 | Samsung Electronics Co., Ltd. | Method and device of depth densification using rgb image and sparse depth |
GB2601368B (en) * | 2020-11-27 | 2023-09-20 | V Nova Int Ltd | Video decoding using post-processing control |
GB2601362B (en) * | 2020-11-27 | 2023-08-16 | V Nova Int Ltd | Video encoding using pre-processing |
US12047575B2 (en) * | 2020-12-03 | 2024-07-23 | Intel Corporation | Methods, apparatus, and articles of manufacture for multi-symbol equiprobable mode entropy coding |
US20220156322A1 (en) * | 2021-09-29 | 2022-05-19 | Intel Corporation | Graph reordering and tiling techniques |
GB2614054A (en) | 2021-12-17 | 2023-06-28 | V Nova Int Ltd | Digital image processing |
US20230247206A1 (en) * | 2022-02-03 | 2023-08-03 | Tencent America LLC | Methods, devices, and storage medium for multi-symbol arithmetic coding |
GB2614763B (en) | 2022-03-29 | 2024-05-01 | V Nova Int Ltd | Upsampling filter for applying a predicted average modification |
GB2611129B (en) | 2022-03-31 | 2024-03-27 | V Nova Int Ltd | Signal processing with overlay regions |
CN115114565B (zh) * | 2022-08-24 | 2022-12-27 | 启东晶尧光电科技有限公司 | 一种基于大数据分析的直线电机故障检测方法及*** |
GB202215675D0 (en) | 2022-10-21 | 2022-12-07 | V Nova Int Ltd | Distributed analysis of a multi-layer signal encoding |
CN117272938B (zh) * | 2023-11-22 | 2024-02-20 | 神思电子技术股份有限公司 | 一种用于文本生成的动态限定域解码方法、设备及介质 |
CN117294800B (zh) * | 2023-11-24 | 2024-03-15 | 深圳市资福医疗技术有限公司 | 基于四叉树的图像动态调节传输方法、设备及存储介质 |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5228098A (en) * | 1991-06-14 | 1993-07-13 | Tektronix, Inc. | Adaptive spatio-temporal compression/decompression of video image signals |
WO1995014350A1 (en) * | 1993-11-15 | 1995-05-26 | National Semiconductor Corporation | Quadtree-structured walsh transform coding |
US5446806A (en) * | 1993-11-15 | 1995-08-29 | National Semiconductor Corporation | Quadtree-structured Walsh transform video/image coding |
US6028963A (en) * | 1996-06-17 | 2000-02-22 | Canon Kabushiki Kaisha | Image encoding based on judgement on prediction error |
JPH10215453A (ja) * | 1997-01-30 | 1998-08-11 | Sharp Corp | 動画像符号化装置および動画像復号装置 |
JP3213584B2 (ja) * | 1997-09-19 | 2001-10-02 | シャープ株式会社 | 画像符号化装置及び画像復号装置 |
CA2265089C (en) * | 1998-03-10 | 2007-07-10 | Sony Corporation | Transcoding system using encoding history information |
US6278715B1 (en) * | 1998-11-05 | 2001-08-21 | Qualcom Incorporated | System and method for reducing deinterleaver memory requirements through chunk allocation |
US20020044695A1 (en) * | 2000-05-05 | 2002-04-18 | Bostrom Alistair K. | Method for wavelet-based compression of video images |
US6654760B2 (en) | 2001-06-04 | 2003-11-25 | Hewlett-Packard Development Company, L.P. | System and method of providing a cache-efficient, hybrid, compressed digital tree with wide dynamic ranges and simple interface requiring no configuration or tuning |
US7483581B2 (en) * | 2001-07-02 | 2009-01-27 | Qualcomm Incorporated | Apparatus and method for encoding digital image data in a lossless manner |
US6894628B2 (en) * | 2003-07-17 | 2005-05-17 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Apparatus and methods for entropy-encoding or entropy-decoding using an initialization of context variables |
US20060008009A1 (en) * | 2004-07-09 | 2006-01-12 | Nokia Corporation | Method and system for entropy coding for scalable video codec |
TWI433545B (zh) * | 2007-10-30 | 2014-04-01 | Nippon Telegraph & Telephone | 影像編碼裝置及影像解碼裝置 |
CN101588252B (zh) * | 2008-05-23 | 2011-07-20 | 华为技术有限公司 | 一种多点会议的控制方法及装置 |
US8634456B2 (en) * | 2008-10-03 | 2014-01-21 | Qualcomm Incorporated | Video coding with large macroblocks |
US8503527B2 (en) * | 2008-10-03 | 2013-08-06 | Qualcomm Incorporated | Video coding with large macroblocks |
US8194862B2 (en) * | 2009-07-31 | 2012-06-05 | Activevideo Networks, Inc. | Video game system with mixing of independent pre-encoded digital audio bitstreams |
US20110274162A1 (en) * | 2010-05-04 | 2011-11-10 | Minhua Zhou | Coding Unit Quantization Parameters in Video Coding |
HUE057597T2 (hu) * | 2010-04-13 | 2022-05-28 | Ge Video Compression Llc | Videó kódolás képek többes fa struktúrájú alosztásainak használatával |
EP2559166B1 (en) * | 2010-04-13 | 2017-11-01 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Probability interval partioning encoder and decoder |
CA2794771C (en) * | 2010-05-21 | 2016-03-29 | Research In Motion Limited | Methods and devices for reducing sources in binary entropy coding and decoding |
WO2012044104A2 (ko) * | 2010-09-30 | 2012-04-05 | 삼성전자 주식회사 | 계층적 구조의 심볼을 부호화하는 비디오 부호화 방법 및 그 장치, 계층적 구조의 심볼을 복호화하는 비디오 복호화 방법 및 그 장치 |
AU2011201344B2 (en) * | 2011-03-23 | 2013-06-13 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding video data |
ES2906869T3 (es) * | 2011-06-16 | 2022-04-20 | Ge Video Compression Llc | Inicialización de contexto en codificación entrópica |
FR2977111A1 (fr) * | 2011-06-24 | 2012-12-28 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
US8977065B2 (en) | 2011-07-21 | 2015-03-10 | Luca Rossato | Inheritance in a tiered signal quality hierarchy |
US9129411B2 (en) | 2011-07-21 | 2015-09-08 | Luca Rossato | Upsampling in a tiered signal quality hierarchy |
US8531321B1 (en) | 2011-07-21 | 2013-09-10 | Luca Rossato | Signal processing and inheritance in a tiered signal quality hierarchy |
US8711943B2 (en) | 2011-07-21 | 2014-04-29 | Luca Rossato | Signal processing and tiered signal encoding |
US8948248B2 (en) | 2011-07-21 | 2015-02-03 | Luca Rossato | Tiered signal decoding and signal reconstruction |
US9131245B2 (en) * | 2011-09-23 | 2015-09-08 | Qualcomm Incorporated | Reference picture list construction for video coding |
BR112014004797B1 (pt) * | 2011-10-17 | 2022-02-15 | Kabushiki Kaisha Toshiba | Método de decodificação |
ES2496365T3 (es) * | 2011-10-24 | 2014-09-18 | Blackberry Limited | Codificación y descodificación de mapas significativos usando selección de la partición |
US9584819B2 (en) * | 2011-10-24 | 2017-02-28 | Qualcomm Incorporated | Grouping of tiles for video coding |
US9510018B2 (en) | 2011-11-23 | 2016-11-29 | Luca Rossato | Signal analysis and generation of transient information |
CN103313046B (zh) * | 2012-03-06 | 2019-06-14 | 中兴通讯股份有限公司 | 一种残差的表示方法和熵编码输入装置 |
WO2013171168A1 (en) * | 2012-05-14 | 2013-11-21 | Luca Rossato | Encoding and decoding based on blending of sequences of samples along time |
KR102001415B1 (ko) * | 2012-06-01 | 2019-07-18 | 삼성전자주식회사 | 다계층 비디오 코딩을 위한 레이트 제어 방법, 이를 이용한 비디오 인코딩 장치 및 비디오 신호 처리 시스템 |
US9602827B2 (en) * | 2012-07-02 | 2017-03-21 | Qualcomm Incorporated | Video parameter set including an offset syntax element |
US9549182B2 (en) * | 2012-07-11 | 2017-01-17 | Qualcomm Incorporated | Repositioning of prediction residual blocks in video coding |
KR102445274B1 (ko) * | 2012-10-01 | 2022-09-20 | 지이 비디오 컴프레션, 엘엘씨 | 향상 레이어에서 변환 계수 블록들의 서브블록-기반 코딩을 이용한 스케일러블 비디오 코딩 |
US9667994B2 (en) | 2012-10-01 | 2017-05-30 | Qualcomm Incorporated | Intra-coding for 4:2:2 sample format in video coding |
CN116347068A (zh) * | 2013-01-04 | 2023-06-27 | Ge视频压缩有限责任公司 | 高效可伸缩编码概念 |
US9578339B2 (en) * | 2013-03-05 | 2017-02-21 | Qualcomm Incorporated | Parallel processing for video coding |
KR20160021222A (ko) * | 2013-06-18 | 2016-02-24 | 브이아이디 스케일, 인크. | Hevc 확장을 위한 계층간 파라미터 집합 |
GB2516826B (en) | 2013-07-23 | 2016-06-22 | Canon Kk | Method, device and computer program for encapsulating partitioned timed media data by creating tracks to be independently encapsulated in at least one media f |
US9401944B2 (en) * | 2013-10-22 | 2016-07-26 | Qualcomm Incorporated | Layered adaptive HTTP streaming |
CN106664424A (zh) * | 2014-01-03 | 2017-05-10 | 诺基亚技术有限公司 | 参数集编码 |
GB2523348B (en) * | 2014-02-20 | 2016-03-30 | Gurulogic Microsystems Oy | Encoder, decoder and method |
US20150264404A1 (en) | 2014-03-17 | 2015-09-17 | Nokia Technologies Oy | Method and apparatus for video coding and decoding |
US9930342B2 (en) * | 2014-06-20 | 2018-03-27 | Qualcomm Incorporated | Systems and methods for signaling hypothetical reference decoder parameters in a parameter set |
US9762912B2 (en) * | 2015-01-16 | 2017-09-12 | Microsoft Technology Licensing, Llc | Gradual updating using transform coefficients for encoding and decoding |
EP3360330B1 (en) * | 2015-10-08 | 2021-03-24 | Koninklijke KPN N.V. | Enhancing a region of interest in video frames of a video stream |
US10819997B2 (en) * | 2016-01-20 | 2020-10-27 | Arris Enterprises Llc | Encoding video data according to target decoding device decoding complexity |
WO2017195582A1 (en) * | 2016-05-13 | 2017-11-16 | Sharp Kabushiki Kaisha | Temporal sub-layer descriptor |
FI20165547A (fi) * | 2016-06-30 | 2017-12-31 | Nokia Technologies Oy | Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten |
GB2555788A (en) * | 2016-11-08 | 2018-05-16 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
WO2018135321A1 (ja) * | 2017-01-19 | 2018-07-26 | ソニー株式会社 | 画像処理装置および方法 |
-
2018
- 2018-12-06 EP EP18814995.9A patent/EP3721625A1/en active Pending
- 2018-12-06 WO PCT/GB2018/053555 patent/WO2019111013A1/en unknown
- 2018-12-06 EP EP18814998.3A patent/EP3721631A1/en active Pending
- 2018-12-06 EP EP18814996.7A patent/EP3721633A1/en active Pending
- 2018-12-06 WO PCT/GB2018/053554 patent/WO2019111012A1/en unknown
- 2018-12-06 CN CN201880088752.4A patent/CN111699696B/zh active Active
- 2018-12-06 CN CN202311652468.4A patent/CN117676138A/zh active Pending
- 2018-12-06 CN CN201880088739.9A patent/CN111699695B/zh active Active
- 2018-12-06 US US16/770,229 patent/US11089316B2/en active Active
- 2018-12-06 EP EP18814993.4A patent/EP3721632A1/en active Pending
- 2018-12-06 US US16/770,231 patent/US11575922B2/en active Active
- 2018-12-06 CN CN202311512007.7A patent/CN117544793A/zh active Pending
- 2018-12-06 US US16/954,050 patent/US11259037B2/en active Active
- 2018-12-06 CN CN202311713269.XA patent/CN117811585A/zh active Pending
- 2018-12-06 EP EP18814994.2A patent/EP3721624A1/en active Pending
- 2018-12-06 WO PCT/GB2018/053546 patent/WO2019111004A1/en unknown
- 2018-12-06 CN CN201880088756.2A patent/CN111684812B/zh active Active
- 2018-12-06 EP EP18814999.1A patent/EP3721626A1/en active Pending
- 2018-12-06 US US16/770,228 patent/US11297339B2/en active Active
- 2018-12-06 US US16/770,226 patent/US11743479B2/en active Active
- 2018-12-06 WO PCT/GB2018/053548 patent/WO2019111006A1/en unknown
- 2018-12-06 WO PCT/GB2018/053547 patent/WO2019111005A1/en unknown
- 2018-12-06 WO PCT/GB2018/053551 patent/WO2019111009A1/en unknown
- 2018-12-06 CN CN201880088741.6A patent/CN111684802B/zh active Active
- 2018-12-06 US US16/769,794 patent/US11601662B2/en active Active
-
2022
- 2022-03-25 US US17/704,454 patent/US11902551B2/en active Active
-
2023
- 2023-02-06 US US18/165,206 patent/US20230188736A1/en active Pending
- 2023-03-06 US US18/179,154 patent/US20230283791A1/en active Pending
- 2023-07-31 US US18/362,814 patent/US20240048741A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111699696B (zh) | 用于对字节流进行编码和解码的方法和设备 | |
US20230388531A1 (en) | Methods and apparatuses for encoding and decoding a bytestream | |
WO2021000658A1 (zh) | 点云编解码方法、编码器、解码器及计算机存储介质 | |
CN104704825B (zh) | 分段图像数据的无损压缩 | |
JPH11163733A (ja) | 符号化方法および装置 | |
WO2020115471A1 (en) | Bit plane encoding of data arrays | |
US7346218B2 (en) | Method and apparatus for encoding and decoding subband decompositions of signals | |
TW200529104A (en) | Compressing image data | |
JPH11225075A (ja) | 符号化方法及び装置 | |
Wai et al. | GIS Data Compression Based On Block-Encoding and Quadtree Approach |
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 |