CN106489241A - 编码器、解码器和方法 - Google Patents
编码器、解码器和方法 Download PDFInfo
- Publication number
- CN106489241A CN106489241A CN201580037251.XA CN201580037251A CN106489241A CN 106489241 A CN106489241 A CN 106489241A CN 201580037251 A CN201580037251 A CN 201580037251A CN 106489241 A CN106489241 A CN 106489241A
- Authority
- CN
- China
- Prior art keywords
- data
- packet
- block
- decoding
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
- H03M7/3095—Data deduplication using variable length segments
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1453—Management of the data involved in backup or backup restore using de-duplication of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6058—Saving memory space in the encoder or decoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- 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
Abstract
用于对输入数据(D1)编码以生成对应编码数据(E2)的编码器,包括数据处理硬件,数据处理硬件可操作为:(a)确定输入数据(D1)内的数据块或数据包的至少部分重现,其中数据块或数据包包括多个字节;(b)采用至少一个参考符号来关联相互类似的数据块或数据包的重现,和/或指示输入数据(D1)内是否存在相互类似的数据块或数据包的重现;(c)采用多个变化符号,例如多个掩码位,来指示输入数据(D1)内的数据块或数据包的部分重现的变化数据元素和未变化数据元素以及变化数据元素的数据值的变化;以及(d)将至少一个参考符号和多个变化符号编码到编码数据(E2)中。本公开提供了使用编码器对输入数据(D1)编码以生成对应编码数据(E2)的方法。另外,本公开提供了对应的解码器,以及对编码数据(E2)解码以生成对应解码数据(D3)的对应方法。
Description
技术领域
本公开涉及用于对输入数据(D1)编码以生成对应编码数据(E2)的编码器;本公开还涉及对输入数据(D1)编码以生成对应编码数据(E2)的方法。另外,本公开涉及用于对编码数据(E2)解码以生成对应解码数据(D3)的解码器;本公开还涉及对编码数据(E2)解码以生成对应解码数据(D3)的方法。另外,本公开涉及包括其上存储有计算机可读指令的非暂时性计算机可读存储介质的计算机程序产品,计算机可读指令可通过电脑化设备执行,电脑化设备包括处理硬件以执行上述方法。另外,本公开涉及编解码器,编解码器包括至少一个上述编码器以及至少一个上述解码器。
背景技术
为本公开提供技术背景的各种已知文献列在与本公开有关的附录中。
通常,用来压缩数据的算法是基于无损耗压缩方法[3]或有损耗压缩方法[4]中的一种。在无损耗压缩中,各种文件(即数据(D1))以数据(D1)可稍后恢复为原样的方式进行压缩。
通常,当对数据(D1)编码时,使用数据删除复制(data de-duplication)方法是公知的,该方法试图除去数据(D1)中的数据段(即当数据(D1)例如短暂地流动时反复出现而没有变化的那些数据段)的副本。已知的数据删除复制方法能够有效地寻找与期望数据块完全类似的这些数据块。
通常,已知的数据删除复制方法通过使用各种不同的方法来寻找先前出现的数据段,诸如:
(i)通过相对于参考数据段,检测给定数据段中的改变的数据元素的数;
(ii)通过计算给定数据段和参考数据段的数据元素之间的绝对差的总和;
(iii)通过利用冗余检验表;或者
(iv)通过采用滑动块方法。
整个文件也可被复制删除,在这种情况下,用来代替复制文件的符号产生出色的压缩比[5]。
另外,可以后处理的方式执行数据删除复制,在这种情况下在数据(D1)已写入之后追溯地执行对关联数据的处理。可替代地,可实时执行数据删除复制,即正在数据(D1)进入给定系统时,在这种情况下给定辨识出的数据块没有完全写入,而是替代地参考之前的、与给定辨识出的数据块彼此类似的数据块。
数据删除复制用于当代信息技术工业的各种分支中,诸如数据存储器中以及数据传送网络中。例如,数据删除复制用于云服务中、系统备份复制中、以及电子邮件服务中,其中连续地传送相互类似的文件,或仅仅稍微变化的基本上相互类似的文件。另外,在互联网通信网络中,发送对请求的响应,来回传送数据字节,并且这些字节主要容纳部分或全部的相同互联网协议(IP)包数据;例如数据删除复制与广域网(WAN)优化有关。
先前众所周知的是,与常规的数据压缩方法相比,已知的数据删除复制方法更具有成本效率。然而,已知的数据删除复制方法具有许多缺点。首先,由于数据删除复制方法试图实现期望的数据压缩比,所以经常使用可观的数据存储和处理能力。通常,需要增加关联的搜索区域,即用于寻找类似性的大量存储器,来提高数据压缩比。另外,需要使用诸如滑动搜索法的CPU加强方法,来提高数据压缩比。滑动搜索法试图通过在搜索区域内移动至由用于实现滑动搜索法所采用的算法指向的方向,以原始方式来识别目标数据块或数据包。
其次,已知的数据删除复制方法不能发现这样数据块或数据包,即内容稍有变化,但是相对于期望数据块仍包含许多未变化数据元素的数据块或数据包。
第三,已知的数据删除复制方法可能导致数据断裂,尤其在实时执行与这些数据删除复制方法有关的处理时。
发明内容
本公开旨在提供采用数据删除复制技术的改进的编码器,数据删除复制技术能够改进编码性能。
另外,本公开旨在提供采用复制技术的改进的解码器,复制技术能够改进解码性能。
在第一方面,本公开的实施方式提供了用于对输入数据(D1)编码以生成对应编码数据(E2)的编码器,其特征在于,编码器包括数据处理硬件,数据处理硬件能够操作为:
(a)确定所述输入数据(D1)内的数据块或数据包的至少部分重现,其中,所述数据块或数据包包括多个字节;
(b)采用至少一个参考符号来关联相互类似的数据块或数据包的重现,和/或指示所述输入数据(D1)内是否存在相互类似的数据块或数据包的重现;
(c)采用多个变化符号来指示所述输入数据(D1)内的数据块或数据包的部分重现的变化数据元素和未变化数据元素,以及变化数据元素的数据值的变化;以及
(d)将所述至少一个参考符号和所述多个变化符号编码到所述编码数据(E2)中。
编码器的处理硬件可操作为确定输入数据(D1)内的数据块或数据包的至少部分重现。为此目的,可选地,编码器10的处理硬件可操作为确定用于数据块或数据包的最佳尺寸。另外,可选地,编码器的处理硬件可操作为在编码数据(E2)内提供指示用于数据块或数据包的最佳尺寸的信息。
另外,编码器的处理硬件可操作为使用至少一个参考符号来关联相互类似的数据块或数据包的重现,和/或指示输入数据(D1)内是否存在相互类似的数据块或数据包的重现。就此而言,可选地,编码器的处理硬件可操作为使用一个或多个指示器,用于指示数据块或数据包相对于它们的对应参考数据块或数据包的一个或多个至少部分重现。
可选地,一个或多个指示器为一个或多个相对指示器。
可选地,在上述(d)中的编码数据(E2)包括变化符号,变化符号包括指示变化值和未变化值以及变化值的位/标记,或者变化符号包含与delta值内的变化值或未变化值以及值的变化有关的信息。更可选地,在编码器的操作中,delta值被分配零值以用于指示未变化,并且被分配非零值以用于指示变化。
应理解,“变化符号”总是包含用于表示已经变化的值以及用于表示特定值或其delta变化将如何进一步发送所必需的所有信息。换言之,如果使用了delta/ODelta值,那么只有一个值增加到变化符号中,并且仅添加到该符号中。这样,这些单个值当然可插入包含那些delta/ODelta值的数据值的流中,但是如果指示变化/未变化的位/标记被增加到变化符号,那么将存在两个值而不是一个,这样当然将两个值插入两个数据流中。这些数据流之一将包含指示变化/未变化的位/标记,并且然后第二数据流将同样包含新值,或者与在相同位置中待复制的数据块/数据包的值有关的不同的值。
关于“参考符号”,它表示数据块或数据包是否已被复制,并且还表示在部分复制或全部复制中使用了哪个数据块或数据包。换言之,在相对参考中或数据块自身索引或直接参考的指示器中的值“0”指示该数据块将不被复制。这样,使用直接或相对参考,其它值指示哪里可发现该数据块或数据包的重现。可通过不同程度的精度来执行直接和相对参考二者;换言之,地址/索引可对字节/字/块/包寻址/索引。当然,还可能通过直接参考来使用不是用于重现的可能位置的数据值,以指示关注的数据块/数据包没有被复制。与使用数据块自身索引/指示器相比较,使用不可能直接参考的值产生一个特别的优点,即该值将总是同样的,即其例如可更好地熵压缩。在直接参考中的不可能值例如为负值或出现在数据块/数据包范围之外的值。在间接参考中,上述零值“0”总是指示好的(即,可能的)值,因为它每次都是同样的,并且相对地其总是指向相同的数据块,并且因而易于识别关注的数据块/数据包不可具有重现的数据块/数据包。
另外,编码器可操作为将(c)中的多个变化符号用作为多个掩码位,以指示输入数据(D1)内的数据块或数据包的部分重现的变化数据元素和未变化数据元素(值),并且还指示变化的值。可替代地,变化符号可包含与delta值内的变化值或未变化值以及值的变化有关的信息。
可替代地,可选地,编码器的处理硬件可操作为通过使用指示未变化的一个或多个值来表示给定数据块或数据包的一个或多个未变化数据元素,其中,所述一个或多个值与所述输入数据(D1)中出现的那些值不同。
另外,编码器的处理硬件可操作为将至少一个参考符号以及多个变化符号(例如,掩码位)编码到编码数据(E2)中。可选地,编码器的处理硬件可操作为将至少一个参考符号以及多个变化符号(例如,掩码位)编码到多个数据流中,以提供编码数据(E2)。
另外,可选地,编码器包括附加编码单元,附加编码单元用于将至少一个参考符号和多个变化符号中的至少一部分编码到编码数据(E2)中。可选地,附加编码单元可操作为使用以下中的至少一个:熵调整编码、delta编码、如于2013年3月1日提交的专利申请GB1303661.1中所描述的ODelta编码、具有如于2014年7月21日提交的专利申请GB1412937.3中描述的不同预测器的ODelta编码、1u或8u区间编码、行程长度编码(RLE)、如于2013年3月1日提交的专利申请GB130360.3中描述的拆分行程长度编码(SRLE)、以及插值编码。
本公开的实施方式的优势在于通过实现数据删除复制的方法,编码器能够提供增强的编码性能。
在第二方面,本公开的实施方式提供了在编码器中对输入数据(D1)进行编码以生成对应编码数据(E2)的方法,其中编码器包括用于处理输入数据(D1)的数据处理硬件,其特征在于,该方法包括:
(a)确定所述输入数据(D1)内的数据块或数据包的至少部分重现,其中,所述数据块或数据包包括多个字节;
(b)采用至少一个参考符号来关联相互类似的数据块或数据包的重现,和/或指示所述输入数据(D1)内是否存在相互类似的数据块或数据包的重现;
(c)采用多个变化符号来指示所述输入数据(D1)内的数据块或数据包的部分重现的变化数据元素和未变化数据元素,以及变化数据元素的数据值的变化;以及
(d)将所述至少一个参考符号和所述多个变化符号编码到所述编码数据(E2)中。
可选地,在该方法中,在(d)中的编码数据(E2)包括变化符号,变化符号包括指示变化值和未变化值以及变化值的位/标记,或者变化符号包含与delta值内的变化值或未变化值以及值的变化有关的信息。更可选地,在本方法中,delta值被分配零“0”值用于指示未变化,并且被分配非零值以用于指示变化。
在第三方面,本公开的实施方式提供了包括其上存储有计算机可读指令的非暂时性(即,非瞬时性)计算机可读存储介质的计算机程序产品,计算机可读指令可通过包括处理硬件的计算机化设备执行,以执行上述方法。
在第四方面,本公开的实施方式提供了用于对编码数据(E2)解码以生成对应解码数据(D3)的解码器。解码器包括用于处理编码数据(E2)的处理硬件。
可选地,解码器的处理硬件可操作为在编码数据(E2)内接收指示数据块或数据包的尺寸的信息。
解码器的处理硬件可操作为对编码数据(E2)解码,以识别至少一个参考符号以及多个变化符号。可选地,解码器的处理硬件可操作为对来自编码数据(E2)内提供的多个数据流的、至少一个参考符号以及多个变化符号解码。
可选地,解码器的处理硬件可操作为对编码数据(E2)编码,以识别一个或多个指示器,该指示器指示数据块或数据包相对于它们的对应参考数据包或数据块的一个或多个至少部分重现。
解码器的处理硬件然后可操作为使用至少一个参考符号,即一个或多个指示器,以生成用于编码数据(E2)内的数据块或数据包的至少部分重现的数据。
另外,解码器的处理硬件可操作为采用作为多个掩码位的多个变化符号,以生成用于编码数据(E2)内的数据块或数据包的部分重现的变化数据元素的数据。可替代地,使用的变化符号包含与delta值内的变化值或无变化值以及值的变化有关的信息。
可替代地,可选地,解码器的处理硬件可操作为对来自指示未变化的一个或多个值的给定数据块或数据包的一个或多个未变化数据元素进行编码,其中,该一个或多个值与在解码数据(D3)中出现的值不同。
随后,解码器的处理硬件可操作为集合所生成的用于数据块或数据包的至少部分重现的数据以及所生成的用于数据块或数据包的部分重现的所述变化数据元素的数据,以生成对应解码数据(D3)。
另外,可选地,解码器包括附加解码单元,附加解码单元用于对来自编码数据(E2)的至少一个参考符号以及多个变化符号的至少一部分解码。可选地,附加解码单元可操作使用以下中的至少一种:熵调整解码、delta解码、ODelta解码、1u或8u区间解码、行程长度解码、拆分行程长度解码、以及插值解码。
在第五方面,本公开的实施方式提供了对编码数据(E2)解码以生成对应的解码数据(D3)的简单且快速的方法。
在第六方面,本公开的实施方式提供了包括其上存储有计算机可读指令的非暂时性(即,非瞬时性)计算机可读存储介质的计算机程序产品,计算机可读指令可通过包括处理硬件的计算机化设备执行,以执行上述的方法。
在第七方面,本公开的实施方式提供了包括上述编码器以及上述解码器的编解码器。
本公开的附加方面、优势、特征和主题将通过结合所附权利要求解释的示例性实施方式的详细描述和附图而变得明显。
将理解,在不偏离由所附权利要求限定的本公开范围的情况下,本公开的特征适合于以多种组合方式组合。
附图说明
当结合附图阅读时,更好地理解以上内容和以下示例性实施方式的详细说明。为了示出本公开,在附图中示出了本公开的示例性结构。然而,本公开并不限于本文中公开的具体方法和装置。另外,本领域技术人员应理解附图不是按比例绘制的。只要可能,相同的元件由相同的标号来指示。
现将仅通过示例的方式参照附图描述本公开的实施方式,在附图中:
图1是根据本公开的实施方式的编码器和解码器的示意图,编码器用于对输入数据(D1)编码以生成对应的编码数据(E2),解码器用于对编码数据(E2)解码以生成对应的解码数据(D3),其中编码器和解码器共同形成编解码器;
图2是根据本公开的实施方式的对输入数据(D1)编码以生成对应的编码数据(E2)的方法的步骤的图示;
图3A和图3B共同为根据本公开的实施方式的编码过程的步骤的图示;
图4是根据本公开的实施方式的对编码数据(E2)解码以生成对应的解码数据(D3)的方法的步骤的图示;以及
图5A和图5B共同为根据本公开的实施方式的解码过程的步骤的图示。
在附图中,使用带下划线的数字来表示下划线数字上的项或者与下划线数字相邻的项。未带下划线的数字涉及通过将未带下划线的数字与项连接的线所指示的项。当数字不带下划线且附有相关箭头时,不带下划线数字用于识别箭头所指的一般项。
具体实施方式
以下详细描述示出了本公开的实施方式以及实现这些实施方式的方法。虽然已公开了执行本公开的最佳方式,但是本领域技术人员应理解用于执行或实践本公开的其他实施方式也是可能的。
大体上,本公开的实施方式涉及处理数据的方法和用于执行这种数据处理的装置,其中执行数据删除复制和复制,这将在下文更详细地阐述。
参照图1,本公开的实施方式涉及:
(i)用于对输入数据(D1)编码以生成对应的编码数据(E2)的编码器10,以及对输入数据(D1)编码以生成编码数据(E2)的对应的方法;
(ii)用于对编码数据(E2)解码以生成对应的解码数据(D3)的解码器20,以及对编码数据(E2)解码以生成解码数据(D3)的对应的方法;以及
(iii)编解码器30,包括至少一个编码器和至少一个解码器的组合,即编码器10和解码器20的组合。
可选地,如以无损耗操作方式,解码数据(D3)完全类似于输入数据(D1)。可替代地,可选地,如以有损耗操作方式,解码数据(D3)大致类似于输入数据(D1)。还可替代地,可选地,例如通过变换,解码数据(D3)不同于输入数据(D1),但与出现在输入数据(D1)中的信息保持大体上类似;例如,当还要求重新格式化解码数据(D3)时,解码数据(D3)被有用地形成为与输入数据(D1)不同,例如与不同类型的通信平台、软件层、不同类型的通信装置等兼容。虽然本公开的一些实施方式描述了关于出现于输入数据(D1)中的图像数据,即通过使用掩码位(mask bit)来表示,但是应理解本公开的实施方式能够对多种彼此不同类型的输入数据(D1)编码,例如传感器数据。为了概括所有类型的数据,例如在所附权利要求中使用术语“变化符号(change symbol)”,在输入数据(D1)包括图像数据的特殊示例情况下,数据符号实现为掩码位。
编码器10包括用于处理输入数据(D1)的处理硬件。可选地,编码器10的处理硬件可操作为对输入数据(D1)编码,输入数据(D1)为以下中的至少一种但并不限于此:一维数据、多维数据、音频数据、图像数据、视频数据、传感器数据、文本数据、二进制数据、以及医学数据。可选地,输入数据(D1)接收为数据流或文件。可选地,输入数据(D1)包括许多小的变化,例如结构化细节和噪音的混合。
编码器10的处理硬件可操作为确定输入数据(D1)内的数据块或数据包的至少部分重现。为此目的,编码器10的处理硬件可选地可操作为确定用于数据块或数据包的最佳尺寸,如将在以下更详细地描述。另外,编码器10的处理硬件可选地可操作为在编码数据(E2)内,提供指示用于数据块或数据包的最佳尺寸的信息。
为了确定数据块或数据包的至少部分重现,编码器10的处理硬件可操作为使用一个或多个适当的冗余检验方法来进行一个或或多个冗余检验。可选地,使用冗余检验方法来选择数据块或数据包,所述数据块或数据包使未改变的数据元素的计数最大化,或使数据块或数据包的数据元素与对应的参考数据块或数据包的数据元素之间的绝对误差之和最小化。
另外,可选地,使用冗余检验方法来计算用于给定数据块或数据包的一个或多个冗余检验值。在示例中,计算用于给定数据块或数据包的一个长的冗余检验值。在另一示例中,计算用于给定数据块或数据包的多个短的冗余检验值。
如果计算出的用于给定数据块或数据包的冗余检验值与任何先前存储的信息没有匹配足够好,那么给定数据块或数据包被识别为非复制数据块或数据包。该非复制数据块或数据包如其在编码数据(E2)中那样写入或传递。另外,可选地,非复制数据块或数据包还可作为新参考数据块或数据包被插入至用于冗余检验目的的存储的信息序列中。
有益地,冗余检验值可通过多种方式计算,但是主要考虑的是,冗余检验值应能够用足够的精度辨别非复制数据块或数据包。然而,应理解,如果给定任务可通过使用较少计算和数据存储资源密集的优化算法执行,那么通过计算不必要精确的冗余检验值来浪费编码器10的处理硬件的计算资源是没有益处的。
另外,编码器10的处理硬件可操作为使用至少一个参考符号来关联相互类似的数据块或数据包的重现,和/或来指示输入数据(D1)内是否存在相互类似的数据块或数据包的重现。在这点上,编码器10的处理硬件可选地可操作为使用一个或多个指示器,用于指示数据块或数据包相对于它们的对应参考数据块或数据包的一个或多个至少部分重现。因此,所述至少一个参考符号被使用作为指向对应参考数据块或数据包的一个或多个指示器。
可选地,一个或多个指示器为一个或多个相对指示器,该相对指示器指示输入数据(D1)内数据块或数据包的一个或多个至少部分重现与对应参考数据块或数据包的相关距离。换言之,一个或多个指示器可选地指示数据块或数据包的一个或多个至少部分重现相对于输入数据(D1)内的对应参考数据块或数据包的位置。
可选地,一个或多个指示器包括具体位置的参考地址,这里可获得与它们的对应参考数据块或数据包相关的信息。可选地,一个或多个指示器包括在对编码数据(E2)解码以重建解码数据(D3)时需要使用的信息块的参考地址。换言之,一个或多个指示器指向它们的对应参考数据块或数据包的数据存储器位置。
另外,可选地,一个或多个指示器可表示为以下所列中的至少一种:字节精确指示器(即直接寻址)、数据值精确指示器、字精确指示器、或块精确指示器(即,基于许多给定块的寻址)。可选地,指示重现的地点(即“指示器”)可以相关的方式进行,诸如借助相关的每块符号值(即通过使用相关块精确移位)、相关字节精确移位、相关数据值精确移位、以及相关字精确移位等。
另外,编码器10的处理硬件可操作为使用多个变化符号作为包括位/标记的多个掩码位以指示输入数据(D1)内数据块或数据包的部分重现的变化数据元素和未变化数据元素(即值)以及变化的值。可选地,与未变化数据元素有关的掩码位设置为值“0”,而与变化数据元素有关的掩码位设置为值“1”,或反之亦然。因而,多个掩码位描述了哪些数据元素是变化的,以及哪些数据元素是未变化的。可替代地。变化符号包含与delta值内的变化值或非变化值以及值的变化有关的信息。可选地,delta值被分配零“0”值以指示没有变化,以及被分配非零值以指示变化。
可替代地,可选地,编码器10的处理硬件可操作为,通过使用指示没有变化的一个或多个值来表示给定数据块或数据包的一个或多个未变化数据元素,其中一个或多个值不同于在输入数据(D1)中出现的那些值。
另外,编码器10的处理硬件可操作为将至少一个参考符号和多个变化符号编码到编码数据(E2)中。可选地,编码器10的处理硬件可操作为将至少一个参考符号和多个变化符号编码到多个数据流中以提供编码数据(E2)。
如果使用无损耗操作方式,变化数据元素照样被写入或传送。如果使用有损耗操作方式,变化数据元素被量化。
如果使用接近无损耗操作方式,变化数据元素的至少一部分被量化。为此目的,编码器10的处理硬件可选地可操作为根据输入数据(D1)的内容、类型和/或组成的分析,量化变化数据元素的仅一些部分。因而,编码器10能够适应性地改变输入数据(D1)和编码数据(E2)之间的数据压缩比。
另外,变化数据元素被编码为例如以下中的至少一种:原始数据值、量化的原始数据值、delta值、量化的delta值、ODelta值、或量化的ODelta值。在本文中,“ODelta”指的是基于在二进制计数方法中概括的进行编码的微分形式,例如在专利文献GB1303661.1中所描述的,该专利通过引用并入本文。
可选地,当原始值、delta值或ODelta值用于写入和传递关于参考数据块或数据包的变化数据元素时,未变化数据元素例如设置为值“0”以指示没有变化,或设置为不另外出现于数据中的值。当使用原始值但要求传递不另外出现于数据中的值时,后一选择为更好的解决方案。随后,变化数据元素被设置为其原始数据值或delta值,即在量化或没有量化的情况下与原始数据值和参考数据帧、数据块或数据包中对应数据值之差相等的数据值。如果变化数据元素设置为原始数据值,且该数据值正好等于“0”并且“0”还用来指示未变化数据元素,那么潜在地出现混乱,即数据模糊。因而,在本公开的实施方式中优选采用后一选择,即使用不另外出现于数据中的数据值来避免这种模糊。然后,用于指示未变化数据元素的数据值在编码数据(E2)中传递。当参考符号用于指示参考数据块或数据包,例如一些之前的数据块或数据包时,在GB141 1451.6中描述的方法是本公开的实施方式可使用的方法的好示例。
如果使用有损耗操作方式,即使用了量化的形式,并且同时更新或增加参考符号,那么有益的是,当形成参考数据块时编码器10的处理硬件考虑将引起对应解码数据(D3)解量化的那些变化。有益地,当用量化的原始值传递变化数据元素时,在确定待用于指示未变化数据元素的数据值时还考虑量化效果。当量化的delta值或量化的ODelta值用来传递变化数据元素时,那么当零用于未变化数据元素时,量化有益地不将变化的值变为零。
另外,可选地,编码器10包括附加编码单元,附加编码单元用于将至少一个参考符号以及多个变化符号中的至少一部分编码到编码数据(E2)中。可选地,附加编码单元可操作为使用以下中的至少一个:熵调整编码、delta编码、ODelta编码、1u或8u区间编码、行程长度编码(RLE)、拆分行程长度编码(SRLE)、插值编码。
此外,可选地,编码器10可操作为将编码数据(E2)通信至数据服务器和/或数据存储器(在图1中未示出),用于存储在数据库(在图1中未示出)中。数据服务器和/或数据存储器设置为能够访问解码器20,其有益地与编码器10兼容以用于随后对编码数据(E2)进行解码。
在一些示例中,可选地,解码器20可操作为从数据服务器和/或数据存储器访问编码数据(E2)。
在替代的示例中,可选地,编码器10可操作为通过通信网络或通过直接连接,将编码数据(E2)传递至解码器20。另外,应注意,设置有基于硬件的或基于软件的编码器的设备还可与设置有基于硬件的或基于软件的解码器的另一设备直接通信。
在另一些替代示例中,可选地,解码器20被执行以从诸如硬盘和固态存储器(SSD)的非暂时性(即非瞬时性)计算机可读存储介质中获取编码数据(E2)。
解码器20包括用于处理编码数据(E2)的处理硬件。
可选地,解码器20的处理硬件可操作为在编码数据(E2)内接收指示数据块或数据包的尺寸的信息。
解码器20的处理硬件可操作为对编码数据(E2)进行解码,以识别至少一个参考符号以及多个变化符号。可选地,解码器20的处理硬件可操作为对来自编码数据(E2)内提供的多个数据流的至少一个参考符号以及多个变化符号进行解码。
可选地,解码器20的处理硬件可操作为对编码数据(E2)解码,以识别一个或多个指示器,所述指示器指示数据块或数据包相对于它们的对应参考数据包或数据块的一个或多个至少部分重现。
解码器20的处理硬件然后可操作为使用至少一个参考符号,即一个或多个指示器,以生成用于编码数据(E2)内的数据块或数据包的至少部分重现的数据。一个或多个指示器可选地为一个或多个相对指示器,使得解码器20的处理硬件能够确定数据块或数据包相对于它们的对应参考数据包或数据块的至少部分重现的位置。
另外,解码器20的处理硬件可操作为使用多个变化符号作为多个掩码位,以生成用于编码数据(E2)内的数据块或数据包的部分重现的变化数据元素的数据。可替代地,使用的变化符号包含与delta值内的变化值或无变化值以及值的变化有关的信息。
可替代地,可选地,解码器20的处理硬件可操作为对来自指示无变化的一个或多个值的给定数据块或数据包的一个或多个未变化数据元素解码,其中该一个或多个值与解码数据(D3)中出现的那些值不同。
随后,解码器20的处理硬件可操作为集合针对数据块或数据包的至少部分重现所生成的数据以及针对数据块或数据包的部分重现的变化数据元素所生成的数据,以生成解码数据(D3)。
可选地,解码数据(D3)设置为以下中的至少一种:一维数据、多维数据、音频数据、图像数据、视频数据、传感器数据、文本数据、二进制数据、医学数据,但是不限于此。
另外,可选地,解码器20包括附加解码单元,附加解码单元用于对来自编码数据(E2)的至少一个参考符号以及多个变化符号的至少一部分解码。可选地,附加解码单元可操作为使用以下中的至少一种:熵调整解码、delta解码、ODelta解码、1u或8u区间解码、行程长度解码、拆分行程长度解码、插值解码。
此外,出现在编码器10和解码器20中的数据处理方法可选地包括关于专利申请GB1411451.6中描述的子方法,上述专利通过引用并入本文,其中在表1中提供该专利申请的子方法。
表1:编码器10和解码器20中使用的子方法
图1仅为示例,不应过度地限制本文中权利要求的范围。应理解的是,用于编解码器30的具体指示被提供为示例,并不应解释为将编解码器30限制为编码器和解码器的特定标号、类型或设置。本领域技术人员将领会到本公开的实施方式的许多变化、替代以及修改。
可选地,编解码器30在单个设备内实现。可替代地,可选地,编解码器30在多个设备之间有效地实现。在示例中,编解码器30可选地实现为广播系统,其中,在第一空间位置处存在编码器10,在其他空间位置处存在多个解码器20。
编解码器30可实现为以下中的至少一种:数据编解码器、音频编解码器、图像编解码器和/或视频编解码器。编解码器30能够在预处理阶段实时地压缩输入数据(D1)。
另外,编解码器30可实现为提供实时数据传送网络编码方法,该编码方法特别在基于请求响应型通信的系统中可显著地节省数据传送所需的带宽,请求响应型通信诸如为用在网络浏览器和万维网(www)服务器中用于数据传送的超级文本传输协议(HTTP)[6]。除了HTTP协议之外,实时消息传输协议(RTMP)[7]经常用于音频和视频传递服务中以及回放视频服务中进行实时全双工数据传送。因而,编解码器30与基于HTTP的数据通信系统和基于RTMP的数据通信系统有关。
另外,可选地,编码器10和解码器10可操作为实现用于HTTP和/或RTMP的区块传送编码。可选地,HTTP和/或RTMP使用请求和对请求的响应内的固定尺寸的数据块和/或数据包。
编解码器30特别适合于用于传送尺寸被准确设置的数据块或数据包的通信协议。例如,因为在区块传送编码中传送的请求和对请求的响应使用了固定尺寸的数据块或数据包,所以在HTTP中使用区块传送编码是最佳使用区域。由于在HTTP上传送大量的数据,所以当使用编码器10对输入数据(D1)编码以生成对应编码数据(E2)时,将实现相当高的数据压缩比率。
对于本公开的实施方式,通过使用HTTP获得的另一好处在于,几乎无一例外,HTTP请求/响应包含与正在传送什么以及何时传送有关的精确信息。这使得能够选择用于在对输入数据(D1)进行编码期间使用的最优冗余检验表。这潜在地提高了可实现的关联数据压缩比率。
类似于HTTP,RTMP还限定了与具有特定限定尺寸的数据块或数据包的传送有关的规格。在互联网上,RTMP经常用来传送音频、图像或视频信息,特别是在实时通信中。在通信过程期间,用于待传送的数据块或数据包的尺寸根据采用的传送网络的响应时间和容量以预置间隔初始化。这潜在地提高了可实现的数据压缩比。
如果使用了传送网络,并且给定的发送方还不清楚是否将采用根据本公开的编码方法,那么有可能实现转换用于数据接收器的信息的代理服务器,在这样情况下可在可能缓慢的接收器与快速的发射器之间实现期望的压缩比。在这个方案中,代理服务器通过将参考符号连同变化数据元素一起以及数据块或数据包中变化的和未变化数据元素的掩码位或其他指示发送至接收器,向接收器通知至少一个先前发送的数据块或数据包的未变化数据元素。
在示例中,代理服务器为HTTP代理服务器或RTMP代理服务器,其相对于待优化的关联数据提供服务以及待服务的关联用户而位于最优地理位置处。可选地,采用根据本公开的实施方式的方法以使得诸如Windows Azure[8]的现成云端服务器方案更有效率。
在最近几年(2010+)期间,数据、音频、图像以及视频传送的数量增加很快,以至于即使摩尔定律[9]也不能跟上这种发展。因而,编解码器30可能对更有效地传送数据非常有用。
仅为了说明的目的,接下来提供在编码器10中执行的编码方法的数字示例。在这个示例中,输入数据(D1)包括可对应于单独的音频数据包、单独的图像块、HTTP包头等数据值。输入数据(D1)包括五个帧/块/包,其中每个帧/块/包包含54个数据值。应理解输入数据(D1)具有270个数据值,例如来自拆分成18×3个数据块的18×15图像。这导致分成五个数据块,每个数据块具有54个数据值。可替代地,为了压缩目的,输入数据(D1)还可认为是来自通过例如在美国专利文献US 8,675,731 B2中描述的块编码器生成的某一数据流的270个数据值,上述专利通过引用并入本文。
输入数据(D1)包括270个数据值(熵等于1428.35比特~=179字节),并且表示如下:
0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,120,250,64,0,
118,6,206,99,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,192,146,80,16,0,254,185,9,0,0,0,12,41,157,180,29,0,16,243,42,
42,172,8,0,69,0,0,40,121,13,64,0,118,6,206,80,62,241,193,52,172,16,
17,60,34,201,192,220,189,31,183,3,31,254,201,204,80,16,1,2,175,204,
0,0,0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,121,17,64,0,
118,6,206,76,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,209,65,80,16,1,2,168,87,0,0,0,12,41,157,180,29,0,16,243,42,
42,172,8,0,69,0,0,40,121,25,64,0,118,6,206,68,62,241,193,52,172,16,
17,60,34,201,192,220,189,31,183,3,31,254,221,164,80,16,1,2,155,244,
0,0,0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,121,67,64,0,
118,6,206,26,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,233,149,80,16,1,2,144,3,0,0
可选地,输入数据(D1)通过使用8u区间编码方法例如熵编码为253字节。通过参照这种8u区间编码,这意味着其是在根据本公开的编解码器中对8位数据值编码的区间编码方法。区间编码在http://en.wikipedia.org/wiki/Range_coding中进行了解释,上述网址中内容通过引用并入本文。
现在,这个结果还包括在根据本公开的编解码器中发送当前22个替代的固定概率表中的概率表或相当好的固定表。如果已知较好的概率表并且需要发送和/或接近较少适用的概率表时,那么区间编码数据的共享有益地非常接近于熵,即在这个示例中为179字节。
为了确定用于数据块的最佳尺寸(以下称为“最佳数据块尺寸”),编码器10的处理硬件操作为通过尺寸为7的初始数据块执行初始运行。有益地,初始数据块尺寸选择为相对小的数字,例如在3至8的范围内,以便能够精确检测最佳数据块尺寸。例如,数据块尺寸7导致如下所示的39个数据块:
270=38×7+4
其中,38个数据块具有尺寸为7的数据值,以及最后一个数据块具有尺寸为4的数据值。
对于给定数据块,参考符号“1”用于到达给定数据块之前的一个数据块的对应参考数据块。同样地,如果参考数据块到达给定数据块之前的一个数据块和一个数据值,则使用参考符号“2”。因而,参考符号指示参考数据块相对于给定数据块的位置。
应理解的是,给定数据块的尺寸可以以许多不同方式而认为是最优的。然而,通常期望在复制之后将编码数据尺寸优化(例如最小化)。通常通过努力寻找尽可能大的且还可产生尽可能多的待复制的数据块的数据块尺寸来很好地完成这种优化。接下来的部分描述确定几乎最优的数据块尺寸的一种方式的示例。根据本公开,还可使用其他方法来确定最优数据块尺寸。
另外,应理解在待编码的数据是周期性的情况下,最优数据块尺寸通常是该周期的长度、该周期长度的倍数,或者其倍数将大致等于该周期长度的一些数。
根据本公开,如果块/周期连续地同样重复多次,那么乘以待复制的所选元素和重复的计数也是可能的。当对数据编码时,这可能在许多情况下产生有效的结果,但是主要地,这可通过对复制符号进行熵编码或通过执行递归复制更容易且便利地进行。
为了清晰起见,下列列出了第9数据块的示例并且在其对应的参考数据块下添加了下划线:
0,12,41,157,180,29,0,15,243,42,42,172,6,0,69,0,0,40,120,250,64,0,
118,6,206,99,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,192,146,80,16,0,254,185,9,0,0,0,12,41,157,180,29,0,16,243,42,
42,172,8,0,69,0,0,40,121,13,64,0,118,6,206,80,62,241,193,52,172,16,
17,60,34,201,192,220,189,31,183,3,31,254,201,204,80,16,1,2,175,204,
0,0,0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,121,17,64,0,
118,6,206,76,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,209,65,80,16,1,2,168,87,0,0,0,12,41,157,180,29,0,16,243,42,
42,172,8,0,69,0,0,40,121,25,64,0,118,6,206,68,62,241,193,52,172,16,
17,60,34,201,192,220,189,31,183,3,31,254,221,164,80,16,1,2,155,244,
0,0,0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,121,67,64,0,
118,6,206,26,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,233,149,80,16,1,2,144,3,0,0
应理解的是,实际的参考数据块通常从解码数据获得,但是,因为这个数据现在是无损编码,那么原始数据值还可用于参考数据块。当参考数据块到达示例性数据块之前的48个数据值时,参考符号“48”被分配至示例性数据块。
在这个示例中,可选地通过使用下列方程使用数据值精确参考索引来计算参考数据块的第一索引:
first_index_of_reference_data_block=first_index_of_current_data_block+
block_size+reference_symbol-
number_of_nearest_reference.
(参考数据块的第一索引=当前数据块的第一索引+块尺寸+参考符号-最近的参考的数量)
对于第9数据块的示例,方程得到诸如以下的值:
56+7+48-1=2
其中,当前数据块的第一索引由下列方程计算:
first_index_of_current_data_block=(number_of_current_data_block-1)*
block_size,
(当前数据块的第一索引=(当前数据块的数量-1)*数据块尺寸)
其中,例如,当前数据块的数量为9,并且数据块尺寸为7。已添加下划线的第9数据块的参考符号,即“48”也来自下一章之后的参考符号。
应理解,第一数据块不具有对应的参考数据块,因而不分配参考符号。然而,最后一个数据块被分配其对应的参考符号。还应理解,最后一个数据块是不完整的,因而参考数据块的仅四个第一数据元素的数据值用于对最后一个数据块进行编码。因而,38个参考符号被分配如下:
0,0,0,0,0,0,31,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,
48,48,48,48,48,48,48,48,48,48,48,48,48,34
编码器10的处理硬件然后操作以计算最佳数据块尺寸,例如如下:
<最普通参考符号>+<初始数据块尺寸>-<用于最近的可能参考块的参考符号>
=48+7-1=54
应理解,在这个具体情况中,用于该具体数据列的最优块尺寸计算为54,该值也是这个数据列的重复周期的长度。其他适合的数据块尺寸例如为:
162,108,27,18,9,6
可选地,在最佳块尺寸方程式中也可使用经常出现且具有比最普通参考符号更小的值的其它参考符号以代替最普通参考符号,以使得能够对较大数量的小数据块进行复制。应理解,最近的参考的数量有益地不用作最普通的参考数使用,因为其可能受到类似数据值的长连续集的影响,并且因而其可能是子最优的。
以这种方式,编码方法包括在数据块自己的尺寸内寻找数据块的重现,以使得数据块不需要分成较小的数据段,即与已知的滑动搜索法类似。同样显然的是,这样不需要在具有全部长度和所有位置的所有先前存储的信息中反复地搜索复制的数据块,这会浪费宝贵的计算时间和资源。
应理解,在计算用于数据块或包的最佳尺寸时,如果找到相当小但不为1的参考值以及许多使用的参考值,那么通常有益的是使用这些值来代替最常用的参考值。还应理解的是,有益地用相对小的数据块或数据包尺寸来执行初步搜索,以使得不丢失短的参考,但是无论如何用足够大的数据块或数据包尺寸进行初步搜索,以使得相同数据值的冗长链不导致第一参考值变为最普通的一个。在这种状况出现的情况中,有益地是选择一些经常出现的小的、但比1大的值,来计算用于数据块或数据包的最佳尺寸以代替最普遍使用的参考。
现在,编码器10的处理硬件操作为通过最佳块尺寸,即为54的数据块尺寸执行下一运行。这产生如下的五个数据块:
0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,120,250,64,0,
118,6,206,99,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,192,146,80,16,0,254,185,9,0,0,
0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,121,13,64,0,118,
6,206,80,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,31,
254,201,204,80,16,1,2,175,204,0,0,
0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,121,17,64,0,118,
6,206,76,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,31,
254,209,65,80,16,1,2,168,87,0,0,
0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,121,25,64,0,118,
6,206,68,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,31,
254,221,164,80,16,1,2,155,244,0,0,
0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,121,67,64,0,118,
6,206,26,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,31,
254,233,149,80,16,1,2,144,3,0,0
在上文中,为了清晰起见,已对数据块的部分重现的变化数据元素添加了下划线。
另外,为了清晰起见,与最后四个数据块的216个数据元素有关的216个掩码位(54×4=216)表示如下:
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0
在上文中,与未变化数据元素有关的掩码位设置为值“0”,而与变化数据元素有关的掩码位设置为值“1”。
编码器10的处理硬件然后操作为将变化数据元素的数据值、与变化的和未变化数据元素有关的掩码位、以及与相互类似的数据块的部分重现有关的参考符号编码到多个数据流中,以提供编码数据(E2)。在本示例中,多个数据流包括如下表示的第一数据流、第二数据流、以及第三数据流。
第一数据流包括第一数据块的54个数据元素的数据值以及在后续数据块中的27个变化数据元素的数据值(熵=460.24位~=58字节),并且表示如下:
0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,120,250,64,0,
118,6,206,99,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,192,146,80,16,0,254,185,9,0,0,121,13,80,201,204,1,2,175,204,
17,76,209,65,168,87,25,68,221,164,155,244,67,26,233,149,144,3
第二数据流包括27字节(216/8=27),表示与后续数据块的216个数据元素有关的216个掩码位(熵=117.41位~=15字节),并且表示如下:
0,0,12,2,0,48,15,0,0,130,0,0,12,3,0,128,32,0,0,195,0,0,32,8,0,192,
48
第三数据流包括指示用于后续数据块(熵=0位~=0字节)的对应参考数据块的四个参考符号,并且表示如下:
1,1,1,1
这些参考符号指示第一数据块是用于第二数据块的对应参考数据块,第二数据块是用于第三数据块的对应参考数据块,诸如此类。在本文中,参考符号用作相对指示器,相对指示器指示数据块相对于它们的对应参考数据块或数据包的位置。
由于参考符号根据它们何时顺序出现进行排序,所以显著地降低了通过第三数据流产生的熵。在替代的实现中,当参考符号以适应性次序顺序地出现时,参考符号可选地插入表中。在这种情况下,第三数据流可有效地被delta编码。
在期望仅参考之前的数据块或数据包(即,恰好在给定数据块或数据包之前到达的数据块或数据包)的情况下,第三数据流不必写入或传送至编码数据(E2)中。
也可以总是由块间数据值计算ODelta值的方式,通过使用一个或多个ODelta编码方法实现相同的示例。因而,不需要单独的掩码位(即,第二数据流),也不需要变化的值(即,第一数据流)。相反,通过使用ODelta值使用仅包含对应信息的第三数据流。在编码的ODelta值的第三数据流中,零“0”值对应于未变化的值,即零掩码位,以及另一编码的ODelta值对应于变化的值,即掩码中具有值“1”位。然而,这种对应性以这样的方式计算,即通常可通过读取当前编码的ODelta值直接知道ODelta值是出现变化,这确保了可对ODelta值解码。当使用Odelta编码时,可通过“0”用作最小值、“255”用作最大值并且“256”用作约束值的如下流代替以上最后一个示例中的第一数据流和第二数据流:
0,12,41,157,180,29,0,16,243,42,42,172,8,0,69,0,0,40,120,250,64,0,
118,6,206,99,62,241,193,52,172,16,17,60,34,201,192,220,189,31,183,3,
31,254,192,146,80,16,0,254,185,9,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,19,0,0,0,0,0,237,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,9,58,0,0,1,4,246,195,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,252,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,8,117,0,0,0,0,249,139,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,248,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,12,99,0,0,0,0,243,157,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,212,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,12,241,0,0,0,0,245,15,0,0
上述列出的数据流可通过例如使用区间编码、SMRLE编码或VLC编码有效地压缩。还应理解,可选地,可使用其他压缩方法对关注的编码ODelta值的熵进行编码。
上述编码方法比已知的数据删除复制方法明显更有成本效率,因为它们潜在地能够:
(i)除完全复制的数据块或数据包之外,发现部分复制的数据块或数据包;以及
(ii)仅对编码数据(E2)中的变化数据元素进行编码。
与输入数据(D1)相比,仅写入或传送编码数据(E2)中的变化数据元素减少了处理编码数据(E2)、编码数据(E2)内的大量编码字节和编码数据(E2)的熵[1,2]所需的时间。因而,与已知数据删除复制方法相比,实现了明显高的数据压缩比。
根据本公开的实施方式,当输入数据(D1)为多维数据时,数据值在数据块中限定的次序同样是重要性能。仅为了说明的目的,现在认为二维(2D)图像数据具有16×16数据值,该数据值可以两种方式分成16个数据块,即16个数据块中的每个具有1×16或16×1的数据值的第一种情况中,以及16个数据块中的每个具有4×4的数据值的第二种情况。应理解,第一种情况中不能适当地使用多维特征,即数据块之间的空间相关性,而在第二种情况中可以使用。
另外,可选地,编码器10的附加编码单元操作为,通过采用一个或多个适当的熵编码方法进一步压缩三个数据流,即第一数据流、第二数据流以及第三数据流。附加地或可替代地,可选地,编码器10的处理硬件操作为使用上述编码过程进一步递归地压缩三个数据流。这在编码数据(E2)中得到了较高的数据压缩程度。
编码数据(E2)然后从编码器10传递至解码器20。解码器20的附加解码单元然后操作为对编码数据(E2)进行解压缩。其后,解码器20的处理硬件操作为执行根据本公开的实施方式的解码过程。由于使用了无损耗操作方式,所以生成与输入数据(D1)完全类似的解码数据(D3)。因而,输入数据(D1)的原始数据元素和解码数据(D3)的数据元素之间的均方误差的和为零。
现在将描述编码器10的有损耗操作方式,使用上述示例的相同的输入数据(D1)。在有损耗操作方式中,可以更加提高数据压缩比。
可选地,在识别数据块或数据包的至少部分重现之前,对输入数据(D1)进行量化。在使用量化值4的示例情况中,如下列出了相对于为7的初始数据块尺寸所分配的38个参考符号:
1,0,0,0,0,2,33,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,
48,48,48,48,48,48,48,48,48,48,48,48,48,50
在该示例情况中,最佳数据块尺寸为54。
然后如下列所示的,编码器10的处理硬件操作为将变化数据元素的数据值、掩码位以及参考符号编码成三个数据流,以提供编码数据(E2)。
第一数据流包括:第一数据块的54个数据元素的量化数据值,以及在后续数据块中的25个变化数据元素的量化数据值,并且表示如下:
0,3,10,39,45,7,0,4,60,10,10,43,2,0,17,0,0,10,30,62,16,0,29,1,51,24,
15,60,48,13,43,4,4,15,8,50,48,55,47,7,45,0,7,63,48,36,20,4,0,63,46,
2,0,0,3,20,50,51,0,43,51,4,19,52,16,42,21,6,17,55,41,38,61,16,6,58,
37,36,0
第二数据流包括27字节,其指示与后续数据块的216个数据元素有关的216个掩码位,并且表示如下:
0,0,8,2,0,48,14,0,0,130,0,0,12,3,0,128,32,0,0,195,0,0,32,8,0,192,48
第三数据流包括指示用于后续数据块的对应参考数据块的四个参考符号,并且表示如下:
1,1,1,1
当需要时,解码器20的处理硬件操作为对编码数据(E2)(即,上述三个数据流)进行解码,以生成解码数据(D3)。如此生成的解码数据(D3)表示如下:
0,12,40,156,180,28,0,16,240,40,40,172,8,0,68,0,0,40,120,248,64,0,
116,4,204,96,60,240,192,52,172,16,16,60,32,200,192,220,188,28,180,0,
28,252,192,144,80,16,0,252,184,8,0,0,
0,12,40,156,180,28,0,16,240,40,40,172,8,0,68,0,0,40,120,12,64,0,116,
4,204,80,60,240,192,52,172,16,16,60,32,200,192,220,188,28,180,0,28,
252,200,204,80,16,0,0,172,204,0,0,
0,12,40,156,180,28,0,16,240,40,40,172,8,0,68,0,0,40,120,16,64,0,116,
4,204,76,60,240,192,52,172,16,16,60,32,200,192,220,188,28,180,0,28,
252,208,64,80,16,0,0,168,84,0,0,
0,12,40,156,180,28,0,16,240,40,40,172,8,0,68,0,0,40,120,24,64,0,116,
4,204,68,60,240,192,52,172,16,16,60,32,200,192,220,188,28,180,0,28,
252,220,164,80,16,0,0,152,244,0,0,
0,12,40,156,180,28,0,16,240,40,40,172,8,0,68,0,0,40,120,64,64,0,116,
4,204,24,60,240,192,52,172,16,16,60,32,200,192,220,188,28,180,0,28,
252,232,148,80,16,0,0,144,0,0,0
在上文中,已单独示出了五个数据块,并且仅为了清晰起见,已对数据块的部分重现的变化数据元素添加了下划线。
输入数据(D1)的原始数据元素和解码数据(D3)的数据元素之间的均方误差之和为535。这对应于输入数据(D1)和解码数据(D3)之间的一些数据损失。
限定参考符号:
可选地,参考符号“0”用于指示非复制的数据块或数据包,即该数据块或数据包不是任意之前的数据块或数据包的副本。
可选地,当有“N”个不同的参考数据块或数据包时,使用参考符号“1”至“N”来指示部分复制的数据块或数据包,即该数据块或数据包是它们相应的参考数据块或数据包的部分副本。在本文中,“N”为大于1的任意正整数。
在上文中描述的先前示例中,由于没有数据块是非复制的数据块或数据包,所以不使用参考符号“0”。相反,由于后续数据块中的每个是其对应参考数据块的部分副本,所以使用参考符号“1”。
另外,当存在可用于给定数据块或数据包的多个参考数据块或数据包时,可从多个参考数据块或数据包中选择参考数据块或数据包。在选择期间,无需对所选的参考数据块或数据包和给定数据块或数据包之间的匹配妥协的情况下,有益地考虑参考数据块或数据包相对于给定数据块或数据包的距离,以找到具有下限值的可能的参考符号。
可选地,当输入数据(D1)较大和/或在输入数据(D1)中存在大量冗余时,单独的参考符号用于完全复制的数据块或数据包,即数据块或数据包是它们各自的参考数据块或数据包的完全副本。
在编码器10的一个实现中,当存在“N”个不同的参考数据块或数据包时,参考符号可选地限定如下:
(i)参考符号“0”用于指示非复制的数据块或数据包;
(ii)参考符号“1”至“N”用于指示部分复制的数据块或数据包;以及
(iii)参考符号“1+N”至“N+N”用于指示完全复制的数据块或数据包。
在本文中为了说明的目的,现将考虑在输入数据(D1)中识别出四个参考数据块的示例。这四个参考数据块被分配如下的参考符号:
参考符号“1”分配至第一参考数据块;
参考符号“2”分配至第二参考数据块;
参考符号“3”分配至第三参考数据块;以及
参考符号“4”分配至第四参考数据块。
在这个示例中,值“N”为4(N=4)。
现在,如果输入数据(D1)中的第五数据块是第二参考数据块的部分副本,那么第五数据块通过使用参考符号“2”表示。如果输入数据(D1)中的第六数据块是第二参考数据块的完全副本,那么第六数据块通过使用参考符号“6”表示,即“2+N”。
在替代的实现中,可选地使用一位符号来指示给定数据块或数据包是否为完全副本或部分副本。除了用于给定数据块或数据包的参考符号之外,还使用一位符号。在本文中,参考符号指示用于给定数据块或数据包的对应参考数据块或数据包,而一位符号指示给定数据块或数据包是否为对应参考数据块或数据包的完全副本或部分副本。一位符号具有两个值,即“0”和“1”。例如,一位符号的“0”值可用于指示部分副本,而一位符号的“1”值可用于指示完全副本,或反之亦然。
在另一些其它的替代实现方中,可通过使用块索引、数据索引、运动向量、数据库参考、编码方法等来限定部分复制的数据块或数据包。
可选地,当单独的参考符号不用于完全复制的数据块或数据包时,则与完全复制的数据块或数据包的所有未变化数据元素有关的掩码位设置为“0”值。
另一方面,当单独的参考符号用于指示完全复制的数据块或数据包时,完全复制的数据块或数据包不需要掩码位。同样地,当单独的参考符号用于指示非复制的数据块或数据包时,非复制的数据块或数据包不需要掩码位。
另外,可选地,通过使用如专利申请GB 1222240.2、US 13/715,405中所描述的数据库对掩码位进行编码,所述专利通过引用并入本文。当存在掩码位重新出现的高可能性时,与同样地对掩码位进行熵编码相比较,通过将参考传递至掩码位容易提高数据压缩比。
接下来,还将参照附图,即图2至图5B描述本公开的实施方式。
图2是根据本公开的实施方式的、对输入数据(D1)进行编码以生成对应编码数据(E2)的方法的步骤的图示。方法描绘为逻辑流程图中的步骤集合,逻辑流程图表示可以硬件、软件、或它们的组合实现的一系列步骤。
在步骤102处,确定输入数据(D1)内的数据块或数据包的至少部分重现。
在步骤104处,通过采用至少一个参考符号以及多个掩码位,对未变化的和变化的数据块或数据包进行编码。如之前描述的,采用至少一个参考符号来指示相互类似的数据块或数据包的至少部分重现,和/或来指示输入数据(D1)内是否存在相互类似的数据块或数据包的重现。另外,采用例如实现为多个掩码位的变化符号来指示数据块或数据包的部分重现的、变化的和未变化数据元素以及输入数据(D1)内的变化的值。可替代地,例如以如上文描述的方式使用delta值。
根据步骤104,如之前所描述的,将至少一个参考符号以及多个变化符号编码成多个数据流。
结合图3A和图3B,对步骤102和步骤104的编码过程进行了描述。
接下来,在步骤106处,对多个数据流进行熵编码以生成编码数据(E2)。
步骤102至106仅为说明性的,并且在不背离本文权利要求的范围的情况下,还可以提供其他的替换,其中增加有一个或多个步骤、去除一个或多个步骤、或以不同的顺序提供一个或多个步骤。
图3A和图3B共同为根据本公开的实施方式的编码处理的步骤的图示。
在步骤202处,如之前所描述,读取输入数据(D1)的给定数据帧/图/通道,以确定用于数据块或数据包的最佳尺寸。
根据步骤202,将给定数据帧/图/通道按照用于数据块或数据包的最佳尺寸拆分成数据块或数据包。
在步骤204处,读取数据块或数据包以进行对它们的对应参考数据块或数据包的搜索。
接下来,在步骤206处,对于给定数据帧/图/通道中的给定数据块或数据包,确定给定数据块或数据包是否为参考数据块或数据包的副本。
在步骤206处,如果确定出给定数据块或数据包不是副本,则执行步骤208。在步骤208处,为给定数据块或数据包写入“非复制的”参考符号。在一个示例中,将“非复制的”参考符号限定为参考符号“0”。另外,将给定数据块或数据包的所有数据值编码至编码数据(E2)中。
在步骤206处,如果确定出给定数据块或数据包是参考数据块或数据包的副本,则执行步骤210。在步骤210处,确定给定数据块是否为参考数据块或数据包的完全副本或部分副本。当使用了有损耗操作方式时,按照用于有损耗操作方式所设置的质量水平来执行步骤210。
在步骤210处,如果确定出给定数据块或数据包是部分副本,则执行步骤212。在步骤212处,为给定数据块或数据包写入指示参考数据块或数据包的参考符号。参考符号被用作指示器,该指示器指示参考数据块或数据包相对于给定数据块或数据包的位置。在一个示例中,当存在“N”个不同的参考数据块或数据包时,从参考符号“1”至“N”中选择参考符号。另外,将给定数据块或数据包的变化数据元素的数据值以及它们关联的掩码位编码到编码数据(E2)中。
在步骤210处,如果确定出给定数据块或数据包是完全副本,则执行步骤214。在步骤214处,为给定数据块或数据包写入指示参考数据块或数据包的参考符号。在一个示例中,当存在“N”个不同的参考数据块或数据包时,从参考符号“1+N”至“Ν+Ν”中选择参考符号。在另一示例中,除了参考符号之外,写入指示完全副本的一位符号。
步骤216接着步骤208、步骤212、以及步骤214。在步骤216处,确定在给定数据帧/图/通道中是否存在下一个数据块或数据包。如果确定存在下一个数据块或数据包,在步骤204处重新开始编码处理。否则,如果确定给定数据帧图/通道中不存在下一个数据块或数据包,则执行步骤218。
在步骤218处,确定输入数据(D1)中是否存在下一个数据帧/图/通道。如果确定存在下一个数据帧/图/通道,则在步骤202处重新开始编码处理。否则,如果确定在输入数据(D1)中不存在下一个数据帧/图/通道,则停止编码处理。
另外,为编码处理而分配的后台存储器的量仅与当前数据块或数据包中的数据元素的量乘以可能参考的数量(即,数据块或包精确的参考索引)一样大,或者与当前数据块或数据包中的数据元素的量加上可能参考的数量减去一(即,数据值精确参考索引)一样大。最少地,其是具有一个数据块或数据包的存储器。另外,编码处理的结果(即编码数据(E2))可直接写入或者传送至原始存储器。这意味着不需要单独的传送存储器。因而,本方法能够起现场操作的作用,并且具有较高的成本效率。该方法例如可用于便宜的消费电子媒体产品,诸如智能电话、MP3播放器、平板电脑、电视、音频高保真(“hifi”)设备、电子书等。
步骤202至218仅为说明性的,并且在不背离本文权利要求的范围的情况下,还可提供其他替换,其中增加有一个或多个步骤、去除一个或多个步骤、或以不同的顺序提供一个或多个步骤。例如,在不将单独的参考符号用于完全复制的数据块或数据包的替代实现中,去除了步骤210和步骤214。现在,在步骤206处,如果确定给定数据块或数据包是参考数据块或数据包的副本,则执行步骤212,而不是步骤210。
本公开的实施方式提供了包括非短暂性(即,非瞬时性)计算机可读存储介质的计算机程序产品,在计算机存储介质上存储有计算机可读指令,计算机可读指令通过包括处理硬件的计算机化设备执行以执行如结合图2和图3A-3B所描述的方法。可选地,计算机可读指令可从软件应用商店,例如从“App商店”下载到计算机化设备。
图4是根据本公开的实施方式的、对编码数据(E2)进行解码以生成对应解码数据(D3)的方法的步骤的图示。方法描绘为逻辑流程图中的许多步骤,逻辑流程图表示可以硬件、软件、或它们的组合实现的一序列步骤。
在步骤302处,对编码数据(E2)进行熵解码以提供多个数据流。如之前所描述的,多个数据流包括以下中的一个或多个:
(i)第一数据流,包括至少一个参考数据块和/或数据包的数据值,以及后续数据块的变化数据元素的数据值;
(ii)第二数据流,包括多个掩码位;和/或
(iii)第三数据流,包括至少一个参考符号。
在步骤304处,对来自多个数据流的未变化的以及变化的数据块进行解码。根据步骤304,对至少一个参考符号以及多个变化符号进行解码,以生成用于数据块或数据包的部分重现的数据,并且生成用于数据块或数据包的部分重现的变化数据元素的数据。
结合图5A和图5B,描述了步骤304的解码过程。
接下来,在步骤306处,将对于数据块或数据包的至少部分重现生成的数据以及对于数据块或数据包的部分重现的变化数据元素生成的数据集合,以生成解码数据(D3)。
步骤302至306仅为说明性的,并且在不背离本文权利要求的范围的情况下,还可以提供其他的替代,其中增加一个或多个步骤、去除一个或多个步骤、或以不同的顺序提供一个或多个步骤。
图5A和图5B共同为根据本公开的实施方式的解码处理的步骤的图示。
在步骤402处,从编码数据(E2)中提供的第三数据流读取给定参考符号。
在步骤404处,确定给定参考符号是否为“非复制的”参考符号。换言之,确定给定参考符号是否对应于非复制的数据块或数据包。
在步骤404处,如果确定出给定参考符号是“非复制”的参考符号,那么执行步骤406。在步骤406处,对非复制的数据块或数据包的所有数据值进行解码,以生成用于非复制的数据块或数据包的数据。
在步骤404处,如果确定出给定参考符号不是“非复制”的参考符号,那么执行步骤408。在步骤408处,确定给定参考符号是否为“完全复制”的参考符号。换言之,确定给定参考符号是否对应于完全复制的数据块或数据包。
在步骤408处,如果确定给定参考符号不是“完全复制”的参考符号,那么执行步骤410。在步骤410处,对与部分复制的数据块或数据包的数据元素有关的掩码位进行检查,从而对部分复制的数据块或数据包的变化数据元素的数据值进行解码。另外,从给定参考符号指向的参考数据块或数据包中获取未变化元素的数据值。根据步骤410,将未变化元素的数据值与变化数据元素的数据值组合,以生成用于部分复制的数据块或数据包的数据。
在步骤408处,如果确定给定参考符号是“完全复制”的参考符号,那么执行步骤412。在步骤412处,从给定参考符号指向的参考数据块中获取未变化元素的数据值。对未变化元素的数据值进行设置,以生成用于完全复制的数据块或数据包的数据。
步骤414接着步骤406、步骤410、以及步骤412。在步骤414处,确定第三数据流中是否存在下一个参考符号。如果确定存在下一个参考符号,那么在步骤402处重新开始解码处理。
否则,如果确定不存在下一个参考符号,则执行步骤416。在步骤416处,将在步骤406、步骤410、以及步骤412处生成的用于数据块或数据包的数据集合,以生成解码数据(D3)。
应理解,不管所有数据是否完成,每当对这样一部分数据的解码完成时,单独更新通道、图或帧是可能的。
步骤402至416仅为说明性的,并且在不背离本文权利要求的范围的情况下,还可以提供其他替换,其中增加一个或多个步骤、去除一个或多个步骤、或以不同的顺序提供一个或多个步骤。
本公开的实施方式提供了包括非短暂性(即,非瞬时性)计算机可读存储介质的计算机程序产品,在计算机可读存储介质上存储有计算机可读指令,计算机可读指令可通过包括处理硬件的计算机化设备执行,以执行如结合图4和图5A-B所描述的方法。可选地,计算机可读指令可从软件应用商店,例如从“App商店”下载到计算机化设备。
在不背离如所附权利要求限定的本发明的范围的情况下,可对上文描述的本发明的实施方式进行修改。用于描述并限定本发明的诸如“包括(including)”、“包括(comprising)”、“合并(incorporating)”、“包括(consisting of)”、“具有(have)”、以及“是(is)”的表达旨在以非排他性方式解释,即允许还表现未明确描述的项、成分或元素。提及的单数还解释为涉及复数。包括在所附权利要求中的括号内的数字旨在帮助理解权利要求,并且不以任何方式解释为限制通过这些权利要求所要求保护的主题。
附录
Claims (38)
1.一种编码器,用于对输入数据(D1)编码以生成对应编码数据(E2),其特征在于,所述编码器包括数据处理硬件,所述数据处理硬件能够操作为:
(a)确定所述输入数据(D1)内的数据块或数据包的至少部分重现,其中,所述数据块或数据包包括多个字节;
(b)采用至少一个参考符号来关联相互类似的数据块或数据包的重现,和/或指示所述输入数据(D1)内是否存在相互类似的数据块或数据包的重现;
(c)采用多个变化符号来指示所述输入数据(D1)内的数据块或数据包的部分重现的变化数据元素和未变化数据元素,以及变化数据元素的数据值的变化;以及
(d)将所述至少一个参考符号和所述多个变化符号编码到所述编码数据(E2)中。
2.如权利要求1所述的编码器,其特征在于,所述编码器能够操作为将步骤(c)中的所述多个变化符号实现为多个掩码位,所述掩码位包括指示变化值和未变化值以及变化值的位/标记,或者变化符号包含与delta值内的变化值或未变化值以及值的变化有关的信息。
3.如权利要求2所述的编码器,其特征在于,所述delta值被分配零值以用于指示未变化,并且被分配非零值以用于指示变化。
4.如权利要求1、2或3所述的编码器,其特征在于,所述处理硬件能够操作为通过使用指示未变化的一个或多个值来表示给定数据块或数据包的一个或多个未变化数据元素,其中,所述一个或多个值与所述输入数据(D1)中出现的那些值不同。
5.如权利要求1至4中的任一项所述的编码器,其特征在于,所述处理硬件能够操作为使用一个或多个指示器,所述指示器用于指示数据块或数据包相对于对应参考数据块或数据包的一个或多个至少部分重现。
6.如权利要求5所述的编码器,其特征在于,所述一个或多个指示器为一个或多个相对指示器。
7.如权利要求1至6中任一项所述的编码器,其特征在于,所述数据处理硬件能够操作为将所述至少一个参考符号和所述多个变化符号编码到多个数据流中,以提供所述编码数据(E2)。
8.如权利要求1至7中任一项所述的编码器,其特征在于,所述处理硬件能够操作为对所述输入数据(D1)编码,所述输入数据(D1)为以下中的至少一种:一维数据、多维数据、音频数据、图像数据、视频数据、传感器数据、文本数据、二进制数据、医学数据。
9.如权利要求1至8中任一项所述的编码器,其特征在于,所述编码器包括附加编码单元,所述附加编码单元用于将所述至少一个参考符号和所述多个变化符号的至少一部分编码到所述编码数据(E2)中,其中,所述附加编码单元能够操作为采用以下中的至少一种:熵调整编码、delta编码、ODelta编码、区间编码、行程长度编码(RLE)、拆分行程长度编码(SRLE)、插值编码。
10.如权利要求1至9中任一项所述的编码器,其特征在于,所述处理硬件能够操作为确定在处理所述输入数据(D1)时用于所述数据块或数据包的最佳尺寸,并且在所述编码数据(E2)内提供指示用于所述数据块或数据包的所述最佳尺寸的信息。
11.在编码器中对输入数据(D1)编码以生成对应编码数据(E2)的方法,其中,所述编码器包括数据处理硬件,所述数据处理硬件用于处理所述输入数据(D1),其特征在于,所述方法包括:
(a)确定所述输入数据(D1)内的数据块或数据包的至少部分重现,其中,所述数据块或数据包包括多个字节;
(b)采用至少一个参考符号来关联相互类似的数据块或数据包的重现,和/或指示所述输入数据(D1)内是否存在相互类似的数据块或数据包的重现;
(c)采用多个变化符号来指示所述输入数据(D1)内的数据块或数据包的部分重现的变化数据元素和未变化数据元素,以及变化数据元素的数据值的变化;以及
(d)将所述至少一个参考符号和所述多个变化符号编码到所述编码数据(E2)中。
12.如权利要求11所述的方法,其特征在于,步骤(c)中的所述多个变化符号包括多个掩码位,所述掩码位包括指示变化值和未变化值以及变化值的位/标记,或者变化符号包含与delta值内的变化值或未变化值以及值的变化有关的信息。
13.如权利要求12所述的方法,其特征在于,所述delta值被分配零值以用于指示未变化,并且被分配非零值以用于指示变化。
14.如权利要求11、12或13所述的方法,其特征在于,所述方法包括:
通过使用指示未变化的一个或多个值来表示给定数据块或数据包的一个或多个未变化数据元素,其中,所述一个或多个值与所述输入数据(D1)中出现的那些值不同。
15.如权利要求11、12、13或14所述的方法,其特征在于,所述方法包括使用一个或多个指示器,所述指示器用于指示数据块或数据包相对于对应参考数据块或数据包的一个或多个至少部分重现。
16.如权利要求15所述的方法,其特征在于,所述一个或多个指示器为一个或多个相对指示器。
17.如权利要求11至16中任一项所述的方法,其特征在于,所述方法包括将所述至少一个参考符号和所述多个变化符号编码到多个数据流中,以提供所述编码数据(E2)。
18.如权利要求11至17中任一项所述的方法,其特征在于,所述方法包括对所述输入数据(D1)编码,所述输入数据(D1)为以下中的至少一种:一维数据、多维数据、音频数据、图像数据、视频数据、传感器数据、文本数据、二进制数据、医学数据。
19.如权利要求11至18中任一项所述的方法,其特征在于,所述方法包括:
(e)使用附加编码单元,用于将所述至少一个参考符号和所述多个变化符号的至少一部分编码到所述编码数据(E2)中;以及
(f)将所述附加编码单元设置为采用以下中的至少一个:熵调整编码、delta编码、ODelta编码、区间编码、行程长度编码(RLE)、拆分行程长度编码(SRLE)、插值编码。
20.如权利要求11至19中任一项所述的方法,其特征在于,所述方法包括:
(g)确定在处理所述输入数据(D1)时用于所述数据块或数据包的最佳尺寸;以及
(h)在编码数据(E2)内提供指示用于所述数据块或数据包的所述最佳尺寸的信息。
21.解码器,用于对编码数据(E2)解码以生成对应解码数据(D3),其中所述解码器包括用于处理所述编码数据(E2)的处理硬件,其特征在于:
(a)所述处理硬件能够操作为对所述编码数据(E2)解码,以识别至少一个参考符号和多个变化符号;
(b)所述处理硬件能够操作为使用所述至少一个参考符号,以生成用于所述编码数据(E2)内的数据块或数据包的至少部分重现的数据;
(c)所述处理硬件能够操作为使用所述多个变化符号,以生成用于所述编码数据(E2)内的数据块或数据包的部分重现的变化数据元素的数据;以及
(d)所述处理硬件能够操作为集合所生成的用于数据块或数据包的至少部分重现的数据以及所生成的用于数据块或数据包的部分重现的所述变化数据元素的数据,以生成对应解码数据(D3)。
22.如权利要求21所述的解码器,其特征在于,所述处理硬件能够操作为对来自指示未变化的一个或多个值的给定数据块或数据包的、一个或多个未变化数据元素进行编码,其中,所述一个或多个值与在所述解码数据(D3)中出现的那些值不同。
23.如权利要求21或22所述的解码器,其特征在于,所述处理硬件能够操作为对所述编码数据(E2)解码以识别一个或多个指示器,所述指示器用于指示数据块或数据包相对于对应参考数据包或数据块的一个或多个至少部分重现。
24.如权利要求23所述的解码器,其特征在于,所述一个或多个指示器为一个或多个相对指示器。
25.如权利要求21至24中任一项所述的解码器,其特征在于,所述处理硬件能够操作为对来自所述编码数据(E2)内提供的多个数据流的、所述至少一个参考符号和所述多个变化符号解码。
26.如权利要求21至25中任一项所述的解码器,其特征在于,所述解码数据(D3)被提供为以下中的至少一种:一维数据、多维数据、音频数据、图像数据、视频数据、传感器数据、文本数据、二进制数据、医学数据。
27.如权利要求21至26中任一项所述的解码器,其特征在于,所述解码器包括附加解码单元,所述附加解码单元用于对来自所述编码数据(E2)的所述至少一个参考符号和所述多个变化符号的至少一部分解码,其中所述附加解码单元能够操作为采用以下中的至少一种:熵调整解码、delta解码、ODelta解码、区间解码、行程长度解码、拆分行程长度解码、插值解码。
28.如权利要求21至27中任一项所述的解码器,其特征在于,所述处理硬件能够操作为在所述编码数据(E2)内接收指示所述数据块或数据包的尺寸的信息。
29.对编码数据(E2)解码以生成对应解码数据(D3)的方法,其中,所述方法包括处理所述编码数据(E2),其特征在于,所述方法包括:
(a)对所述编码数据(E2)解码,以识别至少一个参考符号和多个变化符号;
(b)使用所述至少一个参考符号,以生成用于所述编码数据(E2)内的数据块或数据包的至少部分重现的数据;
(c)使用所述多个变化符号,以生成用于所述编码数据(E2)内的数据块或数据包的部分重现的变化数据元素的数据;以及
(d)集合所生成的用于数据块或数据包的至少部分重现的数据以及所生成的用于数据块或数据包的部分重现的所述变化数据元素的数据,以生成对应解码数据(D3)。
30.如权利要求29所述的方法,其特征在于,所述方法包括:
对来自指示未变化的一个或多个值的给定数据块或数据包的、一个或多个未变化数据元素编码,其中,所述一个或多个值与在所述解码数据(D3)中出现的那些值不同。
31.如权利要求29或30所述的方法,其特征在于,所述方法包括:对所述编码数据(E2)解码以识别一个或多个指示器,所述指示器用于指示数据块或数据包相对于对应参考数据包或数据块的一个或多个至少部分重现。
32.如权利要求31所述的方法,其特征在于,所述一个或多个指示器为一个或多个相对指示器。
33.如权利要求29至32中任一项所述的方法,其特征在于,所述方法包括:对来自所述编码数据(E2)内提供的多个数据流的、所述至少一个参考符号和所述多个变化符号解码。
34.如权利要求29至33中任一项所述的方法,其特征在于,所述解码数据(D3)被提供为以下中的至少一种:一维数据、多维数据、音频数据、图像数据、视频数据、传感器数据、文本数据、二进制数据。
35.如权利要求29至34中任一项所述的方法,其特征在于,所述方法包括:
(e)使用附加解码单元,以对来自所述编码数据(E2)的所述至少一个参考符号和所述多个变化符号的至少一部分解码;以及
(f)将所述附加解码单元设置为采用以下中的至少一种:熵调整解码、delta解码、ODelta解码、区间解码、行程长度解码、拆分行程长度解码、插值解码。
36.如权利要求29至35中任一项所述的方法,其特征在于,所述方法包括:在所述编码数据(E2)内接收指示所述数据块或数据包的尺寸的信息。
37.一种计算机程序产品,包括其上存储有计算机可读指令的非暂时性计算机可读存储介质,所述计算机可读指令能够通过包括处理硬件的计算机化设备执行,以执行如权利要求11或权利要求29所述的方法。
38.一种编解码器,包括:
至少一个如权利要求1所述的用于对输入数据(D1)编码以生成对应编码数据(E2)的编码器;以及
至少一个如权利要求21所述的用于对所述编码数据(E2)解码以生成对应解码数据(D3)的解码器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1411531.5 | 2014-06-27 | ||
GB1411531.5A GB2527607B (en) | 2014-06-27 | 2014-06-27 | Encoder, decoder and method |
PCT/EP2015/025042 WO2015197202A1 (en) | 2014-06-27 | 2015-06-26 | Encoder, decoder and method |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106489241A true CN106489241A (zh) | 2017-03-08 |
CN106489241B CN106489241B (zh) | 2018-04-17 |
Family
ID=51410292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580037251.XA Active CN106489241B (zh) | 2014-06-27 | 2015-06-26 | 编码器、解码器和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9735805B2 (zh) |
CN (1) | CN106489241B (zh) |
GB (1) | GB2527607B (zh) |
WO (1) | WO2015197202A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749532A (zh) * | 2019-10-30 | 2021-05-04 | 阿里巴巴集团控股有限公司 | 地址文本处理方法、装置及设备 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITUB20153254A1 (it) * | 2015-08-27 | 2017-02-27 | St Microelectronics Srl | Metodo di salvataggio intelligente di dati ad elevata densita' e relativo dispositivo di memoria |
US11818401B2 (en) | 2017-09-14 | 2023-11-14 | Apple Inc. | Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables |
US10897269B2 (en) | 2017-09-14 | 2021-01-19 | Apple Inc. | Hierarchical point cloud compression |
US10861196B2 (en) | 2017-09-14 | 2020-12-08 | Apple Inc. | Point cloud compression |
US11113845B2 (en) | 2017-09-18 | 2021-09-07 | Apple Inc. | Point cloud compression using non-cubic projections and masks |
US10909725B2 (en) | 2017-09-18 | 2021-02-02 | Apple Inc. | Point cloud compression |
US10607373B2 (en) | 2017-11-22 | 2020-03-31 | Apple Inc. | Point cloud compression with closed-loop color conversion |
US10909726B2 (en) | 2018-04-10 | 2021-02-02 | Apple Inc. | Point cloud compression |
US10939129B2 (en) | 2018-04-10 | 2021-03-02 | Apple Inc. | Point cloud compression |
US10909727B2 (en) | 2018-04-10 | 2021-02-02 | Apple Inc. | Hierarchical point cloud compression with smoothing |
US11010928B2 (en) | 2018-04-10 | 2021-05-18 | Apple Inc. | Adaptive distance based point cloud compression |
WO2020002158A1 (en) | 2018-06-25 | 2020-01-02 | British Telecommunications Public Limited Company | Processing local area network diagnostic data |
US11017566B1 (en) | 2018-07-02 | 2021-05-25 | Apple Inc. | Point cloud compression with adaptive filtering |
US11202098B2 (en) | 2018-07-05 | 2021-12-14 | Apple Inc. | Point cloud compression with multi-resolution video encoding |
US11012713B2 (en) | 2018-07-12 | 2021-05-18 | Apple Inc. | Bit stream structure for compressed point cloud data |
US11367224B2 (en) | 2018-10-02 | 2022-06-21 | Apple Inc. | Occupancy map block-to-patch information compression |
US11057564B2 (en) | 2019-03-28 | 2021-07-06 | Apple Inc. | Multiple layer flexure for supporting a moving image sensor |
US11711544B2 (en) | 2019-07-02 | 2023-07-25 | Apple Inc. | Point cloud compression with supplemental information messages |
US11627314B2 (en) | 2019-09-27 | 2023-04-11 | Apple Inc. | Video-based point cloud compression with non-normative smoothing |
US11562507B2 (en) | 2019-09-27 | 2023-01-24 | Apple Inc. | Point cloud compression using video encoding with time consistent patches |
US11398833B2 (en) | 2019-10-02 | 2022-07-26 | Apple Inc. | Low-latency encoding using a bypass sub-stream and an entropy encoded sub-stream |
US11538196B2 (en) | 2019-10-02 | 2022-12-27 | Apple Inc. | Predictive coding for point cloud compression |
US11895307B2 (en) | 2019-10-04 | 2024-02-06 | Apple Inc. | Block-based predictive coding for point cloud compression |
US11798196B2 (en) | 2020-01-08 | 2023-10-24 | Apple Inc. | Video-based point cloud compression with predicted patches |
US11475605B2 (en) | 2020-01-09 | 2022-10-18 | Apple Inc. | Geometry encoding of duplicate points |
CN113114411B (zh) * | 2020-01-13 | 2023-02-03 | 维沃移动通信有限公司 | 数据传输方法和设备 |
US11620768B2 (en) | 2020-06-24 | 2023-04-04 | Apple Inc. | Point cloud geometry compression using octrees with multiple scan orders |
US11615557B2 (en) | 2020-06-24 | 2023-03-28 | Apple Inc. | Point cloud compression using octrees with slicing |
US11948338B1 (en) | 2021-03-29 | 2024-04-02 | Apple Inc. | 3D volumetric content encoding using 2D videos and simplified 3D meshes |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1259828A (zh) * | 1998-10-07 | 2000-07-12 | 索尼公司 | 编解码装置和方法,数据处理系统,存储介质及信号 |
US7643505B1 (en) * | 2006-11-30 | 2010-01-05 | Qlogic, Corporation | Method and system for real time compression and decompression |
CN102246137A (zh) * | 2008-11-14 | 2011-11-16 | Emc公司 | 身份副本删除之后的delta压缩 |
US20140075150A1 (en) * | 2012-09-11 | 2014-03-13 | International Business Machines Corporation | Method for generating a delta for compressed data |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434568A (en) * | 1985-01-10 | 1995-07-18 | Moll; Edward W. | Data compression by removing repetition and unnecessary information |
US5146221A (en) * | 1989-01-13 | 1992-09-08 | Stac, Inc. | Data compression apparatus and method |
US9509991B2 (en) * | 2004-08-12 | 2016-11-29 | Gurulogic Microsystems Oy | Processing and reproduction of frames |
US8325710B2 (en) | 2007-08-09 | 2012-12-04 | Phybridge Inc. | Inline power system and method for network communications |
KR20100050072A (ko) * | 2008-11-05 | 2010-05-13 | 삼성전자주식회사 | 데이터 압축 방법 및 이를 이용한 데이터 통신 시스템 |
US8412848B2 (en) * | 2009-05-29 | 2013-04-02 | Exagrid Systems, Inc. | Method and apparatus for content-aware and adaptive deduplication |
US9532066B2 (en) * | 2011-01-21 | 2016-12-27 | Qualcomm Incorporated | Motion vector prediction |
GB2509055B (en) | 2012-12-11 | 2016-03-23 | Gurulogic Microsystems Oy | Encoder and method |
GB2511355B (en) | 2013-03-01 | 2015-06-03 | Gurulogic Microsystems Oy | Encoder, decoder and method |
GB2527588B (en) | 2014-06-27 | 2016-05-18 | Gurulogic Microsystems Oy | Encoder and decoder |
GB2528460B (en) | 2014-07-21 | 2018-05-30 | Gurulogic Microsystems Oy | Encoder, decoder and method |
-
2014
- 2014-06-27 GB GB1411531.5A patent/GB2527607B/en active Active
-
2015
- 2015-06-26 CN CN201580037251.XA patent/CN106489241B/zh active Active
- 2015-06-26 WO PCT/EP2015/025042 patent/WO2015197202A1/en active Application Filing
- 2015-06-26 US US15/321,175 patent/US9735805B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1259828A (zh) * | 1998-10-07 | 2000-07-12 | 索尼公司 | 编解码装置和方法,数据处理系统,存储介质及信号 |
US7643505B1 (en) * | 2006-11-30 | 2010-01-05 | Qlogic, Corporation | Method and system for real time compression and decompression |
CN102246137A (zh) * | 2008-11-14 | 2011-11-16 | Emc公司 | 身份副本删除之后的delta压缩 |
US20140075150A1 (en) * | 2012-09-11 | 2014-03-13 | International Business Machines Corporation | Method for generating a delta for compressed data |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749532A (zh) * | 2019-10-30 | 2021-05-04 | 阿里巴巴集团控股有限公司 | 地址文本处理方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
US9735805B2 (en) | 2017-08-15 |
CN106489241B (zh) | 2018-04-17 |
US20170155402A1 (en) | 2017-06-01 |
WO2015197202A1 (en) | 2015-12-30 |
GB201411531D0 (en) | 2014-08-13 |
GB2527607B (en) | 2016-10-05 |
GB2527607A (en) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106489241A (zh) | 编码器、解码器和方法 | |
CN106170921B (zh) | 涉及符号压缩的数据的源编码和解码方法及装置 | |
AU2012270417B2 (en) | Method and apparatus for transmitting/receiving media contents in multimedia system | |
US9609338B2 (en) | Layered video encoding and decoding | |
RU2013153468A (ru) | Способ кодирования данных, способ декодирования данных, кодер, декодер и кодек | |
CN102939719A (zh) | 用于在二进制熵编码和解码中减少源的方法和设备 | |
JP2017511997A (ja) | データのソース符号化及び復号の装置及びその方法 | |
CN107027326B (zh) | 存储系统中数据备份的方法及装置 | |
US11385794B2 (en) | System and method for data compaction and security using multiple encoding algorithms | |
CN104010193A (zh) | 基于宏块划分方式扰动的视频隐写方法 | |
TW202331600A (zh) | 用於編/解碼神經網路參數之設備與方法、及相關資料串流與電腦程式 | |
US11928335B2 (en) | System and method for data compaction utilizing mismatch probability estimation | |
US11733867B2 (en) | System and method for multiple pass data compaction utilizing delta encoding | |
CN110505218A (zh) | 基于json的栅格数据自适应压缩传输方法及计算机存储介质 | |
US20240046093A1 (en) | Decoder, encoder, controller, method and computer program for updating neural network parameters using node information | |
CN104767997B (zh) | 一种面向视频的视觉特征编码方法及装置 | |
US20240020006A1 (en) | System and method for compaction of floating-point numbers within a dataset | |
CN104636432B (zh) | 一种日志文件压缩和解压的方法及装置 | |
KR20020070199A (ko) | 멀티미디어 메타데이터의 오류 내성 부호화/복호화 장치및 방법 | |
CN105830063B (zh) | 协调卷组中的小卷 | |
KR101610086B1 (ko) | 연속 데이터 압축 방법 | |
CN103929447A (zh) | 一种解析HTTP chunked编码数据的方法 | |
US20230315288A1 (en) | System and method for data compaction and security using multiple encoding algorithms with pre-coding and complexity estimation | |
JP2013211643A (ja) | 圧縮方法、復元方法、情報処理装置及びプログラム | |
CN103929445A (zh) | 一种在线解析HTTP chunked编码数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220217 Address after: Holland Ian Deho Finn Patentee after: KONINKLIJKE PHILIPS N.V. Address before: Turku Patentee before: GURULOGIC MICROSYSTEMS OY |