[go: up one dir, main page]

GB2511493A - Entropy modifier and method - Google Patents

Entropy modifier and method Download PDF

Info

Publication number
GB2511493A
GB2511493A GB1303658.7A GB201303658A GB2511493A GB 2511493 A GB2511493 A GB 2511493A GB 201303658 A GB201303658 A GB 201303658A GB 2511493 A GB2511493 A GB 2511493A
Authority
GB
United Kingdom
Prior art keywords
entropy
entropy modifier
modifier
stream
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
GB1303658.7A
Other versions
GB201303658D0 (en
GB2511493B (en
Inventor
Ossi Kalevo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gurulogic Microsystems Oy
Original Assignee
Gurulogic Microsystems Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gurulogic Microsystems Oy filed Critical Gurulogic Microsystems Oy
Priority to GB1303658.7A priority Critical patent/GB2511493B/en
Publication of GB201303658D0 publication Critical patent/GB201303658D0/en
Priority to CN201480024696.XA priority patent/CN105409129B/en
Priority to CN201480024777.XA priority patent/CN105164923B/en
Priority to PCT/EP2014/000531 priority patent/WO2014131528A1/en
Priority to EP14715207.8A priority patent/EP2962397A1/en
Priority to JP2015559443A priority patent/JP6073506B2/en
Priority to RU2015132038A priority patent/RU2611249C1/en
Priority to PCT/EP2014/000529 priority patent/WO2014131526A1/en
Priority to KR1020157024996A priority patent/KR102068383B1/en
Priority to EP14713379.7A priority patent/EP2962396A1/en
Priority to US14/254,102 priority patent/US8933826B2/en
Publication of GB2511493A publication Critical patent/GB2511493A/en
Application granted granted Critical
Publication of GB2511493B publication Critical patent/GB2511493B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

An entropy modifier 10, 60 encodes, and alternatively decodes, a stream of input data bits having a first entropy, generating corresponding modified output data having a second entropy. The entropy modifier (converter) which may be a pre-processor or post-processor for encoding 20 or decoding 50 stages - processes the stream of input data bits to handle groups of mutually similar bits (runs) and the value of a first (initial) bit, and one or more maximum run lengths of the groups of mutually similar bits, i.e. analogous to Run-Length Encoding (RLE) methods. The entropy modifier may control one or more maximum run lengths by using escape code(s), e.g. a code such as 0 used to denote a run of 3; maximum run length may be dynamically varied. A first, starting bit in the stream can be handled separately from other bits. Stream parts may be separately coded, in parallel. ODelta, RLE, Variable Length (VLC), Huffman, Delta or Arithmetic coding may be employed in conjunction with the initial / final entropy-changing processing.

Description

ENTROPY MODIFIER AND METHOD
Field of the invention
The present invention relates to entropy modifiers which are operable to receive input data and generate corresponding output data whose entropy has been modified relative to that of the input data, for example for purposes of data compression and/or data de-compression; the entropy modifiers are implementable using electronic hardware and/or software products stored on machine-readable data storage media and executable upon computing hardware. Moreover, the present invention also concerns methods of modifying entropy of input data to generate corresponding output data which has a modified degree of entropy relative to that of the input data.
Furthermore, the present invention relates to software products recorded on machine-readable data storage media, wherein the software products are executable upon computing hardware for executing aforementioned methods. The entropy modifiers are useable, for example, as component parts of data communication systems and data supply systems, for example media supply systems.
Background of the invention
In overview, in information theory, entropy is a measure of an uncertainty in a random variable, and pertains to physical continuous systems, for example as in thermodynamics, as well as to information systems, for example data communication systems. Moreover, in the context of data communication systems, entropy is more appropriately referred to as being Shannon entropy; reference is made to Claude E. Shannon's 1948 scientific paper "A Mathematical Theory of Communication" which is hereby incorporated by reference Shannon entropy is useable for quantifying an expected value of information contained in a given message. Furthermore, Shannon entropy is expressible in terms of nats and bans, as well as bits.
Shannon entropy provides an absolute limit regarding a best possible lossless encoding or compression of any communication, assuming that a given communication is susceptible to being represented as a sequence of independent and identically-distributed random variables. Moreover, Shannon's theory has indentified that an average length L of a shortest possible representation to encode a given message in a given alphabet is their entropy E divided by a logarithm of a number of symbols N present in the alphabet, namely as defined in Equation 1 (Eq. 1):
L= h Eq.1 1og N Thus, the entropy F is a measure of unpredictability or information content. In a lossless data compression method, compressed output data generated by applying the method to corresponding input data has a similar quantity of information as the input data, but the output data includes fewer data bits relative to the input data. In consequence, the compressed output data is more unpredictable because it contains less redundancy of information therein.
Shannon's theory has been taken into account in the design of known data encoding apparatus. For example, in a published international patent application no. W02010/050157A1 (PCT/JP2009/005548, "Image encoding apparatus, image encoding method, and image encoding program", Applicant -Thomson Licensing), there is described an image encoding apparatus, an image encoding method and an image encoding program, which are operable to homogenize image quality of an image as a whole without lowering encoding efficiency, and which are operable at high speed, and are capable of reducing the size of circuit scale by performing macroblock shuffling without changing slice structure. Moreover, there is also provided an image encoding apparatus, including: (i) a shuffling portion which collects and shuffles a plurality of macroblocks constituting image data from respective positions within an image; (H) an encoding portion which performs spatial frequency transformations and entropy encoding on the plurality of macroblocks which are collected and shuffled by the shuffling portion; and (Hi) a rate control portion which controls the encoding portion to adjust the rate of the plurality of macroblocks after encoding has been executed.
Data, irrespective of type of the data, require data storage space, and also bandwidth in communication network capacity when moved from one spatial location to another.
Such bandwidth corresponds to investment of communication infrastructure and utilization of energy in reality. As volumes of data to be communicated are projected to increase in future, more data storage space and more communication system capacity will be needed, and often also more energy will be needed. In the contemporary Internet, there are stored huge quantities of data, often in multiple copies. Thus, any approach which is able to compress data, especially when such compression is lossless, is potentially of great technical and economic benefit.
Contemporarily, there are several known methods for reducing entropy within data sets, for compressing the data sets. Moreover, there are known methods of modifying entropy present in data sets, for example Delta coding and Run-Length-Encoding (RLE), but new methods are still required which provide more effective data compression of data.
Thus, there are many different compression methods that are employable to compress given data by reducing entropy present in given data, for example aforesaid RLE coding, aforesaid VLC coding, Huffman coding, Delta coding and Arithmetic coding. These methods are typically designed to compress alphabets, numbers, bytes and words. However, such methods are not particularly suitable for compressing individual bits, and for this reason are not ideally suited for compressing data that can change in a bit-by-bit manner, for example streams of data bits.
In respect of conventional RLE coding, there is stored either a given value, namely bit, or two times the value, namely bit, and then a number of similar values, namely bits, after that. RLE can be applied selectively, for example, namely its coding can be reserved solely for coding runs including a known amount of bits for a number of similar values. Such selective application of RLE requires that the same value be put once or twice again into a given data stream with each new run. However, there is contemporarily required better approaches to data compression, which reduce entry in sets of data, independently of types of data.
Summary of the invention
A first object of the present invention is to provide an improved entropy modification, for example for providing improved compression of data.
A second object of the present invention is to provide an improved method of entropy modification, for example for providing improved compression of data.
According to a first aspect of the present invention, there is provided an entropy modifier as claimed in appended claim 1: there is provided an entropy modifier which is operable to encode a stream of input data bits (Dl) having a first entropy for generating corresponding entropy-modified output data (D2) having a second entropy, wherein the entropy modifier is operable to process the stream of input data bits to handle groups of mutually similar bits and the value of the first bit, and one or more maximum run lengths of the groups of mutually similar bits.
The present invention is of advantage in that selective use of run length representation of the data is able to provide enhanced entropy modification, for example enhanced data compression.
Optionally, the entropy modifier is operable to control one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code.
More optionally, the entropy modifier is implemented such that the one or more maximum run lengths of the groups of mutually similar bits are controlled by a plurality of escape codes.
One kind of escape code solution employed uses a maximum run length value and an indication that the amount of similar bits is continued. In this kind of solution all the symbols can be coded as one data stream. The other kind of escape code enables utilization of many different solutions that are separated from the coded symbols and represents the continuous amount of similar bits value that is greater than the maximum run length value. This kind of solution can be handled as two separate streams or the solution can be designed so that any value representing the number is not bigger than the maximum run, such that they can also be coded with the same stream of other symbols. Also other escape methods are optionally employed.
Optionally, the entropy modifier is operable to handle the input stream of data (Dl) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (Dl).
Optionally, the entropy modifier is operable to handle a value of a first bit in the stream of input data (Dl) separately from a sequence of data bits. More optionally, the entropy modifier is operable to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.
Optionally, the entropy modifier is implemented such that the at least one escape code is implemented as a 0" value within the entropy modifier.
Optionally, the entropy modifier is utilized in conjunction with one or more coding arrangements for handling the stream of input data bits (Dl), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.
Optionally, the entropy modifier is operable to handle the stream of input data bits (Dl) in a plurality of parts which are separately encoded or decoded. More optionally, the entropy modifier is operable to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution. More optionally, the entropy modifier is operable to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.
Optionally, the entropy modifier is implemented to function as an encoder for compressing the stream of input data (Dl) to generate the entropy-modified output (D2, D3).
Optionally, the entropy modifier is operable to assist to transform a bit string present in the input data (Dl) to symbols present in the entropy modified output data (D2).
Optionally, the entropy modifier includes computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (Dl) to generate the output data (D2).
According to a second aspect of the invention, there is provided an entropy modifier which is operable to decode a stream of input data bits (D3 or D4) having a first entropy for generating corresponding entropy-modified output data (D5) having a second entropy, wherein the entropy modifier (60) is operable to process the stream of input data bits (D3 or D4) to handle groups of mutually similar bits and the value of the first bit, and one or more maximum run lengths of the groups of mutually similar bits.
Optionally, the entropy modifier is operable to process one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code.
More optionally, the entropy modifier is implemented such that the one or more maximum run lengths of the groups of mutually similar bits are processed by using a plurality of escape codes.
One kind of escape code solution employed uses a maximum run length value and an indication that the amount of similar bits is continued. In this kind of solution all the symbols can be coded as one data stream, similarly decoded a one data stream. The other kind of escape code enables utilization of many different solutions that are separated from the coded symbols and represents the continuous amount of similar bits value that is greater than the maximum run length value. This kind of solution can be handled as two separate streams or the solution can be designed so that any value representing the number is not bigger than the maximum run, such that they can also be coded with the same stream of other symbols. Also other escape methods are optionally employed.
Optionally, the entropy modifier is operable to handle the input stream of data (D3 or D4) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (D3 or D4).
Optionally, the entropy modifier is operable to handle a value of a first bit in the stream of input data (D3 or D4) separately from a sequence of data bits. More optionally, the entropy modifier is operable to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits. More optionally, the entropy modifier is implemented such that the at least one escape code is implemented as a 0" value within the entropy modifier.
Optionally, the entropy modifier is operable to decode data elements present in the input data (D3 or D4) and apply an inverse entropy modification to generate the output data (D5) as a decoded bit stream.
Optionally, the entropy modifier is utilized in conjunction with one or more coding arrangements for handling the stream of input data bits (D3), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.
Optionally, the entropy modifier is operable to handle the stream of input data bits (D3 or D4) in a plurality of parts which are separately encoded or decoded. More optionally, the entropy modifier is operable to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution. More optionally, the entropy modifier is operable to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.
Optionally, the entropy modifier is implemented to function as a decoder for decompressing the stream of input data (D3 or D4) to generate the entropy-modified output (D5).
Optionally, the entropy modifier is operable to assist to transform symbols present in the input data (D3 or D4) to a bit string present in the output data (D5).
Optionally, the entropy modifier includes computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (D3 or D4) to generate the output data (D5).
According to a third aspect of the invention, there is provided a method of using an entropy modifier to encode a stream of input data bits (Dl) having a first entropy for generating corresponding entropy-modified output data (D2) having a second entropy, wherein the method includes: using the entropy modifier to process the stream of input data bits (Dl) to handle groups of mutually similar bits and the value of the first bit, and one or more maximum run lengths of the groups of mutually similar bits.
Optionally, the method includes using the entropy modifier to control one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code. More optionally, the method includes using a plurality of escape codes to control the one or more maximum run lengths of the groups of mutually similar bits. More optionally, the method includes using the entropy modifier to handle the input stream of data (Dl) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (Dl).
Optionally, the method includes using the entropy modifier to handle a value of a first bit in the stream of input data (Dl) separately from a sequence of data bits. More optionally, the method includes using the entropy modifier to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.
Optionally, the method is implemented such that the at least one escape code is implemented as a "0" value within the entropy modifier.
Optionally, the method includes using the entropy modifier in conjunction with one or more coding arrangements for handling the stream of input data bits (Dl), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.
Optionally, the method includes using the entropy modifier to handle the stream of input data bits (Dl) in a plurality of parts which are separately encoded or decoded.
Optionally, the method includes using the entropy modifier to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.
Optionally, the method includes using the entropy modifier to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.
Optionally, the method includes implementing the entropy modifier to function as an encoder for compressing the stream of input data (Dl) to generate the entropy-modified output (D2, D3). More optionally, the method includes using the entropy modifier to assist to transform a bit string present in the input data (Dl) to symbols present in the entropy modified output data (D2). More optionally, the method includes implementing the entropy modifier to include computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (Dl) to generate the output data (D2).
According to a fourth aspect of the invention, there is provided a method of using an entropy modifier to decode a stream of input data bits (D3 or D4) having a first entropy for generating corresponding entropy-modified output data (D5) having a second entropy, wherein the method includes: Using the entropy modifier to process the stream of input data bits (D3 or D4) to handle groups of mutually similar bits and the value of the first bit, and one or more maximum run lengths of the groups of mutually similar bits.
Optionally, the method includes using the entropy modifier to process one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code. More optionally, the method includes processing the one or more maximum run lengths of the groups of mutually similar bits by using a plurality of escape codes.
Optionally, the method includes using the entropy modifier to handle the input stream of data (D3 or D4) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (D3 or D4).
Optionally, the method includes using the entropy modifier to handle a value of a first bit in the stream of input data (D3 or D4) separately from a sequence of data bits.
More optionally, the method includes using the entropy modifier to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits. More optionally, the method is implemented such that the at least one escape code is implemented as a "0" value within the entropy modifier.
Optionally, the method includes using the entropy modifier to decode data elements present in the input data (D3 or D4) and apply an inverse entropy modification to generate the output data (D5) as a decoded bit stream.
Optionally, the method includes using the entropy modifier in conjunction with one or more coding arrangements for handling the stream of input data bits (D3), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.
Optionally, the method includes using the entropy modifier to handle the stream of input data bits (D3 or D4) in a plurality of parts which are separately encoded or decoded. More optionally, the method includes using the entropy modifier to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.
Optionally, the method includes using the entropy modifier to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.
Optionally, the method includes using the entropy modifier to function as a decoder for decompressing the stream of input data (D3 or D4) to generate the entropy-mod ified output (D5).
Optionally, the method includes using the entropy modifier to assist to transform symbols present in the input data (D3 or D4) to a bit string present in the output data (D5).
Optionally, the method includes implementing the entropy modifier to computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (D3 or D4) to generate the output data (D5).
According to a fifth aspect of the invention, there is provided a software product recorded on machine-readable data storage media, wherein the software product is executable upon computing hardware for executing the method pursuant to the third aspect of the invention.
According to a sixth aspect of the invention, there is provided a software product recorded on machine-readable data storage media, wherein the software product is executable upon computing hardware for executing the method pursuant to the fourth aspect of the invention.
It will be appreciated that features of the invention are susceptible to being combined in various combinations without departing from the scope of the invention as defined by the appended claims.
Description of the diagrams
Embodiments of the present invention will now be described, by way of example only, with reference to the following diagram wherein: FIG. 1 is an illustration of a codec system including entropy modifiers pursuant to the present invention.
In the accompanying diagrams, an underlined number is employed to represent an item over which the underlined number is positioned or an item to which the underlined number is adjacent. A non-underlined number relates to an item identified by a line linking the non-underlined number to the item. When a number is non-underlined and accompanied by an associated arrow, the non-underlined number is used to identify a general item at which the arrow is pointing.
Description of embodiments of the invention
In overview, the present invention is concerned with an entropy modifier. Referring to FIG. 1, input data Dl is supplied to a first entropy modifier 10 which transforms the input data to generate corresponding transformed data D2; the data D2 is optionally mutually different in size relative to the data Dl, depending upon a nature of transformation employed in the first entropy modifier 10, and has reduced entropy, relative to the data D2. Optionally, the data D2 is further coded via an encoding stage 20 to generate final encoded output data D3; when the encoding stage 20 is not employed, data D2 and D3 are mutually similar. The encoded output data D3 is stored in data memory 30 and/or transmitted via a data communication network 40.
Moreover, the output data D3 is communicated directly to a second entropy modifier 60, or optionally via a decoding stage 50 to the second entropy modifier 60 when the aforesaid encoding stage 20 is employed such that data D4 is substantially similar to the data D2. The second entropy modifier 60 generates decoded output data D5 which is substantially similar to the input data Dl. Thus, the first entropy modifier 10 and the second entropy modifier 60 perform mutually inverse entropy modifying operations, for example as in a codec configuration.
Optionally, the first and second entropy modifiers 10, 60 are operable to process data therethrough as a plurality of parallel streams of data for achieving faster entropy modification, for example faster encoding and/or decoding. Such faster processing using a plurality of parallel data streams is beneficial when handling large volumes of data, for example streamed video content from data servers, for example from Internet-based servers providing cable TV services.
The first entropy modifier 10 therefore consumes a stream of bits present in the data Dl and creates from them data elements whose entropy is reduced compared to the entropy of the input data Dl. These modified data elements are optionally further encoded in the encoding stage 20 by employing methods such as Variable-Length-Coding (VLC), Huffman coding, Arithmetic coding, Run-Length-Encoding (RLC) and similar. The entropy modification executed within the first entropy 10 is reversible and beneficially lossless, mutatis mutanclis also in the second entropy modifier 60.
Moreover, the entropy modification executed within the first entropy modifier 10 at least stores a new data element containing a continuous amount of similar bits after every change of bit value.
When executing entropy reduction as aforementioned, there has to be provided an indication of a first bit in any given sequence. Moreover, there also has to be provided an escape code that enables a limited number of codes to be employed for representing data elements, namely a maximum run, when the data elements are to be compressed. Optionally, the escape code is represented by digit "0"; the escape code denotes a highest value that the data element can represent, namely a maximum run, and it additionally conveys information that the bit value is continued.
Beneficially, when implementing embodiments of the present invention, one or more codes corresponding to a maximum run of bits are varied, depending upon the data and its properties; in other words, the one or more codes corresponding to the maximum run are adaptively varied depending upon the data to be compressed.
Optionally, the entropy modifiers 10, 60 utilize pre-and/or post-processing methods, for example an ODelta operator,that operates for 1-bit data. However, for the entropy modifiers 10, 60, data being processed therethrough can be of any kind, for example image data, video data, audio data, reference data, masks, split bits, sign bits, and compressed data, namely any sort of data that can be processed in bits.
Optionally, bytes or words of any data can be inserted into a stream that includes bits, and can be processed through the entropy modifiers 10, 60. In the following, "entropy modifier" and "inverse entropy modifier" will be abbreviated to EM, IEM respectfully, namely for use in providing data compression and data decompression respectively, namely executed via the first and second entropy modifiers 10, 60 respectfully.
The entropy modifiers 10, 60 optionally are implemented using computing hardware (CPU) 70 which is operable to execute one or more software products 80 recorded on machine-readable data storage media 90 for implementing methods pursuant to the present invention.
Embodiments of the present invention will now be described in greater detail. The entropy modifiers 10, 60 employ one parameter that defines a maximum run number of 0's or l's, for example present in a stream of data bits. Moreover, entropy modifiers 10, 60 also employ an escape element that is used when the run of bits in the bit stream is larger than the maximum run in the bit stream. Beneficially, the maximum run length L is set to one or more in a series: L=211-I Eq.2 wherein n is an integer with values n = 2, 3, This corresponds to a series L = 3, 7, 15, 31 but is beneficially any number greater than 1. Beneficially, the escape element is chosen to be a value "0", because a plurality of zero similar bits is not possible when implementing the invention. It will be appreciated that if the number of similar bits is decreased by one count as above, then the escape element is beneficially the maximum run. The entropy modifier 10 requires, when compression of a stream of bits is desired, for a first bit in the stream to be known, so that the corresponding compressed bit stream can be subsequently decoded, namely decompressed, reversibly in the entropy modifier 60.
For further elucidating embodiments of the present invention, an example will now be described. Below is presented a first example of a manner in which entropy encoding pursuant to the present invention functions in a case where the maximum run length is 3 bits and the escape code is "0": An original stream of bits is as follows: which includes twenty six bits in total in the stream, of which there are sixteen "l's" and ten "0's".
The entropy E associated with this original stream of bits is calculable as follows: H = 16*Iogio,J+10*Iogi9J = 7.52339 Eq. 3 From Equation 3 (Eq. 3), the minimum number of bits MB that are needed for encoding the original stream of bits having such an associated entropy E is calculable pursuant to a source coding theorem as follows: MB = E = 24.99125 bits Eq. 4 log The aforementioned original stream of bits is encodable by applying a method pursuant to the present invention to generate a corresponding sequence of codes: The first bit value is "0" and the continuous amount of similar bits (= entropy modified symbols) are: When the escape symbol "0" is used for limiting the number of different symbols to 4 different values from 0 (escape) to 3 (maximum run length), and also the first bit value has been added as the first symbol to the stream, we thereby will get: 0122001011303 which includes thirteen codes in total in the stream, of which there are five "0's", four "l's", two "2's" and two "3's".
The entropy E associated with this stream of codes is calculable as follows: F 7.37405 Eq. 5 from which the minimum number of bits MB to represent such entropy E in a lossless manner is calculable as follows: MB = F. = 24.49608 bits Eq. 6 log (2) It will be appreciated from this example that entropy in the series of codes is less than the original stream of bits, and that fewer bits are required to represent the series of codes. Optionally, entropy-modified series of codes are generated as
outlined in Table 1:
Table 1: inverse of entropy-modified codes Code Designation o Firstbitvalue 1 Number of first bits: one "0" 2 Number of bits after change: two "l's" 2 Number of bits after change: two "0's" 0 Escape code representative of four or more mutually similar bits, for _________ example three "l's" 0 Escape code representative of four or more mutually similar bits, for __________ example three "l's" 1 Number of bits after change, (7)2*(escape bits), wherein there are three _________ escape bits, namely one "1" 0 Escape code representative of four or more mutually similar bits, for _________ example three "0's" 1 Number of bits after change, (4)1*(escape bits), wherein there are three _________ escape bits, namely one "0" 1 Number of bits after change: one "1" 3 Number of bits after change: three "U's" 0 Escape code representative of four of more mutually similar bits, namely ________ three "l's" 3 Number of bits after change (6)-i w(escape bits), wherein there are three _________ escape bits, namely three "l's" Table 1 is merely an example, and implementation of embodiments of the present invention is able to generate many alternative examples. For example, other maximum run values and other escape codes can be employed. Moreover, the first bit is optionally inserted separately, and it does not then influence the actual codes employed and their associated compression to any significant extent.
Optionally, the entropy modifiers 10, 60 are operable, in certain circumstances, to increase entropy, and it is therefore beneficial for output data from the entropy modifiers 10, 60 to be monitored, for example using a signal monitoring arrangement, to determine whether or not an adopted coding regime provides a desired degree of data compression. In an event that entropy is increased for a given type of data to be communicated, the signal monitoring arrangement can be employed to control operation of the entropy modifiers 10, 60 in an adaptive manner to ensure that a desired modification in entropy therethrough is achieved in operation. For example, for a given type of data, it is desirable that the entropy modifier 10 be used to apply one or more test encoding regimes when commencing encoding of a data stream in order to search for an optimal value of maximum run to employ for obtaining optimal data compression; the maximum run can have a major impact on entropy E. Additionally, the entropy E associated of the first bit value in a given data stream has a major impact on the entropy E when the length of given data stream is relatively short; for example, the first bit value is beneficially transmitted separately from other code words used to represent the given data stream.
As illustrated in FIG. 1, it is beneficial that the entropy modifiers 10, 60 be employed in combination with entropy coding methods such as Variable-Length-Coding (VLC), Huffman coding, Run-Length-Encoding (RLE) and Arithmetic coding. Alternatively, other types of entropy modifiers such as Delta coding are beneficially employed in combination therewith. Such entropy coding methods are beneficially employed after the entropy modifier 10, and before the entropy modifier 60; alternatively, or additionally, such entropy coding methods are beneficially employed before the entropy modifier 10, and after the entropy modifier 60; for example, in an event that original data to be encoded is alphanumeric, numbers, bytes or words, the original data is coded efficiently with additional coding as provided in Table 2: Table 2: additional coding employable with an entropy modifier pursuant to the present invention Additional Situation of use encoding method _________________________________________________________ RLE When the given data stream includes continuous streams of _________________ same data values Delta When the given data stream includes data values that are __________________ similar or mutually substantially similar or changes similarly VLC/Huffmanl When the given data stream includes many mutually similar Arithmetic data values Optionally, the entropy modifiers 10, 60 are employed in a recursive manner.
As aforementioned, entropy modifiers pursuant to the present invention are beneficially employed in conjunction with other types of entropy modifiers, wherein the other types of entropy modifiers are optionally known types. Known types include Delta coding for example. Typically, Delta coding is employed for processing numerical values that are provided in a format of bytes or words. An example of the entropy modifier of the invention employed in combination with Delta coding will next be described.
For further elucidating the present invention, two examples will be described, one example without use of an entropy modifier pursuant to the present invention and the other utilizing an entropy modifier pursuant to the present invention. In the example, a maximum run length of 7 bits is employed with an associated escape code being 0". When employing a 1-bit ODelta-type operator, a first bit in an encoded sequence is the same as a corresponding original data bit present in an original data stream to be encoded. Optionally, the 1-bit ODelta operation can be run recursively.
Examjle 1: In an original stream of data bits, there are included thirty seven bits in total, namely seventeen "l's" and twenty ll0s: o1o1o110010001o10000000000011111111111 wherein a corresponding associated entropy F is calculable as follows: E =i7*1ogi4-L9+2O*1ogi4J-19=11.O8523 Eq. 7 corresponding to 36.82 bits for computed MB, namely substantially 37 bits as provided above. It will be appreciated that Equation 7 (Eq. 7) corresponds to the amount of bits in the original bit stream.
An equivalent entropy modified (EM) code is as follows, in a generally similar manner to that employed to generate Table 1: wherein an associated entropy E is calculable as follows: E =9.69397 Eq. 8 It will be appreciated that Equation 8 (Eq. 8) corresponds to the amount of bits after the entropy modification. Moreover, it will be appreciated that this amount of bits is less than that associated with Equation 7 (Eq. 7).
However, when the original stream of bits above is subject to an ODelta operation, a corresponding modified stream of bits is generated which includes thirty seven bits, in which there are thirteen "l's" and twenty four "0's": 0111110101100111100000000001000000000 wherein a corresponding entropy E is calculable as follows: E =10.41713 Eq. 9 namely smaller than the entropy E associated with the original stream of bits (Eg. 7).
When this ODelta-processed stream of data bits above is subject to entropy modification pursuant to the present invention, there is thereby obtained a corresponding encoded sequence of codes such as: wherein a corresponding entropy E is calculable as follows: E = 2*3 *iogi0[HJ + 5 *1ogi0J+3* I *iogi0J = 9.68822 Eq. 10 -20 -which is less than the entropy E of the original stream (Eq. 7) of data bits including 37 bits in total. Moreover, it will be appreciated that this amount of bits is less than that associated with Equation 8 (Eq. 8) or Equation 9 (Eq. 9).
This example illustrates that it is possible to compress the original stream of data bits efficiently when the original stream of data is firstly compressed using a 1-bit ODelta operator and then with an entropy modifier pursuant to the present invention.
Example 2:
The aforesaid original bit stream in Example 1 is divided into two parts, and benefits of entropy modifying pursuant to the present invention are optimized by selecting a best combination of these two resulting streams of data. The value of first bit of the entropy modifier is transmitted separately and is not inserted into a resulting entropy-reduced series of codes. A first entropy modification result obtainable is similar to Example 1, wherein the first bit is also set as a "1" code word. A similar maximum run of seven bits is employed, and "0" is employed for the escape code, as provided
in Table 3:
Table 3: Example 2 entropy modification Bit stream Entropy, E Maximum bits to __________________ ___________________________ _____________ encode, MB Original bits pad 1 01 0 1 0 11 00 1 000 1 0 1 4.7621 15.82 bits (16 bits, with seven "l's" and none "0's"): ____________________________ ______________ _______________ Entiopy modified 011111 22 1 3 111 5.2910 17.58 bits (EM) _________________________ _____________ ______________ Entropy modified (0) 11111 22 1 3 111 1 3.7599 13.49 bits (EM) _________________________ _____________ ______________ ODelta modified 011111 01 01 1 00111 4.3158 14.34 bits EM (0)15111223 4.2144 15.00 bits Originalbitspart2 0000000000011111 6.3113 20.97bits (21 bits, with eleven 11111 "l's" and ten "0's"): ___________________________ _____________ _______________ Entropy modified (0) 0 4 0 3 1.08062 6.00/7.00 bits (EM) _________________________ _____________ ______________ ODelta 0000000000010000 1.7460 5.80 bits ________________ 00000 ____________ _____________ EM (0)04 1 02 2.8928 9.61 /10.61 bits -21 -From Table 3, it will be appreciated that a decrease in entropy is achieved, which is beneficially when data compression is to be achieved. A best compression of data is achieved when the first part stream of data is entropy coded from data that is generated from the original stream of data which is entropy-modified, namely is represented using 13.49 bits, and the second pad is entropy-modified via 1-bit ODelta coding, namely is represented using 5.80 bits, to be expressible using 19.29 bits compared to original 37 bits being required; this represents a considerable compression of data. When the second data stream is coded, there is no need to send the value of the first bit because it can be known based on the first data stream.
For that reason, there are two different values shown in the Table 3, partitioned by "/"; the first for continuation situation (i.e. value of first bit not sent) and the second for the case where the data stream starts with this kind of bits combination. It will be appreciated that although, in this example, the ODelta coding alone reduces the entropy of data, namely mostly for the second part of the data, it does provide beneficial entropy reduction also in combination with the entropy modifiers 10, 60.
Here entropy-modified original data causes a smaller entropy than entropy-modified data that is first processed with ODelta coding, namely 6.00 bits < 9.61 bits. In a practical coding solution, entropy-modified original data is optionally beneficially compressed more efficiently than the ODelta coded data, although the entropy of the latter one is smaller, namely 5.80 bits < 6.00 bits; 1-bit data is not so practical for implementations of entropy encoders, although Arithmetic coding, amongst others, is beneficially employed also for compressing 1-bit data. Optionally, the original stream of bits is split into more than two parts, prior to being subject to entropy modification processes for achieving data compression.
Optionally, splitting of the original stream of data bits to one or more streams, namely parts, can be executed automatically by a method including: (a) analyzing an entropy associated with the original stream of data bits; (b) splitting the original stream of data into two or more parts, depending upon a function of the analyzed entropy of the original stream of data bits; (c) applying one of more entropy modifying operations to the two or more parts to generate one or more corresponding entropy-modified pads; and -22 - (d) combining the one or more entropy-modified parts together to generate compressed encoded output data.
The present invention is also concerned with a method of decoding the encoded output data, wherein an inverse of steps (a) to (d) are utilized. Optionally, the method includes splitting or combining data blocks present in the original stream of bits so that encoding is implemented more efficiently, for example for achieving an enhanced compression ratio and/or achieving substantially lossless compression.
Optionally, step (b) is implemented in a coarse manner, namely just dividing up the original stream of data bits when multiple long run sections are encountered in the original stream of data bits, namely after or between regions of the original stream of data bits where there is a big enough region of the stream of data bits where the data bits vary sequentially in a rapid manner.
Optionally, to generate an encoded bit stream pursuant to the present invention, an original stream of data bits is processed to provide intermediate encoded data, for example via application of VLC, Arithmetic coding and/or RLE, which is then subjected to entropy modification pursuant to the present invention to generate output encoded data which is compressed and reduced in entropy; such as approach is illustrated in FIG. 1. Considerable speed optimization during data compression is thereby achieved, which corresponds to less computing power being necessary when the present invention is implemented by way of one or more software products recorded on machine-readable data storage media, wherein the one or more software products are executable upon computing hardware for implementing an entropy-modifying encoder, mutatis mutanciis entropy-modifying decoder.
Optionally, entropy optimizations are implemented such that an original bit, alphabetic, number, byte, word in the original steam of data bits is first coded using some other method, and after that, entropy modification pursuant to the present invention applied to generate encoded output data.
In contemporary known run-length encoding (RLE) methods, there is generated a given value, and then thereafter corresponding data indicative of the number of occurrences of this given value, before it is followed by another subsequent value.
Such an RLE method is continued as long as input data to be encoded is available, -23 -namely one value after another is encoded in sequence. In contradistinction, the present invention derives from an observation that, if only 1-bit values are employed, there is no need to add "0" and "1" data values into a stream of data to be encoded, because they occur alternately in turn; thus, it is sufficient that only the first value in a given sequence be expressed in a transmission of encoded data. Thus, the present invention is akin to RLE coding but employs a 1-bit data stream as aforementioned.
When implementing embodiments of the present invention, the escape code is an addition that enables more efficient usage of practical encoding methods to be employed. Beneficially, embodiments of the present invention include sending one or more coding tables from an encoder to a corresponding decoder to assist with decoding of encoded data sent from the encoder and received at the decoder.
Escape codes which are employed for implementing embodiments of the present invention are susceptible to being implemented in several different ways. For example, in a case of a run-length symbol or digit that continues with a "0" value, satisfactory encoding is achievable. However, situations potentially arise where these amount values are small, while conversely, occasionally, very large values may occur; in these situations, the escape code is beneficially set to a next value that is not yet used, or allocated for use as a code word. For example, if a maximum run-length employed is seven bits or elements, and the escape code is 0", then a code word "8" is used during generation of an encoded data stream; this new escape code only adds one new code word, and after this, the actual number of symbols is expressible using any method, for example in 1, 2 and/or 3 bytes, or using half-bytes (i.e. "nibbles"). Optionally, the actual number of symbols is transmitted without being compressed. Optionally, the actual number of symbols is combined with the maximum run-length value and then compressed together with other data values in an entropy compressor, namely entropy modifier.
When selecting a suitable escape value for use in embodiments of the present invention, it is advantageous to express at once a total number of adjacent elements, and therefore, after invoking this escape value, the same bit is not continued subsequently in contradistinction to use of an escape value. Such a new form of termination provides an escape, namely code word, that is useable in addition to a -24 -continuous escape method as aforementioned; alternatively, such a new escape code is useable as an only alternative, and, in such case, its code word is beneficially settable to a value "0". Similarly, if a given data value of this terminating code is often small, but occasionally large, it is beneficial to express the number of consecutive similar symbols present in data with an alternating number of bytes or nibbles. One bit of such a byte, for example a least significant bit (LSB) or most significant bit (MSB) is beneficially reserved to indicate the termination of the number, for example bit string, and thus beneficially its code word is set to a value "0" or "1" in a case where the value ends, in other cases, the value continues.
In order to elucidate the foregoing, an example of functionality of an escape code will next be described in a situation wherein both types of escape are utilized. In the example, a maximum run of 14 elements is employed, with a code word for a continuous escape being denoted by 15, wherein a code word for a terminating escape is 0. Moreover, values for the amounts of consecutive similar symbols or bits are: 9, 1024, 16,9, 12,2000,7,20,21,6,8, 120, 12, Furthermore, the example utilizes half-bytes (i.e. nibbles) of which a most significant bit (MSB) of value "1"is employed to indicate the termination of the number, namely bit string. Beneficially, if the terminating escape is employed, it is feasible to subtract from the number, namely the bit stream, the following: (bit string) -(MAXRLJN + 1)
For example:
1 °24base 10 1 °24base 10 -(1 4base 10 + 1) _> 1 °°9base 10 > 1 111 110 001 base 10 number experessed for nibbles 1 + 8(Terminates) 7 6 1). Thus, the example can be coded as: 901679152912010711715615768015912.
-25 -In this example, the entropy modifiers 10, 60 need to be able to interpret code words having values in a range 0 to 15. It is feasible to express this example by using merely a single escape code, wherein a code word "0" corresponds to an escape code that also indicates a terminating escape; in such an alternative example of a single type of escape code, the continuous escape is not used, and the other parameters are as above, namely: wherein the entropy modifiers 10, 60 are required to recognize code words in a range of 0 to 14. This alternative example is optionally expressed by using only the continuous escape expressed by a code word "0" and employing a maximum run length of 14, resulting in a following form of sequence of codes: 9 73x0 202912 142x0 12706768 8x0 812.
The best coding solution can be selected based on the Entropy that is calculated for all the three solutions separately.
Embodiments of the present invention for providing entropy modification (EM) and inverse entropy modification (IEM) will next be described. However, other embodiments are also feasible within the scope of the present invention, for example corresponding entropy modifiers based upon digital hardware, for example variable-state-machines, ASIC's and similar. "GetBit", "SetBit" and "ClearBit" instructions in the following examples function always to update "HeaderBits" values. Moreover, a "Headerlndex" value is also updated when a next bit will be in a next byte. In the following examples, which are software-product based, the first bit is stored as one code. Optionally, in better implementations, the first bit value is separated from the codes as aforementioned, for example with reference to Table 3. A corresponding decoder is beneficially optimized by writing multiple bits together to a destination byte contributing to decoded output data. It will be appreciated that "MaxRun" provided in following example embodiments is similar to (maximum run length + 1); for example, when a maximum run length of 7 bits is employed, a value of 8 is given as function parameter "AMaxRun" in the following embodiments.
-26 -rA.:)fl.Er hcJeEtRLEAri.rSn:PBr A,Btkn Crri[ APhDt PSyle; ,A,DstBtDfgse1 oci-ar He Jr$i unLenoth, Bndex: cardinaL i. .**ia_ C. Read nrst dEl, write it to destd-tirgi initiaLze OSr(AP rSrc Head.iFdex âJbedc1ffoIt) 14P <Ost1 a3st{Ri)ae; ci Si = h'fle L flRd lnc(ADelFiliOtfaet, *):.
RudLeth !Gc thros.Eqn bite o -c ASrcBit en ti begir.
Read hit osa:GeStAPtSrc. @iiHe letindex, @iHeecrBits); // Same tt as.pevieus it -; bLastBt then ben J ç-cf ).
cape \s9r Li coti' tCL ae' niaxrum tun f',uru_ençth = AMniRLn then II Write escape code to destin.ebon and ir'idiaize rLin t°t Or[AOttB oifstv 7 5' i h'AD5tBitC)1te1 l3j Rkn..ength 1: end end rtou -27 -run ut bts to dStn&in and itiallzt run + 7) dv 8J iRunLenrn: trC>:tECrftt. 8): 7 dv j:.
PBylA5rcBtQffst: CthnaF; APtrost: PByte;varADt8L* \Va<Run c dinaI BcoIen: Byle.
Src8Offset, index. iRunLenth Headerhdex. HaderBts, iDstBitQffs& : Cardkr&c set c)floffset dstbtoffet and deer tirsr desunaton byte 0: He:= U: APtrOst[C] :.
Read fist bit vakje ( byte) an update srthitOffset bBft Aptr5rcrjsrr.offet + 7) div J.> 0): fricSrthtCffset 8) * Go through afl Bytes unti source is nished or desinatkn buffer s fuU wtste (Sratcwset ASrc9itQffsot and (DsfBi'Q'faer c ADst8t1sn do ii Read rtrnlenqth nd update stc.toffset RurLergth = APtrSrcISrcB tOffset + 7 di 8 ne(iSrcBtQffset 8): if Process escape code -28 -if (iRtsiLai h a 0) lbS flat SthtieSthpe fprIiIndox i:taAMø$Run tt begrft //S*t bit if desbnatcn buffer is notfull it (iDiU3tCXf4 tc ADst8ten then Itset St inS jat Mtbk it (i13ft)The SAPtrOst ØiKMthdndéic ØiHeadwEft*) else CieaBft(APtOst WHeade,lndex HeaderBas), lnt(iDStBitOtfs$t, 1)1 ód end DProcess mnlengUi else $gfr' It Set bitS tar rur fotdew:ePt4PMnLecgt?, 1:40 lbs fri U Set bit f deshnatrnn buffc is not *4 it (lOst Bitoffsat: ADstSitLen) then egin (LSeTbitándM btofle4bt.
:Sét8iAflDit iFsou,rindaeHeadøpn) else Ch$rBItAPbOst alKeaderindex s*Headevait$: lñcQDsteltOffSet, 1) 1/ Cbatebit:thIUe eise kBt:;'' TrUE er14; -29 -Even though it is not possible for an entropy coding method, for example VLC, Huffman coding, Arithmetic coding, RLE coding and so forth, to compress data to a smaller size than its entropy allows, namely without using some farm of prediction or other additional information, namely without loss of information occurring, this does not mean in all cases that a greatest compression of data in practice corresponds to a smallest entropy; in other words, in practice, entropy and data compression are not exactly identical concepts. Decoding encoded data back to its corresponding original form always demands some additional information, the transmission of which sometimes demands an unreasonable amount of extra information in addition to actual data to be compressed. When large quantities of data are to be handled, a smallest entropy usually corresponds to a best data compression, but when small amounts of data are to be handled, compressing the data is not always so straightforward; for example, 1-bit data is usually difficult to compress efficiently, and therefore, the entropy modifiers 10, 60 that is operable to process 1-bit information is potentially, commercially, a very valuable invention. Moreover, processing data in a format which is more easily compressible often results in a reduction in entropy of the formatted data in comparison to corresponding original data prior to formatting processes being applied.
As aforementioned, it is often efficient if a first bit value in a sequence of code words representing encoded data is transmitted separately from those values that indicate the number of consecutive symbols or bits. However, such separate transmission does not need to correspond to a completely separate communication. In the following examples, despite the separate handling of the first bit, there is still a need to add the amount of the first bit to the total amount of the successive elements, because it would otherwise not be possible to distinguish between the following
examples:
00 landOl or 11 0 and 1 0, without setting the first element amount number to zero, which is not desirable if it is to be employed for implemented the aforementioned escape code, namely for use -30 -when the number of consecutive similar signals exceeds the maximum run length in
the examples.
In FIG. 1, the size of the data D2 is not necessarily smaller than the size of the data Dl, but its entropy is smaller, even though the data Dl and D2 include mutually similar information. The size of the data D2 is dependent run-lengths employed. For example, in the data Dl, the size of data elements is 1 bit, whereas the size of the data D2 depends on the size of run length employed. For example, if the data Dl has a size of 104 bits, and an entropy E = 80, the data Dl can be converted by the entropy modifier 10 by using a maximum run-length of 7 elements in the data D2, which has 40 elements, namely 3-bit elements having a value in a range of 0 to 7, and an entropy E = 50, then the data D2 has a size 40*3 bits = 120 bits; in such an example, the data D2 is larger in size than the data Dl. The encoding stage 20 beneficially employs VLC transformations which is able to compress the data D2 into 52 bits to provide the data D3. Thus, it is to be appreciated that the entropy modifiers 10, 60 do not always provide data compression and decompression respectively, but are capable of providing data compression and decompression when employed with other encoding stages.
Embodiments of the present invention are beneficially included as component parts of communication systems, audio-visual consumer products, scientific image-processing equipment, computing devices, wireless-enabled communication devices such as smart phones, digital cameras, digital surveillance equipment, interactive computer games, to mention a few examples. Increased data compression is capable of reducing data storage requirements, saving energy and enables faster communication to be achieved, all of which would be regarded as beneficial technical effects employable in industry, for example. Moreover, the embodiments are implementable in software products, hardware, or any combination thereof. The software products are optionally downloadable as software applications, namely "software apps".
Modifications to embodiments of the invention described in the foregoing are possible without departing from the scope of the invention as defined by the accompanying claims. Expressions such as "including", "comprising", "incorporating", "consisting -31 -of", "have", "is" used to describe and claim the present invention are intended to be construed in a non-exclusive manner, namely allowing for items, components or elements not explicitly described also to be present. Reference to the singular is also to be construed to relate to the plural. Numerals included within parentheses in the accompanying claims are intended to assist understanding of the claims and should not be construed in any way to limit subject matter claimed by these claims.

Claims (64)

  1. -32 -CLAIMS1. An entropy modifier (10) which is operable to encode a stream of input data bits (Dl) having a first entropy for generating corresponding entropy-modified output data (D2) having a second entropy, characterized in that the entropy modifier (10) is operable to process the stream of input data bits (Dl) to handle groups of mutually similar bits and the value of the first bit, and one or more maximum run lengths of the groups of mutually similar bits.
  2. 2. An entropy modifier (10) as claimed in claim 1, characterized in that the entropy modifier (10) is operable to control one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code.
  3. 3. An entropy modifier (10) as claimed in claim 1 or 2, characterized in that the one or more maximum run lengths of the groups of mutually similar bits are controlled by a plurality of escape codes.
  4. 4. An entropy modifier (10) as claimed in claim 1, 2 or 3, characterized in that the entropy modifier (10) is operable to handle the input stream of data (Dl) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (Dl).
  5. 5. An entropy modifier (10) as claimed in any one of preceding claims, wherein the entropy modifier (10) is operable to handle a value of a first bit in the stream of input data (Dl) separately from a sequence of data bits.
  6. 6. An entropy modifier (10) as claimed in any one of preceding claims, characterized in that the entropy modifier (10) is operable to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.
  7. 7. An entropy modifier (10) as claimed in any one of the preceding claims, characterized in that the at least one escape code is implemented as a "0" value within the entropy modifier (10).
    -33 -
  8. 8. An entropy modifier (10) as claimed in any one of preceding claims, characterized in that the entropy modifier (10) is utilized in conjunction with one or more coding arrangements for handling the stream of input data bits (Dl), wherein the one more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.
  9. 9. An entropy modifier (10) as claimed in any one of the preceding claims, characterized in that the entropy modifier (10) is operable to handle the stream of input data bits (Dl) in a plurality of parts which are separately encoded or decoded.
  10. 10. An entropy modifier (10) as claimed in claim 9, characterized in that the entropy modifier (10) is operable to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.
  11. 11. An entropy modifier (10,) as claimed in claim 9 or 10, characterized in that the entropy modifier (10) is operable to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.
  12. 12. An entropy modifier (10) as claimed in any one of the preceding claims, characterized in that the entropy modifier (10) is implemented to function as an encoder (10, 20) for compressing the stream of input data (Dl) to generate the entropy-modified output (D2, D3).
  13. 13. An entropy modifier (10) as claimed in any one of the preceding claims, characterized in that the entropy modifier (10) is operable to assist to transform a bit string present in the input data (Dl) to symbols present in the entropy modified output data (D2).
  14. 14. An entropy modifier (10) as claimed in any one of the preceding claims, characterized in that the entropy modifier (10) includes computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (Dl) to generate the output data (D2).
    -34 -
  15. 15. An entropy modifier (60) which is operable to decode a stream of input data bits (D3 or D4) having a first entropy for generating corresponding entropy-modified output data (D5) having a second entropy, characterized in that the entropy modifier (60) is operable to process the stream of input data bits (D3 or D4) to handle groups of mutually similar bits and the value of the first bit, and one or more maximum run lengths of the groups of mutually similar bits.
  16. 16. An entropy modifier (60) as claimed in claim 15, characterized in that the entropy modifier (60) is operable to process one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code.
  17. 17. An entropy modifier (60) as claimed in claim 15 or 16, characterized in that the one or more maximum run lengths of the groups of mutually similar bits are processed by using a plurality of escape codes.
  18. 18. An entropy modifier (60) as claimed in claim 15, 16 or 17, characterized in that the entropy modifier (60) is operable to handle the input stream of data (D3 or D4) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (D3 or D4).
  19. 19. An entropy modifier (60) as claimed in any one of the preceding claims 15 to 18, characterized in that the entropy modifier (60) is operable to handle a value of a first bit in the stream of input data (D3 or D4) separately from a sequence of data bits.
  20. 20. An entropy modifier (60) as claimed in any one of claims 15 to 19, characterized in that the entropy modifier (60) is operable to decode data elements present in the input data (D3 or D4) and apply an inverse entropy modification to generate the output data (D5) as a decoded bit stream.
  21. 21. An entropy modifier (60) as claimed in any one of the preceding claims 15 to 20, characterized in that the entropy modifier (60) is operable to handle the value of -35 -the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.
  22. 22. An entropy modifier (60) as claimed in any one of the preceding claims 15 to 21, characterized in that the at least one escape code is implemented as a 0" value within the entropy modifier (60).
  23. 23. An entropy modifier (60) as claimed any one of the preceding claims 15 to 22, characterized in that the entropy modifier (60) is utilized in conjunction with one or more coding arrangements for handling the stream of input data bits (D3), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.
  24. 24. An entropy modifier (60) as claimed in any one of the preceding claims 15 to 23, characterized in that the entropy modifier (60) is operable to handle the stream of input data bits (D3 or D4) in a plurality of parts which are separately encoded or decoded.
  25. 25. An entropy modifier (60) as claimed in claim 24, characterized in that the entropy modifier (60) is operable to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.
  26. 26. An entropy modifier (60) as claimed in claim 24 or 25, characterized in that the entropy modifier (60) is operable to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.
  27. 27. An entropy modifier (60) as claimed in any one of the preceding claims 15 to 26, characterized in that the entropy modifier (60) is implemented to function as a decoder for decompressing the stream of input data (D3 or D4) to generate the entropy-modified output (D5).
  28. 28. An entropy modifier (60) as claimed in any one of the preceding claims 15 to 27, characterized in that the entropy modifier (60) is operable to assist to transform -36 -symbols present in the input data (D3 or 04) to a bit string present in the output data (D5).
  29. 29. An entropy modifier (60) as claimed in any one of the preceding claims 15 to 28, characterized in that the entropy modifier (60) includes computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (D3 or D4) to generate the output data (D5).
  30. 30. A method of using an entropy modifier (10) to encode a stream of input data bits (Dl) having a first entropy for generating corresponding entropy-modified output data (D2) having a second entropy, characterized in that the method includes: using the entropy modifier (10) to process the stream of input data bits (Dl) to handle groups of mutually similar bits and the value of the first bit, and one or more maximum run lengths of the groups of mutually similar bits.
  31. 31. A method as claimed in claim 30, characterized in that the method includes using the entropy modifier (10) to control one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code.
  32. 32. A method as claimed in claim 30 or 31, characterized in that the method includes using a plurality of escape codes to control the one or more maximum run lengths of the groups of mutually similar bits.
  33. 33. A method as claimed in claim 30, 31 or 32, characterized in that the method includes using the entropy modifier (10)to handle the input stream of data (Dl) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (Dl).
  34. 34. A method as claimed in any of the preceding claims 30 to 33, characterized in that the method includes using the entropy modifier (10) to handle a value of a first bit in the stream of input data (Dl) separately from a sequence of data bits.
    -37 -
  35. 35. A method as claimed in claim 34, characterized in that the method includes using the entropy modifier (10) to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.
  36. 36. A method as claimed in any of the preceding claims 31 to 35, characterized in that the at least one escape code is implemented as a "0" value within the entropy modifier (10).
  37. 37. A method as claimed in any of the preceding claims 30 to 36, characterized in that the method includes using the entropy modifier (10) in conjunction with one or more coding arrangements for handling the stream of input data bits (Dl), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.
  38. 38. A method as claimed in any of the preceding claims 30 to 37, characterized in that the method includes using the entropy modifier (10) to handle the stream of input data bits (Dl) in a plurality of parts which are separately encoded or decoded.
  39. 39. A method as claimed in claim 38, characterized in that the method includes using the entropy modifier (10) to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.
  40. 40. A method as claimed in claim 38 or 39, characterized in that the method includes using the entropy modifier (10) to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.
  41. 41. A method as claimed in any of the preceding claims 30 to 40, characterized in that the method includes implementing the entropy modifier (10) to function as an encoder (10, 20) for compressing the stream of input data (Dl) to generate the entropy-modified output (D2, D3).
  42. 42. A method as claimed in any of the preceding claims 30 to 41, characterized in that the method includes using the entropy modifier (10) to assist to transform a bit -38 -string present in the input data (Dl) to symbols present in the entropy modified output data (D2).
  43. 43. A method as claimed in any of the preceding claims 30 to 42, characterized in that the method includes implementing the entropy modifier (10) to include computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (Dl) to generate the output data (D2).
  44. 44. An method of using an entropy modifier (60) to decode a stream of input data bits (D3 or D4) having a first entropy for generating corresponding entropy-modified output data (D5) having a second entropy, characterized in that the method includes: Using the entropy modifier (60) to process the stream of input data bits (D3 or D4) to handle groups of mutually similar bits and the value of the first bit, and one or more maximum run lengths of the groups of mutually similar bits.
  45. 45. A method as claimed in claim 44, characterized in that the method includes using the entropy modifier (60) to process one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code.
  46. 46. A method as claimed in claim 44 or 45, characterized in that the method includes processing the one or more maximum run lengths of the groups of mutually similar bits by using a plurality of escape codes.
  47. 47. A method as claimed in claim 44, 45, or 46, characterized in that the method includes using the entropy modifier (60) to handle the input stream of data (D3 or D4) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (D3 or D4).
  48. 48. A method as claimed in any one of preceding claims 44 to 47, characterized in that the method includes using the entropy modifier (60) to handle a value of a first bit in the stream of input data (D3 or D4) separately from a sequence of data bits.
    -39 -
  49. 49. A method as claimed in any one of the preceding claims 44 to 48, characterized in that the method includes using the entropy modifier (60) to decode data elements present in the input data (D3 or D4) and apply an inverse entropy modification to generate the output data (D5) as a decoded bit stream.
  50. 50. A method as claimed in claim 48 or 49, characterized in that the method includes using the entropy modifier (60) to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.
  51. 51. A method as claimed in any one of preceding claims 46 to 50, characterized in that the at least one escape code is implemented as a "0" value within the entropy modifier (60).
  52. 52. A method as claimed in any one of preceding claims 44 to 50, characterized in that the method includes using the entropy modifier (60) in conjunction with one or more coding arrangements for handling the stream of input data bits (D3), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.
  53. 53. A method as claimed in any one of preceding claims 44 to 52, characterized in that the method includes using he entropy modifier (60) to handle the stream of input data bits (D3 or D4) in a plurality of parts which are separately encoded or decoded.
  54. 54. A method as claimed in claim 53, characterized in that the method includes using the entropy modifier (60) to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.
  55. 55. A method as claimed in claim 53 or 54, characterized in that the method includes using the entropy modifier (60) to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.
  56. 56. A method as claimed in any one of preceding claims 44 to 55, characterized in that the method includes using the entropy modifier (60) to function as a decoder for -40 -decompressing the stream of input data (D3 or D4) to generate the entropy-modified output (D5).
  57. 57. A method as claimed any one of preceding claims 44 to 56, characterized in that the method includes using the entropy modifier (60) to assist to transform symbols present in the input data (D3 or 04) to a bit string present in the output data (D5).
  58. 58. A method as claimed any one of preceding claims 44 to 57, characterized in that the method includes implementing the entropy modifier (60) to computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (D3 or D4) to generate the output data (D5).
  59. 59. A software product recorded on machine-readable data storage media, characterized in that the software product is executable upon computing hardware for executing the method as claimed in claim 30.
  60. 60. A software product recorded on machine-readable data storage media, characterized in that the software product is executable upon computing hardware for executing the method as claimed in claim 44.Amendments to the claims have been filed as followsCLAIMS1. An entropy modifier (10) which is operable to encode a stream of input data bits (Dl) having a first entropy for generating corresponding entropy-modified output data (D2) having a second entropy, characterized in that: (a) the entropy modifier (10) is operable to generate the output data (02) to include a first bit which functions as a reference value for subsequent data included in the output data (D2); (b) the output data (02) further includes data indicative of run lengths of mutually similar bits present in the input data bits (Dl), wherein the run lengths of mutually similar bits are substantially limited in size so as not to exceed a maximum run length value (MaxRun); and (c) one or more occurrences of the run lengths in the input data (Dl) substantially exceeding the maximum run length value is denoted by at least one escape code included in the output data (D2).2. An entropy modifier (10) as claimed in claim 1, characterized in that one or c more maximum run lengths (Max/Run) of the groups of mutually similar bits are controlled by a plurality of escape codes.3. An entropy modifier (10) as claimed in claim 1 or 2, characterized in that one or more maximum run lengths (MaxRun) has a value greater than 1.4. An entropy modifier (10) as claimed in claims 1, 2, or 3, characterized in that the at least one escape code of same length as of the same maximum run length (MaxRun) can be used for the same run several times.5. An entropy modifier (10) as claimed in claim 1, 2, 3 or 4, characterized in that the entropy modifier (10) is operable to include the at least one escape code in the output data (02) by way of a 0" data value.6. An entropy modifier (10) as claimed in claim 1, 2, 3, 4 or 5, characterized in that the entropy modifier (10) is operable to handle the input stream of data (Dl) using the maximum run length (MaxRun) in manner which is dynamically varied as a function of a nature of the stream of input data (Dl).7. An entropy modifier (10) as claimed in any one of preceding claims, wherein the entropy modifier (10) is operable to function as a data pre-processor for formatting the input data (Dl) to the output data (D2) for subsequent compression in one or more coding arrangements (20) to generate compressed data (D3) 8. An entropy modifier (10) as claimed in any one of the preceding claims, characterized in that the at least one escape code is implemented as a 0" value within the output data (D2) generated by the entropy modifier (10).9. An entropy modifier (10) as claimed in claim 7, characterized in that the one or more coding arrangements include one or more of: ODelta coder, RLE coder, VLC coder, Huffman coder, Delta coder, Arithmetic coder.10. An entropy modifier (10) as claimed in any one of the preceding claims, characterized in that the entropy modifier (10) is operable to handle the stream of c input data bits (Dl) in a plurality of parts which are separately processed.11. An entropy modifier (10) as claimed in claim 10, characterized in that the entropy modifier (10) is operable to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.12. An entropy modifier (10,) as claimed in claim 10 or 11, characterized in that the entropy modifier (10) is operable to handle the plurality of parts by using maximum run lengths (MaxRun) which are mutually different for one or more of the parts.13. An entropy modifier (10) as claimed in any one of the preceding claims, characterized in that the entropy modifier (10) includes computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (Dl) to generate the output data (D2).14. An entropy modifier (60) which is operable to decode a stream of input data bits (D3 or D4) having a first entropy for generating corresponding entropy-modified output data (D5) having a second entropy, characterized in that: (a) the entropy modifier (10) is operable to process the input data (D3 or D4) by using a first bit thereof to function as a reference value for subsequent data included in the input data (D3 or D4); (b) the entropy modifier (10) is operable to process data present in the input data (D3 or D4) which is indicative of run lengths of mutually similar bits present in the input data bits (D3 or D4), wherein the run lengths of mutually similar bits are substantially limited in size so as not to exceed a maximum run length value (MaxRun); and (c) the entropy modifier (10) is operable to detect one or more occurrences of the run lengths in the input data (Dl) substantially exceeding the maximum run length value as denoted by at least one escape code included in the input data (D3 or D4).15. An entropy modifier (60) as claimed in claim 14, characterized in that the c entropy modifier (60) is operable to process one or more maximum run lengths (Y)20 (MaxRun) of the groups of mutually similar bits by using at least one escape code.16. An entropy modifier (60) as claimed in claim 14, characterized in that the one or more maximum run lengths (Max/Run) of the groups of mutually similar bits are processed by using a plurality of escape codes.17. An entropy modifier (60) as claimed in claim 14, 15 or 16, characterized in that one or more maximum run lengths (MaxRun) processed has a value greater than 1.18. An entropy modifier (10) as claimed in claims 14, 15, or 16, characterized in that the at least one escape code of same length as of the same maximum run length (MaxRun) can be used for the same run several times.19. An entropy modifier (60) as claimed in claim 14,15, 161, or 17, characterized in that the entropy modifier (60) is operable to handle the input stream of data (D3 or D4) using the maximum run length (MaxRun) in manner which is dynamically varied as a function of a nature of the stream of input data (D3 or D4).20. An entropy modifier (60) as claimed in any one of the preceding claims 14 to 19, characterized in that the entropy modifier (60) is operable to handle a value of a first bit in the stream of input data (D3 or D4) separately from a sequence of data bits.21. An entropy modifier (60) as claimed in any one of claims 14 to 19, characterized in that the entropy modifier (60) is operable to decode data elements present in the input data (D3 or D4) and apply an inverse entropy modification to generate the output data (D5) as a decoded bit stream.22. An entropy modifier (60) as claimed in any one of the preceding claims 14 to 21, characterized in that the entropy modifier (60) is operable to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.c 23. An entropy modifier (60) as claimed in claim 14 tp 22, characterized in that the (Y)20 at least one escape code is implemented as a 0" value within the entropy modifier (60).224. An entropy modifier (60) as claimed any one of the preceding claims 14 to 23, characterized in that the entropy modifier (60) is utilized for post-processing in conjunction with one or more coding arrangements for handling the stream of input data bits (D3), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.25. An entropy modifier (60) as claimed in any one of the preceding claims 14 to 24, characterized in that the entropy modifier (60) is operable to handle the stream of input data bits (D3 or D4) in a plurality of parts which are separately encoded or decoded.26. An entropy modifier (60) as claimed in claim 25, characterized in that the entropy modifier (60) is operable to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.27. An entropy modifier (60) as claimed in claim 25 or 26, characterized in that the entropy modifier (60) is operable to handle the plurality of parts by using maximum run lengths (Max/Run) which are mutually different for one or more of the parts.28. An entropy modifier (60) as claimed in any one of the preceding claims 14 to 27, characterized in that the entropy modifier (60) is implemented to function as a post-processor for entropy modifying the stream of input data (D3 or D4) after decoding to generate the entropy-modified output (D5).29. An entropy modifier (60) as claimed in any one of the preceding claims 14 to 28, characterized in that the entropy modifier (60) is operable to assist to transform symbols present in the input data (D3 or D4) to a bit string present in the output data (D5).c 30. An entropy modifier (60) as claimed in any one of the preceding claims 14 to (Y)20 29, characterized in that the entropy modifier (60) includes computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (D3 or D4) to generate the output data (D5).31. A method of using an entropy modifier (10) to encode a stream of input data bits (Dl) having a first entropy for generating corresponding entropy-modified output data (D2) having a second entropy, characterized in that the method includes: (a) operating the entropy modifier (10) to generate the output data (D2) to include a first bit which functions as a reference value for subsequent data included in the output data (D2); (b) including in the output data (D2) further data indicative of run lengths of mutually similar bits present in the input data bits (Dl), wherein the run lengths of mutually similar bits are substantially limited in size so as not to exceed a maximum run length value (Max/Run); and (c) one or more occurrences of the run lengths in the input data (Dl) substantially exceeding the maximum run length value is denoted by at least one escape code included in the output data (D2).32. A method as claimed in claim 31, characterized in that the method includes using the entropy modifier (10) to control one or more maximum run lengths (Max/Run) of the groups of mutually similar bits by using at least one escape code.33. A method as claimed in claim 31, characterized in that the method includes using a plurality of escape codes to control the one or more maximum run lengths (Max/Run) of the groups of mutually similar bits.34. A method as claimed in claim 31, 32 or 33, characterized in that the method includes using the entropy modifier (10) to control one or more maximum run lengths (MaxRun) processed with a value greater than 1.35. A method as claimed in claims 31, 32, 33, or 34, characterized in that the method includes using the entropy modifier (10) to control at least one escape code c of same length as of the same maximum run length (Max/Run), which escape code can be used for the same run several times.36. A method as claimed in claim any one of the claims 31 to 35, characterized in that the method includes using the entropy modifier (10) to handle the input stream of data (Dl) using the maximum run length (Max/Run) in manner which is dynamically varied as a function of a nature of the stream of input data (Dl).37. A method as claimed in any of the preceding claims 31 to 36, characterized in that the method includes using the entropy modifier (10) to handle a value of a first bit in the stream of input data (Dl) separately from a sequence of data bits.38. A method as claimed in claim 37, characterized in that the method includes using the entropy modifier (10) to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.39. A method as claimed in claim 31, characterized in that the at least one escape code is implemented as a 0" value within the entropy modifier (10).40. A method as claimed in any of the preceding claims 31 to 39, characterized in that the method includes using the entropy modifier (10) for post-processing in conjunction with one or more coding arrangements for handling the stream of input data bits (Dl), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.41. A method as claimed in any of the preceding claims 27 to 40, characterized in that the method includes using the entropy modifier (10) to handle the stream of input data bits (Dl) in a plurality of parts which are separately encoded or decoded.42. A method as claimed in claim 41, characterized in that the method includes using the entropy modifier (10) to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.C(Y)20 43. A method as claimed in claim 41 or 42, characterized in that the method includes using the entropy modifier (10) to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.44. A method as claimed in any of the preceding claims 31 to 43, characterized in that the method includes implementing the entropy modifier (10) to function as an encoder (10, 20) for compressing the stream of input data (Dl) to generate the entropy-modified output (D2, D3).45. A method as claimed in any of the preceding claims 31 to 44, characterized in that the method includes using the entropy modifier (10) to assist to transform a bit string present in the input data (Dl) to symbols present in the entropy modified output data (D2).45. A method as claimed in any of the preceding claims 31 to 44, characterized in that the method includes implementing the entropy modifier (10)to include computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (Dl) to generate the output data (D2).46. An method of using an entropy modifier (60) to decode a stream of input data bits (D3 or D4) having a first entropy for generating corresponding entropy-modified output data (D5) having a second entropy, characterized in that the method includes: (a) using the entropy modifier (10) to process the input data (D3 or D4) by using a first bit thereof to function as a reference value for subsequent data included in the input data (D3 or D4); (b) using the entropy modifier (10) to process data present in the input data (D3 or D4) which is indicative of run lengths of mutually similar bits present in the input data bits (03 or D4), wherein the run lengths of mutually similar bits are substantially limited in size so as not to exceed a maximum run length value C\J (MaxRun); and (c) the entropy modifier (10) is operable to detect one or more occurrences of the c run lengths in the input data (Dl) substantially exceeding the maximum run (Y)20 length value as denoted by at least one escape code included in the input data (D3 or 04).47. A method as claimed in claim 46, characterized in that the method includes using the entropy modifier (60) to process one or more maximum run lengths of the groups of mutually similar bits by using at least one escape code.48. A method as claimed in claim 46 or 4742, characterized in that the method includes processing the one or more maximum run lengths (MaxRun) of the groups of mutually similar bits by using a plurality of escape codes.49. A method as claimed in any one of preceding claims 46 to 48, characterized in that the method includes processing one or more maximum run lengths (MaxRun) processed with a value greater than 1.50. A method as claimed in any one of preceding claims 46 to 48, characterized in that the method includes processing at least one escape code of same length as of the same maximum run length (MaxRun), which escape code can be used for the same run several times.51. A method as claimed in any one of preceding claims 46 to 50, characterized in that the method includes using the entropy modifier (60) to handle the input stream of data (D3 or D4) using the maximum run length in manner which is dynamically varied as a function of a nature of the stream of input data (D3 or D4).52. A method as claimed in any one of preceding claims 46 to 51, characterized in that the method includes using the entropy modifier (60) to handle a value of a first bit in the stream of input data (D3 or D4) separately from a sequence of data bits.53. A method as claimed in any one of the preceding claims Slto 52, (v) characterized in that the method includes using the entropy modifier (60) to decode data elements present in the input data (D3 or D4) and apply an inverse entropy modification to generate the output data (D5) as a decoded bit stream.C(Y)20 54. A method as claimed in claim 52 or 53, characterized in that the method includes using the entropy modifier (60) to handle the value of the first bit as separately encoded relative to the sequence of data values that represent a continuous amount of similar bits.55. A method as claimed in claim 46, characterized in that the at least one escape code is implemented as a 0" value within the entropy modifier (60).56. A method as claimed in any one of preceding claims 46 to 55, characterized in that the method includes using the entropy modifier (60) in conjunction with one or more coding arrangements for handling the stream of input data bits (D3), wherein the one or more coding arrangements include one or more of: ODelta coder, RLE coding, VLC coding, Huffman coding, Delta coding, Arithmetic coding.57. A method as claimed in any one of preceding claims 46 to 56, characterized in that the method includes using he entropy modifier (60) to handle the stream of input data bits (D3 or D4) in a plurality of parts which are separately encoded or decoded.58. A method as claimed in claim 57, characterized in that the method includes using the entropy modifier (60) to handle the plurality of parts in a temporally parallel manner, namely by way of parallel execution.59. A method as claimed in claim 57 or 58, characterized in that the method includes using the entropy modifier (60) to handle the plurality of parts by using maximum run lengths which are mutually different for one or more of the parts.60. A method as claimed in any one of preceding claims 46 to 59, characterized in that the method includes using the entropy modifier (60) to function as a decoder for decompressing the stream of input data (D3 or D4) to generate the entropy-modified output (D5).
  61. 61. A method as claimed any one of preceding claims 46 to 60, characterized in c that the method includes using the entropy modifier (60) to assist to transform (Y)2o symbols present in the input data (D3 or D4) to a bit string present in the output data (D5).
  62. 62. A method as claimed any one of preceding claims 46 to 61, characterized in that the method includes implementing the entropy modifier (60) to computing hardware, wherein the computing hardware is operable to execute one or more software products recorded on machine-readable data storage media for processing the stream of input data (D3 or D4) to generate the output data (D5).
  63. 63. A software product recorded on machine-readable data storage media, characterized in that the software product is executable upon computing hardware for executing the method as claimed in claim 31.
  64. 64. A software product recorded on machine-readable data storage media, characterized in that the software product is executable upon computing hardware for executing the method as claimed in claim 46. (4 rC
GB1303658.7A 2013-03-01 2013-03-01 Entropy modifier and method Active GB2511493B (en)

Priority Applications (11)

Application Number Priority Date Filing Date Title
GB1303658.7A GB2511493B (en) 2013-03-01 2013-03-01 Entropy modifier and method
RU2015132038A RU2611249C1 (en) 2013-03-01 2014-03-01 Entropy modifier and method to use it
KR1020157024996A KR102068383B1 (en) 2013-03-01 2014-03-01 Entropy modifier and method
PCT/EP2014/000531 WO2014131528A1 (en) 2013-03-01 2014-03-01 Encoder apparatus, decoder apparatus and method
EP14715207.8A EP2962397A1 (en) 2013-03-01 2014-03-01 Encoder apparatus, decoder apparatus and method
JP2015559443A JP6073506B2 (en) 2013-03-01 2014-03-01 Entropy changer and method
CN201480024696.XA CN105409129B (en) 2013-03-01 2014-03-01 Encoder device, decoder device and method
PCT/EP2014/000529 WO2014131526A1 (en) 2013-03-01 2014-03-01 Entropy modifier and method
CN201480024777.XA CN105164923B (en) 2013-03-01 2014-03-01 Entropy Corrector and Method
EP14713379.7A EP2962396A1 (en) 2013-03-01 2014-03-01 Entropy modifier and method
US14/254,102 US8933826B2 (en) 2013-03-01 2014-04-16 Encoder apparatus, decoder apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1303658.7A GB2511493B (en) 2013-03-01 2013-03-01 Entropy modifier and method

Publications (3)

Publication Number Publication Date
GB201303658D0 GB201303658D0 (en) 2013-04-17
GB2511493A true GB2511493A (en) 2014-09-10
GB2511493B GB2511493B (en) 2017-04-05

Family

ID=48142235

Family Applications (1)

Application Number Title Priority Date Filing Date
GB1303658.7A Active GB2511493B (en) 2013-03-01 2013-03-01 Entropy modifier and method

Country Status (7)

Country Link
EP (2) EP2962396A1 (en)
JP (1) JP6073506B2 (en)
KR (1) KR102068383B1 (en)
CN (2) CN105164923B (en)
GB (1) GB2511493B (en)
RU (1) RU2611249C1 (en)
WO (2) WO2014131528A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9859920B2 (en) 2014-06-27 2018-01-02 Gurulogic Microsystems Oy Encoder and decoder
US10003356B2 (en) 2014-02-20 2018-06-19 Gurulogic Microsystems Oy Devices and methods of source-encoding and decoding of data

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190195742A1 (en) * 2017-12-22 2019-06-27 Schneider Electric Software, Llc Automated detection of anomalous industrial process operation
CN108737976B (en) * 2018-05-22 2021-05-04 南京大学 Compression transmission method based on Beidou short message
FR3105660B1 (en) * 2019-12-18 2022-10-14 Commissariat Energie Atomique Method and apparatus for additive signal coding for implementing dynamic precision digital MAC operations
CN119906835A (en) * 2023-10-27 2025-04-29 华为技术有限公司 Coding method, decoding method, device, equipment and storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2301252A (en) * 1995-05-23 1996-11-27 Ibm Run length data compression
US20020193668A1 (en) * 2001-04-30 2002-12-19 Dave Munneke Method and system for compressing and storing data in a medical device having limited storage

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5550777A (en) * 1979-05-21 1980-04-12 Toshiba Corp Information compression device
JPS5621483A (en) * 1979-07-31 1981-02-27 Fuji Photo Film Co Ltd Encoding system of picture signal
JP3010631B2 (en) * 1989-02-14 2000-02-21 ソニー株式会社 Run-length coding
JPH036924A (en) * 1989-06-05 1991-01-14 Hitachi Ltd terminal device
US5627534A (en) * 1995-03-23 1997-05-06 International Business Machines Corporation Dual stage compression of bit mapped image data using refined run length and LZ compression
JPH08294142A (en) * 1995-04-24 1996-11-05 Omron Corp Image information compression method and image display device using this method
US5710561A (en) * 1996-01-02 1998-01-20 Peerless Systems Corporation Method and apparatus for double run-length encoding of binary data
US6269338B1 (en) * 1996-10-10 2001-07-31 U.S. Philips Corporation Data compression and expansion of an audio signal
JP4260908B2 (en) * 1997-06-25 2009-04-30 株式会社日本デジタル研究所 Run-length encoding method and image processing apparatus
JP2001136524A (en) * 1999-11-02 2001-05-18 Ricoh Co Ltd Compression / expansion device
US6359548B1 (en) * 2000-10-16 2002-03-19 Unisys Corporation Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings
US6384751B1 (en) * 2000-12-22 2002-05-07 Unisys Corporation Data compression/decompression circuit and method
CN1636405A (en) * 2001-05-29 2005-07-06 皇家菲利浦电子有限公司 Method and device for video transcoding
EP1683360A1 (en) * 2003-10-31 2006-07-26 Koninklijke Philips Electronics N.V. Method of encoding video signals
US7205912B1 (en) * 2005-10-31 2007-04-17 Seagate Technology Llc Structured set partitioning and multilevel coding for partial response channels
RU2426227C2 (en) * 2006-11-14 2011-08-10 Квэлкомм Инкорпорейтед Encoding variable-length codes with efficient memory usage
KR101454167B1 (en) * 2007-09-07 2014-10-27 삼성전자주식회사 Device and method for compressing and decompressing data
EP2131501A1 (en) * 2008-06-06 2009-12-09 Harman Becker Automotive Systems GmbH Data compression and decompression method and data processing apparatus
US7804428B2 (en) * 2008-11-10 2010-09-28 Apple Inc. System and method for compressing a stream of integer-valued data
JP2010245938A (en) * 2009-04-08 2010-10-28 Sony Corp Signal processing apparatus, signal processing method, and program
CN102474270A (en) * 2009-08-06 2012-05-23 松下电器产业株式会社 Encoding method, decoding method, encoding device, and decoding device
US8410959B2 (en) * 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2301252A (en) * 1995-05-23 1996-11-27 Ibm Run length data compression
US20020193668A1 (en) * 2001-04-30 2002-12-19 Dave Munneke Method and system for compressing and storing data in a medical device having limited storage

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003356B2 (en) 2014-02-20 2018-06-19 Gurulogic Microsystems Oy Devices and methods of source-encoding and decoding of data
US9859920B2 (en) 2014-06-27 2018-01-02 Gurulogic Microsystems Oy Encoder and decoder

Also Published As

Publication number Publication date
EP2962397A1 (en) 2016-01-06
GB201303658D0 (en) 2013-04-17
CN105164923A (en) 2015-12-16
CN105164923B (en) 2018-10-23
JP2016514404A (en) 2016-05-19
JP6073506B2 (en) 2017-02-01
WO2014131528A1 (en) 2014-09-04
WO2014131526A1 (en) 2014-09-04
CN105409129A (en) 2016-03-16
KR102068383B1 (en) 2020-02-11
RU2611249C1 (en) 2017-02-21
CN105409129B (en) 2018-11-16
KR20150126858A (en) 2015-11-13
GB2511493B (en) 2017-04-05
EP2962396A1 (en) 2016-01-06

Similar Documents

Publication Publication Date Title
KR101737294B1 (en) Methods and devices for source-coding and decoding of data involving symbol compression
RU2417518C2 (en) Efficient coding and decoding conversion units
US8902090B2 (en) Compressing and decompressing signal data
US8810439B1 (en) Encoder, decoder and method
US8823560B1 (en) Data encoder, data decoder and method
JP2017507590A5 (en)
GB2511493A (en) Entropy modifier and method
US10003356B2 (en) Devices and methods of source-encoding and decoding of data
CN108886367A (en) Method, apparatus and system for compression and decompression data
US8682091B2 (en) Real-time image compression
US10116328B2 (en) Encoders, decoders and methods utilizing mode symbols
CN103746701B (en) A kind of fast coding option selection method for Rice lossless data compressions
US8754791B1 (en) Entropy modifier and method
CN101980464A (en) Data coding method, decoding method, coder and decoder
CN112449191A (en) Method for compressing a plurality of images, method and apparatus for decompressing an image
Krainyk Combined Run-Length and Huffman Encoding for Image Compression
KR20140145437A (en) Binary data compression and decompression method and apparatus
Das et al. Design an Algorithm for Data Compression using Pentaoctagesimal SNS
KR20210012842A (en) Binary data compression method thereof

Legal Events

Date Code Title Description
732E Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)

Free format text: REGISTERED BETWEEN 20251002 AND 20251008